feat(order): 订单变更时同步更新钢卷的业务员和合同编号

- 在 CrmOrderServiceImpl 中查询旧订单时同时获取原合同编号
- 当销售员或合同编号变更时同步更新关联钢卷的业务员名称和合同编号
- 在 WmsCoilContractRelMapper 中新增批量更新钢卷业务员和合同编号的方法
- 为钢卷相关实体类添加 contractNo 字段支持
- 修改数据库表结构为 wms_material_coil 表添加 contract_no 字段
- 更新钢卷导出功能以包含合同编号字段
- 实现根据合同ID查询业务员和合同编号信息的功能
This commit is contained in:
2026-06-22 13:25:31 +08:00
parent 119b9105c7
commit 26c834780c
12 changed files with 96 additions and 31 deletions

View File

@@ -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);
}
}