如果付款申请单有下游排程单且排程单是已退单,则说明这个付款申请单不用再下推了

This commit is contained in:
yuxueliang0813 2025-07-09 17:26:12 +08:00
parent 502fedf8b5
commit 82b76f0756
1 changed files with 22 additions and 6 deletions

View File

@ -13,6 +13,7 @@ import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.schedule.executor.AbstractTask;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.sdk.plugin.Plugin;
@ -51,18 +52,20 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin {
//同一个用户在多个界面操作同一张也不允许操作
operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true));
List<DynamicObject> qualifiedBills = new ArrayList<>();
List<DynamicObject> qualifiedBills = new ArrayList<>();//需要下推的付款申请单的集合
DynamicObjectCollection entry;
boolean scheduleflag;
for (DynamicObject dynamicObject : recBillMap.values()) {
// 注意executeOperate 需要一个数组形式的 DynamicObject[]
DynamicObjectCollection entry = dynamicObject.getDynamicObjectCollection("entry");
entry = dynamicObject.getDynamicObjectCollection("entry");
if (entry!=null && entry.size()!=0){
//判断是否集团内-境内外供应商(外部系统单据类型=I,返回false)
DynamicObject entryObj = entry.get(0);
boolean supplierFilter = supplierFilter(dynamicObject,entryObj);
boolean supplierFilter = supplierFilter(dynamicObject,entry.get(0));
//判断是否存在数据在下推期间范围到期日是当前月月底前
boolean expirationDateFilter = expirationDateFilter(entry);
if (!supplierFilter && expirationDateFilter){
//如果付款申请单有下游排程单且排程单是已退单则说明这个付款申请单不用再下推了
scheduleflag = scheduleFilter(dynamicObject.getLong("id"));
if (!supplierFilter && expirationDateFilter && scheduleflag){
qualifiedBills.add(dynamicObject);
}
}
@ -86,6 +89,19 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin {
}
}
private boolean scheduleFilter(Long payrequestid){
//如果付款申请单有下游排程单且排程单是已退单则说明这个付款申请单不用再下推了返回false
//否则返回true继续下推
//付款申请单的id存于排程单的sourcebillid中 如果id无效果则用sourcebillnumber 对应付款申请单的billno
QFilter sqfilter = new QFilter("sourcebillid", QCP.equals, payrequestid);
sqfilter.and("schedulstatus", QCP.equals, "yetchargeback");//排程状态已退单
if (QueryServiceHelper.exists("psd_schedulebill", sqfilter.toArray())) {
return false;
}
return true;
}
//entry为付款申请单的第一行
private boolean supplierFilter(DynamicObject dynamicObject,DynamicObject entry){
boolean isFilterSupplier = false;
//如果外部系统单据类型=I,直接返回false