Просмотр исходного кода

feat(swc): 新增薪资档案协作处理和薪酬分类保存功能

Tyx 1 неделя назад
Родитель
Сommit
55d67a4dca

+ 17 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hpdi/business/coordination/api/SwcCoordBizExtRegister.java

@@ -0,0 +1,17 @@
+package nckd.jxccl.swc.hpdi.business.coordination.api;
+
+import kd.hr.hbp.business.coordination.api.ext.CoordBizExtRegister;
+import kd.hr.hbp.business.coordination.model.CoordBizContext;
+
+/**
+ * Tyx 2025-11-18
+ * 薪资档案注册器,注册在 薪资数据集成 -> 员工变动协作配置 -> 协作字段配置 -> 薪资档案的bizextregister字段中
+ */
+public class SwcCoordBizExtRegister implements CoordBizExtRegister {
+
+    @Override
+    public void registerHandler(CoordBizContext context) {
+        CoordBizExtRegister.super.registerHandler(context);
+        context.registerHandlers(CoordBizContext.CoordBizStage.AFTER_OPERATE, new SwcCoordBizSaveHandler());
+    }
+}

+ 56 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hpdi/business/coordination/api/SwcCoordBizSaveHandler.java

@@ -0,0 +1,56 @@
+package nckd.jxccl.swc.hpdi.business.coordination.api;
+
+import kd.bos.dataentity.OperateOption;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.utils.ObjectUtils;
+import kd.bos.entity.operate.result.OperationResult;
+import kd.bos.exception.KDBizException;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.hr.hbp.business.coordination.api.ext.CoordBizSaveHandler;
+import kd.hr.hbp.business.coordination.model.CoordBizContext;
+import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SwcCoordBizSaveHandler implements CoordBizSaveHandler {
+
+    private static final Log log = LogFactory.getLog(SwcCoordBizSaveHandler.class);
+    private static HRBaseServiceHelper SALARYGROUP_HELPER = new HRBaseServiceHelper("nckd_persalarygroup");
+    private static String SALARYGROUP_ENTITY = "nckd_persalarygroup";
+    @Override
+    public Map<String, Object> handle(Map<String, DynamicObject> map, Map<String, Map<String, Object>> map1, DynamicObject dynamicObject, CoordBizContext coordBizContext) {
+        log.info(" -------- begin SwcCoordBizSaveHandler handle --------");
+        // 返回的Map
+        Map<String, Object> returnMap = new HashMap<String, Object>();
+        DynamicObject salaryFile = map.get("hsas_salaryfile");
+        if(!ObjectUtils.isEmpty(salaryFile)) {
+            Date startDate = salaryFile.getDate("nckd_groupstartdate");
+            Date endDate = salaryFile.getDate("nckd_groupenddate");
+            DynamicObject salaryGroup = salaryFile.getDynamicObject("nckd_salarygroup");
+            DynamicObject employee = salaryFile.getDynamicObject("employee");
+
+            DynamicObject dyn = SALARYGROUP_HELPER.generateEmptyDynamicObject();
+            dyn.set("startdate", startDate);
+            dyn.set("enddate", endDate);
+            dyn.set("nckd_salarygroup", salaryGroup);
+            dyn.set("nckd_employee", employee);
+            dyn.set("nckd_salaryfile", salaryFile);
+
+            OperationResult result = SaveServiceHelper.saveOperate(SALARYGROUP_ENTITY, new DynamicObject[]{dyn}, OperateOption.create());
+            log.info("-------- 薪酬分类保存结果:" + result.isSuccess());
+            if(result.isSuccess()) {
+                returnMap.put("success",true);
+            }
+            else {
+                returnMap.put("success",false);
+                log.info("-------- 薪酬分类错误信息:" + result.getMessage());
+                throw new KDBizException("-------- 薪酬分类保存失败:" + result.getMessage());
+            }
+        }
+        return returnMap;
+    }
+}

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

@@ -17,5 +17,9 @@ public class PerSalaryGroupEdit extends AbstractFormPlugin implements Plugin {
         if (null != employeeIdObj) {
             this.getView().getModel().setValue("nckd_employee", Long.parseLong(String.valueOf(employeeIdObj)));
         }
+        Object salaryFileObj = this.getView().getParentView().getFormShowParameter().getCustomParam("salaryfileId");
+        if (null != salaryFileObj) {
+            this.getView().getModel().setValue("nckd_salaryfile", Long.parseLong(String.valueOf(salaryFileObj)));
+        }
     }
 }