diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/CommonRecordController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/CommonRecordController.java index 4044156c..133718df 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/CommonRecordController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/CommonRecordController.java @@ -1,9 +1,12 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordapply; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; 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.resource.record.constant.RecordConstants; +import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.DeptUserUniteRespVo; import com.zt.plat.module.qms.resource.record.controller.admin.recordassign.vo.RecordAssignRespVO; import com.zt.plat.module.qms.resource.record.service.recordassign.RecordAssignService; import com.zt.plat.module.system.api.dept.DeptApi; @@ -23,6 +26,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.CURRENT_USER_COMPANY_NOT_EXISTS; @@ -45,6 +49,9 @@ public class CommonRecordController { @Resource private RecordAssignService recordAssignService; +// private static final String DEPT_TYPE = "dept"; +// private static final String USER_TYPE = "user"; + @GetMapping("/dept-assign-list") @Operation(summary = "获取当前用户所在公司的所有部门,以及分发号") public CommonResult> getDeptAssignList() { @@ -77,49 +84,38 @@ public class CommonRecordController { // 获取当前所属公司下面的所有的部门 if (ObjectUtils.isEmpty(loginUser) || loginUser.getVisitCompanyId() == null) return CommonResult.error(CURRENT_USER_COMPANY_NOT_EXISTS); - CommonResult> childDeptList = deptApi.getChildDeptList(visitCompanyId); - List data = childDeptList.getData(); - List deptDataList = getChildDeptList(data); - return CommonResult.success(deptDataList); + return deptApi.getChildDeptList(visitCompanyId); } // 使用递归查询子部门,并且指定查询四层部门,把所有查询结果放到一个list 集合中返回 - public List getChildDeptList(List list) { - List allDeptList = new ArrayList<>(); - if (!ObjectUtils.isEmpty(list)) { - allDeptList.addAll(list); - } - getChildDeptListRecursive(list, allDeptList, 0); - return allDeptList; - } +// public List getChildDeptList(List list) { +// List allDeptList = new ArrayList<>(); +// if (!ObjectUtils.isEmpty(list)) { +// allDeptList.addAll(list); +// } +// getChildDeptListRecursive(list, allDeptList, 0); +// return allDeptList; +// } - /** - * 递归查询子部门,最多查询4层 - * - * @param list 当前层级的部门列表 - * @param allDeptList 存储所有查询结果的集合 - * @param depth 当前递归深度 - */ - private void getChildDeptListRecursive(List list, List allDeptList, int depth) { - // 递归深度限制为4层 - if (ObjectUtils.isEmpty(list) || depth >= 3) { - return; - } - -// List deptIds = new ArrayList<>(); - for (DeptRespDTO deptRespDTO : list) { - CommonResult> result = deptApi.getChildDeptList(deptRespDTO.getId()); - if (result != null && result.isSuccess()) { - List childDeptList = result.getData(); - if (!ObjectUtils.isEmpty(childDeptList)) { - // 将子部门添加到结果集合中 - allDeptList.addAll(childDeptList); - // 递归查询下一层部门 - getChildDeptListRecursive(childDeptList, allDeptList, depth + 1); - } - } - } - } +// private void getChildDeptListRecursive(List list, List allDeptList, int depth) { +// // 递归深度限制为4层 +// if (ObjectUtils.isEmpty(list) || depth >= 3) { +// return; +// } +// +// for (DeptRespDTO deptRespDTO : list) { +// CommonResult> result = deptApi.getChildDeptList(deptRespDTO.getId()); +// if (result != null && result.isSuccess()) { +// List childDeptList = result.getData(); +// if (!ObjectUtils.isEmpty(childDeptList)) { +// // 将子部门添加到结果集合中 +// allDeptList.addAll(childDeptList); +// // 递归查询下一层部门 +// getChildDeptListRecursive(childDeptList, allDeptList, depth + 1); +// } +// } +// } +// } @GetMapping("/user-list") @Operation(summary = "获得当前公司下面的所有用户") @@ -144,4 +140,45 @@ public class CommonRecordController { userDataList = adminUserApi.getUserListByDeptIds(deptIds); return userDataList; } + + // 获取当前用户所在公司下所有部门及用户 + + /** + * @param deptId 部门 Id + * @return + */ + @GetMapping("/dept-user-list") + @Operation(summary = "获得当前公司下面的部门,及用户") + //@PreAuthorize("@ss.hasPermission('qms:record-relation:query')") + public CommonResult> getDeptUserList(@RequestParam(name = "deptId", required = false) Long deptId) { +// log.info("deptId:{}", deptId); // "1" + Long loginUserCompanyId = SecurityFrameworkUtils.getLoginUserCompanyId(); + if (ObjectUtils.isEmpty(deptId)) deptId = loginUserCompanyId; + CommonResult> childDeptList = deptApi.getChildDeptList(deptId); + List data = childDeptList.getData(); + // 获取第一层部门的部门和用户 + List userDataList = new ArrayList<>(); + for (DeptRespDTO item : data) { + if (item.getParentId().equals(deptId)) { + DeptUserUniteRespVo respVo = new DeptUserUniteRespVo(); + respVo.setTargetType(RecordConstants.TargetType.DEPT); + respVo.setHasLeaf(false); + respVo.setTargetId(item.getId()); + respVo.setTargetName(item.getName()); + userDataList.add(respVo); + } + } + // 判断 deptId 下是否有用户 + CommonResult> userListByDeptIds = adminUserApi.getUserListByDeptIds(Collections.singletonList(deptId)); + if (ObjectUtils.isEmpty(userListByDeptIds.getData())) return CommonResult.success(userDataList); + for (AdminUserRespDTO item : userListByDeptIds.getData()) { + DeptUserUniteRespVo respVo = new DeptUserUniteRespVo(); + respVo.setTargetType(RecordConstants.TargetType.USER); + respVo.setHasLeaf(true); + respVo.setTargetId(item.getId()); + respVo.setTargetName(item.getNickname()); + userDataList.add(respVo); + } + return CommonResult.success(userDataList); + } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/DeptUserUniteRespVo.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/DeptUserUniteRespVo.java new file mode 100644 index 00000000..04f77151 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/DeptUserUniteRespVo.java @@ -0,0 +1,18 @@ +package com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo; + +import lombok.Data; + +@Data +public class DeptUserUniteRespVo { + + private Long targetId; // 目标Id + + private String targetType; // 目标类型 + + private String targetName; // 目标名称 + + private boolean hasLeaf; // 是否叶子节点 + +// private List deptIds; + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyJoinPageVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyJoinPageVO.java deleted file mode 100644 index 1d23f8af..00000000 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyJoinPageVO.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo; - -import com.zt.plat.framework.common.pojo.PageParam; -import com.zt.plat.module.qms.core.aspect.annotation.Dict; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; - -import java.time.LocalDateTime; - -import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; - -@Schema(description = "管理后台 - 文件评审分页 Request VO") -@Data -public class RecordApplyJoinPageVO { - - // ============recordApply=================> - - @Schema(description = "id", example = "28812") - private Long id; - - @Schema(description = "申请标题,【字典】【jy_record_apply_bsn_type】分发、查看申请、作废、评审") - private String title; - - @Schema(description = "业务类型", example = "1") - private String businessType; - - @Dict(dicCode = "flow_status") - private String businessStatus; - - @Schema(description = "申请人id", example = "15000") - private Long applyUserId; - - @Schema(description = "申请人姓名", example = "张三") - private String applyUserName; - - @Schema(description = "部门id") - private Long applyDepartmentId; - - @Schema(description = "部门名称", example = "研发部") - private String applyDepartmentName; - - @Schema(description = "评审范围") - private String reviewRange; - - @Schema(description = "参加评审人员", example = "赵六") - private String reviewUserName; - - @Schema(description = "参加评审人员id") - private String targetUserIds; - - @Schema(description = "表单数据") - private String formData; - - @Schema(description = "申请事由") - private String applyContent; - - @Schema(description = "是否长期有效") - private String permanently; - - @Schema(description = "开始日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime applyStartDate; - - @Schema(description = "截止日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime applyEndDate; - - @Schema(description = "备注") - private String remark; - - @Schema(description = "创建时间") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime createTime; - - // ============recordApplyDetail=================> - @Schema(description = "applyDetailId", example = "28812") - private Long applyDetailId; - - @Schema(description = "父id", example = "28812") - private Long applyId; - - @Schema(description = "文件id", example = "3188") - private Long documentId; - - @Schema(description = "授权类型") - private String TargetType; - - @Schema(description = "授权Id") - private Long targetId; - - // ============recordRecord=================> - - @Schema(description = "记录id", example = "7849") - private Long recordId; - - @Schema(description = "分类id", example = "7849") - private Long categoryId; - - @Schema(description = "文件编号") - private String code; - - @Schema(description = "文件名称", example = "王五") - private String name; - - @Schema(description = "版本") - private String version; - - @Schema(description = "是否最新版本,默认显示最新版本") - private Integer currentFlag; - - @Schema(description = "编制日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime makeDate; - -// @Schema(description = "是否长期有效") -// private Integer permanently; - - @Schema(description = "是否需要提交(用来判断文件是否需要走流程)") - private String submitFlag; - - @Schema(description = "文件记录状态,0: 无效,1: 有效") - private Integer recordStatus; - - @Schema(description = "过期日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime expirationDate; - - @Schema(description = "生效日期") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private LocalDateTime effectiveDate; - - @Schema(description = "过期标识,0-有效,1-过期", example = "1") - private Integer expirationStatus; - - @Schema(description = "作废标志,0-有效,1-作废") - private Integer cancelFlag; - - @Schema(description = "是否回收权限") - private Integer collectionFlag; - - -} \ 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/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 5fae416a..6c09ff82 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 @@ -1,41 +1,40 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordpermission; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import com.zt.plat.framework.business.annotation.FileUploadController; +import com.zt.plat.framework.business.controller.AbstractFileUploadController; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageParam; +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.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.module.qms.resource.record.constant.RecordConstants; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionSaveReqVO; -import org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; -import com.zt.plat.framework.business.annotation.FileUploadController; -import com.zt.plat.framework.business.controller.AbstractFileUploadController; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; -import com.zt.plat.framework.common.pojo.PageParam; -import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.framework.common.util.object.BeanUtils; -import static com.zt.plat.framework.common.pojo.CommonResult.success; - -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 com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordJoinPermissionRespVO; +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.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 记录权限") @RestController @@ -131,6 +130,34 @@ public class RecordPermissionController extends AbstractFileUploadController imp return success(BeanUtils.toBean(pageResult, RecordPermissionRespVO.class)); } + + /** + * 通过权限查文件 + */ + @GetMapping("/selectRecordByPermission") + @Operation(summary = "获得文件、模板、记录分页") + //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") + public CommonResult> selectRecordByPermission(RecordPermissionPageReqVO pageReqVO) { + IPage recordPermissionPageReqVOIPage = recordPermissionService.selectRecordByPermission(pageReqVO); + PageResult pageResult = + new PageResult<>(recordPermissionPageReqVOIPage.getRecords(), recordPermissionPageReqVOIPage.getTotal()); + return success(pageResult); + } + + + /** + * 通过记录查权限列表 + */ + @GetMapping("/selectPermissionByRecord") + @Operation(summary = "获得文件、模板、记录分页") + //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") + public CommonResult> selectPermissionByRecord(RecordRecordPageReqVO pageReqVO) { + IPage recordPermissionPageReqVOIPage = recordPermissionService.selectPermissionByRecord(pageReqVO); + PageResult pageResult = + new PageResult<>(recordPermissionPageReqVOIPage.getRecords(), recordPermissionPageReqVOIPage.getTotal()); + return success(pageResult); + } + @GetMapping("/export-excel") @Operation(summary = "导出记录权限 Excel") //@PreAuthorize("@ss.hasPermission('qms:record-permission:export')") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionPageReqVO.java index 5ca99309..59a1e3fd 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionPageReqVO.java @@ -28,7 +28,7 @@ public class RecordPermissionPageReqVO extends PageParam { private String targetType; @Schema(description = "授权对象", example = "9264") - private String targetId; + private Long targetId; @Schema(description = "授权对象名称", example = "普通角色") private String targetName; @@ -68,4 +68,10 @@ public class RecordPermissionPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + // =============临时字段================= + + private Long userId; + + private List userDeptIds; + } \ 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/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 3edf02c0..128791f0 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 @@ -129,8 +129,6 @@ public class RecordRecordController extends AbstractFileUploadController impleme pageResult = recordRecordService.getEffectiveRecordPage(pageReqVO); return success(BeanUtils.toBean(pageResult, RecordRecordRespVO.class)); } - - // TODO @GetMapping("/getMatchedPermissionList") @Operation(summary = "获得记录权限列表") //@PreAuthorize("@ss.hasPermission('qms:record-permission:query')") @@ -155,6 +153,14 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); } + @GetMapping("/selectRecordRecordPage") + @Operation(summary = "获得文件、模板、记录分页") + //@PreAuthorize("@ss.hasPermission('qms:record-record:query')") + public CommonResult> selectRecordRecordPage(RecordRecordPageReqVO pageReqVO) { + PageResult result = recordRecordService.selectRecordRecordPage(pageReqVO); + return success(BeanUtils.toBean(result, RecordRecordRespVO.class)); + } + // 已由 XXL-Job 定时任务(updateRecordStatusJob)驱动,此接口保留用于手动触发/测试 /** diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordJoinPermissionRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordJoinPermissionRespVO.java new file mode 100644 index 00000000..b7ec34e7 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordJoinPermissionRespVO.java @@ -0,0 +1,65 @@ +package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO; +import com.zt.plat.module.qms.core.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 文件、模板、记录 Response VO") +@Data +@ExcelIgnoreUnannotated +public class RecordJoinPermissionRespVO extends RecordRecordRespVO{ + @Schema(description = "权限ID") + @ExcelProperty("权限ID") + private Long permId; + + @Schema(description = "记录类型", example = "1") + @ExcelProperty("记录类型") + private String sourceType; + + @Schema(description = "记录id", example = "1104") + @ExcelProperty("记录id") + private Long sourceId; + + @Schema(description = "授权类型", example = "1") + @ExcelProperty("授权类型") + private String targetType; + + @Schema(description = "授权对象", example = "9264") + @ExcelProperty("授权对象") + private String targetId; + + @Schema(description = "授权对象名称", example = "普通角色") + @ExcelProperty("授权对象名称") + private String targetName; + + @Schema(description = "权限类型") + @ExcelProperty("权限类型") + @Dict(dicCode = "file_record_permission type") + private String permission; + + @Schema(description = "过期日期") + @ExcelProperty("过期日期") + private LocalDateTime permExpirationDate; + + @Schema(description = "过期标识,0-有效,1-过期", example = "1") + @ExcelProperty("过期标识,0-有效,1-过期") + @Dict(dicCode = "yes_or_no") + private Integer permExpirationStatus; + + @Schema(description = "权限作废标志,0-有效,1-作废") + @ExcelProperty("权限作废标志,0-有效,1-作废") + @Dict(dicCode = "yes_or_no") + private Integer permCancelFlag; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime permCreateTime; + +} \ 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/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 2db87fb9..66b9fe8b 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 @@ -1,16 +1,18 @@ package com.zt.plat.module.qms.resource.record.dal.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionPageReqVO; +import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordJoinPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; -import java.util.Set; /** * 记录权限 Mapper @@ -48,6 +50,7 @@ public interface RecordPermissionMapper extends BaseMapperX * 3. 或用户的角色有权限 (targetType='角色' AND targetId in userRoles) */ List selectPermissionList(@Param("recordP") RecordPermissionDO recordP); // permission: 管理员/可编辑/可查看 + /** * 检查用户是否有记录的权限 * 查询条件:permission='可查看' AND @@ -56,4 +59,18 @@ public interface RecordPermissionMapper extends BaseMapperX */ List selectRecordPermissionList(@Param("recordP") RecordPermissionDO recordP); // permission: 管理员/可编辑/可查看 + /** + * 通过权限查文件 + * + * @param page + * @param recordP + * @return + */ + IPage selectRecordByPermission(Page page, RecordPermissionPageReqVO recordP); + + // 通过文件权限查询 + IPage selectPermissionByRecord(Page page, RecordRecordPageReqVO recordP); + + // 权限回收情况查询 TODO + IPage getExpireAndCancelRecordPermissionList(Page page, RecordRecordPageReqVO recordP); } \ 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/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 eea821e6..18eecc3c 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 @@ -2,10 +2,12 @@ package com.zt.plat.module.qms.resource.record.service.recordpermission; 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.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionSaveReqVO; +import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordJoinPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import jakarta.validation.Valid; @@ -113,9 +115,13 @@ public interface RecordPermissionService { boolean hasEditPermissionByUserId(Long categoryId); - boolean updateRecordPermissionBatch(List recordPermissionDOList); +// boolean updateRecordPermissionBatch(List recordPermissionDOList); Integer updatePermission(LambdaUpdateWrapper queryWrapper); Integer withdrawPermissionJob(); + + IPage selectRecordByPermission(RecordPermissionPageReqVO pageReqVO); + + IPage selectPermissionByRecord(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/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 5048d634..c6da0abe 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 @@ -3,7 +3,9 @@ package com.zt.plat.module.qms.resource.record.service.recordpermission; import cn.hutool.core.collection.CollUtil; 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; import com.xxl.job.core.context.XxlJobHelper; import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi; import com.zt.plat.framework.common.pojo.CommonResult; @@ -16,6 +18,8 @@ import com.zt.plat.module.qms.resource.record.constant.RecordConstants; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionSaveReqVO; +import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordJoinPermissionRespVO; +import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; import com.zt.plat.module.qms.resource.record.dal.mapper.RecordPermissionMapper; import com.zt.plat.module.system.api.dept.DeptApi; @@ -192,10 +196,6 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { return false; } - @Override - public boolean updateRecordPermissionBatch(List recordPermissionDOList) { - return recordPermissionMapper.updateBatch(recordPermissionDOList); - } // 判断当前用户是不是最高管理员 // @QmsPermission(deptIdColumn="") @@ -328,6 +328,27 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { return 0; } + @Override + public IPage selectRecordByPermission(RecordPermissionPageReqVO pageReqVO) { + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + String targetType = pageReqVO.getTargetType(); + Long targetId = pageReqVO.getTargetId(); + if (RecordConstants.TargetType.USER.equals(targetType)) pageReqVO.setUserId(targetId); + else if (RecordConstants.TargetType.DEPT.equals(targetType)) { + List deptId = new ArrayList<>(); + deptId.add(targetId); + pageReqVO.setUserDeptIds(deptId); + } + pageReqVO.setSourceType(RecordConstants.PermissionSourceType.RECORD); + return recordPermissionMapper.selectRecordByPermission(page, pageReqVO); + } + + @Override + public IPage selectPermissionByRecord(RecordRecordPageReqVO pageReqVO) { + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + return recordPermissionMapper.selectPermissionByRecord(page, pageReqVO); + } + //权限到期,定时回收权限 public Integer expireDateExpireJob() { LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); 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 4f107fcf..923a225a 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 @@ -97,7 +97,7 @@ public interface RecordRecordService { Integer updateExpireRecordJob(); - Integer withdrawPermissionJob(); - int updateRecord(LambdaUpdateWrapper updateWrapper); + + PageResult selectRecordRecordPage(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 a44efc02..d2f95395 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 @@ -640,13 +640,17 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordRecordDOS.size(); } - @Override - public Integer withdrawPermissionJob() { - return 0; - } - @Override public int updateRecord(LambdaUpdateWrapper updateWrapper) { return recordRecordMapper.update(updateWrapper); } + + @Override + public PageResult selectRecordRecordPage(RecordRecordPageReqVO pageReqVO) { + Long categoryId = pageReqVO.getCategoryId(); + pageReqVO.setCurrentFlag(1);// 当前版本 + if (categoryId == null) return PageResult.empty(); + PageResult recordRecordDOPageResult = selectRecordPage(pageReqVO, categoryId, null); + 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/RecordApplyMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyMapper.xml index eb307d9a..71c294a6 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyMapper.xml @@ -2,47 +2,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ 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/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 21b62c4f..70f5f2ba 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 @@ -2,12 +2,38 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rp.id as id, rp.src_id as sourceId, @@ -92,4 +118,60 @@ OR (rp.CNL_FLG = #{recordP.cancelFlag} AND rp.EXPR_STS = #{recordP.expirationStatus}) --> + + SELECT + trp.SRC_ID as sourceId,trp.SRC_TP as sourceType, trp.TGT_TP as targetType,trp.TGT_ID as targetId,trp.TGT_NAME as targetName,trp.PERM as permission,trp.CNL_FLG as permCancelFlag, + trp.EXPR_STS as permExpirationStatus,trp.EXPR_DT as permExpirationDate, trp.CREATE_TIME as permCreateTime, trr.ID as Id,trr.CTGR_ID as categoryId,trr.CD as code, trr.NAME as name, + trr.VER as version,trr.CRNT_FLG as currentFlag,trr.MKE_DT as makeDate,trr.PMNT as permanently, + trr.RCD_STS as recordStatus,trr.EXPR_DT as expirationDate,trr.EFCT_DT as effectiveDate,trr.EXPR_STS as expirationStatus, + trr.CNL_FLG as cancelFlag,trr.MAIN_ID as mainId, trr.APL_STS as applyStatus, trr.CREATE_TIME as createTime + + + + + + + + + + + \ 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 7d49640c..099c6b82 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,10 +1,6 @@ - - - trr.ID