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 fe02a7ed..06c2ccbe 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 @@ -177,7 +177,7 @@ public interface ErrorCodeConstants { ErrorCode DEVICE_CONFIG_FLOW_NOT_EXISTS = new ErrorCode(1_032_150_000, "设备通用流程配置不存在"); // -------------物料试剂------------- - ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_032_160_000, "试剂耗材不存在"); + 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_SPECIFICATION_EXISTED = new ErrorCode(1_032_160_000, "物料大类【编码+规格】重复"); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierController.java index 589c6c71..edb3970a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierController.java @@ -1,12 +1,13 @@ package com.zt.plat.module.qms.office.supplier.controller.admin; +import cn.hutool.core.collection.CollUtil; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierPageReqVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierRespVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierSaveReqVO; +import com.zt.plat.module.qms.office.supplier.dal.dataobject.SupplierPropertiesDO; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; import com.zt.plat.framework.business.annotation.FileUploadController; import com.zt.plat.framework.business.controller.AbstractFileUploadController; @@ -95,6 +96,7 @@ public class SupplierController extends AbstractFileUploadController implements // @PreAuthorize("@ss.hasPermission('qms:supplier:query')") public CommonResult getSupplier(@RequestParam("id") Long id) { SupplierExtendRespVO supplier = supplierService.getSupplier(id); + return success(supplier); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java index f1231d58..d1df8d4b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/admin/SupplierPropertiesController.java @@ -1,12 +1,14 @@ package com.zt.plat.module.qms.office.supplier.controller.admin; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; +import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierPropertiesPageReqVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierPropertiesRespVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierPropertiesSaveReqVO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; import com.zt.plat.framework.business.annotation.FileUploadController; import com.zt.plat.framework.business.controller.AbstractFileUploadController; @@ -55,6 +57,9 @@ public class SupplierPropertiesController extends AbstractFileUploadController i @Resource private SupplierPropertiesService supplierPropertiesService; + @Autowired + private BusinessFileService businessFileService; + @PostMapping("/create") @Operation(summary = "创建供应商属性") // @PreAuthorize("@ss.hasPermission('qms:supplier-properties:create')") @@ -65,9 +70,9 @@ public class SupplierPropertiesController extends AbstractFileUploadController i @PutMapping("/update") @Operation(summary = "更新供应商属性") // @PreAuthorize("@ss.hasPermission('qms:supplier-properties:update')") - public CommonResult updateSupplierProperties(@Valid @RequestBody SupplierPropertiesSaveReqVO updateReqVO) { - supplierPropertiesService.updateSupplierProperties(updateReqVO); - return success(true); + public CommonResult updateSupplierProperties(@Valid @RequestBody SupplierPropertiesSaveReqVO updateReqVO) { + SupplierPropertiesRespVO respVO = supplierPropertiesService.updateSupplierProperties(updateReqVO); + return success(respVO); } @DeleteMapping("/delete") @@ -94,7 +99,10 @@ public class SupplierPropertiesController extends AbstractFileUploadController i // @PreAuthorize("@ss.hasPermission('qms:supplier-properties:query')") public CommonResult getSupplierProperties(@RequestParam("id") Long id) { SupplierPropertiesDO supplierProperties = supplierPropertiesService.getSupplierProperties(id); - return success(BeanUtils.toBean(supplierProperties, SupplierPropertiesRespVO.class)); + CommonResult> result = businessFileService.getBusinessFileList(id); + SupplierPropertiesRespVO respVO = BeanUtils.toBean(supplierProperties, SupplierPropertiesRespVO.class); + respVO.setBusinessFileRet(result.getData()); + return success(respVO); } @GetMapping("/page") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierExtendRespVO.java index 36e05309..072b3def 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierExtendRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierExtendRespVO.java @@ -1,24 +1,19 @@ package com.zt.plat.module.qms.office.supplier.controller.vo; -import cn.hutool.core.collection.CollUtil; import com.zt.plat.module.qms.office.supplier.dal.dataobject.SupplierPropertiesDO; import lombok.Data; import java.util.List; -import java.util.stream.Collectors; @Data public class SupplierExtendRespVO extends SupplierRespVO { - private String certification; + private List certifications; - public String getCertification() { - if (CollUtil.isNotEmpty(this.supplierPropertiesList)) { - return this.supplierPropertiesList.stream().map(m -> m.getSubitemCode()).collect(Collectors.joining("、")); - } - return null; - } + private List certsOfExistFiles; + + private List types; private List supplierPropertiesList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java index eb425f8a..fe599c1d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/controller/vo/SupplierPropertiesRespVO.java @@ -1,11 +1,14 @@ package com.zt.plat.module.qms.office.supplier.controller.vo; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 供应商属性 Response VO") @@ -62,4 +65,7 @@ public class SupplierPropertiesRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "附件对象") + private List businessFileRet; + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesService.java index dbd1b615..e124fd9e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesService.java @@ -28,8 +28,9 @@ public interface SupplierPropertiesService { * 更新供应商属性 * * @param updateReqVO 更新信息 + * @return */ - void updateSupplierProperties(@Valid SupplierPropertiesSaveReqVO updateReqVO); + SupplierPropertiesRespVO updateSupplierProperties(@Valid SupplierPropertiesSaveReqVO updateReqVO); /** * 删除供应商属性 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesServiceImpl.java index 7b08e56c..c07b5449 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierPropertiesServiceImpl.java @@ -42,12 +42,13 @@ public class SupplierPropertiesServiceImpl implements SupplierPropertiesService } @Override - public void updateSupplierProperties(SupplierPropertiesSaveReqVO updateReqVO) { + public SupplierPropertiesRespVO updateSupplierProperties(SupplierPropertiesSaveReqVO updateReqVO) { // 校验存在 validateSupplierPropertiesExists(updateReqVO.getId()); // 更新 SupplierPropertiesDO updateObj = BeanUtils.toBean(updateReqVO, SupplierPropertiesDO.class); supplierPropertiesMapper.updateById(updateObj); + return BeanUtils.toBean(updateObj, SupplierPropertiesRespVO.class); } @Override diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierServiceImpl.java index 1168fd7a..2487285f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/office/supplier/service/SupplierServiceImpl.java @@ -2,15 +2,21 @@ package com.zt.plat.module.qms.office.supplier.service; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; +import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierExtendRespVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierPageReqVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierRespVO; import com.zt.plat.module.qms.office.supplier.controller.vo.SupplierSaveReqVO; +import com.zt.plat.module.qms.office.supplier.dal.dataobject.SupplierPropertiesDO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import java.util.*; +import java.util.stream.Collectors; import com.zt.plat.module.qms.office.supplier.dal.dataobject.SupplierDO; import com.zt.plat.framework.common.pojo.PageResult; @@ -34,6 +40,9 @@ public class SupplierServiceImpl implements SupplierService { @Resource private SupplierMapper supplierMapper; + @Autowired + private BusinessFileService businessFileService; + @Override public SupplierRespVO createSupplier(SupplierSaveReqVO createReqVO) { // 插入 @@ -83,7 +92,23 @@ public class SupplierServiceImpl implements SupplierService { @Override public SupplierExtendRespVO getSupplier(Long id) { - return supplierMapper.selectOneWithCertifications(id); + SupplierExtendRespVO supplier = supplierMapper.selectOneWithCertifications(id); + List supplierPropertiesList = supplier.getSupplierPropertiesList(); + if (CollUtil.isNotEmpty(supplierPropertiesList)) { + List certs = supplierPropertiesList.stream().map(SupplierPropertiesDO::getSubitemCode).toList(); + supplier.setCertifications(certs); + List certsOfExistFiles = new ArrayList<>(); + for (SupplierPropertiesDO propertiesDO : supplierPropertiesList) { + CommonResult> result = businessFileService.getBusinessFileList(propertiesDO.getId()); + if (CollUtil.isNotEmpty(result.getData())) + certsOfExistFiles.add(propertiesDO.getSubitemCode()); + } + supplier.setCertsOfExistFiles(certsOfExistFiles); + } + supplier.setTypes(supplier.getType() != null + ? List.of(supplier.getType().split("、")) + : Collections.emptyList()); + return supplier; } @Override diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchPageReqVO.java index df4c1034..fa2cb7dc 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialBatchPageReqVO.java @@ -20,8 +20,8 @@ public class MaterialBatchPageReqVO extends PageParam { @Schema(description = "物料大类id", example = "9381") private Long productId; - @Schema(description = "功能操作类型 batch_manage-批次管理,acceptance-验收,inbound-入库,return_exchange-退换货") - private String operationType; + @Schema(description = "业务场景 batch_manage-批次管理,acceptance-验收,inbound-入库,return_exchange-退换货") + private String businessType; @Schema(description = "是否需要组装 children") private Boolean children = false; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java index b108a5dc..f6df1d69 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/query/MaterialInfomationQueryVO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.resource.material.controller.vo.query; import com.baomidou.mybatisplus.annotation.TableField; +import com.zt.plat.module.qms.resource.material.enums.MaterialInfomationBusinessType; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -14,6 +15,10 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH @Data public class MaterialInfomationQueryVO { + + @Schema(description = "业务场景 outbound-出库,use_record-使用记录,used_mark-用完标记,open_seal-开封") + private MaterialInfomationBusinessType businessType; + @Schema(description = "物料大类id", example = "2691") private Long productId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchOperationType.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchGongBusinessType.java similarity index 77% rename from zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchOperationType.java rename to zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchGongBusinessType.java index a2eeb46f..973cd1b1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchOperationType.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialBatchGongBusinessType.java @@ -1,10 +1,10 @@ package com.zt.plat.module.qms.resource.material.enums; /** - * 物料批次操作类型 + * 物料批次-工段操作类型 * */ -public enum MaterialBatchOperationType { +public enum MaterialBatchGongBusinessType { /** * 批次管理 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialInfomationBusinessType.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialInfomationBusinessType.java new file mode 100644 index 00000000..71dcee7a --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/enums/MaterialInfomationBusinessType.java @@ -0,0 +1,24 @@ +package com.zt.plat.module.qms.resource.material.enums; + +/** + * 物料实例操作类型 + * + */ +public enum MaterialInfomationBusinessType { + /** + * 出库 + */ + outbound, + /** + * 使用记录 + */ + use_record, + /** + * 用完标记 + */ + used_mark, + /** + * 开封 + */ + open_seal +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java index 46fbe53e..502f0fb4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialInfomationServiceImpl.java @@ -23,6 +23,7 @@ import com.zt.plat.module.qms.resource.material.controller.vo.query.MaterialInfo import com.zt.plat.module.qms.resource.material.controller.vo.resp.MaterialInfomationLedgerRespVO; import com.zt.plat.module.qms.resource.material.dal.dataobject.*; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialInfomationMapper; +import com.zt.plat.module.qms.resource.material.enums.MaterialInfomationBusinessType; import com.zt.plat.module.qms.resource.material.enums.MaterialInfomationOrigin; import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; @@ -163,8 +164,36 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService @Override public MaterialInfomationRespVO getMaterialInfomationWithPdtInfoByInfCode(MaterialInfomationQueryVO queryVO) { - - return materialInfomationMapper.selectOneWithPdtInfoByInfCode(queryVO); + MaterialInfomationRespVO infomation = materialInfomationMapper.selectOneWithPdtInfoByInfCode(queryVO); + MaterialInfomationBusinessType businessType = queryVO.getBusinessType(); + if (infomation == null) throw exception(MATERIAL_INFOMATION_NOT_EXISTS); + switch (businessType) { + // 出库时校验是否已出库 + case outbound -> { + if (infomation.getUsageStatus() == 1) throw new ServiceException(1_032_160_000, "该物料已出库"); + } + // 使用记录时校验是否已用完 + case use_record -> { + // 需要校验是否危化品 + Long productId = infomation.getProductId(); + MaterialProductDO product = materialProductService.getMaterialProduct(productId); + if (product.getHazardous() != 1) throw new ServiceException(1_032_160_000, "该物料是危化品"); + if (infomation.getUseEndFlag() == 1) throw new ServiceException(1_032_160_000, "该物料已用完"); + } + // 用完标记时校验是否已用完并标记 + case used_mark -> { + if (infomation.getUseEndFlag() == 1) throw new ServiceException(1_032_160_000, "该物料已用完并标记"); + } + // 开封时校验是否已开封 + case open_seal -> { + // 需要校验是否要开封 + Long productId = infomation.getProductId(); + MaterialProductDO product = materialProductService.getMaterialProduct(productId); + if (product.getOpenDueFlag() != 1) throw new ServiceException(1_032_160_000, "该物料不需要开封"); + if (infomation.getOpenStatus() == 1) throw new ServiceException(1_032_160_000, "该物料已开封"); + } + } + return infomation; } @Override