|
@@ -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;
|
|
|
|
|
|
}
|
|
|
|