Browse Source

feat(swc): add support for fetching and mapping salary adjustment records

- Added constant for decadjrecord entity name
- Initialized standard item dynamic object for position-based salary standards
- Modified field selection in transfer query to use bb_em_tid instead of ba_em_tid
- Implemented logic to fetch and map salary adjustment records based on employee IDs
- Enhanced data processing to include salary rank from adjustment records
- Created helper method to retrieve adjustment record information for transfers
turborao 5 days ago
parent
commit
aa9980e139

+ 66 - 5
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/form/PendingSalaryAdjListPlugin.java

@@ -45,6 +45,10 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
      * 调动单
      */
     private static final String transferEntityName = "hdm_transferapply";
+    /**
+     * 定调薪信息
+     */
+    private static final String adjrecordEntityName = "hcdm_decadjrecord";
 
     private static int days = 5;
 
@@ -52,10 +56,12 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
 
     private DynamicObjectCollection salaryTypeDyns = null;
     private DynamicObject salaryRankDyn = null;
+    private DynamicObject standardItemDyn = null;
 
     @Override
-    public void createNewData(BizDataEventArgs e) {
-        super.createNewData(e);
+    public void initialize() {
+        super.initialize();
+
         /**
          * 获取 公共自定义参数  PENDSALARYADJ_DAYS
          */
@@ -80,6 +86,18 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
         QFilter qFilter12 = new QFilter("number", QCP.equals, "01");
         salaryRankDyn = QueryServiceHelper.queryOne("hsbs_salaryrank","id,number,name",new QFilter[]{qFilter12});
 
+
+        /**
+         * 获取 定调薪项目 岗位工资标准
+         */
+        QFilter qFilter13 = new QFilter("name", QCP.equals, "岗位工资标准");
+        standardItemDyn = QueryServiceHelper.queryOne("hsbs_standarditem","id,number,name",new QFilter[]{qFilter13});
+    }
+
+    @Override
+    public void createNewData(BizDataEventArgs e) {
+        super.createNewData(e);
+
         //加载入职单与调动单的数据
         getAdjustBillData();
     }
@@ -228,7 +246,7 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
         /**
          * 查询调动单
          */
-        String selectField1 = "id,billno,b_effectivedate,ba_em_tid,ba_em_empnumber,bb_po_position.id,aposition.id,bb_po_adminorg.id,aorg.id,bb_po_job.jobseq.id,ajob.jobseq.id";
+        String selectField1 = "id,billno,b_effectivedate,bb_em_tid,ba_em_empnumber,bb_po_position.id,aposition.id,bb_po_adminorg.id,aorg.id,bb_po_job.jobseq.id,ajob.jobseq.id";
         QFilter qFilter12 = new QFilter("billstatus", QCP.equals, "C"); // 单据状态 = 已审核
         QFilter qFilter13 = new QFilter("b_effectivedate", QCP.large_equals, daysAgo);  //实际调动日期
 
@@ -257,15 +275,18 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
                                 (existing, replacement) -> existing // 保留前面的值
                         ));
 
+        Map<Long, DynamicObject> adjRecordMap = getAdjRecordInfo(transferDyns);
+
         for(DynamicObject transferDyn: transferDyns){
             DynamicObject billDyn2 = billMap1.get(transferDyn.getLong("id"));
             if(billDyn2 != null) continue;
             DynamicObject dyn = BusinessDataServiceHelper.newDynamicObject(entityName);
+            Long employeeID = transferDyn.getLong("bb_em_tid");
             dyn.set("billno", transferDyn.getString("billno"));
             dyn.set("nckd_billid", transferDyn.getLong("id"));
             dyn.set("nckd_billtype", "调动单");
             dyn.set("billstatus", "A");  ///待处理
-            dyn.set("nckd_employeefield", transferDyn.getLong("ba_em_tid"));
+            dyn.set("nckd_employeefield", employeeID);
             dyn.set("nckd_changedate", transferDyn.getDate("b_effectivedate"));
             dyn.set("nckd_salaryadjus", salaryTypeDyns.get(1).getLong("id"));  //定调薪类型
             /**
@@ -274,7 +295,10 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
             dyn.set("nckd_oldhradminorg", transferDyn.getLong("bb_po_adminorg.id"));  //部门
             dyn.set("nckd_oldposition", transferDyn.getLong("bb_po_position.id"));  //岗位
             dyn.set("nckd_oldjobseqhr", transferDyn.getLong("bb_po_job.jobseq.id"));  //职位序列
-            dyn.set("nckd_oldsalaryrank", salaryRankDyn.getLong("id"));  //薪档
+            DynamicObject adjRecordDyn  = adjRecordMap.get(employeeID);
+            if(adjRecordDyn != null) {
+                dyn.set("nckd_oldsalaryrank", adjRecordDyn.getLong("salaryrank.id"));  //薪档
+            }
             /**
              * 调动后
              */
@@ -295,4 +319,41 @@ public class PendingSalaryAdjListPlugin extends AbstractListPlugin implements Pl
         }
 
     }
+
+    /**
+     * 获取调薪记录
+     * @param transferDyns   通过调动单查询出人员ID
+     * @return
+     */
+    public Map<Long, DynamicObject> getAdjRecordInfo(DynamicObjectCollection transferDyns) {
+        Map<Long, DynamicObject> transferMap = (Map)transferDyns.stream().collect(Collectors.toMap((obj) -> {
+            return obj.getLong("bb_em_tid");
+        }, (obj) -> {
+            return obj;
+        }, (k1, k2) -> {
+            return k1;
+        }));
+
+        List<Long> personIDs = transferMap.keySet().stream().collect(Collectors.toList());
+
+        String selectField = "id,adjfile.employee.id,adjfile.datastatus,adjfile.iscurrentversion,employee.id,salaryrank.id";
+        QFilter qFilter1 = new QFilter("adjfile.employee.id", QCP.in, personIDs);
+        QFilter qFilter2 = new QFilter("adjfile.datastatus", QCP.equals, "1");
+        QFilter qFilter3 = new QFilter("adjfile.iscurrentversion", QCP.equals, "1");
+        QFilter qFilter4= new QFilter("salaryrank.id", QCP.equals, standardItemDyn.getLong("id"));
+        QFilter qFilter5= new QFilter("iscurrentdata", QCP.equals, "1");
+
+        DynamicObjectCollection adjDyns = QueryServiceHelper.query(adjrecordEntityName, selectField,new QFilter[]{qFilter1,qFilter2,qFilter3,qFilter4,qFilter5});
+
+
+        Map<Long, DynamicObject> adjRecordMap = (Map)adjDyns.stream().collect(Collectors.toMap((obj) -> {
+            return obj.getLong("employee.id");
+        }, (obj) -> {
+            return obj;
+        }, (k1, k2) -> {
+            return k1;
+        }));
+
+        return adjRecordMap;
+    }
 }