diff --git a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java index bf0d9655..fe02a7ed 100644 --- a/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java +++ b/zt-module-qms/zt-module-qms-api/src/main/java/com/zt/plat/module/qms/enums/ErrorCodeConstants.java @@ -244,4 +244,9 @@ public interface ErrorCodeConstants { ErrorCode RECORD_FILE_EXISTS = new ErrorCode(1_032_350_000, "文件记录目录存在文件"); ErrorCode RECORD_PERMISSION_NOT_ALLOW = new ErrorCode(1_032_350_401, "当前操作权限不允许"); ErrorCode RECORD_CATEGORY_NAME_EXISTS = new ErrorCode(1_032_350_400, "文件记录分类名称不能重复"); + + + /*================================= 部门信息、用户信息 ==================================*/ + ErrorCode CURRENT_USER_COMPANY_NOT_EXISTS = new ErrorCode(1_032_350_000, "当前用户公司不存在"); + ErrorCode CURRENT_USER_DEPT_NOT_EXISTS = new ErrorCode(1_032_350_000, "当前用户部门不存在"); } 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 new file mode 100644 index 00000000..ab446879 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/CommonRecordController.java @@ -0,0 +1,135 @@ +package com.zt.plat.module.qms.resource.record.controller.admin.recordapply; + +import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi; +import com.zt.plat.framework.common.biz.system.permission.dto.DeptDataPermissionRespDTO; +import com.zt.plat.framework.common.pojo.CommonResult; +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.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.CURRENT_USER_COMPANY_NOT_EXISTS; + + +@Slf4j +@Tag(name = "通用接口-获取当前用户所在公司下所有部门及用户") +@RestController +@RequestMapping("/qms/resource/current-user") +@Validated +@DeptDataPermissionIgnore(enable = "true") +public class CommonRecordController { + + @Resource + private DeptApi deptApi; + + @Resource + private AdminUserApi adminUserApi; + + private List deptDataList = new ArrayList<>(); + + private CommonResult> userDataList; + + + @Resource + private PermissionCommonApi permissionCommonApi; + + + @GetMapping("/dept-list") + @Operation(summary = "获取当前用户所在公司的所有部门") + public CommonResult> getDeptList() { +// if (!ObjectUtils.isEmpty(deptDataList)) return CommonResult.success(deptDataList); + // 获取当前部门的所有子部门 + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + Long visitCompanyId = loginUser.getVisitCompanyId(); + // 获取当前所属公司下面的所有的部门 + if (ObjectUtils.isEmpty(loginUser) || loginUser.getVisitCompanyId() == null) + return CommonResult.error(CURRENT_USER_COMPANY_NOT_EXISTS); + CommonResult> childDeptList = deptApi.getChildDeptList(visitCompanyId); + List data = childDeptList.getData(); + deptDataList = getChildDeptList(data); + return CommonResult.success(deptDataList); + } + + // 使用递归查询子部门,并且指定查询四层部门,把所有查询结果放到一个list 集合中返回 + 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 >= 4) { + 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); + } + } + } + } + + @GetMapping("/user-list") + @Operation(summary = "获得当前公司下面的所有用户") + //@PreAuthorize("@ss.hasPermission('qms:record-relation:query')") + public CommonResult> getUserList() { +// if (userDataList != null) return userDataList; + CommonResult> deptList = this.getDeptList(); + List data = deptList.getData(); + // 获取部门的所有id + List deptIds = new ArrayList<>(); + data.forEach(deptRespDTO -> { + deptIds.add(deptRespDTO.getId()); + }); + userDataList = adminUserApi.getUserListByDeptIds(deptIds); + return userDataList; + } + + + @GetMapping("/test") + @Operation(summary = "获得当前公司下面的所有用户") + //@PreAuthorize("@ss.hasPermission('qms:record-relation:query')") + public CommonResult test() { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + Long userId = loginUser.getId(); + CommonResult booleanCommonResult = permissionCommonApi.hasAnyPermissions(userId,"read"); + log.info("booleanCommonResult:{}", booleanCommonResult.getData()); + CommonResult ytjyAdmin = permissionCommonApi.getDeptDataPermissionWithRoleCodes(userId, "11"); + + return ytjyAdmin; + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java index 5dae0b9a..9440ba57 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/RecordApplyController.java @@ -13,6 +13,7 @@ import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIg import com.zt.plat.framework.excel.core.util.ExcelUtils; 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.recordapply.vo.RecordApplyJoinPageVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO; @@ -39,7 +40,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success; @RequestMapping("/qms/resource/record-apply") @Validated @DeptDataPermissionIgnore(enable = "true") -@FileUploadController(source = "qms.recordapply") +@FileUploadController(source = "qms.recordapply",codeKey = "data.fileUploadBusinessCode") public class RecordApplyController extends AbstractFileUploadController implements BusinessControllerMarker{ static { @@ -52,6 +53,9 @@ public class RecordApplyController extends AbstractFileUploadController implemen @Resource private RecordApplyService recordApplyService; + @Resource + private BusinessFileService businessFileService; + @PostMapping("/create") @Operation(summary = "创建文件记录创建申请") @@ -77,9 +81,9 @@ public class RecordApplyController extends AbstractFileUploadController implemen @PutMapping("/update") @Operation(summary = "更新文件记录通用申请") //@PreAuthorize("@ss.hasPermission('qms:record-apply:update')") - public CommonResult updateRecordApply(@Valid @RequestBody RecordApplySaveReqVO updateReqVO) { - recordApplyService.updateRecordApply(updateReqVO); - return success(true); + public CommonResult updateRecordApply(@Valid @RequestBody RecordApplySaveReqVO updateReqVO) { + RecordApplyRespVO recordApplyRespVO = recordApplyService.updateRecordApply(updateReqVO); + return success(recordApplyRespVO); } @DeleteMapping("/delete") @@ -109,6 +113,7 @@ public class RecordApplyController extends AbstractFileUploadController implemen // 先转换为VO,避免JSONObject中包含ArrayList导致的转换错误 RecordApplyRespVO respVO = BeanUtils.toBean(recordApply, RecordApplyRespVO.class); + respVO.setBusinessFileRet(businessFileService.getBusinessFileList(id)); return success(respVO); } @@ -173,4 +178,17 @@ public class RecordApplyController extends AbstractFileUploadController implemen BeanUtils.toBean(list, RecordApplyRespVO.class)); } + /** + * 通过定时任务,判断文件是否到期(到期自动作废) + * @return + */ + // 已由 XXL-Job 定时任务(XXX)驱动,此接口保留用于手动触发/测试 + @GetMapping("/timing-updateRecordStatus") + @Operation(summary = "定时更新文件、模板、记录状态") + //@PreAuthorize("@ss.hasPermission('qms:record-record:update')") + public CommonResult timingUpdateRecordStatus() { +// recordApplyService.updateApplyStatus(); + return success(true); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java index f43bf916..9c2412e9 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplyRespVO.java @@ -1,6 +1,8 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo; import com.alibaba.fastjson2.JSONObject; +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 com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; @@ -118,6 +120,14 @@ public class RecordApplyRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + // ===================扩展字段========================= + @Schema(description = "附件对象") + private CommonResult> businessFileRet; + + @Schema(description = "附件上传code") + @ExcelProperty("附件上传code") + private String fileUploadBusinessCode = "qms_resource_record_apply"; + // // ===============临时字段=================》 @Schema(description = "明细列表") private List detailList; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java index 07536ef6..ae70bc2f 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordapply/vo/RecordApplySaveReqVO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo; import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.qms.resource.clientManage.controller.vo.UploadFileVo; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; @@ -94,6 +95,12 @@ public class RecordApplySaveReqVO { // ============================================ + @Schema(description = "上传文件列表") + private List files; + + @Schema(description = "删除的文件id") + private List deleteFileIdList; + @Schema(description = "文件记录ID") private Long recordId; 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 e0ee549f..737b16cc 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,6 +1,7 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordpermission; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +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; @@ -96,12 +97,19 @@ public class RecordPermissionController extends AbstractFileUploadController imp return success(BeanUtils.toBean(recordPermission, RecordPermissionRespVO.class)); } - @GetMapping("/isAdminByUserId") + @GetMapping("/isPermissionByUserId") @Operation(summary = "通过分类Id判断当前用户是否有管理员权限") @Parameter(name = "id", description = "编号", required = true, example = "1024") //@PreAuthorize("@ss.hasPermission('qms:record-category:query')") - public CommonResult isAdminByUserId(@RequestParam("categoryId") Long categoryId) { - boolean b = recordPermissionService.isAdminByUserId(categoryId); + public CommonResult isAdminByUserId(@RequestParam("categoryId") Long categoryId,@RequestParam("permission") String permission) { + boolean b = false; + boolean isAdmin = recordPermissionService.judgeIsAdmin(); + if (isAdmin) return success(isAdmin); + if (permission.equals(RecordConstants.PermissionType.ADMIN)) { + b = recordPermissionService.isAdminByUserId(categoryId); + } else if (permission.equals(RecordConstants.PermissionType.EDIT)) { + b = recordPermissionService.isEditPermissionByUserId(categoryId); + } return success(b); } @@ -136,13 +144,4 @@ public class RecordPermissionController extends AbstractFileUploadController imp BeanUtils.toBean(list, RecordPermissionRespVO.class)); } - - @GetMapping("/test") - @Operation(summary = "导出记录权限 Excel") - //@PreAuthorize("@ss.hasPermission('qms:record-permission:export')") - @ApiAccessLog(operateType = EXPORT) - public void test() { - recordPermissionService.test(); - } - } \ 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 7c349f08..50c60a81 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/RecordRecordController.java @@ -1,63 +1,47 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord; -import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.framework.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.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.clientManage.controller.vo.VersionManagementRespVO; -import com.zt.plat.module.qms.resource.record.constant.RecordConstants; -import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyRespVO; -import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplySaveReqVO; -import com.zt.plat.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.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordpermission.RecordPermissionDO; -import com.zt.plat.module.qms.resource.record.service.recordcategory.RecordCategoryService; +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 lombok.extern.slf4j.Slf4j; -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 io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; -import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; -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 static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_PERMISSION_NOT_ALLOW; -import com.zt.plat.module.qms.resource.record.dal.dataobject.recordrecord.RecordRecordDO; -import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; - @Slf4j @Tag(name = "管理后台 - 文件、模板、记录") @RestController @RequestMapping("/qms/resource/record-record") @Validated -@DeptDataPermissionIgnore(enable = "true") +//@DeptDataPermissionIgnore(enable = "true") @FileUploadController(source = "qms.recordrecord", codeKey = "data.fileUploadBusinessCode") public class RecordRecordController extends AbstractFileUploadController implements BusinessControllerMarker{ @@ -76,42 +60,42 @@ public class RecordRecordController extends AbstractFileUploadController impleme @Resource private BusinessFileService businessFileService; -// @Resource -// private DeptApi deptApi; + @Resource + private DeptApi deptApi; -// @GetMapping("/deptList") -// @Operation(summary = "获得文件记录关系") - //@PreAuthorize("@ss.hasPermission('qms:record-relation:query')") -// public CommonResult> getRecordRelation() { -// // 获取当前部门的所有子部门 -// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); -// Long visitCompanyId = loginUser.getVisitCompanyId(); -// log.info("visitCompanyId:{}", visitCompanyId); -// Long deptId = loginUser.getVisitDeptId(); -// DeptListReqDTO dto = new DeptListReqDTO(); -// List deptIds = new ArrayList<>(); -// deptIds.add(deptId.toString()); -// dto.setIds(deptIds); -// CommonResult> deptList = deptApi.getDeptList(dto); -// log.info("deptList:{}", deptList); -// // 获取当前所属公司下面的所有的部门 -// if (visitCompanyId != null) { -//// return deptApi.getChildDeptList(visitCompanyId); -// CommonResult> allCompanyList = deptApi.getAllCompanyList(); -// log.info("allCompanyList:{}", allCompanyList); -// DeptSimpleRespDTO deptSimpleRespDTO = allCompanyList.getData().get(0); -// deptSimpleRespDTO.getIsCompany(); -// log.info("deptSimpleRespDTO:{}", deptSimpleRespDTO); -// CommonResult> childDeptList = deptApi.getChildDeptList(deptId); -// log.info("childDeptList:{}", childDeptList); -// CommonResult> companyDeptInfoListByUserId = deptApi.getCompanyDeptInfoListByUserId(loginUser.getId()); -// log.info("companyDeptInfoListByUserId:{}", companyDeptInfoListByUserId); -// return childDeptList; -// } -// Long visitDeptId = loginUser.getVisitDeptId(); -// if (visitDeptId == null) return CommonResult.error(RECORD_PERMISSION_NOT_ALLOW.getCode(), "用户部门不存在"); -// return deptApi.getChildDeptList(visitDeptId); -// } + @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") @@ -204,16 +188,4 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(true); } - /** - * 通过定时任务,判断文件是否到期(到期自动作废) - * @return - */ - // 已由 XXL-Job 定时任务(XXX)驱动,此接口保留用于手动触发/测试 -// @GetMapping("/timing-updateRecordStatus") -// @Operation(summary = "定时更新文件、模板、记录状态") -// //@PreAuthorize("@ss.hasPermission('qms:record-record:update')") -// public CommonResult timingUpdateRecordStatus() { -// recordRecordService.updateRecordStatus(); -// return success(true); -// } } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java index e95eb042..b692b32c 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapply/RecordApplyDO.java @@ -148,6 +148,11 @@ public class RecordApplyDO extends BusinessBaseDO { @TableField("RMK") private String remark; + // =========临时字段======== + @TableField(exist = false) + private LocalDateTime expirationDate; // TODO + + // ========================== @TableField(exist = false) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java index 89a260d8..dca52f5d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordapplydetail/RecordApplyDetailDO.java @@ -114,8 +114,11 @@ public class RecordApplyDetailDO extends BusinessBaseDO { @TableField(exist = false) private String recordPermanently; + // =========临时字段======== + @TableField(exist = false) private LocalDateTime expirationDate; + } \ 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/RecordApplyDetailMapper.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.java index 70bfcf91..4c55ebf5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.java @@ -4,6 +4,7 @@ import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailPageReqVO; +import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail.RecordApplyDetailDO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailJoinVO; import org.apache.ibatis.annotations.Mapper; @@ -57,4 +58,6 @@ public interface RecordApplyDetailMapper extends BaseMapperX selectDetailAndRecordList(@Param("applyId") Long applyId); List selectDistributionDetailAndRecordList(@Param("applyId") Long applyId); + + List updateDistributionPermissionJob(); } \ 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 b72d0788..d8c3fb62 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,10 +46,9 @@ public interface RecordPermissionMapper extends BaseMapperX * 2. 或用户所在部门有权限 (targetType='部门' AND targetId in userDepts) * 3. 或用户的角色有权限 (targetType='角色' AND targetId in userRoles) */ - List selectPermissionList(@Param("categoryId") Long categoryId, + List selectPermissionList(@Param("recordP") RecordPermissionDO recordPermissionDO, @Param("userId") Long userId, @Param("userDepts") List userDepts, - @Param("userRoles") Set userRoles, - @Param("permission") String permission); // permission: 管理员/可编辑/可查看 + @Param("userRoles") Set userRoles); // 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/job/RecordRecordJob.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java index e689bbd8..5758ba2d 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/job/RecordRecordJob.java @@ -2,6 +2,7 @@ package com.zt.plat.module.qms.resource.record.job; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; +import com.zt.plat.module.qms.resource.record.service.recordapply.RecordApplyService; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +17,8 @@ public class RecordRecordJob { @Autowired private RecordRecordService recordRecordService; + @Autowired + private RecordApplyService recordApplyService; /** * 定时更新文件记录生效状态 @@ -28,7 +31,8 @@ public class RecordRecordJob { public void updateRecordStatusJob() { log.info("[updateRecordStatusJob] 开始执行文件记录生效状态更新任务"); try { - Integer updateCount = recordRecordService.updateRecordStatus(); + Integer updateCount = recordRecordService.updateRecordStatus(); // 更新文件生效日期 + // 更新文件过期记录 TODO log.info("[updateRecordStatusJob] 任务执行成功,共更新 {} 条记录", updateCount); XxlJobHelper.handleSuccess(String.format("任务执行成功,共更新 %d 条记录", updateCount)); } catch (Exception e) { @@ -37,4 +41,24 @@ public class RecordRecordJob { } } + /** + * 定时获取文件下发到期状态 + * 检测 effectiveDate <= 当前时间 且 recordStatus != 1 的记录,将其更新为已生效(recordStatus = 1) + * + * JobHandler 名称: updateRecordStatusJob + * 推荐 Cron: 0 0 0 * * ?(每天零点执行) + */ + @XxlJob("updateDistributionPermissionJob") + public void updateDistributionPermissionJob() { + log.info("[updateDistributionPermissionJob] 开始执行文件记录生效状态更新任务"); + try { + Integer updateCount = recordApplyService.updateDistributionPermissionJob(); + log.info("[updateDistributionPermissionJob] 任务执行成功,共更新 {} 条记录", updateCount); + XxlJobHelper.handleSuccess(String.format("任务执行成功,共更新 %d 条记录", updateCount)); + } catch (Exception e) { + log.error("[updateDistributionPermissionJob] 任务执行失败:{}", e.getMessage(), e); + throw e; + } + } + } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyService.java index a7640bda..aebedef3 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyService.java @@ -34,7 +34,7 @@ public interface RecordApplyService { * * @param updateReqVO 更新信息 */ - void updateRecordApply(@Valid RecordApplySaveReqVO updateReqVO); + RecordApplyRespVO updateRecordApply(@Valid RecordApplySaveReqVO updateReqVO); /** * 删除文件记录通用申请 @@ -132,5 +132,7 @@ public interface RecordApplyService { // 更改作废 PageResult recordInvalidPage(@Valid RecordApplyPageReqVO pageReqVO); + Integer updateDistributionPermissionJob(); + // List selectApplyByStatus(String businessType, java.util.List documentIds, java.util.List businessStatuses); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapply/RecordApplyServiceImpl.java index 6f3fe0b0..36c002ab 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 @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.resource.record.service.recordapply; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zt.plat.framework.common.pojo.CommonResult; @@ -18,6 +19,7 @@ import com.zt.plat.module.qms.common.data.dal.dataobject.DataCommonType; import com.zt.plat.module.qms.common.data.dal.dataobject.DataOpinionDO; import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; import com.zt.plat.module.qms.common.data.service.DataOpinionService; +import com.zt.plat.module.qms.common.service.BusinessFileService; import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; import com.zt.plat.module.qms.resource.record.common.RecordCommonUtils; @@ -28,35 +30,35 @@ import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.Re import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplySaveReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; -import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordPageReqVO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail.RecordApplyDetailDO; 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.dataobject.recordrecord.RecordRecordDO; import com.zt.plat.module.qms.resource.record.dal.mapper.RecordApplyMapper; -import com.zt.plat.module.qms.resource.record.dal.mapper.RecordRecordMapper; import com.zt.plat.module.qms.resource.record.service.recordapplydetail.RecordApplyDetailService; import com.zt.plat.module.qms.resource.record.service.recordcategory.RecordCategoryService; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; import com.zt.plat.module.qms.resource.record.service.recordrecord.RecordRecordService; import com.zt.plat.module.system.api.dept.DeptApi; -import com.zt.plat.module.system.api.dept.dto.CompanyDeptInfoRespDTO; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import java.text.SimpleDateFormat; +import java.time.Instant; import java.time.LocalDateTime; +import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.IntStream; -import static cn.hutool.json.XMLTokener.entity; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; @@ -92,6 +94,12 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn @Resource private RecordPermissionService recordPermissionService; + @Resource + private BusinessFileService businessFileService; + + @Resource + private AdminUserApi adminUserApi; + @Resource private DeptApi deptApi; @@ -108,7 +116,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn @Override @Transactional(rollbackFor = Exception.class) - public void updateRecordApply(RecordApplySaveReqVO updateReqVO) { + public RecordApplyRespVO updateRecordApply(RecordApplySaveReqVO updateReqVO) { // 校验存在 // validateRecordApplyExists(updateReqVO.getId()); RecordApplyDO recordApplyDO = recordApplyMapper.selectById(updateReqVO.getId()); @@ -124,6 +132,11 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } recordApplyMapper.updateById(updateObj); + + businessFileService.deleteBusinessFileList(updateReqVO.getDeleteFileIdList()); + + return BeanUtils.toBean(updateReqVO, RecordApplyRespVO.class); + } @Override @@ -271,8 +284,9 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn // 添加分发明细 public List addDistributionDetail(RecordApplySaveReqVO param, RecordApplyDO recordApplyDO) { Long recordId = param.getDetailList().get(0).getDocumentId(); - String assignTarget = param.getAssignTarget(); - +// String assignTarget = param.getAssignTarget(); + String applyFormData = param.getFormData(); + if (ObjectUtils.isEmpty(applyFormData)) throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(),"过期日期不能为空"); List detailSaveReqVOList = new ArrayList<>(); String targetUserIds = param.getTargetUserIds(); if (!ObjectUtils.isEmpty(targetUserIds)) { // 用户 @@ -280,6 +294,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn for (String userId : userIds) { if (ObjectUtils.isEmpty(userId)) break; // 过滤空 RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); + recordApplyDetailDO.setFormData(applyFormData); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); recordApplyDetailDO.setDocumentId(recordId); recordApplyDetailDO.setTargetId(Long.valueOf(userId));//用户Id @@ -295,6 +310,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn for (String deptId : deptIds) { if (ObjectUtils.isEmpty(deptId)) break; // 过滤空 RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); + recordApplyDetailDO.setFormData(applyFormData); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); recordApplyDetailDO.setDocumentId(recordId); recordApplyDetailDO.setTargetId(Long.valueOf(deptId));//部门Id @@ -374,87 +390,6 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return detailSaveReqVOList; } - //增加明细 - @Transactional(rollbackFor = Exception.class) - public CommonResult addDetail(RecordApplySaveReqVO param, RecordApplyDO recordApplyDO) { - String businessType = param.getBusinessType(); - List detailList = param.getDetailList(); - //申请通用明细记录 - List detailSaveReqVOList = new ArrayList<>(); - // 判断是否是评审,如果是评审,一批评审文件对应一个申请记录,对应多条申请明细记录 - if (RecordConstants.BusinessType.REVIEW.equals(businessType) - || RecordConstants.BusinessType.RECORD_UPDATE.equals(businessType) - || RecordConstants.BusinessType.VIEW_APPLY.equals(businessType) - || RecordConstants.BusinessType.INVALID.equals(businessType)) { // 评审,或修改申请,或查看申请,或文件作废 - if (ObjectUtils.isEmpty(detailList)) throw exception(RECORD_RECORD_NOT_EXISTS, "请选择至少一条文件记录"); - for (RecordApplyDetailSaveReqVO item : detailList) { - RecordApplyDetailDO recordApplyDetailDO = getRecordApplyDetailDO(recordApplyDO, item, businessType); - detailSaveReqVOList.add(recordApplyDetailDO); - } - } else if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { // 分发 - Long recordId = param.getDetailList().get(0).getDocumentId(); - String targetDepartmentIds = param.getTargetDepartmentIds(); -// if (ObjectUtils.isEmpty(targetDepartmentIds)) throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(),"分发部门不存在"); - String[] deptIds = targetDepartmentIds.split(","); -// Long[] userIds = param.getUserIds(); -// Long[] deptIds = param.getDeptIds(); - String targetUserIds = param.getTargetUserIds(); -// if (ObjectUtils.isEmpty(targetUserIds)) throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(),"分发人员不存在"); - String[] userIds = targetDepartmentIds.split(","); - if (!ObjectUtils.isEmpty(userIds)) { // 用户 - for (String userId : userIds) { - if (ObjectUtils.isEmpty(userId)) break; // 过滤空 - RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); - recordApplyDetailDO.setApplyId(recordApplyDO.getId()); - recordApplyDetailDO.setDocumentId(recordId); - recordApplyDetailDO.setTargetId(Long.valueOf(userId));//用户Id - recordApplyDetailDO.setTargetType(RecordConstants.TargetType.USER); - recordApplyDetailDO.setApplyStartDate(LocalDateTime.now()); // TODO 申请开始时间 - detailSaveReqVOList.add(recordApplyDetailDO); - } - } else { - if (ObjectUtils.isEmpty(deptIds)) throw exception(RECORD_RECORD_NOT_EXISTS, "请选择分发对象"); - for (String deptId : deptIds) { - if (ObjectUtils.isEmpty(deptId)) break; // 过滤空 - RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); - recordApplyDetailDO.setApplyId(recordApplyDO.getId()); - recordApplyDetailDO.setDocumentId(recordId); - recordApplyDetailDO.setTargetId(Long.valueOf(deptId));//部门Id - recordApplyDetailDO.setTargetType(RecordConstants.TargetType.DEPT); - recordApplyDetailDO.setApplyStartDate(LocalDateTime.now()); // TODO 申请开始时间 - detailSaveReqVOList.add(recordApplyDetailDO); - } - } - } else { - RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); - Long recordId = param.getRecordId(); - recordApplyDetailDO.setApplyId(recordApplyDO.getId()); - recordApplyDetailDO.setDocumentId(recordId); // 文件Id - detailSaveReqVOList.add(recordApplyDetailDO); - } - boolean recordApplyDetailBatch = recordApplyDetailService.createRecordApplyDetailBatch(detailSaveReqVOList); - if (!recordApplyDetailBatch) - throw exception(RECORD_APPLY_NOT_EXISTS, "保存申请明细失败"); - - return CommonResult.success(true); - } - - @NotNull - private RecordApplyDetailDO getRecordApplyDetailDO(RecordApplyDO recordApplyDO, RecordApplyDetailSaveReqVO item, String businessType) { - RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); - recordApplyDetailDO.setApplyId(recordApplyDO.getId()); - recordApplyDetailDO.setDocumentId(item.getDocumentId()); // 文件Id - if (RecordConstants.BusinessType.VIEW_APPLY.equals(businessType)) { - recordApplyDetailDO.setTargetType(RecordConstants.TargetType.USER); - recordApplyDetailDO.setTargetId(loginUser.getId()); // 申请人,当前用户 - } - if (RecordConstants.BusinessType.REVIEW.equals(businessType)) { // 评审 是否 修改文件 - recordApplyDetailDO.setIsModify(item.getIsModify()); - recordApplyDetailDO.setModifyCause(item.getModifyCause()); - } - return recordApplyDetailDO; - } - @Override public CommonResult removeDetail(JSONObject param) { String detailIds = param.getString("detailIds"); @@ -539,13 +474,15 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn Integer submitFlag = jsonObject.getInteger("submitFlag"); if (submitFlag == 0) { // 不允许提交,直接修改文件记录状态 - recordDO.setRecordStatus(1); // 已生效 - recordRecordService.updateRecordRecordById(recordDO); - return true; - } else { - // 判断是否到生效日期 +// recordDO.setRecordStatus(1); // 已生效 RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); recordRecordService.updateRecordRecordById(effectiveRecordRecordDO); + return true; + } else { // 需要走流程 + // 判断是否到生效日期 +// RecordRecordDO effectiveRecordRecordDO = isEffective(recordDO); + recordDO.setRecordStatus(0); + recordRecordService.updateRecordRecordById(recordDO); } return false; @@ -557,13 +494,11 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (effectiveDate == null) { // 没有生效日期,立即生效 recordDO.setRecordStatus(1); } else { + recordDO.setRecordStatus(0); // 待生效 LocalDateTime now = LocalDateTime.now(); if (now.isAfter(effectiveDate) || now.isEqual(effectiveDate)) { recordDO.setRecordStatus(1); // 已生效 } -// else { -// recordDO.setRecordStatus(3); // 待生效 -// } } return recordDO; } @@ -612,8 +547,8 @@ 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(), "请选择文件记录"); +// if (ObjectUtils.isEmpty(recordId)) +// throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(), "请选择文件记录"); RecordRecordDO entity = recordRecordService.getRecordById(recordId); if (ObjectUtils.isEmpty(entity)) throw exception0(RECORD_RECORD_NOT_EXISTS.getCode(), "文件记录实体不存在"); @@ -682,7 +617,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn public CommonResult callback(QmsBpmDTO reqDTO) { log.error("文件下发流程回调:{}", JSONObject.toJSONString(reqDTO)); loginUser = SecurityFrameworkUtils.getLoginUser(); - if (ObjectUtils.isEmpty(loginUser)) throw exception0(1_032_350_401, "当前用户不存在,请重新登录"); + if (ObjectUtils.isEmpty(loginUser)) throw exception0(CURRENT_USER_DEPT_NOT_EXISTS.getCode(), "当前用户不存在,请重新登录"); JSONObject variables = reqDTO.getVariables(); // TODO 目前审批意见在流程回调时保存,后续可以考虑在每个节点完成时保存审批意见,这样可以避免审批意见丢失的情况,同时也能更及时地记录审批意见 JSONObject taskVariables = variables.getJSONObject("taskVariables"); @@ -781,7 +716,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn case RecordConstants.BusinessType.VIEW_APPLY: // 查看申请 recordPermissionAdd(recordApplyDetailDOS); break; - case RecordConstants.BusinessType.INVALID: // 作废 + case RecordConstants.BusinessType.INVALID: // 作废 -- > 回收权限 // 修改文件作废状态 for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { RecordRecordDO recordRecordDO = new RecordRecordDO(); @@ -790,7 +725,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordRecordDO.setRecordStatus(0); // 状态 无效 recordRecordDOS.add(recordRecordDO); } - recordReviewFlowStatus(recordRecordDOS); + recordInvalidFlowStatus(recordRecordDOS); break; default: throw exception(RECORD_APPLY_NOT_EXISTS, "未知的业务类型"); @@ -861,14 +796,55 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } // 文件批量跟新状态 - public void recordReviewFlowStatus(List recordDO) { + public void recordInvalidFlowStatus(List recordDO) { // 修改文件状态为已生效 recordRecordService.updateRecordRecordListByIds(recordDO); + List list = new ArrayList<>(); + recordDO.forEach(item -> { + list.add(item.getId()); + }); + + // 回收文件权限 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RecordPermissionDO::getSourceType, RecordConstants.PermissionSourceType.RECORD); + queryWrapper.in(RecordPermissionDO::getSourceId,list); // 记录id + List recordPermissionDOS = recordPermissionService.selectList(queryWrapper); + List recordPermissionDOList = new ArrayList<>(); + for (RecordPermissionDO recordPermissionDO : recordPermissionDOS) { + recordPermissionDO.setCancelFlag("1"); + recordPermissionDOList.add(recordPermissionDO); + } + recordPermissionService.updateRecordPermissionBatch(recordPermissionDOList); + } + + /** + * 将 Object 类型的时间戳转换为 LocalDateTime + * @param timestamp 时间戳对象(可能是 Long、Date 等类型) + * @return LocalDateTime 对象 + */ + private static LocalDateTime convertToLocalDateTime(Object timestamp) { + if (timestamp == null) { + return null; + } + + if (timestamp instanceof Date) { + return ((Date) timestamp).toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } else if (timestamp instanceof Long) { + return Instant.ofEpochMilli((Long) timestamp) + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + } else if (timestamp instanceof LocalDateTime) { + return (LocalDateTime) timestamp; + } + + return null; } // 文件分发/申请-添加权限 public void recordPermissionAdd(List recordApplyDetailDOS) { - String loginUserNickname = SecurityFrameworkUtils.getLoginUserNickname(); +// String loginUserNickname = SecurityFrameworkUtils.getLoginUserNickname(); String visitDeptName = loginUser.getVisitDeptName(); for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { // 添加记录 @@ -876,7 +852,12 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (ObjectUtils.isEmpty(targetType)) throw exception(RECORD_APPLY_NOT_EXISTS, "分发对象类型不能为空"); // 通过-----> 创建人员权限表记录 + String formData = applyDetailDO.getFormData(); + JSONObject jsonObject = JSONObject.parseObject(formData, JSONObject.class); + Object expirationDate = jsonObject.getTimestamp("expirationDate"); + LocalDateTime localDateTime = convertToLocalDateTime(expirationDate); RecordPermissionDO permissionDO = new RecordPermissionDO(); + permissionDO.setExpirationDate(localDateTime); permissionDO.setPermission(RecordConstants.PermissionType.VIEW); // 可查看 permissionDO.setSourceType(RecordConstants.PermissionSourceType.RECORD); // 记录权限 permissionDO.setSourceId(applyDetailDO.getDocumentId()); // 文件Id @@ -886,11 +867,16 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn if (targetType.equals(RecordConstants.TargetType.USER)) { permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 用户Id permissionDO.setTargetType(RecordConstants.TargetType.USER); - permissionDO.setTargetName(loginUserNickname); + // TODO + CommonResult user = adminUserApi.getUser(applyDetailDO.getTargetId()); + AdminUserRespDTO data = user.getData(); + permissionDO.setTargetName(data.getNickname()); } else if (targetType.equals(RecordConstants.TargetType.DEPT)) { // 部门 permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 部门Id permissionDO.setTargetType(RecordConstants.TargetType.DEPT); - permissionDO.setTargetName(visitDeptName); + CommonResult dept = deptApi.getDept(applyDetailDO.getTargetId()); + DeptRespDTO data = dept.getData(); + permissionDO.setTargetName(data.getName()); } permissionDOList.add(permissionDO); @@ -923,6 +909,34 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return null; } + @Override + public Integer updateDistributionPermissionJob() { + //根据当前时间查询出申请到期的文件申请记录, + List recordApplyDetailDOS = recordApplyDetailService.updateDistributionPermissionJob(); + if (ObjectUtils.isEmpty(recordApplyDetailDOS)) return 0; + // 获取所有文件记录Id + List recordPermissionDOList = new ArrayList<>(); + recordApplyDetailDOS.forEach(item -> { //TODO + RecordPermissionDO permissionDO = new RecordPermissionDO(); + permissionDO.setSourceId(item.getDocumentId()); + permissionDO.setPermission(RecordConstants.PermissionType.VIEW); + permissionDO.setSourceType(RecordConstants.PermissionSourceType.RECORD); + if (item.getTargetType().equals(RecordConstants.TargetType.USER)) + permissionDO.setTargetType(RecordConstants.TargetType.USER); + else if (item.getTargetType().equals(RecordConstants.TargetType.DEPT)) + permissionDO.setTargetType(RecordConstants.TargetType.DEPT); + permissionDO.setTargetId(String.valueOf(item.getTargetId())); + List recordPermissionDOS = recordPermissionService.selectRecordPermission(permissionDO); + recordPermissionDOList.addAll(recordPermissionDOS); + }); + List permissionIds = new ArrayList<>(); + recordPermissionDOList.forEach(item -> { + permissionIds.add(item.getId()); + }); + recordPermissionService.deleteRecordPermissionListByIds(permissionIds); + return permissionIds.size(); + } + //查询提交的流程是否存在没有处理或者通过的的数据 public List selectApplyByStatus(String businessType, java.util.List documentIds, java.util.List businessStatuses) { return recordApplyMapper.selectApplyByStatus(businessType, documentIds, businessStatuses); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java index 1a3aac53..3066cc99 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailService.java @@ -7,6 +7,7 @@ import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailJoinVO; +import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import jakarta.validation.*; import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapplydetail.RecordApplyDetailDO; import com.zt.plat.framework.common.pojo.PageResult; @@ -100,4 +101,6 @@ public interface RecordApplyDetailService { List selectDistributionDetailAndRecordList(Long applyId); int deleteRecordApplyDetailByApplyId(Long applyId); + + List updateDistributionPermissionJob(); } \ 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/recordapplydetail/RecordApplyDetailServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java index 83afc3a2..f6e58bdc 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordapplydetail/RecordApplyDetailServiceImpl.java @@ -7,6 +7,7 @@ import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailSaveReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordapplydetail.vo.RecordApplyDetailJoinVO; +import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.util.ObjectUtils; @@ -140,4 +141,9 @@ public class RecordApplyDetailServiceImpl implements RecordApplyDetailService { return 1; } + @Override + public List updateDistributionPermissionJob() { + return recordApplyDetailMapper.updateDistributionPermissionJob(); + } + } \ 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 76a4d9f5..be76fb7d 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 @@ -78,7 +78,7 @@ public interface RecordPermissionService { * @param categoryId * @return */ - List selectPermissionList(long categoryId,String permission); + List selectPermissionList(long categoryId,String permission,String cancelFlag); /** * 判断当前分类是否有管理员权限 @@ -88,6 +88,12 @@ public interface RecordPermissionService { boolean isAdminByUserId(Long categoryId); + /** + * 判断当前用户是最高管理员 + * @return + */ + boolean judgeIsAdmin(); + /** * 获取权限列表 * @param parentCategoryId @@ -101,5 +107,7 @@ public interface RecordPermissionService { */ List getParentDepts(); - void test(); + boolean isEditPermissionByUserId(Long categoryId); + + boolean updateRecordPermissionBatch(List recordPermissionDOList); } \ 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 917143ea..9d0bdd25 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,9 +3,11 @@ 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.toolkit.Wrappers; +import com.zt.plat.framework.common.biz.system.permission.PermissionCommonApi; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.qms.core.aspect.annotation.QmsPermission; 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; @@ -15,6 +17,7 @@ import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; import com.zt.plat.module.system.api.dept.dto.DeptSimpleRespDTO; import com.zt.plat.module.system.api.permission.PermissionApi; +import com.zt.plat.module.system.api.permission.RoleApi; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; @@ -56,32 +59,25 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { private Set roles = new HashSet<>(); - @Override - public void test(){ - CommonResult> allCompanyList = deptApi.getAllCompanyList(); - log.info("allCompanyList:{}",allCompanyList); - LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - Long visitDeptId = loginUser.getVisitDeptId(); - if (ObjectUtils.isEmpty(visitDeptId)) CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), RECORD_APPLY_NOT_EXISTS.getMsg()); - CommonResult> childDeptList = deptApi.getChildDeptList(visitDeptId); - log.info("booleanCommonResult:{}",childDeptList); - } - /** * 通过分类Id 获取满足当前用户的权限列表 * @param categoryId * @return */ @Override - public List selectPermissionList(long categoryId,String permission){ + public List selectPermissionList(long categoryId,String permission,String cancelFlag){ LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long userId = loginUser.getId(); - deptIds = getParentDepts(); - roles = getRoles(userId); + List deptIds = getParentDepts(); + Set roles = getRoles(userId); if (deptIds.isEmpty())deptIds.add(0L); if (roles.isEmpty())roles.add(0L); // 查询用户是否有该分类的管理员权限 - return recordPermissionMapper.selectPermissionList(categoryId, userId, deptIds, roles, permission); + RecordPermissionDO recordPermissionDO = new RecordPermissionDO(); + recordPermissionDO.setSourceId(categoryId); + recordPermissionDO.setPermission(permission); + recordPermissionDO.setCancelFlag(cancelFlag); + return recordPermissionMapper.selectPermissionList(recordPermissionDO, userId, deptIds, roles); } @@ -124,7 +120,7 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { // 获取当前用户所在权限列表 public Set getRoles(Long userId){ - if (!ObjectUtils.isEmpty(roles)) return roles; +// if (!ObjectUtils.isEmpty(roles)) return roles; CommonResult> userRoleIdListByUserId = permissionApi.getUserRoleIdListByUserId(userId); Set userRoles = userRoleIdListByUserId.getData(); roles.addAll(userRoles); @@ -135,13 +131,13 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { public List getParentDepts() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long currentDeptId = loginUser.getVisitDeptId(); - if (!ObjectUtils.isEmpty(deptIds)) return deptIds; +// if (!ObjectUtils.isEmpty(deptIds)) return deptIds; //通过DeptApi获取完整部门信息(包括父部门) CommonResult deptResult = deptApi.getDept(currentDeptId); DeptRespDTO currentDept = deptResult.getData(); Long parentDeptId = currentDept.getParentId(); // 获取父部门ID // - List parentDepts = new ArrayList<>(); +// List parentDepts = new ArrayList<>(); // 添加当前部门到父部门列表中 Long tempParentId = parentDeptId; while (tempParentId != null && tempParentId != 0) { @@ -156,7 +152,22 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { return deptIds; } + @Override + public boolean isEditPermissionByUserId(Long categoryId) { + String edit = RecordConstants.PermissionType.EDIT; + List recordCategoryDOS = this.selectPermissionList(categoryId,edit); + if (!recordCategoryDOS.isEmpty()) return true; + return false; + } + + @Override + public boolean updateRecordPermissionBatch(List recordPermissionDOList) { + return recordPermissionMapper.updateBatch(recordPermissionDOList); + } + // 判断当前用户是不是最高管理员 +// @QmsPermission(deptIdColumn="") + @Override public boolean judgeIsAdmin() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long userId = loginUser.getId(); @@ -206,6 +217,8 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { public RecordPermissionRespVO createRecordPermission(RecordPermissionSaveReqVO createReqVO) { // 插入 RecordPermissionDO recordPermission = BeanUtils.toBean(createReqVO, RecordPermissionDO.class); + recordPermission.setCancelFlag("0"); + recordPermission.setExpirationStatus("0"); recordPermissionMapper.insert(recordPermission); // 返回 return BeanUtils.toBean(recordPermission, RecordPermissionRespVO.class); 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 f0f524b6..df1ffb23 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 @@ -16,7 +16,6 @@ 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.common.RecordCommonUtils; import com.zt.plat.module.qms.resource.record.constant.RecordConstants; -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; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordRespVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.RecordRecordSaveReqVO; @@ -38,6 +37,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.concurrent.atomic.AtomicBoolean; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; @@ -151,7 +151,7 @@ public class RecordRecordServiceImpl implements RecordRecordService { List categoryIdPath = new ArrayList<>(); recordCategoryDOS.forEach(item -> { Long id = item.getId(); - String idPath = "/0//" + id +"//"; // 根分类的路径 + String idPath = "/0//" + id + "//"; // 根分类的路径 categoryIdPath.add(idPath); }); if (ObjectUtils.isEmpty(categoryIdPath)) return new ArrayList<>(); @@ -172,9 +172,9 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 判断是否有权限 // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) - List recordPermissionDOS = recordPermissionService.selectPermissionList(rootCategoryId, null); + List recordPermissionDOS = recordPermissionService.selectPermissionList(rootCategoryId, null, null); - List recordRecordList ; + List recordRecordList; if (recordPermissionDOS.isEmpty()) return new ArrayList<>(); @@ -351,6 +351,15 @@ public class RecordRecordServiceImpl implements RecordRecordService { RecordCategoryDO recordCategoryDO = validateRecordCategoryExists(categoryId); if (categoryId == null) CommonResult.error(RECORD_CATEGORY_NOT_EXISTS); + Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + + boolean b = recordPermissionService.judgeIsAdmin();// 如果是最高管理员 + if (b) { + IPage iPage = recordRecordMapper.selectRecordWithApplyPage(page, pageReqVO); + PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); + return result; + } + // 校验分类存在 if (ObjectUtils.isEmpty(recordCategoryDO)) return new PageResult().setTotal(0L); String idPath = recordCategoryDO.getIdPath(); @@ -384,9 +393,9 @@ public class RecordRecordServiceImpl implements RecordRecordService { // } // 判断是否有当前分类的父分类权限 (可编辑,可查看,管理员--> 任意条件) - List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null); + List recordPermissionDOS = recordPermissionService.selectPermissionList(parentId, null, null); + - Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); if (ObjectUtils.isEmpty(recordPermissionDOS)) { // 没有分类的权限,判断是否有文件记录的权限,并获取记录列表 LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); @@ -404,9 +413,18 @@ public class RecordRecordServiceImpl implements RecordRecordService { PageResult result = new PageResult<>(iPage.getRecords(), iPage.getTotal()); String admin = RecordConstants.PermissionType.ADMIN; - List recordPermissionDOAdmins = recordPermissionService.selectPermissionList(parentId, admin); +// AtomicBoolean havePermission = new AtomicBoolean(false); +// +// recordPermissionDOS.forEach(item -> { +// String permission = item.getPermission(); +// if (admin.equals(permission)) { +// havePermission.set(true); +// } +// }); // 填充 customConfig(仅管理员权限时填充) + List recordPermissionDOAdmins = recordPermissionService.selectPermissionList(parentId, admin, null); if (!ObjectUtils.isEmpty(recordPermissionDOAdmins)) { +// if (havePermission.get()) { Object finalParse = customConfigParseJson(parentId); result.getList().forEach(record -> { try { @@ -463,9 +481,9 @@ public class RecordRecordServiceImpl implements RecordRecordService { LocalDateTime now = LocalDateTime.now(); LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.isNotNull(RecordRecordDO::getEffectiveDate) - .le(RecordRecordDO::getEffectiveDate, now) - .ne(RecordRecordDO::getRecordStatus, 1) - .set(RecordRecordDO::getRecordStatus, 1); + .le(RecordRecordDO::getEffectiveDate, now) + .ne(RecordRecordDO::getRecordStatus, 1) + .set(RecordRecordDO::getRecordStatus, 1); return recordRecordMapper.update(null, updateWrapper); } diff --git a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.xml b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.xml index 43e06748..b56cf99b 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.xml +++ b/zt-module-qms/zt-module-qms-server/src/main/resources/com/zt/plat/module/qms/resource/record/dal/mapper/RecordApplyDetailMapper.xml @@ -10,25 +10,82 @@ --> + + + + \ 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 e138f2f5..79f86f41 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 @@ -95,68 +95,66 @@