From 87c93be475a6bef1aefbb29d9f7c1518d92d901d Mon Sep 17 00:00:00 2001 From: YBP Date: Thu, 5 Mar 2026 15:00:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95-=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BF=AE=E6=94=B9=EF=BC=8C=E6=96=87=E4=BB=B6=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=8C=E4=BD=9C=E5=BA=9F-=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../record/constant/RecordConstants.java | 12 +- .../vo/RecordRecordPageReqVO.java | 10 +- .../recordrecord/vo/RecordRecordRespVO.java | 14 +- .../vo/RecordRecordSaveReqVO.java | 10 +- .../recordrecord/RecordRecordDO.java | 20 +-- .../recordapply/RecordApplyServiceImpl.java | 147 +++++++++++------- 6 files changed, 126 insertions(+), 87 deletions(-) diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java index 57df5265..39d17066 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/constant/RecordConstants.java @@ -71,7 +71,7 @@ public class RecordConstants { } /** - * 流程定义key常量 + * 流程定义key常量 ${qmsExecutionListener} */ public static class ProcessDefinitionKey{ /** @@ -81,11 +81,11 @@ public class RecordConstants { /** * 查看申请 */ - public static final String VIEW_APPLY_DEFINITION_KEY = "查看申请"; + public static final String VIEW_APPLY_DEFINITION_KEY = "QMS_RECORD_APPLY"; /** * 作废 */ - public static final String INVALID_DEFINITION_KEY = "作废"; + public static final String INVALID_DEFINITION_KEY = "QMS_RECORD_INVALID"; /** * 评审 */ @@ -93,10 +93,10 @@ public class RecordConstants { /** * 文件提交 */ - public static final String RECORD_SUBMIT_DEFINITION_KEY = "QMS_RECORD_REPAIR"; + public static final String RECORD_SUBMIT_DEFINITION_KEY = "QMS_RECORD_SUBMIT"; /** - * 文件提交 + * 文件修改 * */ - public static final String RECORD_UPDATE_DEFINITION_KEY = "文件修改"; + public static final String RECORD_UPDATE_DEFINITION_KEY = "QMS_RECORD_UPDATE"; } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java index 4a701474..5241c5f5 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordPageReqVO.java @@ -23,11 +23,11 @@ public class RecordRecordPageReqVO extends PageParam { @Schema(description = "业务类型") private String businessType; - @Schema(description = "部门IDS") - private String departmentIds; - - @Schema(description = "用户IDS") - private String userIds; +// @Schema(description = "部门IDS") +// private String departmentIds; +// +// @Schema(description = "用户IDS") +// private String userIds; @Schema(description = "表单key") private String formKey; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java index a5637821..e9b5112a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordRespVO.java @@ -38,13 +38,13 @@ public class RecordRecordRespVO { @ExcelProperty("业务类型") private String businessType; - @Schema(description = "部门IDS") - @ExcelProperty("部门IDS") - private String departmentIds; - - @Schema(description = "用户IDS") - @ExcelProperty("用户IDS") - private String userIds; +// @Schema(description = "部门IDS") +// @ExcelProperty("部门IDS") +// private String departmentIds; +// +// @Schema(description = "用户IDS") +// @ExcelProperty("用户IDS") +// private String userIds; @Schema(description = "表单key") @ExcelProperty("表单key") diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java index 65651cb6..3524aa94 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/controller/admin/recordrecord/vo/RecordRecordSaveReqVO.java @@ -28,11 +28,11 @@ public class RecordRecordSaveReqVO { @Schema(description = "业务类型") private String businessType; - @Schema(description = "部门IDS") - private String departmentIds; - - @Schema(description = "用户IDS") - private String userIds; +// @Schema(description = "部门IDS") +// private String departmentIds; +// +// @Schema(description = "用户IDS") +// private String userIds; @Schema(description = "表单key") private String formKey; diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java index 6e1e6416..dacd66df 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/dal/dataobject/recordrecord/RecordRecordDO.java @@ -48,16 +48,16 @@ public class RecordRecordDO extends BusinessBaseDO { */ @TableField("BSN_TP") private String businessType; - /** - * 部门IDS - */ - @TableField("DEPT_IDS") - private String departmentIds; - /** - * 用户IDS - */ - @TableField("USER_IDS") - private String userIds; +// /** +// * 部门IDS +// */ +// @TableField("DEPT_IDS") +// private String departmentIds; +// /** +// * 用户IDS +// */ +// @TableField("USER_IDS") +// private String userIds; /** * 表单key */ 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 f05f2d13..2c3ee1d7 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 @@ -2,6 +2,7 @@ package com.zt.plat.module.qms.resource.record.service.recordapply; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.zt.plat.framework.common.exception.ServerException; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -48,8 +49,7 @@ import java.util.*; 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.ERROR_CODE_MODULE_COMMON; -import static com.zt.plat.module.qms.enums.ErrorCodeConstants.RECORD_APPLY_NOT_EXISTS; +import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME; /** @@ -327,21 +327,20 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn String businessType = param.getBusinessType(); - RecordRecordDO entity = new RecordRecordDO(); JSONObject formData = new JSONObject(); // formData.put("mainId", recordId); Long[] recordIdS = param.getRecordIdS(); - if (RecordConstants.BusinessType.REVIEW.equals(businessType)) {// 文件评审 - if (ObjectUtils.isEmpty(recordIdS)) - return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "请选择文件"); - } else { - if (ObjectUtils.isEmpty(recordId)) - return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "请选择文件记录"); - entity = recordRecordService.getRecordById(recordId); -// formData.put("mainId", recordId); - } - if (ObjectUtils.isEmpty(entity)) throw exception(RECORD_APPLY_NOT_EXISTS); +// if (RecordConstants.BusinessType.REVIEW.equals(businessType)) {// 文件评审 +// if (ObjectUtils.isEmpty(recordIdS)) +// return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "请选择文件"); +// } else { +// if (ObjectUtils.isEmpty(recordId)) +// return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "请选择文件记录"); +// entity = recordRecordService.getRecordById(recordId); +//// formData.put("mainId", recordId); +// } +// if (ObjectUtils.isEmpty(entity)) throw exception(RECORD_APPLY_NOT_EXISTS); BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); @@ -361,6 +360,9 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn switch (businessType) { case RecordConstants.BusinessType.RECORD_SUBMIT: // 判断根分类上是否配置自定义配置,允许提交,则需要走流程,否则直接提交 + if (ObjectUtils.isEmpty(recordId)) throw exception(RECORD_RECORD_NOT_EXISTS,"请选择文件记录"); + RecordRecordDO entity = recordRecordService.getRecordById(recordId); + if (ObjectUtils.isEmpty(entity)) throw exception(RECORD_RECORD_NOT_EXISTS); boolean b = justifyRecordApply(entity); if (b) { // 不需要走流程,直接返回成功 @@ -369,6 +371,7 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn reqDTO.setProcessDefinitionKey(RecordConstants.ProcessDefinitionKey.RECORD_SUBMIT_DEFINITION_KEY); break; case RecordConstants.BusinessType.DISTRIBUTION: // 分发 + if (ObjectUtils.isEmpty(recordId)) throw exception(RECORD_RECORD_NOT_EXISTS,"请选择文件记录"); reqDTO.setProcessDefinitionKey(RecordConstants.ProcessDefinitionKey.DISTRIBUTION__DEFINITION_KEY); // 文件分发需要关联权限表, break; @@ -421,37 +424,52 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn //申请通用明细记录 List detailSaveReqVOList = new ArrayList<>(); // 判断是否是评审,如果是评审,一批评审文件对应一个申请记录,对应多条申请明细记录 - if (RecordConstants.BusinessType.REVIEW.equals(businessType)) { + 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(recordIdS)) throw exception(RECORD_RECORD_NOT_EXISTS, "请选择至少一条文件记录"); for (Long id : recordIdS) { RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); recordApplyDetailDO.setDocumentId(id); // 文件Id + if (RecordConstants.BusinessType.VIEW_APPLY.equals(businessType)){ + recordApplyDetailDO.setTargetType(RecordConstants.TargetType.USER); + recordApplyDetailDO.setTargetId(loginUser.getId()); // 申请人,当前用户 + } detailSaveReqVOList.add(recordApplyDetailDO); } - } else if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { + } else if (RecordConstants.BusinessType.DISTRIBUTION.equals(businessType)) { // 分发 Long[] userIds = param.getUserIds(); Long[] deptIds = param.getDeptIds(); - if (!ObjectUtils.isEmpty(userIds)){ // 用户 + if (!ObjectUtils.isEmpty(userIds)) { // 用户 for (Long userId : userIds) { RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); + recordApplyDetailDO.setDocumentId(recordId); recordApplyDetailDO.setTargetId(userId);//用户Id recordApplyDetailDO.setTargetType(RecordConstants.TargetType.USER); recordApplyDetailDO.setApplyStartDate(LocalDateTime.now()); // TODO 申请开始时间 detailSaveReqVOList.add(recordApplyDetailDO); } - }else { - if (ObjectUtils.isEmpty(deptIds)) throw exception(RECORD_APPLY_NOT_EXISTS, "请选择分发对象"); + } else { + if (ObjectUtils.isEmpty(deptIds)) throw exception(RECORD_RECORD_NOT_EXISTS, "请选择分发对象"); for (Long deptId : deptIds) { RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); + recordApplyDetailDO.setDocumentId(recordId); recordApplyDetailDO.setTargetId(deptId);//部门Id recordApplyDetailDO.setTargetType(RecordConstants.TargetType.DEPT); recordApplyDetailDO.setApplyStartDate(LocalDateTime.now()); // TODO 申请开始时间 detailSaveReqVOList.add(recordApplyDetailDO); } } - } else { // 分发 + } +// else if (RecordConstants.BusinessType.RECORD_UPDATE.equals(businessType)) { // 修改申请 +// +// +// } + else { // 分发 RecordApplyDetailDO recordApplyDetailDO = new RecordApplyDetailDO(); recordApplyDetailDO.setApplyId(recordApplyDO.getId()); recordApplyDetailDO.setDocumentId(recordId); // 文件Id @@ -469,6 +487,8 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn @Transactional(rollbackFor = Exception.class) public CommonResult callback(QmsBpmDTO reqDTO) { log.error("文件下发流程回调:{}", JSONObject.toJSONString(reqDTO)); + loginUser = SecurityFrameworkUtils.getLoginUser(); + if (ObjectUtils.isEmpty(loginUser)) throw exception0(1_032_350_401,"当前用户不存在,请重新登录"); JSONObject variables = reqDTO.getVariables(); // TODO 目前审批意见在流程回调时保存,后续可以考虑在每个节点完成时保存审批意见,这样可以避免审批意见丢失的情况,同时也能更及时地记录审批意见 JSONObject taskVariables = variables.getJSONObject("taskVariables"); @@ -507,11 +527,10 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn } else if ("4".equals(PROCESS_STATUS)) { //作废 TODO // entity.setBusinessStatus(QmsCommonConstant.VOID); - } else if ("1".equals(PROCESS_STATUS)) { + } else if ("1".equals(PROCESS_STATUS) || "2".equals(PROCESS_STATUS)) { //通过 List recordApplyDetailDOS = recordApplyDetailService.selectList(new RecordApplyDetailPageReqVO().setApplyId(Long.valueOf(mainId))); - if (ObjectUtils.isEmpty(recordApplyDetailDOS)) - return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "未找到对应的申请明细记录"); + if (ObjectUtils.isEmpty(recordApplyDetailDOS)) throw exception(RECORD_RECORD_NOT_EXISTS,"未找到对应的申请明细记录"); // TODO 业务代码,通过业务类型判断 List recordRecordDOS = new ArrayList<>(); switch (businessType) { @@ -534,46 +553,39 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn recordReviewFlowStatus(recordRecordDOS); break; case RecordConstants.BusinessType.DISTRIBUTION: // 分发 - // formData 字符串解析成 List - for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { - // 添加记录 - String targetType = applyDetailDO.getTargetType(); - if (ObjectUtils.isEmpty(targetType)) throw exception(RECORD_APPLY_NOT_EXISTS, "分发对象类型不能为空"); - // 通过-----> 创建人员权限表记录 - RecordPermissionDO permissionDO = new RecordPermissionDO(); - permissionDO.setPermission(RecordConstants.PermissionType.VIEW); // 可查看 - permissionDO.setSourceId(applyDetailDO.getDocumentId()); // 文件Id - permissionDO.setDeptId(loginUser.getVisitDeptId()); - permissionDO.setDeptName(loginUser.getVisitDeptName()); - List permissionDOList = new ArrayList<>(); - if (targetType.equals(RecordConstants.TargetType.USER)) { - permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 用户Id - permissionDO.setTargetType(RecordConstants.TargetType.USER); - }else { // 部门 - permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 部门Id - permissionDO.setTargetType(RecordConstants.TargetType.DEPT); - } - permissionDOList.add(permissionDO); - boolean b = recordPermissionService.insertRecordPermissionBatch(permissionDOList); - if (!b) throw exception(RECORD_APPLY_NOT_EXISTS, "保存分发权限失败"); - } + recordPermissionAdd(recordApplyDetailDOS); // 更改申请流程 break; + case RecordConstants.BusinessType.RECORD_UPDATE: // 修改申请 + break; + case RecordConstants.BusinessType.VIEW_APPLY: // 查看申请 + recordPermissionAdd(recordApplyDetailDOS); + break; + case RecordConstants.BusinessType.INVALID: // 作废 + // 修改文件作废状态 + for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { + RecordRecordDO recordRecordDO = new RecordRecordDO(); + recordRecordDO.setId(applyDetailDO.getDocumentId()); + recordRecordDO.setCancelFlag(1); // 评审通过 + recordRecordDOS.add(recordRecordDO); + } + recordReviewFlowStatus(recordRecordDOS); + break; default: throw exception(RECORD_APPLY_NOT_EXISTS, "未知的业务类型"); } + DataCommonType dataCommonType = new DataCommonType(); + dataCommonType.setBusinessId(Long.valueOf(mainId)); + dataCommonType.setFlowInstanceId(recordApplyDO.getFlowInstanceId()); + dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); + + // 审批完成,修改申请通用记录状态为已完成 + recordApplyDO.setBusinessStatus(QmsCommonConstant.COMPLETED); + recordApplyMapper.updateById(recordApplyDO); + } - DataCommonType dataCommonType = new DataCommonType(); - dataCommonType.setBusinessId(Long.valueOf(mainId)); - dataCommonType.setFlowInstanceId(recordApplyDO.getFlowInstanceId()); - dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); - - // 审批完成,修改申请通用记录状态为已完成 - recordApplyDO.setBusinessStatus(QmsCommonConstant.COMPLETED); - recordApplyMapper.updateById(recordApplyDO); - JSONObject ret = new JSONObject(); return CommonResult.success(ret); } @@ -588,5 +600,32 @@ public class RecordApplyServiceImpl implements RecordApplyService, BMPCallbackIn public void recordReviewFlowStatus(List recordDO) { // 修改文件状态为已生效 recordRecordService.updateRecordRecordListByIds(recordDO); + } + + // 文件分发/申请-添加权限 + public void recordPermissionAdd(List recordApplyDetailDOS) { + for (RecordApplyDetailDO applyDetailDO : recordApplyDetailDOS) { + // 添加记录 + String targetType = applyDetailDO.getTargetType(); + if (ObjectUtils.isEmpty(targetType)) + throw exception(RECORD_APPLY_NOT_EXISTS, "分发对象类型不能为空"); + // 通过-----> 创建人员权限表记录 + RecordPermissionDO permissionDO = new RecordPermissionDO(); + permissionDO.setPermission(RecordConstants.PermissionType.VIEW); // 可查看 + permissionDO.setSourceId(applyDetailDO.getDocumentId()); // 文件Id + permissionDO.setDeptId(loginUser.getVisitDeptId()); + permissionDO.setDeptName(loginUser.getVisitDeptName()); + List permissionDOList = new ArrayList<>(); + if (targetType.equals(RecordConstants.TargetType.USER)) { + permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 用户Id + permissionDO.setTargetType(RecordConstants.TargetType.USER); + } else { // 部门 + permissionDO.setTargetId(String.valueOf(applyDetailDO.getTargetId())); // 部门Id + permissionDO.setTargetType(RecordConstants.TargetType.DEPT); + } + permissionDOList.add(permissionDO); + boolean b = recordPermissionService.insertRecordPermissionBatch(permissionDOList); + if (!b) throw exception(RECORD_APPLY_NOT_EXISTS, "保存分发权限失败"); + } } } \ No newline at end of file