新增定时任务,更新付款申请以及付款单资金计划科目

--s
This commit is contained in:
weiyunlong 2025-07-09 15:51:08 +08:00
parent 304d6c39cd
commit e5b971b84f
3 changed files with 81 additions and 3 deletions

View File

@ -91,7 +91,7 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem
}
}
private DynamicObject xdMembersubject(DynamicObject bill){
public static DynamicObject xdMembersubject(DynamicObject bill){
//SAP应付凭证生成付款申请单后系统自动根据配置表(shjh_request_account)带出资金计划科目
QFilter qFilter = new QFilter("shjh_biztype", QCP.equals,"A");//业务类型:付款
qFilter.and(new QFilter("enable", QCP.equals, "1"));//启用
@ -364,7 +364,7 @@ public class PayApplySaveOperation extends AbstractOperationServicePlugIn implem
return null;
}
private String queryDyobj(QFilter qFilter){
public static String queryDyobj(QFilter qFilter){
String dyobj = "";
DynamicObject[] load = BusinessDataServiceHelper.load("shjh_request_account",
"id,shjh_membersubject", qFilter.toArray());

View File

@ -120,7 +120,7 @@ public class PayBillSaveOperation extends AbstractOperationServicePlugIn impleme
}
}
private DynamicObject xdMembersubject(DynamicObject bill){
public static DynamicObject xdMembersubject(DynamicObject bill){
//付款单系统自动根据配置表(shjh_pay_account)带出资金计划科目
QFilter qFilter = new QFilter("shjh_biztype", QCP.equals,"A");//业务类型:付款
qFilter.and(new QFilter("enable", QCP.equals, "1"));//启用

View File

@ -0,0 +1,78 @@
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.entity.operate.OperateOptionConst;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.exception.KDException;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
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.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.Map;
import static shjh.jhzj7.fi.fi.plugin.operate.PayBillSaveOperation.xdMembersubject;
public class ZjjhTask extends AbstractTask implements Plugin {
private final static Log logger = LogFactory.getLog(ZjjhTask.class);
@Override
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
QFilter q1 = new QFilter("paymentidentify.number", QCP.equals, "FKBS02");//付款标识为被动付款
QFilter q2 = new QFilter("paymentidentify.number", QCP.equals, "FKBS01");//付款标识为主动付款
QFilter q3 = new QFilter("shjh_sourcesystem", QCP.equals, "A");//来源系统,A_sap,B_fk
QFilter q4 = new QFilter("shjh_sourcesystem", QCP.equals, "B");//来源系统,A_sap,B_fk
QFilter filter = q1.or(q2.and(q3.or(q4)));//filter条件为被动付款 或者 主动付款且来源系统为sap或费控
DynamicObject[] paybills = BusinessDataServiceHelper.load("cas_paybill", "id", filter.toArray());
if (paybills.length!=0){
ArrayList<Long> ids = new ArrayList<>();
for (DynamicObject dynamicObject : paybills) {
ids.add(dynamicObject.getLong("id"));
}
Map<Object, DynamicObject> recBillMap = BusinessDataServiceHelper.loadFromCache(ids.toArray(), "cas_paybill");
OperateOption operateOption = OperateOption.create();
// 不执行警告级别校验器
operateOption.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true));
// 不显示交互提示自动执行到底
operateOption.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true));
// 全部校验通过才保存
operateOption.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(true));
//同一个用户在多个界面操作同一张也不允许操作
operateOption.setVariableValue(OperateOptionConst.MUTEX_ISSTRICT, String.valueOf(true));
for (DynamicObject cas_paybill : recBillMap.values()) {
String string = cas_paybill.getString("paymentidentify.number");
//被动 如果是被动付款则将现有付款单保存操作后获取资金计划科目的代码直接复制拷贝至此
if ("FKBS02".equals(string)) {
cas_paybill.set("shjh_membersubject", xdMembersubject(cas_paybill));
SaveServiceHelper.save(new DynamicObject[]{cas_paybill});
}
//主动 如果是主动付款根据付款单查找到上游某一个付款申请单即可再根据付款申请单对象将现有付款申请单保存操作后获取资金计划科目的代码直接复制拷贝至此
if ("FKBS01".equals(string)) {
long sourcebillid = cas_paybill.getLong("sourcebillid");
//根据付款单查找到上游某一个付款申请单即可
DynamicObject payapply = BusinessDataServiceHelper.loadSingle(sourcebillid, "ap_payapply");
if (null != payapply) {
DynamicObject xdMembersubject = xdMembersubject(payapply);
payapply.set("shjh_membersubject",xdMembersubject);
SaveServiceHelper.save(new DynamicObject[]{payapply});
//将现有付款申请单保存操作后获取资金计划科目的代码直接复制拷贝至此
cas_paybill.set("shjh_membersubject", xdMembersubject);
SaveServiceHelper.save(new DynamicObject[]{cas_paybill});
}
}
}
}
}
}