diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemController.java index 8f1ee66..7ac58ea 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/MesMdItemController.java @@ -72,6 +72,19 @@ public class MesMdItemController { return success(true); } + @PutMapping("/update-status") + @Operation(summary = "更新物料产品状态") + @Parameters({ + @Parameter(name = "id", description = "编号", required = true), + @Parameter(name = "status", description = "状态", required = true) + }) + @PreAuthorize("@ss.hasPermission('mes:md-item:update')") + public CommonResult updateItemStatus(@RequestParam("id") Long id, + @RequestParam("status") Integer status) { + itemService.updateItemStatus(id, status); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除物料产品") @Parameter(name = "id", description = "编号", required = true) @@ -87,7 +100,7 @@ public class MesMdItemController { @PreAuthorize("@ss.hasPermission('mes:md-item:query')") public CommonResult getItem(@RequestParam("id") Long id) { MesMdItemDO item = itemService.getItem(id); - return success(BeanUtils.toBean(item, MesMdItemRespVO.class)); + return success(buildItemVO(item)); } @GetMapping("/page") @@ -168,4 +181,11 @@ public class MesMdItemController { }); } + private MesMdItemRespVO buildItemVO(MesMdItemDO item) { + if (item == null) { + return null; + } + return CollUtil.getFirst(buildItemVOList(Collections.singletonList(item))); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemSaveReqVO.java index 8db1e36..975f689 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/item/vo/MesMdItemSaveReqVO.java @@ -33,10 +33,6 @@ public class MesMdItemSaveReqVO { @NotNull(message = "物料分类编号不能为空") private Long itemTypeId; - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @NotNull(message = "状态不能为空") - private Integer status; - @Schema(description = "是否启用安全库存", example = "false") private Boolean safeStockFlag; @@ -55,4 +51,4 @@ public class MesMdItemSaveReqVO { @Schema(description = "备注", example = "备注") private String remark; - } +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemService.java index 1fe85c0..46787b4 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemService.java @@ -37,6 +37,14 @@ public interface MesMdItemService { void updateItem(@Valid MesMdItemSaveReqVO updateReqVO); /** + * 更新物料产品状态 + * + * @param id 编号 + * @param status 状态 + */ + void updateItemStatus(Long id, Integer status); + + /** * 删除物料产品 * * @param id 编号 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java index f0b0126..07361b6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.service.md.item; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.exception.ServiceException; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -71,6 +72,7 @@ public class MesMdItemServiceImpl implements MesMdItemService { // 插入 MesMdItemDO item = BeanUtils.toBean(createReqVO, MesMdItemDO.class); + item.setStatus(CommonStatusEnum.DISABLE.getStatus()); // 默认禁用。信息完成后,再启用 clearStockIfNotSafe(item); // 如果未启用安全库存,清零库存上下限 itemMapper.insert(item); @@ -93,9 +95,6 @@ public class MesMdItemServiceImpl implements MesMdItemService { // 校验计量单位存在 validateUnitMeasureExists(updateReqVO.getUnitMeasureId()); - // 如果启用了批次管理且状态为开启,校验批次属性配置 - validateBatchConfigIfNeeded(updateReqVO); - // 更新 MesMdItemDO updateObj = BeanUtils.toBean(updateReqVO, MesMdItemDO.class); clearStockIfNotSafe(updateObj); // 如果未启用安全库存,清零库存上下限 @@ -103,6 +102,19 @@ public class MesMdItemServiceImpl implements MesMdItemService { } @Override + public void updateItemStatus(Long id, Integer status) { + // 校验存在 + MesMdItemDO item = validateItemExists(id); + // 如果启用,校验批次属性配置 + if (CommonStatusEnum.isEnable(status) && Boolean.TRUE.equals(item.getBatchFlag())) { + validateBatchConfigExists(id); + } + + // 更新状态 + itemMapper.updateById(new MesMdItemDO().setId(id).setStatus(status)); + } + + @Override @Transactional(rollbackFor = Exception.class) public void deleteItem(Long id) { // 校验存在 @@ -134,10 +146,7 @@ public class MesMdItemServiceImpl implements MesMdItemService { if (item == null) { return; } - if (id == null) { - throw exception(MD_ITEM_CODE_DUPLICATE); - } - if (!Objects.equals(item.getId(), id)) { + if (ObjUtil.notEqual(item.getId(), id)) { throw exception(MD_ITEM_CODE_DUPLICATE); } } @@ -147,10 +156,7 @@ public class MesMdItemServiceImpl implements MesMdItemService { if (item == null) { return; } - if (id == null) { - throw exception(MD_ITEM_NAME_DUPLICATE); - } - if (!Objects.equals(item.getId(), id)) { + if (ObjUtil.notEqual(item.getId(), id)) { throw exception(MD_ITEM_NAME_DUPLICATE); } } @@ -180,14 +186,8 @@ public class MesMdItemServiceImpl implements MesMdItemService { /** * 如果启用了批次管理且状态为开启,校验批次属性配置是否存在且至少一个属性为 true */ - private void validateBatchConfigIfNeeded(MesMdItemSaveReqVO reqVO) { - if (!Boolean.TRUE.equals(reqVO.getBatchFlag())) { - return; - } - if (!CommonStatusEnum.ENABLE.getStatus().equals(reqVO.getStatus())) { - return; - } - MesMdItemBatchConfigDO config = itemBatchConfigService.getItemBatchConfigByItemId(reqVO.getId()); + private void validateBatchConfigExists(Long itemId) { + MesMdItemBatchConfigDO config = itemBatchConfigService.getItemBatchConfigByItemId(itemId); if (config == null) { throw exception(MD_ITEM_BATCH_CONFIG_NOT_EXISTS); } @@ -306,6 +306,7 @@ public class MesMdItemServiceImpl implements MesMdItemService { } MesMdItemDO item = BeanUtils.toBean(importItem, MesMdItemDO.class); item.setUnitMeasureId(unitMeasure.getId()); + item.setStatus(CommonStatusEnum.DISABLE.getStatus()); // 默认禁用。信息完成后,再启用 clearStockIfNotSafe(item); itemMapper.insert(item); // 自动生成条码