diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailService.java index b4c9e22e..c9b3ec99 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailService.java @@ -66,4 +66,11 @@ public interface MaterialAssayStandardDetailService { */ PageResult getMaterialAssayStandardDetailPage(MaterialAssayStandardDetailPageReqVO pageReqVO); + /** + * 获得物料检测标准检测项目 + * + * @param ids 编号数组 + * @return 列表 + */ + List getListWithExtendByIds(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/business/config/service/MaterialAssayStandardDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailServiceImpl.java index 4ec5de86..b55b02b6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/service/MaterialAssayStandardDetailServiceImpl.java @@ -110,4 +110,9 @@ public class MaterialAssayStandardDetailServiceImpl implements MaterialAssayStan return materialAssayStandardDetailMapper.selectPage(pageReqVO); } + @Override + public List getListWithExtendByIds(List ids) { + return materialAssayStandardDetailMapper.selectExtendByIds(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/controller/vo/MaterialCorrelationAssayRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java index 85e5b9de..539ad194 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssayRespVO.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.qms.core.aspect.annotation.Dict; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -42,6 +43,9 @@ public class MaterialCorrelationAssayRespVO { @ExcelProperty("样品大类id,检化验业务样品大类") private Long sampleId; + @Schema(description = "样品编号") + private String sampleCode; + @Schema(description = "样品标签模板") private String sampleLabelTemplate; @@ -61,8 +65,13 @@ public class MaterialCorrelationAssayRespVO { @ExcelProperty("检测项列表") private List items; + @Schema(description = "检测项显示名称") + @ExcelProperty("检测项显示名称") + private String itemsShowName; + @Schema(description = "状态,未开始、进行中、已完成", example = "2") @ExcelProperty("状态,未开始、进行中、已完成") + @Dict(dicCode = "material_assay_status") private String assayStatus; @Schema(description = "结果,检化验结果") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java index a8fd6fa8..37e8909b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleRespVO.java @@ -95,6 +95,9 @@ public class MaterialLifecycleRespVO { @Schema(description = "自定义json配置") private String customConfig; + @Schema(description = "是否可进行检验结果判定,1-是,0-否") + private Integer assayResultAssessment; + @Schema(description = "所属部门") @ExcelProperty("所属部门") private String systemDepartmentCode; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialUseRecordRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialUseRecordRespVO.java index 9fe1dc2d..38ad08e4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialUseRecordRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialUseRecordRespVO.java @@ -30,6 +30,9 @@ public class MaterialUseRecordRespVO { @ExcelProperty("物料实例名称") private String infomationName; + @Schema(description = "规格") + private String specification; + @Schema(description = "型号") @ExcelProperty("型号") private String modelNo; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java index 67d8026e..742e6b54 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/dataobject/MaterialLifecycleDO.java @@ -111,6 +111,11 @@ public class MaterialLifecycleDO extends BusinessBaseDO { */ @TableField("CST_CFG") private String customConfig; + /** + * 是否可进行检验结果判定,1-是,0-否 + */ + @TableField("ASY_RSLT_ASMT") + private Integer assayResultAssessment; /** * 事由/说明 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialUseRecordMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialUseRecordMapper.java index ea085cc1..df62222e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialUseRecordMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialUseRecordMapper.java @@ -69,6 +69,7 @@ public interface MaterialUseRecordMapper extends BaseMapperX { LoginUser loginUser = new LoginUser().setId(assigneeUserId) .setExpiresTime(LocalDateTime.now().plusMinutes(10)); SecurityFrameworkUtils.setLoginUser(loginUser, request); + // 获取这个流程 + CommonResult processInstanceRes = bpmProcessInstanceApi.getProcessInstance(flowId); + BpmProcessInstanceRespDTO instance = processInstanceRes.getData(); + log.info("流程实例:{}", instance); + // 获取下一个流程节点 2008359763063820290L 2038786007172124673L + CommonResult> nextApprovalNodes = + bpmProcessInstanceApi.getNextApprovalNodes(curTask.getAssignee(), + new BpmApprovalDetailReqDTO().setProcessDefinitionId(instance.getProcessDefinitionId()) + .setProcessInstanceId(instance.getId()) + .setTaskId(curTask.getId())); + log.info("下一个流程节点:{}", nextApprovalNodes.getData()); + if (true) return; + List nextNodes = nextApprovalNodes.getData(); BpmTaskApproveReqDTO reqDTO = new BpmTaskApproveReqDTO().setId(curTask.getId()).setReason("已全部出检化验结果"); CommonResult result = bpmProcessInstanceApi.approveTask(reqDTO); if (!result.isSuccess()) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java index fe35b77c..e774d3b4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java @@ -7,6 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; +import com.zt.plat.module.qms.business.config.service.MaterialAssayStandardDetailService; +import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; +import com.zt.plat.module.qms.business.dic.service.DictionaryProjectService; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayRespVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailPageReqVO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailRespVO; @@ -15,6 +19,7 @@ import com.zt.plat.module.qms.resource.material.dal.dataobject.*; import com.zt.plat.module.qms.resource.material.dal.mapper.MaterialLifecycleDetailMapper; import com.zt.plat.module.qms.resource.material.enums.MaterialFlowType; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -34,6 +39,7 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.MATERIAL_LIFECYCLE * * @author 后台管理 */ +@Slf4j @Service @Validated public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDetailService { @@ -46,6 +52,8 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta private MaterialProductService materialProductService; @Autowired private MaterialCorrelationAssayService materialCorrelationAssayService; + @Autowired + private MaterialAssayStandardDetailService materialAssayStandardDetailService; @Override public MaterialLifecycleDetailRespVO createMaterialLifecycleDetail(MaterialLifecycleDetailSaveReqVO createReqVO) { @@ -146,6 +154,21 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta List asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList(); List assayRespVOS = materialCorrelationAssayService.getRespListByIds(asyIds); if (CollUtil.isEmpty(assayRespVOS)) return details; + // 获取检测项显示名称 + List allItemIds = assayRespVOS.stream().map(MaterialCorrelationAssayRespVO::getItems) + .flatMap(Collection::stream).toList(); + if (CollUtil.isEmpty(allItemIds)) return details; + List allItems = materialAssayStandardDetailService.getListWithExtendByIds(allItemIds); + assert CollUtil.isNotEmpty(allItems); + Map itemMapById = allItems.stream().collect(Collectors.toMap(MaterialAssayStandardDetailRespVO::getId, Function.identity())); + assayRespVOS.forEach(asy -> { + List showNames = asy.getItems().stream() + .map(itemMapById::get) + .filter(Objects::nonNull) + .map(MaterialAssayStandardDetailRespVO::getDictionaryProjectShowName) + .toList(); + asy.setItemsShowName(String.join(",", showNames)); + }); Map assayRespVOMapById = assayRespVOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayRespVO::getId, Function.identity())); details.forEach(detail -> { MaterialCorrelationAssayRespVO assayRespVO = assayRespVOMapById.get(detail.getAssayId()); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java index 9be52ef4..b95e476b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleServiceImpl.java @@ -354,7 +354,9 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , .setBatchId(detail.getBatchId()) .setGongduanId(detail.getBatchGongduanId()) // 样品大类 - .setSampleId(assayInfo != null ? assayInfo.getSampleId() : null) + .setSampleId(assayInfo != null && assayInfo.getSampleId() != null + ? assayInfo.getSampleId() + : Long.parseLong(StrUtil.isNotBlank(product.getSampleIds()) ? product.getSampleIds() : "0")) .setSampleName(product.getName()) .setSampleCode(sequenceUtil.genCode(MaterialConstants.SEQUENCE_ASSAY_ACCEPT_SAMPLE_KEY)) // 检测项 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialUseRecordDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialUseRecordDetailServiceImpl.java index 78973d64..7ff5258d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialUseRecordDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialUseRecordDetailServiceImpl.java @@ -203,6 +203,7 @@ public class MaterialUseRecordDetailServiceImpl implements MaterialUseRecordDeta Map> recordMapByInfId = records.stream().collect(Collectors.groupingBy(MaterialUseRecordSaveReqVO::getInfomationId)); for (MaterialInfomationDO infomation : infomations) { + if (infomation.getRemainingVolume() == null) throw new ServiceException(1_032_160_000, String.format("物料【%s】不存在剩余量", infomation.getCode())); BigDecimal reduce = recordMapByInfId.get(infomation.getId()).stream().map(MaterialUseRecordSaveReqVO::getOperationQuantity).reduce(BigDecimal.ZERO, BigDecimal::add); if (reduce.compareTo(infomation.getRemainingVolume()) > 0) throw new ServiceException(1_032_160_000, "使用量不能大于剩余量"); }