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) {