Commit bab71fce0017f010d96b85d35defe7fe8859dc35
1 parent
f8011968
✨ feat(mes): 优化库存冻结逻辑,更新盘点任务处理流程
重构库存冻结和解冻逻辑,合并相关方法以提高代码可读性和维护性。 新增表单提交和执行盘点的处理逻辑,确保用户操作的流畅性和准确性。
Showing
2 changed files
with
11 additions
and
35 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java
| @@ -12,12 +12,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterial | @@ -12,12 +12,12 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterial | ||
| 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO; | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO; |
| 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; | 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; |
| 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; |
| 15 | -import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.plan.MesWmStockTakingPlanParamMapper; | ||
| 16 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper; | 15 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper; |
| 17 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum; | 16 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum; |
| 18 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; | 17 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; |
| 19 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum; | 18 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum; |
| 20 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; | 19 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| 20 | +import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanParamService; | ||
| 21 | import jakarta.annotation.Resource; | 21 | import jakarta.annotation.Resource; |
| 22 | import org.springframework.stereotype.Service; | 22 | import org.springframework.stereotype.Service; |
| 23 | import org.springframework.transaction.annotation.Transactional; | 23 | import org.springframework.transaction.annotation.Transactional; |
| @@ -44,7 +44,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask | @@ -44,7 +44,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask | ||
| 44 | @Resource | 44 | @Resource |
| 45 | private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; | 45 | private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; |
| 46 | @Resource | 46 | @Resource |
| 47 | - private MesWmStockTakingPlanParamMapper stockTakingPlanParamMapper; | 47 | + private MesWmStockTakingPlanParamService stockTakingPlanParamService; |
| 48 | @Resource | 48 | @Resource |
| 49 | private MesWmMaterialStockService materialStockService; | 49 | private MesWmMaterialStockService materialStockService; |
| 50 | @Resource | 50 | @Resource |
| @@ -139,7 +139,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask | @@ -139,7 +139,7 @@ public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTask | ||
| 139 | */ | 139 | */ |
| 140 | private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) { | 140 | private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) { |
| 141 | // 1. 从方案参数中提取过滤条件 | 141 | // 1. 从方案参数中提取过滤条件 |
| 142 | - List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamMapper.selectListByPlanId(task.getPlanId()); | 142 | + List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamService.getStockTakingPlanParamListByPlanId(task.getPlanId()); |
| 143 | Assert.notEmpty(params, "盘点方案参数不能为空"); | 143 | Assert.notEmpty(params, "盘点方案参数不能为空"); |
| 144 | 144 | ||
| 145 | // 2.1 拼接通用参数 | 145 | // 2.1 拼接通用参数 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java
| @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; | @@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil; | ||
| 4 | import cn.hutool.core.util.ObjUtil; | 4 | import cn.hutool.core.util.ObjUtil; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 7 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; | ||
| 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; | 7 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; |
| 9 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; | 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; |
| 10 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; | 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; |
| @@ -20,10 +19,10 @@ import org.springframework.stereotype.Service; | @@ -20,10 +19,10 @@ import org.springframework.stereotype.Service; | ||
| 20 | import org.springframework.transaction.annotation.Transactional; | 19 | import org.springframework.transaction.annotation.Transactional; |
| 21 | import org.springframework.validation.annotation.Validated; | 20 | import org.springframework.validation.annotation.Validated; |
| 22 | 21 | ||
| 23 | -import java.math.BigDecimal; | ||
| 24 | import java.util.List; | 22 | import java.util.List; |
| 25 | 23 | ||
| 26 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 24 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 25 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 27 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; | 26 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; |
| 28 | 27 | ||
| 29 | /** | 28 | /** |
| @@ -128,13 +127,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -128,13 +127,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 128 | .setStatus(MesWmStockTakingTaskStatusEnum.APPROVING.getStatus())); | 127 | .setStatus(MesWmStockTakingTaskStatusEnum.APPROVING.getStatus())); |
| 129 | 128 | ||
| 130 | // 3. 根据冻结标识,对物资进行冻结 | 129 | // 3. 根据冻结标识,对物资进行冻结 |
| 131 | - // TODO @芋艿:后续跟进下! | ||
| 132 | if (Boolean.TRUE.equals(task.getFrozen())) { | 130 | if (Boolean.TRUE.equals(task.getFrozen())) { |
| 133 | - for (MesWmStockTakingTaskLineDO line : lines) { | ||
| 134 | - if (line.getMaterialStockId() != null) { | ||
| 135 | - updateMaterialStockFrozen(line.getMaterialStockId(), true); | ||
| 136 | - } | ||
| 137 | - } | 131 | + updateMaterialStockFrozen(lines, true); |
| 138 | } | 132 | } |
| 139 | } | 133 | } |
| 140 | 134 | ||
| @@ -149,10 +143,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -149,10 +143,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 149 | .setStatus(MesWmStockTakingTaskStatusEnum.FINISHED.getStatus())); | 143 | .setStatus(MesWmStockTakingTaskStatusEnum.FINISHED.getStatus())); |
| 150 | 144 | ||
| 151 | // 3. 解冻库存 | 145 | // 3. 解冻库存 |
| 152 | - // TODO @芋艿:后续跟进下! | ||
| 153 | if (Boolean.TRUE.equals(task.getFrozen())) { | 146 | if (Boolean.TRUE.equals(task.getFrozen())) { |
| 154 | List<MesWmStockTakingTaskLineDO> lines = stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id); | 147 | List<MesWmStockTakingTaskLineDO> lines = stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id); |
| 155 | - unfreezeStockTakingTaskStocks(lines); | 148 | + updateMaterialStockFrozen(lines, false); |
| 156 | } | 149 | } |
| 157 | } | 150 | } |
| 158 | 151 | ||
| @@ -167,7 +160,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -167,7 +160,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 167 | task.setStatus(MesWmStockTakingTaskStatusEnum.CANCELED.getStatus()); | 160 | task.setStatus(MesWmStockTakingTaskStatusEnum.CANCELED.getStatus()); |
| 168 | stockTakingTaskMapper.updateById(task); | 161 | stockTakingTaskMapper.updateById(task); |
| 169 | if (Boolean.TRUE.equals(task.getFrozen())) { | 162 | if (Boolean.TRUE.equals(task.getFrozen())) { |
| 170 | - unfreezeStockTakingTaskStocks(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id)); | 163 | + updateMaterialStockFrozen(stockTakingTaskLineService.getStockTakingTaskLineListByTaskId(id), false); |
| 171 | } | 164 | } |
| 172 | } | 165 | } |
| 173 | 166 | ||
| @@ -208,30 +201,13 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -208,30 +201,13 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 208 | return stockTakingTaskMapper.selectPage(pageReqVO); | 201 | return stockTakingTaskMapper.selectPage(pageReqVO); |
| 209 | } | 202 | } |
| 210 | 203 | ||
| 211 | - private void updateMaterialStockFrozen(Long materialStockId, boolean frozen) { | ||
| 212 | - MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO(); | ||
| 213 | - reqVO.setId(materialStockId); | ||
| 214 | - reqVO.setFrozen(frozen); | ||
| 215 | - materialStockService.updateMaterialStockFrozen(reqVO); | ||
| 216 | - } | ||
| 217 | - | ||
| 218 | - private void unfreezeStockTakingTaskStocks(List<MesWmStockTakingTaskLineDO> lines) { | 204 | + private void updateMaterialStockFrozen(List<MesWmStockTakingTaskLineDO> lines, boolean frozen) { |
| 219 | if (CollUtil.isEmpty(lines)) { | 205 | if (CollUtil.isEmpty(lines)) { |
| 220 | return; | 206 | return; |
| 221 | } | 207 | } |
| 222 | - for (MesWmStockTakingTaskLineDO line : lines) { | ||
| 223 | - if (line.getMaterialStockId() != null) { | ||
| 224 | - updateMaterialStockFrozen(line.getMaterialStockId(), false); | ||
| 225 | - } | ||
| 226 | - } | ||
| 227 | - } | ||
| 228 | - | ||
| 229 | - private BigDecimal calculateStockTakingDifferenceQuantity(MesWmStockTakingTaskLineDO line) { | ||
| 230 | - return getDefaultQuantity(line.getTakingQuantity()).subtract(getDefaultQuantity(line.getQuantity())); | ||
| 231 | - } | ||
| 232 | - | ||
| 233 | - private BigDecimal getDefaultQuantity(BigDecimal quantity) { | ||
| 234 | - return quantity == null ? BigDecimal.ZERO : quantity; | 208 | + List<Long> materialStockIds = convertList(lines, |
| 209 | + MesWmStockTakingTaskLineDO::getMaterialStockId, line -> line.getMaterialStockId() != null); | ||
| 210 | + materialStockService.updateMaterialStockFrozen(materialStockIds, frozen); | ||
| 235 | } | 211 | } |
| 236 | 212 | ||
| 237 | private void validateStockTakingTaskCodeUnique(Long id, String code) { | 213 | private void validateStockTakingTaskCodeUnique(Long id, String code) { |