demand: 定时扫描任务优化

committer: heyu
This commit is contained in:
aike 2025-05-16 17:59:43 +08:00
parent 61bcf29a97
commit 318e635cce

View File

@ -244,7 +244,8 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
} }
} }
private void saveRecord(int totalProcessed, int successCount, int failCount, long processTime, List<String> failedBillCodes) { private void saveRecord(int totalProcessed, int successCount, int failCount, long processTime,
List<String> failedBillCodes) {
EmisTmsSiteBatchMissRecord record = new EmisTmsSiteBatchMissRecord(); EmisTmsSiteBatchMissRecord record = new EmisTmsSiteBatchMissRecord();
record.setTotalProcessed(totalProcessed); record.setTotalProcessed(totalProcessed);
record.setSuccessCount(successCount); record.setSuccessCount(successCount);
@ -299,7 +300,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
} }
private ProcessResult processWaybillBatch(List<EmisWaybill> waybills, private ProcessResult processWaybillBatch(List<EmisWaybill> waybills,
Map<String, List<EmisTransPlanRule>> transPlanRulesByLineCode) { Map<String, List<EmisTransPlanRule>> transPlanRulesByLineCode) {
int successCount = 0; int successCount = 0;
int failCount = 0; int failCount = 0;
List<String> failedBillCodes = new ArrayList<>(); List<String> failedBillCodes = new ArrayList<>();
@ -328,7 +329,8 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
for (EmisWaybill waybill : waybills) { for (EmisWaybill waybill : waybills) {
try { try {
// 获取运单对应的线路规划 // 获取运单对应的线路规划
List<EmisTransPlanRule> ruleListByTransLineType = transPlanRulesByLineCode.get(waybill.getTransLineType()); List<EmisTransPlanRule> ruleListByTransLineType = transPlanRulesByLineCode
.get(waybill.getTransLineType());
if (CollectionUtil.isEmpty(ruleListByTransLineType)) { if (CollectionUtil.isEmpty(ruleListByTransLineType)) {
// 创建漏组记录 // 创建漏组记录
EmisTmsSiteBatchMiss miss = createMissRecord(waybill); EmisTmsSiteBatchMiss miss = createMissRecord(waybill);
@ -358,9 +360,6 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
// 创建漏组记录 // 创建漏组记录
EmisTmsSiteBatchMiss miss = createMissRecord(waybill); EmisTmsSiteBatchMiss miss = createMissRecord(waybill);
miss.setMissReason("当前运单没有组批次"); miss.setMissReason("当前运单没有组批次");
// miss.setTransPlanRuleId(ruleListByTransLineType.stream()
// .sorted(Comparator.comparing(EmisTransPlanRule::getId))
// .collect(Collectors.toList()).get(0).getId());
missRecords.add(miss); missRecords.add(miss);
successCount++; successCount++;
continue; continue;
@ -476,6 +475,26 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
return false; return false;
} }
/**
* 比较两个供应商代码字符串是否包含相同的供应商(忽略顺序)
*
* @param supplierCode1 第一个供应商代码字符串
* @param supplierCode2 第二个供应商代码字符串
* @return 如果包含相同的供应商返回true,否则返回false
*/
private boolean compareSupplierCodes(String supplierCode1, String supplierCode2) {
if (supplierCode1 == null || supplierCode2 == null) {
return supplierCode1 == supplierCode2;
}
Set<String> suppliers1 = Arrays.stream(supplierCode1.split(","))
.map(String::trim)
.collect(Collectors.toSet());
Set<String> suppliers2 = Arrays.stream(supplierCode2.split(","))
.map(String::trim)
.collect(Collectors.toSet());
return suppliers1.equals(suppliers2);
}
private boolean checkRule(EmisTransPlanRule rule, List<EmisTmsSiteBatch> waybillBatches, private boolean checkRule(EmisTransPlanRule rule, List<EmisTmsSiteBatch> waybillBatches,
List<EmisTransPlanRule> list) { List<EmisTransPlanRule> list) {
// 检查当前节点是否匹配 // 检查当前节点是否匹配
@ -483,7 +502,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
for (EmisTmsSiteBatch batch : waybillBatches) { for (EmisTmsSiteBatch batch : waybillBatches) {
if (rule.getStartSiteCode().equals(batch.getStartSiteCode()) && if (rule.getStartSiteCode().equals(batch.getStartSiteCode()) &&
rule.getNextSiteCode().equals(batch.getNextSiteCode()) && rule.getNextSiteCode().equals(batch.getNextSiteCode()) &&
rule.getSupplierCode().equals(batch.getSupplierCode()) compareSupplierCodes(rule.getSupplierCode(), batch.getSupplierCode())
&& batch.getEtd().before(rule.getEndDate()) && batch.getEtd().before(rule.getEndDate())
&& !batch.getEtd().before(rule.getStartDate())) { && !batch.getEtd().before(rule.getStartDate())) {
currentMatch = true; currentMatch = true;
@ -514,7 +533,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
boolean isMatched = filterRules.stream() boolean isMatched = filterRules.stream()
.anyMatch(filterRule -> filterRule.getStartSiteCode().equals(rule.getStartSiteCode()) && .anyMatch(filterRule -> filterRule.getStartSiteCode().equals(rule.getStartSiteCode()) &&
filterRule.getNextSiteCode().equals(rule.getNextSiteCode()) && filterRule.getNextSiteCode().equals(rule.getNextSiteCode()) &&
filterRule.getSupplierCode().equals(rule.getSupplierCode())); compareSupplierCodes(filterRule.getSupplierCode(), rule.getSupplierCode()));
if (!isMatched) { if (!isMatched) {
// 创建漏组记录 // 创建漏组记录
@ -543,7 +562,7 @@ public class EmisTmsSiteBatchMissServiceImpl extends EmisBaseService implements
.anyMatch( .anyMatch(
filterRule -> filterRule.getStartSiteCode().equals(childRule.getStartSiteCode()) && filterRule -> filterRule.getStartSiteCode().equals(childRule.getStartSiteCode()) &&
filterRule.getNextSiteCode().equals(childRule.getNextSiteCode()) && filterRule.getNextSiteCode().equals(childRule.getNextSiteCode()) &&
filterRule.getSupplierCode().equals(childRule.getSupplierCode()))); compareSupplierCodes(filterRule.getSupplierCode(), childRule.getSupplierCode())));
if (!hasMatchedChild) { if (!hasMatchedChild) {
// 如果所有子节点都不匹配,为每个子节点创建漏组记录 // 如果所有子节点都不匹配,为每个子节点创建漏组记录