Эх сурвалжийг харах

feat(swc): 新增单位代发单列表及批量更新功能

Tyx 1 өдөр өмнө
parent
commit
7e102b5f92

+ 2 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/constants/SwcConstant.java

@@ -14,4 +14,6 @@ public class SwcConstant {
     public static final HRBaseServiceHelper SALARYITEM_ENTITY = new HRBaseServiceHelper("hsbs_salaryitem");
     /* 核算列表 */
     public static final HRBaseServiceHelper CALTABLE_ENTITY = new HRBaseServiceHelper("hsas_caltable");
+    /* 单位代发单 */
+    public static final HRBaseServiceHelper AGENCYPAYBILL_ENTITY = new HRBaseServiceHelper("nckd_agencypaybill");
 }

+ 54 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/formplugin/agencybill/AgencyBatchUpdateFormPlugin.java

@@ -0,0 +1,54 @@
+package nckd.jxccl.swc.hcdm.formplugin.agencybill;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.form.IFormView;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.sdk.plugin.Plugin;
+
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Tyx 单位代发单批量更新表单插件
+ * 【nckd_agencybatchupdate】
+ */
+public class AgencyBatchUpdateFormPlugin extends AbstractFormPlugin implements Plugin {
+
+
+    @Override
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+    }
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+    }
+
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
+        super.afterDoOperation(afterDoOperationEventArgs);
+        String key = afterDoOperationEventArgs.getOperateKey();
+        switch(key) {
+            case "donothing_batchupdate":
+                doUpdate();
+                break;
+        }
+    }
+
+    private void doUpdate() {
+        DynamicObject dyn = this.getModel().getDataEntity();
+        IFormView view = this.getView();
+        Map map = new HashMap();
+        map.put("month", dyn.getDate("nckd_month"));
+        map.put("calrule", dyn.getDynamicObject("nckd_calrule"));
+        view.returnDataToParent(map);
+        view.close();
+    }
+
+
+}

+ 99 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/formplugin/agencybill/AgencyBillList.java

@@ -0,0 +1,99 @@
+package nckd.jxccl.swc.hcdm.formplugin.agencybill;
+
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.IFormView;
+import kd.bos.form.ShowType;
+import kd.bos.form.events.AfterDoOperationEventArgs;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.events.ClosedCallBackEvent;
+import kd.bos.form.operate.FormOperate;
+import kd.bos.list.IListView;
+import kd.bos.orm.query.QFilter;
+import kd.swc.hsbp.common.util.SWCStringUtils;
+import kd.swc.hsbp.formplugin.web.SWCDataBaseList;
+import nckd.jxccl.swc.constants.SwcConstant;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * Tyx 2025-11-25
+ * 单位代发单列表插件
+ */
+public class AgencyBillList extends SWCDataBaseList {
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String opKey = formOperate.getOperateKey();
+        if (SWCStringUtils.equals(opKey, "donothing_batchupdate")) {
+            this.openBatchUpdateWindow(args);
+        }
+    }
+
+    /**
+     *
+     * @param args
+     */
+    private void openBatchUpdateWindow(BeforeDoOperationEventArgs args) {
+        FormShowParameter formShowParameter = new FormShowParameter();
+        formShowParameter.setFormId("nckd_agencybatchupdate");
+        formShowParameter.getOpenStyle().setShowType(ShowType.Modal);
+        formShowParameter.setCloseCallBack(new CloseCallBack(this, "batchUpdate"));
+        this.getView().showForm(formShowParameter);
+    }
+
+    @Override
+    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
+        super.afterDoOperation(afterDoOperationEventArgs);
+    }
+
+    @Override
+    public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
+        super.closedCallBack(closedCallBackEvent);
+        IFormView view = this.getView();
+        IListView listview = (IListView) this.getView();
+        String actionId = closedCallBackEvent.getActionId();
+        if ("batchUpdate".equals(actionId)) {
+            Map map = (Map) closedCallBackEvent.getReturnData();
+            if (map != null) {
+
+                Date month = (Date) map.get("month");
+                DynamicObject calRule = (DynamicObject) map.get("calrule");
+                ListSelectedRowCollection selectedRows = listview.getSelectedRows();
+                Object[] entryIds = selectedRows.getEntryPrimaryKeyValues();
+
+                List<Long> entryIdsList = Arrays.stream(entryIds).map(obj -> {
+                    return (Long) obj;
+                }).collect(Collectors.toList());
+
+                QFilter filter = new QFilter("nckd_entryentity.id", "in", entryIdsList);
+                DynamicObject[] billDyns = SwcConstant.AGENCYPAYBILL_ENTITY.load("id, nckd_entryentity.nckd_periodmonth, nckd_entryentity.nckd_calrule", new QFilter[]{filter});
+                // 批量更新
+                for(DynamicObject bill : billDyns) {
+                    DynamicObjectCollection entryDyns = bill.getDynamicObjectCollection("nckd_entryentity");
+                    for(DynamicObject entry : entryDyns) {
+                        if(entryIdsList.contains(entry.getLong("id"))) {
+                            entry.set("nckd_periodmonth", month);
+                            entry.set("nckd_calrule", calRule);
+                        }
+                    }
+                }
+                SwcConstant.AGENCYPAYBILL_ENTITY.update(billDyns);
+            }
+            view.invokeOperation("refresh");
+        }
+    }
+
+
+
+
+}