From 525d588c207971c93c3da0bcf896e857e6c35241 Mon Sep 17 00:00:00 2001 From: shusir <497819738@qq.com> Date: Tue, 27 Jan 2026 12:00:20 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=88=86=E7=B1=BB/=E5=A4=A7=E7=B1=BB=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=AE=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=92=8C=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/qms/enums/ErrorCodeConstants.java | 3 ++ .../admin/MaterialProductController.java | 11 +++---- .../dal/mapper/MaterialProductMapper.java | 2 ++ .../service/MaterialBatchService.java | 16 ++++++++++ .../service/MaterialBatchServiceImpl.java | 16 ++++++++++ .../service/MaterialProductServiceImpl.java | 29 +++++++++++++++++-- 6 files changed, 69 insertions(+), 8 deletions(-) diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java index 61ebab4..830a834 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java @@ -173,8 +173,11 @@ public interface ErrorCodeConstants { // -------------物料试剂------------- ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_032_160_000, "试剂耗材不存在"); ErrorCode MATERIAL_PRODUCT_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料分类/大类不存在"); + ErrorCode MATERIAL_PRODUCT_PARENT_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料分类/大类的父类不存在"); ErrorCode MATERIAL_PRODUCT_CODE_EXISTED = new ErrorCode(1_032_160_000, "物料大类编码重复"); ErrorCode MATERIAL_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_032_160_000, "分类下含有子分类或物料大类,不可删除"); + ErrorCode MATERIAL_PRODUCT_EXISTS_BATCH = new ErrorCode(1_032_160_000, "物料大类下存在物料批次,不可删除"); + ErrorCode MATERIAL_PRODUCTS_EXISTS_CATEGORY = new ErrorCode(1_032_160_000, "物料大类列表中存在分类数据"); ErrorCode MATERIAL_LIFECYCLE_DETAIL_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料通用流程明细不存在"); ErrorCode MATERIAL_LIFECYCLE_NOT_EXISTS = new ErrorCode(1_032_160_000, "物料通用流程不存在"); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java index da687cb..262b324 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialProductController.java @@ -62,11 +62,12 @@ public class MaterialProductController extends AbstractFileUploadController impl return success(materialProductService.getMaterialCategoryTree()); } - // TODO + // TODO 后边再对接 @GetMapping("/orig-material/{code}") @Operation(summary = "根据物料编码获取外部系统原始物料") - public CommonResult getOriginalMaterial(@PathVariable String code) { - return null; + public CommonResult getOriginalMaterial(@PathVariable String code) { + + return success(new MaterialProductRespVO().setCode(code).setName("测试物料")); } @PostMapping("/save-material") @@ -104,7 +105,7 @@ public class MaterialProductController extends AbstractFileUploadController impl @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) - @Operation(summary = "批量删除物料") + @Operation(summary = "批量删除物料大类") @PreAuthorize("@ss.hasPermission('qms:material-product:delete')") public CommonResult deleteMaterialProductList(@RequestBody BatchDeleteReqVO req) { materialProductService.deleteMaterialProductListByIds(req.getIds()); @@ -114,7 +115,7 @@ public class MaterialProductController extends AbstractFileUploadController impl @GetMapping("/get") @Operation(summary = "获得物料") @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('qms:material-product:query')") +// @PreAuthorize("@ss.hasPermission('qms:material-product:query')") public CommonResult getMaterialProduct(@RequestParam("id") Long id) { MaterialProductDO materialProduct = materialProductService.getMaterialProduct(id); return success(BeanUtils.toBean(materialProduct, MaterialProductRespVO.class)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java index f86a7ce..7e1c791 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialProductMapper.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.qms.core.constant.DataTypeConstant; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialProductPageReqVO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialProductDO; import org.apache.ibatis.annotations.Mapper; @@ -18,6 +19,7 @@ public interface MaterialProductMapper extends BaseMapperX { default PageResult selectPage(MaterialProductPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(MaterialProductDO::getNodeType, DataTypeConstant.DATA_TYPE_DATA) .eqIfPresent(MaterialProductDO::getParentId, reqVO.getParentId()) .likeIfPresent(MaterialProductDO::getIdPath, reqVO.getIdPath()) .likeIfPresent(MaterialProductDO::getName, reqVO.getName()) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java index 97d3035..bd45936 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchService.java @@ -68,4 +68,20 @@ public interface MaterialBatchService { * @return 工段编号 */ List assignMaterialBatchGongduan(@Valid List createReqVOs); + + /** + * 检查物料大类下是否有物料批次 + * + * @param pdtId id + * @return 存在与否 + */ + boolean checkIsExistsDataByPdt(Long pdtId); + + /** + * 检查物料大类下是否有物料批次 + * + * @param ids id 集合 + * @return 存在与否 + */ + boolean checkIsExistsDataByPdts(List ids); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java index ddb2518..4c450e6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialBatchServiceImpl.java @@ -169,4 +169,20 @@ public class MaterialBatchServiceImpl implements MaterialBatchService { ).toList(); } + + @Override + public boolean checkIsExistsDataByPdt(Long pdtId) { + + return materialBatchMapper.exists(Wrappers.lambdaQuery(MaterialBatchDO.class) + .eq(MaterialBatchDO::getProductId, pdtId)); + } + + + @Override + public boolean checkIsExistsDataByPdts(List ids) { + + return materialBatchMapper.exists(Wrappers.lambdaQuery(MaterialBatchDO.class) + .in(MaterialBatchDO::getProductId, ids)); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java index e400602..a13b97b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialProductServiceImpl.java @@ -37,6 +37,9 @@ public class MaterialProductServiceImpl implements MaterialProductService { @Resource private MaterialProductMapper materialProductMapper; +// +// @Resource +// private MaterialBatchService materialBatchService; /** * 保存分类 @@ -60,6 +63,15 @@ public class MaterialProductServiceImpl implements MaterialProductService { mtrl.setNodeType(DataTypeConstant.DATA_TYPE_CATEGORY); + if (mtrl.getParentId() != 0) { + // 从父分类继承 是否危险品、是否标准物质、是否标准溶液 + MaterialProductDO prnCtg = materialProductMapper.selectById(mtrl.getParentId()); + if (prnCtg == null) throw exception(MATERIAL_PRODUCT_PARENT_NOT_EXISTS); + mtrl.setHazardous(prnCtg.getHazardous()) + .setStandardMaterialFlag(prnCtg.getStandardMaterialFlag()) + .setStandardSolutionFlag(prnCtg.getStandardSolutionFlag()); + } + materialProductMapper.insert(mtrl); String newIdPath = getIdPath(mtrl); @@ -226,8 +238,10 @@ public class MaterialProductServiceImpl implements MaterialProductService { } // 大类 else { - // 大类下批次时不可删除 TODO 以及其他不可删除的情况 - + // 大类下有批次时不可删除 + // TODO 以及其他不可删除的情况,如库存记录、物料实例、使用记录等 +// boolean exists = materialBatchService.checkIsExistsDataByPdt(id); +// if (exists) throw exception(MATERIAL_PRODUCT_EXISTS_BATCH); } materialProductMapper.deleteById(id); } @@ -235,7 +249,16 @@ public class MaterialProductServiceImpl implements MaterialProductService { @Override public void deleteMaterialProductListByIds(List ids) { // 校验存在 - validateMaterialProductExists(ids); + List list = materialProductMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(MATERIAL_PRODUCT_NOT_EXISTS); + } + // 检查物料大类中是否含有分类数据 + List mtCtgList = list.stream().filter(m -> DataTypeConstant.DATA_TYPE_CATEGORY.equals(m.getNodeType())).toList(); + if (CollUtil.isNotEmpty(mtCtgList)) throw exception(MATERIAL_PRODUCTS_EXISTS_CATEGORY); + // 检查是否可删除 大类下有批次时不可删除 + // TODO 以及其他不可删除的情况,如库存记录、物料实例、使用记录等 +// boolean exists = materialBatchService.checkIsExistsDataByPdts(ids); // 删除 materialProductMapper.deleteByIds(ids); }