付款申请自动下推:增加过滤、批量下推

This commit is contained in:
李贵强 2025-06-26 15:53:32 +08:00
parent e12d9ed338
commit 585d18afd8
1 changed files with 21 additions and 13 deletions

View File

@ -16,10 +16,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
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;
import java.util.*;
/**
* 定时任务 付款申请定时生成付款单
@ -36,7 +33,6 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin {
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
// 单据状态=已审核
QFilter qFilter = new QFilter("billstatus", QCP.equals, "C");
DynamicObject[] collection = BusinessDataServiceHelper.load(AP_PAYAPPLY, "id,billstatus", qFilter.toArray());
if (collection.length!=0){
ArrayList<Long> ids = new ArrayList<>();
@ -53,6 +49,9 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin {
//operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true));
//同一个用户在多个界面操作同一张也不允许操作
operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true));
List<DynamicObject> qualifiedBills = new ArrayList<>();
for (DynamicObject dynamicObject : recBillMap.values()) {
// 注意executeOperate 需要一个数组形式的 DynamicObject[]
DynamicObjectCollection entry = dynamicObject.getDynamicObjectCollection("entry");
@ -63,17 +62,26 @@ public class PayApplyFukuanTask extends AbstractTask implements Plugin {
//判断是否存在数据在下推期间范围到期日是当前月月底前
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());
}
qualifiedBills.add(dynamicObject);
}
}
}
if (!qualifiedBills.isEmpty()){
DynamicObject[] billArray = qualifiedBills.toArray(new DynamicObject[0]);
OperationResult operationResult = OperationServiceHelper.executeOperate("pushandsave", AP_PAYAPPLY, billArray, operateOption);
// 可以根据需要处理 operationResult例如检查是否成功获取返回值等
if (operationResult.isSuccess()) {
logger.info("执行 pay 成功,共处理单据数量:" + qualifiedBills.size());
// Log individual successful bills if needed
for (DynamicObject bill : qualifiedBills) {
logger.info("成功单据编号:" + bill.getPkValue());
}
} else {
logger.error("批量下推失败:" + operationResult.getMessage());
}
}else {
logger.info("没有符合条件的单据需要下推");
}
}
}