feat(order): 订单销售员变更时同步更新关联钢卷业务员
- 在订单更新逻辑中增加销售员变更检测功能 - 新增数据库方法批量更新关联钢卷的业务员名称 - 实现订单销售员变更时自动同步到相关钢卷记录 - 添加钢卷与合同关联时的业务员同步机制 - 增加修改关联关系时的业务员信息同步处理 - 完善数据一致性保障机制
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,4 +29,9 @@ public interface WmsCoilContractRelMapper extends BaseMapperPlus<WmsCoilContract
|
||||
* 根据订单ID查询销售员(业务员)姓名
|
||||
*/
|
||||
String selectSalesmanByOrderId(@Param("orderId") Long orderId);
|
||||
|
||||
/**
|
||||
* 批量更新关联钢卷的业务员名称(当订单销售员变更时同步)
|
||||
*/
|
||||
int updateCoilSaleNameByOrderId(@Param("orderId") Long orderId, @Param("saleName") String saleName);
|
||||
}
|
||||
|
||||
@@ -5,13 +5,17 @@ import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.klp.common.utils.StringUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.klp.domain.bo.WmsCoilContractRelBo;
|
||||
import com.klp.domain.vo.WmsCoilContractRelVo;
|
||||
import com.klp.domain.WmsCoilContractRel;
|
||||
import com.klp.domain.WmsMaterialCoil;
|
||||
import com.klp.mapper.WmsCoilContractRelMapper;
|
||||
import com.klp.mapper.WmsMaterialCoilMapper;
|
||||
import com.klp.service.IWmsCoilContractRelService;
|
||||
|
||||
import java.util.List;
|
||||
@@ -30,6 +34,8 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService
|
||||
|
||||
private final WmsCoilContractRelMapper baseMapper;
|
||||
|
||||
private final WmsMaterialCoilMapper coilMapper;
|
||||
|
||||
/**
|
||||
* 查询钢卷与合同关联关系
|
||||
*/
|
||||
@@ -75,10 +81,28 @@ public class WmsCoilContractRelServiceImpl implements IWmsCoilContractRelService
|
||||
boolean flag = baseMapper.insert(add) > 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<WmsMaterialCoil> 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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -145,4 +145,12 @@
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 批量更新关联钢卷的业务员名称(当订单销售员变更时同步) -->
|
||||
<update id="updateCoilSaleNameByOrderId">
|
||||
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
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user