浏览代码

feat(report): 人员薪酬分类表单插件 && 外部数据比对报表插件

Tyx 1 月之前
父节点
当前提交
823370e065

+ 45 - 6
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/rptdata/DetailCompareReportDataPlugin.java

@@ -1,6 +1,8 @@
 package nckd.jxccl.sit.hcsi.rptdata;
 
 import kd.bos.algo.DataSet;
+import kd.bos.algo.GroupbyDataSet;
+import kd.bos.algo.JoinDataSet;
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.entity.report.AbstractReportListDataPlugin;
@@ -51,14 +53,25 @@ public class DetailCompareReportDataPlugin extends AbstractReportListDataPlugin
         List<Long> taskIds = taskCols.stream().map(obj -> obj.getLong("id")).collect(Collectors.toList());
         // 根据计算任务Id+险种获取到计算结果明细数据
         DataSet calPersonDataSet = queryCalPersonDetail(reportQueryParam, taskIds);
-        // 按照个人和单位分组汇总 type = 1为个人,type = 2为单位
+        // 按照个人和单位分组汇总 type = 1为个人,type = 2为单位,这里仅为系统内数据
+        DataSet groupDataSet = groupCalPersonDetail(calPersonDataSet);
+        // 再关联外部数据导入
+        DataSet outsidePersonDetail = ReportUtils.queryOutsidePersonDetail(reportQueryParam);
+        // 按照个人和单位分组汇总 type = 1为个人,type = 2为单位,这里仅为系统内数据
+        DataSet groupDataSetOut = groupCalPersonDetailOut(outsidePersonDetail);
 
-        return null;
+        // 再join
+        String[] leftFields = new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "personSysValue", "companySysValue"};
+        String[] rightFields =  new String[]{"personOutValue", "companyOutValue"};
+        DataSet finalDataSet = groupDataSet.join(groupDataSetOut).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").
+                on("empnumber", "empnumber").on("empname", "empname").
+                on("empidcard", "empidcard").select(leftFields, rightFields).finish();
+        return finalDataSet;
     }
 
     public DataSet queryDataSet(ReportQueryParam reportQueryParam, QFilter filter, String entityName, String selectFields) {
         HRBaseServiceHelper helper = new HRBaseServiceHelper(entityName);
-        DataSet dataSet = helper.queryDataSet("AttendanceRateReportQuery-Sbsent", selectFields, new QFilter[]{filter});
+        DataSet dataSet = helper.queryDataSet("AttendanceRateReportQuery-Absent", selectFields, new QFilter[]{filter});
         return dataSet;
     }
 
@@ -83,13 +96,39 @@ public class DetailCompareReportDataPlugin extends AbstractReportListDataPlugin
 
     /**
      * 分组汇总人员明细
-     *
      * @param calPersonDataSet
      * @return
      */
     public DataSet groupCalPersonDetail (DataSet calPersonDataSet) {
-        //calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum
-        return calPersonDataSet;
+        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value");
+        DataSet dataSet1 = calPersonDataSet.copy();
+        DataSet dataSet2 = calPersonDataSet.copy();
+
+        // 按照类型分组汇总
+        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").finish();
+        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").finish();
+
+        // join
+        JoinDataSet joinDataSet = sumSet1.join(sumSet2).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").on("empnumber", "empnumber").on("empname", "empname").on("empidcard", "empidcard");
+        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personSysValue"}, new String[]{"value as companySysValue"}).finish();
+
+        return dataSet;
+    }
+
+    public DataSet groupCalPersonDetailOut (DataSet calPersonDataSet) {
+        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value");
+        DataSet dataSet1 = calPersonDataSet.copy();
+        DataSet dataSet2 = calPersonDataSet.copy();
+
+        // 按照类型分组汇总
+        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").finish();
+        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").finish();
+
+        // join
+        JoinDataSet joinDataSet = sumSet1.join(sumSet2).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").on("empnumber", "empnumber").on("empname", "empname").on("empidcard", "empidcard");
+        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personOutValue"}, new String[]{"value as companyOutValue"}).finish();
+
+        return dataSet;
     }
 
     /**

+ 21 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hsbs/formplugin/web/basedata/salarygroup/PerSalaryGroupEdit.java

@@ -0,0 +1,21 @@
+package nckd.jxccl.swc.hsbs.formplugin.web.basedata.salarygroup;
+
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+
+import java.util.EventObject;
+
+/**
+ * Tyx 2025-10-30
+ * 人员薪酬分类表单插件 【nckd_persalarygroup】
+ */
+public class PerSalaryGroupEdit extends AbstractFormPlugin implements Plugin {
+
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        Object employeeIdObj = this.getView().getParentView().getFormShowParameter().getCustomParam("employeeId");
+        if (null != employeeIdObj) {
+            this.getView().getModel().setValue("nckd_employee", Long.parseLong(String.valueOf(employeeIdObj)));
+        }
+    }
+}