From 26c834780c63bb1bdef88f4ad248a23bda7096db Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 22 Jun 2026 13:25:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E8=AE=A2=E5=8D=95=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E6=97=B6=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0=E9=92=A2?= =?UTF-8?q?=E5=8D=B7=E7=9A=84=E4=B8=9A=E5=8A=A1=E5=91=98=E5=92=8C=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 CrmOrderServiceImpl 中查询旧订单时同时获取原合同编号 - 当销售员或合同编号变更时同步更新关联钢卷的业务员名称和合同编号 - 在 WmsCoilContractRelMapper 中新增批量更新钢卷业务员和合同编号的方法 - 为钢卷相关实体类添加 contractNo 字段支持 - 修改数据库表结构为 wms_material_coil 表添加 contract_no 字段 - 更新钢卷导出功能以包含合同编号字段 - 实现根据合同ID查询业务员和合同编号信息的功能 --- .../crm/service/impl/CrmOrderServiceImpl.java | 20 +++++++++++---- .../java/com/klp/domain/WmsMaterialCoil.java | 5 ++++ .../com/klp/domain/bo/WmsMaterialCoilBo.java | 5 ++++ .../domain/vo/WmsMaterialCoilAllExportVo.java | 6 +++++ .../domain/vo/WmsMaterialCoilExportVo.java | 6 +++++ .../com/klp/domain/vo/WmsMaterialCoilVo.java | 5 ++++ .../klp/mapper/WmsCoilContractRelMapper.java | 8 +++--- .../impl/WmsCoilContractRelServiceImpl.java | 24 +++++++++++++----- .../impl/WmsMaterialCoilServiceImpl.java | 17 ++++++++++--- .../mapper/klp/WmsCoilContractRelMapper.xml | 25 ++++++++++--------- .../mapper/klp/WmsMaterialCoilMapper.xml | 5 ++++ script/sql/mysql/klp-oa.sql | 1 + 12 files changed, 96 insertions(+), 31 deletions(-) diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java index 6c8fe889..bfef5bb9 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java @@ -285,23 +285,33 @@ public class CrmOrderServiceImpl implements ICrmOrderService { */ @Override public Boolean updateByBo(CrmOrderBo bo) { - // 查询旧订单获取原销售员,用于判断是否需要同步钢卷 + // 查询旧订单获取原销售员和原合同编号,用于判断是否需要同步钢卷 CrmOrder oldOrder = null; String oldSalesman = null; + String oldContractCode = null; if (bo.getOrderId() != null) { oldOrder = baseMapper.selectById(bo.getOrderId()); - oldSalesman = oldOrder != null ? oldOrder.getSalesman() : null; + if (oldOrder != null) { + oldSalesman = oldOrder.getSalesman(); + oldContractCode = oldOrder.getContractCode(); + } } CrmOrder update = BeanUtil.toBean(bo, CrmOrder.class); validEntityBeforeSave(update); boolean result = baseMapper.updateById(update) > 0; - // 如果销售员变更,同步更新所有关联钢卷的业务员名称 + // 如果销售员或合同编号变更,同步更新所有关联钢卷 if (result && oldOrder != null) { String newSalesman = update.getSalesman(); - if (!Objects.equals(oldSalesman, newSalesman) && StringUtils.isNotBlank(newSalesman)) { - coilContractRelMapper.updateCoilSaleNameByOrderId(bo.getOrderId(), newSalesman); + String newContractCode = update.getContractCode(); + boolean salesmanChanged = !Objects.equals(oldSalesman, newSalesman); + boolean contractCodeChanged = !Objects.equals(oldContractCode, newContractCode); + if (salesmanChanged || contractCodeChanged) { + coilContractRelMapper.updateCoilSaleNameByOrderId( + bo.getOrderId(), + StringUtils.isNotBlank(newSalesman) ? newSalesman : oldSalesman, + StringUtils.isNotBlank(newContractCode) ? newContractCode : oldContractCode); } } diff --git a/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java b/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java index 26abfe78..6a2c3a90 100644 --- a/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java +++ b/klp-wms/src/main/java/com/klp/domain/WmsMaterialCoil.java @@ -233,5 +233,10 @@ public class WmsMaterialCoil extends BaseEntity { * 镀铬卷号 */ private String chromePlateCoilNo; + + /** + * 合同编号 + */ + private String contractNo; } diff --git a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java index 479969bb..47773881 100644 --- a/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java +++ b/klp-wms/src/main/java/com/klp/domain/bo/WmsMaterialCoilBo.java @@ -412,6 +412,11 @@ public class WmsMaterialCoilBo extends BaseEntity { */ private String chromePlateCoilNo; + /** + * 合同编号 + */ + private String contractNo; + /** * 是否按计划创建时间倒序排序(已绑定钢卷列表无planId时,按计划新旧排列) */ diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java index dc2ff6cf..969b162d 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilAllExportVo.java @@ -215,4 +215,10 @@ public class WmsMaterialCoilAllExportVo { */ @ExcelProperty(value = "调拨类型") private String transferType; + + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private String contractNo; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java index a19965f2..6b1b1f3a 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java @@ -233,4 +233,10 @@ public class WmsMaterialCoilExportVo { */ @ExcelProperty(value = "镀铬卷号") private String chromePlateCoilNo; + + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private String contractNo; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java index c17cf217..bef7e52b 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilVo.java @@ -359,5 +359,10 @@ public class WmsMaterialCoilVo extends BaseEntity { * 镀铬卷号 */ private String chromePlateCoilNo; + + /** + * 合同编号 + */ + private String contractNo; } diff --git a/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java b/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java index 197dab01..9fd53fbc 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java @@ -26,12 +26,12 @@ public interface WmsCoilContractRelMapper extends BaseMapperPlus selectOrdersByCoilIds(@Param("coilIds") List coilIds); /** - * 根据订单ID查询销售员(业务员)姓名 + * 批量更新关联钢卷的业务员名称和合同编号(当订单变更时同步) */ - String selectSalesmanByOrderId(@Param("orderId") Long orderId); + int updateCoilSaleNameByOrderId(@Param("orderId") Long orderId, @Param("saleName") String saleName, @Param("contractCode") String contractCode); /** - * 批量更新关联钢卷的业务员名称(当订单销售员变更时同步) + * 根据订单ID查询合同信息(业务员姓名 + 合同编号) */ - int updateCoilSaleNameByOrderId(@Param("orderId") Long orderId, @Param("saleName") String saleName); + java.util.Map selectContractInfoByOrderId(@Param("orderId") Long orderId); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java index 10f9df74..d50fd88c 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsCoilContractRelServiceImpl.java @@ -88,18 +88,30 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService } /** - * 同步钢卷的业务员名称:根据合同ID查询销售员并更新到钢卷 + * 同步钢卷的业务员名称和合同编号:根据合同ID查询并更新到钢卷 */ private void syncCoilSaleName(Long coilId, Long contractId) { if (coilId == null || contractId == null) { return; } - String saleName = baseMapper.selectSalesmanByOrderId(contractId); - if (StringUtils.isNotBlank(saleName)) { + java.util.Map contractInfo = baseMapper.selectContractInfoByOrderId(contractId); + if (contractInfo != null) { + String saleName = contractInfo.get("salesman"); + String contractCode = contractInfo.get("contractCode"); LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); - updateWrapper.set(WmsMaterialCoil::getSaleName, saleName) - .eq(WmsMaterialCoil::getCoilId, coilId); - coilMapper.update(null, updateWrapper); + boolean needUpdate = false; + if (StringUtils.isNotBlank(saleName)) { + updateWrapper.set(WmsMaterialCoil::getSaleName, saleName); + needUpdate = true; + } + if (StringUtils.isNotBlank(contractCode)) { + updateWrapper.set(WmsMaterialCoil::getContractNo, contractCode); + needUpdate = true; + } + if (needUpdate) { + updateWrapper.eq(WmsMaterialCoil::getCoilId, coilId); + coilMapper.update(null, updateWrapper); + } } } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 12d88d66..10950e94 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -901,6 +901,8 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { qw.eq(bo.getIsRelatedToOrder() != null, "mc.is_related_to_order", bo.getIsRelatedToOrder()); // 加上remark的模糊匹配 qw.like(StringUtils.isNotBlank(bo.getRemark()), "mc.remark", bo.getRemark()); + // 合同号的模糊查询 + qw.like(StringUtils.isNotBlank(bo.getContractNo()), "mc.contract_no", bo.getContractNo()); //逻辑删除 qw.eq("mc.del_flag", 0); // 统一处理 warehouseId 与 warehouseIds: @@ -3079,13 +3081,20 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } /** - * 根据合同ID从订单中获取业务员姓名并设置到钢卷实体 + * 根据合同ID从订单中获取业务员姓名和合同编号并设置到钢卷实体 */ private void setSaleNameFromContract(WmsMaterialCoil coil, Long contractId) { if (contractId != null) { - String saleName = coilContractRelMapper.selectSalesmanByOrderId(contractId); - if (StringUtils.isNotBlank(saleName)) { - coil.setSaleName(saleName); + java.util.Map contractInfo = coilContractRelMapper.selectContractInfoByOrderId(contractId); + if (contractInfo != null) { + String saleName = contractInfo.get("salesman"); + String contractCode = contractInfo.get("contractCode"); + if (StringUtils.isNotBlank(saleName)) { + coil.setSaleName(saleName); + } + if (StringUtils.isNotBlank(contractCode)) { + coil.setContractNo(contractCode); + } } } } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml index 75c89715..630331bc 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml @@ -137,20 +137,21 @@ AND rel.del_flag = 0 - - + SELECT co.salesman, co.contract_code AS contractCode FROM crm_order co WHERE co.order_id = #{orderId} AND co.del_flag = 0 LIMIT 1 - - - UPDATE wms_material_coil mc - INNER JOIN wms_coil_contract_rel rel ON mc.coil_id = rel.coil_id AND rel.del_flag = 0 - SET mc.sale_name = #{saleName} - WHERE rel.contract_id = #{orderId} AND mc.del_flag = 0 - - - \ No newline at end of file + diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index 154f8033..1a09e8d5 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -136,6 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mc.theoretical_length, mc.chrome_plate_coil_no, mc.sale_name AS saleName, + mc.contract_no AS contractNo, w.warehouse_name AS warehouseName, nw.warehouse_name AS nextWarehouseName, aw.actual_warehouse_name AS actualWarehouseName, @@ -505,6 +507,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mc.packing_status AS packingStatus, -- 销售 mc.sale_name AS saleName, + -- 合同 + mc.contract_no AS contractNo, -- 调拨类型 mc.transfer_type AS transferType, -- 理论厚度 @@ -601,6 +605,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mc.quality_status AS qualityStatus, mc.packing_status AS packingStatus, mc.sale_name AS saleName, + mc.contract_no AS contractNo, mc.transfer_type AS transferType, mc.theoretical_thickness AS theoreticalThickness, mc.schedule_thickness AS scheduleThickness, diff --git a/script/sql/mysql/klp-oa.sql b/script/sql/mysql/klp-oa.sql index 4e2149c4..6e0d5e63 100644 --- a/script/sql/mysql/klp-oa.sql +++ b/script/sql/mysql/klp-oa.sql @@ -4220,6 +4220,7 @@ CREATE TABLE `wms_material_coil` ( `reserved_width` decimal(10, 3) NULL DEFAULT NULL COMMENT '预留宽度(单位:毫米)', `coil_surface_treatment` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '钢卷表面处理', `transfer_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '调拨类型', + `contract_no` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '合同编号', PRIMARY KEY (`coil_id`) USING BTREE, INDEX `fk_coil_next_warehouse`(`next_warehouse_id` ASC) USING BTREE, INDEX `fk_coil_qrcode`(`qrcode_record_id` ASC) USING BTREE,