Prechádzať zdrojové kódy

feat(swc): 新增代发工资单生成及核算结果跳转功能

Tyx 1 deň pred
rodič
commit
3c5fb693ad

+ 7 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/business/annualincome/AnnualIncomeCalculateService.java

@@ -81,10 +81,14 @@ public class AnnualIncomeCalculateService {
             dyn.set("org", fileMap.get(employeeId).getLong("org.id"));
             dyn.set("billno", UUID.randomUUID().toString().substring(0,29));
 
+            BigDecimal amount1 = BigDecimal.ZERO;
+            BigDecimal amount2 = BigDecimal.ZERO;
+
             Map incomeBillMap = incomeBillData.get(employeeId);
             if(!ObjectUtils.isEmpty(incomeBillMap)) {
                 dyn.set("nckd_sysmonth", incomeBillMap.get("totalMonth"));
                 dyn.set("nckd_sysyearamount", incomeBillMap.get("totalAmount"));
+                amount1 = (BigDecimal) incomeBillMap.get("totalAmount");
             }
             Map<Long, String> bizDataMap = bizData.get(employeeId);
             if(!ObjectUtils.isEmpty(bizDataMap)) {
@@ -98,10 +102,13 @@ public class AnnualIncomeCalculateService {
                         case "nckd_outyearamount":
                             BigDecimal amount = new BigDecimal(bizDataMap.get(bizItemId));
                             dyn.set(matchKey, amount);
+                            amount2 = amount;
                             break;
                     }
                 }
             }
+            // 申报年度社保缴费基数
+            dyn.set("nckd_totalamount", amount1.add(amount2));
             billCols.add(dyn);
         }
         // 保存数据

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

@@ -12,4 +12,6 @@ public class SwcConstant {
     public static final HRBaseServiceHelper CALPERSON_HELPER = new HRBaseServiceHelper("hsas_calperson");
     /* 薪资项目 */
     public static final HRBaseServiceHelper SALARYITEM_ENTITY = new HRBaseServiceHelper("hsbs_salaryitem");
+    /* 核算列表 */
+    public static final HRBaseServiceHelper CALTABLE_ENTITY = new HRBaseServiceHelper("hsas_caltable");
 }

+ 89 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hcdm/formplugin/agencybill/AgencyBillEdit.java

@@ -2,7 +2,6 @@ package nckd.jxccl.swc.hcdm.formplugin.agencybill;
 
 import kd.bos.dataentity.entity.DynamicObject;
 import kd.bos.dataentity.entity.DynamicObjectCollection;
-import kd.bos.dataentity.metadata.IMetadata;
 import kd.bos.dataentity.resource.ResManager;
 import kd.bos.entity.datamodel.IDataModel;
 import kd.bos.entity.datamodel.ListSelectedRowCollection;
@@ -11,7 +10,6 @@ import kd.bos.form.ShowFormHelper;
 import kd.bos.form.events.AfterDoOperationEventArgs;
 import kd.bos.form.events.ClosedCallBackEvent;
 import kd.bos.form.operate.FormOperate;
-import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.bos.list.ListFilterParameter;
 import kd.bos.list.ListShowParameter;
 import kd.bos.orm.query.QCP;
@@ -22,7 +20,11 @@ import kd.sdk.plugin.Plugin;
 import kd.swc.hcdm.business.domain.applybill.helper.ApplyBillPermCommonHelper;
 import kd.swc.hsbp.common.util.SWCDateTimeUtils;
 import kd.swc.hsbp.formplugin.web.SWCBaseFormPlugin;
+import nckd.jxccl.swc.constants.SwcConstant;
 
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -41,6 +43,91 @@ public class AgencyBillEdit extends SWCBaseFormPlugin implements Plugin {
         this.addItemClickListeners("nckd_advcontoolbarap");
     }
 
+    @Override
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+    }
+
+    @Override
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+    }
+
+    @Override
+    public void beforeBindData(EventObject e) {
+        super.beforeBindData(e);
+        if("calPerson".equals(this.getView().getFormShowParameter().getCustomParam("source"))) {
+            dealDataByCalPerson();
+        }
+    }
+
+    /**
+     * 从薪资明细-转代发按钮跳转过来之后的处理
+     */
+    public void dealDataByCalPerson() {
+        IDataModel model = this.getModel();
+        DynamicObject billDyn = model.getDataEntity(true);
+        DynamicObjectCollection entryCols = billDyn.getDynamicObjectCollection("nckd_entryentity");
+        Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
+        // 归属年月
+        String startDateStr = customParams.get("startDate").toString().substring(0, 10);
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate localDate = LocalDate.parse(startDateStr, formatter);
+        Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+
+        // 赋值薪资核算组
+        model.setValue("nckd_payrollgroup",customParams.get("payrollgroup"));
+        List calPersonIds = (List) customParams.get("calPersonIds");
+        // 获取核算人员相关信息
+        QFilter filter = new QFilter("id", "in", calPersonIds);
+        String selectFields = "id, employee.id, empposorgrelsndet.adminorg.id";
+        DynamicObject[] calPersonDyns = SwcConstant.CALPERSON_HELPER.load(selectFields, new QFilter[]{filter});
+        Map<Long, DynamicObject> calPersonMap = Arrays.stream(calPersonDyns).collect(Collectors.toMap((dyx) -> {
+            return dyx.getLong("id");
+        }, (dyx) -> {
+            return dyx;
+        }, (key1, key2) -> {
+            return key2;
+        }));
+
+
+        // 获取核算列表信息
+        filter = new QFilter("calpersonid", "in", calPersonIds);
+        filter.and("hsas_caltableentry.salaryitem.number", QCP.equals, "JT_283");
+        selectFields = "calpersonid,hsas_caltableentry.calamountvalue";
+        DynamicObjectCollection calTableDyns = SwcConstant.CALTABLE_ENTITY.queryOriginalCollection(selectFields, new QFilter[]{filter});
+        Map<Long, DynamicObject> calTableMap = calTableDyns.stream().collect(Collectors.toMap((dyx) -> {
+            return dyx.getLong("calpersonid");
+        }, (dyx) -> {
+            return dyx;
+        }, (key1, key2) -> {
+            return key2;
+        }));
+
+
+        for (Object calPerson : calPersonIds) {
+            DynamicObject row = entryCols.addNew();
+            Long calPersonId = Long.valueOf(calPerson.toString());
+            row.set("nckd_employee", calPersonMap.get(calPersonId).getDynamicObject("employee"));
+            row.set("nckd_adminorg", calPersonMap.get(calPersonId).getDynamicObject("empposorgrelsndet.adminorg"));
+            row.set("nckd_payrollgrp", model.getValue("nckd_payrollgroup"));
+            row.set("nckd_belongdate", date);
+            row.set("nckd_amount", calTableMap.get(calPersonId).getBigDecimal("hsas_caltableentry.calamountvalue"));
+        }
+    }
+
+    /**
+     * 根据核算名单ID获取相关信息
+     * @param calPersonIds
+     * @return
+     */
+    public DynamicObjectCollection getCalTableByCalPersonId(List calPersonIds) {
+        QFilter filter = new QFilter("calpersonid", "in", calPersonIds);
+        String selectFields = "employee.id, empposorgrelsndet.adminorg.id";
+        return SwcConstant.CALPERSON_HELPER.queryOriginalCollection(selectFields, new QFilter[]{filter});
+    }
+
+
     @Override
     public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
         super.afterDoOperation(afterDoOperationEventArgs);

+ 53 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/swc/hsas/formplugin/web/cal/CalResultDetailPluginEx.java

@@ -0,0 +1,53 @@
+package nckd.jxccl.swc.hsas.formplugin.web.cal;
+
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
+import kd.bos.form.CloseCallBack;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.ShowType;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
+import kd.bos.list.IListView;
+import kd.swc.hsbp.common.util.SWCStringUtils;
+import kd.swc.hsbp.formplugin.web.SWCDataBaseEdit;
+
+import java.util.*;
+
+public class CalResultDetailPluginEx extends SWCDataBaseEdit {
+    public CalResultDetailPluginEx() {
+    }
+
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        FormOperate formOperate = (FormOperate)args.getSource();
+        String opKey = formOperate.getOperateKey();
+        if (SWCStringUtils.equals(opKey, "donothing_openagencypaybill")) {
+            this.openAgencyPayBill(args);
+        }
+    }
+
+
+    public void openAgencyPayBill(BeforeDoOperationEventArgs args) {
+        Map customParams = this.getView().getFormShowParameter().getCustomParams();
+        // 构建参数
+        Map formCustomParams = new HashMap();
+        // 薪资核算组 核算期间 核算规则 归属日期 组织
+        formCustomParams.put("payrollgroup", customParams.get("payrollgroup"));
+        formCustomParams.put("calPeriodId", customParams.get("calPeriodId"));
+        formCustomParams.put("calRuleId", customParams.get("calRuleId"));
+        formCustomParams.put("startDate", customParams.get("startdate"));
+        formCustomParams.put("org", customParams.get("org"));
+        formCustomParams.put("source", "calPerson");
+        // 当前页面选择的人
+        IListView listview = (IListView) this.getView();
+        ListSelectedRowCollection selectedRows = listview.getSelectedRows();
+        Object[] calPersonIds = selectedRows.getPrimaryKeyValues();
+        formCustomParams.put("calPersonIds", Arrays.asList(calPersonIds));
+        FormShowParameter formShowParameter = new FormShowParameter();
+        formShowParameter.setFormId("nckd_agencypaybill");
+        formShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
+        formShowParameter.setCustomParams(formCustomParams);
+        this.getView().showForm(formShowParameter);
+    }
+
+}