From e12d9ed33863218b27282bfa6e84dc6fd1becd1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=B4=B5=E5=BC=BA?= Date: Thu, 26 Jun 2025 15:24:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BF=A1=E6=81=AF=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E5=8D=95-=E5=88=97=E8=A1=A8=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E9=94=81=E5=AE=9A=E5=BD=93=E5=89=8D=E5=8F=98=E6=9B=B4=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fi/fi/plugin/task/PayApplyFukuanTask.java | 68 ++++++++++++++++--- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java index bb82969..ccfe14e 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/PayApplyFukuanTask.java @@ -3,6 +3,7 @@ package shjh.jhzj7.fi.fi.plugin.task; import kd.bos.context.RequestContext; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.entity.operate.OperateOptionConst; import kd.bos.entity.operate.result.OperationResult; import kd.bos.exception.KDException; @@ -16,6 +17,8 @@ import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.sdk.plugin.Plugin; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.Map; /** @@ -47,20 +50,69 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin { // 不显示交互提示,自动执行到底 operateOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); // 全部校验通过才保存 - operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true)); + //operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true)); //同一个用户在多个界面操作同一张,也不允许操作 operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true)); for (DynamicObject dynamicObject : recBillMap.values()) { // 注意:executeOperate 需要一个数组形式的 DynamicObject[] - DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; - OperationResult operationResult = OperationServiceHelper.executeOperate("pushandsave", AP_PAYAPPLY, billArray, operateOption); - // 可以根据需要处理 operationResult,例如检查是否成功、获取返回值等 - if (operationResult.isSuccess()) { - logger.info("执行 pay 成功,单据编号:" + dynamicObject.getPkValue()); - } else { - logger.error(operationResult.getMessage()); + DynamicObjectCollection entry = dynamicObject.getDynamicObjectCollection("entry"); + if (entry!=null && entry.size()!=0){ + //判断是否集团内-境内外供应商 + DynamicObject dynamicObject1 = entry.get(0); + boolean supplierFilter = supplierFilter(dynamicObject1); + //判断是否存在数据在下推期间范围(到期日是当前月月底前) + boolean expirationDateFilter = expirationDateFilter(entry); + if (!supplierFilter && expirationDateFilter){ + DynamicObject[] billArray = new DynamicObject[]{dynamicObject}; + OperationResult operationResult = OperationServiceHelper.executeOperate("pushandsave", AP_PAYAPPLY, billArray, operateOption); + // 可以根据需要处理 operationResult,例如检查是否成功、获取返回值等 + if (operationResult.isSuccess()) { + logger.info("执行 pay 成功,单据编号:" + dynamicObject.getPkValue()); + } else { + logger.error(operationResult.getMessage()); + } + } } } } } + + private boolean supplierFilter(DynamicObject dynamicObject){ + boolean isFilterSupplier = false; + String asstacttype = dynamicObject.getString("e_asstacttype"); + if ("bd_supplier".equals(asstacttype)){ + DynamicObject asstact = dynamicObject.getDynamicObject("e_asstact"); + if (asstact!=null){ + //获取供应商分类映射 + QFilter qFilter1 = new QFilter("supplier.id", QCP.equals, asstact.getPkValue()); + DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle("bd_suppliergroupdetail", qFilter1.toArray()); + if (dynamicObject1!=null){ + String number = dynamicObject1.getString("group.number"); + if ("D200".equals(number) || "D201".equals(number)){ + isFilterSupplier=true; + } + } + } + } + return isFilterSupplier; + } + + private boolean expirationDateFilter(DynamicObjectCollection entry){ + boolean hasValidDueDate = false; // 默认false,表示没有符合条件的数据 + + // 获取当前月的最后一天(月底) + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + Date endOfCurrentMonth = calendar.getTime(); + + //遍历entry集合,检查是否有到期日小于等于当前月月底的数据 + for (DynamicObject object : entry) { + Date dueDate = object.getDate("e_duedate"); + if (dueDate != null && dueDate.compareTo(endOfCurrentMonth) <= 0) { + hasValidDueDate = true; // 找到符合条件的数据 + break; // 只要有一条符合就退出循环 + } + } + return hasValidDueDate; + } }