diff --git a/ruoyi-modules/hwmom-dms/pom.xml b/ruoyi-modules/hwmom-dms/pom.xml
index 3fbe86ca..b1245b6a 100644
--- a/ruoyi-modules/hwmom-dms/pom.xml
+++ b/ruoyi-modules/hwmom-dms/pom.xml
@@ -186,7 +186,7 @@
2.2.2
compile
-
+
org.dromara
ruoyi-common-bus
diff --git a/ruoyi-modules/hwmom-qms/pom.xml b/ruoyi-modules/hwmom-qms/pom.xml
index fd70a1c0..3c4c5024 100644
--- a/ruoyi-modules/hwmom-qms/pom.xml
+++ b/ruoyi-modules/hwmom-qms/pom.xml
@@ -117,6 +117,7 @@
2.2.2
compile
+
@@ -128,6 +129,29 @@
+
+ org.dromara
+ hwmom-api-workflow
+ 2.2.2
+ compile
+
+
+
+ org.dromara
+ ruoyi-common-bus
+
+
+
+
+
+ com.alibaba
+ transmittable-thread-local
+ 2.14.4
+
+
+
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcPDAController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcPDAController.java
index cb5885bd..ad0534d3 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcPDAController.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcPDAController.java
@@ -5,7 +5,9 @@ import com.alibaba.fastjson2.JSONObject;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R;
+import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
@@ -18,10 +20,14 @@ import org.dromara.qms.domain.vo.QcInspectionResultVo;
import org.dromara.qms.domain.vo.QcUnqualifiedRecordVo;
import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
import org.dromara.qms.service.*;
+import org.dromara.resource.api.RemoteFileService;
+import org.dromara.resource.api.domain.RemoteFile;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
@@ -57,6 +63,66 @@ public class QcPDAController {
//PDA业务Service
private final IQcPDAService qcPDAService;
+ @DubboReference
+ private final RemoteFileService remoteFileService;
+
+
+ /**
+ * 处理文件上传的函数
+ *
+ * @param files 多部分文件列表
+ * @return 上传文件的URL列表
+ */
+ private List handleFileUploads(List files) {
+ // 创建一个存储上传文件URL的列表
+ List fileUrls = new ArrayList<>();
+ List ossIds = new ArrayList<>();
+ // 判断文件列表是否为空
+ if (files != null) {
+ // 遍历每个文件
+ for (MultipartFile file : files) {
+ // 获取原始文件名
+ String originalFilename = file.getOriginalFilename();
+ // 获取文件类型
+ String contentType = file.getContentType();
+ byte[] fileBytes;
+ try {
+ // 获取文件字节内容
+ fileBytes = file.getBytes();
+ } catch (IOException e) {
+ // 记录错误日志并抛出服务异常
+ log.error("获取文件字节失败: {}", originalFilename, e);
+ throw new ServiceException("文件获取失败,请重试。");
+ }
+
+ try {
+ // 调用远程文件服务的上传方法
+ RemoteFile sysFile = remoteFileService.upload(originalFilename, originalFilename, contentType, fileBytes);
+ // 判断上传结果是否成功
+ if (sysFile != null && sysFile.getUrl() != null) {
+ // 将文件URL添加到列表中
+ fileUrls.add(sysFile.getUrl());
+ ossIds.add(sysFile.getOssId());
+ } else {
+ // 记录警告日志
+ log.warn("文件上传成功但未返回URL或返回数据为空: {}", originalFilename);
+ }
+ } catch (ServiceException e) {
+ // 记录服务异常日志并抛出新的服务异常
+ log.error("文件上传服务异常: {}", originalFilename, e);
+ throw new ServiceException("文件上传服务异常:" + e.getMessage());
+ } catch (Exception e) {
+ // 记录未知错误日志并抛出新的服务异常
+ log.error("文件上传过程中发生未知错误: {}", originalFilename, e);
+ throw new ServiceException("文件上传过程中发生未知错误,请联系管理员。");
+ }
+ }
+ }
+ // 返回上传文件的URL列表
+ return ossIds;
+ }
+
+
/**
* 验证评审结果是否有效
* 实现评审结果的五种处置方式验证:流转、报废、让步接收、返工、退货
@@ -96,7 +162,10 @@ public class QcPDAController {
@PostMapping("/submitInspection")
public R submitInspection(String json, List checkItemFiles) {
+ // 处理文件上传
+ List ossIds = handleFileUploads(checkItemFiles);
QcInspectionMainBo bo= JSONObject.parseObject(json, QcInspectionMainBo.class);
+ bo.setOssIds(ossIds);
Boolean result = qcPDAService.submitInspection(bo);
if (result != null && result) {
return R.ok(true);
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcUnqualifiedReviewController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcUnqualifiedReviewController.java
index dd4051aa..3bad29b5 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcUnqualifiedReviewController.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcUnqualifiedReviewController.java
@@ -1,26 +1,28 @@
package org.dromara.qms.controller;
-import java.util.List;
-import java.util.ArrayList;
-import lombok.RequiredArgsConstructor;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.validation.annotation.Validated;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.mybatis.core.page.PageQuery;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
-import org.dromara.qms.domain.bo.QcUnqualifiedReviewBo;
-import org.dromara.qms.service.IQcUnqualifiedReviewService;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.qms.domain.bo.QcUnqualifiedReviewBo;
+import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
+import org.dromara.qms.service.IQcUnqualifiedReviewService;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* 不合格品待评审
@@ -126,4 +128,15 @@ public class QcUnqualifiedReviewController extends BaseController {
List list = qcUnqualifiedReviewService.queryList(bo);
return R.ok(list);
}
+
+ /**
+ * 主管审批
+ * @param bo
+ * @return
+ */
+ @PostMapping("/completeTask")
+ public R completeTask(@Validated(EditGroup.class) @RequestBody QcUnqualifiedReviewBo bo) {
+ return R.ok(qcUnqualifiedReviewService.completeTask(bo));
+ }
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcUnqualifiedReview.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcUnqualifiedReview.java
index 8cccc3c6..8298ae37 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcUnqualifiedReview.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcUnqualifiedReview.java
@@ -1,14 +1,13 @@
package org.dromara.qms.domain;
-import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import java.math.BigDecimal;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
+import java.math.BigDecimal;
+import java.util.Date;
/**
* 不合格品待评审对象 qc_unqualified_review
@@ -146,4 +145,20 @@ public class QcUnqualifiedReview extends TenantEntity {
*/
@TableField(exist = false)
private String typeName;
+
+ /**
+ * 工作流实例ID
+ */
+ private Long processInstanceId;
+
+// /**
+// * 工作流状态(draft草稿、waiting待审核、finish完成、termination终止、back退回、cancel撤销)
+// */
+// private String processStatus;
+//
+// /**
+// * 当前任务ID
+// */
+// private Long currentTaskId;
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainBo.java
index 16bc4a33..366ad07b 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainBo.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainBo.java
@@ -172,4 +172,9 @@ public class QcInspectionMainBo extends BaseEntity {
*/
private List results;
+ /**
+ * 文件ID列表
+ */
+ List ossIds;
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcUnqualifiedReviewBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcUnqualifiedReviewBo.java
index c5ad09ce..8260eca2 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcUnqualifiedReviewBo.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcUnqualifiedReviewBo.java
@@ -1,17 +1,13 @@
package org.dromara.qms.domain.bo;
-import com.alibaba.excel.annotation.ExcelProperty;
-import org.dromara.qms.domain.QcUnqualifiedReview;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
-import jakarta.validation.constraints.*;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.qms.domain.QcUnqualifiedReview;
+
import java.math.BigDecimal;
import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 不合格品待评审业务对象 qc_unqualified_review
@@ -138,4 +134,24 @@ public class QcUnqualifiedReviewBo extends BaseEntity {
* 检测类型名称
*/
private String typeName;
+
+
+ /**
+ * 工作流实例ID
+ */
+ private Long processInstanceId;
+
+
+// /**
+// * 工作流状态(draft草稿、waiting待审核、finish完成、termination终止、back退回、cancel撤销)
+// */
+// private String processStatus;
+//
+//
+// /**
+// * 当前任务ID
+// */
+// private Long currentTaskId;
+
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcUnqualifiedReviewVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcUnqualifiedReviewVo.java
index 61a0f597..e4f7d5ff 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcUnqualifiedReviewVo.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcUnqualifiedReviewVo.java
@@ -1,18 +1,16 @@
package org.dromara.qms.domain.vo;
-import java.math.BigDecimal;
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.dromara.qms.domain.QcUnqualifiedReview;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import org.dromara.qms.domain.QcUnqualifiedReview;
import java.io.Serial;
import java.io.Serializable;
+import java.math.BigDecimal;
import java.util.Date;
@@ -169,4 +167,22 @@ public class QcUnqualifiedReviewVo implements Serializable {
* 检测类型名称
*/
private String typeName;
+
+
+
+ /**
+ * 工作流实例ID
+ */
+ private Long processInstanceId;
+
+// /**
+// * 工作流状态(draft草稿、waiting待审核、finish完成、termination终止、back退回、cancel撤销)
+// */
+// private String processStatus;
+//
+// /**
+// * 当前任务ID
+// */
+// private Long currentTaskId;
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcUnqualifiedReviewService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcUnqualifiedReviewService.java
index dd30252c..66098253 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcUnqualifiedReviewService.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcUnqualifiedReviewService.java
@@ -66,4 +66,14 @@ public interface IQcUnqualifiedReviewService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+
+
+ /**
+ * 完成审批任务
+ *
+ * @param request 请求参数
+ * @return 是否完成成功
+ */
+ Boolean completeTask(QcUnqualifiedReviewBo bo);
+
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainServiceImpl.java
index dba33ddb..9867f449 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainServiceImpl.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainServiceImpl.java
@@ -104,8 +104,9 @@ public class QcInspectionMainServiceImpl implements IQcInspectionMainService {
// .eq(bo.getResult() != null, QcInspectionMain::getResult, bo.getResult())
.eq(StringUtils.isNotBlank(bo.getResult()), QcInspectionMain::getResult, bo.getResult())
.eq(StringUtils.isNotBlank(bo.getWorkshop()), QcInspectionMain::getWorkshop, bo.getWorkshop())
-// .eq(bo.getInspectionType() != null, QcInspectionMain::getInspectionType, bo.getInspectionType())
+ .eq(bo.getInspectionType() != null, QcInspectionMain::getInspectionType, bo.getInspectionType())
// .eq(bo.getStatus() != null, QcInspectionMain::getStatus, bo.getStatus())
+
.eq(StringUtils.isNotBlank(bo.getQcInspectionType()), QcInspectionType::getQcInspectionType, bo.getQcInspectionType())
.eq(StringUtils.isNotBlank(bo.getStatus()), QcInspectionMain::getStatus, bo.getStatus())
.eq(StringUtils.isNotBlank(bo.getInspector()), QcInspectionMain::getInspector, bo.getInspector())
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcPDAServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcPDAServiceImpl.java
index 1b5b3fdf..9a568006 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcPDAServiceImpl.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcPDAServiceImpl.java
@@ -1,38 +1,33 @@
package org.dromara.qms.service.impl;
+import com.alibaba.ttl.TtlRunnable;
+import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor;
-
+import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.core.utils.uuid.IdUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.pda.api.RemotePdaMesApiService;
import org.dromara.pda.api.model.ProdQmsPlanDetail;
import org.dromara.pda.api.model.bo.GenerateInspectionTaskBo;
-import org.dromara.qms.domain.bo.QcInspectionResultBo;
-import org.dromara.qms.domain.bo.QcInspectionTemplateBo;
-import org.dromara.qms.domain.bo.QcTemplateItemBo;
+import org.dromara.qms.domain.bo.*;
import org.dromara.qms.domain.vo.*;
import org.dromara.qms.service.*;
import org.dromara.system.api.RemoteCodeRuleService;
+import org.dromara.workflow.api.RemoteWorkflowService;
+import org.dromara.workflow.api.domain.RemoteCompleteTask;
+import org.dromara.workflow.api.domain.RemoteStartProcess;
+import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
-import org.dromara.qms.domain.bo.QcInspectionMainBo;
-import org.dromara.common.core.domain.R;
import org.springframework.transaction.annotation.Transactional;
-import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.qms.domain.bo.QcUnqualifiedReviewBo;
-import org.dromara.qms.domain.bo.QcUnqualifiedRecordBo;
-import org.dromara.common.core.utils.MapstructUtils;
import java.math.BigDecimal;
-import java.util.Date;
-
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
/**
* PDA接口Service业务层处理
@@ -40,11 +35,13 @@ import java.util.UUID;
* @author YinQ
* @date 2025-07-24
*/
+@Slf4j
@RequiredArgsConstructor
@Service
@DubboService
public class QcPDAServiceImpl implements IQcPDAService {
+
private final IQcInspectionMainService qcInspectionMainService;
//质检结果子表
@@ -59,12 +56,19 @@ public class QcPDAServiceImpl implements IQcPDAService {
//不合格记录子表
private final IQcUnqualifiedRecordService qcUnqualifiedRecordService;
+ private final IQcInspectionMainFileRelationService qcInspectionMainFileRelationService;
+
@DubboReference
private final RemotePdaMesApiService remotePdaMesApiService;
@DubboReference
private final RemoteCodeRuleService remoteCodeRuleService;
+ //WARM-FLOW工作流
+ @DubboReference(timeout = 30000)
+ private final RemoteWorkflowService remoteWorkflowService;
+ private static final String UNQUALIFIED_REVIEW_FLOW_CODE = "unqualified_review";
+
/**
* 通过planDetailId和processId生成质检任务
@@ -145,6 +149,17 @@ public class QcPDAServiceImpl implements IQcPDAService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean submitInspection(QcInspectionMainBo bo) {
+
+ // 保存文件
+ List ossIds = bo.getOssIds();
+ for (Long ossId : ossIds){
+ QcInspectionMainFileRelationBo relation = new QcInspectionMainFileRelationBo();
+ relation.setInspectionId(bo.getInspectionId());
+ relation.setOssId(ossId);
+ qcInspectionMainFileRelationService.insertByBo(relation);
+ }
+
+
// 根据传入的检验ID查询主记录信息
Long inspectionId = bo.getInspectionId();
Date nowDate = DateUtils.getNowDate();
@@ -303,6 +318,7 @@ public class QcPDAServiceImpl implements IQcPDAService {
* @return
*/
@Override
+ @GlobalTransactional(rollbackFor = Exception.class)
public Boolean handleUnqualified(String dispositionType, Long[] reviewIds) {
for (Long reviewId : reviewIds) {
QcUnqualifiedReviewVo reviewVo = qcUnqualifiedReviewService.queryById(reviewId);
@@ -312,13 +328,58 @@ public class QcPDAServiceImpl implements IQcPDAService {
if (StringUtils.isNotEmpty(reviewVo.getReviewResult()) ) {
throw new ServiceException("此不合格评审单已评审");
}
+
+ //集成工作流
+ RemoteStartProcess startProcess = new RemoteStartProcess();
+ startProcess.setBusinessId(String.valueOf(reviewId));
+ startProcess.setFlowCode(UNQUALIFIED_REVIEW_FLOW_CODE);
+ RemoteStartProcessReturn remoteStartProcessReturn = remoteWorkflowService.startWorkFlow(startProcess);
+ Long processInstanceId = remoteStartProcessReturn.getProcessInstanceId();
+ Long taskId = remoteStartProcessReturn.getTaskId();
+
+ // 更新数据
QcUnqualifiedReviewBo reviewBo = new QcUnqualifiedReviewBo();
reviewBo.setReviewId(reviewId);
reviewBo.setReviewResult(dispositionType);
reviewBo.setReviewer(LoginHelper.getUsername());
reviewBo.setReviewStartTime(new Date());
+ reviewBo.setProcessInstanceId(processInstanceId);// 流程实例ID
qcUnqualifiedReviewService.updateByBo(reviewBo);
- //集成工作流
+
+ //异步推动流程
+ final Long finalTaskId = taskId;
+ CompletableFuture.runAsync(TtlRunnable.get(() -> {
+ RemoteCompleteTask completeTask = new RemoteCompleteTask();
+ completeTask.setTaskId(finalTaskId);
+ completeTask.setMessage("启动不合格评审,处置类型: " + dispositionType);
+
+ // 设置消息类型
+ List messageTypes = new ArrayList<>();
+ messageTypes.add("1"); // 站内信
+ completeTask.setMessageType(messageTypes);
+
+ // 设置流程变量
+ Map variables = new HashMap<>();
+ variables.put("reviewResult", dispositionType);
+ completeTask.setVariables(variables);
+
+ remoteWorkflowService.completeTask(completeTask);
+ }));
+// RemoteCompleteTask completeTask = new RemoteCompleteTask();
+// completeTask.setTaskId(finalTaskId);
+// completeTask.setMessage("启动不合格评审,处置类型: " + dispositionType);
+//
+// // 设置消息类型
+// List messageTypes = new ArrayList<>();
+// messageTypes.add("1"); // 站内信
+// completeTask.setMessageType(messageTypes);
+//
+// // 设置流程变量
+// Map variables = new HashMap<>();
+// variables.put("reviewResult", dispositionType);
+// completeTask.setVariables(variables);
+//
+// remoteWorkflowService.completeTask(completeTask);
}
return true;
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcUnqualifiedReviewServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcUnqualifiedReviewServiceImpl.java
index 553f6985..c95c3c1b 100644
--- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcUnqualifiedReviewServiceImpl.java
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcUnqualifiedReviewServiceImpl.java
@@ -1,27 +1,31 @@
package org.dromara.qms.service.impl;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.dromara.common.core.exception.ServiceException;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.ObjectUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.qms.domain.QcInspectionMain;
-import org.dromara.qms.domain.QcInspectionTemplate;
import org.dromara.qms.domain.QcInspectionType;
-import org.springframework.stereotype.Service;
+import org.dromara.qms.domain.QcUnqualifiedReview;
import org.dromara.qms.domain.bo.QcUnqualifiedReviewBo;
import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
-import org.dromara.qms.domain.QcUnqualifiedReview;
import org.dromara.qms.mapper.QcUnqualifiedReviewMapper;
+import org.dromara.qms.service.IQcInspectionTypeService;
import org.dromara.qms.service.IQcUnqualifiedReviewService;
+import org.dromara.workflow.api.RemoteWorkflowService;
+import org.dromara.workflow.api.domain.RemoteCompleteTask;
+import org.springframework.stereotype.Service;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
/**
* 不合格品待评审Service业务层处理
@@ -35,6 +39,12 @@ public class QcUnqualifiedReviewServiceImpl implements IQcUnqualifiedReviewServi
private final QcUnqualifiedReviewMapper baseMapper;
+ private final IQcInspectionTypeService inspectionTypeService;
+
+ //WARM-FLOW工作流
+ @DubboReference(timeout = 30000)
+ private final RemoteWorkflowService remoteWorkflowService;
+
/**
* 查询不合格品待评审
*
@@ -43,7 +53,11 @@ public class QcUnqualifiedReviewServiceImpl implements IQcUnqualifiedReviewServi
*/
@Override
public QcUnqualifiedReviewVo queryById(Long reviewId) {
- return baseMapper.selectVoById(reviewId);
+ QcUnqualifiedReviewVo qcUnqualifiedReviewVo = baseMapper.selectVoById(reviewId);
+ //获取检测类型
+ String typeName = inspectionTypeService.queryById(qcUnqualifiedReviewVo.getInspectionType()).getTypeName();
+ qcUnqualifiedReviewVo.setTypeName(typeName);
+ return qcUnqualifiedReviewVo;
}
/**
@@ -167,4 +181,36 @@ public class QcUnqualifiedReviewServiceImpl implements IQcUnqualifiedReviewServi
}
return baseMapper.deleteByIds(ids) > 0;
}
+
+ @Override
+ @GlobalTransactional(rollbackFor = Exception.class)
+ public Boolean completeTask(QcUnqualifiedReviewBo bo) {
+ QcUnqualifiedReview review = baseMapper.selectById(bo.getReviewId());
+ if (review == null) {
+ throw new ServiceException("不合格品待评审不存在");
+ }
+ if (ObjectUtils.isNotEmpty(review.getReviewEndTime())){
+ throw new ServiceException("该任务已处理完成");
+ }
+ Long currentTaskIdByInstanceId = remoteWorkflowService.getCurrentTaskIdByInstanceId(review.getProcessInstanceId());
+ if (currentTaskIdByInstanceId == null) {
+ throw new ServiceException("任务不存在");
+ }
+
+ review.setReviewer(LoginHelper.getUsername());
+ review.setReviewerId(LoginHelper.getUserId());
+ review.setReviewEndTime(new Date());
+
+ /* 工作流 */
+ RemoteCompleteTask completeTask = new RemoteCompleteTask();
+ completeTask.setTaskId(currentTaskIdByInstanceId);
+ // 设置消息类型
+ List messageTypes = new ArrayList<>();
+ messageTypes.add("1"); // 站内信
+ completeTask.setMessageType(messageTypes);
+ completeTask.setMessage("审批通过 " );
+ remoteWorkflowService.completeTask(completeTask);
+
+ return baseMapper.updateById(review) > 0;
+ }
}