支付信息变更单-列表过滤锁定当前变更人

This commit is contained in:
李贵强 2025-06-26 15:24:16 +08:00
parent 9361e4ec6e
commit e12d9ed338
1 changed files with 60 additions and 8 deletions

View File

@ -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;
}
}