Prechádzať zdrojové kódy

feat(swc): 新增定调薪清单回写插件

- 实现删除与审核操作后的状态回写逻辑
- 回写定调薪申请单ID及对应状态字段
- 支持"submiteffect"和"delete"两种操作类型
- 使用QFilter查询关联数据并更新
- 集成SaveServiceHelper保存修改结果
turborao 1 týždeň pred
rodič
commit
f38bb6d97c

+ 78 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/init/plugin/operate/ApplyBillBackPendSalaryAdjOpPlugin.java

@@ -0,0 +1,78 @@
+package nckd.jxccl.swc.init.plugin.operate;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
+import kd.bos.entity.plugin.args.AfterOperationArgs;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import kd.sdk.plugin.Plugin;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 定调薪清单回写 删除与审核时,回写状态,定调薪申请单ID
+ * @author: turborao
+ * @date: 2025/12/5 9:05
+ */
+public class ApplyBillBackPendSalaryAdjOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
+
+    /**
+     * 员工待定调薪清单
+     */
+    private static final String entityName = "nckd_pendingsalaryadj";
+    private static final String SelectFields = "nckd_pendingsalaryadj";
+
+    @Override
+    public void afterExecuteOperationTransaction(AfterOperationArgs e) {
+        super.afterExecuteOperationTransaction(e);
+        switch (e.getOperationKey()) {
+            case "submiteffect":
+                this.writeBackPendSalaryAdj(e, e.getOperationKey());
+                break;
+            case "delete":
+                this.writeBackPendSalaryAdj(e, e.getOperationKey());
+                break;
+        }
+    }
+
+    /**
+     * 定调薪清单回写 删除与审核时,回写状态,定调薪申请单ID
+     * @param e
+     * @param operationKey
+     */
+    public void writeBackPendSalaryAdj(AfterOperationArgs e, String operationKey) {
+        DynamicObject[] dataEntities = e.getDataEntities();
+
+        Map<Long, DynamicObject> billMap =
+                Arrays.stream(dataEntities)
+                        .collect(Collectors.toMap(
+                                detail -> detail.getLong("id"),
+                                detail -> detail, // 整个 DynamicObject 作为 value
+                                (existing, replacement) -> existing // 保留前面的值
+                        ));
+        List<Long> billIDs = billMap.keySet().stream().collect(Collectors.toList());
+
+        QFilter qFilter = new QFilter("nckd_applybillid", QCP.in, billIDs);
+        DynamicObject[] pendSalaryAdjDyns = BusinessDataServiceHelper.load(entityName,SelectFields, new QFilter[]{qFilter});
+        for (DynamicObject pendSalaryAdjDyn : pendSalaryAdjDyns) {
+            if(operationKey.equals("delete")) {
+                pendSalaryAdjDyn.set("nckd_applybillid", 0L);  ///更新为 0
+                pendSalaryAdjDyn.set("billstatus", "A");  ///更新为 暂存状态
+            }
+            if(operationKey.equals("submiteffect")) {
+                pendSalaryAdjDyn.set("billstatus", "C");  ///更新为 已处理 状态
+            }
+        }
+        if(pendSalaryAdjDyns != null && pendSalaryAdjDyns.length > 0) {
+            SaveServiceHelper.save(pendSalaryAdjDyns);
+        }
+
+    }
+
+
+}