diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/common/RecordCommonUtils.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/common/RecordCommonUtils.java index 7c7badc5..3065472b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/common/RecordCommonUtils.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/common/RecordCommonUtils.java @@ -19,7 +19,7 @@ public class RecordCommonUtils { // 简单演示 // public static void main(String[] args) { -// String idPath = "//0//11//2021848472377016322/"; +// String idPath = "/0/11/2021848472377016322/"; // Optional seg1 = getSegment(idPath, 1); // 取第二个非空段,索引1 // System.out.println(seg1.orElse("not found")); // 输出 "3" // } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java index df2500f2..a77dc1a6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java @@ -5,6 +5,8 @@ package com.zt.plat.module.qms.resource.record.constant; */ public class RecordConstants { + public static final String SUPER_ADMIN = "ytjyAdmin"; // 超级管理员 标识 + /** * 权限目标类型 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java index 68e03cbe..bc9dca9e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordcategory/RecordCategoryController.java @@ -113,16 +113,6 @@ public class RecordCategoryController extends AbstractFileUploadController imple } - // 文件评审,获取满足当前账户权限的记录列表 -// @GetMapping("/getReviewRecordList") -// @Operation(summary = "获得文件记录分类") -// //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") -// public CommonResult> getReviewRecordList() { -// List recordRecords = recordCategoryService.getReviewRecordList(); -// return success(recordRecords); -// } - - @GetMapping("/getRecordCategoryTree") @Operation(summary = "获得文件记录分类") //@PreAuthorize("@ss.hasPermission('qms:record-category:query')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/RecordPermissionController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/RecordPermissionController.java index 737b16cc..07e3901f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/RecordPermissionController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/RecordPermissionController.java @@ -103,12 +103,12 @@ public class RecordPermissionController extends AbstractFileUploadController imp //@PreAuthorize("@ss.hasPermission('qms:record-category:query')") public CommonResult isAdminByUserId(@RequestParam("categoryId") Long categoryId,@RequestParam("permission") String permission) { boolean b = false; - boolean isAdmin = recordPermissionService.judgeIsAdmin(); + boolean isAdmin = recordPermissionService.judgeIsSuperAdmin(); if (isAdmin) return success(isAdmin); if (permission.equals(RecordConstants.PermissionType.ADMIN)) { - b = recordPermissionService.isAdminByUserId(categoryId); + b = recordPermissionService.hasAdminPermissionByCategoryId(categoryId); } else if (permission.equals(RecordConstants.PermissionType.EDIT)) { - b = recordPermissionService.isEditPermissionByUserId(categoryId); + b = recordPermissionService.hasEditPermissionByUserId(categoryId); } return success(b); } 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 3c340f8a..181c919e 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 @@ -7,8 +7,6 @@ import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; 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.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; @@ -18,8 +16,6 @@ import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.Re import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; -import com.zt.plat.module.system.api.dept.DeptApi; -import com.zt.plat.module.system.api.dept.dto.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -29,12 +25,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; -import java.util.Set; import static com.zt.plat.framework.common.pojo.CommonResult.success; -import static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_PERMISSION_NOT_ALLOW; @Slf4j @Tag(name = "管理后台 - 文件、模板、记录") @@ -60,43 +53,6 @@ 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(visitCompanyId); - 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 = "创建文件、模板、记录->分类明细") 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 f7664238..eb152b49 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 @@ -99,6 +99,12 @@ public class RecordRecordPageReqVO extends PageParam { @Schema(description = "是否回收权限") private Integer collectionFlag; + @Schema(description = "审批状态,需要走流程的审批状态") + private Integer ApplyStatus; + + @Schema(description = "流程实例Id") + private String flowInstanceId; + @Schema(description = "原始父级ID") private Long mainId; 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 59b966a3..6c44f6d6 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 @@ -38,14 +38,6 @@ public class RecordRecordRespVO { @ExcelProperty("业务类型") private String businessType; -// @Schema(description = "部门IDS") -// @ExcelProperty("部门IDS") -// private String departmentIds; -// -// @Schema(description = "用户IDS") -// @ExcelProperty("用户IDS") -// private String userIds; - @Schema(description = "表单key") @ExcelProperty("表单key") private String formKey; @@ -117,6 +109,12 @@ public class RecordRecordRespVO { @Dict(dicCode = "yes_or_no") private Integer cancelFlag; + @Schema(description = "审批状态,需要走流程的审批状态") + private Integer ApplyStatus; + + @Schema(description = "流程实例Id") + private String flowInstanceId; + @Schema(description = "表单数据") @ExcelProperty("表单数据") private String formData; @@ -172,8 +170,8 @@ public class RecordRecordRespVO { @Schema(description = "文件提交申请ID") private Long applyId; - @Schema(description = "文件提交流程实例ID") - private String flowInstanceId; +// @Schema(description = "文件提交流程实例ID") +// private String flowInstanceId; @Schema(description = "文件提交业务状态") @Dict(dicCode = "flow_status") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java index 3524aa94..568246ca 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java @@ -28,12 +28,6 @@ public class RecordRecordSaveReqVO { @Schema(description = "业务类型") private String businessType; -// @Schema(description = "部门IDS") -// private String departmentIds; -// -// @Schema(description = "用户IDS") -// private String userIds; - @Schema(description = "表单key") private String formKey; @@ -85,6 +79,12 @@ public class RecordRecordSaveReqVO { @Schema(description = "作废标志,0-有效,1-作废") private Integer cancelFlag; + @Schema(description = "审批状态,需要走流程的审批状态") + private Integer ApplyStatus; + + @Schema(description = "流程实例Id") + private String flowInstanceId; + @Schema(description = "表单数据") private String formData; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java index 4ce56158..8b2dbb5c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java @@ -100,6 +100,11 @@ public class RecordPermissionDO extends BusinessBaseDO { @TableField("CNL_FLG") private String cancelFlag; /** + * 保留权限回收 + */ + @TableField("SVE_FLG") + private String saveFlag; + /** * 所属部门 */ @TableField("SYS_DEPT_CD") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java index 0d44530a..e58b6315 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java @@ -48,16 +48,6 @@ public class RecordRecordDO extends BusinessBaseDO { */ @TableField("BSN_TP") private String businessType; -// /** -// * 部门IDS -// */ -// @TableField("DEPT_IDS") -// private String departmentIds; -// /** -// * 用户IDS -// */ -// @TableField("USER_IDS") -// private String userIds; /** * 表单key */ @@ -138,6 +128,16 @@ public class RecordRecordDO extends BusinessBaseDO { */ @TableField("CNL_FLG") private Integer cancelFlag; + /** + * 审批状态,需要走流程的审批状态 + */ + @TableField("APL_STS") + private Integer ApplyStatus; + /** + * 流程实例Id + */ + @TableField("FLW_INSC_ID") + private String flowInstanceId; /** * 表单数据 */ @@ -204,11 +204,11 @@ public class RecordRecordDO extends BusinessBaseDO { @TableField(exist = false) private Long applyId; - /** - * 文件提交流程实例ID(RecordApply.flowInstanceId) - */ - @TableField(exist = false) - private String flowInstanceId; +// /** +// * 文件提交流程实例ID(RecordApply.flowInstanceId) +// */ +// @TableField(exist = false) +// private String flowInstanceId; /** * 文件提交业务状态(RecordApply.businessStatus) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.java index d8c3fb62..95f9933c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.java @@ -46,9 +46,18 @@ public interface RecordPermissionMapper extends BaseMapperX * 2. 或用户所在部门有权限 (targetType='部门' AND targetId in userDepts) * 3. 或用户的角色有权限 (targetType='角色' AND targetId in userRoles) */ - List selectPermissionList(@Param("recordP") RecordPermissionDO recordPermissionDO, + List selectPermissionList(@Param("recordP") RecordPermissionDO recordP, @Param("userId") Long userId, @Param("userDepts") List userDepts, @Param("userRoles") Set userRoles); // permission: 管理员/可编辑/可查看 + /** + * 检查用户是否有记录的权限 + * 查询条件:permission='可查看' AND + * 1. 用户 ( targetId=userId AND targetType='用户') + * 2. 部门 (targetType='部门' AND targetId in userDepts) + */ + List selectRecordPermissionList(@Param("recordP") RecordPermissionDO recordP, + @Param("userId") Long userId, + @Param("userDepts") List userDepts); // permission: 管理员/可编辑/可查看 } \ 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 ee8849ef..f7fa073f 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 @@ -80,17 +80,6 @@ public interface RecordRecordMapper extends BaseMapperX { "WHERE tra.BSN_TP = #{businessType}") Long selectRecordReviewCount(String businessType); - /** - * 通过记录Id 查询权限列表 - * sourceId == recordId - * 1. 用户 ( targetId=userId AND targetType='用户') - * 2. 用户所在部门有权限 (targetType='部门' AND targetId in userDepts) - */ - IPage selectRecordPermissionList(Page page, - @Param("pageReqVO") RecordRecordPageReqVO pageReqVO, - @Param("userId") Long userId, - @Param("userDepts") List userDepts); - /** * 通过 idPath 模糊查询 关联的文件记录 * 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 911ba386..f877903b 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 @@ -506,6 +506,8 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); + RecordRecordDO recordRecordDO = new RecordRecordDO(); + reqDTO.setBusinessKey(String.valueOf(applyId)); String businessType = recordApplyDO.getBusinessType(); switch (businessType) { @@ -513,15 +515,13 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn // 判断根分类上是否配置自定义配置,允许提交,则需要走流程,否则直接提交 List detailList = param.getDetailList(); Long recordId = detailList.get(0).getDocumentId(); -// if (ObjectUtils.isEmpty(recordId)) -// throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(), "请选择文件记录"); - RecordRecordDO entity = recordRecordService.getRecordById(recordId); - if (ObjectUtils.isEmpty(entity)) + recordRecordDO = recordRecordService.getRecordById(recordId); + if (ObjectUtils.isEmpty(recordRecordDO)) throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(), "文件记录实体不存在"); - boolean b = justifyRecordApply(entity); + boolean b = justifyRecordApply(recordRecordDO); if (b) { // 不需要走流程,直接返回成功 - return CommonResult.success(BeanUtils.toBean(entity, RecordApplyRespVO.class)); + return CommonResult.success(BeanUtils.toBean(recordRecordDO, RecordApplyRespVO.class)); } reqDTO.setProcessDefinitionKey(RecordConstants.ProcessDefinitionKey.RECORD_SUBMIT_DEFINITION_KEY); break; @@ -574,6 +574,12 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordApplyDO.setBusinessStatus(QmsCommonConstant.IN_PROGRESS); // recordApplyMapper.updateById(recordApplyDO); + // 提交申请-发起流程, 更新 实例Id到文件记录 + if (paramBusinessType.equals(RecordConstants.BusinessType.RECORD_SUBMIT)){ + recordRecordDO.setFlowInstanceId(wfInsId); + recordRecordService.updateRecordRecordById(recordRecordDO); + } + return CommonResult.success(BeanUtils.toBean(recordApplyDO, RecordApplyRespVO.class)); } 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 bb2a3145..b57ced27 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 @@ -66,12 +66,7 @@ public interface RecordCategoryService { RecordCategoryDO selectById(Long categoryId); - /** - * // 文件评审,获取满足当前账户权限的记录列表 - * @return - */ - - List getReviewRecordList(); - List selectCategoryAppraisalList(String appraisalFlag,Long categoryRootId); + + List selectListByCategoryIdIdPath(String recordCategoryDO); } \ 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 5507794a..217bb0c6 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 @@ -3,26 +3,15 @@ package com.zt.plat.module.qms.resource.record.service.recordcategory; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.zt.plat.framework.common.pojo.CommonResult; 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.qms.common.dic.dal.dataobject.DictionaryBusinessDO; -import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; -import com.zt.plat.module.qms.resource.record.constant.RecordConstants; import com.zt.plat.module.qms.resource.record.controller.admin.recordcategory.vo.RecordCategoryPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordcategory.vo.RecordCategoryRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordcategory.vo.RecordCategorySaveReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordcategory.RecordCategoryDO; -import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.dal.mapper.RecordCategoryMapper; -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.permission.PermissionApi; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -30,10 +19,8 @@ import org.springframework.validation.annotation.Validated; import java.util.ArrayList; import java.util.List; -import java.util.Set; 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.RECORD_CATEGORY_NOT_EXISTS; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_FILE_EXISTS; @@ -51,32 +38,10 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { @Resource private RecordCategoryMapper recordCategoryMapper; - @Resource - private PermissionApi permissionApi; - - @Resource - private RecordPermissionService recordPermissionService; - - @Resource - private DeptApi deptApi; - - @Autowired - private DictionaryBusinessService dictionaryBusinessService; // 字典服务 - - private List dictionaryBusinessDOS = new ArrayList<>(); - private List businessDOList = new ArrayList<>(); - @Transactional(rollbackFor = Exception.class) @Override public RecordCategoryRespVO createRecordCategory(RecordCategorySaveReqVO createReqVO) { - // 目录名称不能重复 -// LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); -// queryWrapper.eq(RecordCategoryDO::getName, createReqVO.getName()); -// List list = recordCategoryMapper.selectList(queryWrapper); -// if (CollUtil.isNotEmpty(list)) { -// throw exception(RECORD_CATEGORY_NAME_EXISTS); -// } // 插入 RecordCategoryDO recordCategory = BeanUtils.toBean(createReqVO, RecordCategoryDO.class); int insert = recordCategoryMapper.insert(recordCategory); @@ -87,13 +52,13 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { if (parentId == null || parentId == 0L) {// 没有父节点 recordCategory.setParentId(0L); // 更新ID_Path - recordCategory.setIdPath("/" + recordCategory.getParentId() + "//" + id + "/"); + recordCategory.setIdPath("/" + recordCategory.getParentId() + "/" + id ); } else { // 存在父节点的新建 RecordCategoryDO parent = recordCategoryMapper.selectById(parentId); // 存在父节点,查询父节点信息 if (ObjectUtils.isEmpty(parent)) throw exception(RECORD_CATEGORY_NOT_EXISTS); else { String idPath = parent.getIdPath(); - recordCategory.setIdPath("/" + idPath + "/" + id + "/"); + recordCategory.setIdPath(idPath + "/" + id); } } int i = recordCategoryMapper.updateById(recordCategory); @@ -102,90 +67,6 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { } - // 文件评审,获取满足当前账户权限的记录列表 - @Override - public List getReviewRecordList() { - LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - if (ObjectUtils.isEmpty(loginUser)) throw exception0(1, "用户未登录"); - - Long userId = loginUser.getId(); - Long visitDeptId = loginUser.getVisitDeptId(); - - // 获取当前用户的所有角色 - CommonResult> userRoleIdListResult = permissionApi.getUserRoleIdListByUserId(userId); - Set userRoleIds = userRoleIdListResult.getData(); - if (ObjectUtils.isEmpty(userRoleIds)) { - userRoleIds = new java.util.HashSet<>(); - } - - // 获取权限字典值 - businessDOList = selectDictPermissionByKey(RecordConstants.PermissionType.PERMISSION_KEY); - String permissionAdmin = getDictValueByKey(businessDOList, RecordConstants.PermissionType.ADMIN); - - // 获取目标类型字典值 - dictionaryBusinessDOS = selectDictTargetTypeByKey(RecordConstants.TargetType.TARGET_KEY); - String targetUser = getDictValueByKey(dictionaryBusinessDOS, RecordConstants.TargetType.USER); - String targetDept = getDictValueByKey(dictionaryBusinessDOS, RecordConstants.TargetType.DEPT); - String targetRole = getDictValueByKey(dictionaryBusinessDOS, RecordConstants.TargetType.ROLE); - - // 查询所有权限为"管理员"的权限记录 - LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.eq(RecordPermissionDO::getPermission, permissionAdmin); - List adminPermissions = recordPermissionService.selectList(queryWrapper); - - if (CollUtil.isEmpty(adminPermissions)) { - return new ArrayList<>(); - } - - // 收集满足条件的 recordCategory ID - Set categoryIds = new java.util.HashSet<>(); - - for (RecordPermissionDO permission : adminPermissions) { - // 条件1:权限必须是"管理员"(已在上面的查询中过滤) - // 条件2、3、4:targetType 和 targetId 需要满足以下任意一个 - boolean isMatched = false; - - // 条件2:targetType='用户' 且 targetId=用户id - if (targetUser.equals(permission.getTargetType()) && - userId.toString().equals(permission.getTargetId())) { - isMatched = true; - } - - // 条件3:targetType='部门' 且 targetId=部门id - if (!isMatched && targetDept.equals(permission.getTargetType()) && - visitDeptId.toString().equals(permission.getTargetId())) { - isMatched = true; - } - - // 条件4:targetType='角色' 且 targetId 在用户角色列表中 - if (!isMatched && targetRole.equals(permission.getTargetType())) { - try { - Long roleId = Long.parseLong(permission.getTargetId()); - if (userRoleIds.contains(roleId)) { - isMatched = true; - } - } catch (NumberFormatException e) { - log.warn("Invalid role ID format: {}", permission.getTargetId()); - } - } - - // 如果满足条件,添加 sourceId(recordCategory ID) - if (isMatched && permission.getSourceId() != null) { - categoryIds.add(permission.getSourceId()); - } - } - - // 根据 categoryIds 查询 recordCategory 列表 - if (CollUtil.isEmpty(categoryIds)) { - return new ArrayList<>(); - } - - List recordCategories = recordCategoryMapper.selectByIds(new ArrayList<>(categoryIds)); - - // 转换为 RespVO 返回 - return BeanUtils.toBean(recordCategories, RecordCategoryRespVO.class); - } - @Override public List selectCategoryAppraisalList(String appraisalFlag,Long categoryRootId) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); @@ -194,15 +75,19 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { return recordCategoryMapper.selectList(queryWrapper); } + @Override + public List selectListByCategoryIdIdPath(String categoryIdPath) { + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.like(RecordCategoryDO::getIdPath, categoryIdPath); + return recordCategoryMapper.selectList(queryWrapper); + } + @Transactional(rollbackFor = Exception.class) @Override public void updateRecordCategory(RecordCategorySaveReqVO updateReqVO) { // 校验存在 RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(updateReqVO.getId()); -// boolean t = judgeIsEdit(recordCategoryDO); -// if (!t) throw exception(RECORD_PERMISSION_NOT_ALLOW); // 不允许编辑 - // 子节点不能变成根节点 Long parentId1 = recordCategoryDO.getParentId(); if (parentId1 != null && parentId1 != 0L) { @@ -222,17 +107,17 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { if (parentId == null || parentId == 0L) { // 父节点为null或0,则变成根节点 updateObj.setParentId(0L); - updateObj.setIdPath("/0//" + updateObj.getId() + "/"); + updateObj.setIdPath("/0/" + updateObj.getId()); } else { // 查询父节点 RecordCategoryDO parentCategory = recordCategoryMapper.selectById(parentId); if (ObjectUtils.isEmpty(parentCategory)) { // 父节点不存在,设置为根节点 updateObj.setParentId(0L); - updateObj.setIdPath("/0//" + updateObj.getId() + "/"); + updateObj.setIdPath("/0/" + updateObj.getId()); } else { // 父节点存在,构建新的idPath - updateObj.setIdPath(parentCategory.getIdPath() + updateObj.getId() + "/"); + updateObj.setIdPath(parentCategory.getIdPath() + "/" + updateObj.getId()); } } @@ -322,24 +207,6 @@ public class RecordCategoryServiceImpl implements RecordCategoryService { return recordCategoryMapper.selectPage(pageReqVO); } - // 通过字典的key 获取对应的value值 - public String getDictValueByKey(List businessDOList, String targetKey) { - return businessDOList.stream() - .filter(item -> item.getKey().equals(targetKey)) - .findFirst() - .map(DictionaryBusinessDO::getValue) - .orElse(null); - } - - // 查询字典列表,通过key - public List selectDictTargetTypeByKey(String targetKey) { - return dictionaryBusinessDOS = dictionaryBusinessService.queryDictItemsByKey(targetKey); - } - - public List selectDictPermissionByKey(String targetKey) { - return businessDOList = dictionaryBusinessService.queryDictItemsByKey(targetKey); - } - // 获取所有分类树 @Override public List getRecordCategoryTree(RecordCategoryPageReqVO pageReqVO) { diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionService.java index 7cfcfb99..721c156c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionService.java @@ -75,10 +75,13 @@ public interface RecordPermissionService { /** * 通过分类Id 获取满足当前用户的权限列表 - * @param categoryId + * @param * @return */ - List selectPermissionList(long categoryId,String permission,String cancelFlag); + List selectPermissionList(RecordPermissionDO recordPermissionDO); + + // 检查用户是否有记录的权限,返回权限列表 + List selectRecordPermissionList(RecordPermissionDO recordPermissionDO); /** * 判断当前分类是否有管理员权限 @@ -86,13 +89,13 @@ public interface RecordPermissionService { * @return */ - boolean isAdminByUserId(Long categoryId); + boolean hasAdminPermissionByCategoryId(Long categoryId); /** * 判断当前用户是最高管理员 * @return */ - boolean judgeIsAdmin(); + boolean judgeIsSuperAdmin(); /** * 获取权限列表 @@ -107,7 +110,7 @@ public interface RecordPermissionService { */ List getParentDepts(); - boolean isEditPermissionByUserId(Long categoryId); + boolean hasEditPermissionByUserId(Long categoryId); boolean updateRecordPermissionBatch(List recordPermissionDOList); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionServiceImpl.java index 7d25eb04..2f297d1c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordpermission/RecordPermissionServiceImpl.java @@ -52,6 +52,9 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { @Resource private PermissionApi permissionApi; + @Resource + private PermissionCommonApi permissionCommonApi; + @Resource private DeptApi deptApi; @@ -61,40 +64,56 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { /** * 通过分类Id 获取满足当前用户的权限列表 - * @param categoryId + * + * @param * @return */ @Override - public List selectPermissionList(long categoryId,String permission,String cancelFlag){ + public List selectPermissionList(RecordPermissionDO recordPermissionDO) { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long userId = loginUser.getId(); List deptIds = getParentDepts(); Set roles = getRoles(userId); - if (deptIds.isEmpty())deptIds.add(0L); - if (roles.isEmpty())roles.add(0L); + if (deptIds.isEmpty()) deptIds = new ArrayList<>(); + if (roles.isEmpty()) roles = new HashSet<>(); // 查询用户是否有该分类的管理员权限 - RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); - recordPermissionDO.setSourceId(categoryId); - recordPermissionDO.setPermission(permission); - recordPermissionDO.setCancelFlag(cancelFlag); return recordPermissionMapper.selectPermissionList(recordPermissionDO, userId, deptIds, roles); } + // 检查用户是否有记录的权限,返回权限列表 + @Override + public List selectRecordPermissionList(RecordPermissionDO recordPermissionDO) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + Long userId = loginUser.getId(); + List deptIds = getParentDepts(); + if (deptIds.isEmpty()) deptIds = new ArrayList<>(); + // 查询用户是否有该分类的管理员权限 + String view = RecordConstants.PermissionType.VIEW; + recordPermissionDO.setPermission(view); + String record = RecordConstants.PermissionSourceType.RECORD; + recordPermissionDO.setSourceType(record); + return recordPermissionMapper.selectRecordPermissionList(recordPermissionDO, userId, deptIds); + } + // 判断当前用户是否有管理员权限(用户,部门,角色)任意满足 @Override - public boolean isAdminByUserId(Long categoryId){ + public boolean hasAdminPermissionByCategoryId(Long categoryId) { // 获取用户所在的所有部门(包括父部门) // deptIds = getParentDepts(); String admin = RecordConstants.PermissionType.ADMIN; - List recordCategoryDOS = this.selectPermissionList(categoryId,admin,null); + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(categoryId); + recordPermissionDO.setPermission(admin); + List recordCategoryDOS = this.selectPermissionList(recordPermissionDO); if (!recordCategoryDOS.isEmpty()) return true; return false; } /** * 通过分类Id 获取满足当前用户的权限列表 + * * @param categoryId 分类ID(对应 recordPermission.sourceId) * @return */ @@ -103,8 +122,8 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { // 获取当前登录用户 // 判断是最高管理员 - boolean b = judgeIsAdmin(); - boolean adminByUserId = this.isAdminByUserId(categoryId); + boolean b = judgeIsSuperAdmin(); + boolean adminByUserId = this.hasAdminPermissionByCategoryId(categoryId); if (b || adminByUserId) { // 用户是最高管理员,直接返回该分类下的所有权限记录 RecordPermissionDO query = new RecordPermissionDO(); @@ -119,7 +138,7 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { } // 获取当前用户所在权限列表 - public Set getRoles(Long userId){ + public Set getRoles(Long userId) { // if (!ObjectUtils.isEmpty(roles)) return roles; CommonResult> userRoleIdListByUserId = permissionApi.getUserRoleIdListByUserId(userId); Set userRoles = userRoleIdListByUserId.getData(); @@ -137,25 +156,31 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { DeptRespDTO currentDept = deptResult.getData(); Long parentDeptId = currentDept.getParentId(); // 获取父部门ID // -// List parentDepts = new ArrayList<>(); + List deptIds = new ArrayList<>(); // 添加当前部门到父部门列表中 Long tempParentId = parentDeptId; + int count = 0; while (tempParentId != null && tempParentId != 0) { CommonResult parentResult = deptApi.getDept(tempParentId); DeptRespDTO parentDept = parentResult.getData(); -// parentDepts.add(parentDept.getId()); deptIds.add(parentDept.getId()); tempParentId = parentDept.getParentId(); + count++; + if (count > 10) { + break; + } } -// parentDepts.add(currentDept.getId()); deptIds.add(currentDept.getId()); return deptIds; } @Override - public boolean isEditPermissionByUserId(Long categoryId) { + public boolean hasEditPermissionByUserId(Long categoryId) { String edit = RecordConstants.PermissionType.EDIT; - List recordCategoryDOS = this.selectPermissionList(categoryId,edit,null); + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(categoryId); + recordPermissionDO.setPermission(edit); + List recordCategoryDOS = this.selectPermissionList(recordPermissionDO); if (!recordCategoryDOS.isEmpty()) return true; return false; } @@ -168,15 +193,12 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { // 判断当前用户是不是最高管理员 // @QmsPermission(deptIdColumn="") @Override - public boolean judgeIsAdmin() { + public boolean judgeIsSuperAdmin() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long userId = loginUser.getId(); - LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); - lambdaQueryWrapper.eq(RecordPermissionDO::getSourceType, RecordConstants.TargetType.ADMIN); - lambdaQueryWrapper.eq(RecordPermissionDO::getTargetId, userId); - List recordPermissionDOS = this.selectList(lambdaQueryWrapper); - if (!ObjectUtils.isEmpty(recordPermissionDOS)) return true; - return false; + CommonResult booleanCommonResult = permissionCommonApi.hasAnyRoles(userId, RecordConstants.SUPER_ADMIN); + log.info("booleanCommonResult:{}", booleanCommonResult.getData()); + return booleanCommonResult.getData(); } 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 74351b33..3427b877 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 @@ -63,8 +63,6 @@ public interface RecordRecordService { PageResult getRecordHistoryPage(RecordRecordPageReqVO pageReqVO); -// CommonResult justRecordPermission(Long recordId); - RecordRecordDO getRecordById(Long id); @@ -100,8 +98,4 @@ public interface RecordRecordService { Integer withdrawPermissionJob(); - /** - * 文件更改申请流程-- 查询文件记录数据 - */ -// List selectViewApplyRecordList(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/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 1d4030f3..53a2293a 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 @@ -36,6 +36,7 @@ import org.springframework.validation.annotation.Validated; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -93,9 +94,11 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 返回 return BeanUtils.toBean(recordRecord, RecordRecordRespVO.class); } + /** * 计算记录状态 - * @param effectiveDate 生效日期 + * + * @param effectiveDate 生效日期 * @param expirationDate 过期日期 * @return 记录状态:1-生效中,0-待生效,3-已过期 */ @@ -169,7 +172,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { } - // 流程--查询记录列表 + // 流程--查询记录列表 // TODO @Override public List getRecordList(RecordRecordPageReqVO pageReqVO) { @@ -182,7 +185,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 查询所有 根分类上 appraisalFlag 为 1 的数据 String appraisal = "\"appraisalFlag\":" + 1 + ","; - List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal,null); + List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal, null); // 获取所有 分类id List categoryIdPath = new ArrayList<>(); recordCategoryDOS.forEach(item -> { @@ -210,7 +213,9 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 判断是否有权限 // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) - List recordPermissionDOS = recordPermissionService.selectPermissionList(rootCategoryId, null, null); + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(categoryId); + List recordPermissionDOS = recordPermissionService.selectPermissionList(recordPermissionDO); List recordRecordList; @@ -227,7 +232,6 @@ public class RecordRecordServiceImpl implements RecordRecordService { pageReqVO.setExpirationStatus(0); // 过期状态 - IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); // PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); recordRecordList = iPage.getRecords(); @@ -236,14 +240,8 @@ public class RecordRecordServiceImpl implements RecordRecordService { } -// 文件更改申请流程 --> 查询文件记录数据 -// @Override -// public List selectViewApplyRecordList(RecordRecordPageReqVO pageReqVO) { -// return recordRecordMapper.selectViewApplyRecordList(pageReqVO); -// } - //通过跟分类的自定义属性判断文件状态 - public RecordRecordDO judgeRootCategoryJson(RecordRecordDO recordDO){ + public RecordRecordDO judgeRootCategoryJson(RecordRecordDO recordDO) { RecordCategoryDO categoryDO = recordCategoryService.getRecordCategory(recordDO.getCategoryId()); String idPath = categoryDO.getIdPath(); Long rootCategoryId = getRootCategoryId(idPath); @@ -256,7 +254,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { int sts = calculateRecordStatus(effectiveDate, expirationDate); if (sts == 3) recordDO.setExpirationStatus(1); //过期 else recordDO.setRecordStatus(sts); - }else { + } else { JSONObject jsonObject = JSONObject.parseObject(customConfig); Integer submitFlag = jsonObject.getInteger("submitFlag"); if (submitFlag == 0) { // 不需要提交的,判断状态 @@ -286,7 +284,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 回收文件权限 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(RecordPermissionDO::getSourceType, RecordConstants.PermissionSourceType.RECORD); - queryWrapper.eq(RecordPermissionDO::getSourceId,updateObj.getId()); // 记录id + queryWrapper.eq(RecordPermissionDO::getSourceId, updateObj.getId()); // 记录id List recordPermissionDOS = recordPermissionService.selectList(queryWrapper); List recordPermissionDOList = new ArrayList<>(); List permissionIds = new ArrayList<>(); @@ -294,9 +292,11 @@ public class RecordRecordServiceImpl implements RecordRecordService { recordPermissionDO.setCancelFlag("1"); recordPermissionDOList.add(recordPermissionDO); } - if (!ObjectUtils.isEmpty(recordPermissionDOList)) recordPermissionService.updateRecordPermissionBatch(recordPermissionDOList); + if (!ObjectUtils.isEmpty(recordPermissionDOList)) + recordPermissionService.updateRecordPermissionBatch(recordPermissionDOList); // 回收权限 - if (!ObjectUtils.isEmpty(permissionIds)) recordPermissionService.deleteRecordPermissionListByIds(permissionIds); + if (!ObjectUtils.isEmpty(permissionIds)) + recordPermissionService.deleteRecordPermissionListByIds(permissionIds); } // 创建新版本 return saveDataWithNewVersion(updateObj); @@ -390,89 +390,84 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordRecordMapper.selectById(id); } + public PageResult addCustomConfig(Long rootCategoryId,PageResult result) { + Object finalParse = customConfigParseJson(rootCategoryId); + result.getList().forEach(record -> { + try { + record.setCustomConfig(finalParse); + } catch (Exception e) { + throw exception(RECORD_RECORD_NOT_EXISTS); + } + }); + return result; + } + + public PageResult selectRecordPage(RecordRecordPageReqVO pageReqVO, Long categoryId, List recordIds){ + // 判断当前分类上有没有子分类 + String categoryIdPath = "/" + categoryId; + List recordCategoryDOS = recordCategoryService.selectListByCategoryIdIdPath(categoryIdPath); + // 通过分类Id获取文件记录分页 + List categoryIds = recordCategoryDOS.stream().map(RecordCategoryDO::getId).toList(); + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + pageReqVO.setCategoryId(null); + lambdaQueryWrapper.in(RecordRecordDO::getCategoryId, categoryIds); + if (!ObjectUtils.isEmpty(pageReqVO.getName())) lambdaQueryWrapper.like(RecordRecordDO::getName, pageReqVO.getName()); + if (!ObjectUtils.isEmpty(pageReqVO.getCode())) lambdaQueryWrapper.like(RecordRecordDO::getCode, pageReqVO.getCode()); + if (!ObjectUtils.isEmpty(recordIds)) lambdaQueryWrapper.in(RecordRecordDO::getId, recordIds); // 获取指定文件记录 + return recordRecordMapper.selectPage(pageReqVO,lambdaQueryWrapper); + } + @Override public PageResult getRecordRecordPage(RecordRecordPageReqVO pageReqVO) { Long categoryId = pageReqVO.getCategoryId(); - boolean b = recordPermissionService.judgeIsAdmin();// 如果是最高管理员 + RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); + if (ObjectUtils.isEmpty(recordCategoryDO)) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); + + // 判断是否有自定义字段 + String idPath = recordCategoryDO.getIdPath(); + Long parentId = getRootCategoryId(idPath); + + // 如果是最高管理员,super admin + boolean b = recordPermissionService.judgeIsSuperAdmin(); if (b) { - PageResult result = recordRecordMapper.selectPage(pageReqVO); - if (categoryId !=null) { - RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); - String idPath = recordCategoryDO.getIdPath(); - Long parentId = getRootCategoryId(idPath); - Object finalParse = customConfigParseJson(parentId); - result.getList().forEach(record -> { - try { - record.setCustomConfig(finalParse); - } catch (Exception e) { - throw exception(RECORD_RECORD_NOT_EXISTS); - } - }); - } - return result; + PageResult recordRecordDOPageResult = selectRecordPage(pageReqVO, categoryId, null); + return addCustomConfig(parentId, recordRecordDOPageResult); } Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); - if (ObjectUtils.isEmpty(recordCategoryDO)) return new PageResult().setTotal(0L); + // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(parentId); + List recordPermissionDOS = recordPermissionService.selectPermissionList(recordPermissionDO); - if (categoryId == null) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); + // 没有分类的权限,判断是否有文件记录的权限,并获取记录列表 + if (ObjectUtils.isEmpty(recordPermissionDOS)) { +// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); +// Long userId = loginUser.getId(); +// List parentDepts = recordPermissionService.getParentDepts(); + // TODO +// IPage iPage = recordRecordMapper.selectRecordPermissionList(page, pageReqVO, userId, parentDepts); +// return new PageResult<>(iPage.getRecords(), iPage.getTotal()); + RecordPermissionDO permissionDO = new RecordPermissionDO(); + permissionDO.setCancelFlag("0"); // 作废 + permissionDO.setExpirationStatus("0"); // 过期 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + List permissionDOList = recordPermissionService.selectRecordPermissionList(permissionDO); + if (ObjectUtils.isEmpty(permissionDOList)) return PageResult.empty(); - String idPath = recordCategoryDO.getIdPath(); - if (ObjectUtils.isEmpty(idPath)) return new PageResult().setTotal(0L); - Long parentId = getRootCategoryId(idPath); - - 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); - } - }); + //获取有权限的记录Id + List recordIds = permissionDOList.stream().map(RecordPermissionDO::getSourceId).toList(); + PageResult result = selectRecordPage(pageReqVO, categoryId, recordIds); return result; } - - // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) - List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null, null); - - - if (ObjectUtils.isEmpty(recordPermissionDOS)) { - // 没有分类的权限,判断是否有文件记录的权限,并获取记录列表 - LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - Long userId = loginUser.getId(); - List parentDepts = recordPermissionService.getParentDepts(); - IPage iPage = recordRecordMapper.selectRecordPermissionList(page, pageReqVO, userId, parentDepts); - return new PageResult<>(iPage.getRecords(), iPage.getTotal()); - } - - // 设置默认查询最新版 -// pageReqVO.setCurrentFlag(1); - - // 多表关联分页查询(关联 RecordApply 获取文件提交信息) - IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); - PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); + PageResult result = selectRecordPage(pageReqVO, categoryId,null); String admin = RecordConstants.PermissionType.ADMIN; - - // 填充 customConfig(仅管理员权限时填充) - List recordPermissionDOAdmins = recordPermissionService.selectPermissionList(parentId, admin, null); - if (!ObjectUtils.isEmpty(recordPermissionDOAdmins)) { -// if (havePermission.get()) { - Object finalParse = customConfigParseJson(parentId); - result.getList().forEach(record -> { - try { - record.setCustomConfig(finalParse); - } catch (Exception e) { - throw exception(RECORD_RECORD_NOT_EXISTS); - } - }); + //判断 recordPermissionDOS 中是否有管理员权限,customConfig(仅管理员权限时填充) + if (recordPermissionDOS.stream().anyMatch(item -> item.getPermission().equals(admin))) { + return addCustomConfig(parentId, result); } return result; @@ -520,7 +515,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { public Integer updateRecordStatus() { LocalDateTime now = LocalDateTime.now(); LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); - + // updateWrapper.isNotNull(RecordRecordDO::getEffectiveDate) // // 1. effectiveDate <= 当前时间 // .le(RecordRecordDO::getEffectiveDate, now) @@ -575,18 +570,20 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) - List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null, null); + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(parentId); + List recordPermissionDOS = recordPermissionService.selectPermissionList(recordPermissionDO); if (ObjectUtils.isEmpty(recordPermissionDOS)) return new PageResult().setTotal(0L); String customConfig = categoryDO.getCustomConfig(); String appraisalFlag = pageReqVO.getAppraisalFlag(); // 需要评审的文件 - if (!ObjectUtils.isEmpty(appraisalFlag) && appraisalFlag.equals("1")){ + 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); + List recordCategoryDOS = recordCategoryService.selectCategoryAppraisalList(appraisal, parentId); + if (ObjectUtils.isEmpty(recordCategoryDOS)) return new PageResult().setTotal(0L); // 获取所有 分类id List categoryIdPath = new ArrayList<>(); recordCategoryDOS.forEach(item -> { @@ -599,7 +596,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (!ObjectUtils.isEmpty(customConfig)) { JSONObject jsonObject = JSONObject.parseObject(customConfig); Integer submitFlag = jsonObject.getInteger("submitFlag"); // 提交标志 - if (submitFlag == 1){ // 需要提交的,需要判断流程状态 + if (submitFlag == 1) { // 需要提交的,需要判断流程状态 pageReqVO.setRecordStatus(1); pageReqVO.setPermanently("1"); IPage effectiveRecordBySubmitFlagPage = recordRecordMapper.getEffectiveRecordBySubmitFlagPage(page, pageReqVO); @@ -609,7 +606,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 查询 分类下面所有的记录 // pageReqVO.setRecordStatus(1); // IPage recordRecordDOS = recordRecordMapper.selectRecordByIdPathLike(page,pageReqVO, categoryIdPath); - IPage recordRecordDOS = recordRecordMapper.getEffectiveRecordPage(page,pageReqVO); + IPage recordRecordDOS = recordRecordMapper.getEffectiveRecordPage(page, pageReqVO); return new PageResult<>(recordRecordDOS.getRecords(), recordRecordDOS.getTotal()); } @@ -617,7 +614,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { if (!ObjectUtils.isEmpty(customConfig)) { JSONObject jsonObject = JSONObject.parseObject(customConfig); Integer submitFlag = jsonObject.getInteger("submitFlag"); // 提交标志 - if (submitFlag == 1){ // 需要提交的,需要判断流程状态 + if (submitFlag == 1) { // 需要提交的,需要判断流程状态 pageReqVO.setRecordStatus(1); pageReqVO.setPermanently("1"); IPage effectiveRecordBySubmitFlagPage = recordRecordMapper.getEffectiveRecordBySubmitFlagPage(page, pageReqVO); @@ -627,7 +624,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 查询有效,且即将生效的文件 - IPage recordRecordDOPageResult = recordRecordMapper.getEffectiveRecordPage(page,pageReqVO); + IPage recordRecordDOPageResult = recordRecordMapper.getEffectiveRecordPage(page, pageReqVO); return new PageResult<>(recordRecordDOPageResult.getRecords(), recordRecordDOPageResult.getTotal()); } @@ -657,8 +654,8 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 回收权限 LambdaQueryWrapper query = Wrappers.lambdaQuery(); - query.eq(RecordPermissionDO::getSourceType,RecordConstants.PermissionSourceType.RECORD); - query.in(RecordPermissionDO::getTargetId,recordIds); + query.eq(RecordPermissionDO::getSourceType, RecordConstants.PermissionSourceType.RECORD); + query.in(RecordPermissionDO::getTargetId, recordIds); List recordPermissionDOS = recordPermissionService.selectList(query); if (ObjectUtils.isEmpty(recordPermissionDOS)) return recordRecordDOS.size(); List permissionIds = new ArrayList<>(); diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.xml index a116fd67..0ca09f1d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordPermissionMapper.xml @@ -8,34 +8,88 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> + + rp.id as id, + rp.src_id as sourceId, + rp.src_tp as sourceType, + rp.tgt_id as targetId, + rp.tgt_tp as targetType, + rp.tgt_name as targetName, + rp.perm as permission, + rp.CNF_LVL as confidentialLevel, + rp.PMNT as permanently, + rp.EXPR_DT as expirationDate, + rp.EXPR_STS as expirationStatus, + rp.CNL_FLG as cancelFlag, + rp.SVE_FLG as saveFlag + + + 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 28f1d009..a1d35545 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 @@ -103,34 +103,34 @@ ORDER BY trr.CREATE_TIME ASC - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +