diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/BusinessSampleEntrustUnStandardProjectController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/BusinessSampleEntrustUnStandardProjectController.java index 790c4f5d..73ec2f73 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/BusinessSampleEntrustUnStandardProjectController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/BusinessSampleEntrustUnStandardProjectController.java @@ -10,7 +10,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; -import jakarta.validation.constraints.*; import jakarta.validation.*; import jakarta.servlet.http.*; import java.util.*; @@ -92,6 +91,28 @@ public class BusinessSampleEntrustUnStandardProjectController implements Busines PageResult pageResult = businessSampleEntrustUnStandardProjectService.getBusinessSampleEntrustUnStandardProjectPage(pageReqVO); return success(BeanUtils.toBean(pageResult, BusinessSampleEntrustUnStandardProjectRespVO.class)); } + + @GetMapping("/list") + @Operation(summary = "获得委检登记样品检测项目表(无标准)列表") + public CommonResult> getBusinessSampleEntrustUnStandardProjectList(BusinessSampleEntrustUnStandardProjectPageReqVO reqVO) { + List list = businessSampleEntrustUnStandardProjectService.getBusinessSampleEntrustUnStandardProjectList(reqVO); + return success(list); + } + + @GetMapping("/listByBusinessBaseSampleId") + @Operation(summary = "获得委检登记样品检测项目表(无标准)分页") + //@PreAuthorize("@ss.hasPermission('qms:business-sample-entrust-un-standard-project:query')") + public CommonResult> listByBusinessBaseSampleId(@RequestParam("businessBaseSampleId") Long businessBaseSampleId) { + List listResult = businessSampleEntrustUnStandardProjectService.listByBusinessBaseSampleId(businessBaseSampleId); + return success(listResult); + } + + @PostMapping("/saveAssayDept") + @Operation(summary = "保存指派的分析部门") + public CommonResult saveAssayDept(@RequestBody BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO reqVO) { + businessSampleEntrustUnStandardProjectService.saveAssayDept(reqVO); + return success("成功"); + } @GetMapping("/export-excel") @Operation(summary = "导出委检登记样品检测项目表(无标准) Excel") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleTaskAssignController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleTaskAssignController.java index d1e4edcc..27195929 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleTaskAssignController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/admin/SampleTaskAssignController.java @@ -22,6 +22,8 @@ import com.zt.plat.module.qms.business.bus.controller.vo.*; 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.service.SampleTaskAssignService; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; @@ -116,6 +118,28 @@ public class SampleTaskAssignController implements BusinessControllerMarker { sampleTaskAssignService.manualTypeAssign(param); return success("成功"); } + + /** + * 按检测项目分配(已有方法) + * @param param + * @return + */ + @PostMapping("/projectMethodAssign") + public CommonResult projectMethodAssign(@RequestBody SampleTaskAssignProjectMethodParam param) { + sampleTaskAssignService.projectMethodAssign(param); + return success("成功"); + } + + /** + * 按检测项目分配(无方法) + * @param param + * @return + */ + @PostMapping("/projectNoMethodAssign") + public CommonResult projectNoMethodAssign(@RequestBody SampleTaskAssignProjectNoMethodParam param) { + sampleTaskAssignService.projectNoMethodAssign(param); + return success("成功"); + } /** * 按样品分配 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationPageReqVO.java index a5dc0886..3d30180d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationPageReqVO.java @@ -106,6 +106,9 @@ public class BusinessSampleEntrustRegistrationPageReqVO extends PageParam { @Schema(description = "检测方法,【字典】【jy_sample_entrust_assay_method】国标、行标、客户要求、检测方依据样品选择") private String assayMethod; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + @Schema(description = "登记状态,in_progress-登记中、submit-已提交", example = "1") private String registrationStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationRespVO.java index 918b195f..3299e4c7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationRespVO.java @@ -137,6 +137,9 @@ public class BusinessSampleEntrustRegistrationRespVO { @ExcelProperty("检测方法,【字典】【jy_sample_entrust_assay_method】国标、行标、客户要求、检测方依据样品选择") private String assayMethod; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + @Schema(description = "登记状态,in_progress-登记中、submit-已提交", example = "1") @ExcelProperty("登记状态,in_progress-登记中、submit-已提交") private String registrationStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationSaveReqVO.java index 93378ce8..6bd903ee 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustRegistrationSaveReqVO.java @@ -118,6 +118,9 @@ public class BusinessSampleEntrustRegistrationSaveReqVO { @NotEmpty(message = "检测方法,【字典】【jy_sample_entrust_assay_method】国标、行标、客户要求、检测方依据样品选择不能为空") private String assayMethod; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + @Schema(description = "登记状态,in_progress-登记中、submit-已提交", example = "1") private String registrationStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO.java new file mode 100644 index 00000000..546329a2 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO.java @@ -0,0 +1,14 @@ +package com.zt.plat.module.qms.business.bus.controller.vo; + + +import java.util.List; + +import lombok.Data; + +@Data +public class BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO { + + private BusinessSubSampleSaveReqVO subSampleReqVO; + + private List reqList; +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectExtendRespVO.java new file mode 100644 index 00000000..3255ef3f --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSampleEntrustUnStandardProjectExtendRespVO.java @@ -0,0 +1,46 @@ +package com.zt.plat.module.qms.business.bus.controller.vo; + +import java.time.LocalDateTime; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * BusinessSampleEntrustUnStandardProjectExtendRespVO + */ +@Data +public class BusinessSampleEntrustUnStandardProjectExtendRespVO extends BusinessSampleEntrustUnStandardProjectRespVO { + + @Schema(description = "检验委托登记ID") + private Long businessSampleEntrustRegistrationId; + + @Schema(description = "主样业务ID") + private Long businessBaseSampleId; + + @Schema(description = "子样配置id") + private Long configSubSampleId; + + @Schema(description = "样品名称") + private String sampleName; + + @Schema(description = "样品编号") + private String sampleCode; + + @Schema(description = "分析编号") + private String sampleAssayCode; + + @Schema(description = "样品流程节点KEY", requiredMode = Schema.RequiredMode.REQUIRED) + private String sampleFlowNodeKey; + + @Schema(description = "样品流程节点时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime sampleFlowNodeTime; + + @Schema(description = "检测项名称") + private String dictionaryProjectName; + + @Schema(description = "检测项简称") + private String dictionaryProjectSimpleName; + + @Schema(description = "检测项显示名") + private String dictionaryProjectShowName; +} 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 6ea0bc69..c21ccafa 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 @@ -22,6 +22,9 @@ public class BusinessSampleEntrustUnStandardProjectPageReqVO extends PageParam { @Schema(description = "分析部门名称", example = "赵六") private String assayDepartmentName; + @Schema(description = "分样子样ID", example = "30545") + private Long businessSubSampleId; + @Schema(description = "检测任务ID", example = "978") private Long businessAssayTaskDataId; @@ -37,6 +40,9 @@ public class BusinessSampleEntrustUnStandardProjectPageReqVO extends PageParam { @Schema(description = "检测项目ID,字典表:【T_DIC_PRJ】", example = "17192") private Long dictionaryProjectId; + @Schema(description = "用途,ingredient-配料、report-报出、ingredient_report-配料及报出") + private String usage; + @Schema(description = "是否启用,1-启用,0-不启用") private Integer isEnabled; @@ -53,4 +59,31 @@ public class BusinessSampleEntrustUnStandardProjectPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + //=======扩展字段 + + @Schema(description = "样品流程节点时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] sampleFlowNodeTime; + + @Schema(description = "检测项目字典id列表") + private List dictionaryProjectIdList; + + @Schema(description = "收样时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] sampleReceiveTime; + + @Schema(description = "样品编号") + private String sampleCode; + + @Schema(description = "样品名称") + private String sampleName; + + @Schema(description = "分析编号") + private String sampleAssayCode; + + @Schema(description = "归库编号") + private String sampleReturnCode; + + @Schema(description = "样品状态") + private String sampleStatus; } \ 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/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 9ed74922..350bc1c5 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 @@ -28,6 +28,9 @@ public class BusinessSampleEntrustUnStandardProjectRespVO { @ExcelProperty("分析部门名称") private String assayDepartmentName; + @Schema(description = "分样子样ID", example = "30545") + private Long businessSubSampleId; + @Schema(description = "检测任务ID", example = "978") @ExcelProperty("检测任务ID") private Long businessAssayTaskDataId; @@ -48,6 +51,10 @@ public class BusinessSampleEntrustUnStandardProjectRespVO { @ExcelProperty("检测项目ID,字典表:【T_DIC_PRJ】") private Long dictionaryProjectId; + @Schema(description = "用途,ingredient-配料、report-报出、ingredient_report-配料及报出") + @ExcelProperty("用途,ingredient-配料、report-报出、ingredient_report-配料及报出") + private String usage; + @Schema(description = "是否启用,1-启用,0-不启用", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("是否启用,1-启用,0-不启用") private Integer isEnabled; 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 d62681a3..cf25d068 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 @@ -22,6 +22,9 @@ public class BusinessSampleEntrustUnStandardProjectSaveReqVO { @Schema(description = "分析部门名称", example = "赵六") private String assayDepartmentName; + @Schema(description = "分样子样ID", example = "30545") + private Long businessSubSampleId; + @Schema(description = "检测任务ID", example = "978") private Long businessAssayTaskDataId; @@ -38,8 +41,10 @@ public class BusinessSampleEntrustUnStandardProjectSaveReqVO { @NotNull(message = "检测项目ID,字典表:【T_DIC_PRJ】不能为空") private Long dictionaryProjectId; + @Schema(description = "用途,ingredient-配料、report-报出、ingredient_report-配料及报出") + private String usage; + @Schema(description = "是否启用,1-启用,0-不启用", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "是否启用,1-启用,0-不启用不能为空") private Integer isEnabled; @Schema(description = "所属部门") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java index 64ae2253..6c0ba620 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSamplePageReqVO.java @@ -35,6 +35,12 @@ public class BusinessSubSamplePageReqVO extends PageParam { @Schema(description = "组ID,如果是委托创建的,则组ID和样品分样ID一致", example = "16918") private String groupId; + @Schema(description = "批次编号,西南铜的产品批号") + private String batchCode; + + @Schema(description = "双杯样标识,针对双杯样标记") + private String dualFlag; + @Schema(description = "样品名称", example = "张三") private String sampleName; @@ -72,6 +78,12 @@ public class BusinessSubSamplePageReqVO extends PageParam { @Schema(description = "下一步样品流程节点名称") private String nextSampleFlowNode; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + + @Schema(description = "分析级别") + private Integer assayLevel; + @Schema(description = "样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废", example = "1") private String sampleStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleReqVO.java index a4bc808a..dbcf979f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleReqVO.java @@ -35,6 +35,12 @@ public class BusinessSubSampleReqVO { @Schema(description = "组ID,如果是委托创建的,则组ID和样品分样ID一致", example = "16918") private String groupId; + @Schema(description = "批次编号,西南铜的产品批号") + private String batchCode; + + @Schema(description = "双杯样标识,针对双杯样标记") + private String dualFlag; + @Schema(description = "样品名称", example = "张三") private String sampleName; @@ -72,6 +78,12 @@ public class BusinessSubSampleReqVO { @Schema(description = "下一步样品流程节点名称") private String nextSampleFlowNode; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + + @Schema(description = "分析级别") + private Integer assayLevel; + @Schema(description = "样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废", example = "1") private String sampleStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleRespVO.java index 44a0c2b0..48325a67 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleRespVO.java @@ -46,6 +46,12 @@ public class BusinessSubSampleRespVO { @ExcelProperty("组ID,如果是委托创建的,则组ID和样品分样ID一致") private String groupId; + @Schema(description = "批次编号,西南铜的产品批号") + private String batchCode; + + @Schema(description = "双杯样标识,针对双杯样标记") + private String dualFlag; + @Schema(description = "样品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @ExcelProperty("样品名称") private String sampleName; @@ -93,6 +99,12 @@ public class BusinessSubSampleRespVO { @ExcelProperty("下一步样品流程节点名称") private String nextSampleFlowNode; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + + @Schema(description = "分析级别") + private Integer assayLevel; + @Schema(description = "样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废") private String sampleStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleSaveReqVO.java index a7c851d1..b6b6ad4a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/BusinessSubSampleSaveReqVO.java @@ -41,6 +41,12 @@ public class BusinessSubSampleSaveReqVO { @Schema(description = "组ID,如果是委托创建的,则组ID和样品分样ID一致", example = "16918") private String groupId; + @Schema(description = "批次编号,西南铜的产品批号") + private String batchCode; + + @Schema(description = "双杯样标识,针对双杯样标记") + private String dualFlag; + @Schema(description = "样品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") // @NotEmpty(message = "样品名称不能为空") private String sampleName; @@ -84,6 +90,12 @@ public class BusinessSubSampleSaveReqVO { // @NotEmpty(message = "下一步样品流程节点名称不能为空") private String nextSampleFlowNode; + @Schema(description = "是否物料检测标准登记,0-否,1-是") + private Integer isMaterialAssayStandard; + + @Schema(description = "分析级别") + private Integer assayLevel; + @Schema(description = "样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") // @NotEmpty(message = "样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废不能为空") private String sampleStatus; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustRegistrationDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustRegistrationDO.java index c0d67a27..f4d3ddbd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustRegistrationDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSampleEntrustRegistrationDO.java @@ -187,6 +187,11 @@ public class BusinessSampleEntrustRegistrationDO extends BusinessBaseDO { @TableField("ASY_MTHD") private String assayMethod; /** + * 是否物料检测标准登记,0-否,1-是 + */ + @TableField("IS_MTRL_ASY_STD") + private Integer isMaterialAssayStandard; + /** * 登记状态,in_progress-登记中、submit-已提交 */ @TableField("REG_STS") 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 be7352d8..2bb9f113 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 @@ -47,6 +47,11 @@ public class BusinessSampleEntrustUnStandardProjectDO extends BusinessBaseDO { @TableField("ASY_DEPT_NAME") private String assayDepartmentName; /** + * 分样子样ID + */ + @TableField("BSN_SB_SMP_ID") + private Long businessSubSampleId; + /** * 检测任务ID */ @TableField("BSN_ASY_TSK_DAT_ID") @@ -72,6 +77,11 @@ public class BusinessSampleEntrustUnStandardProjectDO extends BusinessBaseDO { @TableField("DIC_PRJ_ID") private Long dictionaryProjectId; /** + * 用途,ingredient-配料、report-报出、ingredient_report-配料及报出 + */ + @TableField("USG") + private String usage; + /** * 是否启用,1-启用,0-不启用 */ @TableField("IS_ENBD") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleDO.java index ad971861..fa17a3e3 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/dataobject/BusinessSubSampleDO.java @@ -73,6 +73,16 @@ public class BusinessSubSampleDO extends BusinessBaseDO { @TableField("GRP_ID") private String groupId; /** + * 批次编号,西南铜的产品批号 + */ + @TableField("BAT_CD") + private String batchCode; + /** + * 双杯样标识,针对双杯样标记 + */ + @TableField("DUAL_FLG") + private String dualFlag; + /** * 样品名称 */ @TableField("SMP_NAME") @@ -133,6 +143,16 @@ public class BusinessSubSampleDO extends BusinessBaseDO { @TableField("NXT_SMP_FLW_NDE") private String nextSampleFlowNode; /** + * 是否物料检测标准登记,0-否,1-是 + */ + @TableField("IS_MTRL_ASY_STD") + private Integer isMaterialAssayStandard; + /** + * 分析级别 + */ + @TableField("ASY_LVL") + private Integer assayLevel; + /** * 样品状态,【字典】【jy_sample_status】normal-正常、isolation-隔离、void-作废 */ @TableField("SMP_STS") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustProjectMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustProjectMapper.java index 3d983ab7..594977e2 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustProjectMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessSampleEntrustProjectMapper.java @@ -45,6 +45,11 @@ public interface BusinessSampleEntrustProjectMapper extends BaseMapperX selectByBusinessSampleEntrustDetailIds(List businessSampleEntrustDetailIdList) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessSampleEntrustProjectDO::getBusinessSampleEntrustDetailId, businessSampleEntrustDetailIdList)); + } /** * 物理批量删除删除 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 2c2e0b49..4e2de623 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 @@ -58,6 +58,7 @@ public interface BusinessSampleEntrustRegistrationMapper extends BaseMapperX selectList(BusinessSampleEntrustUnStandardProjectPageReqVO reqVO) { + MPJLambdaWrapper mpjLambdaWrapper = new MPJLambdaWrapperX() + .leftJoin(BusinessSampleEntrustDetailDO.class, BusinessSampleEntrustDetailDO::getId, BusinessSampleEntrustUnStandardProjectDO::getBusinessSampleEntrustDetailId) + .leftJoin(BusinessSubSampleDO.class, BusinessSubSampleDO::getId, BusinessSampleEntrustUnStandardProjectDO::getBusinessSubSampleId) + .leftJoin(BusinessSubSampleAnalysisGroupDO.class, on -> on + .eq(BusinessSubSampleAnalysisGroupDO::getBusinessSubSampleId, BusinessSampleEntrustUnStandardProjectDO::getBusinessSubSampleId) + .eq(BusinessSubSampleAnalysisGroupDO::getAssayDepartmentId, BusinessSampleEntrustUnStandardProjectDO::getAssayDepartmentId)) + .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) + .selectAs(BusinessSubSampleDO::getSampleName, BusinessSampleEntrustUnStandardProjectExtendRespVO::getSampleName) + .selectAs(BusinessSubSampleDO::getSampleCode, BusinessSampleEntrustUnStandardProjectExtendRespVO::getSampleCode) + .selectAs(BusinessSubSampleDO::getSampleAssayCode, BusinessSampleEntrustUnStandardProjectExtendRespVO::getSampleAssayCode) + .selectAs(BusinessSubSampleDO::getConfigSubSampleId, BusinessSampleEntrustUnStandardProjectExtendRespVO::getConfigSubSampleId) + .selectAs(BusinessSubSampleDO::getSampleFlowNodeKey, BusinessSampleEntrustUnStandardProjectExtendRespVO::getSampleFlowNodeKey) + .selectAs(BusinessSubSampleDO::getSampleFlowNodeTime, BusinessSampleEntrustUnStandardProjectExtendRespVO::getSampleFlowNodeTime); + + if (ObjectUtil.isNotEmpty(reqVO.getAssayDepartmentId())) { + mpjLambdaWrapper.eq(BusinessSampleEntrustUnStandardProjectDO::getAssayDepartmentId, reqVO.getAssayDepartmentId()); + } + + if (ObjectUtil.isNotEmpty(reqVO.getSampleName())) { + mpjLambdaWrapper.like(BusinessSubSampleDO::getSampleName, reqVO.getSampleName()); + } + + if (ObjectUtil.isNotEmpty(reqVO.getSampleAssayCode())) { + mpjLambdaWrapper.like(BusinessSubSampleDO::getSampleAssayCode, reqVO.getSampleAssayCode()); + } + if (ObjectUtil.isNotEmpty(reqVO.getSampleFlowNodeTime()) && ObjectUtil.isNotEmpty(reqVO.getSampleFlowNodeTime()[0]) && ObjectUtil.isNotEmpty(reqVO.getSampleFlowNodeTime()[1])) { + mpjLambdaWrapper.between(BusinessSubSampleDO::getSampleFlowNodeTime, reqVO.getSampleFlowNodeTime()[0], reqVO.getSampleFlowNodeTime()[1]); + } + + if (ObjectUtil.isAllNotEmpty(reqVO.getDictionaryProjectIdList()) && !ArrayUtil.isEmpty(reqVO.getDictionaryProjectIdList())) { + mpjLambdaWrapper.in(BusinessSampleEntrustUnStandardProjectDO::getDictionaryProjectId, reqVO.getDictionaryProjectIdList()); + } + + if (ObjectUtil.isNotEmpty(reqVO.getSampleStatus())) { + mpjLambdaWrapper.eq(BusinessSubSampleAnalysisGroupDO::getSampleStatus, reqVO.getSampleStatus()); + } + mpjLambdaWrapper.orderByAsc(BusinessSubSampleDO::getSampleFlowNodeTime); + return selectJoinList(BusinessSampleEntrustUnStandardProjectExtendRespVO.class, mpjLambdaWrapper); + } + + default List selectByBusinessSampleEntrustDetailIds(List businessSampleEntrustDetailIdList) { + return selectList(new LambdaQueryWrapperX() + .in(BusinessSampleEntrustUnStandardProjectDO::getBusinessSampleEntrustDetailId, businessSampleEntrustDetailIdList)); + } + + + default List selectByBusinessBaseSampleId(Long businessBaseSampleId) { + 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) + .eq(BusinessSampleEntrustDetailDO::getBusinessBaseSampleId, businessBaseSampleId) + .orderByAsc(BusinessSampleEntrustUnStandardProjectDO::getId) + ); + } } \ 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/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 a55f629d..1137a8ef 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 @@ -54,6 +54,8 @@ public interface BusinessSubSampleMapper extends BaseMapperX assignAssayUserList; + + /** 分析方法id **/ + private Long configAssayMethodId; + + /** 检测项目数据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 new file mode 100644 index 00000000..414b1248 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignProjectNoMethodParam.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.qms.business.bus.liteflow.param; + +import java.util.List; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 按检测项目指派(无方法) + */ +@Data +@Accessors(chain = true) +public class SampleTaskAssignProjectNoMethodParam { + + /** 分析人员 **/ + private List assignAssayUserList; + + /** 分析方法id **/ + private Long configAssayMethodId; + + /** 样品委托无标准的检测项目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/SampleEntrustCheckCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCheckCmp.java index 94005503..2c0795a1 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCheckCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCheckCmp.java @@ -26,7 +26,8 @@ public class SampleEntrustCheckCmp extends NodeComponent { if (sampleEntrustRegistration.getConfigEntrustSourceId() == null) { throw new ServiceException(1_032_100_000, "委托来源id不允许为空"); } - ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); +// ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); + ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSource(); if (configEntrustSource == null) { throw new ServiceException(1_032_100_000, "委托来源id不正确"); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustContextInitCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustContextInitCmp.java index ee45f951..dc1b076c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustContextInitCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustContextInitCmp.java @@ -21,6 +21,7 @@ import com.zt.plat.framework.tenant.core.context.TenantContextHolder; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustProjectDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustDetail; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustDetailProject; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustParam; @@ -28,14 +29,16 @@ import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigEntrustSourceDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDetailDO; import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardMethodDO; import com.zt.plat.module.qms.business.config.dal.mapper.BaseSampleMapper; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigEntrustSourceMapper; import com.zt.plat.module.qms.business.config.dal.mapper.MaterialAssayStandardDetailMapper; import com.zt.plat.module.qms.business.config.dal.mapper.MaterialAssayStandardMapper; import com.zt.plat.module.qms.business.config.dal.mapper.MaterialAssayStandardMethodMapper; +import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; +import com.zt.plat.module.qms.business.dic.dal.mapper.DictionaryProjectMapper; +import com.zt.plat.module.qms.enums.QmsCommonConstant; + import jakarta.annotation.Resource; /** @@ -46,7 +49,10 @@ public class SampleEntrustContextInitCmp extends NodeComponent { @Resource private BaseSampleMapper baseSampleMapper; - + + @Resource + private DictionaryProjectMapper dictionaryProjectMapper; + @Resource private ConfigEntrustSourceMapper configEntrustSourceMapper; @@ -70,6 +76,12 @@ public class SampleEntrustContextInitCmp extends NodeComponent { //当前登录用户昵称 String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + //委托来源配置 + ConfigEntrustSourceDO configEntrustSourceDO = null; + + //是否使用物料分析标准 + Boolean isUseMaterialAssayStandard = true; + //获取样品委托参数 SampleEntrustParam sampleEntrustParam = this.getRequestData(); @@ -88,10 +100,14 @@ public class SampleEntrustContextInitCmp extends NodeComponent { //样品提交时是否送样 sampleEntrustContext.setIsSendSample(sampleEntrustParam.getIsSendSample()); + //检测项目字典 + List dictionaryProjectList = dictionaryProjectMapper.selectList(); + sampleEntrustContext.setDictionaryProjectList(dictionaryProjectList); + //委托登记明细 List detailList = sampleEntrustParam.getSampleEntrustDetailList(); -// List materialAssayStandardDetailIdList = detailList.stream().flatMap(m -> m.getSampleEntrustDetailProjectList().stream()).map(m -> m.getMaterialAssayStandardDetailId()).distinct().collect(Collectors.toList()); + //物料分析标准项目id列表 List materialAssayStandardDetailIdList = detailList.stream() .filter(Objects::nonNull) // 过滤 outer null .map(m -> m.getSampleEntrustDetailProjectList()) @@ -103,26 +119,20 @@ public class SampleEntrustContextInitCmp extends NodeComponent { .distinct() .collect(Collectors.toList()); - //委托来源配置 - List configEntrustSourceList = configEntrustSourceMapper.selectList(); - sampleEntrustContext.setConfigEntrustSourceList(configEntrustSourceList); - - //物料检验标准项 -// List materialAssayStandardDetailList = materialAssayStandardDetailMapper.selectList(); - List materialAssayStandardDetailList = materialAssayStandardDetailMapper.selectExtendByIds(materialAssayStandardDetailIdList); - sampleEntrustContext.setMaterialAssayStandardDetailList(materialAssayStandardDetailList); - - List materialAssayStandardIdList = materialAssayStandardDetailList.stream().map(m -> m.getMaterialAssayStandardId()).distinct().collect(Collectors.toList()); + //如果物料分析标准项目id列表不为空,则当前分析的为标准分析样品 + if (CollUtil.isNotEmpty(materialAssayStandardDetailIdList)) { + isUseMaterialAssayStandard = Boolean.TRUE; + //物料检验标准项 + List materialAssayStandardDetailList = materialAssayStandardDetailMapper.selectExtendByIds(materialAssayStandardDetailIdList); + sampleEntrustContext.setMaterialAssayStandardDetailList(materialAssayStandardDetailList); - //物料检验标准 -// List materialAssayStandardList = materialAssayStandardMapper.selectList(); - List materialAssayStandardList = materialAssayStandardMapper.selectByIds(materialAssayStandardIdList); - sampleEntrustContext.setMaterialAssayStandardList(materialAssayStandardList); - - //物料检验标准方法 -// List materialAssayStandardMethodList = materialAssayStandardMethodMapper.selectList(); - List materialAssayStandardMethodList = materialAssayStandardMethodMapper.selectByMaterialAssayStandardDetailIds(materialAssayStandardDetailIdList); - sampleEntrustContext.setMaterialAssayStandardMethodList(materialAssayStandardMethodList); + //物料检验标准方法 + List materialAssayStandardMethodList = materialAssayStandardMethodMapper.selectByMaterialAssayStandardDetailIds(materialAssayStandardDetailIdList); + sampleEntrustContext.setMaterialAssayStandardMethodList(materialAssayStandardMethodList); + } else { + isUseMaterialAssayStandard = Boolean.FALSE; + } + sampleEntrustContext.setIsUseMaterialAssayStandard(isUseMaterialAssayStandard); //委托登记 BusinessSampleEntrustRegistrationDO sampleEntrustRegistration = BeanUtil.copyProperties(sampleEntrustParam, BusinessSampleEntrustRegistrationDO.class); @@ -138,17 +148,29 @@ public class SampleEntrustContextInitCmp extends NodeComponent { //委托来源的id为空 if (sampleEntrustParam.getConfigEntrustSourceId() == null && StringUtils.isNotBlank(sampleEntrustParam.getConfigEntrustSourceKey()) && StringUtils.isNotBlank(sampleEntrustParam.getEntrustType())) { - ConfigEntrustSourceDO configEntrustSourceDO = configEntrustSourceList.stream().filter(f -> f.getKey().equals(sampleEntrustParam.getConfigEntrustSourceKey()) && f.getEntrustType().equals(sampleEntrustParam.getEntrustType())).findFirst().orElse(null); + configEntrustSourceDO = configEntrustSourceMapper.selectBySourceKeyAndEntrustType(sampleEntrustParam.getConfigEntrustSourceKey(), sampleEntrustParam.getEntrustType()); if (configEntrustSourceDO == null) { throw new ServiceException(1_032_100_000, "样品委托来源不正确"); } sampleEntrustRegistration.setConfigEntrustSourceId(configEntrustSourceDO.getId()); + } else { + configEntrustSourceDO = configEntrustSourceMapper.selectById(sampleEntrustParam.getConfigEntrustSourceId()); + if (configEntrustSourceDO == null) { + throw new ServiceException(1_032_100_000, "样品委托来源不正确"); + } + } + sampleEntrustContext.setConfigEntrustSource(configEntrustSourceDO); + + //设置登记是否使用物料分析标准 + if (isUseMaterialAssayStandard) { + sampleEntrustRegistration.setIsMaterialAssayStandard(QmsCommonConstant.YES); + } else { + sampleEntrustRegistration.setIsMaterialAssayStandard(QmsCommonConstant.NO); } //赋值委托来源id sampleEntrustContext.setSampleEntrustRegistration(sampleEntrustRegistration); - - + //样品大类id列表 List baseSampleIdList = detailList.stream().map(m -> m.getBaseSampleId()).distinct().collect(Collectors.toList()); List baseSampleDOList = baseSampleMapper.selectByIds(baseSampleIdList); @@ -156,6 +178,7 @@ public class SampleEntrustContextInitCmp extends NodeComponent { //委托登记样品明细的检测项目明细 List sampleEntrustProjectList = new ArrayList<>(); + List sampleEntrustUnStandardProjectList = new ArrayList<>(); int sort = 1; for (SampleEntrustDetail sampleEntrustDetail : detailList) { if (sampleEntrustDetail.getId() == null) { @@ -175,8 +198,14 @@ public class SampleEntrustContextInitCmp extends NodeComponent { List assayProjectList = new ArrayList<>(); List projectList = sampleEntrustDetail.getSampleEntrustDetailProjectList(); for (SampleEntrustDetailProject sampleEntrustDetailProject : projectList) { - MaterialAssayStandardDetailRespVO materialAssayStandardDetail = materialAssayStandardDetailList.stream().filter(f -> sampleEntrustDetailProject.getMaterialAssayStandardDetailId().equals(f.getId())).findFirst().orElse(null); - assayProjectList.add(materialAssayStandardDetail.getDictionaryProjectShowName()); + if (isUseMaterialAssayStandard) { + MaterialAssayStandardDetailRespVO materialAssayStandardDetail = sampleEntrustContext.getMaterialAssayStandardDetailById(sampleEntrustDetailProject.getMaterialAssayStandardDetailId()); + assayProjectList.add(materialAssayStandardDetail.getDictionaryProjectShowName()); + } else { + DictionaryProjectDO dictionaryProjectDO = sampleEntrustContext.getDictionaryProjectById(sampleEntrustDetailProject.getDictionaryProjectId()); + assayProjectList.add(dictionaryProjectDO.getShowName()); + } + //判定委托明细id是否为空 if (sampleEntrustDetailProject.getBusinessSampleEntrustDetailId() == null) { sampleEntrustDetailProject.setBusinessSampleEntrustDetailId(sampleEntrustDetail.getId()); } @@ -184,9 +213,14 @@ public class SampleEntrustContextInitCmp extends NodeComponent { if (StringUtils.isBlank(sampleEntrustDetail.getAssayProject())) { sampleEntrustDetail.setAssayProject(CollUtil.join(assayProjectList, ",")); } - sampleEntrustProjectList.addAll(BeanUtil.copyToList(projectList, BusinessSampleEntrustProjectDO.class)); + if (isUseMaterialAssayStandard) { + sampleEntrustProjectList.addAll(BeanUtil.copyToList(projectList, BusinessSampleEntrustProjectDO.class)); + } else { + sampleEntrustUnStandardProjectList.addAll(BeanUtil.copyToList(projectList, BusinessSampleEntrustUnStandardProjectDO.class)); + } } sampleEntrustContext.setSampleEntrustProjectList(sampleEntrustProjectList); + sampleEntrustContext.setSampleEntrustUnStandardProjectList(sampleEntrustUnStandardProjectList); //委托登记样品明细 List sampleEntrustDetailList = BeanUtil.copyToList(detailList, BusinessSampleEntrustDetailDO.class); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCreateDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCreateDataCmp.java index 774424a2..f3c0386e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCreateDataCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustCreateDataCmp.java @@ -20,16 +20,17 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustD import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustFileDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustProjectDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleAssayResultMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustDetailMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustFileMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustProjectMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegistrationMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustUnStandardProjectMapper; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigEntrustSourceDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigReportTemplateDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDetailDO; import com.zt.plat.module.qms.business.config.dal.mapper.ConfigReportTemplateMapper; import com.zt.plat.module.qms.core.code.SequenceUtil; import com.zt.plat.module.qms.enums.QmsCommonConstant; @@ -57,6 +58,9 @@ public class SampleEntrustCreateDataCmp extends NodeComponent { @Resource private BusinessSampleEntrustProjectMapper businessSampleEntrustProjectMapper; + @Resource + private BusinessSampleEntrustUnStandardProjectMapper businessSampleEntrustUnStandardProjectMapper; + @Resource private BusinessSampleAssayResultMapper businessSampleAssayResultMapper; @@ -75,7 +79,7 @@ public class SampleEntrustCreateDataCmp extends NodeComponent { } //获取委托来源配置 - ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); + ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSource(); ConfigReportTemplateDO configReportTemplate = configReportTemplateMapper.selectLatestConfigReportTemplateByKey(configEntrustSource.getConfigReportTemplateKey()); String entrustNumber = null; @@ -150,12 +154,15 @@ public class SampleEntrustCreateDataCmp extends NodeComponent { businessSampleEntrustDetail.setSampleCode(businessSampleEntrustDetail.getEntrustSampleCode());//样品编号与来样编号一致 } } - + List sampleEntrustProjectList = sampleEntrustContext.getSampleEntrustProjectList(); - for (BusinessSampleEntrustProjectDO businessSampleEntrustProject : sampleEntrustProjectList) { - MaterialAssayStandardDetailRespVO materialAssayStandardDetail = sampleEntrustContext.getMaterialAssayStandardDetailById(businessSampleEntrustProject.getMaterialAssayStandardDetailId()); - businessSampleEntrustProject.setDictionaryProjectId(materialAssayStandardDetail.getDictionaryProjectId()); + if (sampleEntrustContext.getIsUseMaterialAssayStandard()) {//如果是使用标准分析 + for (BusinessSampleEntrustProjectDO businessSampleEntrustProject : sampleEntrustProjectList) { + MaterialAssayStandardDetailRespVO materialAssayStandardDetail = sampleEntrustContext.getMaterialAssayStandardDetailById(businessSampleEntrustProject.getMaterialAssayStandardDetailId()); + businessSampleEntrustProject.setDictionaryProjectId(materialAssayStandardDetail.getDictionaryProjectId()); + } } + List sampleEntrustUnStandardProjectList = sampleEntrustContext.getSampleEntrustUnStandardProjectList(); //保存样品委托登记 businessSampleEntrustRegistrationMapper.insert(sampleEntrustRegistration); @@ -169,6 +176,10 @@ public class SampleEntrustCreateDataCmp extends NodeComponent { if (CollUtil.isNotEmpty(sampleEntrustProjectList)) { businessSampleEntrustProjectMapper.insertBatch(sampleEntrustProjectList); } + //保存检测检测项目 非标准 + if (CollUtil.isNotEmpty(sampleEntrustUnStandardProjectList)) { + businessSampleEntrustUnStandardProjectMapper.insertBatch(sampleEntrustUnStandardProjectList); + } //保存上传附件 if (CollUtil.isNotEmpty(businessSampleEntrustFileDOList)) { 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 0a813011..739582a7 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 @@ -85,7 +85,6 @@ import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleMethodMa import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleParentMapper; import com.zt.plat.module.qms.business.config.dal.mapper.MaterialAssayStandardMethodMapper; import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; -import com.zt.plat.module.qms.business.dic.dal.mapper.DictionaryProjectMapper; import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; import com.zt.plat.module.qms.common.data.dal.mapper.DataTemplateMapper; import com.zt.plat.module.qms.core.code.SequenceUtil; @@ -187,9 +186,6 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { @Resource private BusinessAssayParameterDataMapper businessAssayParameterDataMapper; - @Resource - private DictionaryProjectMapper dictionaryProjectMapper; - @Resource private ConfigSampleFlowMapper configSampleFlowMapper; @@ -230,7 +226,6 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { List baseSampleIdList = sampleEntrustDetailList.stream().map(m -> m.getBaseSampleId()).distinct().collect(Collectors.toList()); //样品大类列表 -// List baseSampleList = baseSampleMapper.selectByIds(baseSampleIdList); List baseSampleList = sampleEntrustContext.getBaseSampleList(); //主样配置 @@ -253,7 +248,7 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { //分析方法检测项目参数配置 List configAssayMethodProjectParameterList = configAssayMethodProjectParameterMapper.selectByConfigAssayMethodIds(configAssayMethodIdList); //检测项目字典 - List dictionaryProjectList = dictionaryProjectMapper.selectList(); + List dictionaryProjectList = sampleEntrustContext.getDictionaryProjectList(); //主样报表配置 List configSampleReportList = configSampleReportMapper.selectByConfigBaseSampleIds(configBaseSampleIdList); @@ -425,6 +420,9 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { businessSubSampleDO.setBusinessSubParentSampleId(businessSubParentSampleDO.getId()); businessSubSampleDO.setConfigSubSampleId(configSubSample.getId()); businessSubSampleDO.setDictionaryBusinessId(configSubSample.getDictionaryBusinessId()); + businessSubSampleDO.setGroupId(businessSampleEntrustDetailDO.getEntrustGroupCode()); + businessSubSampleDO.setBatchCode(businessSampleEntrustDetailDO.getEntrustBatchCode()); + businessSubSampleDO.setDualFlag(businessSampleEntrustDetailDO.getEntrustDualFlag()); businessSubSampleDO.setSampleName(businessBaseSampleDO.getSampleName()); businessSubSampleDO.setSampleCode(businessBaseSampleDO.getSampleCode()); businessSubSampleDO.setSampleAssayCode(businessBaseSampleDO.getSampleCode()); @@ -435,6 +433,8 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { businessSubSampleDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey()); businessSubSampleDO.setSampleFlowNodeTime(currentDateTime); businessSubSampleDO.setNextSampleFlowNode(sampleFlowNodeSub.getNextFlowNodeName()); + businessSubSampleDO.setIsMaterialAssayStandard(sampleEntrustRegistration.getIsMaterialAssayStandard()); + businessSubSampleDO.setAssayLevel(businessSampleEntrustDetailDO.getAssayLevel()); businessSubSampleDO.setRemark(sampleEntrustRegistrationJsonObject.getString("sampleCategory"));//子样备注设置样品类型 businessSubSampleDOList.add(businessSubSampleDO); @@ -778,7 +778,8 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { } //处理委托登记下的分析部门及部门明细数据 - ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); +// ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); + ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSource(); if (QmsCommonConstant.YES.equals(configEntrustSource.getIsGenerateDocument())) {//根据配置,只有配置了需要编制部门报告的数据才生成 List businessSampleEntrustDepartmentDOList = new ArrayList<>(); List businessSampleEntrustDepartmentDetailDOList = new ArrayList<>(); @@ -1159,4 +1160,11 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { } } + + @Override + public boolean isAccess() { + log.debug("标准执行生成样品"); + SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); + return sampleEntrustContext.getIsUseMaterialAssayStandard();//标准的执行 + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUnStandardGenSampleDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUnStandardGenSampleDataCmp.java new file mode 100644 index 00000000..15f8bf15 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUnStandardGenSampleDataCmp.java @@ -0,0 +1,335 @@ +package com.zt.plat.module.qms.business.bus.liteflow.sample.entrust; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessBaseSampleDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleAssayResultDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDetailDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubParentSampleDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayReportDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessBaseSampleMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleAssayResultMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustDetailMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegistrationMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowInfo; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; +import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigBaseSampleDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSampleFlowDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSampleReportDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigSubSampleParentDO; +import com.zt.plat.module.qms.business.config.dal.mapper.BaseSampleMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigBaseSampleMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSampleFlowMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSampleReportMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigSubSampleParentMapper; +import com.zt.plat.module.qms.core.code.SequenceUtil; +import com.zt.plat.module.qms.core.sampleflow.SampleFlowDefinition; +import com.zt.plat.module.qms.core.sampleflow.SampleFlowNode; +import com.zt.plat.module.qms.enums.QmsCommonConstant; + +import cn.hutool.core.collection.CollUtil; +import jakarta.annotation.Resource; + +/** + * SampleEntrustUnStandardGenSampleDataCmp + * 非标分析样品生成 + */ +@LiteflowComponent(id = "sampleEntrustUnStandardGenSampleDataCmp", name = "非标样品委托生成系统样品数据") +public class SampleEntrustUnStandardGenSampleDataCmp extends NodeComponent { + + @Resource + private SequenceUtil sequenceUtil; + + @Resource + private BaseSampleMapper baseSampleMapper; + + @Resource + private BusinessSampleEntrustRegistrationMapper businessSampleEntrustRegistrationMapper; + + @Resource + private BusinessSampleEntrustDetailMapper businessSampleEntrustDetailMapper; + + @Resource + private BusinessSampleAssayResultMapper businessSampleAssayResultMapper; + + @Resource + private ConfigBaseSampleMapper configBaseSampleMapper; + + @Resource + private BusinessBaseSampleMapper businessBaseSampleMapper; + + @Resource + private ConfigSubSampleParentMapper configSubSampleParentMapper; + + @Resource + private BusinessSubParentSampleMapper businessSubParentSampleMapper; + + @Resource + private ConfigSubSampleMapper configSubSampleMapper; + + @Resource + private BusinessSubSampleMapper businessSubSampleMapper; + + @Resource + private ConfigSampleFlowMapper configSampleFlowMapper; + + @Resource + private BusinessAssayReportDataMapper businessAssayReportDataMapper; + + @Resource + private ConfigSampleReportMapper configSampleReportMapper; + + @Override + public void process() throws Exception { + //获取样品委托上下文 + SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); + + //当前登录用户 + String loginRealname = sampleEntrustContext.getLoginRealname(); + + LocalDateTime currentDateTime = sampleEntrustContext.getCurrentDateTime(); + //样品委托登记 + BusinessSampleEntrustRegistrationDO sampleEntrustRegistration = sampleEntrustContext.getSampleEntrustRegistration(); + //扩展信息 + String sampleEntrustRegistrationExtInfo = sampleEntrustRegistration.getExternalInfomation(); + JSONObject sampleEntrustRegistrationJsonObject = new JSONObject(); + if (StringUtils.isNotBlank(sampleEntrustRegistrationExtInfo)) { + sampleEntrustRegistrationJsonObject = JSON.parseObject(sampleEntrustRegistrationExtInfo); + } + + //样品委托登记明细 + List sampleEntrustDetailList = sampleEntrustContext.getSampleEntrustDetailList(); + //样品来样品位 + List sampleAssayResultList = sampleEntrustContext.getSampleAssayResultList(); + + List baseSampleIdList = sampleEntrustDetailList.stream().map(m -> m.getBaseSampleId()).distinct().collect(Collectors.toList()); + + //样品大类列表 + List baseSampleList = sampleEntrustContext.getBaseSampleList(); + + //主样配置 + List configBaseSampleList = configBaseSampleMapper.selectByBaseSampleIds(baseSampleIdList); + List configBaseSampleIdList = configBaseSampleList.stream().map(m -> m.getId()).collect(Collectors.toList()); + //分样配置 + List configSubSampleParentList = configSubSampleParentMapper.selectByBaseSampleIds(baseSampleIdList); + //子样配置 + List configSubSampleList = configSubSampleMapper.selectByBaseSampleIds(baseSampleIdList); + + //主样报表配置 + List configSampleReportList = configSampleReportMapper.selectByConfigBaseSampleIds(configBaseSampleIdList); + + //样品流程配置 + List configSampleFlowKeyList = new ArrayList<>(); + List configBaseSampleFlowKeyList = configBaseSampleList.stream().map(m -> m.getFlowKey()).distinct().collect(Collectors.toList()); + configSampleFlowKeyList.addAll(configBaseSampleFlowKeyList); + List configSubSampleFlowKeyList = configSubSampleList.stream().map(m -> m.getFlowKey()).distinct().collect(Collectors.toList()); + configSampleFlowKeyList.addAll(configSubSampleFlowKeyList); + List configSampleFlowList = configSampleFlowMapper.selectLatestConfigSampleFlowListByKeys(configSampleFlowKeyList); + + //主样 + List businessBaseSampleDOList = new ArrayList<>(); + //分样 + List businessSubParentSampleDOList = new ArrayList<>(); + //分样子样 + List businessSubSampleDOList = new ArrayList<>(); + //分析报表数据 + List businessAssayReportDataDOList = new ArrayList<>(); + + //子样流转信息列表 + List sampleFlowInfoList = new ArrayList<>(); + + //委托明细排序 + List sampleEntrustDetailListSort = sampleEntrustDetailList.stream().sorted(Comparator.comparingInt(BusinessSampleEntrustDetailDO::getSort)).collect(Collectors.toList()); + //主样 + BusinessBaseSampleDO businessBaseSampleDO = null; + for (BusinessSampleEntrustDetailDO businessSampleEntrustDetailDO : sampleEntrustDetailListSort) {//委托样品明细 + + //样品大类 + BaseSampleDO baseSampleDO = baseSampleList.stream().filter(f -> f.getId().equals(businessSampleEntrustDetailDO.getBaseSampleId())).findFirst().orElse(null); + + //获取到主样配置 + ConfigBaseSampleDO currConfigBaseSample = configBaseSampleList.stream().filter(f -> businessSampleEntrustDetailDO.getBaseSampleId().equals(f.getBaseSampleId())).findFirst().orElse(null); + //获取分样配置列表 + List currConfigSubSampleParentList = configSubSampleParentList.stream().filter(f -> f.getConfigBaseSampleId().equals(currConfigBaseSample.getId())).collect(Collectors.toList()); + + + //主样流程 + ConfigSampleFlowDO configSampleFlowBase = configSampleFlowList.stream().filter(f -> f.getKey().equals(currConfigBaseSample.getFlowKey())).findFirst().orElse(null); + //样品流程定义 + SampleFlowDefinition sampleFlowDefinitionBase = JSON.parseObject(configSampleFlowBase.getContent(), SampleFlowDefinition.class); + List flowNodeBaseList = sampleFlowDefinitionBase.getFlowNodeList().stream().sorted(Comparator.comparing(SampleFlowNode::getSort)).collect(Collectors.toList()); + SampleFlowNode sampleFlowNodeBase = flowNodeBaseList.get(0); + + //=======================主样========================== + businessBaseSampleDO = new BusinessBaseSampleDO(); + businessBaseSampleDO.setId(IdWorker.getId()); + //设置配置id + businessBaseSampleDO.setConfigBaseSampleId(currConfigBaseSample.getId()); + //样品名称为委托登记来的样品名称 + businessBaseSampleDO.setSampleName(businessSampleEntrustDetailDO.getSampleName()); + //样品大类名称 + businessBaseSampleDO.setBaseSampleName(baseSampleDO.getName()); + //样品类型字典与委托一致 + businessBaseSampleDO.setDictionaryBusinessId(businessSampleEntrustDetailDO.getSampleTypeDictionaryBusinessId()); + //生成样品编号 + String sampleCode = businessSampleEntrustDetailDO.getEntrustSampleCode();//默认取来样编号 + if (StringUtils.isNotBlank(businessSampleEntrustDetailDO.getSampleCode())) {//如果已经提前生成, + sampleCode = businessSampleEntrustDetailDO.getSampleCode(); + } else if (StringUtils.isNotBlank(currConfigBaseSample.getCodeRule())) {//如果配置了样品编号生成规则,则以生成规则为准 + sampleCode = sequenceUtil.genCode(currConfigBaseSample.getCodeRule()); + } + businessBaseSampleDO.setSampleCode(sampleCode); + //样品生成时间为当前时间 + businessBaseSampleDO.setSampleTime(currentDateTime); + //样品状态正常 + businessBaseSampleDO.setSampleStatus(QmsCommonConstant.NORMAL); + //主样流程配置id + businessBaseSampleDO.setConfigSampleFlowId(configSampleFlowBase.getId()); + //主样当前流程节点key + businessBaseSampleDO.setSampleFlowNodeKey(sampleFlowNodeBase.getNodeKey()); + //主样当前流程节点时间 + businessBaseSampleDO.setSampleFlowNodeTime(currentDateTime); + //操作人 + businessBaseSampleDO.setOperator(loginRealname); + + //添加到列表 + businessBaseSampleDOList.add(businessBaseSampleDO); + + //=======================报表========================== + List configSampleReportDOList = configSampleReportList.stream().filter(f -> f.getConfigBaseSampleId().equals(currConfigBaseSample.getId())).collect(Collectors.toList()); + for (ConfigSampleReportDO configSampleReport : configSampleReportDOList) { + BusinessAssayReportDataDO businessAssayReportDataDO = new BusinessAssayReportDataDO(); + businessAssayReportDataDO.setBusinessBaseSampleId(businessBaseSampleDO.getId()); + businessAssayReportDataDO.setDataSource(configSampleReport.getDataSource()); + businessAssayReportDataDO.setConfigReportTypeId(configSampleReport.getConfigReportTypeId()); + businessAssayReportDataDO.setConfigSampleReportId(configSampleReport.getId()); + businessAssayReportDataDO.setSampleCode(businessBaseSampleDO.getSampleCode()); + + businessAssayReportDataDOList.add(businessAssayReportDataDO); + } + //=====================委托明细====================== + //设置主样id + businessSampleEntrustDetailDO.setBusinessBaseSampleId(businessBaseSampleDO.getId()); + //设置主样编号 + businessSampleEntrustDetailDO.setSampleCode(businessBaseSampleDO.getSampleCode()); + + //=======================分样========================= + for (ConfigSubSampleParentDO currConfigSubSampleParent : currConfigSubSampleParentList) { + BusinessSubParentSampleDO businessSubParentSampleDO = new BusinessSubParentSampleDO(); + businessSubParentSampleDO.setId(IdWorker.getId()); + businessSubParentSampleDO.setDictionaryBusinessId(currConfigSubSampleParent.getDictionaryBusinessId()); + businessSubParentSampleDO.setBusinessBaseSampleId(businessBaseSampleDO.getId()); + businessSubParentSampleDO.setConfigSubSampleParentId(currConfigSubSampleParent.getId()); + businessSubParentSampleDO.setSampleName(businessBaseSampleDO.getSampleName()); + businessSubParentSampleDO.setSampleCode(businessBaseSampleDO.getSampleCode()); + businessSubParentSampleDO.setSubSampleCode(businessBaseSampleDO.getSampleCode()); + businessSubParentSampleDO.setSampleStatus(QmsCommonConstant.NORMAL); + businessSubParentSampleDOList.add(businessSubParentSampleDO); + + + //=======================子样======================= + //获取子样配置列表 + List currConfigSubSampleList = configSubSampleList.stream().filter(f -> f.getConfigBaseSampleId().equals(currConfigBaseSample.getId())).collect(Collectors.toList()); + for (ConfigSubSampleDO currConfigSubSample : currConfigSubSampleList) { + + ConfigSampleFlowDO configSampleFlowSub = configSampleFlowList.stream().filter(f -> f.getKey().equals(currConfigSubSample.getFlowKey())).findFirst().orElse(null); + //样品流程定义 + SampleFlowDefinition sampleFlowDefinitionSub = JSON.parseObject(configSampleFlowSub.getContent(), SampleFlowDefinition.class); + List flowNodeSubList = sampleFlowDefinitionSub.getFlowNodeList().stream().sorted(Comparator.comparing(SampleFlowNode::getSort)).collect(Collectors.toList()); + SampleFlowNode sampleFlowNodeSub = flowNodeSubList.get(0); + + BusinessSubSampleDO businessSubSampleDO = new BusinessSubSampleDO(); + businessSubSampleDO.setId(IdWorker.getId()); + businessSubSampleDO.setBusinessBaseSampleId(businessBaseSampleDO.getId()); + businessSubSampleDO.setBusinessSubParentSampleId(businessSubParentSampleDO.getId()); + businessSubSampleDO.setConfigSubSampleId(currConfigSubSample.getId()); + businessSubSampleDO.setDictionaryBusinessId(currConfigSubSample.getDictionaryBusinessId()); + businessSubSampleDO.setGroupId(businessSampleEntrustDetailDO.getEntrustGroupCode()); + businessSubSampleDO.setBatchCode(businessSampleEntrustDetailDO.getEntrustBatchCode()); + businessSubSampleDO.setDualFlag(businessSampleEntrustDetailDO.getEntrustDualFlag()); + businessSubSampleDO.setSampleName(businessBaseSampleDO.getSampleName()); + businessSubSampleDO.setSampleCode(businessBaseSampleDO.getSampleCode()); + businessSubSampleDO.setSampleAssayCode(businessBaseSampleDO.getSampleCode()); + businessSubSampleDO.setSampleReturnCode(businessBaseSampleDO.getSampleCode()); + businessSubSampleDO.setIsWeighing(businessSampleEntrustDetailDO.getIsWeighing()); + businessSubSampleDO.setSampleStatus(QmsCommonConstant.NORMAL); + businessSubSampleDO.setConfigSampleFlowId(configSampleFlowSub.getId()); + businessSubSampleDO.setSampleFlowNodeKey(sampleFlowNodeSub.getNodeKey()); + businessSubSampleDO.setSampleFlowNodeTime(currentDateTime); + businessSubSampleDO.setNextSampleFlowNode(sampleFlowNodeSub.getNextFlowNodeName()); + businessSubSampleDO.setIsMaterialAssayStandard(sampleEntrustRegistration.getIsMaterialAssayStandard()); + businessSubSampleDO.setAssayLevel(businessSampleEntrustDetailDO.getAssayLevel()); + businessSubSampleDO.setRemark(sampleEntrustRegistrationJsonObject.getString("sampleCategory"));//子样备注设置样品类型 + + businessSubSampleDOList.add(businessSubSampleDO); + + + //子样样品流转信息 + SampleFlowInfo sampleFlowInfo = new SampleFlowInfo(); + sampleFlowInfo.setId(businessSubSampleDO.getId()); + sampleFlowInfo.setSampleName(businessSubSampleDO.getSampleName()); + sampleFlowInfo.setSampleCode(businessSubSampleDO.getSampleCode()); + sampleFlowInfo.setIsWeighing(businessSubSampleDO.getIsWeighing()); + sampleFlowInfo.setSampleWeight(businessSubSampleDO.getLastSampleWeight()); + + sampleFlowInfoList.add(sampleFlowInfo); + } + + } + + } + + sampleEntrustRegistration.setRegistrationStatus(QmsCommonConstant.SUBMITTED); + sampleEntrustRegistration.setAssayStatus(QmsCommonConstant.UNCHECKED); + sampleEntrustRegistration.setDataStatus(QmsCommonConstant.UNRETURNED); + + sampleEntrustContext.setSampleFlowInfoList(sampleFlowInfoList); + + businessSampleEntrustRegistrationMapper.updateById(sampleEntrustRegistration); + if (CollUtil.isNotEmpty(sampleEntrustDetailList)) { + businessSampleEntrustDetailMapper.updateBatch(sampleEntrustDetailList); + } + if (CollUtil.isNotEmpty(sampleAssayResultList)) { + businessSampleAssayResultMapper.updateBatch(sampleAssayResultList); + } + if (CollUtil.isNotEmpty(businessBaseSampleDOList)) { + businessBaseSampleMapper.insertBatch(businessBaseSampleDOList); + } + if (CollUtil.isNotEmpty(businessSubParentSampleDOList)) { + businessSubParentSampleMapper.insertBatch(businessSubParentSampleDOList); + } + if (CollUtil.isNotEmpty(businessSubSampleDOList)) { + businessSubSampleMapper.insertBatch(businessSubSampleDOList); + } + if (CollUtil.isNotEmpty(businessAssayReportDataDOList)) { + businessAssayReportDataMapper.insertBatch(businessAssayReportDataDOList); + } + } + + @Override + public boolean isAccess() { + SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); + return !sampleEntrustContext.getIsUseMaterialAssayStandard();//非标准的执行 + } + + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUpdateDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUpdateDataCmp.java index b489f892..f1bb57f4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUpdateDataCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustUpdateDataCmp.java @@ -29,7 +29,6 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegis import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigEntrustSourceDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDetailDO; import com.zt.plat.module.qms.enums.QmsCommonConstant; import jakarta.annotation.Resource; @@ -69,7 +68,7 @@ public class SampleEntrustUpdateDataCmp extends NodeComponent { } //获取委托来源配置 - ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSourceById(sampleEntrustRegistration.getConfigEntrustSourceId()); + ConfigEntrustSourceDO configEntrustSource = sampleEntrustContext.getConfigEntrustSource(); if (StringUtils.isNotBlank(configEntrustSource.getCodeField()) && extJsonObject != null) {//如果委托单号来源于字段,则重新获取更新下 String entrustNumber = extJsonObject.getString(configEntrustSource.getCodeField()); sampleEntrustRegistration.setEntrustNumber(entrustNumber); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualTypeCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualTypeCmp.java index dc31836f..651e7ab7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualTypeCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualTypeCmp.java @@ -194,72 +194,7 @@ public class SampleTaskAssignManualTypeCmp extends NodeComponent { businessAssayTaskDetailList.add(businessAssayTaskDetailDO); } - - /** - - //根据分配 - BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectAssignInProgressByAssayUserAndAssignUser(dictionaryBusinessId, assignAssayUser.getRealName(), loginRealname); - if (businessAssayTaskDO == null) { - String taskNo = sequenceUtil.genCode(configAssayMethod.getCodeRule()); - - businessAssayTaskDO = new BusinessAssayTaskDO(); - businessAssayTaskDO.setId(IdWorker.getId()); - businessAssayTaskDO.setTaskNo(taskNo); -// businessAssayTaskDO.setTaskName(configAssayMethod.getName()); - businessAssayTaskDO.setTaskName(dictionaryBusinessDO.getName()); - businessAssayTaskDO.setAssayOperator(assignAssayUser.getRealName()); - businessAssayTaskDO.setAssayOperatorId(assignAssayUser.getUserId()); - businessAssayTaskDO.setConfigAssayMethodId(configAssayMethod.getId());//以第一个样品的分析方法做为主的分析方法id,后续代码改动量少 - businessAssayTaskDO.setDictionaryBusinessId(configAssayMethod.getDictionaryBusinessId()); - businessAssayTaskDO.setDictionaryBusinessKey(configAssayMethod.getDictionaryBusinessKey()); - businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); - businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); - businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); - businessAssayTaskDO.setIsIngredients(configAssayMethod.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); - } - - BusinessAssayTaskDetailDO businessAssayTaskDetailDO = null; - List valList = businessAssayTaskDataList.stream().filter(f -> currConfigAssayMethodIdList.contains(f.getConfigAssayMethodId())).collect(Collectors.toList()); - - int sort = 1; - for (BusinessAssayTaskDataDO val : valList) { - val.setIsAssignTasked(QmsCommonConstant.YES); - val.setAssignTaskTime(currentDateTime); - val.setAssayOperator(assignAssayUser.getRealName()); - val.setAssayOperatorId(assignAssayUser.getUserId()); - val.setBusinessAssayTaskId(businessAssayTaskDO.getId()); - - BusinessSubSampleDO businessSubSampleDO = sampleTaskAssignContext.getBusinessSubSampleById(val.getBusinessSubSampleId()); - - businessAssayTaskDetailDO = new BusinessAssayTaskDetailDO(); - businessAssayTaskDetailDO.setBusinessAssayTaskDataId(val.getId()); - businessAssayTaskDetailDO.setBusinessAssayTaskId(businessAssayTaskDO.getId()); - businessAssayTaskDetailDO.setTaskNo(businessAssayTaskDO.getTaskNo()); - businessAssayTaskDetailDO.setSampleId(val.getBusinessSubSampleId()); - businessAssayTaskDetailDO.setSampleCode(businessSubSampleDO.getSampleAssayCode()); - businessAssayTaskDetailDO.setSampleName(businessSubSampleDO.getSampleName()); - businessAssayTaskDetailDO.setDataSourceType(QmsCommonConstant.NORMAL); - businessAssayTaskDetailDO.setSortNo(sort); - sort++; - - - businessAssayTaskDetailList.add(businessAssayTaskDetailDO); - } - **/ - + } // 【可选优化】重新整理明细的排序号 (SortNo),确保每个任务单内的明细是 1, 2, 3... // 因为上面的循环是交叉写入的,可能导致同一个 taskId 的 sortNo 不连续 (如 1, 1, 2, 2...) 如果多个用户交替 diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectMethodCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectMethodCmp.java new file mode 100644 index 00000000..f98fd4f6 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectMethodCmp.java @@ -0,0 +1,21 @@ +package com.zt.plat.module.qms.business.bus.liteflow.sample.taskassign; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignTypeEnum; + +@LiteflowComponent(id = "sampleTaskAssignProjectMethodCmp", name = "手动分配(按检测项目已指定方法分配)") +public class SampleTaskAssignProjectMethodCmp extends NodeComponent { + + @Override + public void process() throws Exception { + + } + + @Override + public boolean isAccess() { + SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + return sampleTaskAssignContext.getSampleTaskAssignType().equals(SampleTaskAssignTypeEnum.PROJECT_METHOD); + } +} 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 new file mode 100644 index 00000000..bf80aed5 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignProjectNoMethodCmp.java @@ -0,0 +1,22 @@ +package com.zt.plat.module.qms.business.bus.liteflow.sample.taskassign; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignTypeEnum; + +@LiteflowComponent(id = "sampleTaskAssignProjectNoMethodCmp", name = "手动分配(按检测项目未指定方法分配)") +public class SampleTaskAssignProjectNoMethodCmp extends NodeComponent { + + @Override + public void process() throws Exception { + + } + + + @Override + public boolean isAccess() { + SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + return sampleTaskAssignContext.getSampleTaskAssignType().equals(SampleTaskAssignTypeEnum.PROJECT_NO_METHOD); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleEntrustContext.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleEntrustContext.java index 9ffb1123..e22ff968 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleEntrustContext.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleEntrustContext.java @@ -10,13 +10,14 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleAssayRes import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustProjectDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowInfo; import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; import com.zt.plat.module.qms.business.config.dal.dataobject.BaseSampleDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigEntrustSourceDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDO; -import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardDetailDO; import com.zt.plat.module.qms.business.config.dal.dataobject.MaterialAssayStandardMethodDO; +import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; + import lombok.Data; import lombok.experimental.Accessors; @@ -45,6 +46,9 @@ public class SampleEntrustContext { /** 样品大类 **/ List baseSampleList; + /** 是否使用物料分析标准 **/ + private Boolean isUseMaterialAssayStandard = true; + public BaseSampleDO getBaseSampleById(Long id) { BaseSampleDO baseSampleDO = null; if (CollUtil.isNotEmpty(this.baseSampleList)) { @@ -53,25 +57,25 @@ public class SampleEntrustContext { return baseSampleDO; } - /** 委托来源配置列表 **/ - private List configEntrustSourceList; + /** 委托来源 **/ + private ConfigEntrustSourceDO configEntrustSource; + + /** 检测项目字典列表 **/ + private List dictionaryProjectList; /** - * 根据id获取委托来源配置 - * @param id 委托来源配置id + * 根据id获取检测项目字典 + * @param id * @return */ - public ConfigEntrustSourceDO getConfigEntrustSourceById(Long id) { - ConfigEntrustSourceDO configEntrustSource = null; - if (CollUtil.isNotEmpty(this.configEntrustSourceList)) { - configEntrustSource = this.configEntrustSourceList.stream().filter(f -> id.equals(f.getId())).findFirst().orElse(null); + public DictionaryProjectDO getDictionaryProjectById(Long id) { + DictionaryProjectDO dictionaryProjectDO = null; + if (CollUtil.isNotEmpty(this.dictionaryProjectList)) { + dictionaryProjectDO = this.dictionaryProjectList.stream().filter(f -> id.equals(f.getId())).findFirst().orElse(null); } - return configEntrustSource; + return dictionaryProjectDO; } - /** 物料检测标准列表 **/ - private List materialAssayStandardList; - /** 物料检测标准检测项目列表 **/ private List materialAssayStandardDetailList; @@ -104,7 +108,6 @@ public class SampleEntrustContext { return materialAssayStandardMethodList; } - /** 委托登记单 **/ private BusinessSampleEntrustRegistrationDO sampleEntrustRegistration; @@ -114,6 +117,9 @@ public class SampleEntrustContext { /** 委托登记样品检测项目明细 **/ private List sampleEntrustProjectList; + /** 委托登记样品检测项目明细(非标准) **/ + private List sampleEntrustUnStandardProjectList; + /** 样品委托来样品位 **/ private List sampleAssayResultList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignTypeEnum.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignTypeEnum.java index 5a1ac95c..6151c678 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignTypeEnum.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignTypeEnum.java @@ -9,6 +9,10 @@ public enum SampleTaskAssignTypeEnum { //手动指派 MANUAL, //手动分析方法类型 - MANUAL_TYPE + MANUAL_TYPE, + //按检测项目已有方法指派 + PROJECT_METHOD, + //按检测项目未配置方法指派 + PROJECT_NO_METHOD, } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectService.java index 979a0be2..7ca70359 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectService.java @@ -59,4 +59,24 @@ public interface BusinessSampleEntrustUnStandardProjectService { */ PageResult getBusinessSampleEntrustUnStandardProjectPage(BusinessSampleEntrustUnStandardProjectPageReqVO pageReqVO); + /** + * 获得委检登记样品检测项目表(无标准)列表 + * @param reqVO + * @return + */ + List getBusinessSampleEntrustUnStandardProjectList(BusinessSampleEntrustUnStandardProjectPageReqVO reqVO); + + /** + * 根据主样id查询非标准的检测项目列表 + * @param businessBaseSampleId + * @return + */ + List listByBusinessBaseSampleId(Long businessBaseSampleId); + + /** + * 保存分析部门 + * @param reqVO + */ + void saveAssayDept(BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO reqVO); + } \ 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/service/BusinessSampleEntrustUnStandardProjectServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectServiceImpl.java index f4550540..26cb18ca 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/BusinessSampleEntrustUnStandardProjectServiceImpl.java @@ -7,12 +7,16 @@ import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; + import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageParam; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleAnalysisGroupDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustUnStandardProjectMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAnalysisGroupMapper; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; @@ -30,6 +34,9 @@ public class BusinessSampleEntrustUnStandardProjectServiceImpl implements Busine @Resource private BusinessSampleEntrustUnStandardProjectMapper businessSampleEntrustUnStandardProjectMapper; + + @Resource + private BusinessSubSampleAnalysisGroupMapper businessSubSampleAnalysisGroupMapper; @Override public BusinessSampleEntrustUnStandardProjectRespVO createBusinessSampleEntrustUnStandardProject(BusinessSampleEntrustUnStandardProjectSaveReqVO createReqVO) { @@ -88,4 +95,74 @@ public class BusinessSampleEntrustUnStandardProjectServiceImpl implements Busine return businessSampleEntrustUnStandardProjectMapper.selectPage(pageReqVO); } + @Override + public List getBusinessSampleEntrustUnStandardProjectList( + BusinessSampleEntrustUnStandardProjectPageReqVO reqVO) { + return businessSampleEntrustUnStandardProjectMapper.selectList(reqVO); + } + + @Override + public List listByBusinessBaseSampleId(Long businessBaseSampleId) { + return businessSampleEntrustUnStandardProjectMapper.selectByBusinessBaseSampleId(businessBaseSampleId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveAssayDept(BusinessSampleEntrustUnStandardProjectAssayDeptSaveReqVO reqVO) { + List reqList = reqVO.getReqList(); + BusinessSubSampleSaveReqVO subSampleReqVO = reqVO.getSubSampleReqVO(); + + List saveList = new ArrayList<>(); + List updateList = new ArrayList<>(); + List saveAnalysisGroupDOList = new ArrayList<>(); + + //查询旧的分析部门 + List oldAnalysisGroupDOList = businessSubSampleAnalysisGroupMapper.selectByBusinessSubSampleId(subSampleReqVO.getId()); + //过滤出分析部门 + HashMap assayDepartmentMap = reqList.stream().collect(Collectors.toMap( + BusinessSampleEntrustUnStandardProjectSaveReqVO::getAssayDepartmentId, + BusinessSampleEntrustUnStandardProjectSaveReqVO::getAssayDepartmentName, + (first, second) -> first, // 保留第一个,丢弃后面的 + HashMap::new)); + for (Map.Entry entry : assayDepartmentMap.entrySet()) { + Long assayDepartmentId = entry.getKey(); + String assayDepartmentName = entry.getValue(); + + BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO = new BusinessSubSampleAnalysisGroupDO(); + + businessSubSampleAnalysisGroupDO.setBusinessBaseSampleId(subSampleReqVO.getBusinessBaseSampleId()); + businessSubSampleAnalysisGroupDO.setBusinessSubParentSampleId(subSampleReqVO.getBusinessSubParentSampleId()); + businessSubSampleAnalysisGroupDO.setBusinessSubSampleId(subSampleReqVO.getId()); + businessSubSampleAnalysisGroupDO.setAssayDepartmentId(assayDepartmentId); + businessSubSampleAnalysisGroupDO.setAssayDepartmentName(assayDepartmentName); + businessSubSampleAnalysisGroupDO.setSampleStatus("待收样"); + + + saveAnalysisGroupDOList.add(businessSubSampleAnalysisGroupDO); + } + + for (BusinessSampleEntrustUnStandardProjectSaveReqVO req : reqList) { + req.setBusinessSubSampleId(subSampleReqVO.getId()); + if (req.getId() == null) { + saveList.add(BeanUtils.toBean(req, BusinessSampleEntrustUnStandardProjectDO.class)); + } else { + updateList.add(BeanUtils.toBean(req, BusinessSampleEntrustUnStandardProjectDO.class)); + } + } + + if (CollUtil.isNotEmpty(saveList)) { + businessSampleEntrustUnStandardProjectMapper.insertBatch(saveList); + } + if (CollUtil.isNotEmpty(updateList)) { + businessSampleEntrustUnStandardProjectMapper.updateBatch(updateList); + } + if (CollUtil.isNotEmpty(saveAnalysisGroupDOList)) { + businessSubSampleAnalysisGroupMapper.insertBatch(saveAnalysisGroupDOList); + } + if (CollUtil.isNotEmpty(oldAnalysisGroupDOList)) { + List oldAnalysisGroupDOIdList = oldAnalysisGroupDOList.stream().map(m -> m.getId()).collect(Collectors.toList()); + businessSubSampleAnalysisGroupMapper.deleteByIds(oldAnalysisGroupDOIdList); + } + } + } \ 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/service/SampleEntrustServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleEntrustServiceImpl.java index a042a9c7..c72fa8b7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleEntrustServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleEntrustServiceImpl.java @@ -22,7 +22,6 @@ import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.exception.ServiceException; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; import com.zt.plat.framework.tenant.core.context.TenantContextHolder; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustDetailExtendRespVO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessSampleEntrustProjectExtendRespVO; @@ -32,15 +31,18 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleAssayRes import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustProjectDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustRegistrationDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSampleEntrustUnStandardProjectDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleAssayResultMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustDetailMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustProjectMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegistrationMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustUnStandardProjectMapper; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustDetail; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustDetailProject; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleEntrustParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; -import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; +import com.zt.plat.module.qms.enums.QmsCommonConstant; + import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; @@ -62,6 +64,9 @@ public class SampleEntrustServiceImpl implements SampleEntrustService { @Resource private BusinessSampleEntrustProjectMapper businessSampleEntrustProjectMapper; + @Resource + private BusinessSampleEntrustUnStandardProjectMapper businessSampleEntrustUnStandardProjectMapper; + @Resource private BusinessSampleAssayResultMapper businessSampleAssayResultMapper; @@ -235,22 +240,32 @@ public class SampleEntrustServiceImpl implements SampleEntrustService { sampleEntrustParam.setIsReceiveSample(req.getIsReceiveSample()); sampleEntrustParam.setIsSendSample(req.getIsSendSample()); - List sampleEntrustDetailDOList = businessSampleEntrustDetailMapper.selectList(new LambdaQueryWrapperX().eq(BusinessSampleEntrustDetailDO::getBusinessSampleEntrustRegistrationId, req.getId())); + List sampleEntrustDetailDOList = businessSampleEntrustDetailMapper.selectByBusinessSampleEntrustRegistrationId(req.getId()); if (CollUtil.isNotEmpty(sampleEntrustDetailDOList)) { List sampleEntrustDetailIdList = sampleEntrustDetailDOList.stream().map(m -> m.getId()).collect(Collectors.toList()); - List sampleEntrustProjectDOList = businessSampleEntrustProjectMapper.selectList(new LambdaQueryWrapperX().in(BusinessSampleEntrustProjectDO::getBusinessSampleEntrustDetailId, sampleEntrustDetailIdList)); + + List sampleEntrustProjectDOList = businessSampleEntrustProjectMapper.selectByBusinessSampleEntrustDetailIds(sampleEntrustDetailIdList); + + List sampleEntrustUnStandardProjectDOList = businessSampleEntrustUnStandardProjectMapper.selectByBusinessSampleEntrustDetailIds(sampleEntrustDetailIdList); List sampleEntrustDetailList = BeanUtils.toBean(sampleEntrustDetailDOList, SampleEntrustDetail.class); for (SampleEntrustDetail sampleEntrustDetail : sampleEntrustDetailList) { - List entrustProjectDOList = sampleEntrustProjectDOList.stream().filter(f -> f.getBusinessSampleEntrustDetailId().equals(sampleEntrustDetail.getId())).collect(Collectors.toList()); - List sampleEntrustDetailProjectList = BeanUtils.toBean(entrustProjectDOList, SampleEntrustDetailProject.class); + + List sampleEntrustDetailProjectList = null; + if (sampleEntrustRegistration.getIsMaterialAssayStandard().equals(QmsCommonConstant.YES)) { + List entrustProjectDOList = sampleEntrustProjectDOList.stream().filter(f -> f.getBusinessSampleEntrustDetailId().equals(sampleEntrustDetail.getId())).collect(Collectors.toList()); + sampleEntrustDetailProjectList = BeanUtils.toBean(entrustProjectDOList, SampleEntrustDetailProject.class); + } else { + List entrustProjectDOList = sampleEntrustUnStandardProjectDOList.stream().filter(f -> f.getBusinessSampleEntrustDetailId().equals(sampleEntrustDetail.getId())).collect(Collectors.toList()); + sampleEntrustDetailProjectList = BeanUtils.toBean(entrustProjectDOList, SampleEntrustDetailProject.class); + } + sampleEntrustDetail.setSampleEntrustDetailProjectList(sampleEntrustDetailProjectList); } sampleEntrustParam.setSampleEntrustDetailList(sampleEntrustDetailList); - //List sampleAssayResultDOList = businessSampleAssayResultMapper.selectList(new LambdaQueryWrapperX().in(BusinessSampleAssayResultDO::getBusinessSampleEntrustDetailId, sampleEntrustDetailIdList)); } LiteflowResponse response = flowExecutor.execute2Resp("sampleEntrustSubmitChain" + tenantId, sampleEntrustParam, SampleEntrustContext.class); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignService.java index 2cd50c44..174c51ce 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleTaskAssignService.java @@ -8,6 +8,8 @@ import com.zt.plat.module.qms.business.bus.controller.vo.*; 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.system.api.user.dto.AdminUserRespDTO; @@ -80,6 +82,20 @@ public interface SampleTaskAssignService { */ LiteflowResponse manualTypeAssign(SampleTaskAssignManualTypeParam param); + /** + * 按检测项目分配(已有方法) + * @param param + * @return + */ + LiteflowResponse projectMethodAssign(SampleTaskAssignProjectMethodParam param); + + /** + * 按检测项目分配(无方法) + * @param param + * @return + */ + LiteflowResponse projectNoMethodAssign(SampleTaskAssignProjectNoMethodParam param); + /** * 提交任务单 * @param id 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 217113fe..9b4a5d03 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 @@ -61,6 +61,8 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; 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.config.controller.vo.ConfigAssayMethodProjectExtendRespVO; @@ -1360,6 +1362,46 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService { return response; } + @Override + public LiteflowResponse projectMethodAssign(SampleTaskAssignProjectMethodParam param) { + if (CollUtil.isEmpty(param.getAssignAssayUserList())) { + throw new ServiceException(1_032_100_000, "无任务分配人员"); + } + if (param.getConfigAssayMethodId() == null) { + throw new ServiceException(1_032_100_000, "无分析方法"); + } + if (CollUtil.isEmpty(param.getAssayProjectDataIdList())) { + throw new ServiceException(1_032_100_000, "无分配的检测项目"); + } + Long tenantId = TenantContextHolder.getRequiredTenantId(); + LiteflowResponse response = flowExecutor.execute2Resp("sampleTaskAssignChain" + tenantId, param, SampleTaskAssignContext.class); + if (!response.isSuccess()){ + log.error("手动分配任务失败", response.getCause()); + throw new ServiceException(1_032_100_000, response.getCause().getMessage()); + } + return response; + } + + @Override + public LiteflowResponse projectNoMethodAssign(SampleTaskAssignProjectNoMethodParam param) { + if (CollUtil.isEmpty(param.getAssignAssayUserList())) { + throw new ServiceException(1_032_100_000, "无任务分配人员"); + } + if (param.getConfigAssayMethodId() == null) { + throw new ServiceException(1_032_100_000, "无分析方法"); + } + if (CollUtil.isEmpty(param.getSampleEntrustUnStandardProjectIdList())) { + throw new ServiceException(1_032_100_000, "无分配的检测项目"); + } + Long tenantId = TenantContextHolder.getRequiredTenantId(); + LiteflowResponse response = flowExecutor.execute2Resp("sampleTaskAssignChain" + tenantId, param, SampleTaskAssignContext.class); + if (!response.isSuccess()){ + log.error("手动分配任务失败", response.getCause()); + throw new ServiceException(1_032_100_000, response.getCause().getMessage()); + } + return response; + } + @Override @Transactional(rollbackFor = Exception.class) public void submitAssign(Long id) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/admin/ConfigAssayMethodController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/admin/ConfigAssayMethodController.java index 1d2d8d9f..6b73d958 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/admin/ConfigAssayMethodController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/admin/ConfigAssayMethodController.java @@ -4,6 +4,7 @@ import com.zt.plat.module.qms.business.config.controller.vo.*; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; @@ -34,6 +35,8 @@ import com.zt.plat.module.qms.business.config.controller.vo.*; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; import com.zt.plat.module.qms.business.config.service.ConfigAssayMethodService; +import cn.hutool.core.collection.CollUtil; + @Tag(name = "管理后台 - 检测方法配置") @RestController @RequestMapping("/qms/config-assay-method") @@ -91,8 +94,20 @@ public class ConfigAssayMethodController implements BusinessControllerMarker { @Operation(summary = "获得检测方法配置列表") //@PreAuthorize("@ss.hasPermission('qms:config-assay-method:query')") public CommonResult> getConfigAssayMethodList(@Valid ConfigAssayMethodReqVO reqVO) { + List list = new ArrayList<>(); List listResult = configAssayMethodService.getConfigAssayMethodList(reqVO); - return success(listResult); + if (StringUtils.isNotBlank(reqVO.getProjectSimpleNames())) { + List projectSimpoleNameList = Arrays.asList(reqVO.getProjectSimpleNames().split(",")); + for (ConfigAssayMethodExtendRespVO configAssayMethodExtendRespVO : listResult) { + if (CollUtil.isNotEmpty(configAssayMethodExtendRespVO.getProjectSimpleNameList()) && configAssayMethodExtendRespVO.getProjectSimpleNameList().containsAll(projectSimpoleNameList)) { + list.add(configAssayMethodExtendRespVO); + } + } + } else { + list.addAll(listResult); + } + + return success(list); } @GetMapping("/page") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodExtendRespVO.java index 1978d9b9..0fe91fc7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodExtendRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodExtendRespVO.java @@ -1,7 +1,11 @@ package com.zt.plat.module.qms.business.config.controller.vo; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import org.apache.commons.lang3.StringUtils; + import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodProjectDO; import lombok.Data; @@ -9,5 +13,15 @@ import lombok.Data; public class ConfigAssayMethodExtendRespVO extends ConfigAssayMethodRespVO { private List configAssayMethodProjectList; - + + private List projectSimpleNameList; + + public List getProjectSimpleNameList() { + this.projectSimpleNameList = new ArrayList<>(); + if (StringUtils.isNotBlank(this.getDescription())) { + List asList = Arrays.asList(this.getDescription().split("、")); + this.projectSimpleNameList.addAll(asList); + } + return this.projectSimpleNameList; + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodReqVO.java index f82c1f7a..020f7f93 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/controller/vo/ConfigAssayMethodReqVO.java @@ -80,4 +80,6 @@ public class ConfigAssayMethodReqVO { @Schema(description = "版本") private Integer version; + //=============扩展字段 + private String projectSimpleNames; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectMapper.java index 67585758..c631a7f4 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigAssayMethodProjectMapper.java @@ -85,5 +85,23 @@ public interface ConfigAssayMethodProjectMapper extends BaseMapperX selectByAssayDepartmentId(Long assayDepartmentId) { + return selectJoinList(ConfigAssayMethodProjectExtendRespVO.class, new MPJLambdaWrapperX() + .leftJoin(ConfigAssayMethodDO.class, ConfigAssayMethodDO::getId, ConfigAssayMethodProjectDO::getConfigAssayMethodId) + .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, ConfigAssayMethodProjectDO::getDictionaryProjectId) + .selectAll(ConfigAssayMethodProjectDO.class) + .selectAs(ConfigAssayMethodDO::getName, ConfigAssayMethodProjectExtendRespVO::getConfigAssayMethodName) + .selectAs(ConfigAssayMethodDO::getMethodNameCategory, ConfigAssayMethodProjectExtendRespVO::getConfigAssayMethodNameAndCategory) + .selectAs(DictionaryProjectDO::getKey, ConfigAssayMethodProjectExtendRespVO::getDictionaryProjectKey) + .selectAs(DictionaryProjectDO::getSimpleName, ConfigAssayMethodProjectExtendRespVO::getSimpleName) + .selectAs(DictionaryProjectDO::getShowName, ConfigAssayMethodProjectExtendRespVO::getShowName) + .eq(ConfigAssayMethodDO::getAssayDepartmentId, assayDepartmentId)); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigEntrustSourceMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigEntrustSourceMapper.java index 66e0002e..9e812141 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigEntrustSourceMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/config/dal/mapper/ConfigEntrustSourceMapper.java @@ -59,4 +59,10 @@ public interface ConfigEntrustSourceMapper extends BaseMapperX() + .eq(ConfigEntrustSourceDO::getKey, configEntrustSourceKey) + .eq(ConfigEntrustSourceDO::getEntrustType, entrustType)); + } + } \ 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/dic/controller/admin/DictionaryProjectController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/controller/admin/DictionaryProjectController.java index 5c948abe..38be617f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/controller/admin/DictionaryProjectController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/controller/admin/DictionaryProjectController.java @@ -91,6 +91,13 @@ public class DictionaryProjectController implements BusinessControllerMarker { return success(BeanUtils.toBean(pageResult, DictionaryProjectRespVO.class)); } + @GetMapping("/list") + @Operation(summary = "获得检测项目字典列表") + public CommonResult getDictionaryProjectList(DictionaryProjectPageReqVO reqVO) { + List list = dictionaryProjectService.getDictionaryProjectList(reqVO); + return success(BeanUtils.toBean(list, DictionaryProjectRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出检测项目字典 Excel") //@PreAuthorize("@ss.hasPermission('qms:dictionary-project:export')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/dal/mapper/DictionaryProjectMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/dal/mapper/DictionaryProjectMapper.java index 9f5621ae..ab5ae49b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/dal/mapper/DictionaryProjectMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/dal/mapper/DictionaryProjectMapper.java @@ -5,6 +5,9 @@ import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.qms.business.dic.controller.vo.DictionaryProjectPageReqVO; import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; + +import java.util.List; + import org.apache.ibatis.annotations.Mapper; /** @@ -27,5 +30,18 @@ public interface DictionaryProjectMapper extends BaseMapperX selectList(DictionaryProjectPageReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(DictionaryProjectDO::getCode, reqVO.getCode()) + .likeIfPresent(DictionaryProjectDO::getName, reqVO.getName()) + .likeIfPresent(DictionaryProjectDO::getSimpleName, reqVO.getSimpleName()) + .likeIfPresent(DictionaryProjectDO::getShowName, reqVO.getShowName()) + .eqIfPresent(DictionaryProjectDO::getKey, reqVO.getKey()) + .eqIfPresent(DictionaryProjectDO::getSystemDepartmentCode, reqVO.getSystemDepartmentCode()) + .betweenIfPresent(DictionaryProjectDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(DictionaryProjectDO::getRemark, reqVO.getRemark()) + .orderByAsc(DictionaryProjectDO::getId)); + } } \ 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/dic/service/DictionaryProjectService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectService.java index 8652b162..9bb8dc7b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectService.java @@ -61,4 +61,11 @@ public interface DictionaryProjectService { */ PageResult getDictionaryProjectPage(DictionaryProjectPageReqVO pageReqVO); + /** + * 获取检测项目字段列表 + * @param reqVO + * @return + */ + List getDictionaryProjectList(DictionaryProjectPageReqVO reqVO); + } \ 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/dic/service/DictionaryProjectServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectServiceImpl.java index 52f45a2d..99c94bd9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/dic/service/DictionaryProjectServiceImpl.java @@ -86,4 +86,9 @@ public class DictionaryProjectServiceImpl implements DictionaryProjectService { return dictionaryProjectMapper.selectPage(pageReqVO); } + @Override + public List getDictionaryProjectList(DictionaryProjectPageReqVO reqVO) { + return dictionaryProjectMapper.selectList(reqVO); + } + } \ 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/other/controller/vo/OtherDictionaryProjectExtendRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/controller/vo/OtherDictionaryProjectExtendRespVO.java new file mode 100644 index 00000000..74d55bc5 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/controller/vo/OtherDictionaryProjectExtendRespVO.java @@ -0,0 +1,21 @@ +package com.zt.plat.module.qms.business.other.controller.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 扩展 + */ +@Data +public class OtherDictionaryProjectExtendRespVO extends OtherDictionaryProjectRespVO { + + + @Schema(description = "检测项名称") + private String dictionaryProjectName; + + @Schema(description = "检测项简称") + private String dictionaryProjectSimpleName; + + @Schema(description = "检测项显示名") + private String dictionaryProjectShowName; +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/dal/mapper/OtherDictionaryProjectMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/dal/mapper/OtherDictionaryProjectMapper.java index 46a8cbd5..ba38812a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/dal/mapper/OtherDictionaryProjectMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/other/dal/mapper/OtherDictionaryProjectMapper.java @@ -4,6 +4,9 @@ import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.query.MPJLambdaWrapperX; +import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; +import com.zt.plat.module.qms.business.dic.dal.dataobject.DictionaryProjectDO; import com.zt.plat.module.qms.business.other.controller.vo.*; import com.zt.plat.module.qms.business.other.dal.dataobject.OtherDictionaryProjectDO; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; @@ -38,5 +41,16 @@ public interface OtherDictionaryProjectMapper extends BaseMapperX selectExtendByOtherSystemAndOtherIds(String otherSystem, List otherIdList) { + return selectJoinList(OtherDictionaryProjectExtendRespVO.class, new MPJLambdaWrapperX() + .leftJoin(DictionaryProjectDO.class, DictionaryProjectDO::getId, OtherDictionaryProjectDO::getDictionaryProjectId) + .selectAll(OtherDictionaryProjectDO.class) + .selectAs(DictionaryProjectDO::getName, OtherDictionaryProjectExtendRespVO::getDictionaryProjectName) + .selectAs(DictionaryProjectDO::getSimpleName, OtherDictionaryProjectExtendRespVO::getDictionaryProjectSimpleName) + .selectAs(DictionaryProjectDO::getShowName, OtherDictionaryProjectExtendRespVO::getDictionaryProjectShowName) + .eq(OtherDictionaryProjectDO::getOtherSystem, otherSystem) + .in(OtherDictionaryProjectDO::getOtherId, otherIdList)); + } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/ThirdpartyXntSampleEntrustServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/ThirdpartyXntSampleEntrustServiceImpl.java index 69df46e0..015f0acd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/ThirdpartyXntSampleEntrustServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/thirdpartyapi/service/ThirdpartyXntSampleEntrustServiceImpl.java @@ -18,6 +18,7 @@ import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.bus.service.SampleEntrustService; import com.zt.plat.module.qms.business.config.controller.vo.MaterialAssayStandardDetailRespVO; import com.zt.plat.module.qms.business.config.dal.mapper.MaterialAssayStandardDetailMapper; +import com.zt.plat.module.qms.business.other.controller.vo.OtherDictionaryProjectExtendRespVO; import com.zt.plat.module.qms.business.other.dal.dataobject.OtherBaseSampleDO; import com.zt.plat.module.qms.business.other.dal.dataobject.OtherDictionaryBusinessDO; import com.zt.plat.module.qms.business.other.dal.dataobject.OtherDictionaryProjectDO; @@ -139,6 +140,80 @@ public class ThirdpartyXntSampleEntrustServiceImpl implements ThirdpartyXntSampl sampleEntrustParam.setSampleSendDate(LocalDateTime.now()); + List limsObjectIdList = sampleEntrustReqVOList.stream().map(m -> m.getLimsObjectId()).distinct().collect(Collectors.toList()); + List otherBaseSampleDOList = otherBaseSampleMapper.selectByOtherSystemAndOtherIds(QmsCommonConstant.OTHER_SYSTEM_XNT_LIMS, limsObjectIdList); +// List baseSampleIdList = otherBaseSampleDOList.stream().map(m -> m.getBaseSampleId()).distinct().collect(Collectors.toList()); +// List materialAssayStandardDetailRespList = materialAssayStandardDetailMapper.selectByBaseSampleIds(baseSampleIdList); + //获取第三方送样人id列表 + List otherSendUserIdList = sampleEntrustReqVOList.stream().flatMap(m -> { + // 按逗号分割 + String[] parts = m.getEntrustSampleSenderIds().split(","); + + // 转为 Stream 并处理空格 (trim),同时过滤掉分割后可能产生的空字符串 + return Arrays.stream(parts) + .map(String::trim) // 去除每个ID前后的空格 + .filter(s -> !s.isEmpty()); // 过滤掉空项(例如 "101,,102" 中间的空项) + }).distinct().collect(Collectors.toList()); + + List otherSystemUserDOList = otherSystemUserMapper.selectByOtherSystemAndOtherIds(QmsCommonConstant.OTHER_SYSTEM_XNT_LIMS, otherSendUserIdList); + + List otherDictionaryBusinessDOList = otherDictionaryBusinessMapper.selectByOtherSystem(QmsCommonConstant.OTHER_SYSTEM_XNT_LIMS); + + List sampleEntrustDetailList = new ArrayList<>(); + for (ThirdpartyXntSampleEntrustReqVO thirdpartySampleEntrustReqVO : sampleEntrustReqVOList) { + OtherBaseSampleDO otherBaseSampleDO = otherBaseSampleDOList.stream().filter(f -> f.getOtherId().equals(thirdpartySampleEntrustReqVO.getLimsObjectId())).findFirst().orElse(null); + + SampleEntrustDetail sampleEntrustDetail = new SampleEntrustDetail(); + sampleEntrustDetail.setBaseSampleId(otherBaseSampleDO.getBaseSampleId()); + sampleEntrustDetail.setEntrustGroupCode(thirdpartySampleEntrustReqVO.getEntrustGroupCode()); + sampleEntrustDetail.setEntrustBatchCode(thirdpartySampleEntrustReqVO.getEntrustBatchCode()); + sampleEntrustDetail.setEntrustDualFlag(null); + sampleEntrustDetail.setEntrustSampleName(thirdpartySampleEntrustReqVO.getLimsObjectName()); + sampleEntrustDetail.setEntrustSampleCode(thirdpartySampleEntrustReqVO.getEntrustSampleCode()); + sampleEntrustDetail.setSampleName(thirdpartySampleEntrustReqVO.getLimsObjectName()); + sampleEntrustDetail.setSampleCode(thirdpartySampleEntrustReqVO.getEntrustSampleCode()); + if (StringUtils.isNotBlank(thirdpartySampleEntrustReqVO.getEntrustSampleQuantity())) { + sampleEntrustDetail.setIsWeighing(QmsCommonConstant.YES); + } else { + sampleEntrustDetail.setIsWeighing(QmsCommonConstant.NO); + } + sampleEntrustDetail.setEntrustSampleQuantity(thirdpartySampleEntrustReqVO.getEntrustSampleQuantity()); + sampleEntrustDetail.setEntrustSampleQuantityUnit(thirdpartySampleEntrustReqVO.getEntrustSampleQuantityUnit()); + + //处理分析等级 + if (StringUtils.isNotBlank(thirdpartySampleEntrustReqVO.getAssayLevel())) { + OtherDictionaryBusinessDO otherDictionaryBusinessDO = otherDictionaryBusinessDOList.stream().filter(f -> f.getOtherKey().equals(thirdpartySampleEntrustReqVO.getAssayLevel())).findFirst().orElse(null); + sampleEntrustDetail.setAssayLevel(Integer.parseInt(otherDictionaryBusinessDO.getDictionaryBusinessKey())); + } + + String entrustSampleSenderIds = thirdpartySampleEntrustReqVO.getEntrustSampleSenderIds(); + String sampleSender = otherSystemUserDOList.stream().filter(f -> Arrays.asList(entrustSampleSenderIds.split(",")).contains(f.getOtherId())).map(m -> m.getUserRealName()).collect(Collectors.joining(",")); + sampleEntrustParam.setSampleSender(sampleSender); + + String assayProjectIds = thirdpartySampleEntrustReqVO.getAssayProjectIds(); + List assayProjectIdList = Arrays.asList(assayProjectIds.split(",")); + List otherDictionaryProjectDOList = otherDictionaryProjectMapper.selectExtendByOtherSystemAndOtherIds(QmsCommonConstant.OTHER_SYSTEM_XNT_LIMS, assayProjectIdList); +// List dictionaryProjectIdList = otherDictionaryProjectDOList.stream().map(m -> m.getDictionaryProjectId()).collect(Collectors.toList()); +// List currMaterialAssayStandardDetailList = materialAssayStandardDetailRespList.stream().filter(f -> f.getBaseSampleId().equals(otherBaseSampleDO.getBaseSampleId()) && dictionaryProjectIdList.contains(f.getDictionaryProjectId())).collect(Collectors.toList()); +// String assayProjectShowName = currMaterialAssayStandardDetailList.stream().map(m -> m.getDictionaryProjectShowName()).collect(Collectors.joining(",")); + String assayProjectShowName = otherDictionaryProjectDOList.stream().map(m -> m.getDictionaryProjectShowName()).collect(Collectors.joining(",")); + sampleEntrustDetail.setAssayProject(assayProjectShowName); + List sampleEntrustDetailProjectList = new ArrayList<>(); + for (OtherDictionaryProjectExtendRespVO otherDictionaryProject : otherDictionaryProjectDOList) { + SampleEntrustDetailProject sampleEntrustDetailProject = new SampleEntrustDetailProject(); + sampleEntrustDetailProject.setDictionaryProjectId(otherDictionaryProject.getDictionaryProjectId()); + sampleEntrustDetailProject.setIsEnabled(QmsCommonConstant.YES); + sampleEntrustDetailProjectList.add(sampleEntrustDetailProject); + } + sampleEntrustDetail.setSampleEntrustDetailProjectList(sampleEntrustDetailProjectList); + + sampleEntrustDetailList.add(sampleEntrustDetail); + } + + + sampleEntrustParam.setSampleEntrustDetailList(sampleEntrustDetailList); + + return sampleEntrustParam; }