From 5b48f25cc96a1d0facd6c93d7933c8402e9e58cd Mon Sep 17 00:00:00 2001 From: aike <17730485278@139.com> Date: Tue, 5 Aug 2025 10:42:54 +0800 Subject: [PATCH] =?UTF-8?q?demand:=20=20=20=20=E8=BF=90=E5=8D=95=E7=BB=84?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E5=88=86=E6=89=B9=E8=AE=BE=E7=BD=AE=E5=88=86?= =?UTF-8?q?=E6=89=B9=E7=8A=B6=E6=80=81=E5=8C=BA=E5=88=86=20committer:=20he?= =?UTF-8?q?yu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/emis/domain/EmisTmsSiteBatchDtl.java | 10 +-- .../mapper/EmisTmsSiteBatchDtlMapper.java | 32 ++++--- .../erp/emis/service/EmisBaseService.java | 3 +- .../impl/EmisTmsSiteBatchServiceImpl.java | 87 ++++++++++++------- .../mapper/EmisTmsSiteBatchDtlMapper.xml | 35 ++++++-- 5 files changed, 109 insertions(+), 58 deletions(-) diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchDtl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchDtl.java index 4ff17a5f3..8c1f7477c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchDtl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsSiteBatchDtl.java @@ -23,9 +23,9 @@ import com.xdadan.erp.common.core.domain.TreeEntity; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import lombok.Data; - /** * @ClassName EmisTmsSiteBatchDtl * @Description TMS组批次明细 @@ -33,8 +33,7 @@ import lombok.Data; * @date 2024-06-03 05:44:39 */ @Data -public class EmisTmsSiteBatchDtl extends BaseEntity -{ +public class EmisTmsSiteBatchDtl extends BaseEntity { private static final long serialVersionUID = 1L; /* id */ @@ -63,8 +62,9 @@ public class EmisTmsSiteBatchDtl extends BaseEntity private Integer batchParcelQty; /* 分批重量 */ private BigDecimal batchWeight; - /* 运单分批状态 1-已分批 0-未分批,默认为0 */ - private String blBatch; + /* 运单分批状态 1-已分批 0-未分批,2-分批完成 默认为0 */ + private String waybillBatchStatus; + // 扩展参数 private EmisWaybill waybillDetail; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchDtlMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchDtlMapper.java index 1ff4b802c..7c69d9f7c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchDtlMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchDtlMapper.java @@ -18,40 +18,43 @@ import org.apache.ibatis.annotations.Param; /** * @ClassName EmisTmsSiteBatchDtlMapper - * @Description

一级网点TMS组批次明细 Mapper 接口

+ * @Description + *

+ * 一级网点TMS组批次明细 Mapper 接口 + *

* @author linfso * @date 2024-03-01 08:54:57 */ -public interface EmisTmsSiteBatchDtlMapper extends BaseMapper -{ +public interface EmisTmsSiteBatchDtlMapper extends BaseMapper { /** * 主键查询 - * @param id - * @return + * + * @param id + * @return */ public EmisTmsSiteBatchDtl selectEmisTmsSiteBatchDtlById(Long id); /** * 查询列表 * - * @param emisTmsSiteBatchDtl + * @param emisTmsSiteBatchDtl * @return 集合 */ public List selectEmisTmsSiteBatchDtlList(EmisTmsSiteBatchDtl emisTmsSiteBatchDtl); /** - * 新增 + * 新增 * * @param emisTmsSiteBatchDtl - * @return + * @return */ public int insertEmisTmsSiteBatchDtl(EmisTmsSiteBatchDtl emisTmsSiteBatchDtl); /** * 修改 * - * @param emisTmsSiteBatchDtl - * @return + * @param emisTmsSiteBatchDtl + * @return */ public int updateEmisTmsSiteBatchDtl(EmisTmsSiteBatchDtl emisTmsSiteBatchDtl); @@ -81,6 +84,7 @@ public interface EmisTmsSiteBatchDtlMapper extends BaseMapper batchNos, @Param("billCode") String billCode); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 3597a0562..2aca71776 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -5368,7 +5368,8 @@ public class EmisBaseService { // 构建查询条件:根据运单号和bl_batch=1查询批次详情 EmisTmsSiteBatchDtl queryCondition = new EmisTmsSiteBatchDtl(); queryCondition.setBillCode(emisWaybillSave.getBillCode()); - queryCondition.setBlBatch("1"); // 已分批状态 + List waybillBatchStatusList = Arrays.asList("1", "2"); + queryCondition.getParams().put("waybillBatchStatusList",waybillBatchStatusList); // 已分批状态 // 查询批次详情表 List batchDtlList = emisTmsSiteBatchDtlMapper diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java index 31ca48dbf..dd12d4f06 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsSiteBatchServiceImpl.java @@ -1,12 +1,12 @@ - /** - * @Project: emis - * @Title: EmisTmsSiteBatchServiceImpl.java - * @author linfso - * @date 2024-03-01 08:54:56 - * @Copyright: ShangHai Duta 2022 All rights reserved. - * @version v1.0 - * @Description:

一级网点TMS组批次 实体类

- */ +/** +* @Project: emis +* @Title: EmisTmsSiteBatchServiceImpl.java +* @author linfso +* @date 2024-03-01 08:54:56 +* @Copyright: ShangHai Duta 2022 All rights reserved. +* @version v1.0 +* @Description:

一级网点TMS组批次 实体类

+*/ package com.xdadan.erp.emis.service.impl; @@ -75,7 +75,7 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi */ @Override public Object getAuditObjectById(Object id) { - EmisTmsSiteBatch emisTmsSiteBatch = emisTmsSiteBatchMapper.selectEmisTmsSiteBatchById((Long)id); + EmisTmsSiteBatch emisTmsSiteBatch = emisTmsSiteBatchMapper.selectEmisTmsSiteBatchById((Long) id); return emisTmsSiteBatch; } @@ -86,14 +86,12 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi * @return 一级网点TMS组批次 */ @Override - public EmisTmsSiteBatch selectEmisTmsSiteBatchById(Long id) - { + public EmisTmsSiteBatch selectEmisTmsSiteBatchById(Long id) { return emisTmsSiteBatchMapper.selectEmisTmsSiteBatchById(id); } @Override - public List selectTmsSiteBatchBySupplerAndCarNo(String supplierCode,String carNo, Date etd) - { + public List selectTmsSiteBatchBySupplerAndCarNo(String supplierCode, String carNo, Date etd) { EmisTmsSiteBatch emisTmsSiteBatch = new EmisTmsSiteBatch(); emisTmsSiteBatch.setSupplierCode(supplierCode); emisTmsSiteBatch.setCarNo(carNo); @@ -104,8 +102,8 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi @Override public List selectTmsSiteBatchBySiteAndBillCode(String startSiteCode, String nextSiteCode, - String billCode, Long id) { - return emisTmsSiteBatchMapper.selectTmsSiteBatchBySiteAndBillCode(startSiteCode, nextSiteCode, billCode,id); + String billCode, Long id) { + return emisTmsSiteBatchMapper.selectTmsSiteBatchBySiteAndBillCode(startSiteCode, nextSiteCode, billCode, id); } /** @@ -163,23 +161,23 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi } - private void checkItemDtl(EmisTmsSiteBatch oldSiteBatch, EmisTmsSiteBatchDtl itemDtl, EmisWaybill emisWaybill, + private void checkItemDtl(EmisTmsSiteBatch oldSiteBatch, EmisTmsSiteBatchDtl itemDtl, EmisWaybill emisWaybill, EmisTransPlanRule rule) throws EmisBizError { // 安全比较:检查批次数据是否与运单数据完全一致 boolean isParcelQtyEqual = Objects.equals(emisWaybill.getParcelQty(), itemDtl.getBatchParcelQty()); // 重量比较:使用compareTo方法比较大小是否相等 - boolean isWeightEqual = emisWaybill.getBillWeight() != null && itemDtl.getBatchWeight() != null + boolean isWeightEqual = emisWaybill.getBillWeight() != null && itemDtl.getBatchWeight() != null && emisWaybill.getBillWeight().compareTo(itemDtl.getBatchWeight()) == 0; // 体积比较:使用compareTo方法比较大小是否相等 - boolean isVolumeEqual = emisWaybill.getTotalVolume() != null && itemDtl.getBatchVolume() != null + boolean isVolumeEqual = emisWaybill.getTotalVolume() != null && itemDtl.getBatchVolume() != null && emisWaybill.getTotalVolume().compareTo(itemDtl.getBatchVolume()) == 0; - + if (isParcelQtyEqual && isWeightEqual && isVolumeEqual) { checkUnique(oldSiteBatch, itemDtl.getBillCode()); return; } - itemDtl.setBlBatch("1"); + itemDtl.setWaybillBatchStatus("1"); // 校验批次重量、件数、体积都得大于0 if (itemDtl.getBatchWeight() == null || itemDtl.getBatchWeight().compareTo(BigDecimal.ZERO) <= 0) { @@ -300,12 +298,15 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi if (matchingBatch != null) { // 检查批次重量、体积、件数是否一致 - boolean isBatchWeightEqual = matchingBatch.getTotalWeight() != null && itemDtl.getBatchWeight() != null + boolean isBatchWeightEqual = matchingBatch.getTotalWeight() != null + && itemDtl.getBatchWeight() != null && matchingBatch.getTotalWeight().compareTo(itemDtl.getBatchWeight()) == 0; - boolean isBatchVolumeEqual = matchingBatch.getTotalVolume() != null && itemDtl.getBatchVolume() != null + boolean isBatchVolumeEqual = matchingBatch.getTotalVolume() != null + && itemDtl.getBatchVolume() != null && matchingBatch.getTotalVolume().compareTo(itemDtl.getBatchVolume()) == 0; - boolean isBatchParcelQtyEqual = Objects.equals(matchingBatch.getTotalParcelQty(), itemDtl.getBatchParcelQty()); - + boolean isBatchParcelQtyEqual = Objects.equals(matchingBatch.getTotalParcelQty(), + itemDtl.getBatchParcelQty()); + if (!isBatchWeightEqual || !isBatchVolumeEqual || !isBatchParcelQtyEqual) { throw new EmisBizError(EmisBizErrorType.FAIL, itemDtl.getBillCode() + "的批次重量、体积、件数与批次" + matchingBatch.getBatchNo() + "不一致,请检查后重新录入"); @@ -314,6 +315,27 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi } } + + // 安全比较:检查批次数据是否与运单数据完全一致 + boolean isTotalParcelQtyEqual = Objects.equals(emisWaybill.getParcelQty(), totalParcelQty); + // 重量比较:使用compareTo方法比较大小是否相等 + boolean isTotalWeightEqual = emisWaybill.getBillWeight() != null + && emisWaybill.getBillWeight().compareTo(totalWeight) == 0; + // 体积比较:使用compareTo方法比较大小是否相等 + boolean isTotalVolumeEqual = emisWaybill.getTotalVolume() != null + && emisWaybill.getTotalVolume().compareTo(totalVolume) == 0; + + if (isTotalParcelQtyEqual && isTotalWeightEqual && isTotalVolumeEqual) { + // 设置批次状态为2(已完成) + itemDtl.setWaybillBatchStatus("2"); + List batchNos = allBatches.stream().map(EmisTmsSiteBatch::getBatchNo).distinct() + .collect(Collectors.toList()); + if (CollectionUtil.isEmpty(batchNos)) { + return; + } + // 根据运单号和批次号更新批次状态为2 + emisTmsSiteBatchDtlMapper.updatetWaybillBatchStatus(batchNos, itemDtl.getBillCode()); + } } private static void checkVirtual(String billCode, EmisWaybill emisWaybill) throws EmisBizError { @@ -360,10 +382,11 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi */ @Override public int updateEmisTmsSiteBatch(EmisTmsSiteBatch emisTmsSiteBatch) throws EmisBizError { -// List emisWaybills = emisTmsSiteBatchDtlMapper.selectEmisWayBillByBatchNo(emisTmsSiteBatch.getBatchNo()); -// for (EmisWaybill emisWaybill : emisWaybills) { -// checkUnique(emisTmsSiteBatch, emisWaybill.getBillCode()); -// } + // List emisWaybills = + // emisTmsSiteBatchDtlMapper.selectEmisWayBillByBatchNo(emisTmsSiteBatch.getBatchNo()); + // for (EmisWaybill emisWaybill : emisWaybills) { + // checkUnique(emisTmsSiteBatch, emisWaybill.getBillCode()); + // } return emisTmsSiteBatchMapper.updateEmisTmsSiteBatch(emisTmsSiteBatch); } @@ -374,8 +397,7 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi * @return 结果 */ @Override - public int deleteEmisTmsSiteBatchByIds(Long[] ids) - { + public int deleteEmisTmsSiteBatchByIds(Long[] ids) { return emisTmsSiteBatchMapper.deleteEmisTmsSiteBatchByIds(ids); } @@ -386,8 +408,7 @@ public class EmisTmsSiteBatchServiceImpl extends EmisBaseService implements IEmi * @return 结果 */ @Override - public int deleteEmisTmsSiteBatchById(Long id) - { + public int deleteEmisTmsSiteBatchById(Long id) { return emisTmsSiteBatchMapper.deleteEmisTmsSiteBatchById(id); } diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml index a35954e88..2b7407f58 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchDtlMapper.xml @@ -16,7 +16,7 @@ - + @@ -30,7 +30,7 @@ - select id, bill_code, batch_no, scan_date, scan_status, group_status, scan_man, scan_site, batch_volume, batch_parcel_qty, batch_weight, bl_batch, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_site_batch_dtl + select id, bill_code, batch_no, scan_date, scan_status, group_status, scan_man, scan_site, batch_volume, batch_parcel_qty, batch_weight, waybill_batch_status, remark, tenant_id, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_site_batch_dtl @@ -128,7 +134,7 @@ batch_volume, batch_parcel_qty, batch_weight, - bl_batch, + waybill_batch_status, remark, tenant_id, del_flag, @@ -150,7 +156,7 @@ #{batchVolume}, #{batchParcelQty}, #{batchWeight}, - #{blBatch}, + #{waybillBatchStatus}, #{remark}, #{tenantId}, #{delFlag}, @@ -176,7 +182,7 @@ batch_volume = #{batchVolume}, batch_parcel_qty = #{batchParcelQty}, batch_weight = #{batchWeight}, - bl_batch = #{blBatch}, + waybill_batch_status = #{waybillBatchStatus}, remark = #{remark}, tenant_id = #{tenantId}, del_flag = #{delFlag}, @@ -203,7 +209,7 @@