From f47b4a70a7df36204f66e1f1aba0b39c1764a5db Mon Sep 17 00:00:00 2001 From: zzs Date: Fri, 20 Dec 2024 14:46:24 +0800 Subject: [PATCH] =?UTF-8?q?WIP:=E4=BF=A1=E4=BF=9D=E6=9C=AA=E5=9B=9E?= =?UTF-8?q?=E6=AC=BE=E9=A2=84=E8=AD=A6task?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/ExportPresentWarningTask.java | 79 +++++++++++++++---- 1 file changed, 65 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/yem/wm/es/exportpresent/task/ExportPresentWarningTask.java b/src/main/java/com/yem/wm/es/exportpresent/task/ExportPresentWarningTask.java index 6f51215a..4ca58a4c 100644 --- a/src/main/java/com/yem/wm/es/exportpresent/task/ExportPresentWarningTask.java +++ b/src/main/java/com/yem/wm/es/exportpresent/task/ExportPresentWarningTask.java @@ -2,6 +2,7 @@ package com.yem.wm.es.exportpresent.task; import com.yem.rf.utils.RFUtils; import com.yem.tws.common1.DateUtils; +import com.yem.wm.es.shippingdetails.util.PaymentControlUtil; import com.yem.wm.utils.DynamicObjectUtil; import com.yem.wm.utils.YEM; import kd.bos.context.RequestContext; @@ -11,8 +12,10 @@ import kd.bos.exception.KDException; import kd.bos.orm.query.QFilter; import kd.bos.schedule.executor.AbstractTask; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; import org.apache.commons.compress.utils.Lists; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; @@ -26,7 +29,7 @@ public class ExportPresentWarningTask extends AbstractTask { @Override public void execute(RequestContext requestContext, Map map) throws KDException { - boolean isSendMessage = isTenDaysAfter(); +// boolean isSendMessage = isTenDaysAfter(); QFilter qFilter = RFUtils.getBaseQFilter(); String selectfields = DynamicObjectUtil.getSelectfields("yem_es_exportpresent"); @@ -34,11 +37,52 @@ public class ExportPresentWarningTask extends AbstractTask { DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_exportpresent", selectfields, qFilter.toArray()); // 订舱单号-提单日期 Map ladingDateMap = new HashMap<>(); + // 合同号-是否合同回款完成 + Map isClaimFinishedMap = new HashMap<>(); for (DynamicObject d : load) { DynamicObjectCollection c = d.getDynamicObjectCollection("yem_es_exportpre_erw"); for (DynamicObject subD : c) { String shipmentnum = subD.getString("yem_shipmentnum_c"); ladingDateMap.put(shipmentnum, null); + String contractnum = subD.getString("yem_contractnum_c"); + isClaimFinishedMap.put(contractnum, true); + } + } + + Map salesorders = BusinessDataServiceHelper.loadFromCache("yem_es_salesorder", "id, billno", new QFilter[]{new QFilter("billno", "in", isClaimFinishedMap.keySet())}); + Map salesorderNo = new HashMap<>(); + for (Map.Entry salesorderEntry : salesorders.entrySet()) { + Long orderId = (Long) salesorderEntry.getKey(); + DynamicObject order = salesorderEntry.getValue(); + salesorderNo.put(order.getString("billno"), orderId); + } + Map stOrder = BusinessDataServiceHelper.loadFromCache("yem_es_storagetrans", "id, billno, yem_es_salescontrac_s.yem_rapamt, yem_es_salescontrac_s.yem_contractnumbers_p", new QFilter[]{new QFilter("yem_es_salescontrac_s.yem_contractnumbers_p", "in", salesorderNo.keySet())}); + // 合同号-收汇金额合计 + Map receiveAmt = new HashMap<>(); + for (DynamicObject stBill : stOrder.values()) { + DynamicObjectCollection collection = stBill.getDynamicObjectCollection("yem_es_salescontrac_s"); + for (DynamicObject d : collection) { + BigDecimal rapamt = d.getBigDecimal("yem_rapamt"); + String contractnumbers = d.getString("yem_contractnumbers_p"); + BigDecimal calc; + if (receiveAmt.containsKey(contractnumbers)) { + calc = receiveAmt.get(contractnumbers).add(rapamt); + } else { + calc = rapamt; + } + receiveAmt.put(contractnumbers, calc); + } + } + for (Map.Entry salesorderEntry : salesorderNo.entrySet()) { + String billno = salesorderEntry.getKey(); + DynamicObject salesorder = salesorders.get(salesorderEntry.getValue()); + if (salesorder == null) continue; + BigDecimal climeAmt = PaymentControlUtil.getContractClimeAmt(salesorder, "F"); + if (receiveAmt.containsKey(billno)) { + BigDecimal receive = receiveAmt.get(billno); + if (receive.compareTo(climeAmt) < 0 && isClaimFinishedMap.containsKey(billno)) { + isClaimFinishedMap.put(billno, false); + } } } @@ -63,19 +107,23 @@ public class ExportPresentWarningTask extends AbstractTask { Date added = DateUtils.addDays(date, forward); subD.set("yem_shdreceivedate", added); String contractnum = subD.getString("yem_contractnum_c"); - if (isSendMessage) { - DynamicObject operator = subD.getDynamicObject("yem_operator_e"); - if (operator == null) continue; - long sendUser = operator.getLong("id"); - List list; - if (message.containsKey(sendUser)) { - list = message.get(sendUser); - } else { - list = new ArrayList<>(); - } - list.add(String.format("合同:%s,寄单放单单号:%s,应回款日期为:%s,请知悉!\n\r", contractnum, d.getString("billno"), DateUtils.getData(added, "yyyy-MM-dd"))); - message.put(sendUser, list); +// if (isSendMessage) { + // 以认领完成 + if (isClaimFinishedMap.containsKey(contractnum) && isClaimFinishedMap.get(contractnum)) { + continue; } + DynamicObject operator = subD.getDynamicObject("yem_operator_e"); + if (operator == null) continue; + long sendUser = operator.getLong("id"); + List list; + if (message.containsKey(sendUser)) { + list = message.get(sendUser); + } else { + list = new ArrayList<>(); + } + list.add(String.format("合同:%s,寄单放单单号:%s,应回款日期为:%s,请知悉!\n\r", contractnum, d.getString("billno"), DateUtils.getData(added, "yyyy-MM-dd"))); + message.put(sendUser, list); +// } } } } @@ -93,15 +141,18 @@ public class ExportPresentWarningTask extends AbstractTask { Long userid = sendMsg.getKey(); List messageContent = sendMsg.getValue(); ArrayList sendUserId = Lists.newArrayList(); - sendUserId.add(userid); +// sendUserId.add(userid);//销售员 sendUserId.addAll(devUserIds); YEM.sendMessage(sendUserId, "预警消息", "应回款日期预警", String.join("", messageContent), "预警消息"); } + + SaveServiceHelper.save(load); } /** * 当前日期是否是给定日期的十天后 + * * @return Boolean */ public static boolean isTenDaysAfter() {