Commit d20d820dcb366f140877c46ef9230a95df0cddf6
1 parent
2c00cad1
fix(mes): 修复排班计划倒班字段联动清理及生成排班异常
Showing
2 changed files
with
11 additions
and
8 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/cal/plan/MesCalPlanMapper.java
| ... | ... | @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | 6 | import cn.iocoder.yudao.module.mes.controller.admin.cal.plan.vo.MesCalPlanPageReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.cal.plan.MesCalPlanDO; |
| 8 | +import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
| 8 | 9 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 10 | |
| 10 | 11 | /** |
| ... | ... | @@ -31,4 +32,11 @@ public interface MesCalPlanMapper extends BaseMapperX<MesCalPlanDO> { |
| 31 | 32 | return selectOne(MesCalPlanDO::getCode, code); |
| 32 | 33 | } |
| 33 | 34 | |
| 35 | + default void updateWithShiftFieldCleanup(MesCalPlanDO plan, boolean clearShiftMethod, boolean clearShiftCount) { | |
| 36 | + update(plan, Wrappers.<MesCalPlanDO>lambdaUpdate() | |
| 37 | + .eq(MesCalPlanDO::getId, plan.getId()) | |
| 38 | + .set(clearShiftMethod, MesCalPlanDO::getShiftMethod, null) | |
| 39 | + .set(clearShiftCount, MesCalPlanDO::getShiftCount, null)); | |
| 40 | + } | |
| 41 | + | |
| 34 | 42 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/cal/plan/MesCalPlanServiceImpl.java
| ... | ... | @@ -12,7 +12,6 @@ import cn.iocoder.yudao.module.mes.enums.cal.MesCalShiftMethodEnum; |
| 12 | 12 | import cn.iocoder.yudao.module.mes.enums.cal.MesCalShiftTypeEnum; |
| 13 | 13 | import cn.iocoder.yudao.module.mes.service.cal.team.MesCalTeamShiftService; |
| 14 | 14 | import cn.hutool.core.util.ObjUtil; |
| 15 | -import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |
| 16 | 15 | import jakarta.annotation.Resource; |
| 17 | 16 | import org.springframework.context.annotation.Lazy; |
| 18 | 17 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -78,9 +77,8 @@ public class MesCalPlanServiceImpl implements MesCalPlanService { |
| 78 | 77 | // 1.3 校验编码唯一 |
| 79 | 78 | validatePlanCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); |
| 80 | 79 | |
| 81 | - // 2. 更新 | |
| 82 | - updateReqVO.setStatus(null); // 不允许通过 update 修改状态,状态变更走专用接口 | |
| 83 | 80 | // 2.1 倒班字段联动清理:单白班不倒班,倒班方式非按天时不需要倒班天数 |
| 81 | + updateReqVO.setStatus(null); // 不允许通过 update 修改状态,状态变更走专用接口 | |
| 84 | 82 | boolean clearShiftMethod = MesCalShiftTypeEnum.SINGLE.getType().equals(updateReqVO.getShiftType()); |
| 85 | 83 | boolean clearShiftCount = clearShiftMethod || updateReqVO.getShiftMethod() == null |
| 86 | 84 | || !MesCalShiftMethodEnum.DAY.getMethod().equals(updateReqVO.getShiftMethod()); |
| ... | ... | @@ -90,12 +88,9 @@ public class MesCalPlanServiceImpl implements MesCalPlanService { |
| 90 | 88 | if (clearShiftCount) { |
| 91 | 89 | updateReqVO.setShiftCount(null); |
| 92 | 90 | } |
| 91 | + // 2.2 更新 | |
| 93 | 92 | MesCalPlanDO updateObj = BeanUtils.toBean(updateReqVO, MesCalPlanDO.class); |
| 94 | - // 2.2 entity 提供非 null 字段的 SET(NOT_NULL 策略),wrapper 负责显式 SET NULL 清掉旧值 | |
| 95 | - planMapper.update(updateObj, Wrappers.<MesCalPlanDO>lambdaUpdate() | |
| 96 | - .eq(MesCalPlanDO::getId, updateObj.getId()) | |
| 97 | - .set(clearShiftMethod, MesCalPlanDO::getShiftMethod, null) | |
| 98 | - .set(clearShiftCount, MesCalPlanDO::getShiftCount, null)); | |
| 93 | + planMapper.updateWithShiftFieldCleanup(updateObj, clearShiftMethod, clearShiftCount); | |
| 99 | 94 | } |
| 100 | 95 | |
| 101 | 96 | @Override | ... | ... |