Jelajahi Sumber

fix:月结账单调度计划批量拉取月结账单

xiaopeng 3 hari lalu
induk
melakukan
8634a03607

+ 21 - 1
nckd-fi/src/main/java/nckd/fi/er/task/MonthlySettlementBillTask.java

@@ -26,11 +26,14 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 public class MonthlySettlementBillTask extends AbstractTask {
 
     private static Logger log = LoggerFactory.getLogger(MonthlySettlementBillTask.class);
 
+    private final String select = "server,billnum,settlemain,operationtype,billstatusname,currency,settlementamount,periodstartdate,periodenddate,formid,invoiceentry,invoiceentry.invoicetype,invoiceentry.invoicecode,invoiceentry.invoiceno,invoiceentry.flightitineraryandtrain,invoiceentry.totalamount,invoiceentry.taxamount_invoice,invoiceentry.checkingbillno,invoiceentry.passengername,invoiceentry.invoicefromcity,invoiceentry.invoicetocity,invoiceentry.buyerorgname,invoiceentry.makeoutcompname,invoiceentry.downloadurl,invoiceentry.ticketno,invoiceentry.orderstatus,invoiceentry.innerdownloadurl,invoiceentry.departtime,invoiceentry.number";
+
     /**
      * 总页码,不处理总数,
      * 每当当前页码数据小于1000 停止接口查询
@@ -75,6 +78,17 @@ public class MonthlySettlementBillTask extends AbstractTask {
             log.info("月结账单查询接口 暂无数据-----");
             return ;
         }
+        //批量查询月结账单,如果已存在则更新,否则保存
+        DynamicObject[] load = BusinessDataServiceHelper.load("er_checkingbill", select, null);
+        Map<String, DynamicObject> billMap = Arrays.stream(load)
+                .filter(Objects::nonNull)
+                .filter(dynamicObject -> dynamicObject.getString("billnum") != null)
+                .collect(Collectors.toMap(
+                        dynamicObject -> dynamicObject.getString("billnum"),
+                        dynamicObject -> dynamicObject,
+                        (existing, replacement) -> existing // 处理重复key,保留第一个
+                ));
+        //DynamicObjectCollection query = QueryServiceHelper.query("er_checkingbill", "billnum", null);
         List<DynamicObject> ids = new ArrayList<>();
         for (Map<String, Object> resultMap : resultLists) {
             //供应商名称-供应商编号
@@ -139,7 +153,13 @@ public class MonthlySettlementBillTask extends AbstractTask {
 //            Object departtime = resultMap.get("startTime");
 //            Object number = resultMap.get("tmcSettlementid");
 
-            DynamicObject dynamicBillObj = BusinessDataServiceHelper.newDynamicObject("er_checkingbill");
+            DynamicObject dynamicBillObj = null;
+            if (billMap.containsKey(billnum.toString())){
+                dynamicBillObj = billMap.get(billnum.toString());
+
+            }else {
+                dynamicBillObj = BusinessDataServiceHelper.newDynamicObject("er_checkingbill");
+            }
             //供应商名称
             dynamicBillObj.set("server", service);
             //账单编号