Просмотр исходного кода

社保同步U9表体实体修改和费用类型金额为0的不推送

Timo 1 год назад
Родитель
Сommit
10a4b60f5b
1 измененных файлов с 35 добавлено и 14 удалено
  1. 35 14
      hrbm/src/private/nc/impl/bm/bmdata/BmdataSyncServiceImpl.java

+ 35 - 14
hrbm/src/private/nc/impl/bm/bmdata/BmdataSyncServiceImpl.java

@@ -16,16 +16,16 @@ import nc.vo.bm.sync.BmToU9LogHVO;
 import nc.vo.pub.BusinessException;
 import nc.vo.pub.lang.UFDateTime;
 import nc.vo.wa.erp.WaToU9LogHVO;
+import nccloud.openapi.hrwa.vo.WaDataToU9BVO;
 import nccloud.openapi.hrwa.vo.WaDataToU9HVO;
+import org.apache.commons.lang3.ObjectUtils;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
+import java.util.*;
 import java.util.stream.Collectors;
 
 public class BmdataSyncServiceImpl implements IBmdataSyncService {
@@ -63,13 +63,13 @@ public class BmdataSyncServiceImpl implements IBmdataSyncService {
     public void pushToU9(String pk_group, String pk_org, String pk_bm_class, String cyear, String cperiod, String push_type,String provision) throws BusinessException {
 
 
-        List<Map<String, Object>> reportDataByParam = getReportDataByParam(pk_org, pk_bm_class, cyear, cperiod);
+        List<WaDataToU9BVO> reportDataByParam = getReportDataByParam(pk_org, pk_bm_class, cyear, cperiod);
         if (reportDataByParam != null && reportDataByParam.size() > 0) {
-            Map<String, List<Map<String, Object>>> erporgcode = reportDataByParam.stream().collect(Collectors.groupingBy(e -> (String) e.get("erporgcode"))); // 要根据财务组织分单。因为是分组织审批的
-            for (Map.Entry<String, List<Map<String, Object>>> entry : erporgcode.entrySet()) {
+            Map<String, List<WaDataToU9BVO>> erporgcode = reportDataByParam.stream().collect(Collectors.groupingBy(WaDataToU9BVO::getErporgcode)); // 要根据财务组织分单。因为是分组织审批的
+            for (Map.Entry<String, List<WaDataToU9BVO>> entry : erporgcode.entrySet()) {
                 String erporgCode = entry.getKey();
-                List<Map<String, Object>> erporgData = entry.getValue();
-                String erporg = (String) erporgData.get(0).get("erporg");
+                List<WaDataToU9BVO> erporgData = entry.getValue();
+                String erporg =  erporgData.get(0).getErporg();
                 if (checkPush(pk_org, pk_bm_class, cyear, cperiod, erporg)) {
                     WaDataToU9HVO waDataToU9HVO = new WaDataToU9HVO();
                     waDataToU9HVO.setErporgcode(erporgCode);
@@ -92,7 +92,7 @@ public class BmdataSyncServiceImpl implements IBmdataSyncService {
                         if (isSucess) {
                             // 成功的 记录日志
                             getBaseDAO().executeUpdate("update bm_u9_log_h set is_flag = 'N'  where is_flag = 'Y' and  pk_erporg ='" + initLogVO.getPk_erporg() + "' and cperiod = '"
-                                    + initLogVO.getCperiod() + "' and cyear = '" + initLogVO.getCyear() + "' and pk_bm_class =" + initLogVO.getPk_bm_class() + "' ");
+                                    + initLogVO.getCperiod() + "' and cyear = '" + initLogVO.getCyear() + "' and pk_bm_class ='" + initLogVO.getPk_bm_class() + "' ");
                             initLogVO.setR_status(SUCCESS_STATUS);
                             initLogVO.setIs_flag("Y");
                         } else {
@@ -145,11 +145,12 @@ public class BmdataSyncServiceImpl implements IBmdataSyncService {
         return true;
     }
 
-    private List<Map<String, Object>> getReportDataByParam(String pk_org, String pk_bm_class, String cyear, String cperiod) throws BusinessException {
+    private List<WaDataToU9BVO> getReportDataByParam(String pk_org, String pk_bm_class, String cyear, String cperiod) throws BusinessException {
         // 1.动态获取分担项目  在自定义档案 可以随时修改字段
         Map<String, String> allocateItem = getAllocateItem();
         StringBuffer sb = new StringBuffer();
-        for (Map.Entry<String, String> entry : allocateItem.entrySet()) {
+        Set<Map.Entry<String, String>> entries = allocateItem.entrySet();
+        for (Map.Entry<String, String> entry : entries) {
             sb.append(", sum(nvl(bd." + entry.getValue() + ",0)) as " + entry.getKey());
         }
 
@@ -163,8 +164,28 @@ public class BmdataSyncServiceImpl implements IBmdataSyncService {
                 " WHERE h.code = 'HRZ06' AND b.enablestate = 2 AND nvl(b.DATATYPE,1) <> 0) erpdept ON erpdept.pk_defdoc = bd.glbdef2   " +
                 " WHERE bd.pk_bm_class  = '" + pk_bm_class + "' and bd.cyear = '" + cyear + "' and bd.cperiod = '" + cperiod + "' and bd.checkflag = 'Y' and bd.accountstate = 0 AND bd.pk_org = '" + pk_org + "' " +
                 " GROUP BY  bd.glbdef1, erporg.code,erpdept.code,ft.code ";
-        List<Map<String, Object>> doc = (List<Map<String, Object>>) getBaseDAO().executeQuery(sql, new MapListProcessor());
-        return doc;
+        List<Map<String, Object>> docs = (List<Map<String, Object>>) getBaseDAO().executeQuery(sql, new MapListProcessor());
+        List<WaDataToU9BVO> waDataToU9BVOS = new ArrayList<>();
+        if (docs != null && docs.size() > 0) {
+            docs.forEach(doc -> {
+                for (Map.Entry<String, String> entry : entries) {
+                    BigDecimal amount = new BigDecimal(ObjectUtils.toString(doc.get(entry.getKey()),"0"));
+                    if(BigDecimal.ZERO.compareTo(amount)==0) continue; // 20231010 dzz 杨梅说没钱的不推
+                    WaDataToU9BVO waDataToU9BVO = new WaDataToU9BVO();
+                    waDataToU9BVO.setErporgcode((String) doc.get("erporgcode"));
+                    waDataToU9BVO.setErporg((String) doc.get("erporg"));
+                    waDataToU9BVO.setErpdeptcode((String) doc.get("erpdeptcode"));
+                    waDataToU9BVO.setFee_type((String) doc.get("fee_type"));
+                    waDataToU9BVO.setPsnsum((Integer) doc.get("psnsum"));
+                    waDataToU9BVO.setXzxmbm(entry.getKey());
+                    waDataToU9BVO.setAmount(amount);
+                    waDataToU9BVOS.add(waDataToU9BVO);
+                }
+            });
+        }
+
+
+        return waDataToU9BVOS;
 
     }