From 1bdfafac2592912316d08798df23b786b0e3f85c Mon Sep 17 00:00:00 2001 From: kkk-ops <1050738955@qq.com> Date: Wed, 14 Jan 2026 19:06:02 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=A8=A1=E5=85=B7=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/mold/vo/MoldRespVO.java | 5 +- .../admin/stock/ErpStockInController.java | 59 +++++++++--- .../admin/stock/ErpStockOutController.java | 60 +++++++++--- .../erp/service/mold/MoldBrandService.java | 23 +++++ .../service/mold/MoldBrandServiceImpl.java | 6 ++ .../module/erp/service/mold/MoldService.java | 34 +++++++ .../erp/service/mold/MoldServiceImpl.java | 61 ++++++++++++ .../service/stock/ErpStockInServiceImpl.java | 69 +++++++++----- .../service/stock/ErpStockOutServiceImpl.java | 68 ++++++++----- .../module/mes/enums/ErrorCodeConstants.java | 2 + .../moldoperate/MoldOperateController.java | 95 +++++++++++++++++++ .../moldoperate/vo/MoldOperatePageReqVO.java | 34 +++++++ .../moldoperate/vo/MoldOperateRespVO.java | 39 ++++++++ .../moldoperate/vo/MoldOperateSaveReqVO.java | 28 ++++++ .../dataobject/moldoperate/MoldOperateDO.java | 47 +++++++++ .../mysql/moldoperate/MoldOperateMapper.java | 30 ++++++ .../moldoperate/MoldOperateService.java | 55 +++++++++++ .../moldoperate/MoldOperateServiceImpl.java | 74 +++++++++++++++ .../mapper/moldoperate/MoldOperateMapper.xml | 12 +++ 19 files changed, 728 insertions(+), 73 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldoperate/MoldOperateDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldoperate/MoldOperateMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldoperate/MoldOperateMapper.xml diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldRespVO.java index 041e4bc5f9..c8337e2ffd 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldRespVO.java @@ -72,9 +72,12 @@ public class MoldRespVO { private LocalDateTime createTime; @Schema(description = "型号id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258") - @ExcelProperty("型号id") private Long brandId; + @Schema(description = "型号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15258") + @ExcelProperty("型号") + private String brandName; + @Schema(description = "附件地址") @ExcelProperty("附件地址") private String fileUrl; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java index 22bfbee434..ad3f0b515c 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockInController.java @@ -8,15 +8,19 @@ 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.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.StockInTypeEnum; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; import cn.iocoder.yudao.module.erp.service.stock.ErpStockInService; @@ -38,6 +42,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -59,6 +64,9 @@ public class ErpStockInController { @Resource private ErpSupplierService supplierService; + @Resource + private MoldService moldService; + @Resource private AdminUserApi adminUserApi; @@ -105,15 +113,28 @@ public class ErpStockInController { return success(null); } List stockInItemList = stockInService.getStockInItemListByInId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockInItemList, ErpStockInItemDO::getProductId)); - return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO -> - stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); + if (Objects.equals(stockIn.getInType(), "模具入库")) { + Map moldMap = moldService.getMoldVOMap( + convertSet(stockInItemList, ErpStockInItemDO::getProductId)); + return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO -> + stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> { + ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); + item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); + MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName()) + .setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName())); + })))); + } else { + Map productMap = productService.getProductVOMap( + convertSet(stockInItemList, ErpStockInItemDO::getProductId)); + return success(BeanUtils.toBean(stockIn, ErpStockInRespVO.class, stockInVO -> + stockInVO.setItems(BeanUtils.toBean(stockInItemList, ErpStockInRespVO.Item.class, item -> { + ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); + item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); + MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) + .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); + })))); + } + } @GetMapping("/page") @@ -161,12 +182,24 @@ public class ErpStockInController { // 1.4 管理员信息 Map userMap = adminUserApi.getUserMap( convertSet(pageResult.getList(), stockIn -> Long.parseLong(stockIn.getCreator()))); + // 1.7 模具信息 + Map moldMap = moldService.getMoldVOMap( + convertSet(stockInItemList, ErpStockInItemDO::getProductId)); + // 2. 开始拼接 return BeanUtils.toBean(pageResult, ErpStockInRespVO.class, stockIn -> { - stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockIn.setProductNames(CollUtil.join(stockIn.getItems(), ",", ErpStockInRespVO.Item::getProductName)); + if (Objects.equals(stockIn.getInType(), "模具入库")) { + stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class, + item -> MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName()) + .setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName())))); + stockIn.setProductNames(CollUtil.join(stockIn.getItems(), ",", ErpStockInRespVO.Item::getProductName)); + } else { + stockIn.setItems(BeanUtils.toBean(stockInItemMap.get(stockIn.getId()), ErpStockInRespVO.Item.class, + item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) + .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); + stockIn.setProductNames(CollUtil.join(stockIn.getItems(), ",", ErpStockInRespVO.Item::getProductName)); + + } MapUtils.findAndThen(supplierMap, stockIn.getSupplierId(), supplier -> stockIn.setSupplierName(supplier.getName())); MapUtils.findAndThen(userMap, Long.parseLong(stockIn.getCreator()), user -> stockIn.setCreatorName(user.getNickname())); }); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java index 3a145ac5dd..3a75d260b1 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/stock/ErpStockOutController.java @@ -8,6 +8,7 @@ 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.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutRespVO; @@ -15,8 +16,10 @@ import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSave import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.StockOutTypeEnum; import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; import cn.iocoder.yudao.module.erp.service.stock.ErpStockOutService; @@ -38,6 +41,7 @@ import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -59,6 +63,9 @@ public class ErpStockOutController { @Resource private ErpCustomerService customerService; + @Resource + private MoldService moldService; + @Resource private AdminUserApi adminUserApi; @@ -105,15 +112,28 @@ public class ErpStockOutController { return success(null); } List stockOutItemList = stockOutService.getStockOutItemListByOutId(id); - Map productMap = productService.getProductVOMap( - convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); - return success(BeanUtils.toBean(stockOut, ErpStockOutRespVO.class, stockOutVO -> - stockOutVO.setItems(BeanUtils.toBean(stockOutItemList, ErpStockOutRespVO.Item.class, item -> { - ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); - item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); - MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); - })))); + if (Objects.equals(stockOut.getOutType(), "模具出库")) { + Map moldMap = moldService.getMoldVOMap( + convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); + return success(BeanUtils.toBean(stockOut, ErpStockOutRespVO.class, stockOutVO -> + stockOutVO.setItems(BeanUtils.toBean(stockOutItemList, ErpStockOutRespVO.Item.class, item -> { + ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); + item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); + MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName()) + .setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName())); + })))); + } else { + Map productMap = productService.getProductVOMap( + convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); + return success(BeanUtils.toBean(stockOut, ErpStockOutRespVO.class, stockOutVO -> + stockOutVO.setItems(BeanUtils.toBean(stockOutItemList, ErpStockOutRespVO.Item.class, item -> { + ErpStockDO stock = stockService.getStock(item.getProductId(), item.getWarehouseId()); + item.setStockCount(stock != null ? stock.getCount() : BigDecimal.ZERO); + MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) + .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())); + })))); + } + } @GetMapping("/page") @@ -157,19 +177,29 @@ public class ErpStockOutController { // 1.3 客户信息 Map customerMap = customerService.getCustomerMap( convertSet(pageResult.getList(), ErpStockOutDO::getCustomerId)); - // 1.4 管理员信息 + // 1.5 管理员信息 Map userMap = adminUserApi.getUserMap( convertSet(pageResult.getList(), stockOut -> Long.parseLong(stockOut.getCreator()))); - // 1.4 领料员信息 + // 1.6 领料员信息 Map responserMap = adminUserApi.getUserMap( convertSet(pageResult.getList(), ErpStockOutDO::getResponserId)); + // 1.7 模具信息 + Map moldMap = moldService.getMoldVOMap( + convertSet(stockOutItemList, ErpStockOutItemDO::getProductId)); // 2. 开始拼接 return BeanUtils.toBean(pageResult, ErpStockOutRespVO.class, stockOut -> { - stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class, - item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) - .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); - stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); + if (Objects.equals(stockOut.getOutType(), "模具出库")) { + stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class, + item -> MapUtils.findAndThen(moldMap, item.getProductId(), mold -> item.setProductName(mold.getName()) + .setProductBarCode(mold.getCode()).setProductUnitName(mold.getUnitName())))); + stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); + } else { + stockOut.setItems(BeanUtils.toBean(stockOutItemMap.get(stockOut.getId()), ErpStockOutRespVO.Item.class, + item -> MapUtils.findAndThen(productMap, item.getProductId(), product -> item.setProductName(product.getName()) + .setProductBarCode(product.getBarCode()).setProductUnitName(product.getUnitName())))); + stockOut.setProductNames(CollUtil.join(stockOut.getItems(), ",", ErpStockOutRespVO.Item::getProductName)); + } MapUtils.findAndThen(customerMap, stockOut.getCustomerId(), supplier -> stockOut.setCustomerName(supplier.getName())); MapUtils.findAndThen(userMap, Long.parseLong(stockOut.getCreator()), user -> stockOut.setCreatorName(user.getNickname())); MapUtils.findAndThen(responserMap, stockOut.getResponserId(), user -> stockOut.setResponserName(user.getNickname())); diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandService.java index 2109fd7253..d79b3a56fa 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandService.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.*; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import javax.validation.Valid; import java.util.Collection; @@ -15,6 +16,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 模具型号 Service 接口 * @@ -149,4 +152,24 @@ public interface MoldBrandService { MoldBrandProductDO getMoldBrandProduct(Long id); List getAllList(); + + + /** + * 获得产品分类列表 + * + * @param ids 编号数组 + * @return 产品分类列表 + */ + List getMoldBrandList(Collection ids); + + /** + * 获得产品分类 Map + * + * @param ids 编号数组 + * @return 产品分类 Map + */ + default Map getMoldBrandMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getMoldBrandList(ids), MoldBrandDO::getId); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java index 988cc04bdc..966cb6db3e 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldBrandServiceImpl.java @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.*; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldBrandMapper; @@ -238,4 +239,9 @@ public class MoldBrandServiceImpl implements MoldBrandService { public List getAllList() { return moldMapper.selectList(); } + + @Override + public List getMoldBrandList(Collection ids) { + return moldBrandMapper.selectBatchIds(ids); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldService.java index 82e7d16eb4..acfdd70ca7 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldService.java @@ -4,8 +4,11 @@ import cn.hutool.core.collection.CollUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldPageReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldSaveReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import javax.validation.Valid; import java.util.Collection; @@ -13,6 +16,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 模具 Service 接口 * @@ -64,4 +69,33 @@ public interface MoldService { } return CollectionUtils.convertMap(getList(ids), MoldDO::getId); } + + /** + * 校验模具们的有效性 + * + * @param ids 编号数组 + * @return 模具列表 + */ + List validMoldList(Collection ids); + + /** + * 获得产品 VO 列表 + * + * @param ids 编号数组 + * @return 产品 VO 列表 + */ + List getMoldVOList(Collection ids); + + /** + * 获得模具 VO Map + * + * @param ids 编号数组 + * @return 模具 VO Map + */ + default Map getMoldVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getMoldVOList(ids), MoldRespVO::getId); + } + + List buildMoldVOList(List list); } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldServiceImpl.java index f345495ceb..285b750e90 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/mold/MoldServiceImpl.java @@ -1,6 +1,14 @@ package cn.iocoder.yudao.module.erp.service.mold; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +25,8 @@ import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import javax.annotation.Resource; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; /** @@ -31,6 +41,12 @@ public class MoldServiceImpl implements MoldService { @Resource private MoldMapper moldMapper; + @Resource + private MoldBrandService moldBrandService; + + @Resource + private ErpProductUnitService productUnitService; + @Override public Long createMold(MoldSaveReqVO createReqVO) { // 插入 @@ -76,4 +92,49 @@ public class MoldServiceImpl implements MoldService { public List getList(Collection ids) { return moldMapper.selectBatchIds(ids); } + + @Override + public List validMoldList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = moldMapper.selectBatchIds(ids); + Map moldMap = convertMap(list, MoldDO::getId); + for (Long id : ids) { + MoldDO mold = moldMap.get(id); + if (moldMap.get(id) == null) { + throw exception(PRODUCT_NOT_EXISTS); + } + if (CommonStatusEnum.isDisable(mold.getStatus())) { + throw exception(PRODUCT_NOT_ENABLE, mold.getName()); + } + } + return list; + } + + @Override + public List getMoldVOList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = moldMapper.selectBatchIds(ids); + return buildMoldVOList(list); + } + + @Override + public List buildMoldVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map brandMap = moldBrandService.getMoldBrandMap( + convertSet(list, MoldDO::getBrandId)); + Map unitMap = productUnitService.getProductUnitMap( + convertSet(list, MoldDO::getUnitId)); + return BeanUtils.toBean(list, MoldRespVO.class, product -> { + MapUtils.findAndThen(brandMap, product.getBrandId(), + category -> product.setBrandName(category.getName())); + MapUtils.findAndThen(unitMap, product.getUnitId(), + unit -> product.setUnitName(unit.getName())); + }); + } } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java index 2b02bd83f1..e936bc58e9 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockInServiceImpl.java @@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; +import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; @@ -14,6 +16,7 @@ import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockInMapper; import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.purchase.ErpSupplierService; import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; @@ -23,10 +26,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; @@ -53,6 +53,8 @@ public class ErpStockInServiceImpl implements ErpStockInService { @Resource private ErpProductService productService; @Resource + private MoldService moldService; + @Resource private ErpWarehouseService warehouseService; @Resource private ErpSupplierService supplierService; @@ -63,7 +65,7 @@ public class ErpStockInServiceImpl implements ErpStockInService { @Transactional(rollbackFor = Exception.class) public Long createStockIn(ErpStockInSaveReqVO createReqVO) { // 1.1 校验入库项的有效性 - List stockInItems = validateStockInItems(createReqVO.getItems()); + List stockInItems = validateStockInItems(createReqVO.getItems(),createReqVO.getInType()); // 1.2 校验供应商 //supplierService.validateSupplier(createReqVO.getSupplierId()); // 1.3 生成入库单号,并校验唯一性 @@ -95,7 +97,7 @@ public class ErpStockInServiceImpl implements ErpStockInService { // 1.2 校验供应商 //supplierService.validateSupplier(updateReqVO.getSupplierId()); // 1.3 校验入库项的有效性 - List stockInItems = validateStockInItems(updateReqVO.getItems()); + List stockInItems = validateStockInItems(updateReqVO.getItems(),updateReqVO.getInType()); // 2.1 更新入库单 ErpStockInDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockInDO.class, in -> in @@ -130,25 +132,48 @@ public class ErpStockInServiceImpl implements ErpStockInService { : ErpStockRecordBizTypeEnum.OTHER_IN_CANCEL.getType(); stockInItems.forEach(stockInItem -> { BigDecimal count = approve ? stockInItem.getCount() : stockInItem.getCount().negate(); - ErpProductDO productDO = productService.getProduct(stockInItem.getProductId()); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockInItem.getProductId(),productDO.getCategoryId(), stockInItem.getWarehouseId(), count, - bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime())); + if (Objects.equals(stockIn.getInType(), "模具入库")) { + MoldDO moldDO = moldService.getMold(stockInItem.getProductId()); + stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( + stockInItem.getProductId(),moldDO.getBrandId(), stockInItem.getWarehouseId(), count, + bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime())); + } else { + ErpProductDO productDO = productService.getProduct(stockInItem.getProductId()); + stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( + stockInItem.getProductId(),productDO.getCategoryId(), stockInItem.getWarehouseId(), count, + bizType, stockInItem.getInId(), stockInItem.getId(), stockIn.getNo(), stockIn.getInTime())); + } }); } - private List validateStockInItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockInSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSet( - list, ErpStockInSaveReqVO.Item::getWarehouseId)); - // 2. 转化为 ErpStockInItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + private List validateStockInItems(List list,String outType) { + if (Objects.equals(outType, "模具入库")) { + // 1.1 校验模具存在 + List moldList = moldService.validMoldList( + convertSet(list, ErpStockInSaveReqVO.Item::getProductId)); + Map moldMap = convertMap(moldList, MoldDO::getId); + // 1.2 校验仓库存在 + warehouseService.validWarehouseList(convertSet( + list, ErpStockInSaveReqVO.Item::getWarehouseId)); + // 2. 转化为 ErpStockInItemDO 列表 + return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item + .setProductUnitId(moldMap.get(item.getProductId()).getUnitId()) + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + + } else { + // 1.1 校验产品存在 + List productList = productService.validProductList( + convertSet(list, ErpStockInSaveReqVO.Item::getProductId)); + Map productMap = convertMap(productList, ErpProductDO::getId); + // 1.2 校验仓库存在 + warehouseService.validWarehouseList(convertSet( + list, ErpStockInSaveReqVO.Item::getWarehouseId)); + // 2. 转化为 ErpStockInItemDO 列表 + return convertList(list, o -> BeanUtils.toBean(o, ErpStockInItemDO.class, item -> item + .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + } + } private void updateStockInItemList(Long id, List newList) { diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java index 76179939f6..f09e4b8699 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/stock/ErpStockOutServiceImpl.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutPageReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutDO; import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockOutItemDO; @@ -14,6 +15,7 @@ import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockOutMapper; import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO; import cn.iocoder.yudao.module.erp.enums.ErpAuditStatus; import cn.iocoder.yudao.module.erp.enums.stock.ErpStockRecordBizTypeEnum; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; import cn.iocoder.yudao.module.erp.service.stock.bo.ErpStockRecordCreateReqBO; @@ -24,10 +26,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; @@ -55,6 +54,9 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { @Resource private ErpProductService productService; + @Resource + private MoldService moldService; + @Resource private ErpWarehouseService warehouseService; @Resource @@ -67,7 +69,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { @Transactional(rollbackFor = Exception.class) public Long createStockOut(ErpStockOutSaveReqVO createReqVO) { // 1.1 校验出库项的有效性 - List stockOutItems = validateStockOutItems(createReqVO.getItems()); + List stockOutItems = validateStockOutItems(createReqVO.getItems(),createReqVO.getOutType()); // 1.2 校验客户 //customerService.validateCustomer(createReqVO.getCustomerId()); // 1.3 生成出库单号,并校验唯一性 @@ -99,7 +101,7 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { // 1.2 校验客户 customerService.validateCustomer(updateReqVO.getCustomerId()); // 1.3 校验出库项的有效性 - List stockOutItems = validateStockOutItems(updateReqVO.getItems()); + List stockOutItems = validateStockOutItems(updateReqVO.getItems(),updateReqVO.getOutType()); // 2.1 更新出库单 ErpStockOutDO updateObj = BeanUtils.toBean(updateReqVO, ErpStockOutDO.class, in -> in @@ -134,24 +136,46 @@ public class ErpStockOutServiceImpl implements ErpStockOutService { : ErpStockRecordBizTypeEnum.OTHER_OUT_CANCEL.getType(); stockOutItems.forEach(stockOutItem -> { BigDecimal count = approve ? stockOutItem.getCount().negate() : stockOutItem.getCount(); - ErpProductDO productDO = productService.getProduct(stockOutItem.getProductId()); - stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( - stockOutItem.getProductId(),productDO.getCategoryId(), stockOutItem.getWarehouseId(), count, - bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(),stockOut.getOutTime())); - }); + if (Objects.equals(stockOut.getOutType(), "模具出库")) { + MoldDO moldDO = moldService.getMold(stockOutItem.getProductId()); + stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( + stockOutItem.getProductId(),moldDO.getBrandId(), stockOutItem.getWarehouseId(), count, + bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(),stockOut.getOutTime())); + + } else { + ErpProductDO productDO = productService.getProduct(stockOutItem.getProductId()); + stockRecordService.createStockRecord(new ErpStockRecordCreateReqBO( + stockOutItem.getProductId(),productDO.getCategoryId(), stockOutItem.getWarehouseId(), count, + bizType, stockOutItem.getOutId(), stockOutItem.getId(), stockOut.getNo(),stockOut.getOutTime())); + + } + }); } - private List validateStockOutItems(List list) { - // 1.1 校验产品存在 - List productList = productService.validProductList( - convertSet(list, ErpStockOutSaveReqVO.Item::getProductId)); - Map productMap = convertMap(productList, ErpProductDO::getId); - // 1.2 校验仓库存在 - warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId)); - // 2. 转化为 ErpStockOutItemDO 列表 - return convertList(list, o -> BeanUtils.toBean(o, ErpStockOutItemDO.class, item -> item - .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) - .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + private List validateStockOutItems(List list,String outType) { + if (Objects.equals(outType, "模具出库")) { + // 1.1 校验模具存在 + List moldList = moldService.validMoldList( + convertSet(list, ErpStockOutSaveReqVO.Item::getProductId)); + Map moldMap = convertMap(moldList, MoldDO::getId); + // 1.2 校验仓库存在 + warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId)); + // 2. 转化为 ErpStockOutItemDO 列表 + return convertList(list, o -> BeanUtils.toBean(o, ErpStockOutItemDO.class, item -> item + .setProductUnitId(moldMap.get(item.getProductId()).getUnitId()) + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + } else { + // 1.1 校验产品存在 + List productList = productService.validProductList( + convertSet(list, ErpStockOutSaveReqVO.Item::getProductId)); + Map productMap = convertMap(productList, ErpProductDO::getId); + // 1.2 校验仓库存在 + warehouseService.validWarehouseList(convertSet(list, ErpStockOutSaveReqVO.Item::getWarehouseId)); + // 2. 转化为 ErpStockOutItemDO 列表 + return convertList(list, o -> BeanUtils.toBean(o, ErpStockOutItemDO.class, item -> item + .setProductUnitId(productMap.get(item.getProductId()).getUnitId()) + .setTotalPrice(MoneyUtils.priceMultiply(item.getProductPrice(), item.getCount())))); + } } private void updateStockOutItemList(Long id, List newList) { diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 2122cb24dd..519a225c79 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -86,6 +86,8 @@ public interface ErrorCodeConstants { ErrorCode MOLD_RECORD_NOT_EXISTS = new ErrorCode(5_0087, "模具维保不存在"); ErrorCode MOLD_GET_NOT_EXISTS = new ErrorCode(5_0087, "领模申请不存在"); ErrorCode MOLD_RETURN_NOT_EXISTS = new ErrorCode(5_0087, "模具入库不存在"); + ErrorCode MOLD_OPERATE_NOT_EXISTS = new ErrorCode(5_0087, "模具上下模不存在"); + ErrorCode DV_CHECK_NOT_EXISTS = new ErrorCode(5_0087, "维保计划不存在"); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java new file mode 100644 index 0000000000..3bf827636f --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldoperate; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; +import cn.iocoder.yudao.module.mes.service.moldoperate.MoldOperateService; + +@Tag(name = "管理后台 - 模具上下模") +@RestController +@RequestMapping("/mes/mold-operate") +@Validated +public class MoldOperateController { + + @Resource + private MoldOperateService moldOperateService; + + @PostMapping("/create") + @Operation(summary = "创建模具上下模") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:create')") + public CommonResult createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) { + return success(moldOperateService.createMoldOperate(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模具上下模") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:update')") + public CommonResult updateMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO updateReqVO) { + moldOperateService.updateMoldOperate(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模具上下模") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:mold-operate:delete')") + public CommonResult deleteMoldOperate(@RequestParam("id") Long id) { + moldOperateService.deleteMoldOperate(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模具上下模") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") + public CommonResult getMoldOperate(@RequestParam("id") Long id) { + MoldOperateDO moldOperate = moldOperateService.getMoldOperate(id); + return success(BeanUtils.toBean(moldOperate, MoldOperateRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得模具上下模分页") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") + public CommonResult> getMoldOperatePage(@Valid MoldOperatePageReqVO pageReqVO) { + PageResult pageResult = moldOperateService.getMoldOperatePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, MoldOperateRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模具上下模 Excel") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMoldOperateExcel(@Valid MoldOperatePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = moldOperateService.getMoldOperatePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模具上下模.xls", "数据", MoldOperateRespVO.class, + BeanUtils.toBean(list, MoldOperateRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java new file mode 100644 index 0000000000..eb5c81528d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 模具上下模分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MoldOperatePageReqVO extends PageParam { + + @Schema(description = "操作类型", example = "2") + private String operateType; + + @Schema(description = "关联模具id", example = "23041") + private Long moldId; + + @Schema(description = "关联设备id", example = "5057") + private Long deviceId; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java new file mode 100644 index 0000000000..a4b2638180 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 模具上下模 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MoldOperateRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16323") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "操作类型", example = "2") + @ExcelProperty("操作类型") + private String operateType; + + @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") + @ExcelProperty("关联模具id") + private Long moldId; + + @Schema(description = "关联设备id", example = "5057") + @ExcelProperty("关联设备id") + private Long deviceId; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java new file mode 100644 index 0000000000..028fc2fe0a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 模具上下模新增/修改 Request VO") +@Data +public class MoldOperateSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16323") + private Long id; + + @Schema(description = "操作类型", example = "2") + private String operateType; + + @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") + @NotNull(message = "关联模具id不能为空") + private Long moldId; + + @Schema(description = "关联设备id", example = "5057") + private Long deviceId; + + @Schema(description = "备注", example = "随便") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldoperate/MoldOperateDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldoperate/MoldOperateDO.java new file mode 100644 index 0000000000..6bc54fc993 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldoperate/MoldOperateDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 模具上下模 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_mold_operate") +@KeySequence("mes_mold_operate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MoldOperateDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 操作类型 + */ + private String operateType; + /** + * 关联模具id + */ + private Long moldId; + /** + * 关联设备id + */ + private Long deviceId; + /** + * 备注 + */ + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldoperate/MoldOperateMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldoperate/MoldOperateMapper.java new file mode 100644 index 0000000000..dd860ae2f1 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldoperate/MoldOperateMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.moldoperate; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; + +/** + * 模具上下模 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface MoldOperateMapper extends BaseMapperX { + + default PageResult selectPage(MoldOperatePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MoldOperateDO::getOperateType, reqVO.getOperateType()) + .eqIfPresent(MoldOperateDO::getMoldId, reqVO.getMoldId()) + .eqIfPresent(MoldOperateDO::getDeviceId, reqVO.getDeviceId()) + .eqIfPresent(MoldOperateDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(MoldOperateDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MoldOperateDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateService.java new file mode 100644 index 0000000000..270b75af5a --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.service.moldoperate; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 模具上下模 Service 接口 + * + * @author 内蒙必硕 + */ +public interface MoldOperateService { + + /** + * 创建模具上下模 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMoldOperate(@Valid MoldOperateSaveReqVO createReqVO); + + /** + * 更新模具上下模 + * + * @param updateReqVO 更新信息 + */ + void updateMoldOperate(@Valid MoldOperateSaveReqVO updateReqVO); + + /** + * 删除模具上下模 + * + * @param id 编号 + */ + void deleteMoldOperate(Long id); + + /** + * 获得模具上下模 + * + * @param id 编号 + * @return 模具上下模 + */ + MoldOperateDO getMoldOperate(Long id); + + /** + * 获得模具上下模分页 + * + * @param pageReqVO 分页查询 + * @return 模具上下模分页 + */ + PageResult getMoldOperatePage(MoldOperatePageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateServiceImpl.java new file mode 100644 index 0000000000..66017b3ecc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldoperate/MoldOperateServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.mes.service.moldoperate; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.mes.dal.mysql.moldoperate.MoldOperateMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * 模具上下模 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class MoldOperateServiceImpl implements MoldOperateService { + + @Resource + private MoldOperateMapper moldOperateMapper; + + @Override + public Long createMoldOperate(MoldOperateSaveReqVO createReqVO) { + // 插入 + MoldOperateDO moldOperate = BeanUtils.toBean(createReqVO, MoldOperateDO.class); + moldOperateMapper.insert(moldOperate); + // 返回 + return moldOperate.getId(); + } + + @Override + public void updateMoldOperate(MoldOperateSaveReqVO updateReqVO) { + // 校验存在 + validateMoldOperateExists(updateReqVO.getId()); + // 更新 + MoldOperateDO updateObj = BeanUtils.toBean(updateReqVO, MoldOperateDO.class); + moldOperateMapper.updateById(updateObj); + } + + @Override + public void deleteMoldOperate(Long id) { + // 校验存在 + validateMoldOperateExists(id); + // 删除 + moldOperateMapper.deleteById(id); + } + + private void validateMoldOperateExists(Long id) { + if (moldOperateMapper.selectById(id) == null) { + throw exception(MOLD_OPERATE_NOT_EXISTS); + } + } + + @Override + public MoldOperateDO getMoldOperate(Long id) { + return moldOperateMapper.selectById(id); + } + + @Override + public PageResult getMoldOperatePage(MoldOperatePageReqVO pageReqVO) { + return moldOperateMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldoperate/MoldOperateMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldoperate/MoldOperateMapper.xml new file mode 100644 index 0000000000..07408e058d --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldoperate/MoldOperateMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file From 69a5fc3689bc164b08c71273beaae912602927f3 Mon Sep 17 00:00:00 2001 From: 86158 <461356067@qq.com> Date: Thu, 15 Jan 2026 17:50:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E6=A8=A1?= =?UTF-8?q?=E5=85=B7=E7=BB=B4=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/mold/vo/MoldBrandRespVO.java | 2 +- .../admin/mold/vo/MoldBrandSaveReqVO.java | 6 +- .../admin/moldrepair/vo/MoldRepairRespVO.java | 6 +- .../MoldRepairTemsController.java | 133 +++++++++++++++ .../vo/MoldRepairTemsPageReqVO.java | 55 ++++++ .../vo/MoldRepairTemsRespVO.java | 81 +++++++++ .../vo/MoldRepairTemsSaveReqVO.java | 62 +++++++ .../moldrepairtems/MoldRepairTemsDO.java | 72 ++++++++ .../moldrepairtems/MoldRepairTemsMapper.java | 42 +++++ .../moldrepairtems/MoldRepairTemsService.java | 62 +++++++ .../MoldRepairTemsServiceImpl.java | 160 ++++++++++++++++++ .../moldrepairtems/MoldRepairTemsMapper.xml | 113 +++++++++++++ 12 files changed, 787 insertions(+), 7 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepairtems/MoldRepairTemsDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrepairtems/MoldRepairTemsMapper.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrepairtems/MoldRepairTemsMapper.xml diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandRespVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandRespVO.java index ca0e6de7ee..b6fe29e59d 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandRespVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandRespVO.java @@ -70,7 +70,7 @@ public class MoldBrandRespVO { @ColumnWidth(20) private LocalDateTime createTime; - @Schema(description = "工序", example = "你说的对") + @Schema(description = "工序", example = "reya") @ExcelProperty(value = "工序", converter = DictConvert.class) @DictFormat("mes_org_type") private String orgType; diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java index faedbfd755..a698fe5168 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java @@ -28,7 +28,7 @@ public class MoldBrandSaveReqVO { private String moldType; @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336") - @NotNull(message = "产品ID不能为空") +// @NotNull(message = "产品ID不能为空") private Long productId; @Schema(description = "预期寿命(小时)") @@ -40,8 +40,8 @@ public class MoldBrandSaveReqVO { @Schema(description = "维保周期") private BigDecimal maintainTime; - @Schema(description = "模具系数", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "模具系数不能为空") + @Schema(description = "模穴数", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "模穴数不能为空") private Long moldSize; @Schema(description = "备注", example = "你说的对") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java index ebf7fe9176..b9911f351b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepair/vo/MoldRepairRespVO.java @@ -42,16 +42,16 @@ public class MoldRepairRespVO { private String moldName; @Schema(description = "品牌") - @ExcelProperty("品牌") +// @ExcelProperty("品牌") private String moldBrand; @Schema(description = "规格型号") - @ExcelProperty("规格型号") +// @ExcelProperty("规格型号") private String moldSpec; @Schema(description = "模具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1622") // @ExcelProperty(value = "模具类型", converter = DictConvert.class) - @DictFormat("mes_machine_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 +// @DictFormat("mes_machine_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private Long moldTypeId; @Schema(description = "报修日期") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java new file mode 100644 index 0000000000..9998bd5c18 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/MoldRepairTemsController.java @@ -0,0 +1,133 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems; + +import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO; +import cn.iocoder.yudao.module.mes.service.moldrepairtems.MoldRepairTemsService; + +@Tag(name = "管理后台 - 维修项目") +@RestController +@RequestMapping("/mes/mold-repair-tems") +@Validated +public class MoldRepairTemsController { + + @Resource + private MoldRepairTemsService moldrepairTemsService; + + @PostMapping("/create") + @Operation(summary = "创建维修项目") + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:create')") + public CommonResult createMoldRepairTems(@Valid @RequestBody MoldRepairTemsSaveReqVO createReqVO) { + return success(moldrepairTemsService.createMoldRepairTems(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新维修项目") + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:update')") + public CommonResult updateMoldRepairTems(@Valid @RequestBody MoldRepairTemsSaveReqVO updateReqVO) { + moldrepairTemsService.updateMoldRepairTems(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除维修项目") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:delete')") + public CommonResult deleteMoldRepairTems(@RequestParam("ids") String ids) { + List idList = Arrays.stream(ids.split(",")) + .map(String::trim) // 去除可能存在的空格 + .map(Long::valueOf) + .collect(Collectors.toList()); + moldrepairTemsService.deleteMoldRepairTems(idList); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得维修项目") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:query')") + public CommonResult getMoldRepairTems(@RequestParam("id") Long id) { + MoldRepairTemsDO moldrepairTems = moldrepairTemsService.getMoldRepairTems(id); + return success(BeanUtils.toBean(moldrepairTems, MoldRepairTemsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得维修项目分页") + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:query')") + public CommonResult> getMoldRepairTemsPage(@Valid MoldRepairTemsPageReqVO pageReqVO) { + PageResult pageResult = moldrepairTemsService.getMoldRepairTemsPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出维修项目 Excel") + @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportMoldRepairTemsExcel(@Valid MoldRepairTemsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = moldrepairTemsService.getMoldRepairTemsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "维修项目.xls", "数据", MoldRepairTemsRespVO.class,list); + } + + + +// @GetMapping("/getMoldOrComponent") +// @Operation(summary = "获得设备/关键件") +// @Parameter(name = "moldType", description = "moldType 1-设备 2-关键件", required = true, example = "1024") +// @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:query')") +// public CommonResult> getMoldOrComponent(@RequestParam("moldType") Integer moldType) { +// return success( moldrepairTemsService.getMoldOrComponent(moldType)); +// } +// +// @GetMapping("/getMoldOrComponentList") +// @Operation(summary = "获得设备/关键件列表") +//// @Parameter(name = "moldType", description = "moldType 1-设备 2-关键件", required = true, example = "1024") +// @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:query')") +// public CommonResult> getMoldOrComponentList( +// @Parameter(name = "moldId", description = "设备Id", required = true, example = "123") +// @RequestParam("moldId") Long moldId, +// @Parameter(name = "componentId", description = "关键件Id", required = false, example = "123") +// @RequestParam(value = "componentId",required = false) Long componentId) { +// return success(moldrepairTemsService.getMoldOrComponentList(moldId,componentId)); +// } +// +// +// @GetMapping("/getComponentList") +// @Operation(summary = "获得设备关键件") +// @Parameter(name = "moldId", description = "moldId设备Id", required = true, example = "1024") +// @PreAuthorize("@ss.hasPermission('mes:mold-repair-tems:query')") +// public CommonResult> getComponentList(@RequestParam("moldId") Long moldId) { +// return success( moldrepairTemsService.getComponentList(moldId)); +// } + + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsPageReqVO.java new file mode 100644 index 0000000000..fbabb8ab70 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsPageReqVO.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 维修项目分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class MoldRepairTemsPageReqVO extends PageParam { + + @Schema(description = "项目编码") + private String subjectCode; + + @Schema(description = "项目名称", example = "芋艿") + private String subjectName; + + @Schema(description = "模具类型", example = "1") + private Integer moldBrand; + + @Schema(description = "模具id", example = "11632") + private Long moldId; + + @Schema(description = "关键件id", example = "29557") + private Long componentId; + + @Schema(description = "检验方式") + private String inspectionMethod; + + @Schema(description = "值类型", example = "1") + private String valueType; + + @Schema(description = "判定基准") + private String judgmentCriteria; + + @Schema(description = "是否启用") + private Boolean isEnable; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "项目内容") + private String projectContent; + + @Schema(description = "id集合导出用") + private String ids; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsRespVO.java new file mode 100644 index 0000000000..ce295de5f5 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsRespVO.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo; + +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 维修项目 Response VO") +@Data +@ExcelIgnoreUnannotated +public class MoldRepairTemsRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15428") +// @ExcelProperty("ID") + private Long id; + + @Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("维修编码") + private String subjectCode; + + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("维修名称") + private String subjectName; + + @Schema(description = "模具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private Integer moldBrand; + + @Schema(description = "模具类型名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") +// @ExcelProperty("模具类型名称") + private String moldBrandName; + + @Schema(description = "模具id", example = "11632") +// @ExcelProperty("模具id") + private Long moldId; + + @Schema(description = "关键件id", example = "29557") +// @ExcelProperty("关键件id") + private Long componentId; + + @Schema(description = "检验方式") +// @ExcelProperty("检验方式") + private String inspectionMethod; + + @Schema(description = "值类型", example = "1") +// @ExcelProperty("值类型") + private String valueType; + + @Schema(description = "判定基准") +// @ExcelProperty("判定基准") + private String judgmentCriteria; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否启用") + private Boolean isEnable; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + @ColumnWidth(20) + private LocalDateTime createTime; + + @Schema(description = "模具名称") + @ExcelProperty("模具名称") + private String moldName; + + @Schema(description = "关键件名称") +// @ExcelProperty("关键件名称") + private String componentName; + + @Schema(description = "创建人名称") + @ExcelProperty("创建人名称") + private String creatorName; + + @Schema(description = "项目内容") + @ExcelProperty("维修内容") + private String projectContent; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsSaveReqVO.java new file mode 100644 index 0000000000..ca3ad8bd9e --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldrepairtems/vo/MoldRepairTemsSaveReqVO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 维修项目新增/修改 Request VO") +@Data +public class MoldRepairTemsSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15428") + private Long id; + + @Schema(description = "项目编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "项目编码不能为空") + private String subjectCode; + + @Schema(description = "项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "项目名称不能为空") + private String subjectName; + + @Schema(description = "模具类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") +// @NotNull(message = "模具类型不能为空") + private Integer moldBrand; + + @Schema(description = "模具id", example = "11632") + private Long moldId; + + @Schema(description = "关键件id", example = "29557") + private Long componentId; + + @Schema(description = "检验方式") + private String inspectionMethod; + + @Schema(description = "值类型", example = "1") + private String valueType; + + @Schema(description = "判定基准") + private String judgmentCriteria; + + @Schema(description = "是否启用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "是否启用不能为空") + private Boolean isEnable; + + @Schema(description = "模具名称") + @ExcelProperty("模具名称") + private String moldName; + + @Schema(description = "关键件名称") + @ExcelProperty("关键件名称") + private String componentName; + + @Schema(description = "创建人名称") + @ExcelProperty("创建人名称") + private String creatorName; + + @Schema(description = "项目内容") + @ExcelProperty("项目内容") + private String projectContent; +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepairtems/MoldRepairTemsDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepairtems/MoldRepairTemsDO.java new file mode 100644 index 0000000000..274a389bc9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/moldrepairtems/MoldRepairTemsDO.java @@ -0,0 +1,72 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 维修项目 DO + * + * @author 内蒙必硕 + */ +@TableName("mes_mold_repair_tems") +@KeySequence("mes_mold_repair_tems_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MoldRepairTemsDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 项目编码 + */ + private String subjectCode; + /** + * 项目名称 + */ + private String subjectName; + /** + * 设备类型 + */ + private Integer moldBrand; + /** + * 设备id + */ + private Long moldId; + /** + * 关键件id + */ + private Long componentId; + /** + * 检验方式 + */ + private String inspectionMethod; + /** + * 值类型 + */ + private String valueType; + /** + * 判定基准 + */ + private String judgmentCriteria; + /** + * 是否启用 + */ + private Boolean isEnable; + /** + * 项目内容 + */ + private String projectContent; + + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrepairtems/MoldRepairTemsMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrepairtems/MoldRepairTemsMapper.java new file mode 100644 index 0000000000..c468007a94 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/moldrepairtems/MoldRepairTemsMapper.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.moldrepairtems; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*; +import org.apache.ibatis.annotations.Param; + +/** + * 维修项目 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface MoldRepairTemsMapper extends BaseMapperX { + + default PageResult selectPage(MoldRepairTemsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MoldRepairTemsDO::getSubjectCode, reqVO.getSubjectCode()) + .likeIfPresent(MoldRepairTemsDO::getSubjectName, reqVO.getSubjectName()) + .eqIfPresent(MoldRepairTemsDO::getMoldBrand, reqVO.getMoldBrand()) + .eqIfPresent(MoldRepairTemsDO::getMoldId, reqVO.getMoldId()) + .eqIfPresent(MoldRepairTemsDO::getComponentId, reqVO.getComponentId()) + .eqIfPresent(MoldRepairTemsDO::getInspectionMethod, reqVO.getInspectionMethod()) + .eqIfPresent(MoldRepairTemsDO::getValueType, reqVO.getValueType()) + .eqIfPresent(MoldRepairTemsDO::getJudgmentCriteria, reqVO.getJudgmentCriteria()) + .eqIfPresent(MoldRepairTemsDO::getIsEnable, reqVO.getIsEnable()) + .betweenIfPresent(MoldRepairTemsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MoldRepairTemsDO::getId)); + } + + IPage getMoldRepairTemsPage(Page page, @Param("pageReqVO") MoldRepairTemsPageReqVO pageReqVO); + + List getMoldRepairTemsList( @Param("pageReqVO") MoldRepairTemsPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java new file mode 100644 index 0000000000..6cc2add261 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsService.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.service.moldrepairtems; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 维修项目 Service 接口 + * + * @author 内蒙必硕 + */ +public interface MoldRepairTemsService { + + /** + * 创建维修项目 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createMoldRepairTems(@Valid MoldRepairTemsSaveReqVO createReqVO); + + /** + * 更新维修项目 + * + * @param updateReqVO 更新信息 + */ + void updateMoldRepairTems(@Valid MoldRepairTemsSaveReqVO updateReqVO); + + /** + * 删除维修项目 + * + * @param id 编号 + */ + void deleteMoldRepairTems( List idList); + + /** + * 获得维修项目 + * + * @param id 编号 + * @return 维修项目 + */ + MoldRepairTemsDO getMoldRepairTems(Long id); + + /** + * 获得维修项目分页 + * + * @param pageReqVO 分页查询 + * @return 维修项目分页 + */ + PageResult getMoldRepairTemsPage(MoldRepairTemsPageReqVO pageReqVO); + +// List getMoldOrComponent(Integer moldBrand); + +// List getMoldOrComponentList(Long moldId, Long componentId); + +// List getComponentList(Long moldId); +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java new file mode 100644 index 0000000000..bb121e4da7 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/moldrepairtems/MoldRepairTemsServiceImpl.java @@ -0,0 +1,160 @@ +package cn.iocoder.yudao.module.mes.service.moldrepairtems; + +//import cn.iocoder.yudao.module.iot.controller.admin.mold.vo.LineMoldRespVO; +//import cn.iocoder.yudao.module.iot.dal.dataobject.moldmodel.MoldModelDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.mes.dal.mysql.criticalcomponent.CriticalComponentMapper; +import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; +import cn.iocoder.yudao.module.mes.service.moldrepairtems.MoldRepairTemsService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.module.mes.controller.admin.moldrepairtems.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.moldrepairtems.MoldRepairTemsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.mes.dal.mysql.moldrepairtems.MoldRepairTemsMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * 维修项目 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class MoldRepairTemsServiceImpl implements MoldRepairTemsService { + + @Resource + private MoldRepairTemsMapper moldrepairTemsMapper; + + + @Resource + private MoldMapper moldMapper; + @Resource + private CriticalComponentMapper criticalComponentMapper; + + @Override + public Long createMoldRepairTems(MoldRepairTemsSaveReqVO createReqVO) { + //编码重复判断 + Long count = moldrepairTemsMapper.selectCount(new LambdaQueryWrapper() + .eq(MoldRepairTemsDO::getSubjectCode, createReqVO.getSubjectCode()) + ); + + if (count > 0) { + throw exception(REPAIR_TEMS_CODE_EXISTS); + } + + // 插入 + MoldRepairTemsDO moldrepairTems = BeanUtils.toBean(createReqVO, MoldRepairTemsDO.class); + moldrepairTemsMapper.insert(moldrepairTems); + // 返回 + return moldrepairTems.getId(); + } + + @Override + public void updateMoldRepairTems(MoldRepairTemsSaveReqVO updateReqVO) { + // 校验存在 + validateMoldRepairTemsExists(updateReqVO.getId()); + + //编码重复判断 + Long count = moldrepairTemsMapper.selectCount(new LambdaQueryWrapper() + .eq(MoldRepairTemsDO::getSubjectCode, updateReqVO.getSubjectCode()) + .ne(MoldRepairTemsDO::getId, updateReqVO.getId()) + + ); + + if (count > 0) { + throw exception(REPAIR_TEMS_CODE_EXISTS); + } + + // 更新 + MoldRepairTemsDO updateObj = BeanUtils.toBean(updateReqVO, MoldRepairTemsDO.class); + moldrepairTemsMapper.updateById(updateObj); + } + + @Override + public void deleteMoldRepairTems( List idList) { + for (Long id : idList) { + // 校验存在 + validateMoldRepairTemsExists(id); + } + + // 删除 + moldrepairTemsMapper.deleteByIds(idList); + } + + private void validateMoldRepairTemsExists(Long id) { + if (moldrepairTemsMapper.selectById(id) == null) { + throw exception(REPAIR_TEMS_NOT_EXISTS); + } + } + + @Override + public MoldRepairTemsDO getMoldRepairTems(Long id) { + return moldrepairTemsMapper.selectById(id); + } + + @Override + public PageResult getMoldRepairTemsPage(MoldRepairTemsPageReqVO pageReqVO) { + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + IPage moldrepairTemsDOIPage = moldrepairTemsMapper.getMoldRepairTemsPage(page,pageReqVO); + PageResult moldrepairTemsDOPageResult = new PageResult<>(moldrepairTemsDOIPage.getRecords(), moldrepairTemsDOIPage.getTotal()); + return moldrepairTemsDOPageResult; + } + +// @Override +// public List getMoldOrComponent(Integer moldBrand) { +// return moldrepairTemsMapper.getMoldRepairTemsList(new MoldRepairTemsPageReqVO().setMoldBrand(moldBrand)); +// } + +// @Override +// public List getMoldOrComponentList(Long moldId, Long componentId) { +// return moldrepairTemsMapper.getMoldRepairTemsList(new MoldRepairTemsPageReqVO().setMoldId(moldId).setComponentId(componentId)); +// } + +// @Override +// public List getComponentList(Long moldId) { +// +// MoldDO moldDO = moldMapper.selectById(moldId); +// if(moldDO == null ){ +// throw exception(DEVICE_LEDGER_NOT_EXISTS); +// } +// +// if (StringUtils.isBlank(moldDO.getComponentId())){ +// return new ArrayList<>(); +// } +// +// List criticalComponentDOS= new ArrayList<>(); +// List idList = Arrays.stream(moldDO.getComponentId().split(",")) +// .map(String::trim) // 去除可能存在的空格 +// .map(Long::valueOf) +// .collect(Collectors.toList()); +// +// for (Long id : idList) { +// CriticalComponentDO criticalComponentDO = criticalComponentMapper.selectById(id); +// if (criticalComponentDO !=null){ +// criticalComponentDOS.add(criticalComponentDO); +// } +// } +// +// return criticalComponentDOS; +// } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrepairtems/MoldRepairTemsMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrepairtems/MoldRepairTemsMapper.xml new file mode 100644 index 0000000000..3119663812 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/moldrepairtems/MoldRepairTemsMapper.xml @@ -0,0 +1,113 @@ + + + + + + + + + + \ No newline at end of file From 8a3cdf41b487c71ec0bef81eebb0b31beb052179 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Thu, 15 Jan 2026 18:07:40 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-server/src/main/resources/application-dev.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-server/src/main/resources/application-dev.yaml b/yudao-server/src/main/resources/application-dev.yaml index 70a7fb5be5..5ce1e071f9 100644 --- a/yudao-server/src/main/resources/application-dev.yaml +++ b/yudao-server/src/main/resources/application-dev.yaml @@ -88,7 +88,7 @@ spring: # Quartz 配置项,对应 QuartzProperties 配置类 spring: quartz: - auto-startup: false # 本地开发环境,尽量不要开启 Job + auto-startup: true # 本地开发环境,尽量不要开启 Job scheduler-name: schedulerName # Scheduler 名字。默认为 schedulerName job-store-type: jdbc # Job 存储器类型。默认为 memory 表示内存,可选 jdbc 使用数据库。 wait-for-jobs-to-complete-on-shutdown: true # 应用关闭时,是否等待定时任务执行完成。默认为 false ,建议设置为 true From 5eee19fb4eb8552ecafe6c5db4406136f14ac246 Mon Sep 17 00:00:00 2001 From: kkk-ops <1050738955@qq.com> Date: Thu, 15 Jan 2026 18:30:48 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=A8=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/mold/vo/MoldBrandSaveReqVO.java | 1 - .../deviceledger/vo/DeviceLedgerRespVO.java | 7 ++ .../vo/DeviceLedgerSaveReqVO.java | 5 +- .../moldoperate/MoldOperateController.java | 70 ++++++++++++++++++- .../moldoperate/vo/MoldOperatePageReqVO.java | 9 +++ .../moldoperate/vo/MoldOperateRespVO.java | 15 +++- .../moldoperate/vo/MoldOperateSaveReqVO.java | 3 +- .../deviceledger/DeviceLedgerDO.java | 12 ++++ .../deviceledger/DeviceLedgerService.java | 24 +++++++ .../deviceledger/DeviceLedgerServiceImpl.java | 39 ++++++++++- 10 files changed, 176 insertions(+), 9 deletions(-) diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java index faedbfd755..3d9c1621af 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/mold/vo/MoldBrandSaveReqVO.java @@ -28,7 +28,6 @@ public class MoldBrandSaveReqVO { private String moldType; @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2336") - @NotNull(message = "产品ID不能为空") private Long productId; @Schema(description = "预期寿命(小时)") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java index 82b64c7ed1..50fb3f205a 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerRespVO.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import com.alibaba.excel.annotation.write.style.ColumnWidth; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; @@ -125,6 +126,9 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "备件列表") private List beijianList; + @Schema(description = "模具列表") + private List moldList; + @Schema(description = "附件地址") @ExcelProperty("附件地址") private String fileUrl; @@ -134,4 +138,7 @@ public class DeviceLedgerRespVO extends BaseDO { @Schema(description = "备件id") private String beijianId; + + @Schema(description = "模具id") + private String moldId; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java index 445900a741..2c272a9eba 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/deviceledger/vo/DeviceLedgerSaveReqVO.java @@ -70,6 +70,9 @@ public class DeviceLedgerSaveReqVO { @Schema(description = "关键件,ids集合") private String componentId; - @Schema(description = "关键件,ids集合") + @Schema(description = "备件,ids集合") private String beijianId; + + @Schema(description = "模具,ids集合") + private String moldId; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java index 3bf827636f..6a4bfc5f30 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/MoldOperateController.java @@ -1,5 +1,17 @@ package cn.iocoder.yudao.module.mes.controller.admin.moldoperate; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldSaveReqVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockInItemDO; +import cn.iocoder.yudao.module.erp.service.mold.MoldService; +import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerRespVO; +import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.DeviceLedgerSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; +import cn.iocoder.yudao.module.mes.service.deviceledger.DeviceLedgerService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -24,6 +36,7 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import cn.iocoder.yudao.module.mes.controller.admin.moldoperate.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.moldoperate.MoldOperateDO; @@ -38,10 +51,37 @@ public class MoldOperateController { @Resource private MoldOperateService moldOperateService; + @Resource + private AdminUserApi adminUserApi; + + @Resource + private MoldService moldService; + @Resource + private DeviceLedgerService deviceLedgerService; + + @PostMapping("/create") @Operation(summary = "创建模具上下模") @PreAuthorize("@ss.hasPermission('mes:mold-operate:create')") public CommonResult createMoldOperate(@Valid @RequestBody MoldOperateSaveReqVO createReqVO) { + if (Objects.equals(createReqVO.getOperateType(), "1")) { + MoldDO moldDO = moldService.getMold(createReqVO.getMoldId()); + moldDO.setMachineId(createReqVO.getDeviceId()); + moldDO.setStatus(0); // 在机 0 在库 1 + moldService.updateMold(BeanUtils.toBean(moldDO, MoldSaveReqVO.class)); + DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); + deviceLedger.setMoldId(Long.toString(createReqVO.getMoldId())); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedger, DeviceLedgerSaveReqVO.class)); + } else { + DeviceLedgerDO deviceLedger = deviceLedgerService.getDeviceLedger(createReqVO.getDeviceId()); + createReqVO.setMoldId(Long.parseLong(deviceLedger.getMoldId())); + MoldDO moldDO = moldService.getMold(Long.parseLong(deviceLedger.getMoldId())); + moldDO.setMachineId(0L); + moldDO.setStatus(3); // 在机 0 在库 1 + moldService.updateMold(BeanUtils.toBean(moldDO, MoldSaveReqVO.class)); + deviceLedger.setMoldId("0"); + deviceLedgerService.updateDeviceLedger(BeanUtils.toBean(deviceLedger, DeviceLedgerSaveReqVO.class)); + } return success(moldOperateService.createMoldOperate(createReqVO)); } @@ -76,7 +116,21 @@ public class MoldOperateController { @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") public CommonResult> getMoldOperatePage(@Valid MoldOperatePageReqVO pageReqVO) { PageResult pageResult = moldOperateService.getMoldOperatePage(pageReqVO); - return success(BeanUtils.toBean(pageResult, MoldOperateRespVO.class)); + // 管理员信息 + Map userMap = adminUserApi.getUserMap( + convertSet(pageResult.getList(), admin -> Long.parseLong(admin.getCreator()))); + // 模具信息 + Map moldMap = moldService.getMoldVOMap( + convertSet(pageResult.getList(), MoldOperateDO::getMoldId)); + + // 设备台账 + Map deviceLedgerMap = deviceLedgerService.getDeviceLedgerVOMap( + convertSet(pageResult.getList(), MoldOperateDO::getDeviceId)); + return success(BeanUtils.toBean(pageResult, MoldOperateRespVO.class,moldOperate -> { + MapUtils.findAndThen(userMap, Long.parseLong(moldOperate.getCreator()), user -> moldOperate.setCreatorName(user.getNickname())); + MapUtils.findAndThen(moldMap, moldOperate.getMoldId(), mold -> moldOperate.setMoldName(mold.getName())); + MapUtils.findAndThen(deviceLedgerMap, moldOperate.getDeviceId(), deviceLedger -> moldOperate.setDeviceName(deviceLedger.getDeviceName())); + })); } @GetMapping("/export-excel") @@ -92,4 +146,18 @@ public class MoldOperateController { BeanUtils.toBean(list, MoldOperateRespVO.class)); } + @GetMapping("/get-mold") + @Operation(summary = "获得设备是否有模具") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:mold-operate:query')") + public CommonResult getDeviceLedgerLMold(@RequestParam("id") Long id) { + DeviceLedgerDO deviceLedgerDO = deviceLedgerService.getDeviceLedger(id); + if (deviceLedgerDO.getMoldId() != null && !deviceLedgerDO.getMoldId().isEmpty() && Integer.parseInt(deviceLedgerDO.getMoldId()) != 0) { + return success(true); + } else { + return success(false); + } + + } + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java index eb5c81528d..967e4c3dc9 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperatePageReqVO.java @@ -21,12 +21,21 @@ public class MoldOperatePageReqVO extends PageParam { @Schema(description = "关联模具id", example = "23041") private Long moldId; + @Schema(description = "关联模具名称", example = "5057") + private String moldName; + @Schema(description = "关联设备id", example = "5057") private Long deviceId; + @Schema(description = "关联设备名称", example = "5057") + private String deviceName; + @Schema(description = "备注", example = "随便") private String remark; + @Schema(description = "创建人", example = "随便") + private String Creator; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java index a4b2638180..2162d51b42 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateRespVO.java @@ -21,13 +21,19 @@ public class MoldOperateRespVO { private String operateType; @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") - @ExcelProperty("关联模具id") private Long moldId; + @Schema(description = "关联模具", example = "5057") + @ExcelProperty("关联模具") + private String moldName; + @Schema(description = "关联设备id", example = "5057") - @ExcelProperty("关联设备id") private Long deviceId; + @Schema(description = "关联设备", example = "5057") + @ExcelProperty("关联设备") + private String deviceName; + @Schema(description = "备注", example = "随便") @ExcelProperty("备注") private String remark; @@ -36,4 +42,9 @@ public class MoldOperateRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "创建人", example = "芋道") + private String creator; + @Schema(description = "创建人名称", example = "芋道") + private String creatorName; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java index 028fc2fe0a..b78f1ddc56 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/moldoperate/vo/MoldOperateSaveReqVO.java @@ -15,8 +15,7 @@ public class MoldOperateSaveReqVO { @Schema(description = "操作类型", example = "2") private String operateType; - @Schema(description = "关联模具id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23041") - @NotNull(message = "关联模具id不能为空") + @Schema(description = "关联模具id", example = "23041") private Long moldId; @Schema(description = "关联设备id", example = "5057") diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java index eaa6770923..ab7705a579 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/deviceledger/DeviceLedgerDO.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; @@ -146,4 +147,15 @@ public class DeviceLedgerDO extends BaseDO { @TableField(exist = false) private List beijianList; + /** + * 模具id + */ + private String moldId; + + /** + * 模具列表 + */ + @TableField(exist = false) + private List moldList; + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java index 70b71633a3..68e93fad0e 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerService.java @@ -2,10 +2,15 @@ package cn.iocoder.yudao.module.mes.service.deviceledger; import java.util.*; import javax.validation.*; + +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.mes.controller.admin.deviceledger.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.deviceledger.DeviceLedgerDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; + /** * 设备类型 Service 接口 * @@ -51,4 +56,23 @@ public interface DeviceLedgerService { */ PageResult getDeviceLedgerPage(DeviceLedgerPageReqVO pageReqVO); + /** + * 获得产品 VO 列表 + * + * @param ids 编号数组 + * @return 产品 VO 列表 + */ + List getDeviceLedgerVOList(Collection ids); + /** + * 获得设备 VO Map + * + * @param ids 编号数组 + * @return 模具 VO Map + */ + default Map getDeviceLedgerVOMap(Collection ids) { + if(ids.isEmpty())return new HashMap<>(); + return convertMap(getDeviceLedgerVOList(ids), DeviceLedgerRespVO::getId); + } + + } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java index 08f2dd62b3..5baf45be8d 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/deviceledger/DeviceLedgerServiceImpl.java @@ -1,8 +1,14 @@ package cn.iocoder.yudao.module.mes.service.deviceledger; +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.controller.admin.mold.vo.MoldRespVO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper; import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper; -import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO; import cn.iocoder.yudao.module.mes.controller.admin.ticketmanagement.enums.PlanTypeEnum; import cn.iocoder.yudao.module.mes.dal.dataobject.criticalcomponent.CriticalComponentDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO; @@ -32,7 +38,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.dal.mysql.deviceledger.DeviceLedgerMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; /** @@ -63,6 +68,9 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { @Resource private ErpProductMapper productMapper; + @Resource + private MoldMapper moldMapper; + @Override public Long createDeviceLedger(DeviceLedgerSaveReqVO createReqVO) { @@ -177,6 +185,23 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { deviceLedgerDO.setComponentList(componentList); } + //模具列表 + List moldList = new ArrayList<>(); + if (StringUtils.isNotBlank(deviceLedgerDO.getMoldId())) { + // 将逗号分隔的字符串转换为Long类型的List + List idList = Arrays.stream(deviceLedgerDO.getMoldId().split(",")) + .map(String::trim) // 去除可能存在的空格 + .map(Long::valueOf) + .collect(Collectors.toList()); + for (Long moldId : idList) { + MoldDO moldDO = moldMapper.selectById(moldId); + if(moldDO!=null){ + moldList.add(moldDO); + } + } + deviceLedgerDO.setMoldList(moldList); + } + //备件列表 List beijianList = new ArrayList<>(); if (StringUtils.isNotBlank(deviceLedgerDO.getBeijianId())) { @@ -201,4 +226,14 @@ public class DeviceLedgerServiceImpl implements DeviceLedgerService { return deviceLedgerMapper.selectPage(pageReqVO); } + @Override + public List getDeviceLedgerVOList(Collection ids) { + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + List list = deviceLedgerMapper.selectBatchIds(ids); + return BeanUtils.toBean(list, DeviceLedgerRespVO.class); + } + + } \ No newline at end of file