From da2d9f640c1335cf3416e4b04e6540bb0eb56132 Mon Sep 17 00:00:00 2001 From: YBP Date: Thu, 19 Mar 2026 08:27:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95-=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E7=94=B3=E8=AF=B7-=E6=9F=A5=E8=AF=A2=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recordrecord/RecordRecordController.java | 41 ++- .../record/dal/mapper/RecordRecordMapper.java | 7 +- .../recordapply/RecordApplyServiceImpl.java | 10 +- .../recordcategory/RecordCategoryService.java | 2 +- .../RecordCategoryServiceImpl.java | 3 +- .../recordrecord/RecordRecordService.java | 17 +- .../recordrecord/RecordRecordServiceImpl.java | 275 +++++++++++++----- .../record/dal/mapper/RecordRecordMapper.xml | 98 +++++-- 8 files changed, 339 insertions(+), 114 deletions(-) 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 50c60a81..3c340f8a 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 @@ -43,12 +43,12 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_PERMISSION_ @Validated //@DeptDataPermissionIgnore(enable = "true") @FileUploadController(source = "qms.recordrecord", codeKey = "data.fileUploadBusinessCode") -public class RecordRecordController extends AbstractFileUploadController implements BusinessControllerMarker{ +public class RecordRecordController extends AbstractFileUploadController implements BusinessControllerMarker { static { FileUploadController annotation = RecordRecordController.class.getAnnotation(FileUploadController.class); if (annotation != null) { - setFileUploadInfo(annotation); + setFileUploadInfo(annotation); } } @@ -125,7 +125,7 @@ public class RecordRecordController extends AbstractFileUploadController impleme @DeleteMapping("/delete-list") @Parameter(name = "ids", description = "编号", required = true) @Operation(summary = "批量删除文件、模板、记录") - //@PreAuthorize("@ss.hasPermission('qms:record-record:delete')") + //@PreAuthorize("@ss.hasPermission('qms:record-record:delete')") public CommonResult deleteRecordRecordList(@RequestBody BatchDeleteReqVO req) { recordRecordService.deleteRecordRecordListByIds(req.getIds()); return success(true); @@ -150,13 +150,29 @@ public class RecordRecordController extends AbstractFileUploadController impleme PageResult pageResult; Integer isQueryHistory = pageReqVO.getIsQueryHistory(); if (isQueryHistory != null && isQueryHistory == 1) { // 查询历史分页 - pageResult=recordRecordService.getRecordHistoryPage(pageReqVO); - }else { + pageResult = recordRecordService.getRecordHistoryPage(pageReqVO); + } else { pageResult = recordRecordService.getRecordRecordPage(pageReqVO); } return success(BeanUtils.toBean(pageResult, RecordRecordRespVO.class)); } + /** + * 查询有效和即将生效的文件记录 + * 分发、作废、更改 + * + * @param pageReqVO + * @return + */ + @GetMapping("/getEffectiveRecordPage") + @Operation(summary = "获得文件、模板、记录分页") + //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") + public CommonResult> getEffectiveRecordPage(@Valid RecordRecordPageReqVO pageReqVO) { + PageResult pageResult; + pageResult = recordRecordService.getEffectiveRecordPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, RecordRecordRespVO.class)); + } + // TODO @GetMapping("/getMatchedPermissionList") @Operation(summary = "获得记录权限列表") @@ -169,7 +185,7 @@ public class RecordRecordController extends AbstractFileUploadController impleme } - // 流程--查询记录列表 + // 流程-评审--查询记录列表 @GetMapping("/getRecordList") @Operation(summary = "获得文件、模板、记录分页") //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") @@ -179,6 +195,19 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); } + /** + * 流程-查看申请--查询记录列表 + * 参数: + * categoryId + */ + @GetMapping("/getLookRecordList") + @Operation(summary = "获得文件、模板、记录分页") + //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") + public CommonResult> getLookRecordList(RecordRecordPageReqVO pageReqVO) { + PageResult result = recordRecordService.getLookRecordList(pageReqVO); + return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); + } + // 已由 XXL-Job 定时任务(updateRecordStatusJob)驱动,此接口保留用于手动触发/测试 @GetMapping("/timing-updateRecordStatus") @Operation(summary = "定时更新文件、模板、记录状态") 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 e59d7fd0..9586f824 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 @@ -93,12 +93,17 @@ public interface RecordRecordMapper extends BaseMapperX { /** * 通过 idPath 模糊查询 关联的文件记录 + * * @param pathList * @return */ - List selectRecordByIdPathLike(@Param("reqVO") RecordRecordPageReqVO reqVO, + IPage selectRecordByIdPathLike(Page page, + @Param("reqVO") RecordRecordPageReqVO reqVO, @Param("pathList") List pathList); + IPage getEffectiveRecordPage(Page page, + RecordRecordPageReqVO reqVO); + // 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 36c002ab..fd4396f1 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 @@ -758,9 +758,9 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { entity.setRecordStatus(1); // 已生效 } -// else { -// entity.setRecordStatus(0); // 待生效 -// } + else { + entity.setRecordStatus(3); // 待生效 + } } else { entity.setRecordStatus(1); // 默认已生效 } @@ -810,11 +810,15 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn queryWrapper.in(RecordPermissionDO::getSourceId,list); // 记录id List recordPermissionDOS = recordPermissionService.selectList(queryWrapper); List recordPermissionDOList = new ArrayList<>(); + List permissionIds = new ArrayList<>(); for (RecordPermissionDO recordPermissionDO : recordPermissionDOS) { recordPermissionDO.setCancelFlag("1"); +// recordPermissionDO.setDeleted(true); recordPermissionDOList.add(recordPermissionDO); } recordPermissionService.updateRecordPermissionBatch(recordPermissionDOList); + // 回收权限 + recordPermissionService.deleteRecordPermissionListByIds(permissionIds); } /** 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 8a0c7a00..bb2a3145 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,5 +73,5 @@ public interface RecordCategoryService { List getReviewRecordList(); - List selectCategoryAppraisalList(String appraisalFlag); + List selectCategoryAppraisalList(String appraisalFlag,Long categoryRootId); } \ 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 417521ed..5507794a 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 @@ -187,9 +187,10 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { } @Override - public List selectCategoryAppraisalList(String appraisalFlag) { + public List selectCategoryAppraisalList(String appraisalFlag,Long categoryRootId) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); queryWrapper.like(RecordCategoryDO::getCustomConfig,"%" + appraisalFlag + "%"); + if (categoryRootId != null) queryWrapper.eq(RecordCategoryDO::getId, categoryRootId); return recordCategoryMapper.selectList(queryWrapper); } 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 838052c2..02d4db81 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 @@ -1,18 +1,13 @@ package com.zt.plat.module.qms.resource.record.service.recordrecord; -import java.util.*; - -import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO; -import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplySaveReqVO; +import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO; -import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; -import jakarta.validation.*; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; -import com.zt.plat.framework.common.pojo.PageResult; -import org.apache.ibatis.annotations.Param; +import jakarta.validation.Valid; + +import java.util.List; /** * 文件、模板、记录 Service 接口 @@ -97,6 +92,10 @@ public interface RecordRecordService { */ Integer updateRecordStatus(); + PageResult getEffectiveRecordPage(RecordRecordPageReqVO pageReqVO); + + PageResult getLookRecordList(RecordRecordPageReqVO pageReqVO); + /** * 文件更改申请流程-- 查询文件记录数据 */ 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 df1ffb23..2764ab7d 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 @@ -1,6 +1,8 @@ package com.zt.plat.module.qms.resource.record.service.recordrecord; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.jwt.JWT; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -13,9 +15,13 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.resource.record.common.RecordCommonUtils; import com.zt.plat.module.qms.resource.record.constant.RecordConstants; +import com.zt.plat.module.qms.common.onlyOffice.controller.vo.OnlyOfficeEditorConfigRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO; @@ -25,9 +31,12 @@ import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.Record import com.zt.plat.module.qms.resource.record.dal.mapper.RecordRecordMapper; 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.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -37,9 +46,9 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Optional; -import java.util.concurrent.atomic.AtomicBoolean; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.infra.enums.ErrorCodeConstants.DOC_NOT_EXISTS; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; /** @@ -84,6 +93,49 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (parentId != null && parentId == 0) throw new RuntimeException("根节点不允许直接添加文件记录信息!"); recordRecord.setCurrentFlag(1);// 是否新版本 try { + String idPath = recordCategoryDO.getIdPath(); + Long rootCategoryId = getRootCategoryId(idPath); + RecordCategoryDO category = recordCategoryService.getRecordCategory(rootCategoryId); + String customConfig = category.getCustomConfig(); + LocalDateTime effectiveDate = recordRecord.getEffectiveDate(); + LocalDateTime expirationDate = recordRecord.getExpirationDate(); + + // if (!ObjectUtils.isEmpty(customConfig)) { + // JSONObject jsonObject = JSONObject.parseObject(customConfig, JSONObject.class); + // Integer submitFlag = jsonObject.getInteger("submitFlag"); + // if (submitFlag == 0){ + // if (effectiveDate == null) recordRecord.setRecordStatus(1); // 立即生效 + // else if (effectiveDate.isAfter(LocalDateTime.now())) { + // recordRecord.setRecordStatus(3); // 当前日期 < 生效日期,待生效 + // } else if (effectiveDate.isBefore(LocalDateTime.now()) || effectiveDate.isEqual(LocalDateTime.now())) { + // if (expirationDate.isAfter(LocalDateTime.now())) { + // recordRecord.setRecordStatus(1); // 生效日期 ≤ 当前日期 < 过期日期,生效中 + // } else { + // recordRecord.setRecordStatus(0); // 当前日期 ≥ 过期日期,已过期 + // } + // } else { + // recordRecord.setRecordStatus(0); // 默认已过期 + // } + // } + // }else { + // // 判断是否生效 + // if (effectiveDate == null) recordRecord.setRecordStatus(1); // 立即生效 + // else if (effectiveDate.isAfter(LocalDateTime.now())) { + // recordRecord.setRecordStatus(3); // 当前日期 < 生效日期,待生效 + // } else if (effectiveDate.isBefore(LocalDateTime.now()) || effectiveDate.isEqual(LocalDateTime.now())) { + // if (expirationDate.isAfter(LocalDateTime.now())) { + // recordRecord.setRecordStatus(1); // 生效日期 ≤ 当前日期 < 过期日期,生效中 + // } else { + // recordRecord.setRecordStatus(0); // 当前日期 ≥ 过期日期,已过期 + // } + // } else { + // recordRecord.setRecordStatus(0); // 默认已过期 + // } + // } + if (ObjectUtils.isEmpty(customConfig)) { //不需要提交,判断状态 + int sts = calculateRecordStatus(effectiveDate, expirationDate); + recordRecord.setRecordStatus(sts); + } recordRecordMapper.insert(recordRecord); recordRecord.setMainId(recordRecord.getId()); recordRecordMapper.updateById(recordRecord); @@ -93,6 +145,38 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 返回 return BeanUtils.toBean(recordRecord, RecordRecordRespVO.class); } + /** + * 计算记录状态 + * @param effectiveDate 生效日期 + * @param expirationDate 过期日期 + * @return 记录状态:1-生效中,3-待生效,0-已过期 + */ + private int calculateRecordStatus(LocalDateTime effectiveDate, LocalDateTime expirationDate) { + LocalDateTime now = LocalDateTime.now(); + + // 如果生效日期为空,立即生效 + if (effectiveDate == null) { + return 1; + } + + // 当前日期 < 生效日期,待生效 + if (effectiveDate.isAfter(now)) { + return 3; + } + + // 生效日期 ≤ 当前日期,判断是否过期 + if (effectiveDate.isBefore(now) || effectiveDate.isEqual(now)) { + // 当前日期 < 过期日期,生效中 + if (expirationDate != null && expirationDate.isAfter(now)) { + return 1; + } + // 当前日期 ≥ 过期日期,已过期 + return 0; + } + + // 默认已过期 + return 0; + } public RecordRecordRespVO saveDataWithNewVersion(RecordRecordDO createReqVO) { RecordRecordDO recordRecordDO = BeanUtils.toBean(createReqVO, RecordRecordDO.class); @@ -103,6 +187,19 @@ public class RecordRecordServiceImpl implements RecordRecordService { lambdaQueryWrapper.eq(RecordRecordDO::getCurrentFlag, 1); // 0,旧版本 recordRecordMapper.update(recordRecordDO, lambdaQueryWrapper); + Long categoryId = recordRecordDO.getCategoryId(); + RecordCategoryDO recordCategoryDO = recordCategoryService.selectById(categoryId); + String idPath = recordCategoryDO.getIdPath(); + Long rootCategoryId = getRootCategoryId(idPath); + + RecordCategoryDO recordCategory = recordCategoryService.selectById(rootCategoryId); + String customConfig = recordCategory.getCustomConfig(); + if (ObjectUtils.isEmpty(customConfig)) { //不需要提交,判断状态 + LocalDateTime effectiveDate = recordRecordDO.getEffectiveDate(); + LocalDateTime expirationDate = recordRecordDO.getExpirationDate(); + int sts = calculateRecordStatus(effectiveDate, expirationDate); + recordRecordDO.setRecordStatus(sts); + } //创建新版本 recordRecordDO.setId(null); recordRecordDO.setCurrentFlag(1); @@ -142,11 +239,14 @@ public class RecordRecordServiceImpl implements RecordRecordService { String appraisalFlag = pageReqVO.getAppraisalFlag(); Long categoryId = pageReqVO.getCategoryId(); + + Page page = new Page<>(1, 999); + if (appraisalFlag.equals("1")) { // 评审获取所有需要参加评审的列表 // 查询所有 根分类上 appraisalFlag 为 1 的数据 String appraisal = "\"appraisalFlag\":" + 1 + ","; - List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal); + List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal,null); // 获取所有 分类id List categoryIdPath = new ArrayList<>(); recordCategoryDOS.forEach(item -> { @@ -156,10 +256,12 @@ public class RecordRecordServiceImpl implements RecordRecordService { }); if (ObjectUtils.isEmpty(categoryIdPath)) return new ArrayList<>(); // 查询 分类下面所有的记录 - List recordRecordDOS = recordRecordMapper.selectRecordByIdPathLike(pageReqVO, categoryIdPath); - return BeanUtils.toBean(recordRecordDOS, RecordRecordRespVO.class); + pageReqVO.setRecordStatus(1); + IPage recordRecordDOS = recordRecordMapper.selectRecordByIdPathLike(page, pageReqVO, categoryIdPath); + return BeanUtils.toBean(recordRecordDOS.getRecords(), RecordRecordRespVO.class); } + // TODO 待删除 RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); if (categoryId == null) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); @@ -178,37 +280,17 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (recordPermissionDOS.isEmpty()) return new ArrayList<>(); + boolean b = getRecordReviewList(rootCategoryId); + if (!b) return new ArrayList<>(); + String businessType = pageReqVO.getBusinessType(); if (ObjectUtils.isEmpty(businessType)) return new ArrayList<>(); - switch (businessType) { - case RecordConstants.BusinessType.REVIEW: // 评审 - // TODO - boolean b = getRecordReviewList(rootCategoryId); - if (!b) return new ArrayList<>(); - // 查询评审---记录列表 - 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 recordRecordDOPageResult = recordRecordMapper.selectPage(pageReqVO); - recordRecordList = recordRecordDOPageResult.getList(); - return BeanUtils.toBean(recordRecordList, RecordRecordRespVO.class); - } - pageReqVO.setRecordStatus(1); // 查询当前有效和 即将生效的文件 pageReqVO.setCancelFlag(0); // 作废状态 pageReqVO.setExpirationStatus(0); // 过期状态 - Page page = new Page<>(1, 999); + IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); // PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); @@ -236,8 +318,22 @@ public class RecordRecordServiceImpl implements RecordRecordService { } else {// 新版本 // 是否回收 Integer collectionFlag = updateReqVO.getCollectionFlag(); - if (collectionFlag != null) { // 不为null, 回收旧版本权限 + if (collectionFlag != null && collectionFlag == 1) { // 不为null, 回收旧版本权限 // TODO + // 回收文件权限 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RecordPermissionDO::getSourceType, RecordConstants.PermissionSourceType.RECORD); + queryWrapper.eq(RecordPermissionDO::getSourceId,updateObj.getId()); // 记录id + List recordPermissionDOS = recordPermissionService.selectList(queryWrapper); + List recordPermissionDOList = new ArrayList<>(); + List permissionIds = new ArrayList<>(); + for (RecordPermissionDO recordPermissionDO : recordPermissionDOS) { + recordPermissionDO.setCancelFlag("1"); + recordPermissionDOList.add(recordPermissionDO); + } + if (!ObjectUtils.isEmpty(recordPermissionDOList)) recordPermissionService.updateRecordPermissionBatch(recordPermissionDOList); + // 回收权限 + if (!ObjectUtils.isEmpty(permissionIds)) recordPermissionService.deleteRecordPermissionListByIds(permissionIds); } // 创建新版本 return saveDataWithNewVersion(updateObj); @@ -308,23 +404,10 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Override public RecordRecordDO getRecordRecord(Long id) { RecordRecordDO recordRecordDO = recordRecordMapper.selectById(id); -// hasPermissionByCategoryId(recordRecordDO.getCategoryId()); if (!ObjectUtils.isEmpty(recordRecordDO)) { Long categoryId = recordRecordDO.getCategoryId(); RecordCategoryDO recordCategoryDO = recordCategoryService.selectById(categoryId); recordRecordDO.setCategoryName(recordCategoryDO.getName()); -// // 判断当前操作记录可执行的权限 -// Long parentId = recordCategoryDO.getParentId(); -// String dept = RecordConstants.TargetType.DEPT; -// String role = RecordConstants.TargetType.ROLE; -// List permissionDOList = judgeIsAdmin(parentId,dept,role); -// if (!ObjectUtils.isEmpty(permissionDOList)){ -// // 查询 category 的父级Id -// if (ObjectUtils.isEmpty(parentId)) throw exception(RECORD_RECORD_NOT_EXISTS); -// Object finalParse = customConfigParseJson(parentId); -// recordRecordDO.setCustomConfig(finalParse); -// } - } return recordRecordDO; } @@ -353,44 +436,30 @@ public class RecordRecordServiceImpl implements RecordRecordService { Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + String idPath = recordCategoryDO.getIdPath(); + if (ObjectUtils.isEmpty(recordCategoryDO)) return new PageResult().setTotal(0L); + + if (ObjectUtils.isEmpty(idPath)) return new PageResult().setTotal(0L); + + // 校验分类存在 + Long parentId = getRootCategoryId(idPath); + boolean b = recordPermissionService.judgeIsAdmin();// 如果是最高管理员 if (b) { IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); + + Object finalParse = customConfigParseJson(parentId); + result.getList().forEach(record -> { + try { + record.setCustomConfig(finalParse); + } catch (Exception e) { + throw exception(RECORD_RECORD_NOT_EXISTS); + } + }); return result; } - // 校验分类存在 - 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, null); @@ -487,5 +556,65 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordRecordMapper.update(null, updateWrapper); } + @Override + public PageResult getEffectiveRecordPage(RecordRecordPageReqVO pageReqVO) { + Long categoryId = pageReqVO.getCategoryId(); + RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); + if (categoryId == null) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + + boolean b = recordPermissionService.judgeIsAdmin();// 如果是最高管理员 + if (b) { + IPage recordRecordDOPageResult = recordRecordMapper.getEffectiveRecordPage(page,pageReqVO); + return new PageResult<>(recordRecordDOPageResult.getRecords(), recordRecordDOPageResult.getTotal()); + } + + // 校验分类存在 + 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); + if (parentId == null) return new PageResult().setTotal(0L); + + String appraisalFlag = pageReqVO.getAppraisalFlag(); + if (!ObjectUtils.isEmpty(appraisalFlag) && appraisalFlag.equals("1")){ // 需要评审的文件 + // 查询所有 根分类上 appraisalFlag 为 1 的数据 + String appraisal = "\"appraisalFlag\":" + 1 + ","; + + List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal,parentId); + if (ObjectUtils.isEmpty(recordCategoryDOS)) return new PageResult().setTotal(0L); + // 获取所有 分类id + List categoryIdPath = new ArrayList<>(); + recordCategoryDOS.forEach(item -> { + Long id = item.getId(); + String path = "/0//" + id + "//"; // 根分类的路径 + categoryIdPath.add(path); + }); + if (ObjectUtils.isEmpty(categoryIdPath)) return new PageResult().setTotal(0L); + // 查询 分类下面所有的记录 + pageReqVO.setRecordStatus(1); + IPage recordRecordDOS = recordRecordMapper.selectRecordByIdPathLike(page,pageReqVO, categoryIdPath); + return new PageResult<>(recordRecordDOS.getRecords(), recordRecordDOS.getTotal()); + } + + // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) + List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null, null); + if (ObjectUtils.isEmpty(recordPermissionDOS)) return new PageResult().setTotal(0L); + + // 设置默认查询最新版 +// pageReqVO.setCurrentFlag(1); + // 查询有效,且即将生效的文件 + + IPage recordRecordDOPageResult = recordRecordMapper.getEffectiveRecordPage(page,pageReqVO); + return new PageResult<>(recordRecordDOPageResult.getRecords(), recordRecordDOPageResult.getTotal()); + + } + + @Override + public PageResult getLookRecordList(RecordRecordPageReqVO pageReqVO) { + PageResult recordRecordDOPageResult = recordRecordMapper.selectPage(pageReqVO); + return BeanUtils.toBean(recordRecordDOPageResult, RecordRecordRespVO.class); + } } \ No newline at end of file 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 cbf43c01..ce8376b9 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 @@ -7,7 +7,10 @@ - trr.ID, trr.CTGR_ID AS categoryId, trr.CD AS code, trr.BSN_TP AS businessType, + trr + . + ID + , trr.CTGR_ID AS categoryId, trr.CD AS code, trr.BSN_TP AS businessType, trr.FORM_KY AS formKey, trr.NAME, trr.VER AS version, trr.CRNT_FLG AS currentFlag, trr.MKE_DT AS makeDate, @@ -42,7 +45,7 @@ --> - SELECT DISTINCT + SELECT DISTINCT FROM T_RCD_RCD trr LEFT JOIN T_RCD_PERM trp ON trp.SRC_ID = trr.ID WHERE - trr.deleted = 0 + trr.deleted = 0 and trp.deleted = 0 and trp.CNL_FLG = 0 AND trp.SRC_TP = '记录' AND trp.PERM = '可查看' AND trr.CTGR_ID = #{pageReqVO.categoryId} @@ -137,19 +140,21 @@ ) - + SELECT FROM T_RCD_RCD trr INNER JOIN T_RCD_CTGR trc ON trr.CTGR_ID = trc.ID - WHERE trr.deleted = 0 - - - AND - ( - trr.RCD_STS = #{reqVO.recordStatus} - or trr.EFCT_DT > now()) - + WHERE trr.deleted = 0 and trr.EXPR_STS = 0 and trr.CNL_FLG = 0 + + and (trr.PMNT = "1" or trr.RCD_STS = 1 or trr.RCD_STS = 3) + AND trr.CNL_FLG = #{reqVO.cancelFlag} @@ -184,4 +189,57 @@ + \ No newline at end of file