From 8b3bfe208326fe5dcb4256ff4b4f718b87df7fe1 Mon Sep 17 00:00:00 2001 From: wxr Date: Thu, 20 Nov 2025 17:50:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E9=80=81=E6=A0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/qms/enums/QmsCommonConstant.java | 3 + .../admin/SampleFlowController.java | 6 +- .../SampleResultReportingController.java | 4 +- .../vo/BusinessAssayTaskPageReqVO.java | 3 + .../BusinessHandoverRecordSubPageReqVO.java | 1 + .../vo/BusinessSampleHandoverPageReqVO.java | 2 + ...ssSubParentSampleAssessmentGroupReqVO.java | 20 ++++++ ...sSubParentSampleAssessmentGroupRespVO.java | 9 +++ .../vo/BusinessSubSampleExtendRespVO.java | 5 ++ .../mapper/BusinessAssayTaskDataMapper.java | 11 +++ .../dal/mapper/BusinessAssayTaskMapper.java | 2 + .../BusinessHandoverRecordSubMapper.java | 1 + .../mapper/BusinessSampleHandoverMapper.java | 1 + ...sinessSubParentSampleAssessmentMapper.java | 2 +- .../BusinessSubSampleAnalysisGroupMapper.java | 15 ++++ .../dal/mapper/BusinessSubSampleMapper.java | 5 +- .../flow/SampleSubProcessUpdateCmp.java | 20 ++++-- .../service/BusinessSubSampleServiceImpl.java | 12 +++- .../service/SampleResultReportingService.java | 3 +- .../SampleResultReportingServiceImpl.java | 68 +++++++++++++++++-- .../mapper/BusinessAssayTaskDataMapper.xml | 45 ++++++++---- ...usinessSubParentSampleAssessmentMapper.xml | 12 +++- 22 files changed, 219 insertions(+), 31 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupReqVO.java diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java index 09dc5af..585549f 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java @@ -122,6 +122,9 @@ public interface QmsCommonConstant { /** 分析收样 **/ String FLOW_NODE_ANALYSIS_RECEIVE = "flw_analysis_receive"; + /** 分析 **/ + String FLOW_NODE_ANALYSIS = "flw_analysis"; + /** 分析送样 **/ String FLOW_NODE_ANALYSIS_SEND = "flw_analysis_send"; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleFlowController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleFlowController.java index e1589a8..534d90f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleFlowController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleFlowController.java @@ -146,9 +146,9 @@ public class SampleFlowController { flowNodeList.add(fx); bzs.setNextFlowNodeList(new ArrayList<>() {{ - add(BeanUtils.toBean(fx,SampleFlowNode.class).setCondition("样品当前分析班组结果超差,需要发起复检")); - add(BeanUtils.toBean(bzr,SampleFlowNode.class).setCondition("当前部门数据已全部判断上报")); - add(BeanUtils.toBean(ypgk,SampleFlowNode.class).setCondition("当前样品所有分析任务已全部上报完")); +// add(BeanUtils.toBean(fx,SampleFlowNode.class).setCondition("样品当前分析班组结果超差,需要发起复检")); + add(BeanUtils.toBean(bzr,SampleFlowNode.class).setCondition("subSampleSelfReportedOthersPending"));//当前部门数据已全部判断上报 + add(BeanUtils.toBean(ypgk,SampleFlowNode.class).setCondition("subSampleAlldeptAnalyzed"));//当前样品所有分析任务已全部上报完 }}); flowNodeList.add(bzs); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleResultReportingController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleResultReportingController.java index a12cc29..ea4f0c1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleResultReportingController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleResultReportingController.java @@ -35,8 +35,8 @@ public class SampleResultReportingController { //获取未上报的方法 @GetMapping("/getUnReportMethodGroupList") - public CommonResult getUnReportMethodGroupList() { - List list = sampleResultReportingService.getUnReportMethodGroupList(); + public CommonResult getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO) { + List list = sampleResultReportingService.getUnReportMethodGroupList(reqVO); return success(list); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessAssayTaskPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessAssayTaskPageReqVO.java index c7a5c21..4e31fc1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessAssayTaskPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessAssayTaskPageReqVO.java @@ -107,6 +107,9 @@ public class BusinessAssayTaskPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + @Schema(description = "不等于当前分析人") + private String neAssayOperator; + @Schema(description = "部门id") private Long deptId; } \ 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/bus/controller/vo/BusinessHandoverRecordSubPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessHandoverRecordSubPageReqVO.java index 9872acf..783c9a5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessHandoverRecordSubPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessHandoverRecordSubPageReqVO.java @@ -64,4 +64,5 @@ public class BusinessHandoverRecordSubPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + private Long deptId; } \ 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/bus/controller/vo/BusinessSampleHandoverPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleHandoverPageReqVO.java index 637fa35..26ea231 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleHandoverPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleHandoverPageReqVO.java @@ -60,4 +60,6 @@ public class BusinessSampleHandoverPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + private Long deptId; + } \ 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/bus/controller/vo/BusinessSubParentSampleAssessmentGroupReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupReqVO.java new file mode 100644 index 0000000..8df8634 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupReqVO.java @@ -0,0 +1,20 @@ +package com.zt.plat.module.qms.business.bus.controller.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class BusinessSubParentSampleAssessmentGroupReqVO { + + @Schema(description = "分析方法id") + private Long configAssayMethodId; + + @Schema(description = "分析方法名称") + private String configAssayMethodName; + + @Schema(description = "分析部门ID") + private Long assayDepartmentId; + + @Schema(description = "分析部门名称") + private String assayDepartmentName; +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupRespVO.java index 08373a7..f4f69cf 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubParentSampleAssessmentGroupRespVO.java @@ -1,13 +1,22 @@ package com.zt.plat.module.qms.business.bus.controller.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data public class BusinessSubParentSampleAssessmentGroupRespVO { + @Schema(description = "分析方法id") private Long configAssayMethodId; + @Schema(description = "分析方法名称") private String configAssayMethodName; + @Schema(description = "分析部门ID") + private Long assayDepartmentId; + + @Schema(description = "分析部门名称") + private String assayDepartmentName; + private Integer sampleCount; } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java index e21239f..3439535 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleExtendRespVO.java @@ -3,6 +3,8 @@ package com.zt.plat.module.qms.business.bus.controller.vo; import java.util.List; import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; + import cn.hutool.core.collection.CollUtil; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -32,6 +34,9 @@ public class BusinessSubSampleExtendRespVO extends BusinessSubSampleRespVO { List collect = this.businessSubSampleAnalysisGroupList.stream().filter(f -> f.getSampleStatus().equals("待收样")).map(m -> m.getAssayDepartmentName()).collect(Collectors.toList()); _sampleDestination = CollUtil.join(collect, ","); } + if (StringUtils.isBlank(_sampleDestination)) {//所有分析班组已完成,去向显示为库名 + _sampleDestination = this.getWarehouseName(); + } return _sampleDestination; } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.java index 929a1b0..cb66f2b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.java @@ -15,6 +15,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataPa import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayTaskDataReqVO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; import com.zt.plat.module.qms.enums.QmsCommonConstant; @@ -242,6 +243,16 @@ public interface BusinessAssayTaskDataMapper extends BaseMapperX selectByBusinessSubParentSampleIds(List businessSubParentSampleIds) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessAssayTaskDataDO::getBusinessSubParentSampleId, businessSubParentSampleIds)); + } + /** * 根据分样查询分析任务 * @param businessSubParentSampleId 分样样id diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java index 1c24727..65be90b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java @@ -60,6 +60,7 @@ public interface BusinessAssayTaskMapper extends BaseMapperX { - List selectUnReportMethodGroupList(); + List selectUnReportMethodGroupList(@Param("reqVO") BusinessSubParentSampleAssessmentGroupReqVO reqVO); default PageResult selectPage(BusinessSubParentSampleAssessmentPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java index c18eba6..4680c73 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleAnalysisGroupMapper.java @@ -36,6 +36,21 @@ public interface BusinessSubSampleAnalysisGroupMapper extends BaseMapperX selectByBusinessSubParentSampleId(Long businessSubParentSampleId) { + return selectList(new LambdaQueryWrapperX() + .eq(BusinessSubSampleAnalysisGroupDO::getBusinessSubParentSampleId, businessSubParentSampleId)); + } + + default List selectByBusinessSubParentSampleIds(List businessSubParentSampleIds) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessSubSampleAnalysisGroupDO::getBusinessSubParentSampleId, businessSubParentSampleIds)); + } + + default List selectByBusinessSubSampleId(Long businessSubSampleId) { + return selectList(new LambdaQueryWrapperX() + .eq(BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, businessSubSampleId)); + } + default List selectByBusinessSubSampleIds(List businessSubSampleIds) { return selectList(new LambdaQueryWrapperX() .in(BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, businessSubSampleIds)); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleMapper.java index 7ae7b5d..dfa8903 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubSampleMapper.java @@ -90,12 +90,15 @@ public interface BusinessSubSampleMapper extends BaseMapperX businessAssayTaskDataList = sampleFlowContext.getBusinessAssayTaskDataList(); //查询历史交接记录 List businessHandoverRecordSubDOList = businessHandoverRecordSubMapper.selectByBusinessSubSampleIds(sampleIdList); + //查询子样分析班组 + List businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleIds(sampleIdList); + for (BusinessSubSampleDO businessSubSample : busSubCsampleList) { ConfigSampleFlowDO configSampleFlow = configSampleFlowService.getConfigSampleFlow(businessSubSample.getConfigSampleFlowId()); String configSampleFlowContent = configSampleFlow.getContent(); @@ -90,6 +94,14 @@ public class SampleSubProcessUpdateCmp extends NodeComponent { Boolean hasSubSimpleCodeRule = configSubSample != null && StringUtils.isNotBlank(configSubSample.getSimpleCodeRule()); Boolean hasSubSampleEncrypt = businessHandoverRecordSubDOList.stream().anyMatch(m -> QmsCommonConstant.FlOW_NODE_SAMPLE_ENCRYPT.equals(m.getSampleFlowNodeKey())); + if (CollUtil.isNotEmpty(businessSubSampleAnalysisGroupDOList)) { + List curSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSample.getId())).collect(Collectors.toList()); + Boolean hasAllDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().allMatch(m -> "已完成".equals(m.getSampleStatus())); + Boolean hasCurDeptAnalyzed = curSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).allMatch(m -> "已完成".equals(m.getSampleStatus())); + context.put("hasAllDeptAnalyzed", hasAllDeptAnalyzed); + context.put("hasCurDeptAnalyzed", hasCurDeptAnalyzed); + } + context.put("hasSubSimpleCodeRule", hasSubSimpleCodeRule); context.put("hasSubSampleEncrypt", hasSubSampleEncrypt); try { @@ -106,7 +118,7 @@ public class SampleSubProcessUpdateCmp extends NodeComponent { } } - + businessSubSample.setNextSampleFlowNode(nextFlowNode.getNextFlowNodeName()); businessSubSample.setSampleFlowNodeKey(nextFlowNode.getNodeKey()); businessSubSample.setSampleFlowNodeTime(currentDateTime); @@ -120,13 +132,13 @@ public class SampleSubProcessUpdateCmp extends NodeComponent { //如果是班组收样,需要更新分析班组表 if (QmsCommonConstant.FLOW_NODE_TEAM_RECEIVE.equals(currentSampleFlowKey)) { - List businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleIdsAndAssayDepartmentId(sampleIdList, loginUser.getVisitDeptId()); - for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : businessSubSampleAnalysisGroupDOList) { + List curDeptSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).collect(Collectors.toList()); + for (BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO : curDeptSubSampleAnalysisGroupDOList) { businessSubSampleAnalysisGroupDO.setSampleReceiveTime(currentDateTime); businessSubSampleAnalysisGroupDO.setSampleReceiver(loginRealname); businessSubSampleAnalysisGroupDO.setSampleStatus("已收样"); } - sampleFlowContext.setBusinessSubSampleAnalysisGroupList(businessSubSampleAnalysisGroupDOList); + sampleFlowContext.setBusinessSubSampleAnalysisGroupList(curDeptSubSampleAnalysisGroupDOList); } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSubSampleServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSubSampleServiceImpl.java index cebdfa8..76fea92 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSubSampleServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSubSampleServiceImpl.java @@ -28,6 +28,7 @@ import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; +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.bus.dal.dataobject.BusinessSubSampleDO; @@ -181,7 +182,16 @@ public class BusinessSubSampleServiceImpl implements BusinessSubSampleService { @Override public BusinessSubSampleExtendRespVO getBySampleCodeAndFlowKey(@Valid BusinessSubSampleReqVO reqVO) { - return businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO); + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + BusinessSubSampleExtendRespVO subSample = businessSubSampleMapper.getBySampleCodeAndFlowKey(reqVO); + if (QmsCommonConstant.FLOW_NODE_TEAM_RECEIVE.equals(reqVO.getSampleFlowNodeKey())) { + List businessSubSampleAnalysisGroupList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleId(subSample.getId()); + BusinessSubSampleAnalysisGroupDO receiveSample = businessSubSampleAnalysisGroupList.stream().filter(f -> "已收样".equals(f.getSampleStatus()) && !f.getAssayDepartmentId().equals(loginUser.getVisitDeptId())).findFirst().orElse(null); + if (receiveSample != null) { + throw new ServiceException(1_032_100_000, "当前样品在" + receiveSample.getAssayDepartmentName() + ",不允许收样!"); + } + } + return subSample; } //样品归库 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingService.java index 5ca7ecd..3c33c1d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingService.java @@ -4,6 +4,7 @@ import java.util.List; import com.alibaba.fastjson2.JSONObject; import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO; +import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.ModifySampleResultReportingReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.RecheckSubSampleParentCreateReqVO; @@ -11,7 +12,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.RecheckSubSampleParentM public interface SampleResultReportingService { - List getUnReportMethodGroupList(); + List getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO); JSONObject getSampleResultReportingList(Long configAssayMethodId); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingServiceImpl.java index e4014bc..6181e09 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleResultReportingServiceImpl.java @@ -18,9 +18,11 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.business.bus.controller.vo.BatchResultDataReportingReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentExtendRespVO; +import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupReqVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentGroupRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubSampleAssessmentExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.ModifySampleResultReportingReqVO; @@ -36,6 +38,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataD import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleParentRecheckDO; @@ -46,9 +49,12 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMappe import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessBaseSampleMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleAssessmentMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAnalysisGroupMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAssessmentMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleParentRecheckMapper; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowInfo; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowParam; import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodProjectExtendRespVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodRespVO; import com.zt.plat.module.qms.business.config.controller.vo.ConfigProjectExtendRespVO; @@ -97,8 +103,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe @Override - public List getUnReportMethodGroupList() { - List list = businessSubParentSampleAssessmentMapper.selectUnReportMethodGroupList(); + public List getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO) { + List list = businessSubParentSampleAssessmentMapper.selectUnReportMethodGroupList(reqVO); return list; } @@ -400,6 +406,12 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe @Resource private BusinessBaseSampleMapper businessBaseSampleMapper; + + @Resource + private BusinessSubSampleAnalysisGroupMapper businessSubSampleAnalysisGroupMapper; + + @Resource + private SampleFlowService sampleFlowService; @Override @Transactional(rollbackFor = Exception.class) @@ -407,7 +419,11 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe //当前登录用户昵称 String nickName = SecurityFrameworkUtils.getLoginUserNickname(); - + + + List updateBusinessSubSampleDOList = new ArrayList<>(); + List updateBusinessSubSampleAnalysisGroupDOList = new ArrayList<>(); + List saveBusinessAssayReportDataDOList = new ArrayList<>(); List updateBusinessAssayReportDataDOList = new ArrayList<>(); @@ -415,6 +431,7 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe List businessSubParentSampleDOList = businessSubParentSampleMapper.selectByIds(reqVO.getBusinessSubParentSampleIds()); + //循环分样主样数据 for (BusinessSubParentSampleDO businessSubParentSampleDO : businessSubParentSampleDOList) { BusinessBaseSampleDO businessBaseSampleDO = businessBaseSampleMapper.selectById(businessSubParentSampleDO.getBusinessBaseSampleId()); @@ -435,7 +452,7 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe //根据检测方法查询字段配置 List configProjectList = configProjectMapper.selectByConfigAssayMethodId(reqVO.getConfigAssayMethodId()); - + //处理报表数据 for (ConfigSampleReportExtendRespVO configSampleReport : configSampleReportList) { BusinessAssayReportDataDO businessAssayReportDataDO = businessAssayReportDataDOList.stream().filter(f -> f.getConfigReportTypeId().equals(configSampleReport.getConfigReportTypeId()) && f.getConfigSampleReportId().equals(configSampleReport.getId())).findFirst().orElse(null); if (businessAssayReportDataDO == null) { @@ -505,6 +522,35 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe } } + + //处理子样分析任务数据 + List businessAssayTaskDataDOList = businessAssayTaskDataMapper.selectByBusinessSubParentSampleIds(reqVO.getBusinessSubParentSampleIds()); + List businessSubSampleIdList = businessAssayTaskDataDOList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList()); + List businessSubSampleDOList = businessSubSampleMapper.selectByIds(businessSubSampleIdList); + List businessSubSampleAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubParentSampleIds(reqVO.getBusinessSubParentSampleIds()); + //根据子样id进行分组 + Map> businessAssayTaskDataDOMap = businessAssayTaskDataDOList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getBusinessSubSampleId)); + for (Map.Entry> businessAssayTaskDataDOEntry : businessAssayTaskDataDOMap.entrySet()) { + Long businessSubSampleId = businessAssayTaskDataDOEntry.getKey(); + //子样下的分析任务 + List valList = businessAssayTaskDataDOEntry.getValue(); + //查询子样 + BusinessSubSampleDO businessSubSampleDO = businessSubSampleDOList.stream().filter(f -> businessSubSampleId.equals(f.getId())).findFirst().orElse(null); + //查询子样下的分析班组 + List subSampleAnalysisGroupList = businessSubSampleAnalysisGroupDOList.stream().filter(f -> f.getBusinessSubSampleId().equals(businessSubSampleId)).collect(Collectors.toList()); + for (BusinessSubSampleAnalysisGroupDO subSampleAnalysisGroupDO : subSampleAnalysisGroupList) { + long count = valList.stream().filter(f -> f.getIsReported().equals(QmsCommonConstant.NO) && f.getAssayDepartmentId().equals(subSampleAnalysisGroupDO.getAssayDepartmentId())).count(); + if (count > 0) {//如果还存在未上报的数据,则继续 + continue; + } + subSampleAnalysisGroupDO.setSampleStatus("已完成");//当前班组分析已完成 + updateBusinessSubSampleAnalysisGroupDOList.add(subSampleAnalysisGroupDO); + + updateBusinessSubSampleDOList.add(businessSubSampleDO); + } + + + } if (saveBusinessAssayReportDataDOList.size() > 0) { businessAssayReportDataMapper.insertBatch(saveBusinessAssayReportDataDOList); @@ -513,6 +559,11 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe businessAssayReportDataMapper.updateBatch(updateBusinessAssayReportDataDOList); } + //更新分析班组 + if (updateBusinessSubSampleAnalysisGroupDOList.size()> 0) { + businessSubSampleAnalysisGroupMapper.updateBatch(updateBusinessSubSampleAnalysisGroupDOList); + } + List businessSubParentSampleAssessmentIdList = businessSubParentSampleAssessmentExtendList.stream().map(m -> m.getId()).collect(Collectors.toList()); businessSubParentSampleAssessmentMapper.update(new LambdaUpdateWrapper() @@ -520,6 +571,15 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe .set(BusinessSubParentSampleAssessmentDO::getReporter, nickName) .set(BusinessSubParentSampleAssessmentDO::getReportTime, LocalDateTime.now()) .in(BusinessSubParentSampleAssessmentDO::getId, businessSubParentSampleAssessmentIdList)); + + if (updateBusinessSubSampleDOList.size() > 0) { + + SampleFlowParam sampleFlowParam = new SampleFlowParam(); + sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_ANALYSIS); + sampleFlowParam.setSampleSourceType(2); + sampleFlowParam.setSampleFlowInfoList(BeanUtils.toBean(updateBusinessSubSampleDOList, SampleFlowInfo.class)); + sampleFlowService.sampleFlow(sampleFlowParam); + } } @Override diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.xml index bd0a3cf..535f2d1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskDataMapper.xml @@ -29,7 +29,7 @@ AND tbatd.SMP_FLW_NDE_KY = #{reqVO.sampleFlowNodeKey} - + AND tbatd.SMP_FLW_NDE_TM #{reqVO.sampleFlowNodeTime[0]} and #{reqVO.sampleFlowNodeTime[1]} GROUP BY @@ -39,20 +39,40 @@ @@ -83,10 +103,9 @@ AND tbatd.SMP_FLW_NDE_KY = #{reqVO.sampleFlowNodeKey} - + AND tbatd.SMP_FLW_NDE_TM #{reqVO.sampleFlowNodeTime[0]} and #{reqVO.sampleFlowNodeTime[1]} - AND tbatd.SMP_FLW_NDE_KY = 'flw_analysis' GROUP BY tbss.ID , tbss.SMP_NAME , tbss.SMP_CD , diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubParentSampleAssessmentMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubParentSampleAssessmentMapper.xml index fe113bc..52a6ab2 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubParentSampleAssessmentMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSubParentSampleAssessmentMapper.xml @@ -13,6 +13,8 @@ SELECT tbspsa.CFG_ASY_MTHD_ID AS configAssayMethodId, tcam.NAME AS configAssayMethodName, + tcam.ASY_DEPT_ID AS assayDepartmentId, + tcam.ASY_DEPT_NAME AS assayDepartmentName, COUNT(DISTINCT tbspsa.BSN_SB_PRN_SMP_ID) AS sampleCount FROM T_BSN_SB_PRN_SMP_ASMT tbspsa @@ -21,9 +23,17 @@ WHERE tbspsa.DELETED = 0 AND tbspsa.IS_RPOD = 0 + + AND tcam.NAME like '%' || #{reqVO.assayDepartmentId} || '%' + + + AND tcam.ASY_DEPT_ID = #{reqVO.assayDepartmentId} + GROUP BY tbspsa.CFG_ASY_MTHD_ID, - tcam.NAME + tcam.NAME, + tcam.ASY_DEPT_ID , + tcam.ASY_DEPT_NAME