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 59a1e3fd..e9e3f12e 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 @@ -55,8 +55,8 @@ public class RecordPermissionPageReqVO extends PageParam { @Schema(description = "是否保留标志") private String saveFlag; - @Schema(description = "保留结束日期") - private LocalDateTime saveEndDate; +// @Schema(description = "保留结束日期") +// private LocalDateTime saveEndDate; @Schema(description = "所属部门") private String systemDepartmentCode; @@ -64,6 +64,12 @@ public class RecordPermissionPageReqVO extends PageParam { @Schema(description = "备注") private String remark; + @Schema(description = "生效日期") + private LocalDateTime effectiveDate; + + @Schema(description = "申请类型") + private LocalDateTime applyType; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionRespVO.java index 7970cea0..1ad232ce 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionRespVO.java @@ -70,8 +70,8 @@ public class RecordPermissionRespVO { @Schema(description = "是否保留标志") private String saveFlag; - @Schema(description = "保留结束日期") - private LocalDateTime saveEndDate; +// @Schema(description = "保留结束日期") +// private LocalDateTime saveEndDate; @Schema(description = "所属部门") @ExcelProperty("所属部门") @@ -81,6 +81,12 @@ public class RecordPermissionRespVO { @ExcelProperty("备注") private String remark; + @Schema(description = "生效日期") + private LocalDateTime effectiveDate; + + @Schema(description = "申请类型") + private LocalDateTime applyType; + @Schema(description = "创建时间") @ExcelProperty("创建时间") private LocalDateTime createTime; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionSaveReqVO.java index a8304a43..b5b0adc7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordpermission/vo/RecordPermissionSaveReqVO.java @@ -57,12 +57,18 @@ public class RecordPermissionSaveReqVO { @Schema(description = "是否保留标志") private String saveFlag; - @Schema(description = "保留结束日期") - private LocalDateTime saveEndDate; +// @Schema(description = "保留结束日期") +// private LocalDateTime saveEndDate; @Schema(description = "所属部门") private String systemDepartmentCode; + @Schema(description = "生效日期") + private LocalDateTime effectiveDate; + + @Schema(description = "申请类型") + private LocalDateTime applyType; + @Schema(description = "备注") private String remark; 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 index b7ec34e7..ac4a1b8c 100644 --- 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 @@ -27,6 +27,10 @@ public class RecordJoinPermissionRespVO extends RecordRecordRespVO{ @ExcelProperty("记录id") private Long sourceId; + @Schema(description = "是否保留标志") + @Dict(dicCode = "yes_or_no") + private String saveFlag; + @Schema(description = "授权类型", example = "1") @ExcelProperty("授权类型") private String targetType; @@ -58,6 +62,12 @@ public class RecordJoinPermissionRespVO extends RecordRecordRespVO{ @Dict(dicCode = "yes_or_no") private Integer permCancelFlag; + @Schema(description = "生效日期") + private LocalDateTime permEffectiveDate; + + @Schema(description = "申请类型") + private String applyType; + @Schema(description = "创建时间") @ExcelProperty("创建时间") private LocalDateTime permCreateTime; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java index f3411310..aa6ce507 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordpermission/RecordPermissionDO.java @@ -45,6 +45,11 @@ public class RecordPermissionDO extends BusinessBaseDO { @TableField("SRC_TP") private String sourceType; /** + * 记录类型 + */ + @TableField("APL_TP") + private String applyType; + /** * 记录id */ @TableField("SRC_ID") @@ -79,6 +84,11 @@ public class RecordPermissionDO extends BusinessBaseDO { */ @TableField("PMNT") private String permanently; + /** + * 生效日期 + */ + @TableField("EFCT_DT") + private LocalDateTime effectiveDate; /** * 过期日期 */ @@ -99,11 +109,11 @@ public class RecordPermissionDO extends BusinessBaseDO { */ @TableField("SVE_FLG") private String saveFlag; - /** - * 保留结束日期 - */ - @TableField("SVE_END_DT") - private LocalDateTime saveEndDate; +// /** +// * 保留结束日期 +// */ +// @TableField("SVE_END_DT") +// private LocalDateTime saveEndDate; /** * 所属部门 */ 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 246b736a..530e3b74 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.conditions.update.LambdaUpdateWrapper; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; @@ -48,6 +49,7 @@ import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.*; +import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception0; @@ -204,6 +206,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn @Override public PageResult getRecordApplyPage(RecordApplyPageReqVO pageReqVO) { + pageReqVO.setApplyUserId(SecurityFrameworkUtils.getLoginUserId()); return recordApplyMapper.selectPage(pageReqVO); } @@ -433,7 +436,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn return recordDO; } -// 修改评审状态 + // 修改评审状态 public void updateReviewFlag(Long applyId) { List recordApplyDetailDOS = recordApplyDetailService.selectAllList(applyId); // 修改recordRecord的submitFlag 字段状态为0,评审中 @@ -645,7 +648,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } } // 审批完成,修改申请通用记录状态为已完成 - + recordApplyDO.setApplyEndDate(LocalDateTime.now()); recordApplyMapper.updateById(recordApplyDO); JSONObject ret = new JSONObject(); @@ -661,13 +664,13 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn reviewCallHandle(recordApplyDetailDOS); break; case RecordConstants.BusinessType.DISTRIBUTION: // 分发 - recordPermissionAdd(recordApplyDetailDOS,businessType); + recordPermissionAdd(recordApplyDetailDOS, businessType); // 更改申请流程 break; case RecordConstants.BusinessType.RECORD_UPDATE: // 修改申请 break; case RecordConstants.BusinessType.VIEW_APPLY: // 查看申请 - recordPermissionAdd(recordApplyDetailDOS,businessType); + recordPermissionAdd(recordApplyDetailDOS, businessType); break; case RecordConstants.BusinessType.INVALID: // 作废 -- > 回收权限 recordInvalidFlowStatus(recordApplyDetailDOS); @@ -779,25 +782,29 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } // 文件分发/申请-添加权限 - public void recordPermissionAdd(List recordApplyDetailDOS,String businessType) { + public void recordPermissionAdd(List recordApplyDetailDOS, String businessType) { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + List permissionDOList = new ArrayList<>(); for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { // 添加记录 + RecordPermissionDO permissionDO = new RecordPermissionDO(); String targetType = applyDetailDO.getTargetType(); - if (businessType.equals(RecordConstants.BusinessType.VIEW_APPLY)) + permissionDO.setSaveFlag("0"); + if (businessType.equals(RecordConstants.BusinessType.VIEW_APPLY)){ targetType = RecordConstants.TargetType.USER; + permissionDO.setSaveFlag("1"); // 文件查看使用 + } if (ObjectUtils.isEmpty(targetType)) throw exception0(RECORD_APPLY_NOT_EXISTS.getCode(), "分发对象类型不能为空"); - RecordPermissionDO permissionDO = new RecordPermissionDO(); - - String saveFlag = applyDetailDO.getSaveFlag(); // 文件查看使用 +// String saveFlag = applyDetailDO.getSaveFlag(); // 文件查看使用 LocalDateTime endDate = applyDetailDO.getEndDate(); - if (!ObjectUtils.isEmpty(saveFlag)) { - permissionDO.setSaveFlag(saveFlag); - }else permissionDO.setSaveFlag("1"); // 默认保留 - List permissionDOList = new ArrayList<>(); +// if (!ObjectUtils.isEmpty(saveFlag)) { +// permissionDO.setSaveFlag(saveFlag); +// } else permissionDO.setSaveFlag("1"); // 默认保留 + permissionDO.setEffectiveDate(LocalDateTime.now()); + permissionDO.setApplyType(businessType); permissionDO.setExpirationDate(endDate); // 过期效期 permissionDO.setPermission(RecordConstants.PermissionType.VIEW); // 可查看 permissionDO.setSourceType(RecordConstants.PermissionSourceType.RECORD); // 记录权限 @@ -809,8 +816,61 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn permissionDO.setTargetName(applyDetailDO.getTargetName()); permissionDOList.add(permissionDO); - boolean b = recordPermissionService.insertRecordPermissionBatch(permissionDOList); - if (!b) throw exception(RECORD_APPLY_NOT_EXISTS, "保存分发权限失败"); + } + + // 处理权限 + handleRecordPermission(permissionDOList, businessType); + } + + //处理权限 + private void handleRecordPermission(List permissionDOList,String businessType) { + // 判断是否重复 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RecordPermissionDO::getApplyType, businessType); + queryWrapper.eq(RecordPermissionDO::getSourceType, RecordConstants.PermissionSourceType.RECORD); + queryWrapper.eq(RecordPermissionDO::getPermission, RecordConstants.PermissionType.VIEW); + queryWrapper.eq(RecordPermissionDO::getCancelFlag, "0"); + queryWrapper.eq(RecordPermissionDO::getExpirationStatus, "0"); + + List sourceIds = permissionDOList.stream().map(RecordPermissionDO::getSourceId).toList(); + List targetIds = permissionDOList.stream().map(RecordPermissionDO::getTargetId).toList(); + queryWrapper.in(RecordPermissionDO::getSourceId, sourceIds); + queryWrapper.in(RecordPermissionDO::getTargetId, targetIds); + + List existingPermissions = recordPermissionService.selectList(queryWrapper); + + // 构建 Map 以提高查询效率:key = sourceId_targetId + Map existingMap = existingPermissions.stream() + .collect(Collectors.toMap( + p -> p.getSourceId() + "_" + p.getTargetId(), + p -> p + )); + + // 分离新增和更新的数据 + List toInsert = new ArrayList<>(); + List toUpdate = new ArrayList<>(); + + for (RecordPermissionDO item : permissionDOList) { + String key = item.getSourceId() + "_" + item.getTargetId(); + RecordPermissionDO existing = existingMap.get(key); + + if (existing != null) { + // 已存在,更新过期日期 + item.setId(existing.getId()); + item.setExpirationDate(item.getExpirationDate()); // 保持新的过期日期 + toUpdate.add(item); + } else { + // 不存在,新增 + toInsert.add(item); + } + } + + // 分别处理新增和更新 + if (!toInsert.isEmpty()) { + recordPermissionService.insertBatch(toInsert); + } + if (!toUpdate.isEmpty()) { + recordPermissionService.updateBatch(toUpdate); } } } \ 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/recordassign/RecordAssignServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordassign/RecordAssignServiceImpl.java index 6a01d693..54a4e185 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordassign/RecordAssignServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordassign/RecordAssignServiceImpl.java @@ -109,6 +109,7 @@ public class RecordAssignServiceImpl implements RecordAssignService { @Override public List selectListByTargetIds(List targetIds) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(RecordAssignDO.class); + queryWrapper.eq(RecordAssignDO::getCurrentFlag, 1); queryWrapper.in(RecordAssignDO::getTargetId, targetIds); List recordAssignDOList = recordAssignMapper.selectList(queryWrapper); return BeanUtils.toBean(recordAssignDOList, RecordAssignRespVO.class); 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 18eecc3c..cc98b884 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 @@ -71,7 +71,7 @@ public interface RecordPermissionService { // List selectRecordPermission(RecordPermissionDO recordPermissionDO); // 批量查询 - boolean insertRecordPermissionBatch(List recordPermissionDO); + int insertOrUpdateRecordPermissionBatch(List recordPermissionDO); List selectList(LambdaQueryWrapper lambdaQueryWrapper); @@ -124,4 +124,8 @@ public interface RecordPermissionService { IPage selectRecordByPermission(RecordPermissionPageReqVO pageReqVO); IPage selectPermissionByRecord(RecordRecordPageReqVO pageReqVO); + + boolean insertBatch(List toInsert); + + boolean updateBatch(List toUpdate); } \ 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 c6da0abe..c534b263 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 @@ -27,6 +27,7 @@ import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; import com.zt.plat.module.system.api.permission.PermissionApi; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.executor.BatchResult; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; @@ -233,8 +234,9 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { // } @Override - public boolean insertRecordPermissionBatch(List permissionDOList) { - return recordPermissionMapper.insertBatch(permissionDOList); + public int insertOrUpdateRecordPermissionBatch(List permissionDOList) { + List batchResults = recordPermissionMapper.insertOrUpdate(permissionDOList); + return batchResults.size(); } @Override @@ -349,6 +351,16 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { return recordPermissionMapper.selectPermissionByRecord(page, pageReqVO); } + @Override + public boolean insertBatch(List toInsert) { + return recordPermissionMapper.insertBatch(toInsert); + } + + @Override + public boolean updateBatch(List toUpdate) { + return recordPermissionMapper.updateBatch(toUpdate); + } + //权限到期,定时回收权限 public Integer expireDateExpireJob() { LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); @@ -360,13 +372,13 @@ public class RecordPermissionServiceImpl implements RecordPermissionService { } //权限保留日期到期,定时回收权限 - public Integer saveEndDateExpireJob() { - LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); - updateWrapper.eq(RecordPermissionDO::getSaveFlag, "1"); // 保留 - updateWrapper.le(RecordPermissionDO::getSaveEndDate, LocalDateTime.now()); // 保留时间小于当前时间 - updateWrapper.set(RecordPermissionDO::getSaveFlag, "0"); - return recordPermissionMapper.update(updateWrapper); - } +// public Integer saveEndDateExpireJob() { +// LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(); +// updateWrapper.eq(RecordPermissionDO::getSaveFlag, "1"); // 保留 +// updateWrapper.le(RecordPermissionDO::getSaveEndDate, LocalDateTime.now()); // 保留时间小于当前时间 +// updateWrapper.set(RecordPermissionDO::getSaveFlag, "0"); +// return recordPermissionMapper.update(updateWrapper); +// } } \ 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 70f5f2ba..ee3fceef 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 @@ -28,7 +28,10 @@ + + + @@ -120,8 +123,10 @@ 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, + 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.SVE_FLG as saveFlag, + trp.APL_TP as applyType, trp.EFCT_DT as permEffectiveDate, + 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