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

@@ -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<String, String> contractInfo = baseMapper.selectContractInfoByOrderId(contractId);
if (contractInfo != null) {
String saleName = contractInfo.get("salesman");
String contractCode = contractInfo.get("contractCode");
LambdaUpdateWrapper<WmsMaterialCoil> 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);
}
}
}

View File

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