demand: 孟加拉国际手提漏组批次扫描未根据始发网点扫描bug修复 组批次完成后运单分批组删除完成状态

committer: heyu
This commit is contained in:
aike 2025-08-05 18:05:06 +08:00
parent d0407cf409
commit 9264bfb781
3 changed files with 43 additions and 16 deletions

View File

@ -20,4 +20,11 @@ public interface EmisWaybillBatchStatusMapper extends BaseMapper<EmisWaybillBatc
* @return 结果
*/
public int batchInsertEmisWaybillBatchStatus(List<EmisWaybillBatchStatus> batchStatusList);
/**
* 根据运单号列表批量删除批次状态
* @param billCodes 运单号列表
* @return 删除条数
*/
int deleteByBillCodes(@Param("billCodes") List<String> billCodes);
}

View File

@ -4462,7 +4462,8 @@ public class EmisBaseService {
}
}
public void filterBatchStatusList(List<EmisWaybillBatchStatus> batchStatusList, List<EmisTmsSiteBatchMiss> missRecords) {
public void filterBatchStatusList(List<EmisWaybillBatchStatus> batchStatusList,
List<EmisTmsSiteBatchMiss> missRecords) {
// 获取所有运单号
List<String> batchStatusBillCodes = batchStatusList.stream()
.map(EmisWaybillBatchStatus::getBillCode)
@ -4485,27 +4486,37 @@ public class EmisBaseService {
}
// 将waybill_batch_status=1的运单进行去重处理添加到漏组记录
Set<String> processedBillCodes = new HashSet<>();
if (CollectionUtil.isNotEmpty(missRecords)) {
for (EmisWaybillBatchStatus batchStatus : batchStatusList) {
if (filteredBillCodes.contains(batchStatus.getBillCode())
&& processedBillCodes.add(batchStatus.getBillCode())) {
// 创建漏组记录
EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss();
missRecord.setBillCode(batchStatus.getBillCode());
missRecord.setMissReason("运单分批后未组完");
missRecord.setMissType("4");
missRecord.setCreateBy("system");
missRecord.setCreateTime(new Date());
missRecord.setCreateSite("88888");
if (missRecords == null) {
missRecords = new ArrayList<>();
}
for (EmisWaybillBatchStatus batchStatus : batchStatusList) {
if (filteredBillCodes.contains(batchStatus.getBillCode())
&& processedBillCodes.add(batchStatus.getBillCode())) {
// 查询运单对应的批次号
List<String> batchNos = filteredBatchDtls.stream().filter(i -> batchStatus.getBillCode().equals(i.getBillCode())).map(EmisTmsSiteBatchDtl::getBatchNo).distinct().collect(Collectors.toList());
String batchNoStr = CollectionUtil.isNotEmpty(batchNos) ? String.join(",", batchNos) : "";
// 添加到漏组记录列表
missRecords.add(missRecord);
}
// 创建漏组记录
EmisTmsSiteBatchMiss missRecord = new EmisTmsSiteBatchMiss();
missRecord.setBillCode(batchStatus.getBillCode());
missRecord.setMissReason("运单分批后未组完,批次号:" + batchNoStr);
missRecord.setMissType("4");
missRecord.setCreateBy("system");
missRecord.setCreateTime(new Date());
missRecord.setCreateSite("88888");
// 添加到漏组记录列表
missRecords.add(missRecord);
}
}
// 从batchStatusList中剔除waybill_batch_status=1的运单
batchStatusList.removeIf(batchStatus -> filteredBillCodes.contains(batchStatus.getBillCode()));
if (CollectionUtil.isNotEmpty(filteredBillCodes)) {
emisWaybillBatchStatusMapper.deleteByBillCodes(new ArrayList<>(filteredBillCodes));
}
}
public void saveRecord(int totalProcessed, int successCount, int failCount, long processTime,

View File

@ -34,4 +34,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</insert>
<!-- 根据运单号列表批量删除批次状态 -->
<delete id="deleteByBillCodes" parameterType="java.util.List">
delete from emis_waybill_batch_status
where bill_code in
<foreach collection="billCodes" item="billCode" open="(" separator="," close=")">
#{billCode}
</foreach>
</delete>
</mapper>