- 合并排程优化

--s
This commit is contained in:
weiyunlong 2025-04-21 14:37:11 +08:00
parent 4761a107f1
commit 53950f5809
1 changed files with 54 additions and 2 deletions

View File

@ -6,6 +6,7 @@ import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.args.AfterOperationArgs; import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.entity.validate.AbstractValidator; import kd.bos.entity.validate.AbstractValidator;
import kd.bos.logging.Log; import kd.bos.logging.Log;
import kd.bos.logging.LogFactory; import kd.bos.logging.LogFactory;
@ -18,7 +19,7 @@ import java.math.BigDecimal;
import java.util.*; import java.util.*;
/** /**
* 排程单据合并 * 排程单据合并/解除
* :shjh_psd_schedulebill_ext * :shjh_psd_schedulebill_ext
* 操作标识:shjh_pcbillhb * 操作标识:shjh_pcbillhb
*/ */
@ -73,10 +74,38 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i
}); });
} }
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
super.beforeExecuteOperationTransaction(e);
//重新排程前将合并状态置为false,并将合并批次号置空(若为二开干预的合并排程单)
String operationKey = e.getOperationKey();
if ("afreshsche".equals(operationKey)) {
DynamicObject[] dataEntities = e.getDataEntities();
// 提前加载所有 bill 对象
DynamicObject[] loadedBills = loadAllBills(dataEntities);
for (DynamicObject loadedBill : loadedBills) {
boolean shjhIshb = loadedBill.getBoolean("shjh_ishb");//是否进行排查单据合并
if (shjhIshb) {
//通过批次号查找所有同一批的排程单
String batchnum = loadedBill.getString("batchnum");
if (!batchnum.isEmpty()) {
DynamicObject[] sameBills = BusinessDataServiceHelper.load("psd_schedulebill","id,batchnum,shjh_ishb",
new QFilter[]{new QFilter("batchnum", "=", batchnum)});
for (DynamicObject sameBill : sameBills) {
sameBill.set("batchnum", "");
sameBill.set("shjh_ishb", false);
SaveServiceHelper.save(new DynamicObject[]{sameBill});
}
}
}
}
}
}
@Override @Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) { public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e); super.afterExecuteOperationTransaction(e);
//排程任务池列表界面上增加一键合并按钮点击后将来源系统为sap的按照合并规则进行合并 //排程任务池列表界面上增加一键合并按钮点击后将来源系统为sap的按照合并规则进行合并 并将合并状态置为true
String operationKey = e.getOperationKey(); String operationKey = e.getOperationKey();
if ("shjh_pcbillhb".equals(operationKey)) { if ("shjh_pcbillhb".equals(operationKey)) {
DynamicObject[] dataEntities = e.getDataEntities(); DynamicObject[] dataEntities = e.getDataEntities();
@ -107,6 +136,28 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i
assignBatchNumbersAndSave(map); assignBatchNumbersAndSave(map);
} }
} }
// 合并解除:若合并批次号不为空,且为二开干预的合并排程单,则将合并批次号置空,并将合并状态置为false
if ("shjh_pcbilljchb".equals(operationKey)) {
DynamicObject[] dataEntities = e.getDataEntities();
// 提前加载所有 bill 对象
DynamicObject[] loadedBills = loadAllBills(dataEntities);
for (DynamicObject loadedBill : loadedBills) {
boolean shjhIshb = loadedBill.getBoolean("shjh_ishb");//是否进行排查单据合并
if (shjhIshb) {
//通过批次号查找所有同一批的排程单
String batchnum = loadedBill.getString("batchnum");
if (!batchnum.isEmpty()) {
DynamicObject[] sameBills = BusinessDataServiceHelper.load("psd_schedulebill","id,batchnum,shjh_ishb",
new QFilter[]{new QFilter("batchnum", "=", batchnum)});
for (DynamicObject sameBill : sameBills) {
sameBill.set("batchnum", "");
sameBill.set("shjh_ishb", false);
SaveServiceHelper.save(new DynamicObject[]{sameBill});
}
}
}
}
}
} }
@ -143,6 +194,7 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i
long l = System.currentTimeMillis(); long l = System.currentTimeMillis();
for (DynamicObject bill : v) { for (DynamicObject bill : v) {
bill.set("batchnum", "" + l); bill.set("batchnum", "" + l);
bill.set("shjh_ishb", true);
} }
SaveServiceHelper.save(v.toArray(new DynamicObject[0])); SaveServiceHelper.save(v.toArray(new DynamicObject[0]));
}); });