Pārlūkot izejas kodu

feat(swc): 增加社保数据比对中滞纳金和利息字段处理

Tyx 1 nedēļu atpakaļ
vecāks
revīzija
6ad25a012b

+ 10 - 10
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/business/datacomparison/DataComparisonQueryService.java

@@ -24,8 +24,8 @@ import java.util.stream.Collectors;
 public class DataComparisonQueryService {
     private static final Log logger = LogFactory.getLog(DataComparisonQueryService.class);
     private static final String SINSURTASK = "hcsi_sinsurtask";
-    String[] leftFields = new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "personSysValue", "companySysValue"};
-    String[] rightFields =  new String[]{"personOutValue", "companyOutValue"};
+    String[] leftFields = new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "personSysValue", "personSysValuea", "companySysValue", "companySysValuea"};
+    String[] rightFields =  new String[]{"personOutValue", "personOutValuea","companyOutValue", "companyOutValuea"};
     IDataModel model = null;
     IFormView view = null;
     public DataComparisonQueryService(IDataModel model,IFormView view) {
@@ -97,17 +97,17 @@ public class DataComparisonQueryService {
      * @return
      */
     public DataSet groupCalPersonDetail (DataSet calPersonDataSet) {
-        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value");
+        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").sum("value1");
         DataSet dataSet1 = calPersonDataSet.copy();
         DataSet dataSet2 = calPersonDataSet.copy();
 
         // 按照类型分组汇总
-        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").finish();
-        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").finish();
+        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").sum("value1").finish();
+        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").sum("value1").finish();
 
         // join
         JoinDataSet joinDataSet = sumSet1.join(sumSet2).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").on("empnumber", "empnumber").on("empname", "empname").on("empidcard", "empidcard");
-        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personSysValue"}, new String[]{"value as companySysValue"}).finish();
+        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personSysValue","value1 as personSysValuea"}, new String[]{"value as companySysValue","value1 as companySysValuea"}).finish();
 
         return dataSet;
     }
@@ -126,17 +126,17 @@ public class DataComparisonQueryService {
     }
 
     public DataSet groupCalPersonDetailOut (DataSet calPersonDataSet) {
-        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value");
+        calPersonDataSet.groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").sum("value1");
         DataSet dataSet1 = calPersonDataSet.copy();
         DataSet dataSet2 = calPersonDataSet.copy();
 
         // 按照类型分组汇总
-        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").finish();
-        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").finish();
+        DataSet sumSet1 = dataSet1.filter("type = '1'").groupBy(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type"}).sum("value").sum("value1").finish();
+        DataSet sumSet2 = dataSet2.filter("type = '2'").groupBy(new String[]{"welfarepayer","welfaretypeid","empnumber","empname","empidcard","type"}).sum("value").sum("value1").finish();
 
         // join
         JoinDataSet joinDataSet = sumSet1.join(sumSet2).on("welfarepayer", "welfarepayer").on("welfaretypeid", "welfaretypeid").on("empnumber", "empnumber").on("empname", "empname").on("empidcard", "empidcard");
-        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personOutValue"}, new String[]{"value as companyOutValue"}).finish();
+        DataSet dataSet = joinDataSet.select(new String[]{"welfarepayer", "welfaretypeid", "empnumber", "empname", "empidcard", "type", "value as personOutValue", "value1 as personOutValuea"}, new String[]{"value as companyOutValue","value1 as companyOutValuea"}).finish();
 
         return dataSet;
     }

+ 2 - 3
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/datacomparison/DetailCompareBillEdit.java

@@ -16,9 +16,6 @@ import kd.bos.form.operate.FormOperate;
 import kd.bos.form.plugin.AbstractFormPlugin;
 import kd.bos.logging.Log;
 import kd.bos.logging.LogFactory;
-import kd.bos.orm.query.QCP;
-import kd.bos.orm.query.QFilter;
-import kd.hr.hbp.business.servicehelper.HRBaseServiceHelper;
 import nckd.jxccl.sit.hcsi.business.datacomparison.DataComparisonQueryService;
 
 import java.math.BigDecimal;
@@ -114,6 +111,8 @@ public class DetailCompareBillEdit extends AbstractFormPlugin {
         }
     }
 
+
+
     @Override
     public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
         super.afterDoOperation(afterDoOperationEventArgs);

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

@@ -282,7 +282,7 @@ public class SinsurTemplateEdit extends AbstractFormPlugin implements Plugin {
                     if ("1".equals(itemType)) {
                         tableValueSetter.addRow(new Object[]{matchColumn, itemParam.get("itemType"), itemId, itemId, 0L, 0L, 0L, dataObj.get("nckd_itemnumber"), dataObj.get("nckd_itemname"), itemParam.get("dataTypeId"), common, unicode});
                     } else if ("2".equals(itemType)) {
-                        tableValueSetter.addRow(new Object[]{matchColumn, itemParam.get("itemType"), itemId, 0L, 0L, itemId, 0L, dataObj.get("nckd_itemnumber"), dataObj.get("nckd_itemname"), itemParam.get("dataTypeId"), common, unicode});
+                        tableValueSetter.addRow(new Object[]{matchColumn, itemParam.get("itemType"), itemId, itemId, 0L, 0L, 0L, dataObj.get("nckd_itemnumber"), dataObj.get("nckd_itemname"), itemParam.get("dataTypeId"), common, unicode});
                     } else if ("4".equals(itemType)) {
                         tableValueSetter.addRow(new Object[]{matchColumn, itemParam.get("itemType"), itemId, 0L, 0L, 0L, itemId, dataObj.get("nckd_itemnumber"), dataObj.get("nckd_itemname"), itemParam.get("dataTypeId"), common, unicode});
                     } else if ("3".equals(itemType)) {

+ 13 - 3
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/SitItemSelectAddItemPlugin.java

@@ -44,12 +44,14 @@ public class SitItemSelectAddItemPlugin extends AbstractBasePlugIn {
     private static final String TREE_VIEW = "nckd_treeviewap";
     private static final String FORM_MOVE_TO = "hsas_calitemmoveto";
     private static final String ITEM_TYPE_II = "II";
-
+    private static final String BASE_TYPE_II = "BI";
     private static final Map<String, String> ITEM_TYPE_MAPPING = new HashMap();
     private static final Map<String, String> ITEM_CATEGORY_MAPPING =  new HashMap();
     static {
         ITEM_TYPE_MAPPING.put("1", ITEM_TYPE_II);
+        ITEM_TYPE_MAPPING.put("2", BASE_TYPE_II);
         ITEM_CATEGORY_MAPPING.put(ITEM_TYPE_II, ITEM_TYPE_II);
+        ITEM_CATEGORY_MAPPING.put(BASE_TYPE_II, BASE_TYPE_II);
     }
 
     @Override
@@ -234,6 +236,7 @@ public class SitItemSelectAddItemPlugin extends AbstractBasePlugIn {
     private List<TreeNode> buildTreeNodeList(Map<String, Map<String, Map<String, Object>>> dataMap) {
         List<TreeNode> list = new ArrayList<>();
         list.addAll(SitItemSelectAddItemServiceHelper.loadInsuranceItemChildNode(null, false, dataMap));
+        list.addAll(SitItemSelectAddItemServiceHelper.loadBaseItemChildNode(false));
         return list;
     }
 
@@ -330,7 +333,7 @@ public class SitItemSelectAddItemPlugin extends AbstractBasePlugIn {
         }
 
         String treeNodeId = treeNode.getId();
-        if (treeNodeId.equals("0_@_BS") || treeNodeId.equals("1_@_BS")) {
+        if (treeNodeId.equals("II") || treeNodeId.equals("BI")) {
             return false;
         }
 
@@ -341,7 +344,12 @@ public class SitItemSelectAddItemPlugin extends AbstractBasePlugIn {
 //        String treeNodeId = treeNode.getId();
 //        String itemCategory = treeNodeId.substring(0, treeNodeId.indexOf('_'));
 //        String itemCategory = ITEM_TYPE_II;
-        return normalizeItemCategory(ITEM_TYPE_II);
+        if(treeNode.getId().equals("999990") || treeNode.getId().equals("999991")){
+            return normalizeItemCategory(BASE_TYPE_II);
+        }
+        else {
+            return normalizeItemCategory(ITEM_TYPE_II);
+        }
     }
 
     private void removeCheckNode(int[] rows) {
@@ -384,6 +392,8 @@ public class SitItemSelectAddItemPlugin extends AbstractBasePlugIn {
         switch (itemCategory) {
             case ITEM_TYPE_II:
                 return "insuranceitemkey";
+            case BASE_TYPE_II:
+                return "baseitemkey";
             default:
                 return "";
         }

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

@@ -30,9 +30,34 @@ public class SinsurTemplateHelper {
         }
         Map<String, Map<String, Object>> itemParamMap = new HashMap(itemDatas.size());
         itemParamMap.putAll(getItemParamMap("number", IIUnicodeList, "1", "sitbs_insuranceitem", existItemDataMap, (Long) null));
+        //单独处理一下基本项目:滞纳金跟利息
+        itemParamMap.putAll(getBaseItemParamMap());
         return itemParamMap;
     }
 
+    public static Map<String, Map<String, Object>> getBaseItemParamMap() {
+        Map<String, Map<String, Object>> itemParamMap = new HashMap(2);
+        for (int i = 0; i < 2; i++) {
+            Map<String, Object> itemParam = new HashMap(6);
+            if (i == 0) {
+                itemParam.put("id", 999990L);
+                itemParam.put("dataTypeId", 1020L);
+                itemParam.put("itemType", "2");
+                itemParam.put("itemname", "滞纳金");
+                itemParamMap.put("999990", itemParam);
+            }
+            else {
+                itemParam.put("id", 999991L);
+                itemParam.put("dataTypeId", 1020L);
+                itemParam.put("itemType", "2");
+                itemParam.put("itemname", "利息");
+                itemParamMap.put("999991", itemParam);
+            }
+        }
+        return itemParamMap;
+    }
+
+
     public static Map<String, Map<String, Object>> getItemParamMap(String key, List<String> keyList, String itemType, String entityName, Map<Long, Map<String, Object>> existItemDataMap, Long orgId) {
         if (CollectionUtils.isEmpty(keyList)) {
             return new HashMap(0);

+ 41 - 10
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/formplugin/web/tp/helper/SitItemSelectAddItemServiceHelper.java

@@ -22,7 +22,9 @@ public class SitItemSelectAddItemServiceHelper {
     private static final String DEFAULT_ORDER = "number asc";
 
     private static final String INSURANCEITEM_KEY = "insuranceitemkey";
+    private static final String BASEITEM_KEY = "baseitemkey";
     private static final String ITEM_TYPE_II = "II";
+    private static final String BASE_TYPE_II = "BI";
     private static final String PREFIX_SEPARATOR = "_@_";
 
     /**
@@ -34,9 +36,26 @@ public class SitItemSelectAddItemServiceHelper {
         Map<String, Map<String, Map<String, Object>>> dataMap = new HashMap(4);
         Map<String, Map<String, Object>> insuranceItemMap = this.getInsuranceItemList(false, (QFilter)null, (QFilter)null, orgId);
         dataMap.put("insuranceitemkey", insuranceItemMap);
+        dataMap.put("baseitemkey", getBaseItemMap());
         return dataMap;
     }
 
+
+    public Map<String, Map<String, Object>> getBaseItemMap() {
+        Map<String, Map<String, Object>> baseItemMap = new HashMap<>(3);
+        Map<String, Object> itemMap1 = new HashMap<>(3);
+        itemMap1.put("id", "999990");
+        itemMap1.put("number", "999990");
+        itemMap1.put("name", "滞纳金");
+        baseItemMap.put("滞纳金", itemMap1);
+        Map<String, Object> itemMap2 = new HashMap<>(3);
+        itemMap2.put("id", "999991");
+        itemMap2.put("number", "999991");
+        itemMap2.put("name", "利息");
+        baseItemMap.put("利息", itemMap2);
+        return baseItemMap;
+    }
+
     private Map<String, Map<String, Object>> getInsuranceItemList(boolean isProrationFormula, QFilter countryQFilter, QFilter calBlockQFilter, long orgId) {
         if (isProrationFormula) {
             return Collections.emptyMap();
@@ -150,18 +169,30 @@ public class SitItemSelectAddItemServiceHelper {
         else {
             return totalNodeList;
         }
-//
-//
-//
-//        insuranceItemList.forEach(item ->  {
-//            TreeNode itemNode = new TreeNode(ITEM_TYPE_II, ITEM_TYPE_II + "_" + item.get("id").toString(),
-//                    item.get("name").toString());
-//            treeNodeList.add(itemNode);
-//        });
-//
-//        return treeNodeList;
     }
 
+    public static List<TreeNode> loadBaseItemChildNode(boolean isExpend) {
+        // 最后返回树:
+        List<TreeNode> totalNodeList = new ArrayList<>(2);
+
+        // 构建根节点:
+        TreeNode itemRoot = new TreeNode("", BASE_TYPE_II,
+                ResManager.loadKDString("基本项目-II", "FormulaItemOrFuncTreeHelper_1",
+                        "swc-hsas-business", new Object[0]));
+        itemRoot.setExpend(isExpend);
+        itemRoot.setIsOpened(isExpend);
+        totalNodeList.add(itemRoot);
+
+        //构建子节点,这里固定滞纳金和利息
+        List<TreeNode> children = new ArrayList<>(2);
+        children.add(new TreeNode(BASE_TYPE_II, "999990", "滞纳金"));
+        children.add(new TreeNode(BASE_TYPE_II, "999991", "利息"));
+        itemRoot.setChildren(children);
+        return totalNodeList;
+    }
+
+
+
     private static List<Map<String, Object>> getInsuranceItemList(String name,
                                                                Map<String, Map<String, Map<String, Object>>> dataMap) {
         return SWCStringUtils.isEmpty(name)

+ 9 - 3
code/swc/nckd-jxccl-swc/src/main/java/nckd/jxccl/sit/hcsi/utils/ReportUtils.java

@@ -22,8 +22,11 @@ public class ReportUtils {
             +"entryentity.nckd_itemvalue as value";
 
     //参保单位,险种,工号,姓名,证件号,单位缴费金额 = 单位固定+单位缴费+单位补缴,个人缴费金额=个人固定+个人缴费+个人补缴
+    //2025-11-17调整 单位缴费金额 = 单位固定+单位缴费,单位补缴金额 = 单位补缴,个人缴费金额=个人固定+个人缴费;个人补缴 = 个人补缴;
     private static String CALPERSON_FIELDS = "welfarepayer.id as welfarepayer,entryentity.insuranceitem.group.id as welfaretypeid,"
-            +"empnumberdb as empnumber,namedb as empname,percre.number as empidcard,entryentity.amountvalue as value,"
+            +"empnumberdb as empnumber,namedb as empname,percre.number as empidcard,"
+            +"case when entryentity.insuranceitem.insurancetypeattr.number in ('1006_S','1005_S','1009_S','1010_S') then entryentity.amountvalue else 0 end as value,"
+            +"case when entryentity.insuranceitem.insurancetypeattr.number in ('1011_S','1012_S') then entryentity.amountvalue else 0 end as value1,"
             +"case when entryentity.insuranceitem.insurancetypeattr.number in ('1005_S','1009_S','1011_S') then '1'"
             +"     when entryentity.insuranceitem.insurancetypeattr.number in ('1006_S','1010_S','1012_S') then '2' end as type";
     private static final String[] INSURANCEPROP = new String[]{"1005_S","1006_S","1009_S","1010_S","1011_S","1012_S"};
@@ -88,8 +91,11 @@ public class ReportUtils {
         DataSet insuranceItemDataSet = queryInsuranceItemDataSet(itemIds);
         DataSet dataSet = outsideDataSet.join(insuranceItemDataSet).on("itemid","id").select(
                 new String[]{"welfarepayer","empnumber","empname","empidcard","cast(value as Decimal(10,2)) as value"},
-                new String[]{"welfaretypeid", "case when attrnumber in ('1005_S','1009_S','1011_S') then '1' when attrnumber in ('1006_S','1010_S','1012_S') then '2' end as type"}).finish();
-        return dataSet;
+                new String[]{"attrnumber", "welfaretypeid", "case when attrnumber in ('1005_S','1009_S','1011_S') then '1' when attrnumber in ('1006_S','1010_S','1012_S') then '2' end as type"}).finish();
+        DataSet dataSet1 = dataSet.select("welfarepayer","empnumber","empname","empidcard","welfaretypeid","attrnumber","type",
+                "case when attrnumber in ('1006_S','1005_S','1009_S','1010_S') then value else 0 end as value",
+                "case when attrnumber in ('1011_S','1012_S') then value else 0 end as value1");
+        return dataSet1;
     }
 
     /**