|
@@ -25,6 +25,7 @@ import nc.hr.utils.SpecialDataUtil;
|
|
|
import nc.itf.uap.IUAPQueryBS;
|
|
|
import nc.jdbc.framework.processor.ArrayListProcessor;
|
|
|
import nc.jdbc.framework.processor.ColumnProcessor;
|
|
|
+import nc.log.NcLog;
|
|
|
import nc.pubitf.rbac.IFunctionPermissionPubService;
|
|
|
import nc.ui.pub.ButtonObject;
|
|
|
import nc.ui.pub.SeparatorButtonObject;
|
|
@@ -51,7 +52,11 @@ import nc.vo.pubapp.pattern.pub.MathTool;
|
|
|
import nc.vo.uap.rbac.profile.FunctionPermProfileManager;
|
|
|
import nc.vo.uap.rbac.profile.IFunctionPermProfile;
|
|
|
|
|
|
-
|
|
|
+/**
|
|
|
+ * 全员收入统计表
|
|
|
+ * @author Yaoyu
|
|
|
+ *
|
|
|
+ */
|
|
|
@SuppressWarnings("deprecation")
|
|
|
public class IncomeStatisticalUI extends ToftPanel {
|
|
|
|
|
@@ -106,27 +111,21 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
|
|
|
private UIRefPane getOrgPanel() {
|
|
|
if (this.ivjOrgPanel == null) {
|
|
|
+ //节点编码
|
|
|
+ String nodeCode = "60H10110";
|
|
|
this.ivjOrgPanel = new UIRefPane();
|
|
|
this.ivjOrgPanel.setName("pkorg");
|
|
|
this.ivjOrgPanel.setRefNodeName("财务组织");
|
|
|
- IFunctionPermProfile profile = FunctionPermProfileManager.getInstance().getProfile(WorkbenchEnvironment.getInstance().getLoginUser().getUser_code());
|
|
|
- if (profile != null) {
|
|
|
- this.ivjOrgPanel.getRefModel().setFilterPks(profile.getPermPkorgs());
|
|
|
- }
|
|
|
-
|
|
|
+ //权限组织
|
|
|
+ String[] pkorgs = FunctionPermProfileManager.getInstance().getProfile(WorkbenchEnvironment.getInstance().getLoginUser().getUser_code()).getFuncSubInfo(nodeCode).getFuncPermissionPkorgs();
|
|
|
+ this.ivjOrgPanel.getRefModel().setFilterPks(pkorgs);
|
|
|
|
|
|
this.ivjOrgPanel.setBounds(new Rectangle(100, 20));
|
|
|
this.ivjOrgPanel.setPreferredSize(new Dimension(170, 20));
|
|
|
- this.ivjOrgPanel.setMultiSelectedEnabled(true);
|
|
|
- this.ivjOrgPanel.addValueChangedListener(new ValueChangedListener() {
|
|
|
-
|
|
|
+ //this.ivjOrgPanel.setMultiSelectedEnabled(true);
|
|
|
+ this.ivjOrgPanel.addValueChangedListener(new ValueChangedListener() {
|
|
|
public void valueChanged(ValueChangedEvent e) {
|
|
|
- String[] newValue = (String[]) e.getNewValue();
|
|
|
IncomeStatisticalUI.this.initialize();
|
|
|
- if (ivjcostcpanel != null) {
|
|
|
- ((CostCenterTreeRefModel) ivjcostcpanel.getRefModel()).setCurrentOrgCreated(true);
|
|
|
- ((CostCenterTreeRefModel) ivjcostcpanel.getRefModel()).setPk_org(newValue[0]);
|
|
|
- }
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -381,7 +380,7 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
String userCode = InvocationInfoProxy.getInstance().getUserCode();
|
|
|
String pk_defdoc = queryDftDocUser(userCode);
|
|
|
|
|
|
- codeTypein.append("bd_defdoc.code in (");
|
|
|
+ codeTypein.append("defname in (");
|
|
|
for (int i = 0;i < codeType.length; i++) {
|
|
|
//激励类型存在如C1编码,截取第一位用于后续判断
|
|
|
String type = codeType[i].substring(0,1);
|
|
@@ -389,7 +388,8 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
if(pk_defdoc != null && ("A".equals(type) || "B".equals(type) || "C".equals(type) || "F".equals(type))) {
|
|
|
//清空拼接的sql信息,重新拼接
|
|
|
codeTypein.setLength(0);
|
|
|
- codeTypein.append("(bd_defdoc.code like 'A%' or bd_defdoc.code like 'B%' or bd_defdoc.code like 'C%' or bd_defdoc.code like 'F%',");
|
|
|
+ //codeTypein.append("(bd_defdoc.code like 'A%' or bd_defdoc.code like 'B%' or bd_defdoc.code like 'C%' or bd_defdoc.code like 'F%',");
|
|
|
+ codeTypein.append("(defname like 'A%' or defname like 'B%' or defname like 'C%' or defname like 'F%',");
|
|
|
break;
|
|
|
}
|
|
|
codeTypein.append("'"+codeType[i]+"',");
|
|
@@ -652,38 +652,38 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
if(startDate.compareTo(endDate) == 1) {
|
|
|
ExceptionUtils.wrappBusinessException("开始期间不能大于结束期间!");
|
|
|
}
|
|
|
- // 创建起始日期的 Calendar 实例
|
|
|
- Calendar startCal = Calendar.getInstance();
|
|
|
- startCal.setTime(startDate);
|
|
|
-
|
|
|
+ // 创建起始日期的 Calendar 实例
|
|
|
+ Calendar startCal = Calendar.getInstance();
|
|
|
+ startCal.setTime(startDate);
|
|
|
+
|
|
|
// 创建用于迭代的 Calendar 实例,从起始日期开始
|
|
|
- Calendar currentCal = Calendar.getInstance();
|
|
|
- currentCal.setTime(startDate);
|
|
|
+ Calendar currentCal = Calendar.getInstance();
|
|
|
+ currentCal.setTime(startDate);
|
|
|
|
|
|
- // 用于构建 SQL IN 子句的 StringBuffer
|
|
|
+ // 用于构建 SQL IN 子句的 StringBuffer
|
|
|
StringBuffer wa_periodin = new StringBuffer();
|
|
|
StringBuffer query_year_monthin = new StringBuffer();
|
|
|
StringBuffer allin = new StringBuffer();
|
|
|
allin.append(" in (");
|
|
|
wa_periodin.append(" in (");
|
|
|
query_year_monthin.append(" in (");
|
|
|
- // 循环直到当前日期超过结束日期
|
|
|
- while (currentCal.getTime().before(endDate) || currentCal.getTime().equals(endDate)) {
|
|
|
- // 获取年份和月份(月份需要 +1,因为 Calendar 月份是从 0 开始的)
|
|
|
- int year = currentCal.get(Calendar.YEAR);
|
|
|
- int month = currentCal.get(Calendar.MONTH) + 1;
|
|
|
+ // 循环直到当前日期超过结束日期
|
|
|
+ while (currentCal.getTime().before(endDate) || currentCal.getTime().equals(endDate)) {
|
|
|
+ // 获取年份和月份(月份需要 +1,因为 Calendar 月份是从 0 开始的)
|
|
|
+ int year = currentCal.get(Calendar.YEAR);
|
|
|
+ int month = currentCal.get(Calendar.MONTH) + 1;
|
|
|
|
|
|
- // 格式化年份和月份为字符串(YYYYMM)
|
|
|
+ // 格式化年份和月份为字符串(YYYYMM)
|
|
|
String yearMonthStr = String.format("%04d%02d", year, month);
|
|
|
//2023年情况特殊,上半年和下半年的奖金在不同的表
|
|
|
if(year == 2023) {
|
|
|
if(month <= 6) {
|
|
|
- query_year_monthin.append("'" + yearMonthStr + "',");
|
|
|
+ query_year_monthin.append("'" + yearMonthStr + "',");
|
|
|
}else {
|
|
|
- wa_periodin.append("'" + yearMonthStr + "',");
|
|
|
+ wa_periodin.append("'" + yearMonthStr + "',");
|
|
|
}
|
|
|
}else {
|
|
|
- query_year_monthin.append("'" + yearMonthStr + "',");
|
|
|
+ query_year_monthin.append("'" + yearMonthStr + "',");
|
|
|
wa_periodin.append("'" + yearMonthStr + "',");
|
|
|
}
|
|
|
|
|
@@ -730,7 +730,18 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" hrorgname,");
|
|
|
sql.append(" deptname,");
|
|
|
sql.append(" postname,");
|
|
|
- sql.append(" defname,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" WHEN EXISTS(");
|
|
|
+ sql.append(" SELECT DISTINCT bd_defdoc1.name");
|
|
|
+ sql.append(" FROM");
|
|
|
+ sql.append(" hi_psnjob hi_psnjob1");
|
|
|
+ sql.append(" LEFT JOIN org_adminorg org_adminorg1 ON hi_psnjob1.pk_org = org_adminorg1.pk_adminorg");
|
|
|
+ sql.append(" LEFT JOIN om_post om_post1 ON hi_psnjob1.jobglbdef30 = om_post1.pk_post");
|
|
|
+ sql.append(" LEFT JOIN bd_defdoc bd_defdoc1 ON om_post1.glbdef1 = bd_defdoc1.pk_defdoc");
|
|
|
+ sql.append(" WHERE");
|
|
|
+ sql.append(" hi_psnjob1.dr = 0 AND org_adminorg1.name = hrorgname AND hi_psnjob1.clerkcode = psncode");
|
|
|
+ sql.append(" AND hi_psnjob1.ismainjob = 'N' AND bd_defdoc1.name = 'A' AND hi_psnjob1.endflag = 'N'");
|
|
|
+ sql.append(" ) THEN 'A' ELSE defname END AS defname,");
|
|
|
sql.append(" ismainjob,");
|
|
|
sql.append(" begindate,");
|
|
|
sql.append(" enddate,");
|
|
@@ -741,7 +752,6 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" sum( designbonus ) AS designbonus,");
|
|
|
sql.append(" sum( marketbonus ) AS marketbonus,");
|
|
|
sql.append(" sum( awardsbonus ) AS awardsbonus,");
|
|
|
- //sql.append(" sum( managementbonus ) AS managementbonus,");
|
|
|
sql.append(" COALESCE( sum( managementbonus ), 0 ) - COALESCE( sum( yfdk ), 0 ) AS managementbonus,");
|
|
|
sql.append(" sum( servicebonus ) AS servicebonus,");
|
|
|
sql.append(" sum( guaranteebonus1 ) AS guaranteebonus1,");
|
|
@@ -754,75 +764,57 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" sum( share_bonus ) AS share_bonus");
|
|
|
sql.append(" FROM(");
|
|
|
sql.append(" SELECT");
|
|
|
- sql.append(" CASE ");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" COALESCE( laborcost_table.count, 0 ) + COALESCE( PRIM2023_table.count, 0 )");
|
|
|
- sql.append(" END AS ffyf,");
|
|
|
+ sql.append(" NULL AS ffyf,");
|
|
|
sql.append(" hi_psnjob.clerkcode AS psncode,");
|
|
|
sql.append(" bd_psndoc.name AS psnname,");
|
|
|
sql.append(" org_hrorg.name AS hrorgname,");
|
|
|
sql.append(" org_dept.name AS deptname,");
|
|
|
sql.append(" om_posts.postname AS postname,");
|
|
|
sql.append(" bd_defdoc.name AS defname,");
|
|
|
- sql.append(" CASE");
|
|
|
+ sql.append(" CASE");
|
|
|
sql.append(" hi_psnjob.ismainjob");
|
|
|
sql.append(" WHEN 'Y' THEN");
|
|
|
sql.append(" '主职' ELSE '兼职'");
|
|
|
- sql.append(" END AS ismainjob,");
|
|
|
+ sql.append(" END AS ismainjob,");
|
|
|
sql.append(" hi_psnjob.begindate AS begindate,");
|
|
|
sql.append(" hi_psnjob.enddate AS enddate,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" COALESCE(laborcost_table.bmcd, 0) + COALESCE(PRIM2023_table.bmcd, 0)");
|
|
|
- sql.append(" END AS bmcd,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" COALESCE(laborcost_table.sjyfdk, 0) + COALESCE(PRIM2023_table.sjyfdk, 0) + COALESCE(laborcost_table.glyfdk, 0)+ COALESCE( PRIM2023_table.glyfdk, 0 )");
|
|
|
- sql.append(" END AS yfdk,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" COALESCE(laborcost_table.gsbt, 0) + COALESCE(PRIM2023_table.gsbt, 0)");
|
|
|
- sql.append(" END AS gsbt,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" COALESCE(laborcost_table.zzbt, 0) + COALESCE(PRIM2023_table.zzbt, 0)");
|
|
|
- sql.append(" END AS zzbt,");
|
|
|
- sql.append(" NULL AS designbonus,");
|
|
|
- sql.append(" NULL AS marketbonus,");
|
|
|
- sql.append(" NULL AS awardsbonus,");
|
|
|
- sql.append(" NULL AS managementbonus,");
|
|
|
- sql.append(" NULL AS servicebonus,");
|
|
|
- sql.append(" NULL AS guaranteebonus1,");
|
|
|
- sql.append(" NULL AS guaranteebonus2,");
|
|
|
- sql.append(" NULL AS specialbonus,");
|
|
|
- sql.append(" NULL AS allowancebonus,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" bonus_table.function_bonus");
|
|
|
- sql.append(" END AS function_bonus,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" bonus_table.manage_jsbonus");
|
|
|
- sql.append(" END AS manage_jsbonus,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" bonus_table.manage_bdamount");
|
|
|
- sql.append(" END AS manage_bdamount,");
|
|
|
- sql.append(" CASE");
|
|
|
- sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
- sql.append(" bonus_table.share_bonus");
|
|
|
- sql.append(" END AS share_bonus");
|
|
|
+ sql.append(" NULL AS bmcd,");
|
|
|
+ sql.append(" NULL AS yfdk,");
|
|
|
+ sql.append(" NULL AS gsbt,");
|
|
|
+ sql.append(" NULL AS zzbt,");
|
|
|
+ sql.append(" NULL AS designbonus,");
|
|
|
+ sql.append(" NULL AS marketbonus,");
|
|
|
+ sql.append(" NULL AS awardsbonus,");
|
|
|
+ sql.append(" NULL AS managementbonus,");
|
|
|
+ sql.append(" NULL AS servicebonus,");
|
|
|
+ sql.append(" NULL AS guaranteebonus1,");
|
|
|
+ sql.append(" NULL AS guaranteebonus2,");
|
|
|
+ sql.append(" NULL AS specialbonus,");
|
|
|
+ sql.append(" NULL AS allowancebonus,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
+ sql.append(" bonus_table.function_bonus");
|
|
|
+ sql.append(" END AS function_bonus,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
+ sql.append(" bonus_table.manage_jsbonus");
|
|
|
+ sql.append(" END AS manage_jsbonus,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
+ sql.append(" bonus_table.manage_bdamount");
|
|
|
+ sql.append(" END AS manage_bdamount,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" WHEN ROW_NUMBER ( ) OVER ( PARTITION BY bd_psndoc.name, org_hrorg.name, org_dept.name, om_post.postname ORDER BY hi_psnjob.begindate DESC ) = 1 THEN");
|
|
|
+ sql.append(" bonus_table.share_bonus");
|
|
|
+ sql.append(" END AS share_bonus");
|
|
|
sql.append(" FROM");
|
|
|
- sql.append(" bd_psndoc bd_psndoc");
|
|
|
+ sql.append(" bd_psndoc bd_psndoc");
|
|
|
sql.append(" LEFT JOIN hi_psnjob hi_psnjob ON bd_psndoc.pk_psndoc = hi_psnjob.pk_psndoc");
|
|
|
sql.append(" LEFT JOIN org_adminorg org_hrorg ON hi_psnjob.pk_org = org_hrorg.pk_adminorg");
|
|
|
sql.append(" LEFT JOIN org_dept org_dept ON hi_psnjob.pk_dept = org_dept.pk_dept");
|
|
|
sql.append(" LEFT JOIN om_post om_post ON hi_psnjob.pk_post = om_post.pk_post");
|
|
|
sql.append(" LEFT JOIN om_post om_posts ON hi_psnjob.jobglbdef30 = om_posts.pk_post");
|
|
|
sql.append(" LEFT JOIN bd_defdoc bd_defdoc ON om_posts.glbdef1 = bd_defdoc.pk_defdoc");
|
|
|
- //sql.append(" LEFT JOIN ( SELECT clerkcode, MAX( begindate ) AS max_begindate FROM hi_psnjob where ismainjob = 'Y'");
|
|
|
- //sql.append(" AND (( SUBSTR( hi_psnjob.begindate, 1, 7 ) <= '"+endPeriod+"' AND SUBSTR( hi_psnjob.enddate, 1, 7 ) >= '"+startPeriod+"' )OR ( enddate IS NULL ) ) ");
|
|
|
- //sql.append(" GROUP BY clerkcode ) max_begindate_table ON hi_psnjob.clerkcode = max_begindate_table.clerkcode");
|
|
|
sql.append(" LEFT JOIN (");
|
|
|
sql.append(" SELECT");
|
|
|
sql.append(" vdef1,");
|
|
@@ -841,46 +833,6 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" AND COALESCE(org_hrorg.name,'N') = COALESCE(bonus_table.cost_corp,'N')");
|
|
|
sql.append(" AND COALESCE(org_dept.name,'N') = COALESCE(bonus_table.cost_dept,'N')");
|
|
|
sql.append(" AND COALESCE(om_post.postname,'N') = COALESCE(bonus_table.postname,'N')");
|
|
|
- sql.append(" LEFT JOIN (");
|
|
|
- sql.append(" SELECT");
|
|
|
- sql.append(" workercode,cost_org,cost_dept,post,");
|
|
|
- sql.append(" SUM( CASE WHEN outlaytype = '部门承担人力成本' THEN decimalmny END ) AS bmcd,");
|
|
|
- sql.append(" SUM( CASE WHEN outlaytype = '设计预发待扣' THEN decimalmny END ) AS sjyfdk,");
|
|
|
- sql.append(" SUM( CASE WHEN outlaytype = '管理预发待扣' THEN decimalmny END ) AS glyfdk,");
|
|
|
- sql.append(" SUM( CASE WHEN outlaytype = '公司管理费用' AND wa_type <> '资质补贴' THEN decimalmny END ) AS gsbt,");
|
|
|
- sql.append(" SUM( CASE WHEN wa_type = '资质补贴' THEN decimalmny END ) AS zzbt,");
|
|
|
- sql.append(" SUM( CASE WHEN outlaytype in('部门承担人力成本','设计预发待扣','管理预发待扣','公司管理费用','其他公司管理费用','经济补偿金部门','经济补偿金公司') THEN decimalmny END) AS GDBF,");
|
|
|
- sql.append(" COUNT(DISTINCT wa_period) AS count");
|
|
|
- sql.append(" FROM");
|
|
|
- sql.append(" hr_laborcost");
|
|
|
- sql.append(" WHERE");
|
|
|
- sql.append(" dr = 0 AND wa_period "+ map.get("wa_periodin"));
|
|
|
- sql.append(" GROUP BY");
|
|
|
- sql.append(" workercode,cost_org,cost_dept,post");
|
|
|
- sql.append(" ) laborcost_table ON hi_psnjob.clerkcode = laborcost_table.workercode");
|
|
|
- sql.append(" AND COALESCE( org_hrorg.pk_adminorg, 'N' ) = COALESCE( laborcost_table.cost_org, 'N' )");
|
|
|
- sql.append(" AND COALESCE( org_dept.pk_dept, 'N' ) = COALESCE( laborcost_table.cost_dept, 'N' )");
|
|
|
- sql.append(" AND COALESCE( om_post.pk_post, 'N' ) = COALESCE( laborcost_table.post, 'N' )");
|
|
|
- sql.append(" LEFT JOIN (");
|
|
|
- sql.append(" SELECT");
|
|
|
- sql.append(" clerk_code,company,deptcode,position,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category = '部门承担人力成本' THEN amount END ) AS bmcd,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category = '设计预发待扣' THEN amount END ) AS sjyfdk,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category = '管理预发待扣' THEN amount END ) AS glyfdk,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category = '公司管理费用' THEN amount END ) AS gsbt,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category = '资质补贴' THEN amount END ) AS zzbt,");
|
|
|
- sql.append(" SUM( CASE WHEN cost_category in('部门承担人力成本','设计预发待扣','管理预发待扣','公司管理费用','其他公司管理费用','经济补偿金部门','经济补偿金公司') THEN amount END) AS GDBF,");
|
|
|
- sql.append(" COUNT(DISTINCT query_year_month) AS count");
|
|
|
- sql.append(" FROM");
|
|
|
- sql.append(" EMPLOYEE_SALARY_PRIM2023");
|
|
|
- sql.append(" WHERE");
|
|
|
- sql.append(" TO_CHAR(query_year_month, 'YYYYMM') "+ map.get("query_year_monthin"));
|
|
|
- sql.append(" GROUP BY");
|
|
|
- sql.append(" clerk_code,company,deptcode,position");
|
|
|
- sql.append(" ) PRIM2023_table ON hi_psnjob.clerkcode = PRIM2023_table.clerk_code");
|
|
|
- sql.append(" AND COALESCE( org_hrorg.name, 'N' ) = COALESCE( PRIM2023_table.company, 'N' )");
|
|
|
- sql.append(" AND COALESCE( org_dept.code, 'N' ) = COALESCE( PRIM2023_table.deptcode, 'N' )");
|
|
|
- sql.append(" AND COALESCE( om_post.postname, 'N' ) = COALESCE( PRIM2023_table.position, 'N' )");
|
|
|
sql.append(" WHERE");
|
|
|
sql.append(" bd_psndoc.dr = 0 AND hi_psnjob.dr = 0");
|
|
|
sql.append(" AND om_posts.postname <> '发薪人员'");
|
|
@@ -889,18 +841,179 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" AND hi_psnjob.clerkcode = '"+psncode+"'");
|
|
|
}
|
|
|
if(psnname != null && !"".equals(psnname)) {
|
|
|
- sql.append(" AND bd_psndoc.name = '"+psnname+"'");
|
|
|
- }
|
|
|
- if(codeTypein != null && !"".equals(codeTypein)) {
|
|
|
- sql.append(" AND " + codeTypein);
|
|
|
+ sql.append(" AND bd_psndoc.name like '%"+psnname+"%'");
|
|
|
}
|
|
|
sql.append(" AND (( SUBSTR( hi_psnjob.begindate, 1, 7 ) <= '"+endPeriod+"' AND SUBSTR( hi_psnjob.enddate, 1, 7 ) >= '"+startPeriod+"' )OR ( enddate IS NULL ) ) ");
|
|
|
- sql.append(" UNION ALL");
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ //拼接2023年上半年部分sql
|
|
|
|
|
|
+ sql.append(" UNION ALL");
|
|
|
+ sql.append(" SELECT * FROM(");
|
|
|
+ sql.append(" SELECT");
|
|
|
+ sql.append(" COUNT( DISTINCT es2023.query_year_month ) AS ffyf,");
|
|
|
+ sql.append(" es2023.clerk_code AS psncode,");
|
|
|
+ sql.append(" es2023.employee_name AS psnname,");
|
|
|
+ sql.append(" es2023.company AS hrorgname,");
|
|
|
+ sql.append(" org_dept.name AS deptname,");
|
|
|
+ sql.append(" om_posts.postname AS postname,");
|
|
|
+ sql.append(" bd_defdoc.name AS defname,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" hi_psnjobs.ismainjob");
|
|
|
+ sql.append(" WHEN 'Y' THEN");
|
|
|
+ sql.append(" '主职' ELSE '兼职'");
|
|
|
+ sql.append(" END AS ismainjob,");
|
|
|
+ sql.append(" hi_psnjobs.begindate AS begindate,");
|
|
|
+ sql.append(" hi_psnjobs.enddate AS enddate,");
|
|
|
+ sql.append(" SUM( CASE WHEN es2023.cost_category = '部门承担人力成本' THEN es2023.amount END ) AS bmcd,");
|
|
|
+ sql.append(" SUM( CASE WHEN es2023.cost_category = '设计预发待扣' THEN es2023.amount END ) + SUM( CASE WHEN es2023.cost_category = '管理预发待扣' THEN es2023.amount END ) AS yfdk,");
|
|
|
+ sql.append(" SUM( CASE WHEN es2023.cost_category = '公司管理费用' THEN es2023.amount END ) AS gsbt,");
|
|
|
+ sql.append(" SUM( CASE WHEN es2023.cost_category = '资质补贴' THEN es2023.amount END ) AS zzbt,");
|
|
|
+ sql.append(" NULL AS designbonus,");
|
|
|
+ sql.append(" NULL AS marketbonus,");
|
|
|
+ sql.append(" NULL AS awardsbonus,");
|
|
|
+ sql.append(" NULL AS managementbonus,");
|
|
|
+ sql.append(" NULL AS servicebonus,");
|
|
|
+ sql.append(" NULL AS guaranteebonus1,");
|
|
|
+ sql.append(" NULL AS guaranteebonus2,");
|
|
|
+ sql.append(" NULL AS specialbonus,");
|
|
|
+ sql.append(" NULL AS allowancebonus,");
|
|
|
+ sql.append(" NULL AS function_bonus,");
|
|
|
+ sql.append(" NULL AS manage_jsbonus,");
|
|
|
+ sql.append(" NULL AS manage_bdamount,");
|
|
|
+ sql.append(" NULL AS share_bonus ");
|
|
|
+ sql.append(" FROM");
|
|
|
+ sql.append(" EMPLOYEE_SALARY_PRIM2023 es2023");
|
|
|
+ sql.append(" LEFT JOIN org_adminorg org_hrorg ON es2023.company = org_hrorg.name");
|
|
|
+ sql.append(" LEFT JOIN org_dept org_dept ON es2023.deptcode = org_dept.code");
|
|
|
+ sql.append(" LEFT JOIN (");
|
|
|
+ sql.append(" SELECT");
|
|
|
+ sql.append(" hi_psnjob.clerkcode AS clerkcode,");
|
|
|
+ sql.append(" hi_psnjob.pk_org AS pk_org,");
|
|
|
+ sql.append(" hi_psnjob.pk_dept AS pk_dept,");
|
|
|
+ sql.append(" hi_psnjob.pk_post AS pk_post,");
|
|
|
+ sql.append(" om_post.postname AS postname,");
|
|
|
+ sql.append(" hi_psnjob.jobglbdef30 AS jobglbdef30,");
|
|
|
+ sql.append(" hi_psnjob.begindate AS begindate,");
|
|
|
+ sql.append(" hi_psnjob.enddate AS enddate,");
|
|
|
+ sql.append(" hi_psnjob.ismainjob AS ismainjob,");
|
|
|
+ sql.append(" ROW_NUMBER ( ) OVER (PARTITION BY hi_psnjob.clerkcode,hi_psnjob.pk_org,hi_psnjob.pk_dept,hi_psnjob.pk_post,");
|
|
|
+ sql.append(" hi_psnjob.jobglbdef30");
|
|
|
+ sql.append(" ORDER BY hi_psnjob.begindate DESC ) AS rn");
|
|
|
+ sql.append(" FROM");
|
|
|
+ sql.append(" hi_psnjob hi_psnjob");
|
|
|
+ sql.append(" LEFT JOIN om_post om_post ON hi_psnjob.pk_post = om_post.pk_post");
|
|
|
+ sql.append(" ) hi_psnjobs ON es2023.clerk_code = hi_psnjobs.clerkcode ");
|
|
|
+ sql.append(" AND COALESCE( org_hrorg.pk_adminorg, 'N' ) = COALESCE( hi_psnjobs.pk_org, 'N' )");
|
|
|
+ sql.append(" AND COALESCE( org_dept.pk_dept, 'N' ) = COALESCE( hi_psnjobs.pk_dept, 'N' )");
|
|
|
+ sql.append(" AND COALESCE( es2023.position, 'N' ) = COALESCE( hi_psnjobs.postname, 'N' )");
|
|
|
+ sql.append(" AND hi_psnjobs.rn = 1");
|
|
|
+ sql.append(" LEFT JOIN om_post om_posts ON hi_psnjobs.jobglbdef30 = om_posts.pk_post");
|
|
|
+ sql.append(" LEFT JOIN bd_defdoc bd_defdoc ON om_posts.glbdef1 = bd_defdoc.pk_defdoc");
|
|
|
+ sql.append(" WHERE");
|
|
|
+ sql.append(" TO_CHAR(query_year_month, 'YYYYMM') "+ map.get("query_year_monthin"));
|
|
|
+ sql.append(" AND om_posts.postname <> '发薪人员'");
|
|
|
+ sql.append(" AND org_hrorg.code " + codein);
|
|
|
+ if(psncode != null && !"".equals(psncode)) {
|
|
|
+ sql.append(" AND es2023.clerk_code = '"+psncode+"'");
|
|
|
+ }
|
|
|
+ if(psnname != null && !"".equals(psnname)) {
|
|
|
+ sql.append(" AND es2023.employee_name like '%"+psnname+"%'");
|
|
|
+ }
|
|
|
+ sql.append(" GROUP BY");
|
|
|
+ sql.append(" es2023.clerk_code,");
|
|
|
+ sql.append(" es2023.employee_name,");
|
|
|
+ sql.append(" es2023.company,");
|
|
|
+ sql.append(" org_dept.name,");
|
|
|
+ sql.append(" om_posts.postname,");
|
|
|
+ sql.append(" bd_defdoc.name,");
|
|
|
+ sql.append(" hi_psnjobs.ismainjob,");
|
|
|
+ sql.append(" hi_psnjobs.begindate,");
|
|
|
+ sql.append(" hi_psnjobs.enddate)");
|
|
|
+ sql.append(" WHERE (bmcd <> 0 OR yfdk<> 0 OR gsbt<> 0 OR zzbt<> 0) ");
|
|
|
+ //拼接收入部分sql
|
|
|
+ sql.append(" UNION ALL");
|
|
|
+ sql.append(" SELECT * FROM(");
|
|
|
+ sql.append(" SELECT");
|
|
|
+ sql.append(" COUNT( DISTINCT hr_laborcost.wa_period ) AS ffyf,");
|
|
|
+ sql.append(" hr_laborcost.workercode AS psncode,");
|
|
|
+ sql.append(" hr_laborcost.name AS psnname,");
|
|
|
+ sql.append(" org_hrorg.name AS hrorgname,");
|
|
|
+ sql.append(" org_dept.name AS deptname,");
|
|
|
+ sql.append(" om_posts.postname AS postname,");
|
|
|
+ sql.append(" bd_defdoc.name AS defname,");
|
|
|
+ sql.append(" CASE");
|
|
|
+ sql.append(" hi_psnjobs.ismainjob");
|
|
|
+ sql.append(" WHEN 'Y' THEN");
|
|
|
+ sql.append(" '主职' ELSE '兼职'");
|
|
|
+ sql.append(" END AS ismainjob,");
|
|
|
+ sql.append(" hi_psnjobs.begindate AS begindate,");
|
|
|
+ sql.append(" hi_psnjobs.enddate AS enddate,");
|
|
|
+ sql.append(" SUM( CASE WHEN hr_laborcost.outlaytype = '部门承担人力成本' THEN hr_laborcost.decimalmny END ) AS bmcd,");
|
|
|
+ sql.append(" SUM( CASE WHEN hr_laborcost.outlaytype = '设计预发待扣' THEN hr_laborcost.decimalmny END ) + ");
|
|
|
+ sql.append(" SUM( CASE WHEN hr_laborcost.outlaytype = '管理预发待扣' THEN hr_laborcost.decimalmny END ) AS yfdk,");
|
|
|
+ sql.append(" SUM( CASE WHEN hr_laborcost.outlaytype = '公司管理费用' AND hr_laborcost.wa_type <> '资质补贴' THEN hr_laborcost.decimalmny END ) AS gsbt,");
|
|
|
+ sql.append(" SUM( CASE WHEN hr_laborcost.wa_type = '资质补贴' THEN hr_laborcost.decimalmny END ) AS zzbt,");
|
|
|
+ sql.append(" NULL AS designbonus,");
|
|
|
+ sql.append(" NULL AS marketbonus,");
|
|
|
+ sql.append(" NULL AS awardsbonus,");
|
|
|
+ sql.append(" NULL AS managementbonus,");
|
|
|
+ sql.append(" NULL AS servicebonus,");
|
|
|
+ sql.append(" NULL AS guaranteebonus1,");
|
|
|
+ sql.append(" NULL AS guaranteebonus2,");
|
|
|
+ sql.append(" NULL AS specialbonus,");
|
|
|
+ sql.append(" NULL AS allowancebonus,");
|
|
|
+ sql.append(" NULL AS function_bonus,");
|
|
|
+ sql.append(" NULL AS manage_jsbonus,");
|
|
|
+ sql.append(" NULL AS manage_bdamount,");
|
|
|
+ sql.append(" NULL AS share_bonus");
|
|
|
+ sql.append(" FROM");
|
|
|
+ sql.append(" hr_laborcost hr_laborcost");
|
|
|
+ sql.append(" LEFT JOIN org_adminorg org_hrorg ON hr_laborcost.cost_org = org_hrorg.pk_adminorg");
|
|
|
+ sql.append(" LEFT JOIN org_dept org_dept ON hr_laborcost.cost_dept = org_dept.pk_dept");
|
|
|
+ sql.append(" LEFT JOIN om_post om_post ON hr_laborcost.post = om_post.pk_post");
|
|
|
+ sql.append(" LEFT JOIN (");
|
|
|
+ sql.append(" SELECT");
|
|
|
+ sql.append(" clerkcode,");
|
|
|
+ sql.append(" pk_org,");
|
|
|
+ sql.append(" pk_dept,");
|
|
|
+ sql.append(" pk_post,");
|
|
|
+ sql.append(" jobglbdef30,");
|
|
|
+ sql.append(" begindate,");
|
|
|
+ sql.append(" enddate,");
|
|
|
+ sql.append(" ismainjob,");
|
|
|
+ sql.append(" ROW_NUMBER ( ) OVER ( PARTITION BY clerkcode, pk_org, pk_dept, pk_post, jobglbdef30 ORDER BY begindate DESC ) AS rn");
|
|
|
+ sql.append(" FROM");
|
|
|
+ sql.append(" hi_psnjob");
|
|
|
+ sql.append(" ) hi_psnjobs ON hr_laborcost.workercode = hi_psnjobs.clerkcode ");
|
|
|
+ sql.append(" AND COALESCE( hr_laborcost.cost_org, 'N' ) = COALESCE( hi_psnjobs.pk_org, 'N' ) ");
|
|
|
+ sql.append(" AND COALESCE( hr_laborcost.cost_dept, 'N' ) = COALESCE( hi_psnjobs.pk_dept, 'N' ) ");
|
|
|
+ sql.append(" AND COALESCE( hr_laborcost.post, 'N' ) = COALESCE( hi_psnjobs.pk_post, 'N' )");
|
|
|
+ sql.append(" AND hi_psnjobs.rn = 1");
|
|
|
+ sql.append(" LEFT JOIN om_post om_posts ON hi_psnjobs.jobglbdef30 = om_posts.pk_post");
|
|
|
+ sql.append(" LEFT JOIN bd_defdoc bd_defdoc ON om_posts.glbdef1 = bd_defdoc.pk_defdoc");
|
|
|
+ sql.append(" WHERE");
|
|
|
+ sql.append(" hr_laborcost.dr = 0");
|
|
|
+ sql.append(" AND wa_period "+ map.get("wa_periodin"));
|
|
|
+ sql.append(" AND om_posts.postname <> '发薪人员' ");
|
|
|
+ sql.append(" AND org_hrorg.code " + codein);
|
|
|
+ if(psncode != null && !"".equals(psncode)) {
|
|
|
+ sql.append(" AND hr_laborcost.workercode = '"+psncode+"'");
|
|
|
+ }
|
|
|
+ if(psnname != null && !"".equals(psnname)) {
|
|
|
+ sql.append(" AND hr_laborcost.name like '%"+psnname+"%'");
|
|
|
+ }
|
|
|
+ sql.append(" GROUP BY");
|
|
|
+ sql.append(" hr_laborcost.workercode,");
|
|
|
+ sql.append(" hr_laborcost.name,");
|
|
|
+ sql.append(" org_hrorg.name,");
|
|
|
+ sql.append(" org_dept.name,");
|
|
|
+ sql.append(" om_posts.postname,");
|
|
|
+ sql.append(" bd_defdoc.name,");
|
|
|
+ sql.append(" hi_psnjobs.begindate,");
|
|
|
+ sql.append(" hi_psnjobs.enddate,");
|
|
|
+ sql.append(" hi_psnjobs.ismainjob)");
|
|
|
+ sql.append(" WHERE (bmcd <> 0 OR yfdk<> 0 OR gsbt<> 0 OR zzbt<> 0)");
|
|
|
+ //拼接奖金部分sql
|
|
|
+ sql.append(" UNION ALL");
|
|
|
sql.append(" SELECT");
|
|
|
sql.append(" NULL AS ffyf,");
|
|
|
sql.append(" hi_psnjob.clerkcode AS psncode,");
|
|
@@ -955,10 +1068,7 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" AND hi_psnjob.clerkcode = '"+psncode+"'");
|
|
|
}
|
|
|
if(psnname != null && !"".equals(psnname)) {
|
|
|
- sql.append(" AND bd_psndoc.name = '"+psnname+"'");
|
|
|
- }
|
|
|
- if(codeTypein != null && !"".equals(codeTypein)) {
|
|
|
- sql.append(" AND " + codeTypein);
|
|
|
+ sql.append(" AND bd_psndoc.name like '%"+psnname+"%'");
|
|
|
}
|
|
|
sql.append(" GROUP BY");
|
|
|
sql.append(" hi_psnjob.clerkcode,");
|
|
@@ -970,7 +1080,11 @@ public class IncomeStatisticalUI extends ToftPanel {
|
|
|
sql.append(" hi_psnjobs.begindate,");
|
|
|
sql.append(" hi_psnjobs.enddate,");
|
|
|
sql.append(" hi_psnjobs.ismainjob");
|
|
|
- sql.append(" ) GROUP BY psncode,psnname,hrorgname,deptname,postname,defname,ismainjob,begindate,enddate ORDER BY psncode,begindate");
|
|
|
+ sql.append(" ) ");
|
|
|
+ if(codeTypein != null && !"".equals(codeTypein)) {
|
|
|
+ sql.append(" WHERE " + codeTypein);
|
|
|
+ }
|
|
|
+ sql.append(" GROUP BY psncode,psnname,hrorgname,deptname,postname,defname,ismainjob,begindate,enddate ORDER BY psncode,begindate");
|
|
|
return (ArrayList<Object>) IUAPQueryBS.executeQuery(sql.toString(), new ArrayListProcessor());
|
|
|
}
|
|
|
|