Explorar el Código

feat(sit): 优化社保导入模板字段处理逻辑

Tyx hace 1 semana
padre
commit
7e186d061a

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

@@ -154,10 +154,10 @@ public class AnnualIncomeCalculateService {
         // 分母
         BigDecimal denominator = month1.add(month2);
         if (denominator.compareTo(BigDecimal.ZERO) == 0) {
-            // 分母为零,无法进行除法运算,返回 null 作为一种信号
+            // 分母为零,无法进行除法运算,返回0
             return BigDecimal.ZERO;
         }
-        return numerator.divide(denominator, 2, RoundingMode.HALF_UP);
+        return numerator.divide(denominator, 0, RoundingMode.HALF_UP);
     }
 
     /**

+ 57 - 36
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/business/importtaskguide/ImportTaskGuideImportService.java

@@ -43,17 +43,19 @@ public class ImportTaskGuideImportService {
     private Long sinsurTplId;
     private Long welfarepayerId;
     private Long periodId;
+    private String periodNumber;
     private String url;
     private static final long DATE_TYPE_ID = 1050L;
     private static final long NUMBER_TYPE_ID = 1010L;
     private static final long DECIMAL_TYPE_ID = 1020L;
     private static final String DATE_FORMAT = "yyyy-MM-dd";
 
-    public ImportTaskGuideImportService(String url, Long importTaskId, Long sinsurTplId, Long periodId, Long welfarepayerId) {
+    public ImportTaskGuideImportService(String url, Long importTaskId, Long sinsurTplId, Long periodId, String periodNumber, Long welfarepayerId) {
         this.url = url;
         this.importTaskId = importTaskId;
         this.sinsurTplId = sinsurTplId;
         this.periodId = periodId;
+        this.periodNumber = periodNumber;
         this.welfarepayerId = welfarepayerId;
     }
 
@@ -114,6 +116,7 @@ public class ImportTaskGuideImportService {
         if (!this.isCancel(cacheKey)) {
             boolean hasWorkStartDate = tplFixItemMap.containsKey(11);
             Map<Integer, List<Map<String, String>>> columnIndexMap = this.getColumnIndexMap();
+            Map<Integer, List<Map<String, String>>> commonColumnIndexMap = this.getCommonColumnIndexMap();
             int defaultSize = 500;
             List<List<Map<Integer, String>>> splitDataList = SWCListUtils.split(dataRowList, defaultSize);
             int lineIndex = 0;
@@ -123,7 +126,7 @@ public class ImportTaskGuideImportService {
             for(int size = splitDataList.size(); index < size; ++index) {
                 tempList = (List)splitDataList.get(index);
                 lineIndex = index * defaultSize;
-                this.checkImportData(tempList, errDataList, columnIndexMap, lineIndex, cacheKey, writeTaskType, orgId, hasWorkStartDate, false);
+                this.checkImportData(tempList, errDataList, commonColumnIndexMap, columnIndexMap, lineIndex, cacheKey, writeTaskType, orgId, hasWorkStartDate, false);
             }
 
             if (!this.isCancel(cacheKey)) {
@@ -145,7 +148,7 @@ public class ImportTaskGuideImportService {
     }
 
     // TODO 校验导入数据
-    private void checkImportData(List<Map<Integer, String>> dataRowList, List<Map<String, String>> allErrDataList, Map<Integer, List<Map<String, String>>> columnIndexMap, int lineIndex, String cacheKey, String writeTaskType, Long orgId, boolean hasWorkStartDate, boolean isMulTimeOnePeriod) {
+    private void checkImportData(List<Map<Integer, String>> dataRowList, List<Map<String, String>> allErrDataList, Map<Integer, List<Map<String, String>>> commonColumnIndexMap, Map<Integer, List<Map<String, String>>> columnIndexMap, int lineIndex, String cacheKey, String writeTaskType, Long orgId, boolean hasWorkStartDate, boolean isMulTimeOnePeriod) {
         Map<Integer, Map<Integer, Object>> passDataRowMap = new HashMap(16);
         int lineIndexVer = lineIndex;
         List<Map<String, String>> errDataList = new ArrayList(10);
@@ -158,7 +161,7 @@ public class ImportTaskGuideImportService {
             while(it.hasNext()) {
                 Map<Integer, Object> passRowMap = new HashMap(16);
                 Map<Integer, String> rowMap = (Map)it.next();
-                isSuccess = this.checkFieldRequriedForCommon(rowMap, errDataList, lineIndex, passRowMap);
+                isSuccess = this.checkFieldRequriedForCommon(commonColumnIndexMap, rowMap, errDataList, lineIndex, passRowMap);
                 if(!isSuccess) {
                     ++lineIndex;
                 } else if (!this.checkItemValue(columnIndexMap, passRowMap, errDataList, lineIndex, rowMap)) {
@@ -172,7 +175,7 @@ public class ImportTaskGuideImportService {
             }
 
             if (!this.isCancel(cacheKey)) {
-                this.saveData(passDataRowMap, columnIndexMap);
+                this.saveData(passDataRowMap, commonColumnIndexMap, columnIndexMap);
                 successCount = passDataRowMap.size();
                 failCount = dataRowList.size() - successCount;
                 return;
@@ -191,7 +194,7 @@ public class ImportTaskGuideImportService {
         }
     }
 
-    private void saveData(Map<Integer, Map<Integer, Object>> passDataRowMap, Map<Integer, List<Map<String, String>>> columnIndexMap) {
+    private void saveData(Map<Integer, Map<Integer, Object>> passDataRowMap, Map<Integer, List<Map<String, String>>> commonColumnIndexMap, Map<Integer, List<Map<String, String>>> columnIndexMap) {
         if (passDataRowMap != null && passDataRowMap.size() != 0) {
             DynamicObjectCollection result = new DynamicObjectCollection();
             MainEntityType type = EntityMetadataCache.getDataEntityType("nckd_sinsurtempdata");
@@ -204,7 +207,7 @@ public class ImportTaskGuideImportService {
                 temporary = (DynamicObject)type.createInstance();
                 rowMap = (Map)entry.getValue();
                 temporary.set("nckd_datastatus", "0");
-                ImportTaskUtils.setTemporaryValueForCommon(temporary, rowMap);
+                ImportTaskUtils.setTemporaryValueForCommon(commonColumnIndexMap, temporary, rowMap, periodNumber);
                 temporary.set("nckd_importtask", this.importTaskId);
                 temporary.set("creator", RequestContext.get().getCurrUserId());
                 temporary.set("createtime", new Date());
@@ -283,35 +286,23 @@ public class ImportTaskGuideImportService {
     }
 
 
-    private boolean checkFieldRequriedForCommon(Map<Integer, String> rowMap, List<Map<String, String>> errDataList, int lineIndex, Map<Integer, Object> passRowMap) {
+    private boolean checkFieldRequriedForCommon(Map<Integer, List<Map<String, String>>> commonColumnIndexMap, Map<Integer, String> rowMap, List<Map<String, String>> errDataList, int lineIndex, Map<Integer, Object> passRowMap) {
         String msg = ResManager.loadKDString("请填写“{0}”。", "ImportTaskGuideImportService_2", "swc-hsas-business", new Object[0]);
-        if (SWCStringUtils.isEmpty((String)rowMap.get(0))) {
-            errDataList.add(this.assembleErrMap(lineIndex, false, MessageFormat.format(msg, SinsurPresetItemEnum.CALPERIOD.getItemName())));
-            return false;
-        } else {
-            passRowMap.put(0, rowMap.get(0));
-            if (SWCStringUtils.isEmpty((String)rowMap.get(1))) {
-                errDataList.add(this.assembleErrMap(lineIndex, false, MessageFormat.format(msg, SinsurPresetItemEnum.EMP_IDCARD.getItemName())));
+
+        for (Map.Entry<Integer, List<Map<String, String>>> columnEntry : commonColumnIndexMap.entrySet()) {
+            Integer columnIndex = columnEntry.getKey();
+            String itemValue = rowMap.get(columnIndex);
+
+            if (SWCStringUtils.isEmpty(itemValue)) {
+                errDataList.add(this.assembleErrMap(lineIndex, false, MessageFormat.format(msg, columnEntry.getValue().get(0).get("name"))));
                 return false;
-            } else {
-                passRowMap.put(1, rowMap.get(1));
-                if (SWCStringUtils.isEmpty((String)rowMap.get(2))) {
-                    errDataList.add(this.assembleErrMap(lineIndex, false, MessageFormat.format(msg, SinsurPresetItemEnum.EMP_NAME.getItemName())));
-                    return false;
-                } else {
-                    passRowMap.put(2, rowMap.get(2));
-                    passRowMap.put(3, rowMap.get(3));
-                    return true;
-//                    if (SWCStringUtils.isEmpty((String)rowMap.get(3))) {
-//                        errDataList.add(this.assembleErrMap(lineIndex, false, MessageFormat.format(msg, SinsurPresetItemEnum.EMP_NUMBER.getItemName())));
-//                        return false;
-//                    } else {
-//                        passRowMap.put(3, rowMap.get(3));
-//                        return true;
-//                    }
-                }
+            }
+
+            for (Map<String, String> itemMap : columnEntry.getValue()) {
+                passRowMap.put(columnIndex, itemValue);
             }
         }
+        return true;
     }
 
     private Map<Integer, List<Map<String, String>>> getColumnIndexMap() {
@@ -323,19 +314,44 @@ public class ImportTaskGuideImportService {
         while(var4.hasNext()) {
             Map<String, String> obj = (Map)var4.next();
             if (!"0".equals(obj.get("itemType"))) {
-                tempMapList = (List)columnIndexMap.get(Integer.valueOf((String)obj.get("columnIndex")));
+                tempMapList = (List) columnIndexMap.get(Integer.valueOf((String) obj.get("columnIndex")));
                 if (tempMapList == null) {
                     tempMapList = new ArrayList(10);
-                    columnIndexMap.put(Integer.valueOf((String)obj.get("columnIndex")), tempMapList);
+                    columnIndexMap.put(Integer.valueOf((String) obj.get("columnIndex")), tempMapList);
                 }
+                ((List) tempMapList).add(obj);
+            }
+        }
 
-                ((List)tempMapList).add(obj);
+        return columnIndexMap;
+    }
+
+    /**
+     * 获取默认项目Map
+     * @return
+     */
+    private Map<Integer, List<Map<String, String>>> getCommonColumnIndexMap() {
+        List<Map<String, String>> columnHeadList = ImportTaskUtils.getColumnHeadList(this.sinsurTplId, this.importTaskId);
+        Map<Integer, List<Map<String, String>>> columnIndexMap = new HashMap(columnHeadList.size());
+        List<Map<String, String>> tempMapList = null;
+        Iterator var4 = columnHeadList.iterator();
+
+        while(var4.hasNext()) {
+            Map<String, String> obj = (Map)var4.next();
+            if ("0".equals(obj.get("itemType"))) {
+                tempMapList = (List) columnIndexMap.get(Integer.valueOf((String) obj.get("columnIndex")));
+                if (tempMapList == null) {
+                    tempMapList = new ArrayList(10);
+                    columnIndexMap.put(Integer.valueOf((String) obj.get("columnIndex")), tempMapList);
+                }
+                ((List) tempMapList).add(obj);
             }
         }
 
         return columnIndexMap;
     }
 
+
     private Map<String, String> assembleErrMap(int dataIndex, boolean isAll, String msg) {
         Map<String, String> errMap = new HashMap(4);
         errMap.put("errMsg", msg);
@@ -361,7 +377,12 @@ public class ImportTaskGuideImportService {
                 }
                 tplName.append(((SinsurPresetItemEnum)entry.getValue()).getImportColumnName());
                 if (!excelName.equals(tplName.toString())) {
-                    errDataList.add(((SinsurPresetItemEnum)entry.getValue()).getImportColumnName());
+                    // 系统导出来的模板列名有*,线下的模板可能不会加*号,这里再判断一下,如果有*号,去掉*号再匹配一下
+                    if(tplName.toString().startsWith("*")) {
+                        if(!excelName.equals(tplName.toString().substring(1, tplName.toString().length()))) {
+                            errDataList.add(((SinsurPresetItemEnum)entry.getValue()).getImportColumnName());
+                        }
+                    }
                 }
             }
         }

+ 23 - 13
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/business/importtaskguide/utils/ImportTaskUtils.java

@@ -6,11 +6,11 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.dataentity.serialization.SerializationUtils;
 import kd.bos.entity.EntityType;
 import kd.bos.orm.query.QFilter;
-import kd.swc.hsas.common.enums.PresetItemEnum;
 import kd.swc.hsbp.business.servicehelper.SWCDataServiceHelper;
 import kd.swc.hsbp.common.cache.ISWCAppCache;
 import kd.swc.hsbp.common.cache.SWCAppCache;
 import kd.swc.hsbp.common.util.SWCStringUtils;
+import nckd.jxccl.sit.hcsi.common.constant.SitConstant;
 import nckd.jxccl.sit.hcsi.formplugin.web.tp.enums.SinsurPresetItemEnum;
 
 import java.util.*;
@@ -140,17 +140,11 @@ public class ImportTaskUtils {
         String columnKey = null;
         switch (itemId) {
             case "1":
-                columnKey = "period";
-                break;
-            case "2":
                 columnKey = "nckd_idcard";
                 break;
-            case "3":
+            case "2":
                 columnKey = "nckd_empname";
                 break;
-            case "4":
-                columnKey = "nckd_empnumber";
-                break;
         }
 
         return columnKey;
@@ -190,11 +184,27 @@ public class ImportTaskUtils {
         return num - 1;
     }
 
-    public static void setTemporaryValueForCommon(DynamicObject temporary, Map<Integer, Object> rowMap) {
-        temporary.set("nckd_periodname", rowMap.get(0));
-        temporary.set("nckd_idcard", rowMap.get(1));
-        temporary.set("nckd_empname", rowMap.get(2));
-        temporary.set("nckd_empnumber", rowMap.get(3));
+    /**
+     * 处理预置字段
+     *
+     * @param commonColumnIndexMap
+     * @param temporary
+     * @param rowMap
+     * @param periodNumber
+     */
+    public static void setTemporaryValueForCommon(Map<Integer, List<Map<String, String>>> commonColumnIndexMap, DynamicObject temporary, Map<Integer, Object> rowMap, String periodNumber) {
+        for (Map.Entry<Integer, List<Map<String, String>>> entry : commonColumnIndexMap.entrySet()) {
+            Object itemValue = rowMap.get(entry.getKey());
+            if (itemValue == null) {
+                continue;
+            }
+            for (Map<String, String> itemMap : entry.getValue()) {
+                temporary.set(itemMap.get("key").toString(), itemValue);
+            }
+        }
+
+        temporary.set("nckd_periodname", periodNumber);
+
     }
 
     public static DynamicObjectCollection getItemEntryList(Map<Integer, Object> rowMap, Map<Integer, List<Map<String, String>>> columnIndexMap, EntityType entryType) {

+ 2 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/common/constant/SitConstant.java

@@ -19,6 +19,8 @@ public class SitConstant {
     public static final HRBaseServiceHelper BIZDATABILLENT_HELPER = new HRBaseServiceHelper("hpdi_bizdatabillent");
     /*业务数据模板*/
     public static final HRBaseServiceHelper BIZITEMGROUP_HELPER = new HRBaseServiceHelper("hsbs_bizitemgroup");
+    /*  */
+    public static final HRBaseServiceHelper SINSURPERIOD_HELPER = new HRBaseServiceHelper("sitbs_sinsurperiod");
     /*业务数据提报-外单位收入模板编码*/
     public static final String WDWSR_NUMBER = "JT001";
 

+ 1 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/SinsurTempDataListPlugin.java

@@ -65,6 +65,7 @@ public class SinsurTempDataListPlugin extends AbstractListPlugin implements Plug
             formShowParameter.setCustomParam("periodId", this.getView().getFormShowParameter().getCustomParam("periodId"));
             formShowParameter.setCustomParam("welfarepayerId", this.getView().getFormShowParameter().getCustomParam("welfarepayerId"));
             formShowParameter.setCustomParam("orgId", this.getView().getFormShowParameter().getCustomParam("orgId"));
+            formShowParameter.setCustomParam("periodNumber", this.getView().getFormShowParameter().getCustomParam("periodNumber"));
             formShowParameter.setCloseCallBack(new CloseCallBack(this, "importData"));
             this.getView().showForm(formShowParameter);
         }

+ 1 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/basedata/SinsurImpTaskListPlugin.java

@@ -64,6 +64,7 @@ public class SinsurImpTaskListPlugin extends AbstractListPlugin implements Plugi
             parameter.setCustomParam("importTaskName", data.getString("name"));
             parameter.setCustomParam("welfarepayerId", data.getLong("nckd_welfarepayer.id"));
             parameter.setCustomParam("periodId", data.getLong("nckd_period.id"));
+            parameter.setCustomParam("periodNumber", data.getString("nckd_period.number"));
             parameter.setCustomParam("sinsurTplId", data.getLong("nckd_sinsurtpl.id"));
             parameter.setCustomParam("orgId", String.valueOf(data.getLong("nckd_org.id")));
             parameter.setCustomParam("creator", String.valueOf(data.getLong("creator.id")));

+ 2 - 1
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/basedata/TaskGuideImportFormPlugin.java

@@ -98,10 +98,11 @@ public class TaskGuideImportFormPlugin extends AbstractFormPlugin implements Upl
             Long sinsurTplId = (Long)params.getCustomParam("sinsurTplId");
             Long welfarepayerId = params.getCustomParam("welfarepayerId");
             Long periodId = params.getCustomParam("periodId");
+            String periodNumber = params.getCustomParam("periodNumber");
             Long orgId = Long.valueOf(params.getCustomParam("orgId").toString());
             String importTaskName = (String)params.getCustomParam("importTaskName");
             String pageId = this.getView().getParentView().getPageId();
-            ImportTaskGuideImportService importService = new ImportTaskGuideImportService(url, importTaskId, sinsurTplId, periodId, welfarepayerId);
+            ImportTaskGuideImportService importService = new ImportTaskGuideImportService(url, importTaskId, sinsurTplId, periodId, periodNumber, welfarepayerId);
 
             try {
                 Map<String, String> result = importService.parseAndCheckExcelData(orgId, pageId, importTaskName);

+ 2 - 4
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/enums/SinsurPresetItemEnum.java

@@ -7,10 +7,8 @@ import java.util.HashMap;
 import java.util.Map;
 
 public enum SinsurPresetItemEnum {
-    CALPERIOD("A", 1L, new SWCI18NParam("期间", "PresetItemEnum_4", "swc-hsas-common"), 1030L, new SWCI18NParam("必填项,体现缴纳期间,格式:202501", "PresetItemEnum_13", "swc-hsas-common"), new SWCI18NParam("期间编码", "PresetItemEnum_28", "swc-hsas-common"), true),
-    EMP_IDCARD("B", 2L, new SWCI18NParam("员工身份证", "PresetItemEnum_6", "swc-hsas-common"), 1030L, new SWCI18NParam("必填项,用于确认社保人员", "PresetItemEnum_15", "swc-hsas-common"), new SWCI18NParam("员工身份证", "PresetItemEnum_6", "swc-hsas-common"), true),
-    EMP_NAME("C", 3L, new SWCI18NParam("员工姓名", "PresetItemEnum_6", "swc-hsas-common"), 1030L, new SWCI18NParam("非必填项", "PresetItemEnum_15", "swc-hsas-common"), new SWCI18NParam("员工姓名", "PresetItemEnum_6", "swc-hsas-common"), false),
-    EMP_NUMBER("D", 4L, new SWCI18NParam("工号", "PresetItemEnum_6", "swc-hsas-common"), 1030L, new SWCI18NParam("非必填项", "PresetItemEnum_15", "swc-hsas-common"), new SWCI18NParam("工号", "PresetItemEnum_6", "swc-hsas-common"), false);
+    EMP_IDCARD("A", 1L, new SWCI18NParam("证件号码", "PresetItemEnum_6", "swc-hsas-common"), 1030L, new SWCI18NParam("必填项,用于确认社保人员", "PresetItemEnum_15", "swc-hsas-common"), new SWCI18NParam("证件号码", "PresetItemEnum_6", "swc-hsas-common"), true),
+    EMP_NAME("B", 2L, new SWCI18NParam("姓名", "PresetItemEnum_6", "swc-hsas-common"), 1030L, new SWCI18NParam("非必填项", "PresetItemEnum_15", "swc-hsas-common"), new SWCI18NParam("姓名", "PresetItemEnum_6", "swc-hsas-common"), false);
 
     private String matchColumn;
     private Long itemId;

+ 1 - 0
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/guide/TaskImpGuideListPlugin.java

@@ -89,6 +89,7 @@ public class TaskImpGuideListPlugin extends AbstractListPlugin implements TabSel
         showParameter.setCustomParam("periodId", parameter.getCustomParam("periodId"));
         showParameter.setCustomParam("welfarepayerId", parameter.getCustomParam("welfarepayerId"));
         showParameter.setCustomParam("orgId", parameter.getCustomParam("orgId"));
+        showParameter.setCustomParam("periodNumber", parameter.getCustomParam("periodNumber"));
         if (isLocked != null && isLocked) {
             showParameter.setCustomParam("isLocked", Boolean.TRUE);
         } else {

+ 0 - 2
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/helper/SinsurTemplateHelper.java

@@ -170,10 +170,8 @@ public class SinsurTemplateHelper {
     }
 
     static {
-        sinsurPresetItemEnumList.add(SinsurPresetItemEnum.CALPERIOD);
         sinsurPresetItemEnumList.add(SinsurPresetItemEnum.EMP_IDCARD);
         sinsurPresetItemEnumList.add(SinsurPresetItemEnum.EMP_NAME);
-        sinsurPresetItemEnumList.add(SinsurPresetItemEnum.EMP_NUMBER);
     }