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