优化排程合并提示

s
This commit is contained in:
weiyunlong 2025-05-19 12:05:48 +08:00
parent a3f6b8512a
commit 0fe09139c2
1 changed files with 36 additions and 22 deletions

View File

@ -19,6 +19,7 @@ import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
/**
* 排程单据合并/解除
@ -135,30 +136,43 @@ public class SchedulebillMergeOperation extends AbstractOperationServicePlugIn i
map.computeIfAbsent(rule, k -> new ArrayList<>()).add(bill);
}
}
// assignBatchNumbersAndSave(map);
List<Long> longs = new ArrayList<>();
map.forEach((k, v) -> {
int a = 0;
Map<Long, List<DynamicObject>> hashMap = new HashMap<>();
Map<Long, StringBuilder> billNoMap = new HashMap<>(); // 用于记录每个批次的单据编号
// 遍历原始Map处理数据
for (Map.Entry<StringBuilder, List<DynamicObject>> entry : map.entrySet()) {
long l = System.currentTimeMillis();
longs.add(l);
List<DynamicObject> v = entry.getValue();
// 初始化当前批次的单据编号收集器
StringBuilder billno = new StringBuilder();
for (DynamicObject bill : v) {
bill.set("batchnum", "" + l);
bill.set("shjh_ishb", true);
a++;
// 收集单据编号提前处理避免后续重复遍历
billno.append(bill.getString("billno")).append(",");
}
// 保存单据编号收集结果
billNoMap.put(l, billno);
// 保存处理后的单据列表到结果Map
hashMap.put(l, v);
SaveServiceHelper.save(v.toArray(new DynamicObject[0]));
});
int size = map.size();//合并的数
StringBuilder sb = new StringBuilder();
for (Long aLong : longs) {
sb.append(aLong).append(",");
}
// this.getOperationResult().setSuccess(true);
// this.getOperationResult().setMessage("合并数:" + size + " 合并的批次号:" + sb);
// this.getOperationResult().setShowMessage(true);
int size = hashMap.size(); // 合并的数
StringBuilder sb = new StringBuilder("合并操作结果为:成功" + a + "条,生成合并单共" + size + "张。\n ");
for (Map.Entry<Long, StringBuilder> entry : billNoMap.entrySet()) {
Long key = entry.getKey();
StringBuilder billno = entry.getValue();
// 移除最后多余的逗号
if (billno.length() > 0) {
billno.deleteCharAt(billno.length() - 1);
}
sb.append("单据编号为").append(billno).append("的单据:生成合并单").append(key).append("成功\n ");
}
OperateErrorInfo operateErrorInfo = new OperateErrorInfo();
operateErrorInfo.setMessage("合并数:" + size + "\n 合并的批次号:" + sb);
operateErrorInfo.setMessage(sb.toString());
operateErrorInfo.setErrorLevel(ErrorLevel.Error.name());
// operateErrorInfo.setPkValue(bill.getPkValue());
this.operationResult.addErrorInfo(operateErrorInfo);
return;
}