From 730b1812aa4b17a5d8be212e545a3171bdcff158 Mon Sep 17 00:00:00 2001 From: wxr Date: Mon, 20 Oct 2025 16:00:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=86=E9=85=8D=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=89=8B=E5=8A=A8=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/qms/enums/QmsCommonConstant.java | 20 +++ .../admin/SampleTaskAssignController.java | 6 + .../bus/controller/vo/ReportedDataSource.java | 8 +- .../dal/mapper/BusinessAssayTaskMapper.java | 16 ++ .../param/SampleTaskAssignManualParam.java | 20 +++ .../SampleEntrustGenSampleDataCmp.java | 16 +- .../entrust/SampleEntrustReceiveDataCmp.java | 5 + .../entrust/SampleEntrustSendDataCmp.java | 5 + .../SampleTaskAssignContextInitCmp.java | 9 ++ .../SampleTaskAssignDataSaveOrUpdateCmp.java | 12 +- .../taskassign/SampleTaskAssignManualCmp.java | 150 ++++++++++++++++++ .../taskassign/SampleTaskAssignMethodCmp.java | 76 ++++----- .../taskassign/SampleTaskAssignSampleCmp.java | 76 ++++----- .../liteflow/slot/SampleEntrustContext.java | 4 + .../slot/SampleTaskAssignContext.java | 10 +- .../slot/SampleTaskAssignTypeEnum.java | 18 +-- .../SampleAnalysisAuditServiceImpl.java | 24 +++ .../bus/service/SampleTaskAssignService.java | 9 +- .../service/SampleTaskAssignServiceImpl.java | 19 +++ 19 files changed, 405 insertions(+), 98 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignManualParam.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualCmp.java diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java index 2d7e203..3dc7c48 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/QmsCommonConstant.java @@ -104,4 +104,24 @@ public interface QmsCommonConstant { /** 检验委托 **/ String ENTRUST_INSPECTION = "entrust_inspection"; + /** 中心收样 **/ + String FLOW_NODE_CENTER_RECEIVE = "flw_zx_receive"; + + /** 中心送样 **/ + String FLOW_NODE_CENTER_SEND = "flw_zx_send"; + + /** 班组收样 **/ + String FLOW_NODE_TEAM_RECEIVE = "flw_bz_receive"; + + /** 样品编密 **/ + String FlOW_NODE_SAMPLE_ENCRYPT = "flw_ypbm"; + + /** 分析收样 **/ + String FLOW_NODE_ANALYSIS_RECEIVE = "flw_fx_receive"; + + /** 分析送样 **/ + String FLOW_NODE_ANALYSIS_SEND = "flw_fx_send"; + + /** 班组送样 **/ + String FLOW_NODE_TEAM_SEND = "flw_bz_send"; } 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 fafa3d4..76c48af 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 @@ -12,6 +12,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; import java.util.List; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignMethodParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSampleParam; import com.zt.plat.module.qms.business.bus.service.SampleTaskAssignService; @@ -49,6 +50,11 @@ public class SampleTaskAssignController { return success("成功"); } + @PostMapping("/manualAssign") + public CommonResult manualAssign(@RequestBody SampleTaskAssignManualParam param) { + sampleTaskAssignService.manualAssign(param); + return success("成功"); + } @PostMapping("/sampleAssign") public CommonResult sampleAssign(@RequestBody SampleTaskAssignSampleParam param) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/ReportedDataSource.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/ReportedDataSource.java index 04ad0d9..4d1a5f6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/ReportedDataSource.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/controller/vo/ReportedDataSource.java @@ -1,8 +1,8 @@ package com.zt.plat.module.qms.business.bus.controller.vo; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -23,7 +23,7 @@ public class ReportedDataSource implements Serializable { * 自动上报时间 */ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - private Date autoReportedTime; + private LocalDateTime autoReportedTime; /** 已完成数据来源明细 **/ private List details; @@ -34,7 +34,7 @@ public class ReportedDataSource implements Serializable { * @param reportedOper 上报人 * @param reportedTime 上报时间 */ - public void addDataSource(String sourceCode, String reportedOper, Date reportedTime) { + public void addDataSource(String sourceCode, String reportedOper, LocalDateTime reportedTime) { if (this.details == null) { this.details = new ArrayList<>(); this.details.add(new DataSourceDetail(sourceCode, reportedOper, reportedTime)); @@ -83,6 +83,6 @@ public class ReportedDataSource implements Serializable { * 上报时间 */ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") - private Date reportedTime; + private LocalDateTime reportedTime; } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java index 228f799..1695c08 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/dal/mapper/BusinessAssayTaskMapper.java @@ -7,6 +7,7 @@ import com.zt.plat.module.qms.business.bus.controller.vo.*; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; +import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import org.apache.ibatis.annotations.Mapper; @@ -58,5 +59,20 @@ public interface BusinessAssayTaskMapper extends BaseMapperX() + .eq(BusinessAssayTaskDO::getConfigAssayMethodId, configAssayMethodId) + .eq(BusinessAssayTaskDO::getAssayOperator, assignUser) + .eq(BusinessAssayTaskDO::getTaskAssignOperator, assignUser) + .eq(BusinessAssayTaskDO::getTaskAssignStatus, QmsCommonConstant.IN_PROGRESS)); + } } \ 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/liteflow/param/SampleTaskAssignManualParam.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignManualParam.java new file mode 100644 index 0000000..20adaa1 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/param/SampleTaskAssignManualParam.java @@ -0,0 +1,20 @@ +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 SampleTaskAssignManualParam { + + /** 分析人员 **/ + private AssignAssayUser assignAssayUser; + + /** 检测任务id列表 **/ + private List assayTaskDataIdList; +} 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 4a74def..aded939 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 @@ -3,7 +3,6 @@ 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.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -36,6 +35,7 @@ import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSampleEntrustRegis import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubParentSampleMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleAnalysisGroupMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.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.ConfigAssayMethodDO; @@ -186,6 +186,8 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { List businessAssayTaskDataDOList = new ArrayList<>(); List businessAssayProjectDataDOList = new ArrayList<>(); List businessAssayParameterDataDOList = new ArrayList<>(); + + List sampleFlowInfoList = new ArrayList<>(); List sampleEntrustDetailListSort = sampleEntrustDetailList.stream().sorted(Comparator.comparingInt(BusinessSampleEntrustDetailDO::getSort)).collect(Collectors.toList()); BusinessBaseSampleDO businessBaseSampleDO = null; @@ -307,6 +309,16 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { 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); + //子样对应的分析班组 BusinessSubSampleAnalysisGroupDO businessSubSampleAnalysisGroupDO = null; @@ -411,6 +423,8 @@ public class SampleEntrustGenSampleDataCmp extends NodeComponent { sampleEntrustRegistration.setRegistrationStatus(QmsCommonConstant.SUBMITTED); + sampleEntrustContext.setSampleFlowInfoList(sampleFlowInfoList); + businessSampleEntrustRegistrationMapper.updateById(sampleEntrustRegistration); if (CollUtil.isNotEmpty(sampleEntrustDetailList)) { businessSampleEntrustDetailMapper.updateBatch(sampleEntrustDetailList); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustReceiveDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustReceiveDataCmp.java index 3842dbd..01b04ba 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustReceiveDataCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustReceiveDataCmp.java @@ -5,6 +5,7 @@ import com.yomahub.liteflow.core.NodeComponent; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.bus.service.SampleFlowService; +import com.zt.plat.module.qms.enums.QmsCommonConstant; import jakarta.annotation.Resource; @@ -16,7 +17,11 @@ public class SampleEntrustReceiveDataCmp extends NodeComponent { @Override public void process() throws Exception { + SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); SampleFlowParam sampleFlowParam = new SampleFlowParam(); + sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_CENTER_RECEIVE); + sampleFlowParam.setSampleSourceType(2); + sampleFlowParam.setSampleFlowInfoList(sampleEntrustContext.getSampleFlowInfoList()); sampleFlowService.sampleFlow(sampleFlowParam); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustSendDataCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustSendDataCmp.java index b7add8e..f84bf50 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustSendDataCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/entrust/SampleEntrustSendDataCmp.java @@ -5,6 +5,7 @@ import com.yomahub.liteflow.core.NodeComponent; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleFlowParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleEntrustContext; import com.zt.plat.module.qms.business.bus.service.SampleFlowService; +import com.zt.plat.module.qms.enums.QmsCommonConstant; import jakarta.annotation.Resource; @@ -16,7 +17,11 @@ public class SampleEntrustSendDataCmp extends NodeComponent { @Override public void process() throws Exception { + SampleEntrustContext sampleEntrustContext = this.getContextBean(SampleEntrustContext.class); SampleFlowParam sampleFlowParam = new SampleFlowParam(); + sampleFlowParam.setCurrentSampleFlowKey(QmsCommonConstant.FLOW_NODE_CENTER_SEND); + sampleFlowParam.setSampleSourceType(2); + sampleFlowParam.setSampleFlowInfoList(sampleEntrustContext.getSampleFlowInfoList()); sampleFlowService.sampleFlow(sampleFlowParam); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java index 4aed82d..74ca652 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignContextInitCmp.java @@ -6,6 +6,7 @@ import com.yomahub.liteflow.core.NodeComponent; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.tenant.core.context.TenantContextHolder; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignMethodParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSampleParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; @@ -43,6 +44,14 @@ public class SampleTaskAssignContextInitCmp extends NodeComponent { sampleTaskAssignContext.setAssignAssayUser(sampleTaskAssignSampleParam.getAssignAssayUser()); sampleTaskAssignContext.setAssignSampleIdList(sampleTaskAssignSampleParam.getAssignSampleIdList()); } + + if (this.getRequestData() instanceof SampleTaskAssignManualParam) { + SampleTaskAssignManualParam sampleTaskAssignManualParam = this.getRequestData(); + sampleTaskAssignContext.setSampleTaskAssignType(SampleTaskAssignTypeEnum.MANUAL); + sampleTaskAssignContext.setAssignAssayUser(sampleTaskAssignManualParam.getAssignAssayUser()); + sampleTaskAssignContext.setAssayTaskDataIdList(sampleTaskAssignManualParam.getAssayTaskDataIdList()); + + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java index 2f774fc..32c800c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignDataSaveOrUpdateCmp.java @@ -31,14 +31,20 @@ public class SampleTaskAssignDataSaveOrUpdateCmp extends NodeComponent { public void process() throws Exception { SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); - List businessAssayTaskList = sampleTaskAssignContext.getBusinessAssayTaskList(); + List savebusinessAssayTaskList = sampleTaskAssignContext.getSaveBusinessAssayTaskList(); + + List updateBusinessAssayTaskList = sampleTaskAssignContext.getUpdateBusinessAssayTaskList(); List businessAssayTaskDetailList = sampleTaskAssignContext.getBusinessAssayTaskDetailList(); List businessAssayTaskDataList = sampleTaskAssignContext.getBusinessAssayTaskDataList(); - if (CollUtil.isNotEmpty(businessAssayTaskList)) { - this.businessAssayTaskMapper.insertBatch(businessAssayTaskList); + if (CollUtil.isNotEmpty(savebusinessAssayTaskList)) { + this.businessAssayTaskMapper.insertBatch(savebusinessAssayTaskList); + } + + if (CollUtil.isNotEmpty(updateBusinessAssayTaskList)) { + this.businessAssayTaskMapper.updateBatch(updateBusinessAssayTaskList); } if (CollUtil.isNotEmpty(businessAssayTaskDetailList)) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualCmp.java new file mode 100644 index 0000000..9943871 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignManualCmp.java @@ -0,0 +1,150 @@ +package com.zt.plat.module.qms.business.bus.liteflow.sample.taskassign; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +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.BusinessAssayTaskDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; +import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; +import com.zt.plat.module.qms.business.bus.liteflow.param.AssignAssayUser; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; +import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignTypeEnum; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigAssayMethodDO; +import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigReportTemplateDO; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigAssayMethodMapper; +import com.zt.plat.module.qms.business.config.dal.mapper.ConfigReportTemplateMapper; +import com.zt.plat.module.qms.core.code.SequenceUtil; +import com.zt.plat.module.qms.enums.QmsCommonConstant; + +import jakarta.annotation.Resource; + +@LiteflowComponent(id = "sampleTaskAssignManualCmp", name = "手动分配") +public class SampleTaskAssignManualCmp extends NodeComponent { + + @Resource + private SequenceUtil sequenceUtil; + + @Resource + private ConfigAssayMethodMapper configAssayMethodMapper; + + @Resource + private ConfigReportTemplateMapper configReportTemplateMapper; + + @Resource + private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; + + @Resource + private BusinessAssayTaskMapper businessAssayTaskMapper; + + @Resource + private BusinessSubSampleMapper businessSubSampleMapper; + + @Override + public void process() throws Exception { + SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + String loginRealname = sampleTaskAssignContext.getLoginRealname(); + LocalDateTime currentDateTime = sampleTaskAssignContext.getCurrentDateTime(); + AssignAssayUser assignAssayUser = sampleTaskAssignContext.getAssignAssayUser(); + List assayTaskDataIdList = sampleTaskAssignContext.getAssayTaskDataIdList(); + List businessAssayTaskDataList = businessAssayTaskDataMapper.selectByIds(assayTaskDataIdList); + List businessSubSampleIdList = businessAssayTaskDataList.stream().map(m -> m.getBusinessSubSampleId()).distinct().collect(Collectors.toList()); + List configAssayMethodIdList = businessAssayTaskDataList.stream().map(m -> m.getConfigAssayMethodId()).distinct().collect(Collectors.toList()); + List configAssayMethodList = configAssayMethodMapper.selectByIds(configAssayMethodIdList); + sampleTaskAssignContext.setConfigAssayMethodList(configAssayMethodList); + + //查询子样 + List businessSubSampleList = businessSubSampleMapper.selectByIds(businessSubSampleIdList); + sampleTaskAssignContext.setBusinessSubSampleList(businessSubSampleList); + + //保存任务分配单 + List saveBusinessAssayTaskList = new ArrayList<>(); + //更新任务分配单 + List updateBusinessAssayTaskList = new ArrayList<>(); + //任务分配单明细 + List businessAssayTaskDetailList = new ArrayList<>(); + + //按分析方法分组 + Map> groupBusinessAssayTaskDataListMap = businessAssayTaskDataList.stream().collect(Collectors.groupingBy(BusinessAssayTaskDataDO::getConfigAssayMethodId)); + for (Map.Entry> entry : groupBusinessAssayTaskDataListMap.entrySet()) { + long key = entry.getKey(); + ConfigAssayMethodDO configAssayMethod = sampleTaskAssignContext.getConfigAssayMethodById(key); + //查询报表模板 + ConfigReportTemplateDO configReportTemplate = configReportTemplateMapper.selectLatestConfigReportTemplateByKey(configAssayMethod.getConfigReportTemplateKey()); + + //根据分配 + BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectAssignInProgressByAssayUserAndAssignUser(configAssayMethod.getId(), 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.setAssayOperator(assignAssayUser.getRealName()); + businessAssayTaskDO.setConfigAssayMethodId(key); + businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); + businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); + businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); + + businessAssayTaskDO.setTaskAssignOperator(loginRealname); + 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 = entry.getValue(); + + int sort = 1; + for (BusinessAssayTaskDataDO val : valList) { + val.setIsAssignTasked(QmsCommonConstant.YES); + val.setAssignTaskTime(currentDateTime); + val.setAssayOperator(assignAssayUser.getRealName()); + val.setBusinessAssayTaskId(businessAssayTaskDO.getId()); + + BusinessSubSampleDO businessSubSampleDO = sampleTaskAssignContext.getBusinessSubSampleById(val.getBusinessSubSampleId()); + + businessAssayTaskDetailDO = new BusinessAssayTaskDetailDO(); + 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); + } + + } + + sampleTaskAssignContext.setSaveBusinessAssayTaskList(saveBusinessAssayTaskList); + sampleTaskAssignContext.setUpdateBusinessAssayTaskList(updateBusinessAssayTaskList); + sampleTaskAssignContext.setBusinessAssayTaskDataList(businessAssayTaskDataList); + sampleTaskAssignContext.setBusinessAssayTaskDetailList(businessAssayTaskDetailList); + } + + @Override + public boolean isAccess() { + SampleTaskAssignContext sampleTaskAssignContext = this.getContextBean(SampleTaskAssignContext.class); + return sampleTaskAssignContext.getSampleTaskAssignType().equals(SampleTaskAssignTypeEnum.MANUAL); + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignMethodCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignMethodCmp.java index bbac92e..5a4b230 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignMethodCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignMethodCmp.java @@ -16,6 +16,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataD import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; import com.zt.plat.module.qms.business.bus.liteflow.param.AssignAssayUser; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; @@ -28,18 +29,6 @@ import com.zt.plat.module.qms.core.code.SequenceUtil; import com.zt.plat.module.qms.enums.QmsCommonConstant; import jakarta.annotation.Resource; -/** - * SampleTaskAssignMethodCmp - *

- * 更新历史: - *

 版本         更新时间            更新者        更新内容
- * V1.0 2025年9月20日 wxr Add
- * Copyright (C) 云南志者竟成科技有限公司 - *

- * @author 王兴荣 - * @version V1.0 - * @since 2025年9月20日 - */ @LiteflowComponent(id = "sampleTaskAssignMethodCmp", name = "按分析方法分配") public class SampleTaskAssignMethodCmp extends NodeComponent { @@ -55,6 +44,9 @@ public class SampleTaskAssignMethodCmp extends NodeComponent { @Resource private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; + @Resource + private BusinessAssayTaskMapper businessAssayTaskMapper; + @Resource private BusinessSubSampleMapper businessSubSampleMapper; @@ -82,34 +74,45 @@ public class SampleTaskAssignMethodCmp extends NodeComponent { sampleTaskAssignContext.setBusinessSubSampleList(businessSubSampleList); List businessAssayTaskDataList = new ArrayList<>(); - - //任务分配单 - List businessAssayTaskList = new ArrayList<>(); + + //保存任务分配单 + List saveBusinessAssayTaskList = new ArrayList<>(); + //更新任务分配单 + List updateBusinessAssayTaskList = new ArrayList<>(); //任务分配单明细 List businessAssayTaskDetailList = new ArrayList<>(); //循环分析人员分配任务 for (AssignAssayUser assignAssayUser : assignAssayUserList) { Integer sampleNum = assignAssayUser.getSampleNum(); - - String taskNo = sequenceUtil.genCode(configAssayMethod.getCodeRule()); - BusinessAssayTaskDO businessAssayTaskDO = new BusinessAssayTaskDO(); - businessAssayTaskDO.setId(IdWorker.getId()); - businessAssayTaskDO.setTaskNo(taskNo); - businessAssayTaskDO.setTaskName(configAssayMethod.getName()); - businessAssayTaskDO.setConfigAssayMethodId(assignConfigAssayMethodId); - businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); - businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); - businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); - businessAssayTaskDO.setAssayOperator(assignAssayUser.getRealName()); + BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectAssignInProgressByAssayUserAndAssignUser(assignConfigAssayMethodId, 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.setConfigAssayMethodId(assignConfigAssayMethodId); + businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); + businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); + businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); + businessAssayTaskDO.setAssayOperator(assignAssayUser.getRealName()); + + businessAssayTaskDO.setTaskAssignOperator(loginRealname); + 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); + } - businessAssayTaskDO.setTaskAssignOperator(loginRealname); - businessAssayTaskDO.setTaskAssignTime(currentDateTime); - businessAssayTaskDO.setTaskAssignStatus(QmsCommonConstant.IN_PROGRESS); - businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.NOT_START); - businessAssayTaskDO.setFinishStatus(QmsCommonConstant.NOT_START); - businessAssayTaskDO.setFlowStatus(QmsCommonConstant.NOT_START); BusinessAssayTaskDetailDO businessAssayTaskDetailDO = null; for (int i = 0; i < sampleNum; i++) { @@ -123,11 +126,11 @@ public class SampleTaskAssignMethodCmp extends NodeComponent { businessAssayTaskDetailDO = new BusinessAssayTaskDetailDO(); businessAssayTaskDetailDO.setBusinessAssayTaskId(businessAssayTaskDO.getId()); - businessAssayTaskDetailDO.setTaskNo(taskNo); + businessAssayTaskDetailDO.setTaskNo(businessAssayTaskDO.getTaskNo()); businessAssayTaskDetailDO.setSampleId(businessAssayTaskDataDO.getBusinessSubSampleId()); businessAssayTaskDetailDO.setSampleCode(businessSubSampleDO.getSampleAssayCode()); businessAssayTaskDetailDO.setSampleName(businessSubSampleDO.getSampleName()); - businessAssayTaskDetailDO.setDataSourceType("正常"); + businessAssayTaskDetailDO.setDataSourceType(QmsCommonConstant.NORMAL); businessAssayTaskDetailDO.setSortNo(i+1); @@ -139,13 +142,12 @@ public class SampleTaskAssignMethodCmp extends NodeComponent { businessAssayTaskDataDOList.remove(businessAssayTaskDataDO); } - businessAssayTaskList.add(businessAssayTaskDO); } - sampleTaskAssignContext.setBusinessAssayTaskList(businessAssayTaskList); + sampleTaskAssignContext.setSaveBusinessAssayTaskList(saveBusinessAssayTaskList); + sampleTaskAssignContext.setUpdateBusinessAssayTaskList(updateBusinessAssayTaskList); sampleTaskAssignContext.setBusinessAssayTaskDetailList(businessAssayTaskDetailList); sampleTaskAssignContext.setBusinessAssayTaskDataList(businessAssayTaskDataList); - } @Override diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignSampleCmp.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignSampleCmp.java index a833487..7ccbb4a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignSampleCmp.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/sample/taskassign/SampleTaskAssignSampleCmp.java @@ -15,6 +15,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataD import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDetailDO; import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessSubSampleDO; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; +import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessSubSampleMapper; import com.zt.plat.module.qms.business.bus.liteflow.param.AssignAssayUser; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; @@ -27,18 +28,6 @@ import com.zt.plat.module.qms.core.code.SequenceUtil; import com.zt.plat.module.qms.enums.QmsCommonConstant; import jakarta.annotation.Resource; -/** - * SampleTaskAssignSampleCmp - *

- * 更新历史: - *

 版本         更新时间            更新者        更新内容
- * V1.0 2025年9月20日 wxr Add
- * Copyright (C) 云南志者竟成科技有限公司 - *

- * @author 王兴荣 - * @version V1.0 - * @since 2025年9月20日 - */ @LiteflowComponent(id = "sampleTaskAssignSampleCmp", name = "按样品分配") public class SampleTaskAssignSampleCmp extends NodeComponent { @@ -54,6 +43,9 @@ public class SampleTaskAssignSampleCmp extends NodeComponent { @Resource private BusinessAssayTaskDataMapper businessAssayTaskDataMapper; + @Resource + private BusinessAssayTaskMapper businessAssayTaskMapper; + @Resource private BusinessSubSampleMapper businessSubSampleMapper; @@ -74,8 +66,10 @@ public class SampleTaskAssignSampleCmp extends NodeComponent { List businessSubSampleList = businessSubSampleMapper.selectByIds(assignSampleIdList); sampleTaskAssignContext.setBusinessSubSampleList(businessSubSampleList); - //任务分配单 - List businessAssayTaskList = new ArrayList<>(); + //保存任务分配单 + List saveBusinessAssayTaskList = new ArrayList<>(); + //更新任务分配单 + List updateBusinessAssayTaskList = new ArrayList<>(); //任务分配单明细 List businessAssayTaskDetailList = new ArrayList<>(); @@ -86,25 +80,33 @@ public class SampleTaskAssignSampleCmp extends NodeComponent { ConfigAssayMethodDO configAssayMethod = sampleTaskAssignContext.getConfigAssayMethodById(key); //查询报表模板 ConfigReportTemplateDO configReportTemplate = configReportTemplateMapper.selectLatestConfigReportTemplateByKey(configAssayMethod.getConfigReportTemplateKey()); - - String taskNo = sequenceUtil.genCode(configAssayMethod.getCodeRule()); - - BusinessAssayTaskDO businessAssayTaskDO = new BusinessAssayTaskDO(); - businessAssayTaskDO.setId(IdWorker.getId()); - businessAssayTaskDO.setTaskNo(taskNo); - businessAssayTaskDO.setTaskName(configAssayMethod.getName()); - businessAssayTaskDO.setAssayOperator(assignAssayUser.getRealName()); - businessAssayTaskDO.setConfigAssayMethodId(key); - businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); - businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); - businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); - businessAssayTaskDO.setTaskAssignOperator(loginRealname); - businessAssayTaskDO.setTaskAssignTime(currentDateTime); - businessAssayTaskDO.setTaskAssignStatus(QmsCommonConstant.IN_PROGRESS); - businessAssayTaskDO.setTaskAssayStatus(QmsCommonConstant.NOT_START); - businessAssayTaskDO.setFinishStatus(QmsCommonConstant.NOT_START); - businessAssayTaskDO.setFlowStatus(QmsCommonConstant.NOT_START); + //根据分配 + BusinessAssayTaskDO businessAssayTaskDO = businessAssayTaskMapper.selectAssignInProgressByAssayUserAndAssignUser(configAssayMethod.getId(), 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.setAssayOperator(assignAssayUser.getRealName()); + businessAssayTaskDO.setConfigAssayMethodId(key); + businessAssayTaskDO.setTaskSourceType(QmsCommonConstant.TASK_ASSIGN); + businessAssayTaskDO.setConfigReportTemplateId(configReportTemplate.getId()); + businessAssayTaskDO.setConfigReportTemplateKey(configReportTemplate.getKey()); + + businessAssayTaskDO.setTaskAssignOperator(loginRealname); + 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 = entry.getValue(); @@ -120,11 +122,11 @@ public class SampleTaskAssignSampleCmp extends NodeComponent { businessAssayTaskDetailDO = new BusinessAssayTaskDetailDO(); businessAssayTaskDetailDO.setBusinessAssayTaskId(businessAssayTaskDO.getId()); - businessAssayTaskDetailDO.setTaskNo(taskNo); + businessAssayTaskDetailDO.setTaskNo(businessAssayTaskDO.getTaskNo()); businessAssayTaskDetailDO.setSampleId(val.getBusinessSubSampleId()); businessAssayTaskDetailDO.setSampleCode(businessSubSampleDO.getSampleAssayCode()); businessAssayTaskDetailDO.setSampleName(businessSubSampleDO.getSampleName()); - businessAssayTaskDetailDO.setDataSourceType("正常"); + businessAssayTaskDetailDO.setDataSourceType(QmsCommonConstant.NORMAL); businessAssayTaskDetailDO.setSortNo(sort); sort++; @@ -132,11 +134,11 @@ public class SampleTaskAssignSampleCmp extends NodeComponent { businessAssayTaskDetailList.add(businessAssayTaskDetailDO); } - businessAssayTaskList.add(businessAssayTaskDO); } - + + sampleTaskAssignContext.setSaveBusinessAssayTaskList(saveBusinessAssayTaskList); + sampleTaskAssignContext.setUpdateBusinessAssayTaskList(updateBusinessAssayTaskList); sampleTaskAssignContext.setBusinessAssayTaskDataList(businessAssayTaskDataList); - sampleTaskAssignContext.setBusinessAssayTaskList(businessAssayTaskList); sampleTaskAssignContext.setBusinessAssayTaskDetailList(businessAssayTaskDetailList); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/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 0b63c42..da551e3 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,6 +10,7 @@ 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.liteflow.param.SampleFlowInfo; 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; @@ -102,4 +103,7 @@ public class SampleEntrustContext { /** 样品委托来样品位 **/ private List sampleAssayResultList; + + /** 样品流转信息列表 **/ + private List sampleFlowInfoList; } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java index cc2051f..97deafa 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/liteflow/slot/SampleTaskAssignContext.java @@ -48,6 +48,9 @@ public class SampleTaskAssignContext { /** 分析方法配置 **/ private List configAssayMethodList; + /** 检测任务id列表 **/ + private List assayTaskDataIdList; + public ConfigAssayMethodDO getConfigAssayMethodById(Long id) { ConfigAssayMethodDO configAssayMethod = null; if (CollUtil.isNotEmpty(this.configAssayMethodList)) { @@ -70,8 +73,11 @@ public class SampleTaskAssignContext { /** 子样检测任务 **/ private List businessAssayTaskDataList; - /** 任务指派单列表 **/ - private List businessAssayTaskList; + /** 保存任务指派单列表 **/ + private List saveBusinessAssayTaskList; + + /** 更新任务指派单列表 **/ + private List updateBusinessAssayTaskList; /** 任务指派的明细列表 **/ private List businessAssayTaskDetailList; 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 7e76d56..a1368d3 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 @@ -1,20 +1,12 @@ package com.zt.plat.module.qms.business.bus.liteflow.slot; -/** - * SampleTaskAssignTypeEnum - *

- * 更新历史: - *

 版本         更新时间            更新者        更新内容
- * V1.0 2025年9月20日 wxr Add
- * Copyright (C) 云南志者竟成科技有限公司 - *

- * @author 王兴荣 - * @version V1.0 - * @since 2025年9月20日 - */ public enum SampleTaskAssignTypeEnum { + //分析方法指派 ASSAY_METHOD, - SAMPLE + //样品指派 + SAMPLE, + //手动指派 + MANUAL } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisAuditServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisAuditServiceImpl.java index 6190d9d..16e239f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisAuditServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/bus/service/SampleAnalysisAuditServiceImpl.java @@ -6,9 +6,11 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; @@ -549,6 +551,28 @@ public class SampleAnalysisAuditServiceImpl implements SampleAnalysisAuditServic } } businessAssayReportDataDO.setAssayData(assayDataJson.toJSONString()); + + //修改已上报数据来源 + String dataSource = businessAssayReportDataDO.getDataSource(); + Set dataSources = StringUtils.isBlank(dataSource) ? new HashSet<>() : new HashSet<>(Arrays.asList(dataSource.split(","))); + String reportedSource = businessAssayReportDataDO.getReportedSource(); + ReportedDataSource reportedDataSource = null; + if (StringUtils.isNotBlank(reportedSource)) { + reportedDataSource = JSON.parseObject(reportedSource, ReportedDataSource.class); + } else { + reportedDataSource = new ReportedDataSource(); + } + reportedDataSource.addDataSource(configAssayMethodId.toString(), nickName, LocalDateTime.now()); + Set busDataSources = reportedDataSource.getDetails().stream().map(m -> m.getSourceCode()).collect(Collectors.toSet()); + if (busDataSources.size() == dataSources.size() && busDataSources.equals(dataSources)) { + businessAssayReportDataDO.setIsAllReported(QmsCommonConstant.YES); + } + if (busDataSources.size() > 0) { + //计算 + // TODO + } + businessAssayReportDataDO.setReportedSource(JSON.toJSONString(reportedDataSource)); + } 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 98ab959..5bccfcc 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 @@ -3,7 +3,7 @@ package com.zt.plat.module.qms.business.bus.service; import java.util.List; import com.yomahub.liteflow.flow.LiteflowResponse; - +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignMethodParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSampleParam; import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; @@ -28,6 +28,13 @@ public interface SampleTaskAssignService { */ LiteflowResponse sampleAssign(SampleTaskAssignSampleParam param); + /** + * 手动分配任务 + * @param param + * @return + */ + LiteflowResponse manualAssign(SampleTaskAssignManualParam 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 018a730..4bb7483 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 @@ -23,6 +23,7 @@ import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayTaskDataD import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDataMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskDetailMapper; import com.zt.plat.module.qms.business.bus.dal.mapper.BusinessAssayTaskMapper; +import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignManualParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignMethodParam; import com.zt.plat.module.qms.business.bus.liteflow.param.SampleTaskAssignSampleParam; import com.zt.plat.module.qms.business.bus.liteflow.slot.SampleTaskAssignContext; @@ -113,6 +114,24 @@ public class SampleTaskAssignServiceImpl implements SampleTaskAssignService { return response; } + @Override + @Transactional(rollbackFor = Exception.class) + public LiteflowResponse manualAssign(SampleTaskAssignManualParam param) { + if (param.getAssignAssayUser() == null) { + throw new ServiceException(500, "无任务分配人员"); + } + if (CollUtil.isEmpty(param.getAssayTaskDataIdList())) { + throw new ServiceException(500, "无分配的检测任务"); + } + Long tenantId = TenantContextHolder.getRequiredTenantId(); + LiteflowResponse response = flowExecutor.execute2Resp("sampleTaskAssignChain" + tenantId, param, SampleTaskAssignContext.class); + if (!response.isSuccess()){ + log.error("手动分配任务失败", response.getCause()); + throw new ServiceException(500, response.getCause().getMessage()); + } + return response; + } + @Override @Transactional(rollbackFor = Exception.class) public void submitAssign(Long id) {