From f99f8548f8637510198180dae9f1ae5258e9a069 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 1 Mar 2026 14:34:11 +0800 Subject: [PATCH] ✨ feat(mes): 重命名产品收货单相关类和接口 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java | 185 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptPageReqVO.java | 27 +++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptRespVO.java | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptSaveReqVO.java | 35 +++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailRespVO.java | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailSaveReqVO.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLinePageReqVO.java | 18 ++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineRespVO.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineSaveReqVO.java | 39 +++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptController.java | 185 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptDetailController.java | 140 -------------------------------------------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptLineController.java | 114 ------------------------------------------------------------------------------------------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptPageReqVO.java | 27 --------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptRespVO.java | 69 --------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptSaveReqVO.java | 35 ----------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailRespVO.java | 67 ------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailSaveReqVO.java | 47 ----------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLinePageReqVO.java | 18 ------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineRespVO.java | 49 ------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineSaveReqVO.java | 39 --------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDO.java | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDetailDO.java | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptLineDO.java | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDO.java | 67 ------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDetailDO.java | 84 ------------------------------------------------------------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptLineDO.java | 61 ------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptDetailMapper.java | 31 +++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptLineMapper.java | 32 ++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptMapper.java | 29 +++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptDetailMapper.java | 31 ------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptLineMapper.java | 32 -------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptMapper.java | 29 ----------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductReceiptStatusEnum.java | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductRecptStatusEnum.java | 68 -------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailService.java | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailServiceImpl.java | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineService.java | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptService.java | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java | 233 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailService.java | 74 -------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailServiceImpl.java | 104 -------------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineService.java | 69 --------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineServiceImpl.java | 100 ---------------------------------------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptService.java | 96 ------------------------------------------------------------------------------------------------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptServiceImpl.java | 233 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/detail/index.ts | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/index.ts | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/line/index.ts | 45 +++++++++++++++++++++++++++++++++++++++++++++ yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/detail/index.ts | 51 --------------------------------------------------- yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/index.ts | 72 ------------------------------------------------------------------------ yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/line/index.ts | 45 --------------------------------------------- 54 files changed, 2006 insertions(+), 2006 deletions(-) create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptPageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLinePageReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineRespVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptController.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptDetailController.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptLineController.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptPageReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailSaveReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLinePageReqVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineRespVO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineSaveReqVO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDetailDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptLineDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDetailDO.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptLineDO.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptDetailMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptLineMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptDetailMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptLineMapper.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptMapper.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductReceiptStatusEnum.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductRecptStatusEnum.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptService.java create mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailServiceImpl.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineServiceImpl.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptService.java delete mode 100644 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptServiceImpl.java create mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/detail/index.ts create mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/index.ts create mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/line/index.ts delete mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/detail/index.ts delete mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/index.ts delete mode 100644 yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/line/index.ts diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java new file mode 100644 index 0000000..16155c2 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptController.java @@ -0,0 +1,185 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; +import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; +import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - MES 产品收货单") +@RestController +@RequestMapping("/mes/wm/product-receipt") +@Validated +public class MesWmProductReceiptController { + + @Resource + private MesWmProductReceiptService productReceiptService; + + @Resource + private MesProWorkOrderService workOrderService; + + @Resource + private MesMdItemService itemService; + + @Resource + private MesMdUnitMeasureService unitMeasureService; + + @PostMapping("/create") + @Operation(summary = "创建产品收货单") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:create')") + public CommonResult createProductReceipt(@Valid @RequestBody MesWmProductReceiptSaveReqVO createReqVO) { + return success(productReceiptService.createProductReceipt(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "修改产品收货单") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult updateProductReceipt(@Valid @RequestBody MesWmProductReceiptSaveReqVO updateReqVO) { + productReceiptService.updateProductReceipt(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品收货单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:delete')") + public CommonResult deleteProductReceipt(@RequestParam("id") Long id) { + productReceiptService.deleteProductReceipt(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品收货单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult getProductReceipt(@RequestParam("id") Long id) { + MesWmProductReceiptDO receipt = productReceiptService.getProductReceipt(id); + if (receipt == null) { + return success(null); + } + return success(buildRespVOList(Collections.singletonList(receipt)).get(0)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品收货单分页") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult> getProductReceiptPage( + @Valid MesWmProductReceiptPageReqVO pageReqVO) { + PageResult pageResult = productReceiptService.getProductReceiptPage(pageReqVO); + return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出产品收货单 Excel") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProductReceiptExcel(@Valid MesWmProductReceiptPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + PageResult pageResult = productReceiptService.getProductReceiptPage(pageReqVO); + ExcelUtils.write(response, "产品收货单.xls", "数据", MesWmProductReceiptRespVO.class, + buildRespVOList(pageResult.getList())); + } + + @PutMapping("/submit") + @Operation(summary = "提交产品收货单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult submitProductReceipt(@RequestParam("id") Long id) { + productReceiptService.submitProductReceipt(id); + return success(true); + } + + @PutMapping("/stock") + @Operation(summary = "执行上架") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult stockProductReceipt(@RequestParam("id") Long id) { + productReceiptService.stockProductReceipt(id); + return success(true); + } + + @PutMapping("/execute") + @Operation(summary = "执行入库") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:execute')") + public CommonResult executeProductReceipt(@RequestParam("id") Long id) { + productReceiptService.executeProductReceipt(id); + return success(true); + } + + @PutMapping("/cancel") + @Operation(summary = "取消产品收货单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult cancelProductReceipt(@RequestParam("id") Long id) { + productReceiptService.cancelProductReceipt(id); + return success(true); + } + + @GetMapping("/check-quantity") + @Operation(summary = "校验产品收货单明细数量") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult checkProductReceiptQuantity(@RequestParam("id") Long id) { + return success(productReceiptService.checkProductReceiptQuantity(id)); + } + + // ==================== 拼接 VO ==================== + + private List buildRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1. 获得关联数据 + Map workOrderMap = workOrderService.getWorkOrderMap( + convertSet(list, MesWmProductReceiptDO::getWorkOrderId)); + Map itemMap = itemService.getItemMap( + convertSet(list, MesWmProductReceiptDO::getItemId)); + Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + // 2. 构建结果 + return BeanUtils.toBean(list, MesWmProductReceiptRespVO.class, vo -> { + MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), + workOrder -> vo.setWorkOrderCode(workOrder.getCode())); + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); + }); + }); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java new file mode 100644 index 0000000..9b5b9b0 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptDetailController.java @@ -0,0 +1,140 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; +import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptDetailService; +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - MES 产品收货单明细") +@RestController +@RequestMapping("/mes/wm/product-receipt-detail") +@Validated +public class MesWmProductReceiptDetailController { + + @Resource + private MesWmProductReceiptDetailService productReceiptDetailService; + + @Resource + private MesMdItemService itemService; + + @Resource + private MesMdUnitMeasureService unitMeasureService; + + @Resource + private MesWmWarehouseService warehouseService; + + @Resource + private MesWmWarehouseLocationService locationService; + + @Resource + private MesWmWarehouseAreaService areaService; + + @PostMapping("/create") + @Operation(summary = "创建产品收货单明细") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:create')") + public CommonResult createProductReceiptDetail(@Valid @RequestBody MesWmProductReceiptDetailSaveReqVO createReqVO) { + return success(productReceiptDetailService.createProductReceiptDetail(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "修改产品收货单明细") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult updateProductReceiptDetail(@Valid @RequestBody MesWmProductReceiptDetailSaveReqVO updateReqVO) { + productReceiptDetailService.updateProductReceiptDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品收货单明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:delete')") + public CommonResult deleteProductReceiptDetail(@RequestParam("id") Long id) { + productReceiptDetailService.deleteProductReceiptDetail(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品收货单明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult getProductReceiptDetail(@RequestParam("id") Long id) { + MesWmProductReceiptDetailDO detail = productReceiptDetailService.getProductReceiptDetail(id); + if (detail == null) { + return success(null); + } + return success(buildRespVOList(Collections.singletonList(detail)).get(0)); + } + + @GetMapping("/list-by-line") + @Operation(summary = "获得产品收货单明细列表(按行编号)") + @Parameter(name = "lineId", description = "行编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult> getProductReceiptDetailListByLineId( + @RequestParam("lineId") Long lineId) { + List list = productReceiptDetailService.getProductReceiptDetailListByLineId(lineId); + return success(buildRespVOList(list)); + } + + // ==================== 拼接 VO ==================== + + private List buildRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1. 获得关联数据 + Map itemMap = itemService.getItemMap( + convertSet(list, MesWmProductReceiptDetailDO::getItemId)); + Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + Map warehouseMap = warehouseService.getWarehouseMap( + convertSet(list, MesWmProductReceiptDetailDO::getWarehouseId)); + Map locationMap = locationService.getWarehouseLocationMap( + convertSet(list, MesWmProductReceiptDetailDO::getLocationId)); + Map areaMap = areaService.getWarehouseAreaMap( + convertSet(list, MesWmProductReceiptDetailDO::getAreaId)); + // 2. 构建结果 + return BeanUtils.toBean(list, MesWmProductReceiptDetailRespVO.class, vo -> { + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); + }); + MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), + warehouse -> vo.setWarehouseName(warehouse.getName())); + MapUtils.findAndThen(locationMap, vo.getLocationId(), + location -> vo.setLocationName(location.getName())); + MapUtils.findAndThen(areaMap, vo.getAreaId(), + area -> vo.setAreaName(area.getName())); + }); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java new file mode 100644 index 0000000..a4b969d --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/MesWmProductReceiptLineController.java @@ -0,0 +1,114 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; +import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; +import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptLineService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; + +@Tag(name = "管理后台 - MES 产品收货单行") +@RestController +@RequestMapping("/mes/wm/product-receipt-line") +@Validated +public class MesWmProductReceiptLineController { + + @Resource + private MesWmProductReceiptLineService productReceiptLineService; + + @Resource + private MesMdItemService itemService; + + @Resource + private MesMdUnitMeasureService unitMeasureService; + + @PostMapping("/create") + @Operation(summary = "创建产品收货单行") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:create')") + public CommonResult createProductReceiptLine(@Valid @RequestBody MesWmProductReceiptLineSaveReqVO createReqVO) { + return success(productReceiptLineService.createProductReceiptLine(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "修改产品收货单行") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:update')") + public CommonResult updateProductReceiptLine(@Valid @RequestBody MesWmProductReceiptLineSaveReqVO updateReqVO) { + productReceiptLineService.updateProductReceiptLine(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除产品收货单行") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:delete')") + public CommonResult deleteProductReceiptLine(@RequestParam("id") Long id) { + productReceiptLineService.deleteProductReceiptLine(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得产品收货单行") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult getProductReceiptLine(@RequestParam("id") Long id) { + MesWmProductReceiptLineDO line = productReceiptLineService.getProductReceiptLine(id); + if (line == null) { + return success(null); + } + return success(buildRespVOList(Collections.singletonList(line)).get(0)); + } + + @GetMapping("/page") + @Operation(summary = "获得产品收货单行分页") + @PreAuthorize("@ss.hasPermission('mes:wm-product-receipt:query')") + public CommonResult> getProductReceiptLinePage( + @Valid MesWmProductReceiptLinePageReqVO pageReqVO) { + PageResult pageResult = productReceiptLineService.getProductReceiptLinePage(pageReqVO); + return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); + } + + // ==================== 拼接 VO ==================== + + private List buildRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 1. 获得关联数据 + Map itemMap = itemService.getItemMap( + convertSet(list, MesWmProductReceiptLineDO::getItemId)); + Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + // 2. 构建结果 + return BeanUtils.toBean(list, MesWmProductReceiptLineRespVO.class, vo -> { + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); + }); + }); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptPageReqVO.java new file mode 100644 index 0000000..27cdeef --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptPageReqVO.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 产品收货单分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesWmProductReceiptPageReqVO extends PageParam { + + @Schema(description = "收货单编码", example = "PR202603010001") + private String code; + + @Schema(description = "收货单名称", example = "产品收货单-工单001") + private String name; + + @Schema(description = "生产工单编号", example = "1") + private Long workOrderId; + + @Schema(description = "产品物料编号", example = "1") + private Long itemId; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptRespVO.java new file mode 100644 index 0000000..617bde9 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptRespVO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 产品收货单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MesWmProductReceiptRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "收货单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PR202603010001") + @ExcelProperty("收货单编码") + private String code; + + @Schema(description = "收货单名称", example = "产品收货单-工单001") + @ExcelProperty("收货单名称") + private String name; + + @Schema(description = "生产工单编号", example = "1") + private Long workOrderId; + + @Schema(description = "生产工单编码", example = "WO202603010001") + @ExcelProperty("生产工单") + private String workOrderCode; + + @Schema(description = "产品物料编号", example = "1") + private Long itemId; + + @Schema(description = "产品物料编码", example = "P001") + @ExcelProperty("产品物料编码") + private String itemCode; + + @Schema(description = "产品物料名称", example = "成品A") + @ExcelProperty("产品物料名称") + private String itemName; + + @Schema(description = "规格型号", example = "标准型") + @ExcelProperty("规格型号") + private String specification; + + @Schema(description = "计量单位名称", example = "件") + @ExcelProperty("计量单位") + private String unitMeasureName; + + @Schema(description = "收货日期") + @ExcelProperty("收货日期") + private LocalDateTime receiptDate; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") + @ExcelProperty("状态") + private Integer status; + + @Schema(description = "备注", example = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptSaveReqVO.java new file mode 100644 index 0000000..19d8e34 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/MesWmProductReceiptSaveReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 产品收货单新增/修改 Request VO") +@Data +public class MesWmProductReceiptSaveReqVO { + + @Schema(description = "编号", example = "1024") + private Long id; + + @Schema(description = "收货单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PR202603010001") + @NotEmpty(message = "收货单编码不能为空") + private String code; + + @Schema(description = "收货单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "产品收货单-工单001") + @NotEmpty(message = "收货单名称不能为空") + private String name; + + @Schema(description = "生产工单编号", example = "1") + private Long workOrderId; + + @Schema(description = "收货日期", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "收货日期不能为空") + private LocalDateTime receiptDate; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailRespVO.java new file mode 100644 index 0000000..1bbff03 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailRespVO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 产品收货单明细 Response VO") +@Data +public class MesWmProductReceiptDetailRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "收货单行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long lineId; + + @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long receiptId; + + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long itemId; + + @Schema(description = "物料编码", example = "P001") + private String itemCode; + + @Schema(description = "物料名称", example = "成品A") + private String itemName; + + @Schema(description = "规格型号", example = "标准型") + private String specification; + + @Schema(description = "计量单位名称", example = "件") + private String unitMeasureName; + + @Schema(description = "上架数量", example = "100.00") + private BigDecimal quantity; + + @Schema(description = "批次编号", example = "1") + private Long batchId; + + @Schema(description = "仓库编号", example = "1") + private Long warehouseId; + + @Schema(description = "仓库名称", example = "成品仓") + private String warehouseName; + + @Schema(description = "库区编号", example = "1") + private Long locationId; + + @Schema(description = "库区名称", example = "A区") + private String locationName; + + @Schema(description = "库位编号", example = "1") + private Long areaId; + + @Schema(description = "库位名称", example = "A-01") + private String areaName; + + @Schema(description = "备注", example = "备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailSaveReqVO.java new file mode 100644 index 0000000..dedda4b --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/detail/MesWmProductReceiptDetailSaveReqVO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - MES 产品收货单明细新增/修改 Request VO") +@Data +public class MesWmProductReceiptDetailSaveReqVO { + + @Schema(description = "编号", example = "1024") + private Long id; + + @Schema(description = "收货单行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "收货单行编号不能为空") + private Long lineId; + + @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "收货单编号不能为空") + private Long receiptId; + + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "物料编号不能为空") + private Long itemId; + + @Schema(description = "上架数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") + @NotNull(message = "上架数量不能为空") + private BigDecimal quantity; + + @Schema(description = "批次编号", example = "1") + private Long batchId; + + @Schema(description = "仓库编号", example = "1") + private Long warehouseId; + + @Schema(description = "库区编号", example = "1") + private Long locationId; + + @Schema(description = "库位编号", example = "1") + private Long areaId; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLinePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLinePageReqVO.java new file mode 100644 index 0000000..c539376 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLinePageReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Schema(description = "管理后台 - MES 产品收货单行分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MesWmProductReceiptLinePageReqVO extends PageParam { + + @Schema(description = "收货单编号", example = "1") + private Long receiptId; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineRespVO.java new file mode 100644 index 0000000..58ece5e --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - MES 产品收货单行 Response VO") +@Data +public class MesWmProductReceiptLineRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long receiptId; + + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Long itemId; + + @Schema(description = "物料编码", example = "P001") + private String itemCode; + + @Schema(description = "物料名称", example = "成品A") + private String itemName; + + @Schema(description = "规格型号", example = "标准型") + private String specification; + + @Schema(description = "计量单位名称", example = "件") + private String unitMeasureName; + + @Schema(description = "收货数量", example = "100.00") + private BigDecimal quantity; + + @Schema(description = "批次编号", example = "1") + private Long batchId; + + @Schema(description = "批次号", example = "BATCH20260301001") + private String batchCode; + + @Schema(description = "备注", example = "备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineSaveReqVO.java new file mode 100644 index 0000000..5a97412 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productreceipt/vo/line/MesWmProductReceiptLineSaveReqVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - MES 产品收货单行新增/修改 Request VO") +@Data +public class MesWmProductReceiptLineSaveReqVO { + + @Schema(description = "编号", example = "1024") + private Long id; + + @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "收货单编号不能为空") + private Long receiptId; + + @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "物料编号不能为空") + private Long itemId; + + @Schema(description = "收货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") + @NotNull(message = "收货数量不能为空") + @Positive(message = "收货数量必须大于 0") + private BigDecimal quantity; + + @Schema(description = "批次编号", example = "1") + private Long batchId; + + @Schema(description = "批次号", example = "BATCH20260301001") + private String batchCode; + + @Schema(description = "备注", example = "备注") + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptController.java deleted file mode 100644 index 9915e2e..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptController.java +++ /dev/null @@ -1,185 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDO; -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; -import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; -import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; -import cn.iocoder.yudao.module.mes.service.wm.productrecpt.MesWmProductRecptService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; - -@Tag(name = "管理后台 - MES 产品收货单") -@RestController -@RequestMapping("/mes/wm/product-recpt") -@Validated -public class MesWmProductRecptController { - - @Resource - private MesWmProductRecptService productRecptService; - - @Resource - private MesProWorkOrderService workOrderService; - - @Resource - private MesMdItemService itemService; - - @Resource - private MesMdUnitMeasureService unitMeasureService; - - @PostMapping("/create") - @Operation(summary = "创建产品收货单") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:create')") - public CommonResult createProductRecpt(@Valid @RequestBody MesWmProductRecptSaveReqVO createReqVO) { - return success(productRecptService.createProductRecpt(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "修改产品收货单") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult updateProductRecpt(@Valid @RequestBody MesWmProductRecptSaveReqVO updateReqVO) { - productRecptService.updateProductRecpt(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品收货单") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:delete')") - public CommonResult deleteProductRecpt(@RequestParam("id") Long id) { - productRecptService.deleteProductRecpt(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品收货单") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult getProductRecpt(@RequestParam("id") Long id) { - MesWmProductRecptDO recpt = productRecptService.getProductRecpt(id); - if (recpt == null) { - return success(null); - } - return success(buildRespVOList(Collections.singletonList(recpt)).get(0)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品收货单分页") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult> getProductRecptPage( - @Valid MesWmProductRecptPageReqVO pageReqVO) { - PageResult pageResult = productRecptService.getProductRecptPage(pageReqVO); - return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出产品收货单 Excel") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:export')") - @ApiAccessLog(operateType = EXPORT) - public void exportProductRecptExcel(@Valid MesWmProductRecptPageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - PageResult pageResult = productRecptService.getProductRecptPage(pageReqVO); - ExcelUtils.write(response, "产品收货单.xls", "数据", MesWmProductRecptRespVO.class, - buildRespVOList(pageResult.getList())); - } - - @PutMapping("/submit") - @Operation(summary = "提交产品收货单") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult submitProductRecpt(@RequestParam("id") Long id) { - productRecptService.submitProductRecpt(id); - return success(true); - } - - @PutMapping("/stock") - @Operation(summary = "执行上架") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult stockProductRecpt(@RequestParam("id") Long id) { - productRecptService.stockProductRecpt(id); - return success(true); - } - - @PutMapping("/execute") - @Operation(summary = "执行入库") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:execute')") - public CommonResult executeProductRecpt(@RequestParam("id") Long id) { - productRecptService.executeProductRecpt(id); - return success(true); - } - - @PutMapping("/cancel") - @Operation(summary = "取消产品收货单") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult cancelProductRecpt(@RequestParam("id") Long id) { - productRecptService.cancelProductRecpt(id); - return success(true); - } - - @GetMapping("/check-quantity") - @Operation(summary = "校验产品收货单明细数量") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult checkProductRecptQuantity(@RequestParam("id") Long id) { - return success(productRecptService.checkProductRecptQuantity(id)); - } - - // ==================== 拼接 VO ==================== - - private List buildRespVOList(List list) { - if (CollUtil.isEmpty(list)) { - return Collections.emptyList(); - } - // 1. 获得关联数据 - Map workOrderMap = workOrderService.getWorkOrderMap( - convertSet(list, MesWmProductRecptDO::getWorkOrderId)); - Map itemMap = itemService.getItemMap( - convertSet(list, MesWmProductRecptDO::getItemId)); - Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( - convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); - // 2. 构建结果 - return BeanUtils.toBean(list, MesWmProductRecptRespVO.class, vo -> { - MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), - workOrder -> vo.setWorkOrderCode(workOrder.getCode())); - MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { - vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); - MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), - unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); - }); - }); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptDetailController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptDetailController.java deleted file mode 100644 index 82fc027..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptDetailController.java +++ /dev/null @@ -1,140 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail.MesWmProductRecptDetailRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail.MesWmProductRecptDetailSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDetailDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; -import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; -import cn.iocoder.yudao.module.mes.service.wm.productrecpt.MesWmProductRecptDetailService; -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; - -@Tag(name = "管理后台 - MES 产品收货单明细") -@RestController -@RequestMapping("/mes/wm/product-recpt-detail") -@Validated -public class MesWmProductRecptDetailController { - - @Resource - private MesWmProductRecptDetailService productRecptDetailService; - - @Resource - private MesMdItemService itemService; - - @Resource - private MesMdUnitMeasureService unitMeasureService; - - @Resource - private MesWmWarehouseService warehouseService; - - @Resource - private MesWmWarehouseLocationService locationService; - - @Resource - private MesWmWarehouseAreaService areaService; - - @PostMapping("/create") - @Operation(summary = "创建产品收货单明细") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:create')") - public CommonResult createProductRecptDetail(@Valid @RequestBody MesWmProductRecptDetailSaveReqVO createReqVO) { - return success(productRecptDetailService.createProductRecptDetail(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "修改产品收货单明细") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult updateProductRecptDetail(@Valid @RequestBody MesWmProductRecptDetailSaveReqVO updateReqVO) { - productRecptDetailService.updateProductRecptDetail(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品收货单明细") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:delete')") - public CommonResult deleteProductRecptDetail(@RequestParam("id") Long id) { - productRecptDetailService.deleteProductRecptDetail(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品收货单明细") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult getProductRecptDetail(@RequestParam("id") Long id) { - MesWmProductRecptDetailDO detail = productRecptDetailService.getProductRecptDetail(id); - if (detail == null) { - return success(null); - } - return success(buildRespVOList(Collections.singletonList(detail)).get(0)); - } - - @GetMapping("/list-by-line") - @Operation(summary = "获得产品收货单明细列表(按行编号)") - @Parameter(name = "lineId", description = "行编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult> getProductRecptDetailListByLineId( - @RequestParam("lineId") Long lineId) { - List list = productRecptDetailService.getProductRecptDetailListByLineId(lineId); - return success(buildRespVOList(list)); - } - - // ==================== 拼接 VO ==================== - - private List buildRespVOList(List list) { - if (CollUtil.isEmpty(list)) { - return Collections.emptyList(); - } - // 1. 获得关联数据 - Map itemMap = itemService.getItemMap( - convertSet(list, MesWmProductRecptDetailDO::getItemId)); - Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( - convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); - Map warehouseMap = warehouseService.getWarehouseMap( - convertSet(list, MesWmProductRecptDetailDO::getWarehouseId)); - Map locationMap = locationService.getWarehouseLocationMap( - convertSet(list, MesWmProductRecptDetailDO::getLocationId)); - Map areaMap = areaService.getWarehouseAreaMap( - convertSet(list, MesWmProductRecptDetailDO::getAreaId)); - // 2. 构建结果 - return BeanUtils.toBean(list, MesWmProductRecptDetailRespVO.class, vo -> { - MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { - vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); - MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), - unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); - }); - MapUtils.findAndThen(warehouseMap, vo.getWarehouseId(), - warehouse -> vo.setWarehouseName(warehouse.getName())); - MapUtils.findAndThen(locationMap, vo.getLocationId(), - location -> vo.setLocationName(location.getName())); - MapUtils.findAndThen(areaMap, vo.getAreaId(), - area -> vo.setAreaName(area.getName())); - }); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptLineController.java deleted file mode 100644 index 4348dd8..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/MesWmProductRecptLineController.java +++ /dev/null @@ -1,114 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt; - -import cn.hutool.core.collection.CollUtil; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.MapUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLinePageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLineRespVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLineSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptLineDO; -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; -import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; -import cn.iocoder.yudao.module.mes.service.wm.productrecpt.MesWmProductRecptLineService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; - -@Tag(name = "管理后台 - MES 产品收货单行") -@RestController -@RequestMapping("/mes/wm/product-recpt-line") -@Validated -public class MesWmProductRecptLineController { - - @Resource - private MesWmProductRecptLineService productRecptLineService; - - @Resource - private MesMdItemService itemService; - - @Resource - private MesMdUnitMeasureService unitMeasureService; - - @PostMapping("/create") - @Operation(summary = "创建产品收货单行") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:create')") - public CommonResult createProductRecptLine(@Valid @RequestBody MesWmProductRecptLineSaveReqVO createReqVO) { - return success(productRecptLineService.createProductRecptLine(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "修改产品收货单行") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:update')") - public CommonResult updateProductRecptLine(@Valid @RequestBody MesWmProductRecptLineSaveReqVO updateReqVO) { - productRecptLineService.updateProductRecptLine(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除产品收货单行") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:delete')") - public CommonResult deleteProductRecptLine(@RequestParam("id") Long id) { - productRecptLineService.deleteProductRecptLine(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得产品收货单行") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult getProductRecptLine(@RequestParam("id") Long id) { - MesWmProductRecptLineDO line = productRecptLineService.getProductRecptLine(id); - if (line == null) { - return success(null); - } - return success(buildRespVOList(Collections.singletonList(line)).get(0)); - } - - @GetMapping("/page") - @Operation(summary = "获得产品收货单行分页") - @PreAuthorize("@ss.hasPermission('mes:wm-product-recpt:query')") - public CommonResult> getProductRecptLinePage( - @Valid MesWmProductRecptLinePageReqVO pageReqVO) { - PageResult pageResult = productRecptLineService.getProductRecptLinePage(pageReqVO); - return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); - } - - // ==================== 拼接 VO ==================== - - private List buildRespVOList(List list) { - if (CollUtil.isEmpty(list)) { - return Collections.emptyList(); - } - // 1. 获得关联数据 - Map itemMap = itemService.getItemMap( - convertSet(list, MesWmProductRecptLineDO::getItemId)); - Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( - convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); - // 2. 构建结果 - return BeanUtils.toBean(list, MesWmProductRecptLineRespVO.class, vo -> { - MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { - vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); - MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), - unitMeasure -> vo.setUnitMeasureName(unitMeasure.getName())); - }); - }); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptPageReqVO.java deleted file mode 100644 index 3a973a2..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptPageReqVO.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - MES 产品收货单分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class MesWmProductRecptPageReqVO extends PageParam { - - @Schema(description = "收货单编码", example = "PR202603010001") - private String code; - - @Schema(description = "收货单名称", example = "产品收货单-工单001") - private String name; - - @Schema(description = "生产工单编号", example = "1") - private Long workOrderId; - - @Schema(description = "产品物料编号", example = "1") - private Long itemId; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptRespVO.java deleted file mode 100644 index bf31195..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptRespVO.java +++ /dev/null @@ -1,69 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo; - -import cn.idev.excel.annotation.ExcelIgnoreUnannotated; -import cn.idev.excel.annotation.ExcelProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 产品收货单 Response VO") -@Data -@ExcelIgnoreUnannotated -public class MesWmProductRecptRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - @ExcelProperty("编号") - private Long id; - - @Schema(description = "收货单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PR202603010001") - @ExcelProperty("收货单编码") - private String code; - - @Schema(description = "收货单名称", example = "产品收货单-工单001") - @ExcelProperty("收货单名称") - private String name; - - @Schema(description = "生产工单编号", example = "1") - private Long workOrderId; - - @Schema(description = "生产工单编码", example = "WO202603010001") - @ExcelProperty("生产工单") - private String workOrderCode; - - @Schema(description = "产品物料编号", example = "1") - private Long itemId; - - @Schema(description = "产品物料编码", example = "P001") - @ExcelProperty("产品物料编码") - private String itemCode; - - @Schema(description = "产品物料名称", example = "成品A") - @ExcelProperty("产品物料名称") - private String itemName; - - @Schema(description = "规格型号", example = "标准型") - @ExcelProperty("规格型号") - private String specification; - - @Schema(description = "计量单位名称", example = "件") - @ExcelProperty("计量单位") - private String unitMeasureName; - - @Schema(description = "收货日期") - @ExcelProperty("收货日期") - private LocalDateTime receiptDate; - - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") - @ExcelProperty("状态") - private Integer status; - - @Schema(description = "备注", example = "备注") - @ExcelProperty("备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - @ExcelProperty("创建时间") - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptSaveReqVO.java deleted file mode 100644 index 904b98e..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/MesWmProductRecptSaveReqVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 产品收货单新增/修改 Request VO") -@Data -public class MesWmProductRecptSaveReqVO { - - @Schema(description = "编号", example = "1024") - private Long id; - - @Schema(description = "收货单编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "PR202603010001") - @NotEmpty(message = "收货单编码不能为空") - private String code; - - @Schema(description = "收货单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "产品收货单-工单001") - @NotEmpty(message = "收货单名称不能为空") - private String name; - - @Schema(description = "生产工单编号", example = "1") - private Long workOrderId; - - @Schema(description = "收货日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "收货日期不能为空") - private LocalDateTime receiptDate; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailRespVO.java deleted file mode 100644 index 64b0d5c..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailRespVO.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 产品收货单明细 Response VO") -@Data -public class MesWmProductRecptDetailRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "收货单行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long lineId; - - @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long recptId; - - @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long itemId; - - @Schema(description = "物料编码", example = "P001") - private String itemCode; - - @Schema(description = "物料名称", example = "成品A") - private String itemName; - - @Schema(description = "规格型号", example = "标准型") - private String specification; - - @Schema(description = "计量单位名称", example = "件") - private String unitMeasureName; - - @Schema(description = "上架数量", example = "100.00") - private BigDecimal quantity; - - @Schema(description = "批次编号", example = "1") - private Long batchId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "仓库名称", example = "成品仓") - private String warehouseName; - - @Schema(description = "库区编号", example = "1") - private Long locationId; - - @Schema(description = "库区名称", example = "A区") - private String locationName; - - @Schema(description = "库位编号", example = "1") - private Long areaId; - - @Schema(description = "库位名称", example = "A-01") - private String areaName; - - @Schema(description = "备注", example = "备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailSaveReqVO.java deleted file mode 100644 index 33be93f..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/detail/MesWmProductRecptDetailSaveReqVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - MES 产品收货单明细新增/修改 Request VO") -@Data -public class MesWmProductRecptDetailSaveReqVO { - - @Schema(description = "编号", example = "1024") - private Long id; - - @Schema(description = "收货单行编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "收货单行编号不能为空") - private Long lineId; - - @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "收货单编号不能为空") - private Long recptId; - - @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "物料编号不能为空") - private Long itemId; - - @Schema(description = "上架数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "上架数量不能为空") - private BigDecimal quantity; - - @Schema(description = "批次编号", example = "1") - private Long batchId; - - @Schema(description = "仓库编号", example = "1") - private Long warehouseId; - - @Schema(description = "库区编号", example = "1") - private Long locationId; - - @Schema(description = "库位编号", example = "1") - private Long areaId; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLinePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLinePageReqVO.java deleted file mode 100644 index c5311e6..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLinePageReqVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line; - -import cn.iocoder.yudao.framework.common.pojo.PageParam; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.ToString; - -@Schema(description = "管理后台 - MES 产品收货单行分页 Request VO") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class MesWmProductRecptLinePageReqVO extends PageParam { - - @Schema(description = "收货单编号", example = "1") - private Long recptId; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineRespVO.java deleted file mode 100644 index 1f06a4e..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineRespVO.java +++ /dev/null @@ -1,49 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.math.BigDecimal; -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - MES 产品收货单行 Response VO") -@Data -public class MesWmProductRecptLineRespVO { - - @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long recptId; - - @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long itemId; - - @Schema(description = "物料编码", example = "P001") - private String itemCode; - - @Schema(description = "物料名称", example = "成品A") - private String itemName; - - @Schema(description = "规格型号", example = "标准型") - private String specification; - - @Schema(description = "计量单位名称", example = "件") - private String unitMeasureName; - - @Schema(description = "收货数量", example = "100.00") - private BigDecimal quantity; - - @Schema(description = "批次编号", example = "1") - private Long batchId; - - @Schema(description = "批次号", example = "BATCH20260301001") - private String batchCode; - - @Schema(description = "备注", example = "备注") - private String remark; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime createTime; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineSaveReqVO.java deleted file mode 100644 index 2605814..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productrecpt/vo/line/MesWmProductRecptLineSaveReqVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Positive; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - MES 产品收货单行新增/修改 Request VO") -@Data -public class MesWmProductRecptLineSaveReqVO { - - @Schema(description = "编号", example = "1024") - private Long id; - - @Schema(description = "收货单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "收货单编号不能为空") - private Long recptId; - - @Schema(description = "物料编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @NotNull(message = "物料编号不能为空") - private Long itemId; - - @Schema(description = "收货数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") - @NotNull(message = "收货数量不能为空") - @Positive(message = "收货数量必须大于 0") - private BigDecimal quantity; - - @Schema(description = "批次编号", example = "1") - private Long batchId; - - @Schema(description = "批次号", example = "BATCH20260301001") - private String batchCode; - - @Schema(description = "备注", example = "备注") - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDO.java new file mode 100644 index 0000000..df83299 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDO.java @@ -0,0 +1,67 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; +import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductReceiptStatusEnum; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.time.LocalDateTime; + +/** + * MES 产品收货(入库)单 DO + */ +@TableName("mes_wm_product_receipt") +@KeySequence("mes_wm_product_receipt_seq") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesWmProductReceiptDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 收货单编码 + */ + private String code; + /** + * 收货单名称 + */ + private String name; + /** + * 生产工单编号 + * + * 关联 {@link MesProWorkOrderDO#getId()} + */ + private Long workOrderId; + /** + * 产品物料编号 + * + * 关联 {@link MesMdItemDO#getId()} + */ + private Long itemId; + /** + * 收货日期 + */ + private LocalDateTime receiptDate; + /** + * 状态 + * + * 枚举 {@link MesWmProductReceiptStatusEnum} + */ + private Integer status; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDetailDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDetailDO.java new file mode 100644 index 0000000..91c1c87 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptDetailDO.java @@ -0,0 +1,84 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * MES 产品收货(入库)单明细 DO + */ +@TableName("mes_wm_product_receipt_detail") +@KeySequence("mes_wm_product_receipt_detail_seq") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesWmProductReceiptDetailDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 收货单行编号 + * + * 关联 {@link MesWmProductReceiptLineDO#getId()} + */ + private Long lineId; + /** + * 收货单编号 + * + * 关联 {@link MesWmProductReceiptDO#getId()} + */ + private Long receiptId; + /** + * 物料编号 + * + * 关联 {@link MesMdItemDO#getId()} + */ + private Long itemId; + /** + * 上架数量 + */ + private BigDecimal quantity; + /** + * 批次编号 + * + * TODO DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 + */ + private Long batchId; + /** + * 仓库编号 + * + * 关联 {@link MesWmWarehouseDO#getId()} + */ + private Long warehouseId; + /** + * 库区编号 + * + * 关联 {@link MesWmWarehouseLocationDO#getId()} + */ + private Long locationId; + /** + * 库位编号 + * + * 关联 {@link MesWmWarehouseAreaDO#getId()} + */ + private Long areaId; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptLineDO.java new file mode 100644 index 0000000..65faa51 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productreceipt/MesWmProductReceiptLineDO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * MES 产品收货(入库)单行 DO + */ +@TableName("mes_wm_product_receipt_line") +@KeySequence("mes_wm_product_receipt_line_seq") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MesWmProductReceiptLineDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 收货单编号 + * + * 关联 {@link MesWmProductReceiptDO#getId()} + */ + private Long receiptId; + /** + * 物料编号 + * + * 关联 {@link MesMdItemDO#getId()} + */ + private Long itemId; + /** + * 收货数量 + */ + private BigDecimal quantity; + /** + * 批次编号 + * + * TODO DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 + */ + private Long batchId; + /** + * 批次号 + */ + private String batchCode; + /** + * 备注 + */ + private String remark; + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDO.java deleted file mode 100644 index 95a3eb4..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDO.java +++ /dev/null @@ -1,67 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; -import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductRecptStatusEnum; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.time.LocalDateTime; - -/** - * MES 产品收货(入库)单 DO - */ -@TableName("mes_wm_product_recpt") -@KeySequence("mes_wm_product_recpt_seq") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesWmProductRecptDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 收货单编码 - */ - private String code; - /** - * 收货单名称 - */ - private String name; - /** - * 生产工单编号 - * - * 关联 {@link MesProWorkOrderDO#getId()} - */ - private Long workOrderId; - /** - * 产品物料编号 - * - * 关联 {@link MesMdItemDO#getId()} - */ - private Long itemId; - /** - * 收货日期 - */ - private LocalDateTime receiptDate; - /** - * 状态 - * - * 枚举 {@link MesWmProductRecptStatusEnum} - */ - private Integer status; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDetailDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDetailDO.java deleted file mode 100644 index b8272ff..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptDetailDO.java +++ /dev/null @@ -1,84 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * MES 产品收货(入库)单明细 DO - */ -@TableName("mes_wm_product_recpt_detail") -@KeySequence("mes_wm_product_recpt_detail_seq") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesWmProductRecptDetailDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 收货单行编号 - * - * 关联 {@link MesWmProductRecptLineDO#getId()} - */ - private Long lineId; - /** - * 收货单编号 - * - * 关联 {@link MesWmProductRecptDO#getId()} - */ - private Long recptId; - /** - * 物料编号 - * - * 关联 {@link MesMdItemDO#getId()} - */ - private Long itemId; - /** - * 上架数量 - */ - private BigDecimal quantity; - /** - * 批次编号 - * - * TODO DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 - */ - private Long batchId; - /** - * 仓库编号 - * - * 关联 {@link MesWmWarehouseDO#getId()} - */ - private Long warehouseId; - /** - * 库区编号 - * - * 关联 {@link MesWmWarehouseLocationDO#getId()} - */ - private Long locationId; - /** - * 库位编号 - * - * 关联 {@link MesWmWarehouseAreaDO#getId()} - */ - private Long areaId; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptLineDO.java deleted file mode 100644 index e3eaaf1..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productrecpt/MesWmProductRecptLineDO.java +++ /dev/null @@ -1,61 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt; - -import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; -import com.baomidou.mybatisplus.annotation.KeySequence; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -import java.math.BigDecimal; - -/** - * MES 产品收货(入库)单行 DO - */ -@TableName("mes_wm_product_recpt_line") -@KeySequence("mes_wm_product_recpt_line_seq") -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MesWmProductRecptLineDO extends BaseDO { - - /** - * 编号 - */ - @TableId - private Long id; - /** - * 收货单编号 - * - * 关联 {@link MesWmProductRecptDO#getId()} - */ - private Long recptId; - /** - * 物料编号 - * - * 关联 {@link MesMdItemDO#getId()} - */ - private Long itemId; - /** - * 收货数量 - */ - private BigDecimal quantity; - /** - * 批次编号 - * - * TODO DONE @芋艿:保留。待 mes_wm_batch 模块迁移后补充 @link 关联 - */ - private Long batchId; - /** - * 批次号 - */ - private String batchCode; - /** - * 备注 - */ - private String remark; - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptDetailMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptDetailMapper.java new file mode 100644 index 0000000..76f85ab --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptDetailMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt; + +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 产品收货单明细 Mapper + */ +@Mapper +public interface MesWmProductReceiptDetailMapper extends BaseMapperX { + + default List selectListByRecptId(Long receiptId) { + return selectList(MesWmProductReceiptDetailDO::getReceiptId, receiptId); + } + + default List selectListByLineId(Long lineId) { + return selectList(MesWmProductReceiptDetailDO::getLineId, lineId); + } + + default void deleteByRecptId(Long receiptId) { + delete(MesWmProductReceiptDetailDO::getReceiptId, receiptId); + } + + default void deleteByLineId(Long lineId) { + delete(MesWmProductReceiptDetailDO::getLineId, lineId); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptLineMapper.java new file mode 100644 index 0000000..11ba3c2 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptLineMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * MES 产品收货单行 Mapper + */ +@Mapper +public interface MesWmProductReceiptLineMapper extends BaseMapperX { + + default PageResult selectPage(MesWmProductReceiptLinePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MesWmProductReceiptLineDO::getReceiptId, reqVO.getReceiptId()) + .orderByDesc(MesWmProductReceiptLineDO::getId)); + } + + default List selectListByRecptId(Long receiptId) { + return selectList(MesWmProductReceiptLineDO::getReceiptId, receiptId); + } + + default void deleteByRecptId(Long receiptId) { + delete(MesWmProductReceiptLineDO::getReceiptId, receiptId); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptMapper.java new file mode 100644 index 0000000..00f5f02 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productreceipt/MesWmProductReceiptMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * MES 产品收货单 Mapper + */ +@Mapper +public interface MesWmProductReceiptMapper extends BaseMapperX { + + default PageResult selectPage(MesWmProductReceiptPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(MesWmProductReceiptDO::getCode, reqVO.getCode()) + .likeIfPresent(MesWmProductReceiptDO::getName, reqVO.getName()) + .eqIfPresent(MesWmProductReceiptDO::getWorkOrderId, reqVO.getWorkOrderId()) + .eqIfPresent(MesWmProductReceiptDO::getItemId, reqVO.getItemId()) + .orderByDesc(MesWmProductReceiptDO::getId)); + } + + default MesWmProductReceiptDO selectByCode(String code) { + return selectOne(MesWmProductReceiptDO::getCode, code); + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptDetailMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptDetailMapper.java deleted file mode 100644 index c4084bb..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptDetailMapper.java +++ /dev/null @@ -1,31 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt; - -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDetailDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * MES 产品收货单明细 Mapper - */ -@Mapper -public interface MesWmProductRecptDetailMapper extends BaseMapperX { - - default List selectListByRecptId(Long recptId) { - return selectList(MesWmProductRecptDetailDO::getRecptId, recptId); - } - - default List selectListByLineId(Long lineId) { - return selectList(MesWmProductRecptDetailDO::getLineId, lineId); - } - - default void deleteByRecptId(Long recptId) { - delete(MesWmProductRecptDetailDO::getRecptId, recptId); - } - - default void deleteByLineId(Long lineId) { - delete(MesWmProductRecptDetailDO::getLineId, lineId); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptLineMapper.java deleted file mode 100644 index dad722a..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptLineMapper.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLinePageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptLineDO; -import org.apache.ibatis.annotations.Mapper; - -import java.util.List; - -/** - * MES 产品收货单行 Mapper - */ -@Mapper -public interface MesWmProductRecptLineMapper extends BaseMapperX { - - default PageResult selectPage(MesWmProductRecptLinePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(MesWmProductRecptLineDO::getRecptId, reqVO.getRecptId()) - .orderByDesc(MesWmProductRecptLineDO::getId)); - } - - default List selectListByRecptId(Long recptId) { - return selectList(MesWmProductRecptLineDO::getRecptId, recptId); - } - - default void deleteByRecptId(Long recptId) { - delete(MesWmProductRecptLineDO::getRecptId, recptId); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptMapper.java deleted file mode 100644 index 3e2ae75..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productrecpt/MesWmProductRecptMapper.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptPageReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDO; -import org.apache.ibatis.annotations.Mapper; - -/** - * MES 产品收货单 Mapper - */ -@Mapper -public interface MesWmProductRecptMapper extends BaseMapperX { - - default PageResult selectPage(MesWmProductRecptPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(MesWmProductRecptDO::getCode, reqVO.getCode()) - .likeIfPresent(MesWmProductRecptDO::getName, reqVO.getName()) - .eqIfPresent(MesWmProductRecptDO::getWorkOrderId, reqVO.getWorkOrderId()) - .eqIfPresent(MesWmProductRecptDO::getItemId, reqVO.getItemId()) - .orderByDesc(MesWmProductRecptDO::getId)); - } - - default MesWmProductRecptDO selectByCode(String code) { - return selectOne(MesWmProductRecptDO::getCode, code); - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductReceiptStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductReceiptStatusEnum.java new file mode 100644 index 0000000..a4e1d56 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductReceiptStatusEnum.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.mes.enums.wm; + +import cn.iocoder.yudao.framework.common.core.ArrayValuable; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; +import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; +import cn.iocoder.yudao.module.mes.service.wm.productreceipt.MesWmProductReceiptService; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; + +/** + * MES 产品入库单状态枚举 + * + * @author 芋道源码 + */ +@Getter +@AllArgsConstructor +public enum MesWmProductReceiptStatusEnum implements ArrayValuable { + + /** + * 草稿 + * + * 对应方法:{@link MesWmProductReceiptService#createProductReceipt(MesWmProductReceiptSaveReqVO)} + */ + PREPARE(MesOrderStatusConstants.PREPARE, "草稿"), + /** + * 待上架 + * + * 对应方法:{@link MesWmProductReceiptService#submitProductReceipt(Long)} + */ + APPROVING(MesOrderStatusConstants.APPROVING, "待上架"), + /** + * 待执行入库 + * + * 对应方法:{@link MesWmProductReceiptService#stockProductReceipt(Long)} + */ + APPROVED(MesOrderStatusConstants.APPROVED, "待执行入库"), + /** + * 已完成 + * + * 对应方法:{@link MesWmProductReceiptService#executeProductReceipt(Long)} + */ + FINISHED(MesOrderStatusConstants.FINISHED, "已完成"), + /** + * 已取消 + * + * 对应方法:{@link MesWmProductReceiptService#cancelProductReceipt(Long)} + */ + CANCELED(MesOrderStatusConstants.CANCELLED, "已取消"); + + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmProductReceiptStatusEnum::getStatus).toArray(Integer[]::new); + + /** + * 状态值 + */ + private final Integer status; + /** + * 状态名 + */ + private final String name; + + @Override + public Integer[] array() { + return ARRAYS; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductRecptStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductRecptStatusEnum.java deleted file mode 100644 index b47aa07..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmProductRecptStatusEnum.java +++ /dev/null @@ -1,68 +0,0 @@ -package cn.iocoder.yudao.module.mes.enums.wm; - -import cn.iocoder.yudao.framework.common.core.ArrayValuable; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptSaveReqVO; -import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; -import cn.iocoder.yudao.module.mes.service.wm.productrecpt.MesWmProductRecptService; -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.Arrays; - -/** - * MES 产品入库单状态枚举 - * - * @author 芋道源码 - */ -@Getter -@AllArgsConstructor -public enum MesWmProductRecptStatusEnum implements ArrayValuable { - - /** - * 草稿 - * - * 对应方法:{@link MesWmProductRecptService#createProductRecpt(MesWmProductRecptSaveReqVO)} - */ - PREPARE(MesOrderStatusConstants.PREPARE, "草稿"), - /** - * 待上架 - * - * 对应方法:{@link MesWmProductRecptService#submitProductRecpt(Long)} - */ - APPROVING(MesOrderStatusConstants.APPROVING, "待上架"), - /** - * 待执行入库 - * - * 对应方法:{@link MesWmProductRecptService#stockProductRecpt(Long)} - */ - APPROVED(MesOrderStatusConstants.APPROVED, "待执行入库"), - /** - * 已完成 - * - * 对应方法:{@link MesWmProductRecptService#executeProductRecpt(Long)} - */ - FINISHED(MesOrderStatusConstants.FINISHED, "已完成"), - /** - * 已取消 - * - * 对应方法:{@link MesWmProductRecptService#cancelProductRecpt(Long)} - */ - CANCELED(MesOrderStatusConstants.CANCELLED, "已取消"); - - public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmProductRecptStatusEnum::getStatus).toArray(Integer[]::new); - - /** - * 状态值 - */ - private final Integer status; - /** - * 状态名 - */ - private final String name; - - @Override - public Integer[] array() { - return ARRAYS; - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailService.java new file mode 100644 index 0000000..a42dbae --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailService.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * MES 产品收货单明细 Service 接口 + */ +public interface MesWmProductReceiptDetailService { + + /** + * 创建产品收货单明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductReceiptDetail(@Valid MesWmProductReceiptDetailSaveReqVO createReqVO); + + /** + * 修改产品收货单明细 + * + * @param updateReqVO 修改信息 + */ + void updateProductReceiptDetail(@Valid MesWmProductReceiptDetailSaveReqVO updateReqVO); + + /** + * 删除产品收货单明细 + * + * @param id 编号 + */ + void deleteProductReceiptDetail(Long id); + + /** + * 获得产品收货单明细 + * + * @param id 编号 + * @return 产品收货单明细 + */ + MesWmProductReceiptDetailDO getProductReceiptDetail(Long id); + + /** + * 按收货单编号获得明细列表 + * + * @param receiptId 收货单编号 + * @return 明细列表 + */ + List getProductReceiptDetailListByRecptId(Long receiptId); + + /** + * 按收货单行编号获得明细列表 + * + * @param lineId 行编号 + * @return 明细列表 + */ + List getProductReceiptDetailListByLineId(Long lineId); + + /** + * 按收货单行编号批量删除明细 + * + * @param lineId 行编号 + */ + void deleteProductReceiptDetailByLineId(Long lineId); + + /** + * 按收货单编号批量删除明细 + * + * @param receiptId 收货单编号 + */ + void deleteProductReceiptDetailByRecptId(Long receiptId); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailServiceImpl.java new file mode 100644 index 0000000..26038c2 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptDetailServiceImpl.java @@ -0,0 +1,104 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.detail.MesWmProductReceiptDetailSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; +import cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt.MesWmProductReceiptDetailMapper; +import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * MES 产品收货单明细 Service 实现类 + */ +@Service +@Validated +public class MesWmProductReceiptDetailServiceImpl implements MesWmProductReceiptDetailService { + + @Resource + private MesWmProductReceiptDetailMapper productReceiptDetailMapper; + + @Resource + @Lazy + private MesWmProductReceiptService productReceiptService; + + @Resource + private MesWmWarehouseAreaService warehouseAreaService; + + @Override + public Long createProductReceiptDetail(MesWmProductReceiptDetailSaveReqVO createReqVO) { + // 校验父单据存在且为可编辑状态 + productReceiptService.validateProductReceiptEditable(createReqVO.getReceiptId()); + // 校验库区关系 + warehouseAreaService.validateWarehouseAreaExists( + createReqVO.getWarehouseId(), createReqVO.getLocationId(), createReqVO.getAreaId()); + + MesWmProductReceiptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmProductReceiptDetailDO.class); + productReceiptDetailMapper.insert(detail); + return detail.getId(); + } + + @Override + public void updateProductReceiptDetail(MesWmProductReceiptDetailSaveReqVO updateReqVO) { + // 校验存在 + MesWmProductReceiptDetailDO detail = validateProductReceiptDetailExists(updateReqVO.getId()); + // 校验父单据存在且为可编辑状态 + productReceiptService.validateProductReceiptEditable(detail.getReceiptId()); + // 校验库区关系 + warehouseAreaService.validateWarehouseAreaExists( + updateReqVO.getWarehouseId(), updateReqVO.getLocationId(), updateReqVO.getAreaId()); + + // 更新 + MesWmProductReceiptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductReceiptDetailDO.class); + productReceiptDetailMapper.updateById(updateObj); + } + + @Override + public void deleteProductReceiptDetail(Long id) { + // 校验存在 + validateProductReceiptDetailExists(id); + // 删除 + productReceiptDetailMapper.deleteById(id); + } + + @Override + public MesWmProductReceiptDetailDO getProductReceiptDetail(Long id) { + return productReceiptDetailMapper.selectById(id); + } + + @Override + public List getProductReceiptDetailListByRecptId(Long receiptId) { + return productReceiptDetailMapper.selectListByRecptId(receiptId); + } + + @Override + public List getProductReceiptDetailListByLineId(Long lineId) { + return productReceiptDetailMapper.selectListByLineId(lineId); + } + + @Override + public void deleteProductReceiptDetailByLineId(Long lineId) { + productReceiptDetailMapper.deleteByLineId(lineId); + } + + @Override + public void deleteProductReceiptDetailByRecptId(Long receiptId) { + productReceiptDetailMapper.deleteByRecptId(receiptId); + } + + private MesWmProductReceiptDetailDO validateProductReceiptDetailExists(Long id) { + MesWmProductReceiptDetailDO detail = productReceiptDetailMapper.selectById(id); + if (detail == null) { + throw exception(WM_PRODUCT_RECPT_DETAIL_NOT_EXISTS); + } + return detail; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineService.java new file mode 100644 index 0000000..2cfeebf --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineService.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * MES 产品收货单行 Service 接口 + */ +public interface MesWmProductReceiptLineService { + + /** + * 创建产品收货单行 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductReceiptLine(@Valid MesWmProductReceiptLineSaveReqVO createReqVO); + + /** + * 修改产品收货单行 + * + * @param updateReqVO 修改信息 + */ + void updateProductReceiptLine(@Valid MesWmProductReceiptLineSaveReqVO updateReqVO); + + /** + * 删除产品收货单行(级联删除明细) + * + * @param id 编号 + */ + void deleteProductReceiptLine(Long id); + + /** + * 获得产品收货单行 + * + * @param id 编号 + * @return 产品收货单行 + */ + MesWmProductReceiptLineDO getProductReceiptLine(Long id); + + /** + * 获得产品收货单行分页 + * + * @param pageReqVO 分页参数 + * @return 产品收货单行分页 + */ + PageResult getProductReceiptLinePage(MesWmProductReceiptLinePageReqVO pageReqVO); + + /** + * 按收货单编号获得行列表 + * + * @param receiptId 收货单编号 + * @return 行列表 + */ + List getProductReceiptLineListByRecptId(Long receiptId); + + /** + * 按收货单编号批量删除行 + * + * @param receiptId 收货单编号 + */ + void deleteProductReceiptLineByRecptId(Long receiptId); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java new file mode 100644 index 0000000..02248fc --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptLineServiceImpl.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLinePageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.line.MesWmProductReceiptLineSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; +import cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt.MesWmProductReceiptLineMapper; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_RECPT_LINE_NOT_EXISTS; + +/** + * MES 产品收货单行 Service 实现类 + */ +@Service +@Validated +public class MesWmProductReceiptLineServiceImpl implements MesWmProductReceiptLineService { + + @Resource + private MesWmProductReceiptLineMapper productReceiptLineMapper; + + @Resource + @Lazy + private MesWmProductReceiptService productReceiptService; + + @Resource + private MesWmProductReceiptDetailService productReceiptDetailService; + + @Override + public Long createProductReceiptLine(MesWmProductReceiptLineSaveReqVO createReqVO) { + // 校验父单据存在且为可编辑状态 + productReceiptService.validateProductReceiptEditable(createReqVO.getReceiptId()); + + // 新增 + MesWmProductReceiptLineDO line = BeanUtils.toBean(createReqVO, MesWmProductReceiptLineDO.class); + productReceiptLineMapper.insert(line); + return line.getId(); + } + + @Override + public void updateProductReceiptLine(MesWmProductReceiptLineSaveReqVO updateReqVO) { + // 校验存在 + MesWmProductReceiptLineDO line = validateProductReceiptLineExists(updateReqVO.getId()); + // 校验父单据存在且为可编辑状态 + productReceiptService.validateProductReceiptEditable(line.getReceiptId()); + + // 更新 + MesWmProductReceiptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductReceiptLineDO.class); + productReceiptLineMapper.updateById(updateObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteProductReceiptLine(Long id) { + // 校验存在 + validateProductReceiptLineExists(id); + + // 级联删除明细 + productReceiptDetailService.deleteProductReceiptDetailByLineId(id); + // 删除 + productReceiptLineMapper.deleteById(id); + } + + @Override + public MesWmProductReceiptLineDO getProductReceiptLine(Long id) { + return productReceiptLineMapper.selectById(id); + } + + @Override + public PageResult getProductReceiptLinePage(MesWmProductReceiptLinePageReqVO pageReqVO) { + return productReceiptLineMapper.selectPage(pageReqVO); + } + + @Override + public List getProductReceiptLineListByRecptId(Long receiptId) { + return productReceiptLineMapper.selectListByRecptId(receiptId); + } + + @Override + public void deleteProductReceiptLineByRecptId(Long receiptId) { + productReceiptLineMapper.deleteByRecptId(receiptId); + } + + private MesWmProductReceiptLineDO validateProductReceiptLineExists(Long id) { + MesWmProductReceiptLineDO line = productReceiptLineMapper.selectById(id); + if (line == null) { + throw exception(WM_PRODUCT_RECPT_LINE_NOT_EXISTS); + } + return line; + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptService.java new file mode 100644 index 0000000..a826093 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptService.java @@ -0,0 +1,96 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; +import jakarta.validation.Valid; + +/** + * MES 产品收货单 Service 接口 + */ +public interface MesWmProductReceiptService { + + /** + * 创建产品收货单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProductReceipt(@Valid MesWmProductReceiptSaveReqVO createReqVO); + + /** + * 修改产品收货单 + * + * @param updateReqVO 修改信息 + */ + void updateProductReceipt(@Valid MesWmProductReceiptSaveReqVO updateReqVO); + + /** + * 删除产品收货单(级联删除行+明细) + * + * @param id 编号 + */ + void deleteProductReceipt(Long id); + + /** + * 获得产品收货单 + * + * @param id 编号 + * @return 产品收货单 + */ + MesWmProductReceiptDO getProductReceipt(Long id); + + /** + * 获得产品收货单分页 + * + * @param pageReqVO 分页参数 + * @return 产品收货单分页 + */ + PageResult getProductReceiptPage(MesWmProductReceiptPageReqVO pageReqVO); + + /** + * 提交产品收货单(草稿 → 待上架) + * + * @param id 编号 + */ + void submitProductReceipt(Long id); + + /** + * 执行上架(待上架 → 待入库) + * + * @param id 编号 + */ + void stockProductReceipt(Long id); + + /** + * 执行入库(待入库 → 已完成),更新库存台账 + * + * @param id 编号 + */ + void executeProductReceipt(Long id); + + /** + * 取消产品收货单(任意非已完成/已取消状态 → 已取消) + * + * @param id 编号 + */ + void cancelProductReceipt(Long id); + + /** + * 校验产品收货单存在且处于可编辑状态(草稿或待上架) + * + * @param id 编号 + * @return 产品收货单 + */ + MesWmProductReceiptDO validateProductReceiptEditable(Long id); + + /** + * 校验产品收货单明细数量(每行明细数量之和是否等于行收货数量) + * + * @param id 编号 + * @return 是否匹配 + */ + Boolean checkProductReceiptQuantity(Long id); + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java new file mode 100644 index 0000000..5800357 --- /dev/null +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productreceipt/MesWmProductReceiptServiceImpl.java @@ -0,0 +1,233 @@ +package cn.iocoder.yudao.module.mes.service.wm.productreceipt; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptPageReqVO; +import cn.iocoder.yudao.module.mes.controller.admin.wm.productreceipt.vo.MesWmProductReceiptSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productreceipt.MesWmProductReceiptLineDO; +import cn.iocoder.yudao.module.mes.dal.mysql.wm.productreceipt.MesWmProductReceiptMapper; +import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductReceiptStatusEnum; +import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.math.BigDecimal; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * MES 产品收货单 Service 实现类 + */ +@Service +@Validated +public class MesWmProductReceiptServiceImpl implements MesWmProductReceiptService { + + @Resource + private MesWmProductReceiptMapper productReceiptMapper; + + @Resource + private MesWmProductReceiptLineService productReceiptLineService; + + @Resource + private MesWmProductReceiptDetailService productReceiptDetailService; + + @Resource + private MesWmMaterialStockService materialStockService; + + @Resource + private cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService workOrderService; + + @Override + public Long createProductReceipt(MesWmProductReceiptSaveReqVO createReqVO) { + // 校验编码唯一 + validateCodeUnique(null, createReqVO.getCode()); + // 校验工单存在并设置 itemId + MesProWorkOrderDO workOrder = createReqVO.getWorkOrderId() != null ? + workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()) : null; + + // 插入 + MesWmProductReceiptDO receipt = BeanUtils.toBean(createReqVO, MesWmProductReceiptDO.class); + if (workOrder != null) { + receipt.setItemId(workOrder.getProductId()); + } + receipt.setStatus(MesWmProductReceiptStatusEnum.PREPARE.getStatus()); + productReceiptMapper.insert(receipt); + return receipt.getId(); + } + + @Override + public void updateProductReceipt(MesWmProductReceiptSaveReqVO updateReqVO) { + // 校验存在 + 草稿状态 + validateProductReceiptExistsAndDraft(updateReqVO.getId()); + // 校验编码唯一 + validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); + // 校验工单存在 + MesProWorkOrderDO workOrder = updateReqVO.getWorkOrderId() != null ? + workOrderService.validateWorkOrderExists(updateReqVO.getWorkOrderId()) : null; + + // 更新 + MesWmProductReceiptDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductReceiptDO.class); + if (workOrder != null) { + updateObj.setItemId(workOrder.getProductId()); + } + productReceiptMapper.updateById(updateObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteProductReceipt(Long id) { + // 校验存在 + 草稿状态 + validateProductReceiptExistsAndDraft(id); + + // 级联删除明细和行 + productReceiptDetailService.deleteProductReceiptDetailByRecptId(id); + productReceiptLineService.deleteProductReceiptLineByRecptId(id); + // 删除 + productReceiptMapper.deleteById(id); + } + + @Override + public MesWmProductReceiptDO getProductReceipt(Long id) { + return productReceiptMapper.selectById(id); + } + + @Override + public PageResult getProductReceiptPage(MesWmProductReceiptPageReqVO pageReqVO) { + return productReceiptMapper.selectPage(pageReqVO); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void submitProductReceipt(Long id) { + // 校验存在 + 草稿状态 + validateProductReceiptExistsAndDraft(id); + // 校验至少有一条行 + List lines = productReceiptLineService.getProductReceiptLineListByRecptId(id); + if (CollUtil.isEmpty(lines)) { + throw exception(WM_PRODUCT_RECPT_NO_LINE); + } + + // 提交(草稿 → 待上架) + productReceiptMapper.updateById(new MesWmProductReceiptDO() + .setId(id).setStatus(MesWmProductReceiptStatusEnum.APPROVING.getStatus())); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void stockProductReceipt(Long id) { + // 校验存在 + MesWmProductReceiptDO receipt = validateProductReceiptExists(id); + if (ObjUtil.notEqual(MesWmProductReceiptStatusEnum.APPROVING.getStatus(), receipt.getStatus())) { + throw exception(WM_PRODUCT_RECPT_STATUS_ERROR); + } + + // 执行上架(待上架 → 待入库) + productReceiptMapper.updateById(new MesWmProductReceiptDO() + .setId(id).setStatus(MesWmProductReceiptStatusEnum.APPROVED.getStatus())); + } + + @Override + public Boolean checkProductReceiptQuantity(Long id) { + List lines = productReceiptLineService.getProductReceiptLineListByRecptId(id); + for (MesWmProductReceiptLineDO line : lines) { + List details = productReceiptDetailService.getProductReceiptDetailListByLineId(line.getId()); + BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, + MesWmProductReceiptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); + if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) { + return false; + } + } + return true; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void executeProductReceipt(Long id) { + // 校验存在 + MesWmProductReceiptDO receipt = validateProductReceiptExists(id); + if (ObjUtil.notEqual(MesWmProductReceiptStatusEnum.APPROVED.getStatus(), receipt.getStatus())) { + throw exception(WM_PRODUCT_RECPT_STATUS_ERROR); + } + + // 遍历所有明细,更新库存台账 + // TODO @芋艿:【后面优化】 + List details = productReceiptDetailService.getProductReceiptDetailListByRecptId(id); + for (MesWmProductReceiptDetailDO detail : details) { + materialStockService.increaseStock( + detail.getItemId(), detail.getWarehouseId(), detail.getLocationId(), detail.getAreaId(), + detail.getBatchId(), detail.getQuantity(), null, null, null); + } + + // 更新收货单状态 + productReceiptMapper.updateById(new MesWmProductReceiptDO() + .setId(id).setStatus(MesWmProductReceiptStatusEnum.FINISHED.getStatus())); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void cancelProductReceipt(Long id) { + // 校验存在 + MesWmProductReceiptDO receipt = validateProductReceiptExists(id); + // 已完成和已取消不允许取消 + if (ObjectUtils.equalsAny(receipt.getStatus(), + MesWmProductReceiptStatusEnum.FINISHED.getStatus(), + MesWmProductReceiptStatusEnum.CANCELED.getStatus())) { + throw exception(WM_PRODUCT_RECPT_CANCEL_NOT_ALLOWED); + } + + // 取消 + productReceiptMapper.updateById(new MesWmProductReceiptDO() + .setId(id).setStatus(MesWmProductReceiptStatusEnum.CANCELED.getStatus())); + } + + @Override + public MesWmProductReceiptDO validateProductReceiptEditable(Long id) { + MesWmProductReceiptDO receipt = validateProductReceiptExists(id); + if (ObjUtil.notEqual(receipt.getStatus(), MesWmProductReceiptStatusEnum.PREPARE.getStatus()) + && ObjUtil.notEqual(receipt.getStatus(), MesWmProductReceiptStatusEnum.APPROVING.getStatus())) { + throw exception(WM_PRODUCT_RECPT_STATUS_NOT_PREPARE); + } + return receipt; + } + + private MesWmProductReceiptDO validateProductReceiptExists(Long id) { + MesWmProductReceiptDO receipt = productReceiptMapper.selectById(id); + if (receipt == null) { + throw exception(WM_PRODUCT_RECPT_NOT_EXISTS); + } + return receipt; + } + + /** + * 校验产品收货单存在且为草稿状态 + */ + private MesWmProductReceiptDO validateProductReceiptExistsAndDraft(Long id) { + MesWmProductReceiptDO receipt = validateProductReceiptExists(id); + if (ObjUtil.notEqual(MesWmProductReceiptStatusEnum.PREPARE.getStatus(), receipt.getStatus())) { + throw exception(WM_PRODUCT_RECPT_STATUS_NOT_PREPARE); + } + return receipt; + } + + private void validateCodeUnique(Long id, String code) { + MesWmProductReceiptDO receipt = productReceiptMapper.selectByCode(code); + if (receipt == null) { + return; + } + if (ObjUtil.notEqual(id, receipt.getId())) { + throw exception(WM_PRODUCT_RECPT_CODE_DUPLICATE); + } + } + +} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailService.java deleted file mode 100644 index 2c59240..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailService.java +++ /dev/null @@ -1,74 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail.MesWmProductRecptDetailSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDetailDO; -import jakarta.validation.Valid; - -import java.util.List; - -/** - * MES 产品收货单明细 Service 接口 - */ -public interface MesWmProductRecptDetailService { - - /** - * 创建产品收货单明细 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProductRecptDetail(@Valid MesWmProductRecptDetailSaveReqVO createReqVO); - - /** - * 修改产品收货单明细 - * - * @param updateReqVO 修改信息 - */ - void updateProductRecptDetail(@Valid MesWmProductRecptDetailSaveReqVO updateReqVO); - - /** - * 删除产品收货单明细 - * - * @param id 编号 - */ - void deleteProductRecptDetail(Long id); - - /** - * 获得产品收货单明细 - * - * @param id 编号 - * @return 产品收货单明细 - */ - MesWmProductRecptDetailDO getProductRecptDetail(Long id); - - /** - * 按收货单编号获得明细列表 - * - * @param recptId 收货单编号 - * @return 明细列表 - */ - List getProductRecptDetailListByRecptId(Long recptId); - - /** - * 按收货单行编号获得明细列表 - * - * @param lineId 行编号 - * @return 明细列表 - */ - List getProductRecptDetailListByLineId(Long lineId); - - /** - * 按收货单行编号批量删除明细 - * - * @param lineId 行编号 - */ - void deleteProductRecptDetailByLineId(Long lineId); - - /** - * 按收货单编号批量删除明细 - * - * @param recptId 收货单编号 - */ - void deleteProductRecptDetailByRecptId(Long recptId); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailServiceImpl.java deleted file mode 100644 index 27bac05..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptDetailServiceImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.detail.MesWmProductRecptDetailSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDetailDO; -import cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt.MesWmProductRecptDetailMapper; -import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; - -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; - -/** - * MES 产品收货单明细 Service 实现类 - */ -@Service -@Validated -public class MesWmProductRecptDetailServiceImpl implements MesWmProductRecptDetailService { - - @Resource - private MesWmProductRecptDetailMapper productRecptDetailMapper; - - @Resource - @Lazy - private MesWmProductRecptService productRecptService; - - @Resource - private MesWmWarehouseAreaService warehouseAreaService; - - @Override - public Long createProductRecptDetail(MesWmProductRecptDetailSaveReqVO createReqVO) { - // 校验父单据存在且为可编辑状态 - productRecptService.validateProductRecptEditable(createReqVO.getRecptId()); - // 校验库区关系 - warehouseAreaService.validateWarehouseAreaExists( - createReqVO.getWarehouseId(), createReqVO.getLocationId(), createReqVO.getAreaId()); - - MesWmProductRecptDetailDO detail = BeanUtils.toBean(createReqVO, MesWmProductRecptDetailDO.class); - productRecptDetailMapper.insert(detail); - return detail.getId(); - } - - @Override - public void updateProductRecptDetail(MesWmProductRecptDetailSaveReqVO updateReqVO) { - // 校验存在 - MesWmProductRecptDetailDO detail = validateProductRecptDetailExists(updateReqVO.getId()); - // 校验父单据存在且为可编辑状态 - productRecptService.validateProductRecptEditable(detail.getRecptId()); - // 校验库区关系 - warehouseAreaService.validateWarehouseAreaExists( - updateReqVO.getWarehouseId(), updateReqVO.getLocationId(), updateReqVO.getAreaId()); - - // 更新 - MesWmProductRecptDetailDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductRecptDetailDO.class); - productRecptDetailMapper.updateById(updateObj); - } - - @Override - public void deleteProductRecptDetail(Long id) { - // 校验存在 - validateProductRecptDetailExists(id); - // 删除 - productRecptDetailMapper.deleteById(id); - } - - @Override - public MesWmProductRecptDetailDO getProductRecptDetail(Long id) { - return productRecptDetailMapper.selectById(id); - } - - @Override - public List getProductRecptDetailListByRecptId(Long recptId) { - return productRecptDetailMapper.selectListByRecptId(recptId); - } - - @Override - public List getProductRecptDetailListByLineId(Long lineId) { - return productRecptDetailMapper.selectListByLineId(lineId); - } - - @Override - public void deleteProductRecptDetailByLineId(Long lineId) { - productRecptDetailMapper.deleteByLineId(lineId); - } - - @Override - public void deleteProductRecptDetailByRecptId(Long recptId) { - productRecptDetailMapper.deleteByRecptId(recptId); - } - - private MesWmProductRecptDetailDO validateProductRecptDetailExists(Long id) { - MesWmProductRecptDetailDO detail = productRecptDetailMapper.selectById(id); - if (detail == null) { - throw exception(WM_PRODUCT_RECPT_DETAIL_NOT_EXISTS); - } - return detail; - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineService.java deleted file mode 100644 index 2590cd7..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineService.java +++ /dev/null @@ -1,69 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLinePageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLineSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptLineDO; -import jakarta.validation.Valid; - -import java.util.List; - -/** - * MES 产品收货单行 Service 接口 - */ -public interface MesWmProductRecptLineService { - - /** - * 创建产品收货单行 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProductRecptLine(@Valid MesWmProductRecptLineSaveReqVO createReqVO); - - /** - * 修改产品收货单行 - * - * @param updateReqVO 修改信息 - */ - void updateProductRecptLine(@Valid MesWmProductRecptLineSaveReqVO updateReqVO); - - /** - * 删除产品收货单行(级联删除明细) - * - * @param id 编号 - */ - void deleteProductRecptLine(Long id); - - /** - * 获得产品收货单行 - * - * @param id 编号 - * @return 产品收货单行 - */ - MesWmProductRecptLineDO getProductRecptLine(Long id); - - /** - * 获得产品收货单行分页 - * - * @param pageReqVO 分页参数 - * @return 产品收货单行分页 - */ - PageResult getProductRecptLinePage(MesWmProductRecptLinePageReqVO pageReqVO); - - /** - * 按收货单编号获得行列表 - * - * @param recptId 收货单编号 - * @return 行列表 - */ - List getProductRecptLineListByRecptId(Long recptId); - - /** - * 按收货单编号批量删除行 - * - * @param recptId 收货单编号 - */ - void deleteProductRecptLineByRecptId(Long recptId); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineServiceImpl.java deleted file mode 100644 index 98ccb7e..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptLineServiceImpl.java +++ /dev/null @@ -1,100 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLinePageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.line.MesWmProductRecptLineSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptLineDO; -import cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt.MesWmProductRecptLineMapper; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PRODUCT_RECPT_LINE_NOT_EXISTS; - -/** - * MES 产品收货单行 Service 实现类 - */ -@Service -@Validated -public class MesWmProductRecptLineServiceImpl implements MesWmProductRecptLineService { - - @Resource - private MesWmProductRecptLineMapper productRecptLineMapper; - - @Resource - @Lazy - private MesWmProductRecptService productRecptService; - - @Resource - private MesWmProductRecptDetailService productRecptDetailService; - - @Override - public Long createProductRecptLine(MesWmProductRecptLineSaveReqVO createReqVO) { - // 校验父单据存在且为可编辑状态 - productRecptService.validateProductRecptEditable(createReqVO.getRecptId()); - - // 新增 - MesWmProductRecptLineDO line = BeanUtils.toBean(createReqVO, MesWmProductRecptLineDO.class); - productRecptLineMapper.insert(line); - return line.getId(); - } - - @Override - public void updateProductRecptLine(MesWmProductRecptLineSaveReqVO updateReqVO) { - // 校验存在 - MesWmProductRecptLineDO line = validateProductRecptLineExists(updateReqVO.getId()); - // 校验父单据存在且为可编辑状态 - productRecptService.validateProductRecptEditable(line.getRecptId()); - - // 更新 - MesWmProductRecptLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductRecptLineDO.class); - productRecptLineMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteProductRecptLine(Long id) { - // 校验存在 - validateProductRecptLineExists(id); - - // 级联删除明细 - productRecptDetailService.deleteProductRecptDetailByLineId(id); - // 删除 - productRecptLineMapper.deleteById(id); - } - - @Override - public MesWmProductRecptLineDO getProductRecptLine(Long id) { - return productRecptLineMapper.selectById(id); - } - - @Override - public PageResult getProductRecptLinePage(MesWmProductRecptLinePageReqVO pageReqVO) { - return productRecptLineMapper.selectPage(pageReqVO); - } - - @Override - public List getProductRecptLineListByRecptId(Long recptId) { - return productRecptLineMapper.selectListByRecptId(recptId); - } - - @Override - public void deleteProductRecptLineByRecptId(Long recptId) { - productRecptLineMapper.deleteByRecptId(recptId); - } - - private MesWmProductRecptLineDO validateProductRecptLineExists(Long id) { - MesWmProductRecptLineDO line = productRecptLineMapper.selectById(id); - if (line == null) { - throw exception(WM_PRODUCT_RECPT_LINE_NOT_EXISTS); - } - return line; - } - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptService.java deleted file mode 100644 index 0e069d8..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptService.java +++ /dev/null @@ -1,96 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDO; -import jakarta.validation.Valid; - -/** - * MES 产品收货单 Service 接口 - */ -public interface MesWmProductRecptService { - - /** - * 创建产品收货单 - * - * @param createReqVO 创建信息 - * @return 编号 - */ - Long createProductRecpt(@Valid MesWmProductRecptSaveReqVO createReqVO); - - /** - * 修改产品收货单 - * - * @param updateReqVO 修改信息 - */ - void updateProductRecpt(@Valid MesWmProductRecptSaveReqVO updateReqVO); - - /** - * 删除产品收货单(级联删除行+明细) - * - * @param id 编号 - */ - void deleteProductRecpt(Long id); - - /** - * 获得产品收货单 - * - * @param id 编号 - * @return 产品收货单 - */ - MesWmProductRecptDO getProductRecpt(Long id); - - /** - * 获得产品收货单分页 - * - * @param pageReqVO 分页参数 - * @return 产品收货单分页 - */ - PageResult getProductRecptPage(MesWmProductRecptPageReqVO pageReqVO); - - /** - * 提交产品收货单(草稿 → 待上架) - * - * @param id 编号 - */ - void submitProductRecpt(Long id); - - /** - * 执行上架(待上架 → 待入库) - * - * @param id 编号 - */ - void stockProductRecpt(Long id); - - /** - * 执行入库(待入库 → 已完成),更新库存台账 - * - * @param id 编号 - */ - void executeProductRecpt(Long id); - - /** - * 取消产品收货单(任意非已完成/已取消状态 → 已取消) - * - * @param id 编号 - */ - void cancelProductRecpt(Long id); - - /** - * 校验产品收货单存在且处于可编辑状态(草稿或待上架) - * - * @param id 编号 - * @return 产品收货单 - */ - MesWmProductRecptDO validateProductRecptEditable(Long id); - - /** - * 校验产品收货单明细数量(每行明细数量之和是否等于行收货数量) - * - * @param id 编号 - * @return 是否匹配 - */ - Boolean checkProductRecptQuantity(Long id); - -} diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptServiceImpl.java deleted file mode 100644 index 72adc3c..0000000 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productrecpt/MesWmProductRecptServiceImpl.java +++ /dev/null @@ -1,233 +0,0 @@ -package cn.iocoder.yudao.module.mes.service.wm.productrecpt; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjUtil; -import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptPageReqVO; -import cn.iocoder.yudao.module.mes.controller.admin.wm.productrecpt.vo.MesWmProductRecptSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptDetailDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productrecpt.MesWmProductRecptLineDO; -import cn.iocoder.yudao.module.mes.dal.mysql.wm.productrecpt.MesWmProductRecptMapper; -import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductRecptStatusEnum; -import cn.iocoder.yudao.module.mes.service.wm.materialstock.MesWmMaterialStockService; -import jakarta.annotation.Resource; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.validation.annotation.Validated; - -import java.math.BigDecimal; -import java.util.List; - -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; - -/** - * MES 产品收货单 Service 实现类 - */ -@Service -@Validated -public class MesWmProductRecptServiceImpl implements MesWmProductRecptService { - - @Resource - private MesWmProductRecptMapper productRecptMapper; - - @Resource - private MesWmProductRecptLineService productRecptLineService; - - @Resource - private MesWmProductRecptDetailService productRecptDetailService; - - @Resource - private MesWmMaterialStockService materialStockService; - - @Resource - private cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService workOrderService; - - @Override - public Long createProductRecpt(MesWmProductRecptSaveReqVO createReqVO) { - // 校验编码唯一 - validateCodeUnique(null, createReqVO.getCode()); - // 校验工单存在并设置 itemId - MesProWorkOrderDO workOrder = createReqVO.getWorkOrderId() != null ? - workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()) : null; - - // 插入 - MesWmProductRecptDO recpt = BeanUtils.toBean(createReqVO, MesWmProductRecptDO.class); - if (workOrder != null) { - recpt.setItemId(workOrder.getProductId()); - } - recpt.setStatus(MesWmProductRecptStatusEnum.PREPARE.getStatus()); - productRecptMapper.insert(recpt); - return recpt.getId(); - } - - @Override - public void updateProductRecpt(MesWmProductRecptSaveReqVO updateReqVO) { - // 校验存在 + 草稿状态 - validateProductRecptExistsAndDraft(updateReqVO.getId()); - // 校验编码唯一 - validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); - // 校验工单存在 - MesProWorkOrderDO workOrder = updateReqVO.getWorkOrderId() != null ? - workOrderService.validateWorkOrderExists(updateReqVO.getWorkOrderId()) : null; - - // 更新 - MesWmProductRecptDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductRecptDO.class); - if (workOrder != null) { - updateObj.setItemId(workOrder.getProductId()); - } - productRecptMapper.updateById(updateObj); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteProductRecpt(Long id) { - // 校验存在 + 草稿状态 - validateProductRecptExistsAndDraft(id); - - // 级联删除明细和行 - productRecptDetailService.deleteProductRecptDetailByRecptId(id); - productRecptLineService.deleteProductRecptLineByRecptId(id); - // 删除 - productRecptMapper.deleteById(id); - } - - @Override - public MesWmProductRecptDO getProductRecpt(Long id) { - return productRecptMapper.selectById(id); - } - - @Override - public PageResult getProductRecptPage(MesWmProductRecptPageReqVO pageReqVO) { - return productRecptMapper.selectPage(pageReqVO); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void submitProductRecpt(Long id) { - // 校验存在 + 草稿状态 - validateProductRecptExistsAndDraft(id); - // 校验至少有一条行 - List lines = productRecptLineService.getProductRecptLineListByRecptId(id); - if (CollUtil.isEmpty(lines)) { - throw exception(WM_PRODUCT_RECPT_NO_LINE); - } - - // 提交(草稿 → 待上架) - productRecptMapper.updateById(new MesWmProductRecptDO() - .setId(id).setStatus(MesWmProductRecptStatusEnum.APPROVING.getStatus())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void stockProductRecpt(Long id) { - // 校验存在 - MesWmProductRecptDO recpt = validateProductRecptExists(id); - if (ObjUtil.notEqual(MesWmProductRecptStatusEnum.APPROVING.getStatus(), recpt.getStatus())) { - throw exception(WM_PRODUCT_RECPT_STATUS_ERROR); - } - - // 执行上架(待上架 → 待入库) - productRecptMapper.updateById(new MesWmProductRecptDO() - .setId(id).setStatus(MesWmProductRecptStatusEnum.APPROVED.getStatus())); - } - - @Override - public Boolean checkProductRecptQuantity(Long id) { - List lines = productRecptLineService.getProductRecptLineListByRecptId(id); - for (MesWmProductRecptLineDO line : lines) { - List details = productRecptDetailService.getProductRecptDetailListByLineId(line.getId()); - BigDecimal totalDetailQty = CollectionUtils.getSumValue(details, - MesWmProductRecptDetailDO::getQuantity, BigDecimal::add, BigDecimal.ZERO); - if (line.getQuantity() != null && totalDetailQty.compareTo(line.getQuantity()) != 0) { - return false; - } - } - return true; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void executeProductRecpt(Long id) { - // 校验存在 - MesWmProductRecptDO recpt = validateProductRecptExists(id); - if (ObjUtil.notEqual(MesWmProductRecptStatusEnum.APPROVED.getStatus(), recpt.getStatus())) { - throw exception(WM_PRODUCT_RECPT_STATUS_ERROR); - } - - // 遍历所有明细,更新库存台账 - // TODO @芋艿:【后面优化】 - List details = productRecptDetailService.getProductRecptDetailListByRecptId(id); - for (MesWmProductRecptDetailDO detail : details) { - materialStockService.increaseStock( - detail.getItemId(), detail.getWarehouseId(), detail.getLocationId(), detail.getAreaId(), - detail.getBatchId(), detail.getQuantity(), null, null, null); - } - - // 更新收货单状态 - productRecptMapper.updateById(new MesWmProductRecptDO() - .setId(id).setStatus(MesWmProductRecptStatusEnum.FINISHED.getStatus())); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void cancelProductRecpt(Long id) { - // 校验存在 - MesWmProductRecptDO recpt = validateProductRecptExists(id); - // 已完成和已取消不允许取消 - if (ObjectUtils.equalsAny(recpt.getStatus(), - MesWmProductRecptStatusEnum.FINISHED.getStatus(), - MesWmProductRecptStatusEnum.CANCELED.getStatus())) { - throw exception(WM_PRODUCT_RECPT_CANCEL_NOT_ALLOWED); - } - - // 取消 - productRecptMapper.updateById(new MesWmProductRecptDO() - .setId(id).setStatus(MesWmProductRecptStatusEnum.CANCELED.getStatus())); - } - - @Override - public MesWmProductRecptDO validateProductRecptEditable(Long id) { - MesWmProductRecptDO recpt = validateProductRecptExists(id); - if (ObjUtil.notEqual(recpt.getStatus(), MesWmProductRecptStatusEnum.PREPARE.getStatus()) - && ObjUtil.notEqual(recpt.getStatus(), MesWmProductRecptStatusEnum.APPROVING.getStatus())) { - throw exception(WM_PRODUCT_RECPT_STATUS_NOT_PREPARE); - } - return recpt; - } - - private MesWmProductRecptDO validateProductRecptExists(Long id) { - MesWmProductRecptDO recpt = productRecptMapper.selectById(id); - if (recpt == null) { - throw exception(WM_PRODUCT_RECPT_NOT_EXISTS); - } - return recpt; - } - - /** - * 校验产品收货单存在且为草稿状态 - */ - private MesWmProductRecptDO validateProductRecptExistsAndDraft(Long id) { - MesWmProductRecptDO recpt = validateProductRecptExists(id); - if (ObjUtil.notEqual(MesWmProductRecptStatusEnum.PREPARE.getStatus(), recpt.getStatus())) { - throw exception(WM_PRODUCT_RECPT_STATUS_NOT_PREPARE); - } - return recpt; - } - - private void validateCodeUnique(Long id, String code) { - MesWmProductRecptDO recpt = productRecptMapper.selectByCode(code); - if (recpt == null) { - return; - } - if (ObjUtil.notEqual(id, recpt.getId())) { - throw exception(WM_PRODUCT_RECPT_CODE_DUPLICATE); - } - } - -} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/detail/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/detail/index.ts new file mode 100644 index 0000000..d7e29fb --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/detail/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +// MES 产品收货单明细 VO +export interface WmProductRecptDetailVO { + id: number + lineId: number + recptId: number + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + quantity: number + batchId: number + warehouseId: number + warehouseName: string + locationId: number + locationName: string + areaId: number + areaName: string + remark: string + createTime: string +} + +// MES 产品收货单明细 API +export const WmProductRecptDetailApi = { + // 查询产品收货单明细详情 + getProductRecptDetail: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt-detail/get?id=' + id }) + }, + + // 查询产品收货单明细列表(按行编号) + getProductRecptDetailListByLineId: async (lineId: number) => { + return await request.get({ url: '/mes/wm/product-recpt-detail/list-by-line?lineId=' + lineId }) + }, + + // 新增产品收货单明细 + createProductRecptDetail: async (data: WmProductRecptDetailVO) => { + return await request.post({ url: '/mes/wm/product-recpt-detail/create', data }) + }, + + // 修改产品收货单明细 + updateProductRecptDetail: async (data: WmProductRecptDetailVO) => { + return await request.put({ url: '/mes/wm/product-recpt-detail/update', data }) + }, + + // 删除产品收货单明细 + deleteProductRecptDetail: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt-detail/delete?id=' + id }) + } +} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/index.ts new file mode 100644 index 0000000..6602c20 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/index.ts @@ -0,0 +1,72 @@ +import request from '@/config/axios' + +// MES 产品收货单 VO +export interface WmProductRecptVO { + id: number + code: string + name: string + workOrderId: number + workOrderCode: string + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + receiptDate: string + status: number + remark: string + createTime: string +} + +// MES 产品收货单 API +export const WmProductRecptApi = { + // 查询产品收货单分页 + getProductRecptPage: async (params: any) => { + return await request.get({ url: '/mes/wm/product-recpt/page', params }) + }, + + // 查询产品收货单详情 + getProductRecpt: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt/get?id=' + id }) + }, + + // 新增产品收货单 + createProductRecpt: async (data: WmProductRecptVO) => { + return await request.post({ url: '/mes/wm/product-recpt/create', data }) + }, + + // 修改产品收货单 + updateProductRecpt: async (data: WmProductRecptVO) => { + return await request.put({ url: '/mes/wm/product-recpt/update', data }) + }, + + // 删除产品收货单 + deleteProductRecpt: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt/delete?id=' + id }) + }, + + // 提交产品收货单 + submitProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/submit?id=' + id }) + }, + + // 执行上架 + stockProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/stock?id=' + id }) + }, + + // 执行入库 + executeProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/execute?id=' + id }) + }, + + // 取消产品收货单 + cancelProductRecpt: async (id: number) => { + return await request.put({ url: '/mes/wm/product-recpt/cancel?id=' + id }) + }, + + // 导出产品收货单 Excel + exportProductRecpt: async (params: any) => { + return await request.download({ url: '/mes/wm/product-recpt/export-excel', params }) + } +} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/line/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/line/index.ts new file mode 100644 index 0000000..c879e98 --- /dev/null +++ b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productreceipt/line/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +// MES 产品收货单行 VO +export interface WmProductRecptLineVO { + id: number + recptId: number + itemId: number + itemCode: string + itemName: string + specification: string + unitMeasureName: string + receivedQuantity: number + batchId: number + batchCode: string + remark: string + createTime: string +} + +// MES 产品收货单行 API +export const WmProductRecptLineApi = { + // 查询产品收货单行分页 + getProductRecptLinePage: async (params: any) => { + return await request.get({ url: '/mes/wm/product-recpt-line/page', params }) + }, + + // 查询产品收货单行详情 + getProductRecptLine: async (id: number) => { + return await request.get({ url: '/mes/wm/product-recpt-line/get?id=' + id }) + }, + + // 新增产品收货单行 + createProductRecptLine: async (data: WmProductRecptLineVO) => { + return await request.post({ url: '/mes/wm/product-recpt-line/create', data }) + }, + + // 修改产品收货单行 + updateProductRecptLine: async (data: WmProductRecptLineVO) => { + return await request.put({ url: '/mes/wm/product-recpt-line/update', data }) + }, + + // 删除产品收货单行 + deleteProductRecptLine: async (id: number) => { + return await request.delete({ url: '/mes/wm/product-recpt-line/delete?id=' + id }) + } +} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/detail/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/detail/index.ts deleted file mode 100644 index d7e29fb..0000000 --- a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/detail/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -import request from '@/config/axios' - -// MES 产品收货单明细 VO -export interface WmProductRecptDetailVO { - id: number - lineId: number - recptId: number - itemId: number - itemCode: string - itemName: string - specification: string - unitMeasureName: string - quantity: number - batchId: number - warehouseId: number - warehouseName: string - locationId: number - locationName: string - areaId: number - areaName: string - remark: string - createTime: string -} - -// MES 产品收货单明细 API -export const WmProductRecptDetailApi = { - // 查询产品收货单明细详情 - getProductRecptDetail: async (id: number) => { - return await request.get({ url: '/mes/wm/product-recpt-detail/get?id=' + id }) - }, - - // 查询产品收货单明细列表(按行编号) - getProductRecptDetailListByLineId: async (lineId: number) => { - return await request.get({ url: '/mes/wm/product-recpt-detail/list-by-line?lineId=' + lineId }) - }, - - // 新增产品收货单明细 - createProductRecptDetail: async (data: WmProductRecptDetailVO) => { - return await request.post({ url: '/mes/wm/product-recpt-detail/create', data }) - }, - - // 修改产品收货单明细 - updateProductRecptDetail: async (data: WmProductRecptDetailVO) => { - return await request.put({ url: '/mes/wm/product-recpt-detail/update', data }) - }, - - // 删除产品收货单明细 - deleteProductRecptDetail: async (id: number) => { - return await request.delete({ url: '/mes/wm/product-recpt-detail/delete?id=' + id }) - } -} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/index.ts deleted file mode 100644 index 6602c20..0000000 --- a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/index.ts +++ /dev/null @@ -1,72 +0,0 @@ -import request from '@/config/axios' - -// MES 产品收货单 VO -export interface WmProductRecptVO { - id: number - code: string - name: string - workOrderId: number - workOrderCode: string - itemId: number - itemCode: string - itemName: string - specification: string - unitMeasureName: string - receiptDate: string - status: number - remark: string - createTime: string -} - -// MES 产品收货单 API -export const WmProductRecptApi = { - // 查询产品收货单分页 - getProductRecptPage: async (params: any) => { - return await request.get({ url: '/mes/wm/product-recpt/page', params }) - }, - - // 查询产品收货单详情 - getProductRecpt: async (id: number) => { - return await request.get({ url: '/mes/wm/product-recpt/get?id=' + id }) - }, - - // 新增产品收货单 - createProductRecpt: async (data: WmProductRecptVO) => { - return await request.post({ url: '/mes/wm/product-recpt/create', data }) - }, - - // 修改产品收货单 - updateProductRecpt: async (data: WmProductRecptVO) => { - return await request.put({ url: '/mes/wm/product-recpt/update', data }) - }, - - // 删除产品收货单 - deleteProductRecpt: async (id: number) => { - return await request.delete({ url: '/mes/wm/product-recpt/delete?id=' + id }) - }, - - // 提交产品收货单 - submitProductRecpt: async (id: number) => { - return await request.put({ url: '/mes/wm/product-recpt/submit?id=' + id }) - }, - - // 执行上架 - stockProductRecpt: async (id: number) => { - return await request.put({ url: '/mes/wm/product-recpt/stock?id=' + id }) - }, - - // 执行入库 - executeProductRecpt: async (id: number) => { - return await request.put({ url: '/mes/wm/product-recpt/execute?id=' + id }) - }, - - // 取消产品收货单 - cancelProductRecpt: async (id: number) => { - return await request.put({ url: '/mes/wm/product-recpt/cancel?id=' + id }) - }, - - // 导出产品收货单 Excel - exportProductRecpt: async (params: any) => { - return await request.download({ url: '/mes/wm/product-recpt/export-excel', params }) - } -} diff --git a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/line/index.ts b/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/line/index.ts deleted file mode 100644 index c879e98..0000000 --- a/yudao-ui/yudao-ui-admin-vue3/src/api/mes/wm/productrecpt/line/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -import request from '@/config/axios' - -// MES 产品收货单行 VO -export interface WmProductRecptLineVO { - id: number - recptId: number - itemId: number - itemCode: string - itemName: string - specification: string - unitMeasureName: string - receivedQuantity: number - batchId: number - batchCode: string - remark: string - createTime: string -} - -// MES 产品收货单行 API -export const WmProductRecptLineApi = { - // 查询产品收货单行分页 - getProductRecptLinePage: async (params: any) => { - return await request.get({ url: '/mes/wm/product-recpt-line/page', params }) - }, - - // 查询产品收货单行详情 - getProductRecptLine: async (id: number) => { - return await request.get({ url: '/mes/wm/product-recpt-line/get?id=' + id }) - }, - - // 新增产品收货单行 - createProductRecptLine: async (data: WmProductRecptLineVO) => { - return await request.post({ url: '/mes/wm/product-recpt-line/create', data }) - }, - - // 修改产品收货单行 - updateProductRecptLine: async (data: WmProductRecptLineVO) => { - return await request.put({ url: '/mes/wm/product-recpt-line/update', data }) - }, - - // 删除产品收货单行 - deleteProductRecptLine: async (id: number) => { - return await request.delete({ url: '/mes/wm/product-recpt-line/delete?id=' + id }) - } -} -- libgit2 0.21.4