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 58c24136..6c8fe889 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,9 +285,27 @@ public class CrmOrderServiceImpl implements ICrmOrderService { */ @Override public Boolean updateByBo(CrmOrderBo bo) { + // 查询旧订单获取原销售员,用于判断是否需要同步钢卷 + CrmOrder oldOrder = null; + String oldSalesman = null; + if (bo.getOrderId() != null) { + oldOrder = baseMapper.selectById(bo.getOrderId()); + oldSalesman = oldOrder != null ? oldOrder.getSalesman() : null; + } + CrmOrder update = BeanUtil.toBean(bo, CrmOrder.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + 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); + } + } + + return result; } /** 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 e45f47a9..197dab01 100644 --- a/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java +++ b/klp-wms/src/main/java/com/klp/mapper/WmsCoilContractRelMapper.java @@ -29,4 +29,9 @@ public interface WmsCoilContractRelMapper extends BaseMapperPlus 0; if (flag) { bo.setRelId(add.getRelId()); + // 同步钢卷业务员:根据合同ID查询销售员并更新到关联钢卷 + syncCoilSaleName(bo.getCoilId(), bo.getContractId()); } return flag; } + /** + * 同步钢卷的业务员名称:根据合同ID查询销售员并更新到钢卷 + */ + private void syncCoilSaleName(Long coilId, Long contractId) { + if (coilId == null || contractId == null) { + return; + } + String saleName = baseMapper.selectSalesmanByOrderId(contractId); + if (StringUtils.isNotBlank(saleName)) { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.set(WmsMaterialCoil::getSaleName, saleName) + .eq(WmsMaterialCoil::getCoilId, coilId); + coilMapper.update(null, updateWrapper); + } + } + /** * 修改钢卷与合同关联关系 */ @@ -86,7 +110,12 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService public Boolean updateByBo(WmsCoilContractRelBo bo) { WmsCoilContractRel update = BeanUtil.toBean(bo, WmsCoilContractRel.class); validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0; + boolean result = baseMapper.updateById(update) > 0; + if (result) { + // 合同变更时同步钢卷业务员 + syncCoilSaleName(bo.getCoilId(), bo.getContractId()); + } + return result; } /** diff --git a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml index 48f8ce32..75c89715 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsCoilContractRelMapper.xml @@ -145,4 +145,12 @@ 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