Commit 46933d8565af152bf83ca0fc1c7814a37816daa4
1 parent
c62f0e67
✨ feat(mes): 添加盘点任务行的请求和响应 VO 及相关控制器
新增 MesWmStockTakingTaskLinePageReqVO 和 MesWmStockTakingTaskLineSaveReqVO 类,支持盘点任务行的分页请求和新增/修改请求。同时,创建 MesWmStockTakingTaskLineController 控制器,提供相应的 API 接口,增强系统的功能性和可维护性。
Showing
10 changed files
with
460 additions
and
259 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskController.java
| @@ -9,23 +9,10 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | @@ -9,23 +9,10 @@ import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | ||
| 9 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 9 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 10 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 10 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 11 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.*; | 11 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.*; |
| 12 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineBatchUpdateReqVO; | ||
| 13 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineRespVO; | ||
| 14 | -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; | ||
| 15 | -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; | ||
| 16 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanDO; | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanDO; |
| 17 | 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; |
| 18 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | ||
| 19 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; | ||
| 20 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; | ||
| 21 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; | ||
| 22 | -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | ||
| 23 | -import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; | ||
| 24 | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanService; | 14 | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanService; |
| 25 | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskService; | 15 | import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskService; |
| 26 | -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; | ||
| 27 | -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; | ||
| 28 | -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; | ||
| 29 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | 16 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| 30 | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | 17 | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| 31 | import io.swagger.v3.oas.annotations.Operation; | 18 | import io.swagger.v3.oas.annotations.Operation; |
| @@ -39,7 +26,6 @@ import org.springframework.validation.annotation.Validated; | @@ -39,7 +26,6 @@ import org.springframework.validation.annotation.Validated; | ||
| 39 | import org.springframework.web.bind.annotation.*; | 26 | import org.springframework.web.bind.annotation.*; |
| 40 | 27 | ||
| 41 | import java.io.IOException; | 28 | import java.io.IOException; |
| 42 | -import java.math.BigDecimal; | ||
| 43 | import java.util.Collections; | 29 | import java.util.Collections; |
| 44 | import java.util.List; | 30 | import java.util.List; |
| 45 | import java.util.Map; | 31 | import java.util.Map; |
| @@ -59,17 +45,6 @@ public class MesWmStockTakingTaskController { | @@ -59,17 +45,6 @@ public class MesWmStockTakingTaskController { | ||
| 59 | @Resource | 45 | @Resource |
| 60 | private MesWmStockTakingPlanService stockTakingPlanService; | 46 | private MesWmStockTakingPlanService stockTakingPlanService; |
| 61 | @Resource | 47 | @Resource |
| 62 | - private MesMdItemService itemService; | ||
| 63 | - @Resource | ||
| 64 | - private MesMdUnitMeasureService unitMeasureService; | ||
| 65 | - @Resource | ||
| 66 | - private MesWmWarehouseService warehouseService; | ||
| 67 | - @Resource | ||
| 68 | - private MesWmWarehouseLocationService locationService; | ||
| 69 | - @Resource | ||
| 70 | - private MesWmWarehouseAreaService areaService; | ||
| 71 | - | ||
| 72 | - @Resource | ||
| 73 | private AdminUserApi adminUserApi; | 48 | private AdminUserApi adminUserApi; |
| 74 | 49 | ||
| 75 | @PostMapping("/create") | 50 | @PostMapping("/create") |
| @@ -153,63 +128,24 @@ public class MesWmStockTakingTaskController { | @@ -153,63 +128,24 @@ public class MesWmStockTakingTaskController { | ||
| 153 | return success(true); | 128 | return success(true); |
| 154 | } | 129 | } |
| 155 | 130 | ||
| 156 | - @PutMapping("/line-batch-update") | ||
| 157 | - @Operation(summary = "批量更新盘点任务行") | ||
| 158 | - @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:update')") | ||
| 159 | - public CommonResult<Boolean> updateStockTakingTaskLines(@Valid @RequestBody MesWmStockTakingTaskLineBatchUpdateReqVO reqVO) { | ||
| 160 | - stockTakingTaskService.updateStockTakingTaskLines(reqVO); | ||
| 161 | - return success(true); | ||
| 162 | - } | ||
| 163 | - | ||
| 164 | - @GetMapping("/line-list") | ||
| 165 | - @Operation(summary = "获得盘点任务行列表") | ||
| 166 | - @Parameter(name = "taskId", description = "任务编号", required = true) | ||
| 167 | - @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:query')") | ||
| 168 | - public CommonResult<List<MesWmStockTakingTaskLineRespVO>> getStockTakingTaskLineList(@RequestParam("taskId") Long taskId) { | ||
| 169 | - return success(buildTaskLineRespVOList(stockTakingTaskService.getStockTakingTaskLineList(taskId))); | ||
| 170 | - } | 131 | + // ==================== 拼接 VO ==================== |
| 171 | 132 | ||
| 172 | private List<MesWmStockTakingTaskRespVO> buildTaskRespVOList(List<MesWmStockTakingTaskDO> list) { | 133 | private List<MesWmStockTakingTaskRespVO> buildTaskRespVOList(List<MesWmStockTakingTaskDO> list) { |
| 173 | if (CollUtil.isEmpty(list)) { | 134 | if (CollUtil.isEmpty(list)) { |
| 174 | return Collections.emptyList(); | 135 | return Collections.emptyList(); |
| 175 | } | 136 | } |
| 176 | - Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSet(list, MesWmStockTakingTaskDO::getUserId)); | ||
| 177 | - Map<Long, MesWmStockTakingPlanDO> planMap = stockTakingPlanService.getStockTakingPlanMap(convertSet(list, MesWmStockTakingTaskDO::getPlanId)); | 137 | + // 查询关联数据 |
| 138 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( | ||
| 139 | + convertSet(list, MesWmStockTakingTaskDO::getUserId)); | ||
| 140 | + Map<Long, MesWmStockTakingPlanDO> planMap = stockTakingPlanService.getStockTakingPlanMap( | ||
| 141 | + convertSet(list, MesWmStockTakingTaskDO::getPlanId)); | ||
| 142 | + // 拼接数据 | ||
| 178 | return BeanUtils.toBean(list, MesWmStockTakingTaskRespVO.class, vo -> { | 143 | return BeanUtils.toBean(list, MesWmStockTakingTaskRespVO.class, vo -> { |
| 179 | - MapUtils.findAndThen(userMap, vo.getUserId(), user -> vo.setUserNickname(user.getNickname())); | ||
| 180 | - MapUtils.findAndThen(planMap, vo.getPlanId(), plan -> { | ||
| 181 | - vo.setPlanCode(plan.getCode()); | ||
| 182 | - vo.setPlanName(plan.getName()); | ||
| 183 | - }); | ||
| 184 | - }); | ||
| 185 | - } | ||
| 186 | - | ||
| 187 | - private List<MesWmStockTakingTaskLineRespVO> buildTaskLineRespVOList(List<MesWmStockTakingTaskLineDO> list) { | ||
| 188 | - if (CollUtil.isEmpty(list)) { | ||
| 189 | - return Collections.emptyList(); | ||
| 190 | - } | ||
| 191 | - Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId)); | ||
| 192 | - Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( | ||
| 193 | - convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); | ||
| 194 | - Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap(convertSet(list, MesWmStockTakingTaskLineDO::getWarehouseId)); | ||
| 195 | - Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap(convertSet(list, MesWmStockTakingTaskLineDO::getLocationId)); | ||
| 196 | - Map<Long, MesWmWarehouseAreaDO> areaMap = areaService.getWarehouseAreaMap(convertSet(list, MesWmStockTakingTaskLineDO::getAreaId)); | ||
| 197 | - return BeanUtils.toBean(list, MesWmStockTakingTaskLineRespVO.class, vo -> { | ||
| 198 | - MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { | ||
| 199 | - vo.setItemCode(item.getCode()); | ||
| 200 | - vo.setItemName(item.getName()); | ||
| 201 | - vo.setSpecification(item.getSpecification()); | ||
| 202 | - MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), unit -> vo.setUnitMeasureName(unit.getName())); | ||
| 203 | - }); | ||
| 204 | - MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), warehouse -> vo.setWarehouseName(warehouse.getName())); | ||
| 205 | - MapUtils.findAndThen(locationMap, vo.getLocationId(), location -> vo.setLocationName(location.getName())); | ||
| 206 | - MapUtils.findAndThen(areaMap, vo.getAreaId(), area -> vo.setAreaName(area.getName())); | ||
| 207 | - vo.setDifferenceQuantity(defaultQuantity(vo.getTakingQuantity()).subtract(defaultQuantity(vo.getQuantity()))); | 144 | + MapUtils.findAndThen(userMap, vo.getUserId(), |
| 145 | + user -> vo.setUserNickname(user.getNickname())); | ||
| 146 | + MapUtils.findAndThen(planMap, vo.getPlanId(), | ||
| 147 | + plan -> vo.setPlanCode(plan.getCode()).setPlanName(plan.getName())); | ||
| 208 | }); | 148 | }); |
| 209 | } | 149 | } |
| 210 | 150 | ||
| 211 | - private BigDecimal defaultQuantity(BigDecimal quantity) { | ||
| 212 | - return quantity == null ? BigDecimal.ZERO : quantity; | ||
| 213 | - } | ||
| 214 | - | ||
| 215 | } | 151 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/MesWmStockTakingTaskLineController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 5 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 7 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineRespVO; | ||
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO; | ||
| 10 | +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; | ||
| 11 | +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; | ||
| 12 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | ||
| 13 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; | ||
| 14 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; | ||
| 15 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; | ||
| 16 | +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | ||
| 17 | +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; | ||
| 18 | +import cn.iocoder.yudao.module.mes.service.wm.stocktaking.task.MesWmStockTakingTaskLineService; | ||
| 19 | +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; | ||
| 20 | +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; | ||
| 21 | +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; | ||
| 22 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 23 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 24 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 25 | +import jakarta.annotation.Resource; | ||
| 26 | +import jakarta.validation.Valid; | ||
| 27 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 28 | +import org.springframework.validation.annotation.Validated; | ||
| 29 | +import org.springframework.web.bind.annotation.*; | ||
| 30 | + | ||
| 31 | +import java.util.Collections; | ||
| 32 | +import java.util.List; | ||
| 33 | +import java.util.Map; | ||
| 34 | + | ||
| 35 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 36 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||
| 37 | +import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; | ||
| 38 | + | ||
| 39 | +@Tag(name = "管理后台 - MES 盘点任务行") | ||
| 40 | +@RestController | ||
| 41 | +@RequestMapping("/mes/wm/stocktaking-task-line") | ||
| 42 | +@Validated | ||
| 43 | +public class MesWmStockTakingTaskLineController { | ||
| 44 | + | ||
| 45 | + @Resource | ||
| 46 | + private MesWmStockTakingTaskLineService stockTakingTaskLineService; | ||
| 47 | + @Resource | ||
| 48 | + private MesMdItemService itemService; | ||
| 49 | + @Resource | ||
| 50 | + private MesMdUnitMeasureService unitMeasureService; | ||
| 51 | + @Resource | ||
| 52 | + private MesWmWarehouseService warehouseService; | ||
| 53 | + @Resource | ||
| 54 | + private MesWmWarehouseLocationService locationService; | ||
| 55 | + @Resource | ||
| 56 | + private MesWmWarehouseAreaService areaService; | ||
| 57 | + | ||
| 58 | + @GetMapping("/page") | ||
| 59 | + @Operation(summary = "获得盘点任务行分页") | ||
| 60 | + @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:query')") | ||
| 61 | + public CommonResult<PageResult<MesWmStockTakingTaskLineRespVO>> getStockTakingTaskLinePage( | ||
| 62 | + @Valid MesWmStockTakingTaskLinePageReqVO pageReqVO) { | ||
| 63 | + PageResult<MesWmStockTakingTaskLineDO> pageResult = stockTakingTaskLineService.getStockTakingTaskLinePage(pageReqVO); | ||
| 64 | + return success(new PageResult<>(buildTaskLineRespVOList(pageResult.getList()), pageResult.getTotal())); | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + @PostMapping("/create") | ||
| 68 | + @Operation(summary = "创建盘点任务行") | ||
| 69 | + @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:update')") | ||
| 70 | + public CommonResult<Long> createStockTakingTaskLine(@Valid @RequestBody MesWmStockTakingTaskLineSaveReqVO createReqVO) { | ||
| 71 | + return success(stockTakingTaskLineService.createStockTakingTaskLine(createReqVO)); | ||
| 72 | + } | ||
| 73 | + | ||
| 74 | + @PutMapping("/update") | ||
| 75 | + @Operation(summary = "更新盘点任务行") | ||
| 76 | + @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:update')") | ||
| 77 | + public CommonResult<Boolean> updateStockTakingTaskLine(@Valid @RequestBody MesWmStockTakingTaskLineSaveReqVO updateReqVO) { | ||
| 78 | + stockTakingTaskLineService.updateStockTakingTaskLine(updateReqVO); | ||
| 79 | + return success(true); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + @DeleteMapping("/delete") | ||
| 83 | + @Operation(summary = "删除盘点任务行") | ||
| 84 | + @Parameter(name = "id", description = "编号", required = true) | ||
| 85 | + @PreAuthorize("@ss.hasPermission('mes:wm-stock-taking-task:update')") | ||
| 86 | + public CommonResult<Boolean> deleteStockTakingTaskLine(@RequestParam("id") Long id) { | ||
| 87 | + stockTakingTaskLineService.deleteStockTakingTaskLine(id); | ||
| 88 | + return success(true); | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + // ==================== 拼接 VO ==================== | ||
| 92 | + | ||
| 93 | + private List<MesWmStockTakingTaskLineRespVO> buildTaskLineRespVOList(List<MesWmStockTakingTaskLineDO> list) { | ||
| 94 | + if (CollUtil.isEmpty(list)) { | ||
| 95 | + return Collections.emptyList(); | ||
| 96 | + } | ||
| 97 | + // 查询关联数据 | ||
| 98 | + Map<Long, MesMdItemDO> itemMap = itemService.getItemMap(convertSet(list, MesWmStockTakingTaskLineDO::getItemId)); | ||
| 99 | + Map<Long, MesMdUnitMeasureDO> unitMeasureMap = unitMeasureService.getUnitMeasureMap( | ||
| 100 | + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); | ||
| 101 | + Map<Long, MesWmWarehouseDO> warehouseMap = warehouseService.getWarehouseMap( | ||
| 102 | + convertSet(list, MesWmStockTakingTaskLineDO::getWarehouseId)); | ||
| 103 | + Map<Long, MesWmWarehouseLocationDO> locationMap = locationService.getWarehouseLocationMap( | ||
| 104 | + convertSet(list, MesWmStockTakingTaskLineDO::getLocationId)); | ||
| 105 | + Map<Long, MesWmWarehouseAreaDO> areaMap = areaService.getWarehouseAreaMap( | ||
| 106 | + convertSet(list, MesWmStockTakingTaskLineDO::getAreaId)); | ||
| 107 | + // 拼接 VO | ||
| 108 | + return BeanUtils.toBean(list, MesWmStockTakingTaskLineRespVO.class, vo -> { | ||
| 109 | + findAndThen(itemMap, vo.getItemId(), item -> { | ||
| 110 | + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); | ||
| 111 | + findAndThen(unitMeasureMap, item.getUnitMeasureId(), | ||
| 112 | + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); | ||
| 113 | + }); | ||
| 114 | + findAndThen(warehouseMap, vo.getWarehouseId(), | ||
| 115 | + warehouse -> vo.setWarehouseName(warehouse.getName())); | ||
| 116 | + findAndThen(locationMap, | ||
| 117 | + vo.getLocationId(), location -> vo.setLocationName(location.getName())); | ||
| 118 | + findAndThen(areaMap, | ||
| 119 | + vo.getAreaId(), area -> vo.setAreaName(area.getName())); | ||
| 120 | + }); | ||
| 121 | + } | ||
| 122 | + | ||
| 123 | +} |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/line/MesWmStockTakingTaskLinePageReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 4 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.ToString; | ||
| 8 | + | ||
| 9 | +@Schema(description = "管理后台 - 盘点任务行分页 Request VO") | ||
| 10 | +@Data | ||
| 11 | +@EqualsAndHashCode(callSuper = true) | ||
| 12 | +@ToString(callSuper = true) | ||
| 13 | +public class MesWmStockTakingTaskLinePageReqVO extends PageParam { | ||
| 14 | + | ||
| 15 | + @Schema(description = "盘点任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 16 | + private Long taskId; | ||
| 17 | + | ||
| 18 | +} |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/stocktaking/task/vo/line/MesWmStockTakingTaskLineSaveReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import jakarta.validation.constraints.NotNull; | ||
| 5 | +import lombok.Data; | ||
| 6 | + | ||
| 7 | +import java.math.BigDecimal; | ||
| 8 | + | ||
| 9 | +@Schema(description = "管理后台 - 盘点任务行新增/修改 Request VO") | ||
| 10 | +@Data | ||
| 11 | +public class MesWmStockTakingTaskLineSaveReqVO { | ||
| 12 | + | ||
| 13 | + @Schema(description = "编号", example = "1") | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @Schema(description = "盘点任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 17 | + @NotNull(message = "盘点任务编号不能为空") | ||
| 18 | + private Long taskId; | ||
| 19 | + | ||
| 20 | + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 21 | + @NotNull(message = "物料编号不能为空") | ||
| 22 | + private Long itemId; | ||
| 23 | + | ||
| 24 | + @Schema(description = "批次编号", example = "1") | ||
| 25 | + private Long batchId; | ||
| 26 | + | ||
| 27 | + @Schema(description = "账面数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") | ||
| 28 | + @NotNull(message = "账面数量不能为空") | ||
| 29 | + private BigDecimal quantity; | ||
| 30 | + | ||
| 31 | + @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 32 | + @NotNull(message = "仓库编号不能为空") | ||
| 33 | + private Long warehouseId; | ||
| 34 | + | ||
| 35 | + @Schema(description = "库区编号", example = "1") | ||
| 36 | + private Long locationId; | ||
| 37 | + | ||
| 38 | + @Schema(description = "库位编号", example = "1") | ||
| 39 | + private Long areaId; | ||
| 40 | + | ||
| 41 | + @Schema(description = "盘点状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 42 | + @NotNull(message = "盘点状态不能为空") | ||
| 43 | + private Integer status; | ||
| 44 | + | ||
| 45 | + @Schema(description = "备注", example = "备注") | ||
| 46 | + private String remark; | ||
| 47 | + | ||
| 48 | +} |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/stocktaking/task/MesWmStockTakingTaskLineMapper.java
| 1 | package cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task; | 1 | package cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO; | ||
| 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; |
| 6 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 7 | 9 | ||
| @@ -33,4 +35,10 @@ public interface MesWmStockTakingTaskLineMapper extends BaseMapperX<MesWmStockTa | @@ -33,4 +35,10 @@ public interface MesWmStockTakingTaskLineMapper extends BaseMapperX<MesWmStockTa | ||
| 33 | delete(MesWmStockTakingTaskLineDO::getTaskId, taskId); | 35 | delete(MesWmStockTakingTaskLineDO::getTaskId, taskId); |
| 34 | } | 36 | } |
| 35 | 37 | ||
| 38 | + default PageResult<MesWmStockTakingTaskLineDO> selectPage(MesWmStockTakingTaskLinePageReqVO reqVO) { | ||
| 39 | + return selectPage(reqVO, new LambdaQueryWrapperX<MesWmStockTakingTaskLineDO>() | ||
| 40 | + .eqIfPresent(MesWmStockTakingTaskLineDO::getTaskId, reqVO.getTaskId()) | ||
| 41 | + .orderByAsc(MesWmStockTakingTaskLineDO::getId)); | ||
| 42 | + } | ||
| 43 | + | ||
| 36 | } | 44 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmStockTakingTaskLineStatusEnum.java
| @@ -13,8 +13,6 @@ import java.util.Arrays; | @@ -13,8 +13,6 @@ import java.util.Arrays; | ||
| 13 | @AllArgsConstructor | 13 | @AllArgsConstructor |
| 14 | public enum MesWmStockTakingTaskLineStatusEnum implements ArrayValuable<Integer> { | 14 | public enum MesWmStockTakingTaskLineStatusEnum implements ArrayValuable<Integer> { |
| 15 | 15 | ||
| 16 | - // TODO @AI:UNCOUNTED 可以去掉! | ||
| 17 | - UNCOUNTED(0, "未盘点"), | ||
| 18 | NORMAL(1, "正常"), | 16 | NORMAL(1, "正常"), |
| 19 | GAIN(2, "盘盈"), | 17 | GAIN(2, "盘盈"), |
| 20 | LOSS(3, "盘亏"); | 18 | LOSS(3, "盘亏"); |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; | ||
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * MES 盘点任务行 Service 接口 | ||
| 11 | + * | ||
| 12 | + * @author 芋道源码 | ||
| 13 | + */ | ||
| 14 | +public interface MesWmStockTakingTaskLineService { | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 根据盘点方案生成盘点明细行 | ||
| 18 | + * | ||
| 19 | + * @param task 盘点任务 | ||
| 20 | + */ | ||
| 21 | + void generateStockTakingLines(MesWmStockTakingTaskDO task); | ||
| 22 | + | ||
| 23 | + /** | ||
| 24 | + * 分页查询盘点任务行 | ||
| 25 | + * | ||
| 26 | + * @param pageReqVO 分页查询条件 | ||
| 27 | + * @return 盘点任务行分页结果 | ||
| 28 | + */ | ||
| 29 | + PageResult<MesWmStockTakingTaskLineDO> getStockTakingTaskLinePage(MesWmStockTakingTaskLinePageReqVO pageReqVO); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * 创建盘点任务行 | ||
| 33 | + * | ||
| 34 | + * @param createReqVO 创建信息 | ||
| 35 | + * @return 编号 | ||
| 36 | + */ | ||
| 37 | + Long createStockTakingTaskLine(MesWmStockTakingTaskLineSaveReqVO createReqVO); | ||
| 38 | + | ||
| 39 | + /** | ||
| 40 | + * 更新盘点任务行 | ||
| 41 | + * | ||
| 42 | + * @param updateReqVO 更新信息 | ||
| 43 | + */ | ||
| 44 | + void updateStockTakingTaskLine(MesWmStockTakingTaskLineSaveReqVO updateReqVO); | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * 删除盘点任务行 | ||
| 48 | + * | ||
| 49 | + * @param id 盘点任务行编号 | ||
| 50 | + */ | ||
| 51 | + void deleteStockTakingTaskLine(Long id); | ||
| 52 | + | ||
| 53 | +} |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskLineServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; | ||
| 2 | + | ||
| 3 | +import cn.hutool.core.collection.CollUtil; | ||
| 4 | +import cn.hutool.core.lang.Assert; | ||
| 5 | +import cn.hutool.core.util.ObjUtil; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 7 | +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLinePageReqVO; | ||
| 10 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineSaveReqVO; | ||
| 11 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; | ||
| 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; | ||
| 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; | ||
| 17 | +import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskMapper; | ||
| 18 | +import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum; | ||
| 19 | +import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; | ||
| 20 | +import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskStatusEnum; | ||
| 21 | +import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum; | ||
| 22 | +import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; | ||
| 23 | +import jakarta.annotation.Resource; | ||
| 24 | +import org.springframework.stereotype.Service; | ||
| 25 | +import org.springframework.transaction.annotation.Transactional; | ||
| 26 | +import org.springframework.validation.annotation.Validated; | ||
| 27 | + | ||
| 28 | +import java.math.BigDecimal; | ||
| 29 | +import java.util.List; | ||
| 30 | +import java.util.Objects; | ||
| 31 | + | ||
| 32 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 33 | +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 34 | +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; | ||
| 35 | + | ||
| 36 | +/** | ||
| 37 | + * MES 盘点任务行 Service 实现类 | ||
| 38 | + * | ||
| 39 | + * @author 芋道源码 | ||
| 40 | + */ | ||
| 41 | +@Service | ||
| 42 | +@Validated | ||
| 43 | +public class MesWmStockTakingTaskLineServiceImpl implements MesWmStockTakingTaskLineService { | ||
| 44 | + | ||
| 45 | + @Resource | ||
| 46 | + private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; | ||
| 47 | + @Resource | ||
| 48 | + private MesWmStockTakingPlanParamMapper stockTakingPlanParamMapper; | ||
| 49 | + @Resource | ||
| 50 | + private MesWmMaterialStockService materialStockService; | ||
| 51 | + | ||
| 52 | + @Resource | ||
| 53 | + private MesWmStockTakingTaskMapper stockTakingTaskMapper; | ||
| 54 | + | ||
| 55 | + @Override | ||
| 56 | + @Transactional(rollbackFor = Exception.class) | ||
| 57 | + public void generateStockTakingLines(MesWmStockTakingTaskDO task) { | ||
| 58 | + // 1.1 构建查询条件(包含动态盘点时间校验) | ||
| 59 | + MesWmMaterialStockListReqVO reqVO = buildStockQueryReqVO(task); | ||
| 60 | + // 1.2 查询物料库存 | ||
| 61 | + List<MesWmMaterialStockDO> stocks = materialStockService.getMaterialStockList(reqVO); | ||
| 62 | + if (CollUtil.isEmpty(stocks)) { | ||
| 63 | + throw exception(WM_STOCK_TAKING_TASK_NO_STOCK); | ||
| 64 | + } | ||
| 65 | + | ||
| 66 | + // 2. 批量生成明细行 | ||
| 67 | + // TODO DONE @AI:使用 CollectionUtils convertList 方法简化代码 | ||
| 68 | + List<MesWmStockTakingTaskLineDO> lines = convertList(stocks, stock -> | ||
| 69 | + MesWmStockTakingTaskLineDO.builder() | ||
| 70 | + .taskId(task.getId()).materialStockId(stock.getId()).itemId(stock.getItemId()) | ||
| 71 | + .batchId(stock.getBatchId()).quantity(defaultQuantity(stock.getQuantityOnhand())) | ||
| 72 | + .warehouseId(stock.getWarehouseId()).locationId(stock.getLocationId()).areaId(stock.getAreaId()) | ||
| 73 | + .status(MesWmStockTakingTaskLineStatusEnum.LOSS.getStatus()).build()); | ||
| 74 | + stockTakingTaskLineMapper.insertBatch(lines); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + @Override | ||
| 78 | + public PageResult<MesWmStockTakingTaskLineDO> getStockTakingTaskLinePage(MesWmStockTakingTaskLinePageReqVO pageReqVO) { | ||
| 79 | + return stockTakingTaskLineMapper.selectPage(pageReqVO); | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + @Override | ||
| 83 | + @Transactional(rollbackFor = Exception.class) | ||
| 84 | + public Long createStockTakingTaskLine(MesWmStockTakingTaskLineSaveReqVO createReqVO) { | ||
| 85 | + // 1. 校验盘点任务存在,并且处于【准备中】状态 | ||
| 86 | + validateTaskExistsAndPrepare(createReqVO.getTaskId()); | ||
| 87 | + | ||
| 88 | + // 2. 创建盘点任务行 | ||
| 89 | + MesWmStockTakingTaskLineDO line = BeanUtils.toBean(createReqVO, MesWmStockTakingTaskLineDO.class); | ||
| 90 | + stockTakingTaskLineMapper.insert(line); | ||
| 91 | + return line.getId(); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + @Override | ||
| 95 | + @Transactional(rollbackFor = Exception.class) | ||
| 96 | + public void updateStockTakingTaskLine(MesWmStockTakingTaskLineSaveReqVO updateReqVO) { | ||
| 97 | + // TODO @AI:补全注释 | ||
| 98 | + // TODO @AI:搞个 validate exists 方法,这样 update 和 delete 可以服用; | ||
| 99 | + MesWmStockTakingTaskLineDO line = stockTakingTaskLineMapper.selectById(updateReqVO.getId()); | ||
| 100 | + if (line == null) { | ||
| 101 | + throw exception(WM_STOCK_TAKING_TASK_LINE_NOT_EXISTS); | ||
| 102 | + } | ||
| 103 | + validateTaskExistsAndPrepare(updateReqVO.getTaskId()); | ||
| 104 | + | ||
| 105 | + // 更新 | ||
| 106 | + MesWmStockTakingTaskLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmStockTakingTaskLineDO.class); | ||
| 107 | + stockTakingTaskLineMapper.updateById(updateObj); | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + @Override | ||
| 111 | + @Transactional(rollbackFor = Exception.class) | ||
| 112 | + public void deleteStockTakingTaskLine(Long id) { | ||
| 113 | + // TODO @AI:补全注释 | ||
| 114 | + MesWmStockTakingTaskLineDO line = stockTakingTaskLineMapper.selectById(id); | ||
| 115 | + if (line == null) { | ||
| 116 | + throw exception(WM_STOCK_TAKING_TASK_LINE_NOT_EXISTS); | ||
| 117 | + } | ||
| 118 | + validateTaskExistsAndPrepare(line.getTaskId()); | ||
| 119 | + | ||
| 120 | + // 2. 删除 | ||
| 121 | + stockTakingTaskLineMapper.deleteById(id); | ||
| 122 | + } | ||
| 123 | + | ||
| 124 | + // TODO @AI:应该在对方的 service 里提供; | ||
| 125 | + private MesWmStockTakingTaskDO validateTaskExistsAndPrepare(Long id) { | ||
| 126 | + MesWmStockTakingTaskDO task = stockTakingTaskMapper.selectById(id); | ||
| 127 | + if (task == null) { | ||
| 128 | + throw exception(WM_STOCK_TAKING_TASK_NOT_EXISTS); | ||
| 129 | + } | ||
| 130 | + if (ObjUtil.notEqual(MesWmStockTakingTaskStatusEnum.PREPARE.getStatus(), task.getStatus())) { | ||
| 131 | + throw exception(WM_STOCK_TAKING_TASK_NOT_PREPARE); | ||
| 132 | + } | ||
| 133 | + return task; | ||
| 134 | + } | ||
| 135 | + | ||
| 136 | + /** | ||
| 137 | + * 构建库存查询条件 | ||
| 138 | + * | ||
| 139 | + * @param task 盘点任务 | ||
| 140 | + * @return 查询条件 VO | ||
| 141 | + */ | ||
| 142 | + private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) { | ||
| 143 | + // 1. 从方案参数中提取过滤条件 | ||
| 144 | + List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamMapper.selectListByPlanId(task.getPlanId()); | ||
| 145 | + Assert.notEmpty(params, "盘点方案参数不能为空"); | ||
| 146 | + | ||
| 147 | + // 2.1 拼接通用参数 | ||
| 148 | + MesWmMaterialStockListReqVO reqVO = new MesWmMaterialStockListReqVO() | ||
| 149 | + .setWarehouseId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.WAREHOUSE.getType())) | ||
| 150 | + .setLocationId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.LOCATION.getType())) | ||
| 151 | + .setAreaId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.AREA.getType())) | ||
| 152 | + .setItemId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.ITEM.getType())) | ||
| 153 | + .setBatchId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.BATCH.getType())); | ||
| 154 | + // 2.2 对于动态盘点,设置时间参数并校验 | ||
| 155 | + if (MesWmStockTakingTypeEnum.DYNAMIC.getType().equals(task.getType())) { | ||
| 156 | + Assert.notNull(task.getStartTime(), "动态盘点开始时间不能为空"); | ||
| 157 | + Assert.notNull(task.getEndTime(), "动态盘点结束时间不能为空"); | ||
| 158 | + reqVO.setStartTime(task.getStartTime()).setEndTime(task.getEndTime()); | ||
| 159 | + } | ||
| 160 | + return reqVO; | ||
| 161 | + } | ||
| 162 | + | ||
| 163 | + /** | ||
| 164 | + * 从参数列表中提取第一个匹配类型的参数 ID | ||
| 165 | + * | ||
| 166 | + * @param params 参数列表 | ||
| 167 | + * @param type 参数类型 | ||
| 168 | + * @return 参数 ID(如果有多个,取第一个) | ||
| 169 | + */ | ||
| 170 | + private Long extractMesWmStockTakingPlanParamValueId(List<MesWmStockTakingPlanParamDO> params, Integer type) { | ||
| 171 | + MesWmStockTakingPlanParamDO param = CollUtil.findOne(params, | ||
| 172 | + item -> Objects.equals(item.getType(), type) && item.getValueId() != null); | ||
| 173 | + return param != null ? param.getValueId() : null; | ||
| 174 | + } | ||
| 175 | + | ||
| 176 | + // TODO @芋艿:在确认下这个逻辑; | ||
| 177 | + private BigDecimal defaultQuantity(BigDecimal quantity) { | ||
| 178 | + return quantity == null ? BigDecimal.ZERO : quantity; | ||
| 179 | + } | ||
| 180 | + | ||
| 181 | +} |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskService.java
| 1 | package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; | 1 | package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineBatchUpdateReqVO; | ||
| 5 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; | 4 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; |
| 6 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; | 5 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; |
| 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; | 6 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; |
| 8 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | ||
| 9 | import jakarta.validation.Valid; | 7 | import jakarta.validation.Valid; |
| 10 | 8 | ||
| 11 | -import java.util.Collection; | ||
| 12 | -import java.util.List; | ||
| 13 | -import java.util.Map; | ||
| 14 | - | ||
| 15 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; | ||
| 16 | - | ||
| 17 | /** | 9 | /** |
| 18 | * MES 盘点任务 Service 接口 | 10 | * MES 盘点任务 Service 接口 |
| 19 | * | 11 | * |
| @@ -65,13 +57,6 @@ public interface MesWmStockTakingTaskService { | @@ -65,13 +57,6 @@ public interface MesWmStockTakingTaskService { | ||
| 65 | void cancelStockTakingTask(Long id); | 57 | void cancelStockTakingTask(Long id); |
| 66 | 58 | ||
| 67 | /** | 59 | /** |
| 68 | - * 批量更新盘点任务行 | ||
| 69 | - * | ||
| 70 | - * @param updateReqVO 更新信息 | ||
| 71 | - */ | ||
| 72 | - void updateStockTakingTaskLines(@Valid MesWmStockTakingTaskLineBatchUpdateReqVO updateReqVO); | ||
| 73 | - | ||
| 74 | - /** | ||
| 75 | * 获得盘点任务 | 60 | * 获得盘点任务 |
| 76 | * | 61 | * |
| 77 | * @param id 盘点任务编号 | 62 | * @param id 盘点任务编号 |
| @@ -88,24 +73,6 @@ public interface MesWmStockTakingTaskService { | @@ -88,24 +73,6 @@ public interface MesWmStockTakingTaskService { | ||
| 88 | MesWmStockTakingTaskDO validateStockTakingTaskExists(Long id); | 73 | MesWmStockTakingTaskDO validateStockTakingTaskExists(Long id); |
| 89 | 74 | ||
| 90 | /** | 75 | /** |
| 91 | - * 获得盘点任务列表 | ||
| 92 | - * | ||
| 93 | - * @param ids 盘点任务编号集合 | ||
| 94 | - * @return 盘点任务列表 | ||
| 95 | - */ | ||
| 96 | - List<MesWmStockTakingTaskDO> getStockTakingTaskList(Collection<Long> ids); | ||
| 97 | - | ||
| 98 | - /** | ||
| 99 | - * 获得盘点任务 Map | ||
| 100 | - * | ||
| 101 | - * @param ids 盘点任务编号集合 | ||
| 102 | - * @return 盘点任务 Map | ||
| 103 | - */ | ||
| 104 | - default Map<Long, MesWmStockTakingTaskDO> getStockTakingTaskMap(Collection<Long> ids) { | ||
| 105 | - return convertMap(getStockTakingTaskList(ids), MesWmStockTakingTaskDO::getId); | ||
| 106 | - } | ||
| 107 | - | ||
| 108 | - /** | ||
| 109 | * 分页查询盘点任务 | 76 | * 分页查询盘点任务 |
| 110 | * | 77 | * |
| 111 | * @param pageReqVO 分页查询条件 | 78 | * @param pageReqVO 分页查询条件 |
| @@ -113,12 +80,4 @@ public interface MesWmStockTakingTaskService { | @@ -113,12 +80,4 @@ public interface MesWmStockTakingTaskService { | ||
| 113 | */ | 80 | */ |
| 114 | PageResult<MesWmStockTakingTaskDO> getStockTakingTaskPage(MesWmStockTakingTaskPageReqVO pageReqVO); | 81 | PageResult<MesWmStockTakingTaskDO> getStockTakingTaskPage(MesWmStockTakingTaskPageReqVO pageReqVO); |
| 115 | 82 | ||
| 116 | - /** | ||
| 117 | - * 获得盘点任务行列表 | ||
| 118 | - * | ||
| 119 | - * @param taskId 盘点任务编号 | ||
| 120 | - * @return 盘点任务行列表 | ||
| 121 | - */ | ||
| 122 | - List<MesWmStockTakingTaskLineDO> getStockTakingTaskLineList(Long taskId); | ||
| 123 | - | ||
| 124 | } | 83 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/stocktaking/task/MesWmStockTakingTaskServiceImpl.java
| 1 | package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; | 1 | package cn.iocoder.yudao.module.mes.service.wm.stocktaking.task; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.lang.Assert; | 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; | 7 | import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockFreezeReqVO; |
| 8 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.materialstock.vo.MesWmMaterialStockListReqVO; | ||
| 9 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; | 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskPageReqVO; |
| 10 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; | 9 | import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.MesWmStockTakingTaskSaveReqVO; |
| 11 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.stocktaking.task.vo.line.MesWmStockTakingTaskLineBatchUpdateReqVO; | ||
| 12 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.materialstock.MesWmMaterialStockDO; | ||
| 13 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.plan.MesWmStockTakingPlanParamDO; | ||
| 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; | 10 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskDO; |
| 15 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; | 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskLineDO; |
| 16 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskResultDO; | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.stocktaking.task.MesWmStockTakingTaskResultDO; |
| 17 | -import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.plan.MesWmStockTakingPlanMapper; | ||
| 18 | -import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.plan.MesWmStockTakingPlanParamMapper; | ||
| 19 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper; | 13 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskLineMapper; |
| 20 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskMapper; | 14 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskMapper; |
| 21 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskResultMapper; | 15 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.stocktaking.task.MesWmStockTakingTaskResultMapper; |
| 22 | -import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingPlanParamTypeEnum; | ||
| 23 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; | 16 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskLineStatusEnum; |
| 24 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskStatusEnum; | 17 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTaskStatusEnum; |
| 25 | -import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockTakingTypeEnum; | ||
| 26 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; | 18 | import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; |
| 19 | +import cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanService; | ||
| 27 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | 20 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| 28 | import jakarta.annotation.Resource; | 21 | import jakarta.annotation.Resource; |
| 29 | import org.springframework.stereotype.Service; | 22 | import org.springframework.stereotype.Service; |
| @@ -32,11 +25,10 @@ import org.springframework.validation.annotation.Validated; | @@ -32,11 +25,10 @@ import org.springframework.validation.annotation.Validated; | ||
| 32 | 25 | ||
| 33 | import java.math.BigDecimal; | 26 | import java.math.BigDecimal; |
| 34 | import java.time.LocalDateTime; | 27 | import java.time.LocalDateTime; |
| 35 | -import java.util.*; | ||
| 36 | -import java.util.stream.Collectors; | 28 | +import java.util.List; |
| 29 | +import java.util.Objects; | ||
| 37 | 30 | ||
| 38 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 31 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 39 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||
| 40 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; | 32 | import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; |
| 41 | 33 | ||
| 42 | /** | 34 | /** |
| @@ -50,20 +42,21 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -50,20 +42,21 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 50 | 42 | ||
| 51 | @Resource | 43 | @Resource |
| 52 | private MesWmStockTakingTaskMapper stockTakingTaskMapper; | 44 | private MesWmStockTakingTaskMapper stockTakingTaskMapper; |
| 45 | + // TODO @芋艿:看看怎么清理掉,这块的依赖;应该调用对方的 service | ||
| 53 | @Resource | 46 | @Resource |
| 54 | private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; | 47 | private MesWmStockTakingTaskLineMapper stockTakingTaskLineMapper; |
| 48 | + // TODO @芋艿:看看怎么清理掉,这块的依赖;应该调用对方的 service | ||
| 55 | @Resource | 49 | @Resource |
| 56 | private MesWmStockTakingTaskResultMapper stockTakingTaskResultMapper; | 50 | private MesWmStockTakingTaskResultMapper stockTakingTaskResultMapper; |
| 57 | - @Resource | ||
| 58 | - private MesWmStockTakingPlanParamMapper stockTakingPlanParamMapper; | ||
| 59 | - @Resource | ||
| 60 | - private MesWmStockTakingPlanMapper stockTakingPlanMapper; | 51 | + |
| 61 | @Resource | 52 | @Resource |
| 62 | private MesWmMaterialStockService materialStockService; | 53 | private MesWmMaterialStockService materialStockService; |
| 63 | @Resource | 54 | @Resource |
| 64 | private AdminUserApi adminUserApi; | 55 | private AdminUserApi adminUserApi; |
| 65 | @Resource | 56 | @Resource |
| 66 | - private cn.iocoder.yudao.module.mes.service.wm.stocktaking.plan.MesWmStockTakingPlanService stockTakingPlanService; | 57 | + private MesWmStockTakingPlanService stockTakingPlanService; |
| 58 | + @Resource | ||
| 59 | + private MesWmStockTakingTaskLineService stockTakingTaskLineService; | ||
| 67 | 60 | ||
| 68 | @Override | 61 | @Override |
| 69 | @Transactional(rollbackFor = Exception.class) | 62 | @Transactional(rollbackFor = Exception.class) |
| @@ -73,6 +66,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -73,6 +66,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 73 | // 1.2 校验方案存在 | 66 | // 1.2 校验方案存在 |
| 74 | adminUserApi.validateUser(createReqVO.getUserId()); | 67 | adminUserApi.validateUser(createReqVO.getUserId()); |
| 75 | // 1.3 校验方案可用 | 68 | // 1.3 校验方案可用 |
| 69 | + // TODO @芋艿:貌似可以 planId 不填写;无 plan 就手动维护; | ||
| 76 | stockTakingPlanService.validateStockTakingPlanEnabled(createReqVO.getPlanId()); | 70 | stockTakingPlanService.validateStockTakingPlanEnabled(createReqVO.getPlanId()); |
| 77 | 71 | ||
| 78 | // 2. 插入任务 | 72 | // 2. 插入任务 |
| @@ -81,7 +75,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -81,7 +75,8 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 81 | stockTakingTaskMapper.insert(task); | 75 | stockTakingTaskMapper.insert(task); |
| 82 | 76 | ||
| 83 | // 3. 根据方案生成盘点明细行 | 77 | // 3. 根据方案生成盘点明细行 |
| 84 | - generateStockTakingLines(task); | 78 | + // TODO @AI:有 plan 的情况下,才类似操作; |
| 79 | + stockTakingTaskLineService.generateStockTakingLines(task); | ||
| 85 | return task.getId(); | 80 | return task.getId(); |
| 86 | } | 81 | } |
| 87 | 82 | ||
| @@ -95,6 +90,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -95,6 +90,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 95 | // 1.3 校验方案存在 | 90 | // 1.3 校验方案存在 |
| 96 | adminUserApi.validateUser(updateReqVO.getUserId()); | 91 | adminUserApi.validateUser(updateReqVO.getUserId()); |
| 97 | // 1.4 校验方案可用 | 92 | // 1.4 校验方案可用 |
| 93 | + // TODO @芋艿:貌似可以 planId 不填写;无 plan 就手动维护; | ||
| 98 | stockTakingPlanService.validateStockTakingPlanEnabled(updateReqVO.getPlanId()); | 94 | stockTakingPlanService.validateStockTakingPlanEnabled(updateReqVO.getPlanId()); |
| 99 | 95 | ||
| 100 | // 2. 更新任务 | 96 | // 2. 更新任务 |
| @@ -102,8 +98,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -102,8 +98,9 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 102 | stockTakingTaskMapper.updateById(updateObj); | 98 | stockTakingTaskMapper.updateById(updateObj); |
| 103 | 99 | ||
| 104 | // 3. 删除老的明细,重新生成新的 | 100 | // 3. 删除老的明细,重新生成新的 |
| 101 | + // TODO @AI:有 plan 的情况下,才类似操作; | ||
| 105 | stockTakingTaskLineMapper.deleteByTaskId(updateReqVO.getId()); | 102 | stockTakingTaskLineMapper.deleteByTaskId(updateReqVO.getId()); |
| 106 | - generateStockTakingLines(updateObj); | 103 | + stockTakingTaskLineService.generateStockTakingLines(updateObj); |
| 107 | } | 104 | } |
| 108 | 105 | ||
| 109 | @Override | 106 | @Override |
| @@ -144,79 +141,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -144,79 +141,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 144 | } | 141 | } |
| 145 | } | 142 | } |
| 146 | 143 | ||
| 147 | - /** | ||
| 148 | - * 根据盘点方案生成盘点明细行 | ||
| 149 | - * | ||
| 150 | - * @param task 盘点任务 | ||
| 151 | - */ | ||
| 152 | - private void generateStockTakingLines(MesWmStockTakingTaskDO task) { | ||
| 153 | - // 1.1 构建查询条件(包含动态盘点时间校验) | ||
| 154 | - MesWmMaterialStockListReqVO reqVO = buildStockQueryReqVO(task); | ||
| 155 | - // 1.2 查询物料库存 | ||
| 156 | - List<MesWmMaterialStockDO> stocks = materialStockService.getMaterialStockList(reqVO); | ||
| 157 | - if (CollUtil.isEmpty(stocks)) { | ||
| 158 | - throw exception(WM_STOCK_TAKING_TASK_NO_STOCK); | ||
| 159 | - } | ||
| 160 | - | ||
| 161 | - // 2. 批量生成明细行 | ||
| 162 | - // TODO DONE @AI:把 stocks 作为参数,传递给 stocktakingTaskLineService,更收敛;(当前直接插入更简洁) | ||
| 163 | - List<MesWmStockTakingTaskLineDO> lines = new ArrayList<>(stocks.size()); | ||
| 164 | - for (MesWmMaterialStockDO stock : stocks) { | ||
| 165 | - MesWmStockTakingTaskLineDO line = MesWmStockTakingTaskLineDO.builder() | ||
| 166 | - .taskId(task.getId()) | ||
| 167 | - .materialStockId(stock.getId()) | ||
| 168 | - .itemId(stock.getItemId()) | ||
| 169 | - .batchId(stock.getBatchId()) | ||
| 170 | - .quantity(defaultQuantity(stock.getQuantityOnhand())) | ||
| 171 | - .warehouseId(stock.getWarehouseId()) | ||
| 172 | - .locationId(stock.getLocationId()) | ||
| 173 | - .areaId(stock.getAreaId()) | ||
| 174 | - .status(MesWmStockTakingTaskLineStatusEnum.LOSS.getStatus()) | ||
| 175 | - .build(); | ||
| 176 | - lines.add(line); | ||
| 177 | - } | ||
| 178 | - stockTakingTaskLineMapper.insertBatch(lines); | ||
| 179 | - } | ||
| 180 | - | ||
| 181 | - /** | ||
| 182 | - * 构建库存查询条件 | ||
| 183 | - * | ||
| 184 | - * @param task 盘点任务 | ||
| 185 | - * @return 查询条件 VO | ||
| 186 | - */ | ||
| 187 | - private MesWmMaterialStockListReqVO buildStockQueryReqVO(MesWmStockTakingTaskDO task) { | ||
| 188 | - // 1. 从方案参数中提取过滤条件 | ||
| 189 | - List<MesWmStockTakingPlanParamDO> params = stockTakingPlanParamMapper.selectListByPlanId(task.getPlanId()); | ||
| 190 | - Assert.notEmpty(params, "盘点方案参数不能为空"); | ||
| 191 | - | ||
| 192 | - // 2.1 拼接通用参数 | ||
| 193 | - MesWmMaterialStockListReqVO reqVO = new MesWmMaterialStockListReqVO() | ||
| 194 | - .setWarehouseId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.WAREHOUSE.getType())) | ||
| 195 | - .setLocationId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.LOCATION.getType())) | ||
| 196 | - .setAreaId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.AREA.getType())) | ||
| 197 | - .setItemId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.ITEM.getType())) | ||
| 198 | - .setBatchId(extractMesWmStockTakingPlanParamValueId(params, MesWmStockTakingPlanParamTypeEnum.BATCH.getType())); | ||
| 199 | - // 2.2 对于动态盘点,设置时间参数并校验 | ||
| 200 | - if (MesWmStockTakingTypeEnum.DYNAMIC.getType().equals(task.getType())) { | ||
| 201 | - Assert.notNull(task.getStartTime(), "动态盘点开始时间不能为空"); | ||
| 202 | - Assert.notNull(task.getEndTime(), "动态盘点结束时间不能为空"); | ||
| 203 | - reqVO.setStartTime(task.getStartTime()).setEndTime(task.getEndTime()); | ||
| 204 | - } | ||
| 205 | - return reqVO; | ||
| 206 | - } | ||
| 207 | - | ||
| 208 | - /** | ||
| 209 | - * 从参数列表中提取第一个匹配类型的参数 ID | ||
| 210 | - * | ||
| 211 | - * @param params 参数列表 | ||
| 212 | - * @param type 参数类型 | ||
| 213 | - * @return 参数 ID(如果有多个,取第一个) | ||
| 214 | - */ | ||
| 215 | - private Long extractMesWmStockTakingPlanParamValueId(List<MesWmStockTakingPlanParamDO> params, Integer type) { | ||
| 216 | - MesWmStockTakingPlanParamDO param = CollUtil.findOne(params, | ||
| 217 | - item -> Objects.equals(item.getType(), type) && item.getValueId() != null); | ||
| 218 | - return param != null ? param.getValueId() : null; | ||
| 219 | - } | ||
| 220 | 144 | ||
| 221 | @Override | 145 | @Override |
| 222 | @Transactional(rollbackFor = Exception.class) | 146 | @Transactional(rollbackFor = Exception.class) |
| @@ -234,8 +158,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -234,8 +158,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 234 | 158 | ||
| 235 | stockTakingTaskResultMapper.deleteByTaskId(id); | 159 | stockTakingTaskResultMapper.deleteByTaskId(id); |
| 236 | for (MesWmStockTakingTaskLineDO line : lines) { | 160 | for (MesWmStockTakingTaskLineDO line : lines) { |
| 237 | - if (MesWmStockTakingTaskLineStatusEnum.NORMAL.getStatus().equals(line.getStatus()) | ||
| 238 | - || MesWmStockTakingTaskLineStatusEnum.UNCOUNTED.getStatus().equals(line.getStatus())) { | 161 | + if (MesWmStockTakingTaskLineStatusEnum.NORMAL.getStatus().equals(line.getStatus())) { |
| 239 | continue; | 162 | continue; |
| 240 | } | 163 | } |
| 241 | stockTakingTaskResultMapper.insert(MesWmStockTakingTaskResultDO.builder() | 164 | stockTakingTaskResultMapper.insert(MesWmStockTakingTaskResultDO.builder() |
| @@ -277,30 +200,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -277,30 +200,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 277 | } | 200 | } |
| 278 | 201 | ||
| 279 | @Override | 202 | @Override |
| 280 | - @Transactional(rollbackFor = Exception.class) | ||
| 281 | - public void updateStockTakingTaskLines(MesWmStockTakingTaskLineBatchUpdateReqVO updateReqVO) { | ||
| 282 | - MesWmStockTakingTaskDO task = validateTaskExists(updateReqVO.getTaskId()); | ||
| 283 | - if (!MesWmStockTakingTaskStatusEnum.APPROVING.getStatus().equals(task.getStatus())) { | ||
| 284 | - throw exception(WM_STOCK_TAKING_TASK_NOT_APPROVING); | ||
| 285 | - } | ||
| 286 | - | ||
| 287 | - Set<Long> lineIds = convertSet(updateReqVO.getItems(), MesWmStockTakingTaskLineBatchUpdateReqVO.Item::getId); | ||
| 288 | - List<MesWmStockTakingTaskLineDO> lines = stockTakingTaskLineMapper.selectListByTaskIdAndIds(updateReqVO.getTaskId(), lineIds); | ||
| 289 | - if (lines.size() != updateReqVO.getItems().size()) { | ||
| 290 | - throw exception(WM_STOCK_TAKING_TASK_LINE_NOT_EXISTS); | ||
| 291 | - } | ||
| 292 | - Map<Long, MesWmStockTakingTaskLineDO> lineMap = lines.stream() | ||
| 293 | - .collect(Collectors.toMap(MesWmStockTakingTaskLineDO::getId, item -> item)); | ||
| 294 | - for (MesWmStockTakingTaskLineBatchUpdateReqVO.Item item : updateReqVO.getItems()) { | ||
| 295 | - MesWmStockTakingTaskLineDO line = lineMap.get(item.getId()); | ||
| 296 | - line.setTakingQuantity(item.getTakingQuantity()); | ||
| 297 | - line.setRemark(item.getRemark()); | ||
| 298 | - line.setStatus(resolveLineStatus(line.getQuantity(), item.getTakingQuantity())); | ||
| 299 | - stockTakingTaskLineMapper.updateById(line); | ||
| 300 | - } | ||
| 301 | - } | ||
| 302 | - | ||
| 303 | - @Override | ||
| 304 | public MesWmStockTakingTaskDO getStockTakingTask(Long id) { | 203 | public MesWmStockTakingTaskDO getStockTakingTask(Long id) { |
| 305 | return stockTakingTaskMapper.selectById(id); | 204 | return stockTakingTaskMapper.selectById(id); |
| 306 | } | 205 | } |
| @@ -311,23 +210,10 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -311,23 +210,10 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 311 | } | 210 | } |
| 312 | 211 | ||
| 313 | @Override | 212 | @Override |
| 314 | - public List<MesWmStockTakingTaskDO> getStockTakingTaskList(Collection<Long> ids) { | ||
| 315 | - if (CollUtil.isEmpty(ids)) { | ||
| 316 | - return Collections.emptyList(); | ||
| 317 | - } | ||
| 318 | - return stockTakingTaskMapper.selectByIds(ids); | ||
| 319 | - } | ||
| 320 | - | ||
| 321 | - @Override | ||
| 322 | public PageResult<MesWmStockTakingTaskDO> getStockTakingTaskPage(MesWmStockTakingTaskPageReqVO pageReqVO) { | 213 | public PageResult<MesWmStockTakingTaskDO> getStockTakingTaskPage(MesWmStockTakingTaskPageReqVO pageReqVO) { |
| 323 | return stockTakingTaskMapper.selectPage(pageReqVO); | 214 | return stockTakingTaskMapper.selectPage(pageReqVO); |
| 324 | } | 215 | } |
| 325 | 216 | ||
| 326 | - @Override | ||
| 327 | - public List<MesWmStockTakingTaskLineDO> getStockTakingTaskLineList(Long taskId) { | ||
| 328 | - return stockTakingTaskLineMapper.selectListByTaskId(taskId); | ||
| 329 | - } | ||
| 330 | - | ||
| 331 | private void updateFrozen(Long materialStockId, boolean frozen) { | 217 | private void updateFrozen(Long materialStockId, boolean frozen) { |
| 332 | MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO(); | 218 | MesWmMaterialStockFreezeReqVO reqVO = new MesWmMaterialStockFreezeReqVO(); |
| 333 | reqVO.setId(materialStockId); | 219 | reqVO.setId(materialStockId); |
| @@ -347,9 +233,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -347,9 +233,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 347 | } | 233 | } |
| 348 | 234 | ||
| 349 | private Integer resolveLineStatus(BigDecimal quantity, BigDecimal takingQuantity) { | 235 | private Integer resolveLineStatus(BigDecimal quantity, BigDecimal takingQuantity) { |
| 350 | - if (takingQuantity == null) { | ||
| 351 | - return MesWmStockTakingTaskLineStatusEnum.UNCOUNTED.getStatus(); | ||
| 352 | - } | ||
| 353 | int compare = takingQuantity.compareTo(defaultQuantity(quantity)); | 236 | int compare = takingQuantity.compareTo(defaultQuantity(quantity)); |
| 354 | if (compare == 0) { | 237 | if (compare == 0) { |
| 355 | return MesWmStockTakingTaskLineStatusEnum.NORMAL.getStatus(); | 238 | return MesWmStockTakingTaskLineStatusEnum.NORMAL.getStatus(); |
| @@ -376,12 +259,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -376,12 +259,6 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 376 | } | 259 | } |
| 377 | } | 260 | } |
| 378 | 261 | ||
| 379 | - private void validatePlanExists(Long id) { | ||
| 380 | - if (stockTakingPlanMapper.selectById(id) == null) { | ||
| 381 | - throw exception(WM_STOCK_TAKING_PLAN_NOT_EXISTS); | ||
| 382 | - } | ||
| 383 | - } | ||
| 384 | - | ||
| 385 | private MesWmStockTakingTaskDO validateTaskExists(Long id) { | 262 | private MesWmStockTakingTaskDO validateTaskExists(Long id) { |
| 386 | MesWmStockTakingTaskDO task = stockTakingTaskMapper.selectById(id); | 263 | MesWmStockTakingTaskDO task = stockTakingTaskMapper.selectById(id); |
| 387 | if (task == null) { | 264 | if (task == null) { |
| @@ -392,7 +269,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | @@ -392,7 +269,7 @@ public class MesWmStockTakingTaskServiceImpl implements MesWmStockTakingTaskServ | ||
| 392 | 269 | ||
| 393 | private MesWmStockTakingTaskDO validateTaskExistsAndPrepare(Long id) { | 270 | private MesWmStockTakingTaskDO validateTaskExistsAndPrepare(Long id) { |
| 394 | MesWmStockTakingTaskDO task = validateTaskExists(id); | 271 | MesWmStockTakingTaskDO task = validateTaskExists(id); |
| 395 | - if (!MesWmStockTakingTaskStatusEnum.PREPARE.getStatus().equals(task.getStatus())) { | 272 | + if (ObjUtil.notEqual(MesWmStockTakingTaskStatusEnum.PREPARE.getStatus(), task.getStatus())) { |
| 396 | throw exception(WM_STOCK_TAKING_TASK_NOT_PREPARE); | 273 | throw exception(WM_STOCK_TAKING_TASK_NOT_PREPARE); |
| 397 | } | 274 | } |
| 398 | return task; | 275 | return task; |