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