From d12f6be2b2bcbac421a913f353ac0c4885ca6247 Mon Sep 17 00:00:00 2001 From: shusir <497819738@qq.com> Date: Mon, 30 Mar 2026 18:12:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E7=89=A9=E6=96=99=E6=A3=80=E5=8C=96?= =?UTF-8?q?=E9=AA=8C=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/MaterialLifecycleController.java | 9 ++++++++ .../vo/MaterialCorrelationAssayRespVO.java | 22 +++++++++++++++++++ .../vo/MaterialCorrelationAssaySaveReqVO.java | 6 +++++ .../vo/MaterialLifecycleDetailRespVO.java | 7 ++++-- .../vo/MaterialLifecycleDetailSaveReqVO.java | 7 ++++-- .../vo/MaterialLifecycleSaveReqVO.java | 2 +- .../MaterialCorrelationAssayMapper.java | 13 +++++++++++ .../MaterialCorrelationAssayService.java | 8 +++++++ .../MaterialCorrelationAssayServiceImpl.java | 6 +++++ .../MaterialLifecycleDetailServiceImpl.java | 13 +++++------ .../service/MaterialLifecycleServiceImpl.java | 14 +++++++----- 11 files changed, 90 insertions(+), 17 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java index 51e362c3..45009446 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/admin/MaterialLifecycleController.java @@ -13,6 +13,7 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.module.qms.resource.material.controller.vo.*; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialLifecycleDO; +import com.zt.plat.module.qms.resource.material.listener.MaterialAssayResultListener; import com.zt.plat.module.qms.resource.material.service.MaterialLifecycleService; import com.zt.plat.module.qms.resource.material.valid.AddGroup; import com.zt.plat.module.qms.resource.material.valid.UpdateGroup; @@ -22,6 +23,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -49,6 +51,8 @@ public class MaterialLifecycleController extends AbstractFileUploadController im @Resource private MaterialLifecycleService materialLifecycleService; + @Autowired + private MaterialAssayResultListener materialAssayResultListener; @PostMapping("/create") @Operation(summary = "新建物料流程") @@ -122,6 +126,11 @@ public class MaterialLifecycleController extends AbstractFileUploadController im return success(materialLifecycleService.inventoryCheckInfomation(inventoryReqVO)); } + @GetMapping("/test") + public void test() { + materialAssayResultListener.bpmTest(); + } + @GetMapping("/export-excel") @Operation(summary = "导出物料通用流程,物料验收、退换货 Excel") @PreAuthorize("@ss.hasPermission('qms:material-lifecycle:export')") 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 0a506b00..85e5b9de 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 @@ -1,11 +1,17 @@ package com.zt.plat.module.qms.resource.material.controller.vo; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONUtil; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; +import java.util.Objects; @Schema(description = "管理后台 - 物料检化验关联信息 Response VO") @Data @@ -36,6 +42,9 @@ public class MaterialCorrelationAssayRespVO { @ExcelProperty("样品大类id,检化验业务样品大类") private Long sampleId; + @Schema(description = "样品标签模板") + private String sampleLabelTemplate; + @Schema(description = "批次id", example = "3150") @ExcelProperty("批次id") private Long batchId; @@ -48,6 +57,10 @@ public class MaterialCorrelationAssayRespVO { @ExcelProperty("检测项") private String item; + @Schema(description = "检测项列表") + @ExcelProperty("检测项列表") + private List items; + @Schema(description = "状态,未开始、进行中、已完成", example = "2") @ExcelProperty("状态,未开始、进行中、已完成") private String assayStatus; @@ -76,4 +89,13 @@ public class MaterialCorrelationAssayRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + // 设置检测项列表 + public List getItems() { + if (StrUtil.isBlank(this.item)) { + return List.of(); + } + JSONArray array = JSONUtil.parseArray(this.item); + return array.toList(Long.class); + } + } \ 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/MaterialCorrelationAssaySaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssaySaveReqVO.java index 7d70e781..9f869e59 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssaySaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialCorrelationAssaySaveReqVO.java @@ -1,8 +1,11 @@ package com.zt.plat.module.qms.resource.material.controller.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.util.List; + @Schema(description = "管理后台 - 物料检化验关联信息新增/修改 Request VO") @Data public class MaterialCorrelationAssaySaveReqVO { @@ -34,6 +37,9 @@ public class MaterialCorrelationAssaySaveReqVO { @Schema(description = "检测项") private String item; + @Schema(description = "检测项列表") + private List items; + @Schema(description = "状态,未开始、进行中、已完成", example = "2") private String assayStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java index 7e376e82..41487389 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailRespVO.java @@ -98,14 +98,17 @@ public class MaterialLifecycleDetailRespVO { @ExcelProperty("是否检化验,1-是,0-否") private Integer assayFlag; + @Schema(description = "检化验信息") + private MaterialCorrelationAssayRespVO assayInfo; + @Schema(description = "检化验id") private Long assayId; - @Schema(description = "检化验样品大类") + /*@Schema(description = "检化验样品大类") private Long assaySampleId; @Schema(description = "检化验检测项") - private List assayItemIds; + private List assayItemIds;*/ @Schema(description = "物料实例id", example = "968") @ExcelProperty("物料实例id") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailSaveReqVO.java index 8157513d..745a8fc3 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleDetailSaveReqVO.java @@ -29,11 +29,14 @@ public class MaterialLifecycleDetailSaveReqVO { @Schema(description = "是否检化验,1-是,0-否") private Integer assayFlag; - @Schema(description = "检化验样品大类") + @Schema(description = "检化验信息") + private MaterialCorrelationAssaySaveReqVO assayInfo; + + /*@Schema(description = "检化验样品大类") private Long assaySampleId; @Schema(description = "检化验检测项") - private List assayItemIds; + private List assayItemIds;*/ @Schema(description = "物料实例id", example = "968") private Long infomationId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java index 47e17f16..17bcfa1a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/controller/vo/MaterialLifecycleSaveReqVO.java @@ -77,7 +77,7 @@ public class MaterialLifecycleSaveReqVO { @Schema(description = "盘点项") private List checkItems; - @Schema(description = "工段列表") + @Schema(description = "明细列表") private List detailList; } \ 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/dal/mapper/MaterialCorrelationAssayMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialCorrelationAssayMapper.java index fc5d885c..1f3c1850 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialCorrelationAssayMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/dal/mapper/MaterialCorrelationAssayMapper.java @@ -3,10 +3,15 @@ package com.zt.plat.module.qms.resource.material.dal.mapper; 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.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigBaseSampleDO; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayPageReqVO; +import com.zt.plat.module.qms.resource.material.controller.vo.MaterialCorrelationAssayRespVO; import com.zt.plat.module.qms.resource.material.dal.dataobject.MaterialCorrelationAssayDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 物料检化验关联信息 Mapper * @@ -35,4 +40,12 @@ public interface MaterialCorrelationAssayMapper extends BaseMapperX selectRespListByIds(List ids) { + MPJLambdaWrapperX wrapper = new MPJLambdaWrapperX() + .selectAll(MaterialCorrelationAssayDO.class) + .selectAs(ConfigBaseSampleDO::getPrintTemplate, MaterialCorrelationAssayRespVO::getSampleLabelTemplate) + .leftJoin(ConfigBaseSampleDO.class, ConfigBaseSampleDO::getBaseSampleId, MaterialCorrelationAssayDO::getSampleId) + .inIfPresent(MaterialCorrelationAssayDO::getId, ids); + return selectJoinList(MaterialCorrelationAssayRespVO.class, wrapper); + } } \ 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/MaterialCorrelationAssayService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java index 4c4acaf2..f2e5d818 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayService.java @@ -89,4 +89,12 @@ public interface MaterialCorrelationAssayService { * @param needUpdateAssays 检化验关联信息列表 */ void updateBatch(List needUpdateAssays); + + /** + * 根据id查询 + * + * @param ids id列表 + * @return 检化验关联信息列表 + */ + List getRespListByIds(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/MaterialCorrelationAssayServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java index 764dfac6..44ade5a7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialCorrelationAssayServiceImpl.java @@ -108,4 +108,10 @@ public class MaterialCorrelationAssayServiceImpl implements MaterialCorrelationA materialCorrelationAssayMapper.updateBatch(needUpdateAssays); } + @Override + public List getRespListByIds(List ids) { + if (CollUtil.isEmpty(ids)) return List.of(); + return materialCorrelationAssayMapper.selectRespListByIds(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/MaterialLifecycleDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/material/service/MaterialLifecycleDetailServiceImpl.java index d3cc7bfa..71e8a1d5 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,7 @@ 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.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; import com.zt.plat.module.qms.resource.material.controller.vo.MaterialLifecycleDetailSaveReqVO; @@ -143,14 +144,12 @@ public class MaterialLifecycleDetailServiceImpl implements MaterialLifecycleDeta List assayDetails = details.stream().filter(detail -> detail.getAssayId() != null).toList(); if (CollUtil.isEmpty(assayDetails)) return details; List asyIds = assayDetails.stream().map(MaterialLifecycleDetailRespVO::getAssayId).toList(); - List assayDOS = materialCorrelationAssayService.getListByIds(asyIds); - if (CollUtil.isEmpty(assayDOS)) return details; - Map assayDOMapById = assayDOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayDO::getId, Function.identity())); + List assayRespVOS = materialCorrelationAssayService.getRespListByIds(asyIds); + if (CollUtil.isEmpty(assayRespVOS)) return details; + Map assayRespVOMapById = assayRespVOS.stream().collect(Collectors.toMap(MaterialCorrelationAssayRespVO::getId, Function.identity())); details.forEach(detail -> { - MaterialCorrelationAssayDO assayDO = assayDOMapById.get(detail.getAssayId()); - JSONArray array = JSONUtil.parseArray(assayDO.getItem()); - detail.setAssaySampleId(assayDO.getSampleId()) - .setAssayItemIds(CollUtil.isEmpty(array) ? List.of() : array.toList(Long.class)); + MaterialCorrelationAssayRespVO assayRespVO = assayRespVOMapById.get(detail.getAssayId()); + detail.setAssayInfo(assayRespVO); }); return details; } 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 507bf199..07dfebc5 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 @@ -347,18 +347,19 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , List assayDOS = assayDetails.stream().map(detail -> { MaterialProductDO product = pdtMapById.get(detail.getProductId()); MaterialLifecycleDetailSaveReqVO reqVO = gongToReqMap.get(detail.getBatchGongduanId()); + MaterialCorrelationAssaySaveReqVO assayInfo = reqVO.getAssayInfo(); return new MaterialCorrelationAssayDO() .setBusinessType(MaterialAssayBusinessType.accept_assay.name()) .setProductId(detail.getProductId()) .setBatchId(detail.getBatchId()) .setGongduanId(detail.getBatchGongduanId()) // 样品大类 - .setSampleId(reqVO != null ? reqVO.getAssaySampleId() : null) + .setSampleId(assayInfo != null ? assayInfo.getSampleId() : null) .setSampleName(product.getName()) .setSampleCode(sequenceUtil.genCode(MaterialConstants.SEQUENCE_ASSAY_ACCEPT_SAMPLE_KEY)) // 检测项 - .setItem(reqVO != null && CollUtil.isNotEmpty(reqVO.getAssayItemIds()) - ? JSONUtil.toJsonStr(reqVO.getAssayItemIds()) + .setItem(assayInfo != null && CollUtil.isNotEmpty(assayInfo.getItems()) + ? JSONUtil.toJsonStr(assayInfo.getItems()) : null) .setSource(String.valueOf(detail.getId())) .setAssayStatus(QmsCommonConstant.NOT_START); @@ -674,7 +675,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , if (CollUtil.isEmpty(lifecycleDOS)) return pageResult; lifecycleDOS.forEach(mtrlLfc -> { String formData = mtrlLfc.getFormData(); - if (formData != null) { + if (StrUtil.isNotEmpty(formData)) { String title = (String) JSONUtil.parseObj(formData).get("title"); mtrlLfc.setTitle(title); } @@ -952,6 +953,7 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , variables.put("applyDepartmentId", loginUser.getVisitDeptId()); variables.put("applyTime", sdf.format(new Date())); variables.put(BPM_CALLBACK_BEAN_NAME, "materialLifecycleService"); + variables.put("assayAssignee", null); List detailList = materialLifecycleDetailService.getDetailListByLfcId(lifecycleDO.getId()); for (MaterialLifecycleDetailDO detailDO : detailList) { if (detailDO.getAssayFlag() == 1) { @@ -1117,13 +1119,15 @@ public class MaterialLifecycleServiceImpl implements MaterialLifecycleService , sampleEntrustDetail .setBaseSampleId(assay.getSampleId()) .setEntrustSampleCode(assay.getSampleCode()) + .setSampleCode(assay.getSampleCode()) .setEntrustSampleName(assay.getSampleName()) .setIsWeighing(0) .setSampleEntrustDetailProjectList(projects); entrustParam.setSampleEntrustDetailList(List.of(sampleEntrustDetail)); LiteflowResponse assayRes = sampleEntrustService.create(entrustParam); if (!assayRes.isSuccess()) throw new ServiceException(1_032_160_000, "创建检化验单失败:" + assayRes.getMessage()); - assay.setEntrustId(assayRes.getContextBean(SampleEntrustContext.class).getSampleEntrustRegistration().getId()); + assay.setEntrustId(assayRes.getContextBean(SampleEntrustContext.class).getSampleEntrustRegistration().getId()) + .setAssayStatus(QmsCommonConstant.IN_PROGRESS); needUpdateAssays.add(assay); /* 获取明细 assayRes.getContextBean(SampleEntrustContext.class).getSampleEntrustDetailList().forEach(detail -> {