From ea62776bfdca6ca8c11bb9794343ae87cfcc6d98 Mon Sep 17 00:00:00 2001 From: wxr Date: Thu, 2 Apr 2026 16:09:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A5=BF=E5=8D=97=E9=93=9C=E6=A3=80=E9=AA=8C?= =?UTF-8?q?=E5=A7=94=E6=89=98=E4=B8=B4=E6=97=B6=E6=A0=B7=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...trustRegistrationAssayCompleteMessage.java | 45 ++ ...SampleEntrustRegistrationExtendRespVO.java | 3 + ...mpleEntrustUnStandardProjectPageReqVO.java | 3 + ...sSampleEntrustUnStandardProjectRespVO.java | 3 + ...mpleEntrustUnStandardProjectSaveReqVO.java | 3 + .../vo/SampleProjectResultPageReqVO.java | 6 + ...inessSampleEntrustUnStandardProjectDO.java | 5 + ...sinessSampleEntrustRegistrationMapper.java | 11 + ...sSampleEntrustUnStandardProjectMapper.java | 21 +- .../SampleTaskAssignProjectMethodParam.java | 6 + .../SampleTaskAssignProjectNoMethodParam.java | 6 + .../SampleEntrustGenSampleDataCmp.java | 2 +- .../SampleTaskAssignContextInitCmp.java | 22 + .../SampleTaskAssignDataSaveOrUpdateCmp.java | 79 ++++ .../SampleTaskAssignProjectNoMethodCmp.java | 395 ++++++++++++++++++ .../slot/SampleTaskAssignContext.java | 44 +- .../service/SampleAnalysisServiceImpl.java | 10 +- .../SampleDeptEntrustDocAuditServiceImpl.java | 16 +- .../SampleResultReportingServiceImpl.java | 14 + .../service/SampleTaskAssignServiceImpl.java | 2 + ...nfigAssayMethodProjectParameterMapper.java | 7 + ...rustRegistrationAssayCompleteConsumer.java | 52 +++ ...rustRegistrationAssayCompleteProducer.java | 27 ++ .../dal/mapper/SampleResultQueryMapper.xml | 8 + 24 files changed, 782 insertions(+), 8 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/mq/SampleEntrustRegistrationAssayCompleteMessage.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/consumer/SampleEntrustRegistrationAssayCompleteConsumer.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/mq/SampleEntrustRegistrationAssayCompleteMessage.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/mq/SampleEntrustRegistrationAssayCompleteMessage.java new file mode 100644 index 00000000..c131c0b7 --- /dev/null +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/mq/SampleEntrustRegistrationAssayCompleteMessage.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.qms.mq; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * SampleEntrustRegistrationAssayCompleteMessage + * 样品委托登记分析完成消息 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SampleEntrustRegistrationAssayCompleteMessage { + + /** 统一回调主题 */ + public static final String TOPIC = "SAMPLE_ENTRUST_REG_ASSAY_COMPLETE"; + + /** + * 委托登记id + */ + private Long businessSampleEntrustRegistrationId; + + /** + * 委托来源Id + */ + private Long configEntrustSourceId; + + /** + * 委托来源 + */ + private String configEntrustSourceName; + + /** + * 委托单号 + */ + private String entrustNumber; + + /** + * 委托单号 + */ + private String entrustUnit; +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationExtendRespVO.java index 478e00c8..580c4059 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationExtendRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationExtendRespVO.java @@ -14,6 +14,9 @@ public class BusinessSampleEntrustRegistrationExtendRespVO extends BusinessSampl @ExcelProperty("委托来源,西南铜委托、商检委托、内部委托、抽查委托、内审委托、生产委托") private String configEntrustSourceName; + @Schema(description = "委托来源key") + private String configEntrustSourceKey; + @Schema(description = "样品称重数量") @ExcelProperty("样品称重数量") private Integer sampleWeighingCount; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectPageReqVO.java index c21ccafa..a84258fd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectPageReqVO.java @@ -37,6 +37,9 @@ public class BusinessSampleEntrustUnStandardProjectPageReqVO extends PageParam { @Schema(description = "任务数", example = "15264") private Integer taskCount; + @Schema(description = "是否已分配任务") + private Integer isAssignTasked; + @Schema(description = "检测项目ID,字典表:【T_DIC_PRJ】", example = "17192") private Long dictionaryProjectId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectRespVO.java index 350bc1c5..1dc9303c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectRespVO.java @@ -47,6 +47,9 @@ public class BusinessSampleEntrustUnStandardProjectRespVO { @ExcelProperty("任务数") private Integer taskCount; + @Schema(description = "是否已分配任务") + private Integer isAssignTasked; + @Schema(description = "检测项目ID,字典表:【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17192") @ExcelProperty("检测项目ID,字典表:【T_DIC_PRJ】") private Long dictionaryProjectId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectSaveReqVO.java index cf25d068..d82226e4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectSaveReqVO.java @@ -37,6 +37,9 @@ public class BusinessSampleEntrustUnStandardProjectSaveReqVO { @Schema(description = "任务数", example = "15264") private Integer taskCount; + @Schema(description = "是否已分配任务") + private Integer isAssignTasked; + @Schema(description = "检测项目ID,字典表:【T_DIC_PRJ】", requiredMode = Schema.RequiredMode.REQUIRED, example = "17192") @NotNull(message = "检测项目ID,字典表:【T_DIC_PRJ】不能为空") private Long dictionaryProjectId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/SampleProjectResultPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/SampleProjectResultPageReqVO.java index d80b829c..ebca02ae 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/SampleProjectResultPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/SampleProjectResultPageReqVO.java @@ -18,6 +18,12 @@ import lombok.Data; public class SampleProjectResultPageReqVO extends PageParam { private static final long serialVersionUID = 7153959501553288866L; + + @Schema(description = "检验委托登记ID", example = "17352") + private Long businessSampleEntrustRegistrationId; + + @Schema(description = "主样业务ID", example = "9560") + private Long businessBaseSampleId; @Schema(description = "分析部门ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2493") private Long assayDepartmentId; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustUnStandardProjectDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustUnStandardProjectDO.java index 2bb9f113..79bf1677 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustUnStandardProjectDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustUnStandardProjectDO.java @@ -72,6 +72,11 @@ public class BusinessSampleEntrustUnStandardProjectDO extends BusinessBaseDO { @TableField("TSK_CNT") private Integer taskCount; /** + * 是否已分配任务 + */ + @TableField("IS_ASN_TSKD") + private Integer isAssignTasked; + /** * 检测项目ID,字典表:【T_DIC_PRJ】 */ @TableField("DIC_PRJ_ID") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.java index 4e2de623..d1342891 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustRegistrationMapper.java @@ -28,6 +28,7 @@ public interface BusinessSampleEntrustRegistrationMapper extends BaseMapperX() + .leftJoin(ConfigEntrustSourceDO.class, ConfigEntrustSourceDO::getId, BusinessSampleEntrustRegistrationDO::getConfigEntrustSourceId) + .selectAll(BusinessSampleEntrustRegistrationDO.class) + .selectAs(ConfigEntrustSourceDO::getName, BusinessSampleEntrustRegistrationExtendRespVO::getConfigEntrustSourceName) + .selectAs(ConfigEntrustSourceDO::getKey, BusinessSampleEntrustRegistrationExtendRespVO::getConfigEntrustSourceKey) + .eq(BusinessSampleEntrustRegistrationDO::getId, id) + ); + } //查询报告待编制数据 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustUnStandardProjectMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustUnStandardProjectMapper.java index 7330c63d..2268d8d5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustUnStandardProjectMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustUnStandardProjectMapper.java @@ -37,6 +37,7 @@ public interface BusinessSampleEntrustUnStandardProjectMapper extends BaseMapper .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getConfigAssayMethodId, reqVO.getConfigAssayMethodId()) .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getConfigAssayMethodProjectId, reqVO.getConfigAssayMethodProjectId()) .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getTaskCount, reqVO.getTaskCount()) + .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getIsAssignTasked, reqVO.getIsAssignTasked()) .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getDictionaryProjectId, reqVO.getDictionaryProjectId()) .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getUsage, reqVO.getUsage()) .eqIfPresent(BusinessSampleEntrustUnStandardProjectDO::getIsEnabled, reqVO.getIsEnabled()) @@ -72,6 +73,10 @@ public interface BusinessSampleEntrustUnStandardProjectMapper extends BaseMapper mpjLambdaWrapper.eq(BusinessSampleEntrustUnStandardProjectDO::getAssayDepartmentId, reqVO.getAssayDepartmentId()); } + if (ObjectUtil.isNotEmpty(reqVO.getIsAssignTasked())) { + mpjLambdaWrapper.eq(BusinessSampleEntrustUnStandardProjectDO::getIsAssignTasked, reqVO.getIsAssignTasked()); + } + if (ObjectUtil.isNotEmpty(reqVO.getSampleName())) { mpjLambdaWrapper.like(BusinessSubSampleDO::getSampleName, reqVO.getSampleName()); } @@ -98,7 +103,21 @@ public interface BusinessSampleEntrustUnStandardProjectMapper extends BaseMapper return selectList(new LambdaQueryWrapperX() .in(BusinessSampleEntrustUnStandardProjectDO::getBusinessSampleEntrustDetailId, businessSampleEntrustDetailIdList)); } - + + default List selectExtendByIds(List idList) { + return selectJoinList(BusinessSampleEntrustUnStandardProjectExtendRespVO.class, new MPJLambdaWrapperX() + .leftJoin(BusinessSampleEntrustDetailDO.class, BusinessSampleEntrustDetailDO::getId, BusinessSampleEntrustUnStandardProjectDO::getBusinessSampleEntrustDetailId) + .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, BusinessSampleEntrustUnStandardProjectDO::getDictionaryProjectId) + .selectAll(BusinessSampleEntrustUnStandardProjectDO.class) + .selectAs(BusinessSampleEntrustDetailDO::getBusinessSampleEntrustRegistrationId, BusinessSampleEntrustUnStandardProjectExtendRespVO::getBusinessSampleEntrustRegistrationId) + .selectAs(BusinessSampleEntrustDetailDO::getBusinessBaseSampleId, BusinessSampleEntrustUnStandardProjectExtendRespVO::getBusinessBaseSampleId) + .selectAs(DictionaryProjectDO::getName, BusinessSampleEntrustUnStandardProjectExtendRespVO::getDictionaryProjectName) + .selectAs(DictionaryProjectDO::getSimpleName, BusinessSampleEntrustUnStandardProjectExtendRespVO::getDictionaryProjectSimpleName) + .selectAs(DictionaryProjectDO::getShowName, BusinessSampleEntrustUnStandardProjectExtendRespVO::getDictionaryProjectShowName) + .in(BusinessSampleEntrustUnStandardProjectDO::getId, idList) + .orderByAsc(BusinessSampleEntrustUnStandardProjectDO::getId) + ); + } default List selectByBusinessBaseSampleId(Long businessBaseSampleId) { return selectJoinList(BusinessSampleEntrustUnStandardProjectExtendRespVO.class, new MPJLambdaWrapperX() diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectMethodParam.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectMethodParam.java index 306b34bf..e1e4359a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectMethodParam.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectMethodParam.java @@ -17,6 +17,12 @@ public class SampleTaskAssignProjectMethodParam { /** 分析方法id **/ private Long configAssayMethodId; + + /** 分析类型 **/ + private String assayType; + + /** 分析任务数 **/ + private Integer assayTaskCount; /** 检测项目数据id列表 **/ private List assayProjectDataIdList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectNoMethodParam.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectNoMethodParam.java index 414b1248..7e635b45 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectNoMethodParam.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectNoMethodParam.java @@ -18,6 +18,12 @@ public class SampleTaskAssignProjectNoMethodParam { /** 分析方法id **/ private Long configAssayMethodId; + /** 分析类型 **/ + private String assayType; + + /** 分析任务数 **/ + private Integer assayTaskCount; + /** 样品委托无标准的检测项目id列表 **/ private List sampleEntrustUnStandardProjectIdList; } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustGenSampleDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustGenSampleDataCmp.java index 739582a7..9851ec47 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustGenSampleDataCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustGenSampleDataCmp.java @@ -771,7 +771,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { Long currentBusinessAssayTaskDataId = businessAssayTaskDataDO.getId(); List currentDictionaryProjectIdList = businessAssayProjectDataDOList.stream().filter(f -> f.getBusinessAssayTaskDataId().equals(currentBusinessAssayTaskDataId)).map(m -> m.getDictionaryProjectId()).collect(Collectors.toList()); List currentDictionaryProjectShowNameList = dictionaryProjectList.stream().filter(f -> currentDictionaryProjectIdList.contains(f.getId())).map(m -> m.getShowName()).collect(Collectors.toList()); - businessAssayTaskDataDO.setAssayProject(CollUtil.join(currentDictionaryProjectShowNameList, ",")); + businessAssayTaskDataDO.setAssayProject(CollUtil.join(currentDictionaryProjectShowNameList, ",")); } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java index fafccbfd..d604d1ef 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java @@ -9,6 +9,8 @@ import com.zt.plat.framework.tenant.core.context.TenantContextHolder; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualTypeParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignMethodParam; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignProjectMethodParam; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignProjectNoMethodParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSampleParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignTypeEnum; @@ -60,6 +62,26 @@ public class SampleTaskAssignContextInitCmp extends NodeComponent { sampleTaskAssignContext.setAssignAssayUserList(sampleTaskAssignManualParam.getAssignAssayUserList()); sampleTaskAssignContext.setAssayTaskDataIdList(sampleTaskAssignManualParam.getAssayTaskDataIdList()); } + + if (this.getRequestData() instanceof SampleTaskAssignProjectMethodParam) { + SampleTaskAssignProjectMethodParam sampleTaskAssignProjectMethodParam = this.getRequestData(); + sampleTaskAssignContext.setSampleTaskAssignType(SampleTaskAssignTypeEnum.PROJECT_METHOD); + sampleTaskAssignContext.setAssignConfigAssayMethodId(sampleTaskAssignProjectMethodParam.getConfigAssayMethodId()); + sampleTaskAssignContext.setAssayType(sampleTaskAssignProjectMethodParam.getAssayType()); + sampleTaskAssignContext.setAssayTaskCount(sampleTaskAssignProjectMethodParam.getAssayTaskCount()); + sampleTaskAssignContext.setAssignAssayUserList(sampleTaskAssignProjectMethodParam.getAssignAssayUserList()); + sampleTaskAssignContext.setAssayProjectDataIdList(sampleTaskAssignProjectMethodParam.getAssayProjectDataIdList()); + } + + if (this.getRequestData() instanceof SampleTaskAssignProjectNoMethodParam) { + SampleTaskAssignProjectNoMethodParam sampleTaskAssignProjectNoMethodParam = this.getRequestData(); + sampleTaskAssignContext.setSampleTaskAssignType(SampleTaskAssignTypeEnum.PROJECT_NO_METHOD); + sampleTaskAssignContext.setAssignConfigAssayMethodId(sampleTaskAssignProjectNoMethodParam.getConfigAssayMethodId()); + sampleTaskAssignContext.setAssayType(sampleTaskAssignProjectNoMethodParam.getAssayType()); + sampleTaskAssignContext.setAssayTaskCount(sampleTaskAssignProjectNoMethodParam.getAssayTaskCount()); + sampleTaskAssignContext.setAssignAssayUserList(sampleTaskAssignProjectNoMethodParam.getAssignAssayUserList()); + sampleTaskAssignContext.setSampleEntrustUnStandardProjectIdList(sampleTaskAssignProjectNoMethodParam.getSampleEntrustUnStandardProjectIdList()); + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java index 42a47d19..20d9094c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java @@ -6,22 +6,35 @@ import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; import cn.hutool.core.collection.CollUtil; + +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementProjectDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAssessmentDO; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayParameterDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayProjectDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDetailMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskParameterDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessQCCoefficientDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessQCCoefficientParameterDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessQCManagementDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessQCManagementParameterDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessQCManagementProjectDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustUnStandardProjectMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleAssessmentMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAssessmentMapper; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; import jakarta.annotation.Resource; @@ -37,6 +50,24 @@ public class SampleTaskAssignDataSaveOrUpdateCmp extends NodeComponent { @Resource private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; + @Resource + private BusinessSubParentSampleAssessmentMapper businessSubParentSampleAssessmentMapper; + + @Resource + private BusinessSubSampleAssessmentMapper businessSubSampleAssessmentMapper; + + @Resource + private BusinessAssayTaskParameterDataMapper businessAssayTaskParameterDataMapper; + + @Resource + private BusinessAssayProjectDataMapper businessAssayProjectDataMapper; + + @Resource + private BusinessAssayParameterDataMapper businessAssayParameterDataMapper; + + @Resource + private BusinessSampleEntrustUnStandardProjectMapper businessSampleEntrustUnStandardProjectMapper; + @Resource private BusinessQCCoefficientDataMapper businessQCCoefficientDataMapper; @@ -56,14 +87,30 @@ public class SampleTaskAssignDataSaveOrUpdateCmp extends NodeComponent { public void process() throws Exception { SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + List saveBusinessSubParentSampleAssessmentList = sampleTaskAssignContext.getSaveBusinessSubParentSampleAssessmentList(); + + List saveBusinessSubSampleAssessmentList = sampleTaskAssignContext.getSaveBusinessSubSampleAssessmentList(); + List savebusinessAssayTaskList = sampleTaskAssignContext.getSaveBusinessAssayTaskList(); List updateBusinessAssayTaskList = sampleTaskAssignContext.getUpdateBusinessAssayTaskList(); List businessAssayTaskDetailList = sampleTaskAssignContext.getBusinessAssayTaskDetailList(); + List saveBusinessAssayTaskDataList = sampleTaskAssignContext.getSaveBusinessAssayTaskDataList(); + List businessAssayTaskDataList = sampleTaskAssignContext.getBusinessAssayTaskDataList(); + List saveBusinessAssayTaskParameterDataList = sampleTaskAssignContext.getSaveBusinessAssayTaskParameterDataList(); + + List saveBusinessAssayProjectDataList = sampleTaskAssignContext.getSaveBusinessAssayProjectDataList(); + + List saveBusinessAssayParameterDataList = sampleTaskAssignContext.getSaveBusinessAssayParameterDataList(); + + List saveBusinessSampleEntrustUnStandardProjectList = sampleTaskAssignContext.getSaveBusinessSampleEntrustUnStandardProjectList(); + + List updateBusinessSampleEntrustUnStandardProjectList = sampleTaskAssignContext.getUpdateBusinessSampleEntrustUnStandardProjectList(); + List businessQCCoefficientDataList = sampleTaskAssignContext.getBusinessQCCoefficientDataList(); List businessQCCoefficientParameterDataList = sampleTaskAssignContext.getBusinessQCCoefficientParameterDataList(); @@ -74,6 +121,14 @@ public class SampleTaskAssignDataSaveOrUpdateCmp extends NodeComponent { List businessQCManagementParameterDataDOList = sampleTaskAssignContext.getBusinessQCManagementParameterDataDOList(); + if (CollUtil.isNotEmpty(saveBusinessSubParentSampleAssessmentList)) { + this.businessSubParentSampleAssessmentMapper.insertBatch(saveBusinessSubParentSampleAssessmentList); + } + + if (CollUtil.isNotEmpty(saveBusinessSubSampleAssessmentList)) { + this.businessSubSampleAssessmentMapper.insertBatch(saveBusinessSubSampleAssessmentList); + } + if (CollUtil.isNotEmpty(savebusinessAssayTaskList)) { this.businessAssayTaskMapper.insertBatch(savebusinessAssayTaskList); } @@ -86,10 +141,34 @@ public class SampleTaskAssignDataSaveOrUpdateCmp extends NodeComponent { this.businessAssayTaskDetailMapper.insertBatch(businessAssayTaskDetailList); } + if (CollUtil.isNotEmpty(saveBusinessAssayTaskDataList)) { + this.businessAssayTaskDataMapper.insertBatch(saveBusinessAssayTaskDataList); + } + if (CollUtil.isNotEmpty(businessAssayTaskDataList)) { this.businessAssayTaskDataMapper.updateBatch(businessAssayTaskDataList); } + if (CollUtil.isNotEmpty(saveBusinessAssayTaskParameterDataList)) { + this.businessAssayTaskParameterDataMapper.insertBatch(saveBusinessAssayTaskParameterDataList); + } + + if (CollUtil.isNotEmpty(saveBusinessAssayProjectDataList)) { + this.businessAssayProjectDataMapper.insertBatch(saveBusinessAssayProjectDataList); + } + + if (CollUtil.isNotEmpty(saveBusinessAssayParameterDataList)) { + this.businessAssayParameterDataMapper.insertBatch(saveBusinessAssayParameterDataList); + } + + if (CollUtil.isNotEmpty(saveBusinessSampleEntrustUnStandardProjectList)) { + this.businessSampleEntrustUnStandardProjectMapper.insertBatch(saveBusinessSampleEntrustUnStandardProjectList); + } + + if (CollUtil.isNotEmpty(updateBusinessSampleEntrustUnStandardProjectList)) { + this.businessSampleEntrustUnStandardProjectMapper.updateBatch(updateBusinessSampleEntrustUnStandardProjectList); + } + if (CollUtil.isNotEmpty(businessQCCoefficientDataList)) { this.businessQCCoefficientDataMapper.insertBatch(businessQCCoefficientDataList); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectNoMethodCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectNoMethodCmp.java index bf80aed5..62ccb84e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectNoMethodCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectNoMethodCmp.java @@ -1,15 +1,410 @@ package com.zt.plat.module.qms.business.bus.liteflow.sample.taskassign; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; + +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; +import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustUnStandardProjectExtendRespVO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO; +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.mapper.BusinessAssayTaskDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustUnStandardProjectMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleAssessmentMapper; +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.liteflow.param.AssignAssayUser; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignTypeEnum; +import com.zt.plat.module.qms.business.config.controller.vo.ConfigAssayMethodProjectExtendRespVO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodParameterDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectParameterDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigReportTemplateDO; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodParameterMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodProjectParameterMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigReportTemplateMapper; +import com.zt.plat.module.qms.common.dic.dal.dataobject.DictionaryBusinessDO; +import com.zt.plat.module.qms.common.dic.dal.mapper.DictionaryBusinessMapper; +import com.zt.plat.module.qms.core.code.SequenceUtil; +import com.zt.plat.module.qms.enums.QmsCommonConstant; + +import cn.hutool.core.bean.BeanUtil; +import jakarta.annotation.Resource; @LiteflowComponent(id = "sampleTaskAssignProjectNoMethodCmp", name = "手动分配(按检测项目未指定方法分配)") public class SampleTaskAssignProjectNoMethodCmp extends NodeComponent { + @Resource + private SequenceUtil sequenceUtil; + + @Resource + private DictionaryBusinessMapper dictionaryBusinessMapper; + + @Resource + private ConfigAssayMethodMapper configAssayMethodMapper; + + @Resource + private ConfigAssayMethodParameterMapper configAssayMethodParameterMapper; + + @Resource + private ConfigAssayMethodProjectMapper configAssayMethodProjectMapper; + + @Resource + private ConfigAssayMethodProjectParameterMapper configAssayMethodProjectParameterMapper; + + @Resource + private ConfigReportTemplateMapper configReportTemplateMapper; + + @Resource + private BusinessSampleEntrustUnStandardProjectMapper businessSampleEntrustUnStandardProjectMapper; + + @Resource + private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; + + @Resource + private BusinessAssayTaskMapper businessAssayTaskMapper; + + @Resource + private BusinessSubSampleMapper businessSubSampleMapper; + + @Resource + private BusinessSubParentSampleAssessmentMapper businessSubParentSampleAssessmentMapper; + + @Resource + private BusinessSubSampleAssessmentMapper businessSubSampleAssessmentMapper; + @Override public void process() throws Exception { + SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + String loginRealname = sampleTaskAssignContext.getLoginRealname(); + LoginUser loginUser = sampleTaskAssignContext.getLoginUser(); + LocalDateTime currentDateTime = sampleTaskAssignContext.getCurrentDateTime(); + //指派的方法 + Long assignConfigAssayMethodId = sampleTaskAssignContext.getAssignConfigAssayMethodId(); + ConfigAssayMethodDO configAssayMethodDO = configAssayMethodMapper.selectById(assignConfigAssayMethodId); + //方法类型id + Long dictionaryBusinessId = configAssayMethodDO.getDictionaryBusinessId(); + DictionaryBusinessDO dictionaryBusinessDO = dictionaryBusinessMapper.selectById(dictionaryBusinessId); + //查询报表模板 + ConfigReportTemplateDO configReportTemplate = configReportTemplateMapper.selectLatestConfigReportTemplateByKey(configAssayMethodDO.getConfigReportTemplateKey()); + //指派的分析方法的参数 + List configAssayMethodParameterDOList = configAssayMethodParameterMapper.selectByConfigAssayMethodId(assignConfigAssayMethodId); + //分析方法检测项目配置 + List configAssayMethodProjectList = configAssayMethodProjectMapper.selectByConfigAssayMethodId(assignConfigAssayMethodId); + //分析方法检测项目参数配置 + List configAssayMethodProjectParameterList = configAssayMethodProjectParameterMapper.selectByConfigAssayMethodId(assignConfigAssayMethodId); + //分析类型 + String assayType = sampleTaskAssignContext.getAssayType(); + //分析任务数 + Integer assayTaskCount = sampleTaskAssignContext.getAssayTaskCount(); + List assignAssayUserList = sampleTaskAssignContext.getAssignAssayUserList(); + int assignAssayUserCount = assignAssayUserList.size(); + //非标准的检测项目 + List sampleEntrustUnStandardProjectIdList = sampleTaskAssignContext.getSampleEntrustUnStandardProjectIdList(); + List businessSampleEntrustUnStandardProjectExtendList = businessSampleEntrustUnStandardProjectMapper.selectExtendByIds(sampleEntrustUnStandardProjectIdList); + //根据子样分组 + Map> businessSampleEntrustUnStandardProjectExtendMap = businessSampleEntrustUnStandardProjectExtendList.stream().collect(Collectors.groupingBy(BusinessSampleEntrustUnStandardProjectExtendRespVO::getBusinessSubSampleId)); + Set businessSubSampleIdList = businessSampleEntrustUnStandardProjectExtendMap.keySet(); + //查询子样 + List businessSubSampleList = businessSubSampleMapper.selectByIds(businessSubSampleIdList); + sampleTaskAssignContext.setBusinessSubSampleList(businessSubSampleList); + + //保存任务分配单 + List saveBusinessAssayTaskList = new ArrayList<>(); + //更新任务分配单 + List updateBusinessAssayTaskList = new ArrayList<>(); + //任务分配单明细 + List businessAssayTaskDetailList = new ArrayList<>(); + + //分样判定 + List saveBusinessSubParentSampleAssessmentList = new ArrayList<>(); + + //子样判定 + List saveBusinessSubSampleAssessmentList = new ArrayList<>(); + + //子样分析任务 + List saveBusinessAssayTaskDataList = new ArrayList<>(); + //子样分析任务参数 + List saveBusinessAssayTaskParameterDataList = new ArrayList<>(); + //子样分析任务检测项目 + List saveBusinessAssayProjectDataList = new ArrayList<>(); + //子样分析任务检测项目参数 + List saveBusinessAssayParameterDataList = new ArrayList<>(); + + List saveBusinessSampleEntrustUnStandardProjectList = new ArrayList<>(); + List updateBusinessSampleEntrustUnStandardProjectList = new ArrayList<>(); + + // 用于缓存已处理的任务单,避免同一用户在同一业务类型下重复查询数据库 + // Key: userId + dictionaryBusinessId, Value: BusinessAssayTaskDO + Map existingTaskCache = new HashMap<>(); + + //循环 + for (Map.Entry> businessSampleEntrustUnStandardProjectEntry : businessSampleEntrustUnStandardProjectExtendMap.entrySet()) { + Long currBusinessSubSampleId = businessSampleEntrustUnStandardProjectEntry.getKey(); + List currBusinessSampleEntrustUnStandardProjectExtendList = businessSampleEntrustUnStandardProjectEntry.getValue(); + //分析的检测项目id + List dictionaryProjectIdList = currBusinessSampleEntrustUnStandardProjectExtendList.stream().map(m -> m.getDictionaryProjectId()).distinct().collect(Collectors.toList()); + + //分析项目 + String assayProject = currBusinessSampleEntrustUnStandardProjectExtendList.stream().map(m -> m.getDictionaryProjectShowName()).distinct().collect(Collectors.joining(",")); + + //当前子样 + BusinessSubSampleDO currBusinessSubSampleDO = businessSubSampleList.stream().filter(f -> currBusinessSubSampleId.equals(f.getId())).findFirst().orElse(null); + + //分样判定 + BusinessSubParentSampleAssessmentDO businessSubParentSampleAssessmentDO = businessSubParentSampleAssessmentMapper.selectByBusinessSubParentSampleIdAndConfigAssayMethodIdAndRetestCount(currBusinessSubSampleDO.getBusinessSubParentSampleId(), assignConfigAssayMethodId, 0); + if (businessSubParentSampleAssessmentDO == null) { + businessSubParentSampleAssessmentDO = new BusinessSubParentSampleAssessmentDO(); + businessSubParentSampleAssessmentDO.setId(IdWorker.getId()); + businessSubParentSampleAssessmentDO.setBusinessSubParentSampleId(currBusinessSubSampleDO.getBusinessSubParentSampleId()); + businessSubParentSampleAssessmentDO.setConfigAssayMethodId(assignConfigAssayMethodId); + businessSubParentSampleAssessmentDO.setAssayType(assayType); + businessSubParentSampleAssessmentDO.setTaskType("常规"); + saveBusinessSubParentSampleAssessmentList.add(businessSubParentSampleAssessmentDO); + } + + //子样判定数据 + BusinessSubSampleAssessmentDO businessSubSampleAssessmentDO = businessSubSampleAssessmentMapper.selectByBusinessSubSampleIdAndConfigAssayMethodIdAndRetestCount(currBusinessSubSampleId, assignConfigAssayMethodId, 0); + if (businessSubSampleAssessmentDO == null) { + businessSubSampleAssessmentDO = new BusinessSubSampleAssessmentDO(); + businessSubSampleAssessmentDO.setId(IdWorker.getId()); + businessSubSampleAssessmentDO.setBusinessBaseSampleId(currBusinessSubSampleDO.getBusinessBaseSampleId()); + businessSubSampleAssessmentDO.setBusinessSubParentSampleId(currBusinessSubSampleDO.getBusinessSubParentSampleId()); + businessSubSampleAssessmentDO.setBusinessSubSampleId(currBusinessSubSampleDO.getId()); + businessSubSampleAssessmentDO.setBusinessSubParentSampleAssessmentId(businessSubParentSampleAssessmentDO.getId()); + businessSubSampleAssessmentDO.setConfigAssayMethodId(assignConfigAssayMethodId); + businessSubSampleAssessmentDO.setAssayType(assayType); + businessSubSampleAssessmentDO.setTaskType("常规"); + + saveBusinessSubSampleAssessmentList.add(businessSubSampleAssessmentDO); + } + + //根据任务数循环 + for (int i = 0; i < assayTaskCount; i++) { + + //子样检测任务 + BusinessAssayTaskDataDO businessAssayTaskDataDO = new BusinessAssayTaskDataDO(); + businessAssayTaskDataDO.setId(IdWorker.getId()); + businessAssayTaskDataDO.setBusinessBaseSampleId(currBusinessSubSampleDO.getBusinessBaseSampleId()); + businessAssayTaskDataDO.setBusinessSubParentSampleId(currBusinessSubSampleDO.getBusinessSubParentSampleId()); + businessAssayTaskDataDO.setBusinessSubSampleId(currBusinessSubSampleDO.getId()); + businessAssayTaskDataDO.setBusinessSubSampleAssessmentId(businessSubSampleAssessmentDO.getId()); + businessAssayTaskDataDO.setConfigAssayMethodId(assignConfigAssayMethodId); + businessAssayTaskDataDO.setAssayType(assayType); + businessAssayTaskDataDO.setTaskType("常规"); + businessAssayTaskDataDO.setConfigSampleFlowId(currBusinessSubSampleDO.getConfigSampleFlowId()); + businessAssayTaskDataDO.setSampleFlowNodeKey(QmsCommonConstant.FLOW_NODE_ANALYSIS); + businessAssayTaskDataDO.setSampleFlowNodeTime(currBusinessSubSampleDO.getSampleFlowNodeTime()); + businessAssayTaskDataDO.setAssayDepartmentId(configAssayMethodDO.getAssayDepartmentId()); + businessAssayTaskDataDO.setAssayDepartmentName(configAssayMethodDO.getAssayDepartmentName()); + businessAssayTaskDataDO.setAssayProject(assayProject); + + + // 1. 确定当前数据分配给哪个用户 (轮询) + AssignAssayUser currentUser = assignAssayUserList.get(i % assignAssayUserCount); + String currentOperatorName = currentUser.getRealName(); + Long currentOperatorId = currentUser.getUserId(); + + // 2. 查找或创建该用户在此业务类型下的任务单 + // 缓存Key:用户ID_业务ID + String cacheKey = currentOperatorId + "_" + dictionaryBusinessId; + BusinessAssayTaskDO businessAssayTaskDO = existingTaskCache.get(cacheKey); + + if (businessAssayTaskDO == null) { + // 缓存没命中,去数据库查该用户是否有进行中的任务 + businessAssayTaskDO = businessAssayTaskMapper.selectAssignInProgressByAssayUserAndAssignUser(dictionaryBusinessId, currentOperatorName, loginRealname); + + if (businessAssayTaskDO == null) { + // 没有进行中任务,新建 + String taskNo = sequenceUtil.genCode(configAssayMethodDO.getCodeRule()); + businessAssayTaskDO = new BusinessAssayTaskDO(); + businessAssayTaskDO.setId(IdWorker.getId()); + businessAssayTaskDO.setTaskNo(taskNo); + businessAssayTaskDO.setTaskName(dictionaryBusinessDO.getName()); + + // 设置当前轮询到的操作员 + businessAssayTaskDO.setAssayOperator(currentOperatorName); + businessAssayTaskDO.setAssayOperatorId(currentOperatorId); + + businessAssayTaskDO.setConfigAssayMethodId(configAssayMethodDO.getId()); + businessAssayTaskDO.setDictionaryBusinessId(dictionaryBusinessId); + businessAssayTaskDO.setDictionaryBusinessKey(configAssayMethodDO.getDictionaryBusinessKey()); + businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); + businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); + businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); + businessAssayTaskDO.setIsIngredients(configAssayMethodDO.getIsIngredients()); + businessAssayTaskDO.setIngredientsStatus("initial"); + + businessAssayTaskDO.setTaskAssignOperator(loginRealname); + businessAssayTaskDO.setTaskAssignOperatorId(loginUser.getId()); + businessAssayTaskDO.setTaskAssignTime(currentDateTime); + businessAssayTaskDO.setTaskAssignStatus(QmsCommonConstant.IN_PROGRESS); + businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.NOT_START); + businessAssayTaskDO.setFinishStatus(QmsCommonConstant.NOT_START); + businessAssayTaskDO.setFlowStatus(QmsCommonConstant.NOT_START); + + saveBusinessAssayTaskList.add(businessAssayTaskDO); + } else { + updateBusinessAssayTaskList.add(businessAssayTaskDO); + } + // 放入缓存,后续同用户同业务类型的直接复用 + existingTaskCache.put(cacheKey, businessAssayTaskDO); + } + + // 3. 更新原始数据状态 + businessAssayTaskDataDO.setIsAssignTasked(QmsCommonConstant.YES); + businessAssayTaskDataDO.setAssignTaskTime(currentDateTime); + // 注意:这里也要更新为当前轮询到的操作员,而不是固定的某个人 + businessAssayTaskDataDO.setAssayOperator(currentOperatorName); + businessAssayTaskDataDO.setAssayOperatorId(currentOperatorId); + businessAssayTaskDataDO.setBusinessAssayTaskId(businessAssayTaskDO.getId()); + + // 4. 构建任务明细 + BusinessSubSampleDO businessSubSampleDO = sampleTaskAssignContext.getBusinessSubSampleById(businessAssayTaskDataDO.getBusinessSubSampleId()); + + BusinessAssayTaskDetailDO businessAssayTaskDetailDO = new BusinessAssayTaskDetailDO(); + businessAssayTaskDetailDO.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId()); + businessAssayTaskDetailDO.setBusinessAssayTaskId(businessAssayTaskDO.getId()); + businessAssayTaskDetailDO.setTaskNo(businessAssayTaskDO.getTaskNo()); + businessAssayTaskDetailDO.setSampleId(businessAssayTaskDataDO.getBusinessSubSampleId()); + businessAssayTaskDetailDO.setSampleCode(businessSubSampleDO.getSampleAssayCode()); + businessAssayTaskDetailDO.setSampleName(businessSubSampleDO.getSampleName()); + businessAssayTaskDetailDO.setDataSourceType(QmsCommonConstant.NORMAL); + // 如果需要全局排序,这里的 sortNo 可能需要重新计算,如果是按任务单内部排序,保持自增即可 + // 由于现在拆分了任务单,每个任务单内部的 sortNo 最好单独维护,这里简单处理为累加(实际可能需按任务单分组后重排) + // 建议:如果在同一个任务单内,sortNo 应该是连续的。由于我们是循环插入,可能需要后期整理,或者在这里维护一个 Map + // 为了简化,这里暂时保持原有逻辑,实际生产中建议在循环结束后按 taskId 分组重新设置 sortNo + + businessAssayTaskDetailList.add(businessAssayTaskDetailDO); + + //添加分析任务 + saveBusinessAssayTaskDataList.add(businessAssayTaskDataDO); + + //子样检测任务参数 + for (ConfigAssayMethodParameterDO configAssayMethodParameterDO : configAssayMethodParameterDOList) { + BusinessAssayTaskParameterDataDO businessAssayTaskParameterDataDO = new BusinessAssayTaskParameterDataDO(); + businessAssayTaskParameterDataDO.setId(IdWorker.getId()); + businessAssayTaskParameterDataDO.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId()); + businessAssayTaskParameterDataDO.setConfigAssayMethodParameterId(configAssayMethodParameterDO.getId()); + businessAssayTaskParameterDataDO.setDataType(configAssayMethodParameterDO.getDataType()); + businessAssayTaskParameterDataDO.setDecimalPosition(configAssayMethodParameterDO.getDecimalPosition()); + + if (StringUtils.isNotBlank(configAssayMethodParameterDO.getDefaultValue())) { + businessAssayTaskParameterDataDO.setValue(configAssayMethodParameterDO.getDefaultValue()); + } + + saveBusinessAssayTaskParameterDataList.add(businessAssayTaskParameterDataDO); + } + + + //循环检测项目 + for (ConfigAssayMethodProjectExtendRespVO configAssayMethodProjectDO : configAssayMethodProjectList) { + + //如果当前分析方法的项目不在当前检测项目中,则跳出循环继续 + if (!dictionaryProjectIdList.contains(configAssayMethodProjectDO.getDictionaryProjectId())) { + continue; + } + BusinessSampleEntrustUnStandardProjectExtendRespVO currBusinessSampleEntrustUnStandardProjectExtend = currBusinessSampleEntrustUnStandardProjectExtendList.stream().filter(f -> configAssayMethodProjectDO.getDictionaryProjectId().equals(f.getDictionaryProjectId())).findFirst().orElse(null); + + if (currBusinessSampleEntrustUnStandardProjectExtend.getBusinessAssayTaskDataId() != null) { + BusinessSampleEntrustUnStandardProjectExtendRespVO otherBusinessSampleEntrustUnStandardProjectExtend = BeanUtil.copyProperties(currBusinessSampleEntrustUnStandardProjectExtend, BusinessSampleEntrustUnStandardProjectExtendRespVO.class); + otherBusinessSampleEntrustUnStandardProjectExtend.setId(IdWorker.getId()); + otherBusinessSampleEntrustUnStandardProjectExtend.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId()); + otherBusinessSampleEntrustUnStandardProjectExtend.setTaskCount(assayTaskCount); + otherBusinessSampleEntrustUnStandardProjectExtend.setIsAssignTasked(QmsCommonConstant.YES); + saveBusinessSampleEntrustUnStandardProjectList.add(BeanUtil.copyProperties(otherBusinessSampleEntrustUnStandardProjectExtend, BusinessSampleEntrustUnStandardProjectDO.class)); + } else { + currBusinessSampleEntrustUnStandardProjectExtend.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId()); + currBusinessSampleEntrustUnStandardProjectExtend.setTaskCount(assayTaskCount); + currBusinessSampleEntrustUnStandardProjectExtend.setIsAssignTasked(QmsCommonConstant.YES); + updateBusinessSampleEntrustUnStandardProjectList.add(BeanUtil.copyProperties(currBusinessSampleEntrustUnStandardProjectExtend, BusinessSampleEntrustUnStandardProjectDO.class)); + } + + BusinessAssayProjectDataDO businessAssayProjectDataDO = new BusinessAssayProjectDataDO(); + businessAssayProjectDataDO.setId(IdWorker.getId()); + businessAssayProjectDataDO.setBusinessAssayTaskDataId(businessAssayTaskDataDO.getId()); + businessAssayProjectDataDO.setConfigAssayMethodProjectId(configAssayMethodProjectDO.getId()); + businessAssayProjectDataDO.setDictionaryProjectId(configAssayMethodProjectDO.getDictionaryProjectId()); + businessAssayProjectDataDO.setDataType(configAssayMethodProjectDO.getDataType()); + businessAssayProjectDataDO.setDecimalPosition(configAssayMethodProjectDO.getDecimalPosition()); + businessAssayProjectDataDO.setEffectiveDigit(configAssayMethodProjectDO.getEffectiveDigit()); + businessAssayProjectDataDO.setUsage(currBusinessSampleEntrustUnStandardProjectExtend.getUsage()); + + businessAssayProjectDataDO.setMinimumLimitValue(configAssayMethodProjectDO.getMinimumLimitValue()); + businessAssayProjectDataDO.setIsEnabled(1); + businessAssayProjectDataDO.setIsNotAssessment(0); + + saveBusinessAssayProjectDataList.add(businessAssayProjectDataDO); + + + List configAssayMethodProjectParameterDOList = configAssayMethodProjectParameterList.stream().filter(f -> f.getConfigAssayMethodProjectId().equals(configAssayMethodProjectDO.getId())).collect(Collectors.toList()); + for (ConfigAssayMethodProjectParameterDO configAssayMethodProjectParameterDO : configAssayMethodProjectParameterDOList) { + BusinessAssayParameterDataDO businessAssayParameterDataDO = new BusinessAssayParameterDataDO(); + businessAssayParameterDataDO.setId(IdWorker.getId()); + businessAssayParameterDataDO.setConfigAssayMethodProjectParameterId(configAssayMethodProjectParameterDO.getId()); + businessAssayParameterDataDO.setBusinessAssayProjectDataId(businessAssayProjectDataDO.getId()); + businessAssayParameterDataDO.setDictionaryParameterId(configAssayMethodProjectParameterDO.getDictionaryParameterId()); + businessAssayParameterDataDO.setDataType(configAssayMethodProjectParameterDO.getDataType()); + businessAssayParameterDataDO.setDecimalPosition(configAssayMethodProjectParameterDO.getDecimalPosition()); + if (StringUtils.isNotBlank(configAssayMethodProjectParameterDO.getDefaultValue())) { + businessAssayParameterDataDO.setValue(configAssayMethodProjectParameterDO.getDefaultValue()); + } + + saveBusinessAssayParameterDataList.add(businessAssayParameterDataDO); + } + + } + + + } + } + // 【可选优化】重新整理明细的排序号 (SortNo),确保每个任务单内的明细是 1, 2, 3... + // 因为上面的循环是交叉写入的,可能导致同一个 taskId 的 sortNo 不连续 (如 1, 1, 2, 2...) 如果多个用户交替 + // 实际上上面的逻辑中,同一个 taskId 是由同一个用户产生的,但因为是交叉循环,可能插入顺序是交错的。 + // 最稳妥的方式是按 taskId 分组重排 + Map sortCounterMap = new HashMap<>(); + for (BusinessAssayTaskDetailDO detail : businessAssayTaskDetailList) { + Long taskId = detail.getBusinessAssayTaskId(); + int currentSort = sortCounterMap.getOrDefault(taskId, 0) + 1; + detail.setSortNo(currentSort); + sortCounterMap.put(taskId, currentSort); + } + + sampleTaskAssignContext.setSaveBusinessSubParentSampleAssessmentList(saveBusinessSubParentSampleAssessmentList); + sampleTaskAssignContext.setSaveBusinessSubSampleAssessmentList(saveBusinessSubSampleAssessmentList); + + sampleTaskAssignContext.setSaveBusinessAssayTaskList(saveBusinessAssayTaskList); + sampleTaskAssignContext.setUpdateBusinessAssayTaskList(updateBusinessAssayTaskList); + + sampleTaskAssignContext.setSaveBusinessAssayTaskDataList(saveBusinessAssayTaskDataList); + sampleTaskAssignContext.setSaveBusinessAssayProjectDataList(saveBusinessAssayProjectDataList); + sampleTaskAssignContext.setSaveBusinessAssayParameterDataList(saveBusinessAssayParameterDataList); + sampleTaskAssignContext.setSaveBusinessSampleEntrustUnStandardProjectList(saveBusinessSampleEntrustUnStandardProjectList); + sampleTaskAssignContext.setUpdateBusinessSampleEntrustUnStandardProjectList(updateBusinessSampleEntrustUnStandardProjectList); + + sampleTaskAssignContext.setBusinessAssayTaskDetailList(businessAssayTaskDetailList); + } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java index 1cc292b3..0d926711 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java @@ -5,15 +5,21 @@ import java.util.List; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCCoefficientParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementParameterDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementProjectDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessQCManagementSampleParameterDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleAssessmentDO; +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.liteflow.param.AssignAssayUser; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; @@ -42,6 +48,12 @@ public class SampleTaskAssignContext { /** 分析方法id **/ private Long assignConfigAssayMethodId; + /** 分析类型 **/ + private String assayType; + + /** 分析任务数 **/ + private Integer assayTaskCount; + /** 接受分配任务的人员 **/ private List assignAssayUserList; @@ -57,6 +69,12 @@ public class SampleTaskAssignContext { /** 检测任务id列表 **/ private List assayTaskDataIdList; + /** 检测任务项目id列表 **/ + private List assayProjectDataIdList; + + /** 样品委托无标准的检测项目id列表 **/ + private List sampleEntrustUnStandardProjectIdList; + public ConfigAssayMethodDO getConfigAssayMethodById(Long id) { ConfigAssayMethodDO configAssayMethod = null; if (CollUtil.isNotEmpty(this.configAssayMethodList)) { @@ -76,9 +94,33 @@ public class SampleTaskAssignContext { return businessSubSample; } - /** 子样检测任务 **/ + /** 保存分样判定 **/ + private List saveBusinessSubParentSampleAssessmentList; + + /** 保存子样判定 **/ + private List saveBusinessSubSampleAssessmentList; + + /** 保存子样检测任务 **/ + private List saveBusinessAssayTaskDataList; + + /** 更新子样检测任务 **/ private List businessAssayTaskDataList; + /** 保存子样检测任务参数 **/ + private List saveBusinessAssayTaskParameterDataList; + + /** 保存子样检测任务项目 **/ + private List saveBusinessAssayProjectDataList; + + /** 保存子样检测任务项目参数 **/ + private List saveBusinessAssayParameterDataList; + + /** 保存非标检测项目 **/ + private List saveBusinessSampleEntrustUnStandardProjectList; + + /** 更新非标检测项目 **/ + private List updateBusinessSampleEntrustUnStandardProjectList; + /** 保存任务指派单列表 **/ private List saveBusinessAssayTaskList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java index 697c2800..0755b2aa 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisServiceImpl.java @@ -660,8 +660,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { BusinessSubSampleDO businessSubSampleDO = businessSubSampleDOList.stream().filter(f -> f.getId().equals(businessAssayTaskDataDO.getBusinessSubSampleId())).findFirst().orElse(null); ConfigSubSampleMethodExtendRespVO configSubSampleMethodDO = configSubSampleMethodDOList.stream().filter(f -> f.getConfigAssayMethodId().equals(businessAssayTaskDataDO.getConfigAssayMethodId()) && f.getConfigSubSampleId().equals(businessSubSampleDO.getConfigSubSampleId())).findFirst().orElse(null); - String configInfomation = configSubSampleMethodDO.getConfigInfomation(); - if (StringUtils.isNotBlank(configInfomation)) { + + if (configSubSampleMethodDO != null && StringUtils.isNotBlank(configSubSampleMethodDO.getConfigInfomation())) { + String configInfomation = configSubSampleMethodDO.getConfigInfomation(); ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class); List getParamList = configSubSampleMethodConfInfo.getGetParam(); for (ConfigSubSampleMethodConfItem configSubSampleMethodConfItem: getParamList) { @@ -2045,8 +2046,9 @@ public class SampleAnalysisServiceImpl implements SampleAnalysisService { for (BusinessAssayTaskDataExtendRespVO businessAssayTaskData : businessAssayTaskDataExtendList) { ConfigSubSampleMethodExtendRespVO configSubSampleMethod = configSubSampleMethodDOList.stream().filter(f -> f.getConfigSubSampleId().equals(businessAssayTaskData.getConfigSubSampleId()) && f.getConfigAssayMethodId().equals(businessAssayTaskData.getConfigAssayMethodId())).findFirst().orElse(null); - String configInfomation = configSubSampleMethod.getConfigInfomation(); - if (StringUtils.isNotBlank(configInfomation)) { + + if (configSubSampleMethod != null && StringUtils.isNotBlank(configSubSampleMethod.getConfigInfomation())) { + String configInfomation = configSubSampleMethod.getConfigInfomation(); ConfigSubSampleMethodConfInfo configSubSampleMethodConfInfo = JSON.parseObject(configInfomation, ConfigSubSampleMethodConfInfo.class); List setParamList = configSubSampleMethodConfInfo.getSetParam(); if (CollUtil.isNotEmpty(setParamList)) {//参数不为空,则设置 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleDeptEntrustDocAuditServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleDeptEntrustDocAuditServiceImpl.java index e2dd3484..afabf63c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleDeptEntrustDocAuditServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleDeptEntrustDocAuditServiceImpl.java @@ -30,7 +30,6 @@ import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayReportDataExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSubParentSampleAssessmentProjectExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.DeptEntrustDocAuditParam; -import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDepartmentDO; @@ -55,6 +54,8 @@ import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentDataServi import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.framework.gridreport.GridReport; import com.zt.plat.module.qms.framework.gridreport.PdfHelper; +import com.zt.plat.module.qms.mq.SampleEntrustRegistrationAssayCompleteMessage; +import com.zt.plat.module.qms.mq.producer.SampleEntrustRegistrationAssayCompleteProducer; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; @@ -120,6 +121,9 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo @Resource private ReportDocumentAssistService reportDocumentAssistService; + + @Resource + private SampleEntrustRegistrationAssayCompleteProducer sampleEntrustRegistrationAssayCompleteProducer; @Override public JSONObject getDeptEntrustDocAuditByBusSampleEntrustDeptId(Long businessSampleEntrustDepartmentId) { @@ -325,6 +329,16 @@ public class SampleDeptEntrustDocAuditServiceImpl implements SampleDeptEntrustDo if (count <= 0) {//如果值为0,则说明都上报了,需要处理检验委托 businessSampleEntrustRegistrationDO.setAssayStatus(QmsCommonConstant.CHECKED); businessSampleEntrustRegistrationMapper.updateById(businessSampleEntrustRegistrationDO); + + //TODO 新增个配置是否发送到消息队列 + if (true) { + SampleEntrustRegistrationAssayCompleteMessage message = new SampleEntrustRegistrationAssayCompleteMessage(); + message.setBusinessSampleEntrustRegistrationId(businessSampleEntrustRegistrationDO.getId()) + .setConfigEntrustSourceId(businessSampleEntrustRegistrationDO.getConfigEntrustSourceId()) + .setEntrustNumber(businessSampleEntrustRegistrationDO.getEntrustNumber()) + .setEntrustUnit(businessSampleEntrustRegistrationDO.getEntrustUnit()); + sampleEntrustRegistrationAssayCompleteProducer.sendMessage(message); + } } //生成部门报告pdf 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 b8e882bd..d9c58d9b 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 @@ -112,6 +112,8 @@ import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.framework.gridreport.GridReport; import com.zt.plat.module.qms.framework.gridreport.PdfHelper; +import com.zt.plat.module.qms.mq.SampleEntrustRegistrationAssayCompleteMessage; +import com.zt.plat.module.qms.mq.producer.SampleEntrustRegistrationAssayCompleteProducer; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; @@ -161,6 +163,8 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe @Resource private ConfigAssayMethodProjectMapper configAssayMethodProjectMapper; + @Resource + private SampleEntrustRegistrationAssayCompleteProducer sampleEntrustRegistrationAssayCompleteProducer; @Override public List getUnReportMethodGroupList(BusinessSubParentSampleAssessmentGroupReqVO reqVO) { @@ -869,6 +873,16 @@ public class SampleResultReportingServiceImpl implements SampleResultReportingSe continue; } businessSampleEntrustRegistrationDO.setAssayStatus(QmsCommonConstant.CHECKED); + + //TODO 新增个配置是否发送到消息队列 + if (true) { + SampleEntrustRegistrationAssayCompleteMessage message = new SampleEntrustRegistrationAssayCompleteMessage(); + message.setBusinessSampleEntrustRegistrationId(businessSampleEntrustRegistrationDO.getId()) + .setConfigEntrustSourceId(businessSampleEntrustRegistrationDO.getConfigEntrustSourceId()) + .setEntrustNumber(businessSampleEntrustRegistrationDO.getEntrustNumber()) + .setEntrustUnit(businessSampleEntrustRegistrationDO.getEntrustUnit()); + sampleEntrustRegistrationAssayCompleteProducer.sendMessage(message); + } //处理原始记录附件,原始记录需要过滤掉 //过滤当前 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignServiceImpl.java index 9b4a5d03..542e4abb 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignServiceImpl.java @@ -1363,6 +1363,7 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService { } @Override + @Transactional(rollbackFor = Exception.class) public LiteflowResponse projectMethodAssign(SampleTaskAssignProjectMethodParam param) { if (CollUtil.isEmpty(param.getAssignAssayUserList())) { throw new ServiceException(1_032_100_000, "无任务分配人员"); @@ -1383,6 +1384,7 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService { } @Override + @Transactional(rollbackFor = Exception.class) public LiteflowResponse projectNoMethodAssign(SampleTaskAssignProjectNoMethodParam param) { if (CollUtil.isEmpty(param.getAssignAssayUserList())) { throw new ServiceException(1_032_100_000, "无任务分配人员"); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectParameterMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectParameterMapper.java index 16c4d2a8..b122e4fd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectParameterMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectParameterMapper.java @@ -56,6 +56,13 @@ public interface ConfigAssayMethodProjectParameterMapper extends BaseMapperX selectByConfigAssayMethodId(Long configAssayMethodId) { + return selectJoinList(ConfigAssayMethodProjectParameterDO.class, new MPJLambdaWrapperX() + .leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, ConfigAssayMethodProjectParameterDO::getConfigAssayMethodProjectId) + .selectAll(ConfigAssayMethodProjectParameterDO.class) + .eq(ConfigAssayMethodProjectDO::getConfigAssayMethodId, configAssayMethodId)); + } + default List selectByConfigAssayMethodIds(List configAssayMethodIds) { return selectJoinList(ConfigAssayMethodProjectParameterDO.class, new MPJLambdaWrapperX() .leftJoin(ConfigAssayMethodProjectDO.class, ConfigAssayMethodProjectDO::getId, ConfigAssayMethodProjectParameterDO::getConfigAssayMethodProjectId) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/consumer/SampleEntrustRegistrationAssayCompleteConsumer.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/consumer/SampleEntrustRegistrationAssayCompleteConsumer.java new file mode 100644 index 00000000..5413271a --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/consumer/SampleEntrustRegistrationAssayCompleteConsumer.java @@ -0,0 +1,52 @@ +package com.zt.plat.module.qms.mq.consumer; + +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.springframework.stereotype.Component; + +import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustRegistrationExtendRespVO; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegistrationMapper; +import com.zt.plat.module.qms.enums.QmsCommonConstant; +import com.zt.plat.module.qms.mq.SampleEntrustRegistrationAssayCompleteMessage; + +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; + +/** + * SampleEntrustRegistrationAssayCompleteConsumer + * 样品委托登记分析完成消费 + */ +@Slf4j +@Component +@RocketMQMessageListener( + topic = SampleEntrustRegistrationAssayCompleteMessage.TOPIC, + consumerGroup = SampleEntrustRegistrationAssayCompleteMessage.TOPIC + "_CONSUMER" +) +public class SampleEntrustRegistrationAssayCompleteConsumer implements RocketMQListener { + + @Resource + private BusinessSampleEntrustRegistrationMapper businessSampleEntrustRegistrationMapper; + + @Override + public void onMessage(SampleEntrustRegistrationAssayCompleteMessage message) { + log.info("委托登记分析完成[onMessage][消息内容({})]", message.toString()); + Long businessSampleEntrustRegistrationId = message.getBusinessSampleEntrustRegistrationId(); + //委托登记信息 + BusinessSampleEntrustRegistrationExtendRespVO businessSampleEntrustRegistration = businessSampleEntrustRegistrationMapper.selectExtendById(businessSampleEntrustRegistrationId); + + switch (businessSampleEntrustRegistration.getConfigEntrustSourceKey()) { + case QmsCommonConstant.ENTRUST_SOURCE_JYWT: //检验委托 + + break; + case QmsCommonConstant.ENTRUST_SOURCE_XNT_TEMPORARY: //西南铜临时样 + + break; + + default: + break; + } + + + } + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java new file mode 100644 index 00000000..d821d19f --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/mq/producer/SampleEntrustRegistrationAssayCompleteProducer.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.qms.mq.producer; + +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.stereotype.Component; + +import com.zt.plat.module.qms.mq.SampleEntrustRegistrationAssayCompleteMessage; + +import jakarta.annotation.Resource; + +/** + * SampleEntrustRegistrationAssayCompleteProducer + * 样品委托登记分析完成消息生产者 + */ +@Component +public class SampleEntrustRegistrationAssayCompleteProducer { + + @Resource + private RocketMQTemplate rocketMQTemplate; + + /** + * 发送到消息队列 + * @param message + */ + public void sendMessage(SampleEntrustRegistrationAssayCompleteMessage message) { + rocketMQTemplate.syncSend(SampleEntrustRegistrationAssayCompleteMessage.TOPIC, message); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/SampleResultQueryMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/SampleResultQueryMapper.xml index fa49e55d..47c37e99 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/SampleResultQueryMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/business/bus/dal/mapper/SampleResultQueryMapper.xml @@ -33,6 +33,8 @@ tbspsap.BSN_SB_PRN_SMP_ID = tbsps.ID LEFT JOIN T_DIC_PRJ tdp ON tbspsap.DIC_PRJ_ID = tdp.ID + LEFT JOIN T_BSN_SMP_ENTT_DTL tbsed ON + tbsps.BSN_BSE_SMP_ID = tbsed.BSN_BSE_SMP_ID LEFT JOIN T_BSN_SB_SMP_ANL_GRP tbssag ON tbspsap.BSN_SB_PRN_SMP_ID = tbssag.BSN_SB_PRN_SMP_ID AND tbssag.ASY_DEPT_ID = tbspsap.DEPT_ID @@ -41,6 +43,12 @@ WHERE tbspsa.IS_RPOD = 1 AND tbspsap.IS_RPOD = 1 + + AND tbsed.BSN_SMP_ENTT_REG_ID = #{reqVO.businessSampleEntrustRegistrationId} + + + AND tbsps.BSN_BSE_SMP_ID = #{reqVO.businessBaseSampleId} + AND tbssag.ASY_DEPT_ID = #{reqVO.assayDepartmentId}