From ad01b42b65a46e8909759cb8eda2788306ef6f86 Mon Sep 17 00:00:00 2001 From: YBP Date: Mon, 2 Mar 2026 18:07:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95-=E6=8F=90?= =?UTF-8?q?=E4=BA=A4-=E6=B5=81=E7=A8=8B=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 | 29 +++ .../recordapply/RecordApplyController.java | 53 +++-- .../recordrecord/RecordRecordController.java | 9 + .../vo/RecordRecordPageReqVO.java | 9 + .../recordrecord/vo/RecordRecordRespVO.java | 12 ++ .../vo/RecordRecordSaveReqVO.java | 9 + .../dataobject/recordapply/RecordApplyDO.java | 2 +- .../recordrecord/RecordRecordDO.java | 15 ++ .../recordrecord/RecordRecordService.java | 12 ++ .../recordrecord/RecordRecordServiceImpl.java | 203 ++++++++++++++++-- 10 files changed, 301 insertions(+), 52 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 971142f4..ee75850b 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 @@ -34,4 +34,33 @@ public class RecordConstants { /** 编辑 */ public static final String EDIT = "可编辑"; } + + + /** + * 业务类型常量 + */ + public static class BusinessType { + /** + * key + */ + public static final String BUSINESS_KEY = "jy_record_apply_bsn_type"; + /** + * 分发 + */ + public static final String DISTRIBUTION = "分发"; + /** + * 查看申请 + */ + public static final String VIEW_APPLY = "查看申请"; + /** + * 作废 + */ + public static final String INVALID = "作废"; + /** + * 评审 + */ + public static final String REVIEW = "评审"; + /** 文件提交 */ + public static final String RECORD_SUBMIT = "文件提交"; + } } 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 c914baa5..ccda9059 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 @@ -1,40 +1,35 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordapply; +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import com.zt.plat.framework.business.annotation.FileUploadController; +import com.zt.plat.framework.business.controller.AbstractFileUploadController; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; +import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.module.qms.resource.record.controller.admin.recordapply.vo.RecordApplyPageReqVO; 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 org.springframework.web.bind.annotation.*; -import jakarta.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; -import com.zt.plat.framework.business.annotation.FileUploadController; -import com.zt.plat.framework.business.controller.AbstractFileUploadController; - -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import jakarta.validation.*; -import jakarta.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; -import com.zt.plat.framework.common.pojo.PageParam; -import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.CommonResult; -import com.zt.plat.framework.common.util.object.BeanUtils; -import static com.zt.plat.framework.common.pojo.CommonResult.success; - -import com.zt.plat.framework.excel.core.util.ExcelUtils; - -import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; -import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; - import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; import com.zt.plat.module.qms.resource.record.service.recordapply.RecordApplyService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.List; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 文件记录通用申请") @RestController 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 46f673df..5e342069 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 @@ -3,6 +3,8 @@ package com.zt.plat.module.qms.resource.record.controller.admin.recordrecord; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; 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.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; @@ -103,6 +105,13 @@ public class RecordRecordController extends AbstractFileUploadController impleme return success(true); } + @PostMapping("/submitRecordApply") + @Operation(summary = "提交流程申请") + public CommonResult submitRecordApply(@RequestBody RecordRecordSaveReqVO param) { + return recordRecordService.submitRecordApply(param); + } + + @GetMapping("/get") @Operation(summary = "获得文件、模板、记录") @Parameter(name = "id", description = "编号", required = true, example = "1024") 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 47efe649..574809f9 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 @@ -60,6 +60,15 @@ public class RecordRecordPageReqVO extends PageParam { @Schema(description = "是否长期有效") private Integer permanently; + @Schema(description = "业务状态") + private String businessStatus; + + @Schema(description = "流程实例Id") + private String flowInstanceId; + + @Schema(description = "是否需要提交(用来判断文件是否需要走流程)") + private String submitFlag; + @Schema(description = "过期日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] expirationDate; 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 80422027..239b2d44 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 @@ -89,6 +89,18 @@ public class RecordRecordRespVO { @Dict(dicCode = "yes_or_no") private Integer permanently; + @Schema(description = "业务状态") + @ExcelProperty("业务状态") + private String businessStatus; + + @Schema(description = "流程实例Id") + @ExcelProperty("流程实例Id") + private String flowInstanceId; + + @Schema(description = "是否需要提交(用来判断文件是否需要走流程)") + @ExcelProperty("是否需要提交(用来判断文件是否需要走流程)") + private String submitFlag; + @Schema(description = "过期日期") @ExcelProperty("过期日期") private LocalDateTime expirationDate; 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 d0fbda84..577a7d36 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 @@ -67,6 +67,15 @@ public class RecordRecordSaveReqVO { @Schema(description = "是否长期有效", requiredMode = Schema.RequiredMode.REQUIRED) private Integer permanently; + @Schema(description = "业务状态") + private String businessStatus; + + @Schema(description = "流程实例Id") + private String flowInstanceId; + + @Schema(description = "是否需要提交(用来判断文件是否需要走流程)") + private String submitFlag; + @Schema(description = "过期日期") private LocalDateTime expirationDate; 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 12dd4415..6656bba5 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 @@ -62,7 +62,7 @@ public class RecordApplyDO extends BusinessBaseDO { * 部门名称 */ @TableField("APL_DEPT_NAME") - private Long applyDepartmentName; + private String applyDepartmentName; /** * 评审范围 */ 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 d54ed869..2552f002 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 @@ -108,6 +108,21 @@ public class RecordRecordDO extends BusinessBaseDO { */ @TableField("PMNT") private String permanently; + /** + * 业务状态 + */ + @TableField("BSN_STS") + private String businessStatus; + /** + * 流程实例Id + */ + @TableField("FLW_INSC_ID") + private String flowInstanceId; + /** + * 是否需要提交(用来判断文件是否需要走流程) + */ + @TableField("SBM_FLG") + private String submitFlag; /** * 过期日期 */ diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java index ad91db3d..1573776e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordService.java @@ -3,6 +3,8 @@ package com.zt.plat.module.qms.resource.record.service.recordrecord; import java.util.*; import com.zt.plat.framework.common.pojo.CommonResult; +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.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; @@ -70,4 +72,14 @@ public interface RecordRecordService { CommonResult justRecordPermission(Long recordId); List getMatchedPermissionList(Long parentCategoryId); + + /** + * 提交申请-发起流程 + * + * @param param 参数 + * @return 申请信息 + */ + CommonResult submitRecordApply(RecordRecordSaveReqVO param); + + RecordRecordDO getRecordById(Long id); } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/resource/record/service/recordrecord/RecordRecordServiceImpl.java index f78be7b2..08645eae 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 @@ -1,32 +1,50 @@ package com.zt.plat.module.qms.resource.record.service.recordrecord; 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.toolkit.Wrappers; import com.zt.plat.framework.common.exception.ServiceException; 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.bpm.api.task.BpmProcessInstanceApi; +import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.qms.api.task.BMPCallbackInterface; +import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; import com.zt.plat.module.qms.common.data.controller.vo.DataTemplateSaveReqVO; +import com.zt.plat.module.qms.common.data.dal.dataobject.DataCommonType; import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; +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.dic.dal.dataobject.DictionaryBusinessDO; import com.zt.plat.module.qms.common.dic.service.DictionaryBusinessService; 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.clientManage.controller.vo.UploadFileVo; 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.recordapplydetail.vo.RecordApplyDetailSaveReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordpermission.vo.RecordPermissionPageReqVO; import com.zt.plat.module.qms.resource.record.controller.admin.recordrecord.vo.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.dao.recordcategory.RecordCategoryMapper; import com.zt.plat.module.qms.resource.record.dal.dao.recordpermission.RecordPermissionMapper; +import com.zt.plat.module.qms.resource.record.dal.dataobject.recordapply.RecordApplyDO; 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.service.recordapply.RecordApplyService; +import com.zt.plat.module.qms.resource.record.service.recordapplydetail.RecordApplyDetailService; import com.zt.plat.module.qms.resource.record.service.recordpermission.RecordPermissionService; import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; import com.zt.plat.module.system.api.permission.PermissionApi; +import java.text.SimpleDateFormat; import java.util.Set; import com.alibaba.fastjson.JSON; @@ -47,8 +65,10 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.qms.resource.record.dal.dao.recordrecord.RecordRecordMapper; 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.framework.common.util.collection.CollectionUtils.convertList; import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; +import static com.zt.plat.module.qms.enums.QmsBpmConstant.BPM_CALLBACK_BEAN_NAME; /** * 文件、模板、记录 Service 实现类 @@ -56,9 +76,9 @@ import static com.zt.plat.module.qms.enums.ErrorCodeConstants.*; * @author 后台管理 */ @Slf4j -@Service +@Service("recordRecordService") @Validated -public class RecordRecordServiceImpl implements RecordRecordService { +public class RecordRecordServiceImpl implements RecordRecordService, BMPCallbackInterface { @Resource private RecordRecordMapper recordRecordMapper; @@ -81,6 +101,19 @@ public class RecordRecordServiceImpl implements RecordRecordService { @Resource private PermissionApi permissionApi; + @Resource + private RecordApplyService recordApplyService; + + @Resource + private RecordApplyDetailService recordApplyDetailService; + + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource + private DataKeyCheckService dataKeyCheckService; + @Resource + private DataOpinionService dataOpinionService; + @Autowired private DictionaryBusinessService dictionaryBusinessService; // 字典服务 @@ -230,8 +263,8 @@ public class RecordRecordServiceImpl implements RecordRecordService { // 判断当前用户的管理员权限 LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(RecordPermissionDO::getTargetId, id); - recordPermissionMapper.selectList(); - if (!ObjectUtils.isEmpty(permissionDOList)) + List recordPermissionDOS = recordPermissionMapper.selectList(lambdaQueryWrapper); + if (!ObjectUtils.isEmpty(recordPermissionDOS)) return CommonResult.success(RecordConstants.PermissionType.ADMIN); String s = hasPermissionByCategoryId(parentId); return CommonResult.success(s); @@ -263,6 +296,11 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordRecordDO; } + @Override + public RecordRecordDO getRecordById(Long id) { + return recordRecordMapper.selectById(id); + } + public String getDictValueByKey(List businessDOList, String targetKey) { return businessDOList.stream() .filter(item -> item.getKey().equals(targetKey)) @@ -334,27 +372,27 @@ public class RecordRecordServiceImpl implements RecordRecordService { return recordPermissionService.selectRecordPermission(recordPermissionDO); } - // 根据当前用户部门获取所有父级部门列表 TODO 目前只查询当前部门 + // 根据当前用户部门获取所有子部门列表 public List getParentDepts() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); Long currentDeptId = loginUser.getVisitDeptId(); - List parentDepts = new ArrayList<>(); - parentDepts.add(new DeptRespDTO().setId(currentDeptId)); -// //通过DeptApi获取完整部门信息(包括父部门) -// CommonResult deptResult = deptApi.getDept(currentDeptId); -// DeptRespDTO currentDept = deptResult.getData(); -// Long parentDeptId = currentDept.getParentId(); // 获取父部门ID -//// -// // 添加当前部门到父部门列表中 -// Long tempParentId = parentDeptId; -// while (tempParentId != null && tempParentId != 0) { -// CommonResult parentResult = deptApi.getDept(tempParentId); -// DeptRespDTO parentDept = parentResult.getData(); -// parentDepts.add(parentDept); -// tempParentId = parentDept.getParentId(); -// } -// parentDepts.add(currentDept); - return parentDepts; + List childDepts = new ArrayList<>(); + + // 添加当前部门 + CommonResult deptResult = deptApi.getDept(currentDeptId); + DeptRespDTO currentDept = deptResult.getData(); + childDepts.add(currentDept); + + // 获取所有子部门 + CommonResult> childDeptListResult = deptApi.getChildDeptList(currentDeptId); + if (childDeptListResult.isSuccess()) { + List childDeptList = childDeptListResult.getData(); + if (CollUtil.isNotEmpty(childDeptList)) { + childDepts.addAll(childDeptList); + } + } + + return childDepts; } /** @@ -588,4 +626,125 @@ public class RecordRecordServiceImpl implements RecordRecordService { return matchedList; } + //提交申请-发起流程 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult submitRecordApply(RecordRecordSaveReqVO param) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + String nickName = SecurityFrameworkUtils.getLoginUserNickname(); + Long id = param.getId();// 文件Id + RecordRecordDO entity = getRecordById(id); + if (entity == null) + throw exception(RECORD_APPLY_NOT_EXISTS); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + JSONObject formData = new JSONObject(); + formData.put("mainId", id); + formData.put("applyUser", nickName); + formData.put("applyUserId", loginUser.getId()); + formData.put("applyDepartment", loginUser.getVisitDeptName()); + formData.put("applyDepartmentId", loginUser.getVisitDeptId()); + formData.put("applyTime", sdf.format(new Date())); + formData.put("businessType", entity.getBusinessType()); + formData.put("title", entity.getName()); // 文件名 + + Map variables = formData.toJavaObject(Map.class); + variables.put(BPM_CALLBACK_BEAN_NAME, "recordRecordService"); + + BpmProcessInstanceCreateReqDTO reqDTO = new BpmProcessInstanceCreateReqDTO(); + reqDTO.setBusinessKey(String.valueOf(id)); + // TODO 流程定义key 待定 + reqDTO.setProcessDefinitionKey("QMS_RECORD_REPAIR"); + reqDTO.setVariables(variables); + + CommonResult result = bpmProcessInstanceApi.createProcessInstance(loginUser.getId(), reqDTO); + if (!result.isSuccess()) { + throw exception0(ERROR_CODE_MODULE_COMMON, result.getMsg()); + } + + String wfInsId = result.getData(); + entity.setFlowInstanceId(wfInsId); + // 提交后状态变更为审核中 + entity.setBusinessStatus(QmsCommonConstant.RUNNING); + int i = recordRecordMapper.updateById(entity); + if (i<0) throw exception(RECORD_RECORD_NOT_EXISTS); + + // 添加申请通用记录,跟申请通用明细记录 + RecordApplySaveReqVO recordApplySaveReqVO = new RecordApplySaveReqVO(); + recordApplySaveReqVO.setApplyUserId(loginUser.getId()); + recordApplySaveReqVO.setApplyUserName(nickName); + recordApplySaveReqVO.setApplyDepartmentId(loginUser.getVisitDeptId()); + recordApplySaveReqVO.setApplyDepartmentName(loginUser.getVisitDeptName()); + recordApplySaveReqVO.setBusinessType(RecordConstants.BusinessType.RECORD_SUBMIT); // 业务类型:记录提交 + recordApplySaveReqVO.setTitle(entity.getName()); + recordApplyService.createRecordApply(recordApplySaveReqVO); + + //申请通用明细记录 + RecordApplyDetailSaveReqVO recordApplyDetailSaveReqVO = new RecordApplyDetailSaveReqVO(); + recordApplyDetailSaveReqVO.setApplyId(recordApplySaveReqVO.getId()); + recordApplyDetailSaveReqVO.setDocumentId(id); // 文件Id + recordApplyDetailService.createRecordApplyDetail(recordApplyDetailSaveReqVO); + + return CommonResult.success(BeanUtils.toBean(entity, RecordRecordRespVO.class)); + } + + //流程回调 + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult callback(QmsBpmDTO reqDTO) { + log.error("文件下发流程回调:{}", JSONObject.toJSONString(reqDTO)); + JSONObject variables = reqDTO.getVariables(); +// JSONObject taskVariables = variables.getJSONObject("taskVariables"); + // TODO 目前审批意见在流程回调时保存,后续可以考虑在每个节点完成时保存审批意见,这样可以避免审批意见丢失的情况,同时也能更及时地记录审批意见 + JSONObject taskVariables = variables.getJSONObject("taskVariables"); + String processInsId = variables.getString(QmsBpmConstant.BPM_PROCESS_INS_ID); + String currentActivityInsId = variables.getString(QmsBpmConstant.BPM_CUR_ACTIVITY_INS_ID); + String currentActivityId = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_ID); + String currentActivityName = variables.getString(QmsBpmConstant.BPM_CALLBACK_ACTIVITY_NAME); + String returnFlag = variables.getString(QmsBpmConstant.BPM_REJECT_TO_FIRST_FLAG); + + //同一个节点实例只触发一次 + String checkKey = currentActivityInsId; + if (ObjectUtils.isEmpty(currentActivityInsId)) + checkKey = processInsId + "-create"; + if ("1".equals(returnFlag)) + checkKey += "-reject"; + try { + dataKeyCheckService.create(checkKey, this.getClass().getName()); + } catch (Exception e) { + log.error("checkKey 重复:key={}", checkKey); + return CommonResult.success(new JSONObject()); + } + + String PROCESS_STATUS = variables.getString(QmsBpmConstant.PROCESS_INSTANCE_VARIABLE_STATUS); + String mainId = variables.getString("mainId"); + + RecordRecordDO entity = getRecordById(Long.valueOf(mainId)); + if (ObjectUtils.isEmpty(entity)) + return CommonResult.error(RECORD_APPLY_NOT_EXISTS.getCode(), "申请不存在"); + + if (("1").equals(returnFlag)) { + //驳回,状态变更为未发起 + entity.setBusinessStatus(QmsCommonConstant.NOT_START); + dataOpinionService.disableOpinionsByBusId(entity.getId()); + } else if ("4".equals(PROCESS_STATUS)) { + //作废 + entity.setBusinessStatus(QmsCommonConstant.VOID); + } else if ("1".equals(PROCESS_STATUS)) { + //通过 + // TODO 目前审批意见在流程回调时保存,后续可以考虑在每个节点完成时保存审批意见,这样可以避免审批意见丢失的情况,同时也能更及时地记录审批意见 + DataCommonType dataCommonType = new DataCommonType(); + dataCommonType.setBusinessId(entity.getId()); + dataCommonType.setFlowInstanceId(entity.getFlowInstanceId()); + dataOpinionService.saveOpinionByWfCallback(dataCommonType, currentActivityId, currentActivityName, taskVariables); + // 审批完成 + entity.setBusinessStatus(QmsCommonConstant.COMPLETED); + } + + recordRecordMapper.updateById(entity); + JSONObject ret = new JSONObject(); + return CommonResult.success(ret); + } + } \ No newline at end of file