From bd2a67102ddc966056f0938cf19d5eb985191ba4 Mon Sep 17 00:00:00 2001 From: YBP Date: Fri, 13 Mar 2026 18:17:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95-?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=9F=A5=E8=AF=A2-=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AF=84=E5=AE=A1=EF=BC=8C=E5=88=86=E5=8F=91--=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/RecordRecordPageReqVO.java | 2 +- .../recordrecord/vo/RecordRecordRespVO.java | 1 + .../record/dal/mapper/RecordRecordMapper.java | 8 ++ .../recordapply/RecordApplyServiceImpl.java | 45 ++++-- .../recordcategory/RecordCategoryService.java | 1 + .../RecordCategoryServiceImpl.java | 7 + .../recordrecord/RecordRecordServiceImpl.java | 53 ++++++- .../record/dal/mapper/RecordRecordMapper.xml | 132 ++++++++++++------ 8 files changed, 185 insertions(+), 64 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java index 93c208b5..41fcb07f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java @@ -109,6 +109,6 @@ public class RecordRecordPageReqVO extends PageParam { @Schema(description = "是否查询历史数据") private Integer isQueryHistory; // 1-查询,0-不查询 - private String ew; + private String appraisalFlag; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java index c4e07e0a..59b966a3 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java @@ -176,6 +176,7 @@ public class RecordRecordRespVO { private String flowInstanceId; @Schema(description = "文件提交业务状态") + @Dict(dicCode = "flow_status") private String applyBusinessStatus; } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.java index 3961c639..e59d7fd0 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.java @@ -91,6 +91,14 @@ public interface RecordRecordMapper extends BaseMapperX { @Param("userId") Long userId, @Param("userDepts") List userDepts); + /** + * 通过 idPath 模糊查询 关联的文件记录 + * @param pathList + * @return + */ + List selectRecordByIdPathLike(@Param("reqVO") RecordRecordPageReqVO reqVO, + @Param("pathList") List pathList); + // TODO // List selectViewApplyRecordList(@Param("pageReqVO") RecordRecordPageReqVO pageReqVO); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java index 54dc13fb..0d291607 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java @@ -56,6 +56,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.IntStream; +import static cn.hutool.json.XMLTokener.entity; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; @@ -118,7 +119,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn updateReqVO.setBusinessType(businessType); // 删除明细-->重新添加 int i = recordApplyDetailService.deleteRecordApplyDetailByApplyId(recordApplyDO.getId()); - if (i>0){ + if (i > 0) { createApplyDetailData(updateReqVO, recordApplyDO); } @@ -163,7 +164,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (businessType.equals(RecordConstants.BusinessType.DISTRIBUTION)) recordApplyDetailDOS = recordApplyDetailService.selectDistributionDetailAndRecordList(id); else - recordApplyDetailDOS=recordApplyDetailService.selectDetailAndRecordList(id); + recordApplyDetailDOS = recordApplyDetailService.selectDetailAndRecordList(id); if (!recordApplyDetailDOS.isEmpty()) recordApplyDO.setDetailList(recordApplyDetailDOS); return recordApplyDO; } @@ -186,7 +187,8 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordApply.setApplyUserName(nickName); Long visitDeptId = loginUser.getVisitDeptId(); // 获取当前用户所在的部门 - if (ObjectUtils.isEmpty(visitDeptId)) throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(),"获取当前部门信息失败"); + if (ObjectUtils.isEmpty(visitDeptId)) + throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "获取当前部门信息失败"); recordApply.setApplyDepartmentId(visitDeptId); recordApply.setApplyDepartmentName(loginUser.getVisitDeptName()); @@ -212,10 +214,10 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn // TODO RecordApplyDO recordApply = createApply(param); - return createApplyDetailData(param,recordApply); + return createApplyDetailData(param, recordApply); } - public CommonResult createApplyDetailData(RecordApplySaveReqVO param,RecordApplyDO recordApply){ + public CommonResult createApplyDetailData(RecordApplySaveReqVO param, RecordApplyDO recordApply) { List detailSaveReqVOList = new ArrayList<>(); String businessType = param.getBusinessType(); if (ObjectUtils.isEmpty(businessType)) @@ -536,14 +538,30 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordRecordService.updateRecordRecordById(recordDO); return true; } else { - // 把状态改为0 - recordDO.setRecordStatus(0); // 未生效 - recordRecordService.updateRecordRecordById(recordDO); + // 判断是否到生效日期 + RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); + recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); } } return false; } + // 判断文件记录生效状态 + public RecordRecordDO isEffective(RecordRecordDO recordDO) { + LocalDateTime effectiveDate = recordDO.getEffectiveDate(); + if (effectiveDate == null) { // 没有生效日期,立即生效 + recordDO.setRecordStatus(1); + } else { + LocalDateTime now = LocalDateTime.now(); + if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { + recordDO.setRecordStatus(1); // 已生效 + } else { + recordDO.setRecordStatus(3); // 待生效 + } + } + return recordDO; + } + public void updateReviewFlag(Long applyId) { // Long[] recordIdS = param.getRecordIdS(); List recordApplyDetailDOS = recordApplyDetailService.selectAllList(applyId); @@ -699,7 +717,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn .findFirst() .orElse(null); - log.info("firstActivityFlag:{}",firstActivityFlag); + log.info("firstActivityFlag:{}", firstActivityFlag); if ("1".equals(firstActivityFlag)) { // 执行到申请人节点,待处理 if (PROCESS_STATUS.equals("1")) { @@ -802,14 +820,15 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn entity.setRecordStatus(3); // 待生效 } } else { - entity.setRecordStatus(1); // 默认已生效 + entity.setRecordStatus(1); // 默认已生效 } + RecordRecordDO effectiveRecordRecordDO = isEffective(entity); // 修改状态 - recordApplyFlowStatus(entity); + recordApplyFlowStatus(effectiveRecordRecordDO); } // 评审通过,处理修改修改的文件,走更改申请流程 - public void reviewCallHandle(List recordApplyDetailDOS){ + public void reviewCallHandle(List recordApplyDetailDOS) { List detailDOList = new ArrayList<>(); // 1条申请----> 多条明细记录 ----> 多条文件记录 for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { @@ -861,7 +880,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 用户Id permissionDO.setTargetType(RecordConstants.TargetType.USER); permissionDO.setTargetName(loginUserNickname); - } else if (targetType.equals(RecordConstants.TargetType.DEPT)){ // 部门 + } else if (targetType.equals(RecordConstants.TargetType.DEPT)) { // 部门 permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 部门Id permissionDO.setTargetType(RecordConstants.TargetType.DEPT); permissionDO.setTargetName(visitDeptName); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryService.java index 716fe279..8a0c7a00 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryService.java @@ -73,4 +73,5 @@ public interface RecordCategoryService { List getReviewRecordList(); + List selectCategoryAppraisalList(String appraisalFlag); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java index 78e0b793..417521ed 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordcategory/RecordCategoryServiceImpl.java @@ -186,6 +186,13 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { return BeanUtils.toBean(recordCategories, RecordCategoryRespVO.class); } + @Override + public List selectCategoryAppraisalList(String appraisalFlag) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.like(RecordCategoryDO::getCustomConfig,"%" + appraisalFlag + "%"); + return recordCategoryMapper.selectList(queryWrapper); + } + @Transactional(rollbackFor = Exception.class) @Override public void updateRecordCategory(RecordCategorySaveReqVO updateReqVO) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java index 4032126f..a3ef6561 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java @@ -138,7 +138,26 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Override public List getRecordList(RecordRecordPageReqVO pageReqVO) { + String appraisalFlag = pageReqVO.getAppraisalFlag(); Long categoryId = pageReqVO.getCategoryId(); + if (appraisalFlag.equals("1")) { // 评审获取所有需要参加评审的列表 + // 查询所有 根分类上 appraisalFlag 为 1 的数据 + String appraisal = "\"appraisalFlag\":" + 1 + ","; + + List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal); + // 获取所有 分类id + List categoryIdPath = new ArrayList<>(); + recordCategoryDOS.forEach(item -> { + Long id = item.getId(); + String idPath = "/0//" + id +"//"; // 根分类的路径 + categoryIdPath.add(idPath); + }); + if (ObjectUtils.isEmpty(categoryIdPath)) return new ArrayList<>(); + // 查询 分类下面所有的记录 + List recordRecordDOS = recordRecordMapper.selectRecordByIdPathLike(pageReqVO, categoryIdPath); + return BeanUtils.toBean(recordRecordDOS, RecordRecordRespVO.class); + + } RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); if (categoryId == null) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); @@ -146,24 +165,24 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (ObjectUtils.isEmpty(recordCategoryDO)) return new ArrayList<>(); String idPath = recordCategoryDO.getIdPath(); + if (ObjectUtils.isEmpty(idPath)) return new ArrayList<>(); Long rootCategoryId = getRootCategoryId(idPath); // 判断是否有权限 // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) List recordPermissionDOS = recordPermissionService.selectPermissionList(rootCategoryId, null); - List recordRecordList = new ArrayList<>(); + List recordRecordList ; if (recordPermissionDOS.isEmpty()) return new ArrayList<>(); - Long parentId = getRootCategoryId(idPath); String businessType = pageReqVO.getBusinessType(); if (ObjectUtils.isEmpty(businessType)) return new ArrayList<>(); switch (businessType) { case RecordConstants.BusinessType.REVIEW: // 评审 // TODO - boolean b = getRecordReviewList(parentId); + boolean b = getRecordReviewList(rootCategoryId); if (!b) return new ArrayList<>(); // 查询评审---记录列表 break; @@ -333,8 +352,34 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 校验分类存在 if (ObjectUtils.isEmpty(recordCategoryDO)) return new PageResult().setTotal(0L); String idPath = recordCategoryDO.getIdPath(); + if (ObjectUtils.isEmpty(idPath)) return new PageResult().setTotal(0L); Long parentId = getRootCategoryId(idPath); +// String businessType = pageReqVO.getBusinessType(); +// if (ObjectUtils.isEmpty(businessType)) return new PageResult().setTotal(0L); +// List recordRecordList; +// switch (businessType) { +// case RecordConstants.BusinessType.REVIEW: // 评审 +// // TODO +// boolean b = getRecordReviewList(parentId); +// if (!b) return new PageResult().setTotal(0L); +// // 查询评审---记录列表 +// break; +// case RecordConstants.BusinessType.DISTRIBUTION, +// RecordConstants.BusinessType.RECORD_UPDATE, +// RecordConstants.BusinessType.INVALID: // 修改 +// //TODO +//// List recordRecordDOS = this.selectViewApplyRecordList(pageReqVO); +//// return new PageResult().setList(recordRecordDOS).setTotal((long) recordRecordDOS.size()); +// break; +// case RecordConstants.BusinessType.VIEW_APPLY: // 查看申请,默认查看所有 +// pageReqVO.setBusinessType(null);// +// // 参数 categoryId +// // TODO +// PageResult iPage = recordRecordMapper.selectPage(pageReqVO); +// PageResult result = new PageResult<>(iPage.getList(), iPage.getTotal()); +// return result; +// } // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null); @@ -350,7 +395,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { } // 设置默认查询最新版 - pageReqVO.setCurrentFlag(1); +// pageReqVO.setCurrentFlag(1); // 多表关联分页查询(关联 RecordApply 获取文件提交信息) IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.xml index 590ba88a..cbf43c01 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordRecordMapper.xml @@ -1,18 +1,13 @@ - + - - + SELECT + , (SELECT tra.ID FROM t_rcd_apl_dtl trad INNER JOIN t_rcd_apl tra ON trad.APL_ID = tra.ID AND tra.BSN_TP = '文件提交' @@ -102,46 +109,79 @@ - + SELECT DISTINCT + FROM T_RCD_RCD trr - LEFT JOIN T_RCD_PERM trp ON trp.SRC_ID = trr.ID + LEFT JOIN T_RCD_PERM trp ON trp.SRC_ID = trr.ID WHERE - trr.deleted = 0 - AND trp.SRC_TP = '记录' - AND trp.PERM = '可查看' - AND trr.CTGR_ID = #{pageReqVO.categoryId} - - AND trr.CD = #{pageReqVO.code} - - - AND trr.NAME LIKE CONCAT('%', #{pageReqVO.name}, '%') - + trr.deleted = 0 + AND trp.SRC_TP = '记录' + AND trp.PERM = '可查看' + AND trr.CTGR_ID = #{pageReqVO.categoryId} + + AND trr.CD = #{pageReqVO.code} + + + AND trr.NAME LIKE CONCAT('%', #{pageReqVO.name}, '%') + + AND ( + ( trp.tgt_id = #{userId} AND trp.tgt_tp = '用户') + OR + (trp.tgt_tp = '部门' AND trp.tgt_id IN + + #{deptId} + + ) + ) + + + \ No newline at end of file From f8574d009ee7622b8fd6c0c799a454f1fafa9796 Mon Sep 17 00:00:00 2001 From: YBP Date: Mon, 16 Mar 2026 13:50:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95-?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=B0=E5=BD=95=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-local.yml | 2 +- qms-server/src/main/resources/application.yml | 3 +- .../recordrecord/RecordRecordController.java | 64 +++++++++++++++++++ .../resource/record/job/RecordRecordJob.java | 40 ++++++++++++ .../recordapply/RecordApplyServiceImpl.java | 41 +++++++----- .../recordrecord/RecordRecordService.java | 7 ++ .../recordrecord/RecordRecordServiceImpl.java | 17 +++++ 7 files changed, 155 insertions(+), 19 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java diff --git a/qms-server/src/main/resources/application-local.yml b/qms-server/src/main/resources/application-local.yml index 1728cedd..156238cf 100644 --- a/qms-server/src/main/resources/application-local.yml +++ b/qms-server/src/main/resources/application-local.yml @@ -65,7 +65,7 @@ rocketmq: xxl: job: admin: - addresses: http://172.16.46.63:30082/xxl-job-admin # 调度中心部署跟地址 + addresses: http://192.168.26.116:888/xxl-job-admin # 调度中心部署跟地址 # Lock4j 配置项 lock4j: diff --git a/qms-server/src/main/resources/application.yml b/qms-server/src/main/resources/application.yml index 932188ed..c46b1b17 100644 --- a/qms-server/src/main/resources/application.yml +++ b/qms-server/src/main/resources/application.yml @@ -97,7 +97,8 @@ easy-trans: xxl: job: executor: - appname: ${spring.application.name} # 执行器 AppName +# appname: ${spring.application.name} # 执行器 AppName + appname: xxl-job-executor-sample # 执行器 AppName logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 accessToken: default_token # 执行器通讯TOKEN diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java index f18648eb..7c349f08 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java @@ -1,6 +1,8 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.framework.security.core.LoginUser; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.resource.clientManage.controller.vo.VersionManagementRespVO; import com.zt.plat.module.qms.resource.record.constant.RecordConstants; @@ -14,6 +16,9 @@ import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.R import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.service.recordcategory.RecordCategoryService; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.dept.dto.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -42,10 +47,12 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_PERMISSION_NOT_ALLOW; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; +@Slf4j @Tag(name = "管理后台 - 文件、模板、记录") @RestController @RequestMapping("/qms/resource/record-record") @@ -69,6 +76,43 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Resource private BusinessFileService businessFileService; +// @Resource +// private DeptApi deptApi; + +// @GetMapping("/deptList") +// @Operation(summary = "获得文件记录关系") + //@PreAuthorize("@ss.hasPermission('qms:record-relation:query')") +// public CommonResult> getRecordRelation() { +// // 获取当前部门的所有子部门 +// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); +// Long visitCompanyId = loginUser.getVisitCompanyId(); +// log.info("visitCompanyId:{}", visitCompanyId); +// Long deptId = loginUser.getVisitDeptId(); +// DeptListReqDTO dto = new DeptListReqDTO(); +// List deptIds = new ArrayList<>(); +// deptIds.add(deptId.toString()); +// dto.setIds(deptIds); +// CommonResult> deptList = deptApi.getDeptList(dto); +// log.info("deptList:{}", deptList); +// // 获取当前所属公司下面的所有的部门 +// if (visitCompanyId != null) { +//// return deptApi.getChildDeptList(visitCompanyId); +// CommonResult> allCompanyList = deptApi.getAllCompanyList(); +// log.info("allCompanyList:{}", allCompanyList); +// DeptSimpleRespDTO deptSimpleRespDTO = allCompanyList.getData().get(0); +// deptSimpleRespDTO.getIsCompany(); +// log.info("deptSimpleRespDTO:{}", deptSimpleRespDTO); +// CommonResult> childDeptList = deptApi.getChildDeptList(deptId); +// log.info("childDeptList:{}", childDeptList); +// CommonResult> companyDeptInfoListByUserId = deptApi.getCompanyDeptInfoListByUserId(loginUser.getId()); +// log.info("companyDeptInfoListByUserId:{}", companyDeptInfoListByUserId); +// return childDeptList; +// } +// Long visitDeptId = loginUser.getVisitDeptId(); +// if (visitDeptId == null) return CommonResult.error(RECORD_PERMISSION_NOT_ALLOW.getCode(), "用户部门不存在"); +// return deptApi.getChildDeptList(visitDeptId); +// } + @PostMapping("/create") @Operation(summary = "创建文件、模板、记录->分类明细") @@ -151,5 +195,25 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); } + // 已由 XXL-Job 定时任务(updateRecordStatusJob)驱动,此接口保留用于手动触发/测试 + @GetMapping("/timing-updateRecordStatus") + @Operation(summary = "定时更新文件、模板、记录状态") + //@PreAuthorize("@ss.hasPermission('qms:record-record:update')") + public CommonResult timingUpdateRecordStatus() { + recordRecordService.updateRecordStatus(); + return success(true); + } + /** + * 通过定时任务,判断文件是否到期(到期自动作废) + * @return + */ + // 已由 XXL-Job 定时任务(XXX)驱动,此接口保留用于手动触发/测试 +// @GetMapping("/timing-updateRecordStatus") +// @Operation(summary = "定时更新文件、模板、记录状态") +// //@PreAuthorize("@ss.hasPermission('qms:record-record:update')") +// public CommonResult timingUpdateRecordStatus() { +// recordRecordService.updateRecordStatus(); +// return success(true); +// } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java new file mode 100644 index 00000000..e689bbd8 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java @@ -0,0 +1,40 @@ +package com.zt.plat.module.qms.resource.record.job; + +import com.xxl.job.core.context.XxlJobHelper; +import com.xxl.job.core.handler.annotation.XxlJob; +import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 文件记录相关定时任务 + */ +@Component +@Slf4j +public class RecordRecordJob { + + @Autowired + private RecordRecordService recordRecordService; + + /** + * 定时更新文件记录生效状态 + * 检测 effectiveDate <= 当前时间 且 recordStatus != 1 的记录,将其更新为已生效(recordStatus = 1) + * + * JobHandler 名称: updateRecordStatusJob + * 推荐 Cron: 0 0 0 * * ?(每天零点执行) + */ + @XxlJob("updateRecordStatusJob") + public void updateRecordStatusJob() { + log.info("[updateRecordStatusJob] 开始执行文件记录生效状态更新任务"); + try { + Integer updateCount = recordRecordService.updateRecordStatus(); + log.info("[updateRecordStatusJob] 任务执行成功,共更新 {} 条记录", updateCount); + XxlJobHelper.handleSuccess(String.format("任务执行成功,共更新 %d 条记录", updateCount)); + } catch (Exception e) { + log.error("[updateRecordStatusJob] 任务执行失败:{}", e.getMessage(), e); + throw e; + } + } + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java index 0d291607..6f3fe0b0 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java @@ -529,20 +529,25 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn throw exception(RECORD_APPLY_NOT_EXISTS); RecordCategoryDO category = recordCategoryService.getRecordCategory(Long.valueOf(s)); String customConfig = category.getCustomConfig(); - if (!ObjectUtils.isEmpty(customConfig)) { - JSONObject jsonObject = JSONObject.parseObject(customConfig); - Integer submitFlag = jsonObject.getInteger("submitFlag"); - if (submitFlag == 0) { - // 不允许提交,直接修改文件记录状态 - recordDO.setRecordStatus(1); // 已生效 - recordRecordService.updateRecordRecordById(recordDO); - return true; - } else { - // 判断是否到生效日期 - RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); - recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); - } + if (ObjectUtils.isEmpty(customConfig)) { // 空,直接判断是否到生效日期 + // 判断是否到生效日期 + RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); + recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); + return true; } + JSONObject jsonObject = JSONObject.parseObject(customConfig); + Integer submitFlag = jsonObject.getInteger("submitFlag"); + if (submitFlag == 0) { + // 不允许提交,直接修改文件记录状态 + recordDO.setRecordStatus(1); // 已生效 + recordRecordService.updateRecordRecordById(recordDO); + return true; + } else { + // 判断是否到生效日期 + RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); + recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); + } + return false; } @@ -555,9 +560,10 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn LocalDateTime now = LocalDateTime.now(); if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { recordDO.setRecordStatus(1); // 已生效 - } else { - recordDO.setRecordStatus(3); // 待生效 } +// else { +// recordDO.setRecordStatus(3); // 待生效 +// } } return recordDO; } @@ -816,9 +822,10 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn LocalDateTime now = LocalDateTime.now(); if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { entity.setRecordStatus(1); // 已生效 - } else { - entity.setRecordStatus(3); // 待生效 } +// else { +// entity.setRecordStatus(0); // 待生效 +// } } else { entity.setRecordStatus(1); // 默认已生效 } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java index 33dd4d98..838052c2 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java @@ -90,6 +90,13 @@ public interface RecordRecordService { List getRecordList(RecordRecordPageReqVO pageReqVO); + /** + * 定时任务:将生效日期已到的记录状态更新为已生效(recordStatus = 1) + * + * @return 更新条数 + */ + Integer updateRecordStatus(); + /** * 文件更改申请流程-- 查询文件记录数据 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java index a3ef6561..f0f524b6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -33,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -452,5 +454,20 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordRecordMapper.selectPage(pageReqVO); } + /** + * 定时任务:将生效日期已到的记录状态更新为已生效(recordStatus = 1) + * 筛选条件:effectiveDate <= 当前时间 且 recordStatus != 1 + */ + @Override + public Integer updateRecordStatus() { + LocalDateTime now = LocalDateTime.now(); + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.isNotNull(RecordRecordDO::getEffectiveDate) + .le(RecordRecordDO::getEffectiveDate, now) + .ne(RecordRecordDO::getRecordStatus, 1) + .set(RecordRecordDO::getRecordStatus, 1); + return recordRecordMapper.update(null, updateWrapper); + } + } \ No newline at end of file