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/QcInspectionMainFileRelationController.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcInspectionMainFileRelationController.java
new file mode 100644
index 00000000..5066d681
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/controller/QcInspectionMainFileRelationController.java
@@ -0,0 +1,117 @@
+package org.dromara.qms.controller;
+
+import java.util.List;
+
+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 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.QcInspectionMainFileRelationVo;
+import org.dromara.qms.domain.bo.QcInspectionMainFileRelationBo;
+import org.dromara.qms.service.IQcInspectionMainFileRelationService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 质检任务文件关系
+ * 前端访问路由地址为:/qms/qcInspectionMainFileRelation
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/qcInspectionMainFileRelation")
+public class QcInspectionMainFileRelationController extends BaseController {
+
+ private final IQcInspectionMainFileRelationService qcInspectionMainFileRelationService;
+
+ /**
+ * 查询质检任务文件关系列表
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:list")
+ @GetMapping("/list")
+ public TableDataInfo list(QcInspectionMainFileRelationBo bo, PageQuery pageQuery) {
+ return qcInspectionMainFileRelationService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出质检任务文件关系列表
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:export")
+ @Log(title = "质检任务文件关系", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(QcInspectionMainFileRelationBo bo, HttpServletResponse response) {
+ List list = qcInspectionMainFileRelationService.queryList(bo);
+ ExcelUtil.exportExcel(list, "质检任务文件关系", QcInspectionMainFileRelationVo.class, response);
+ }
+
+ /**
+ * 获取质检任务文件关系详细信息
+ *
+ * @param relationId 主键
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:query")
+ @GetMapping("/{relationId}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long relationId) {
+ return R.ok(qcInspectionMainFileRelationService.queryById(relationId));
+ }
+
+ /**
+ * 新增质检任务文件关系
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:add")
+ @Log(title = "质检任务文件关系", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody QcInspectionMainFileRelationBo bo) {
+ return toAjax(qcInspectionMainFileRelationService.insertByBo(bo));
+ }
+
+ /**
+ * 修改质检任务文件关系
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:edit")
+ @Log(title = "质检任务文件关系", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody QcInspectionMainFileRelationBo bo) {
+ return toAjax(qcInspectionMainFileRelationService.updateByBo(bo));
+ }
+
+ /**
+ * 删除质检任务文件关系
+ *
+ * @param relationIds 主键串
+ */
+ @SaCheckPermission("qms:qcInspectionMainFileRelation:remove")
+ @Log(title = "质检任务文件关系", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{relationIds}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] relationIds) {
+ return toAjax(qcInspectionMainFileRelationService.deleteWithValidByIds(List.of(relationIds), true));
+ }
+
+
+ /**
+ * 下拉框查询质检任务文件关系列表
+ */
+
+ @GetMapping("/getQcInspectionMainFileRelationList")
+ public R> getQcInspectionMainFileRelationList(QcInspectionMainFileRelationBo bo) {
+ List list = qcInspectionMainFileRelationService.queryList(bo);
+ return R.ok(list);
+ }
+}
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/QcInspectionMainFileRelation.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcInspectionMainFileRelation.java
new file mode 100644
index 00000000..c6a7c1fa
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/QcInspectionMainFileRelation.java
@@ -0,0 +1,47 @@
+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.io.Serial;
+
+/**
+ * 质检任务文件关系对象 qc_inspection_main_file_relation
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("qc_inspection_main_file_relation")
+public class QcInspectionMainFileRelation extends TenantEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "relation_id", type = IdType.ASSIGN_ID)
+ private Long relationId;
+
+ /**
+ * 质检主键
+ */
+ private Long inspectionId;
+
+ /**
+ * 文件主键
+ */
+ private Long ossId;
+
+ /**
+ * 是否删除(0表示存在,2表示删除)
+ */
+ @TableLogic
+ private String delFlag;
+
+
+}
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/QcInspectionMainFileRelationBo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainFileRelationBo.java
new file mode 100644
index 00000000..d344fc01
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/bo/QcInspectionMainFileRelationBo.java
@@ -0,0 +1,42 @@
+package org.dromara.qms.domain.bo;
+
+import org.dromara.qms.domain.QcInspectionMainFileRelation;
+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.*;
+
+/**
+ * 质检任务文件关系业务对象 qc_inspection_main_file_relation
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = QcInspectionMainFileRelation.class, reverseConvertGenerate = false)
+public class QcInspectionMainFileRelationBo extends BaseEntity {
+
+ /**
+ * 质检主键
+ */
+ @NotNull(message = "质检主键不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long relationId;
+
+ /**
+ * 质检主键
+ */
+ @NotNull(message = "质检主键不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long inspectionId;
+
+ /**
+ * 文件主键
+ */
+ @NotNull(message = "文件主键不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long ossId;
+
+
+}
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/QcInspectionMainFileRelationVo.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcInspectionMainFileRelationVo.java
new file mode 100644
index 00000000..da33b43e
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/domain/vo/QcInspectionMainFileRelationVo.java
@@ -0,0 +1,50 @@
+package org.dromara.qms.domain.vo;
+
+import org.dromara.qms.domain.QcInspectionMainFileRelation;
+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 java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+
+
+
+/**
+ * 质检任务文件关系视图对象 qc_inspection_main_file_relation
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = QcInspectionMainFileRelation.class)
+public class QcInspectionMainFileRelationVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 质检主键
+ */
+ @ExcelProperty(value = "质检主键")
+ private Long relationId;
+
+ /**
+ * 质检主键
+ */
+ @ExcelProperty(value = "质检主键")
+ private Long inspectionId;
+
+ /**
+ * 文件主键
+ */
+ @ExcelProperty(value = "文件主键")
+ private Long ossId;
+
+
+}
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/mapper/QcInspectionMainFileRelationMapper.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/QcInspectionMainFileRelationMapper.java
new file mode 100644
index 00000000..fd130d35
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/mapper/QcInspectionMainFileRelationMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.qms.mapper;
+
+import org.dromara.qms.domain.QcInspectionMainFileRelation;
+import org.dromara.qms.domain.vo.QcInspectionMainFileRelationVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 质检任务文件关系Mapper接口
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+public interface QcInspectionMainFileRelationMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionMainFileRelationService.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionMainFileRelationService.java
new file mode 100644
index 00000000..48f6a271
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/IQcInspectionMainFileRelationService.java
@@ -0,0 +1,69 @@
+package org.dromara.qms.service;
+
+import org.dromara.qms.domain.QcInspectionMainFileRelation;
+import org.dromara.qms.domain.vo.QcInspectionMainFileRelationVo;
+import org.dromara.qms.domain.bo.QcInspectionMainFileRelationBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 质检任务文件关系Service接口
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+public interface IQcInspectionMainFileRelationService {
+
+ /**
+ * 查询质检任务文件关系
+ *
+ * @param relationId 主键
+ * @return 质检任务文件关系
+ */
+ QcInspectionMainFileRelationVo queryById(Long relationId);
+
+ /**
+ * 分页查询质检任务文件关系列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 质检任务文件关系分页列表
+ */
+ TableDataInfo queryPageList(QcInspectionMainFileRelationBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询符合条件的质检任务文件关系列表
+ *
+ * @param bo 查询条件
+ * @return 质检任务文件关系列表
+ */
+ List queryList(QcInspectionMainFileRelationBo bo);
+
+ /**
+ * 新增质检任务文件关系
+ *
+ * @param bo 质检任务文件关系
+ * @return 是否新增成功
+ */
+ Boolean insertByBo(QcInspectionMainFileRelationBo bo);
+
+ /**
+ * 修改质检任务文件关系
+ *
+ * @param bo 质检任务文件关系
+ * @return 是否修改成功
+ */
+ Boolean updateByBo(QcInspectionMainFileRelationBo bo);
+
+ /**
+ * 校验并批量删除质检任务文件关系信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
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/QcInspectionMainFileRelationServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainFileRelationServiceImpl.java
new file mode 100644
index 00000000..27183525
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionMainFileRelationServiceImpl.java
@@ -0,0 +1,134 @@
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.dromara.qms.domain.bo.QcInspectionMainFileRelationBo;
+import org.dromara.qms.domain.vo.QcInspectionMainFileRelationVo;
+import org.dromara.qms.domain.QcInspectionMainFileRelation;
+import org.dromara.qms.mapper.QcInspectionMainFileRelationMapper;
+import org.dromara.qms.service.IQcInspectionMainFileRelationService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 质检任务文件关系Service业务层处理
+ *
+ * @author zch
+ * @date 2025-07-31
+ */
+@RequiredArgsConstructor
+@Service
+public class QcInspectionMainFileRelationServiceImpl implements IQcInspectionMainFileRelationService {
+
+ private final QcInspectionMainFileRelationMapper baseMapper;
+
+ /**
+ * 查询质检任务文件关系
+ *
+ * @param relationId 主键
+ * @return 质检任务文件关系
+ */
+ @Override
+ public QcInspectionMainFileRelationVo queryById(Long relationId){
+ return baseMapper.selectVoById(relationId);
+ }
+
+ /**
+ * 分页查询质检任务文件关系列表
+ *
+ * @param bo 查询条件
+ * @param pageQuery 分页参数
+ * @return 质检任务文件关系分页列表
+ */
+ @Override
+ public TableDataInfo queryPageList(QcInspectionMainFileRelationBo bo, PageQuery pageQuery) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询符合条件的质检任务文件关系列表
+ *
+ * @param bo 查询条件
+ * @return 质检任务文件关系列表
+ */
+ @Override
+ public List queryList(QcInspectionMainFileRelationBo bo) {
+ MPJLambdaWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private MPJLambdaWrapper buildQueryWrapper(QcInspectionMainFileRelationBo bo) {
+ Map params = bo.getParams();
+ MPJLambdaWrapper lqw = JoinWrappers.lambda(QcInspectionMainFileRelation.class)
+ .selectAll(QcInspectionMainFileRelation.class)
+ .eq(bo.getRelationId() != null, QcInspectionMainFileRelation::getRelationId, bo.getRelationId())
+ .eq(bo.getInspectionId() != null, QcInspectionMainFileRelation::getInspectionId, bo.getInspectionId())
+ .eq(bo.getOssId() != null, QcInspectionMainFileRelation::getOssId, bo.getOssId())
+ .orderByDesc(QcInspectionMainFileRelation::getCreateTime);
+ return lqw;
+ }
+
+ /**
+ * 新增质检任务文件关系
+ *
+ * @param bo 质检任务文件关系
+ * @return 是否新增成功
+ */
+ @Override
+ public Boolean insertByBo(QcInspectionMainFileRelationBo bo) {
+ QcInspectionMainFileRelation add = MapstructUtils.convert(bo, QcInspectionMainFileRelation.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setRelationId(add.getRelationId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改质检任务文件关系
+ *
+ * @param bo 质检任务文件关系
+ * @return 是否修改成功
+ */
+ @Override
+ public Boolean updateByBo(QcInspectionMainFileRelationBo bo) {
+ QcInspectionMainFileRelation update = MapstructUtils.convert(bo, QcInspectionMainFileRelation.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(QcInspectionMainFileRelation entity){
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 校验并批量删除质检任务文件关系信息
+ *
+ * @param ids 待删除的主键集合
+ * @param isValid 是否进行有效性校验
+ * @return 是否删除成功
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if(isValid){
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteByIds(ids) > 0;
+ }
+}
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 b3154f7d..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 8263b4bf..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
@@ -3,23 +3,29 @@ package org.dromara.qms.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
+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.QcInspectionType;
import org.dromara.qms.domain.QcUnqualifiedReview;
import org.dromara.qms.domain.bo.QcUnqualifiedReviewBo;
import org.dromara.qms.domain.vo.QcUnqualifiedReviewVo;
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.Collection;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* 不合格品待评审Service业务层处理
@@ -33,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;
+
/**
* 查询不合格品待评审
*
@@ -41,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;
}
/**
@@ -81,7 +97,7 @@ public class QcUnqualifiedReviewServiceImpl implements IQcUnqualifiedReviewServi
// .eq(bo.getReviewResult() != null, QcUnqualifiedReview::getReviewResult, bo.getReviewResult())
.eq(StringUtils.isNotBlank(bo.getReviewResult()), QcUnqualifiedReview::getReviewResult, bo.getReviewResult())
.eq(StringUtils.isNotBlank(bo.getInspectionNo()), QcUnqualifiedReview::getInspectionNo, bo.getInspectionNo())
- .eq(bo.getInspectionType() != null, QcUnqualifiedReview::getInspectionType, bo.getInspectionType())
+// .eq(bo.getInspectionType() != null, QcUnqualifiedReview::getInspectionType, bo.getInspectionType())
// .eq(StringUtils.isNotBlank(bo.getInspectionType()), QcUnqualifiedReview::getInspectionType, bo.getInspectionType())
.eq(bo.getProductionDate() != null, QcUnqualifiedReview::getProductionDate, bo.getProductionDate())
.eq(StringUtils.isNotBlank(bo.getWorkOrderNo()), QcUnqualifiedReview::getWorkOrderNo, bo.getWorkOrderNo())
@@ -165,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;
+ }
}
diff --git a/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionMainFileRelationMapper.xml b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionMainFileRelationMapper.xml
new file mode 100644
index 00000000..897c56bc
--- /dev/null
+++ b/ruoyi-modules/hwmom-qms/src/main/resources/mapper/qms/QcInspectionMainFileRelationMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPrintTemplateInfo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPrintTemplateInfo.java
index 3bb76954..27154bdb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPrintTemplateInfo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysPrintTemplateInfo.java
@@ -30,7 +30,7 @@ public class SysPrintTemplateInfo extends TenantEntity {
/**
* 模板列表ID
*/
- private String templateListId;
+ private Long templateListId;
/**
* 纸张类型
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPrintTemplateInfoBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPrintTemplateInfoBo.java
index 5218139c..e95ce459 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPrintTemplateInfoBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPrintTemplateInfoBo.java
@@ -25,7 +25,7 @@ public class SysPrintTemplateInfoBo extends BaseEntity {
/**
* 模板列表ID
*/
- private String templateListId;
+ private Long templateListId;
/**
* 纸张类型
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPrintTemplateInfoVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPrintTemplateInfoVo.java
index 14b9c205..0ef5cff7 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPrintTemplateInfoVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPrintTemplateInfoVo.java
@@ -38,7 +38,7 @@ public class SysPrintTemplateInfoVo implements Serializable {
* 模板列表ID
*/
@ExcelProperty(value = "模板列表ID")
- private String templateListId;
+ private Long templateListId;
/**
* 纸张类型
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateInfoServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateInfoServiceImpl.java
index 4ba5cd1a..e1dfecde 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateInfoServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateInfoServiceImpl.java
@@ -9,6 +9,7 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.SysPrintTemplateList;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.SysPrintTemplateInfoBo;
import org.dromara.system.domain.vo.SysPrintTemplateInfoVo;
@@ -39,7 +40,7 @@ public class SysPrintTemplateInfoServiceImpl implements ISysPrintTemplateInfoSer
* @return 打印模板信息
*/
@Override
- public SysPrintTemplateInfoVo queryById(Long templateInfoId){
+ public SysPrintTemplateInfoVo queryById(Long templateInfoId) {
return baseMapper.selectVoById(templateInfoId);
}
@@ -72,16 +73,18 @@ public class SysPrintTemplateInfoServiceImpl implements ISysPrintTemplateInfoSer
private MPJLambdaWrapper buildQueryWrapper(SysPrintTemplateInfoBo bo) {
Map params = bo.getParams();
MPJLambdaWrapper lqw = JoinWrappers.lambda(SysPrintTemplateInfo.class)
- .selectAll(SysPrintTemplateInfo.class)
- .eq(bo.getTemplateInfoId() != null, SysPrintTemplateInfo::getTemplateInfoId, bo.getTemplateInfoId())
- .eq(StringUtils.isNotBlank(bo.getTemplateListId()), SysPrintTemplateInfo::getTemplateListId, bo.getTemplateListId())
- .eq(StringUtils.isNotBlank(bo.getPaperType()), SysPrintTemplateInfo::getPaperType, bo.getPaperType())
- .eq(StringUtils.isNotBlank(bo.getWidth()), SysPrintTemplateInfo::getWidth, bo.getWidth())
- .eq(StringUtils.isNotBlank(bo.getHeight()), SysPrintTemplateInfo::getHeight, bo.getHeight())
- .eq(StringUtils.isNotBlank(bo.getBackgroundColor()), SysPrintTemplateInfo::getBackgroundColor, bo.getBackgroundColor())
- .eq(StringUtils.isNotBlank(bo.getOrientation()), SysPrintTemplateInfo::getOrientation, bo.getOrientation())
- .eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysPrintTemplateInfo::getActiveFlag, bo.getActiveFlag())
- .orderByAsc(SysPrintTemplateInfo::getCreateTime);
+ .selectAll(SysPrintTemplateInfo.class)
+ .select(SysPrintTemplateList::getTemplateName)
+ .leftJoin(SysPrintTemplateList.class, SysPrintTemplateList::getTemplateListId, SysPrintTemplateInfo::getTemplateListId)
+ .eq(bo.getTemplateInfoId() != null, SysPrintTemplateInfo::getTemplateInfoId, bo.getTemplateInfoId())
+ .eq(StringUtils.isNotNull(bo.getTemplateListId()), SysPrintTemplateInfo::getTemplateListId, bo.getTemplateListId())
+ .eq(StringUtils.isNotBlank(bo.getPaperType()), SysPrintTemplateInfo::getPaperType, bo.getPaperType())
+ .eq(StringUtils.isNotBlank(bo.getWidth()), SysPrintTemplateInfo::getWidth, bo.getWidth())
+ .eq(StringUtils.isNotBlank(bo.getHeight()), SysPrintTemplateInfo::getHeight, bo.getHeight())
+ .eq(StringUtils.isNotBlank(bo.getBackgroundColor()), SysPrintTemplateInfo::getBackgroundColor, bo.getBackgroundColor())
+ .eq(StringUtils.isNotBlank(bo.getOrientation()), SysPrintTemplateInfo::getOrientation, bo.getOrientation())
+ .eq(StringUtils.isNotBlank(bo.getActiveFlag()), SysPrintTemplateInfo::getActiveFlag, bo.getActiveFlag())
+ .orderByAsc(SysPrintTemplateInfo::getCreateTime);
return lqw;
}
@@ -118,7 +121,7 @@ public class SysPrintTemplateInfoServiceImpl implements ISysPrintTemplateInfoSer
/**
* 保存前的数据校验
*/
- private void validEntityBeforeSave(SysPrintTemplateInfo entity){
+ private void validEntityBeforeSave(SysPrintTemplateInfo entity) {
//TODO 做一些数据校验,如唯一约束
}
@@ -131,7 +134,7 @@ public class SysPrintTemplateInfoServiceImpl implements ISysPrintTemplateInfoSer
*/
@Override
public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
- if(isValid){
+ if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateNodeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateNodeServiceImpl.java
index 10f29130..69079692 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateNodeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPrintTemplateNodeServiceImpl.java
@@ -10,6 +10,8 @@ import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import org.dromara.system.domain.SysPrintTemplateInfo;
+import org.dromara.system.domain.SysPrintTemplateList;
import org.springframework.stereotype.Service;
import org.dromara.system.domain.bo.SysPrintTemplateNodeBo;
import org.dromara.system.domain.vo.SysPrintTemplateNodeVo;
@@ -75,6 +77,9 @@ public class SysPrintTemplateNodeServiceImpl implements ISysPrintTemplateNodeSer
Map params = bo.getParams();
MPJLambdaWrapper lqw = JoinWrappers.lambda(SysPrintTemplateNode.class)
.selectAll(SysPrintTemplateNode.class)
+ .select(SysPrintTemplateList::getTemplateName)
+ .leftJoin(SysPrintTemplateInfo.class, SysPrintTemplateInfo::getTemplateInfoId, SysPrintTemplateNode::getTemplateInfoId)
+ .leftJoin(SysPrintTemplateList.class, SysPrintTemplateList::getTemplateListId, SysPrintTemplateInfo::getTemplateListId)
.eq(bo.getTemplateNodeId() != null, SysPrintTemplateNode::getTemplateNodeId, bo.getTemplateNodeId())
.eq(StringUtils.isNotBlank(bo.getTemplateInfoId()), SysPrintTemplateNode::getTemplateInfoId, bo.getTemplateInfoId())
.like(StringUtils.isNotBlank(bo.getName()), SysPrintTemplateNode::getName, bo.getName())