Skip to content

Commit 4ab0a6f

Browse files
committed
refactor: approval flow refactor
1 parent 19c59d3 commit 4ab0a6f

14 files changed

Lines changed: 181 additions & 273 deletions

File tree

backend/crm/src/main/java/cn/cordys/crm/approval/aspect/HitApprovalAspect.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import cn.cordys.crm.approval.annotation.HitApproval;
66
import cn.cordys.crm.approval.constants.ApprovalStatus;
77
import cn.cordys.crm.approval.constants.ExecuteTimingEnum;
8-
import cn.cordys.crm.approval.domain.ApprovalFlowVersion;
8+
import cn.cordys.crm.approval.domain.ApprovalFlow;
99
import cn.cordys.crm.approval.service.ApprovalFlowService;
1010
import cn.cordys.crm.approval.service.ApprovalResourceService;
1111
import jakarta.annotation.Resource;
@@ -161,7 +161,7 @@ private String resolveResourceIdFromArgs(Method method, Object[] args, String ex
161161
private boolean checkHitApprovalFlow(FormKey formKey, ExecuteTimingEnum executeTiming, String organizationId) {
162162
try {
163163
// 查询当前组织表单审批流配置
164-
ApprovalFlowVersion flow = approvalFlowService.getEnabledFlow(formKey.getKey(), organizationId);
164+
ApprovalFlow flow = approvalFlowService.getEnabledFlow(formKey.getKey(), organizationId);
165165

166166
if (flow == null) {
167167
return false;

backend/crm/src/main/java/cn/cordys/crm/approval/controller/ApprovalFlowController.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
package cn.cordys.crm.approval.controller;
22

3-
import cn.cordys.aspectj.annotation.OperationLog;
4-
import cn.cordys.aspectj.constants.LogModule;
5-
import cn.cordys.aspectj.constants.LogType;
63
import cn.cordys.common.constants.PermissionConstants;
74
import cn.cordys.common.pager.Pager;
85
import cn.cordys.context.OrganizationContext;
6+
import cn.cordys.crm.approval.dto.request.ApprovalFlowAddRequest;
7+
import cn.cordys.crm.approval.dto.request.ApprovalFlowPageRequest;
8+
import cn.cordys.crm.approval.dto.request.ApprovalFlowUpdateRequest;
99
import cn.cordys.crm.approval.dto.response.ApprovalFlowByFormTypeResponse;
1010
import cn.cordys.crm.approval.dto.response.ApprovalFlowDetailResponse;
1111
import cn.cordys.crm.approval.dto.response.ApprovalFlowListResponse;
1212
import cn.cordys.crm.approval.dto.response.StatusPermissionSettingResponse;
13-
import cn.cordys.crm.approval.dto.request.ApprovalFlowAddRequest;
14-
import cn.cordys.crm.approval.dto.request.ApprovalFlowPageRequest;
15-
import cn.cordys.crm.approval.dto.request.ApprovalFlowUpdateRequest;
16-
import cn.cordys.crm.approval.domain.ApprovalFlow;
1713
import cn.cordys.crm.approval.service.ApprovalFlowService;
1814
import cn.cordys.security.SessionUtils;
1915
import io.swagger.v3.oas.annotations.Operation;
2016
import io.swagger.v3.oas.annotations.tags.Tag;
2117
import jakarta.annotation.Resource;
22-
import org.springframework.validation.annotation.Validated;
2318
import org.apache.shiro.authz.annotation.RequiresPermissions;
19+
import org.springframework.validation.annotation.Validated;
2420
import org.springframework.web.bind.annotation.*;
2521

2622
import java.util.List;
@@ -45,23 +41,20 @@ public Pager<List<ApprovalFlowListResponse>> list(@Validated @RequestBody Approv
4541

4642
@PostMapping("/add")
4743
@RequiresPermissions(PermissionConstants.APPROVAL_FLOW_ADD)
48-
@OperationLog(module = LogModule.APPROVAL_FLOW, type = LogType.ADD)
4944
@Operation(summary = "新建审批流")
5045
public ApprovalFlowDetailResponse add(@Validated @RequestBody ApprovalFlowAddRequest request) {
5146
return approvalFlowService.add(request, SessionUtils.getUserId(), OrganizationContext.getOrganizationId());
5247
}
5348

5449
@PostMapping("/update")
5550
@RequiresPermissions(PermissionConstants.APPROVAL_FLOW_UPDATE)
56-
@OperationLog(module = LogModule.APPROVAL_FLOW, type = LogType.UPDATE)
5751
@Operation(summary = "更新审批流")
5852
public ApprovalFlowDetailResponse update(@Validated @RequestBody ApprovalFlowUpdateRequest request) {
5953
return approvalFlowService.update(request, SessionUtils.getUserId(), OrganizationContext.getOrganizationId());
6054
}
6155

6256
@GetMapping("/delete/{id}")
6357
@RequiresPermissions(PermissionConstants.APPROVAL_FLOW_DELETE)
64-
@OperationLog(module = LogModule.APPROVAL_FLOW, type = LogType.DELETE)
6558
@Operation(summary = "删除审批流")
6659
public void delete(@PathVariable("id") String id) {
6760
approvalFlowService.delete(id, OrganizationContext.getOrganizationId());
@@ -76,7 +69,6 @@ public ApprovalFlowDetailResponse get(@PathVariable("id") String id) {
7669

7770
@GetMapping("/enable/{id}")
7871
@RequiresPermissions(PermissionConstants.APPROVAL_FLOW_UPDATE)
79-
@OperationLog(module = LogModule.APPROVAL_FLOW, type = LogType.UPDATE)
8072
@Operation(summary = "启用/禁用审批流")
8173
public void updateEnable(@PathVariable("id") String id, @RequestParam("enable") Boolean enable) {
8274
approvalFlowService.updateEnable(id, enable, SessionUtils.getUserId(), OrganizationContext.getOrganizationId());

backend/crm/src/main/java/cn/cordys/crm/approval/domain/ApprovalFlow.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,39 @@ public class ApprovalFlow extends BaseModel {
2323
@Schema(description = "表单类型:quotation/contract/invoice/order")
2424
private String formType;
2525

26+
@Schema(description = "新建时执行")
27+
private Boolean createExecute;
28+
29+
@Schema(description = "编辑时执行")
30+
private Boolean updateExecute;
31+
32+
@Schema(description = "允许提交人撤销")
33+
private Boolean submitterCanRevoke;
34+
35+
@Schema(description = "允许批量处理")
36+
private Boolean allowBatchProcess;
37+
38+
@Schema(description = "允许撤回")
39+
private Boolean allowWithdraw;
40+
41+
@Schema(description = "允许加签")
42+
private Boolean allowAddSign;
43+
44+
@Schema(description = "重复审批人规则:FIRST_ONLY/SEQUENTIAL_ALL/EACH")
45+
private String duplicateApproverRule;
46+
47+
@Schema(description = "是否必须填写审批意见")
48+
private Boolean requireComment;
49+
2650
@Schema(description = "启用状态")
2751
private Boolean enable;
2852

2953
@Schema(description = "流程描述")
3054
private String description;
3155

56+
@Schema(description = "状态权限配置(JSON格式)")
57+
private String statusPermissions;
58+
3259
@Schema(description = "组织id")
3360
private String organizationId;
3461
}

backend/crm/src/main/java/cn/cordys/crm/approval/domain/ApprovalFlowVersion.java

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,9 @@ public class ApprovalFlowVersion implements Serializable {
2020
@Schema(description = "审批流ID")
2121
private String flowId;
2222

23-
@Schema(description = "新建时执行")
24-
private Boolean createExecute;
25-
26-
@Schema(description = "编辑时执行")
27-
private Boolean updateExecute;
28-
29-
@Schema(description = "允许提交人撤销")
30-
private Boolean submitterCanRevoke;
31-
32-
@Schema(description = "允许批量处理")
33-
private Boolean allowBatchProcess;
34-
35-
@Schema(description = "允许撤回")
36-
private Boolean allowWithdraw;
37-
38-
@Schema(description = "允许加签")
39-
private Boolean allowAddSign;
40-
41-
@Schema(description = "重复审批人规则:FIRST_ONLY/SEQUENTIAL_ALL/EACH")
42-
private String duplicateApproverRule;
43-
44-
@Schema(description = "是否必须填写审批意见")
45-
private Boolean requireComment;
46-
4723
@Schema(description = "组织id")
4824
private String organizationId;
4925

50-
@Schema(description = "状态权限配置(JSON格式)")
51-
private String statusPermissions;
52-
5326
@Schema(description = "创建人")
5427
private String createUser;
5528

backend/crm/src/main/java/cn/cordys/crm/approval/mapper/ExtApprovalFlowMapper.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,4 @@ public interface ExtApprovalFlowMapper {
1717
List<ApprovalFlowListResponse> list(
1818
@Param("request") ApprovalFlowPageRequest request,
1919
@Param("organizationId") String organizationId);
20-
21-
/**
22-
* 批量禁用同类型审批流
23-
*/
24-
int disableByFormType(
25-
@Param("formType") String formType,
26-
@Param("organizationId") String organizationId,
27-
@Param("excludeId") String excludeId,
28-
@Param("updateUser") String updateUser,
29-
@Param("updateTime") Long updateTime);
3020
}

backend/crm/src/main/java/cn/cordys/crm/approval/mapper/ExtApprovalFlowMapper.xml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -147,18 +147,4 @@
147147
</otherwise>
148148
</choose>
149149
</sql>
150-
151-
<update id="disableByFormType">
152-
UPDATE approval_flow
153-
SET enable = 0,
154-
update_user = #{updateUser},
155-
update_time = #{updateTime}
156-
WHERE form_type = #{formType}
157-
AND organization_id = #{organizationId}
158-
AND enable = 1
159-
<if test="excludeId != null">
160-
AND id != #{excludeId}
161-
</if>
162-
</update>
163-
164150
</mapper>

backend/crm/src/main/java/cn/cordys/crm/approval/service/ApprovalActionService.java

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,6 @@ public class ApprovalActionService {
5151
@Resource
5252
private ApprovalInstanceService approvalInstanceService;
5353
@Resource
54-
private BaseMapper<ApprovalFlowVersion> approvalFlowVersionMapper;
55-
@Resource
5654
private BaseMapper<ApprovalInstance> approvalInstanceMapper;
5755
@Resource
5856
private BaseMapper<ApprovalTask> approvalTaskMapper;
@@ -87,12 +85,14 @@ public class ApprovalActionService {
8785
* @param orgId 当前组织
8886
*/
8987
public void sign(ApprovalAddSignRequest request, String userId, String orgId) {
88+
ApprovalInstance instance = approvalInstanceMapper.selectByPrimaryKey(request.getInstanceId());
89+
9090
// 审批流是否允许加签
91-
ApprovalFlowVersion flowVersion = getFlowVersionOfInstanceId(request.getInstanceId());
92-
if (flowVersion == null || !flowVersion.getAllowAddSign()) {
91+
ApprovalFlow approvalFlow = approvalFlowService.selectApprovalFlowByFormType(instance.getType(), orgId);
92+
if (approvalFlow == null || !approvalFlow.getAllowAddSign()) {
9393
throw new GenericException(Translator.get("no.operation.permission"));
9494
}
95-
ApprovalInstance instance = approvalInstanceMapper.selectByPrimaryKey(request.getInstanceId());
95+
9696
// 刷新被加签任务状态 && 插入审批记录
9797
ApprovalTask currentTask = saveActionTask(request, ApprovalAction.SIGN, userId, orgId, ApprovalAddSignType.valueOf(request.getType()));
9898
// 加签操作的待办任务
@@ -134,12 +134,12 @@ public void back(ApprovalReturnBackRequest request, String userId, String orgId)
134134
*/
135135
public void revoke(ApprovalRevokeRequest request, String currentUserId, String orgId) {
136136
ApprovalTask currentTask = getTaskById(request.getId());
137+
ApprovalInstance instance = approvalInstanceMapper.selectByPrimaryKey(currentTask.getInstanceId());
137138
// 审批流是否允许撤回
138-
ApprovalFlowVersion flowVersion = getFlowVersionOfInstanceId(currentTask.getInstanceId());
139-
if (flowVersion == null || !flowVersion.getAllowWithdraw()) {
139+
ApprovalFlow approvalFlow = approvalFlowService.selectApprovalFlowByFormType(currentTask.getType(), orgId);
140+
if (approvalFlow == null || !approvalFlow.getAllowWithdraw()) {
140141
throw new GenericException(Translator.get("no.operation.permission"));
141142
}
142-
ApprovalInstance instance = approvalInstanceMapper.selectByPrimaryKey(currentTask.getInstanceId());
143143
revokeProcess(currentTask, instance, orgId);
144144
refreshRevokeTask(currentTask, instance, currentUserId);
145145
}
@@ -168,17 +168,6 @@ public void reject(ApprovalActionRequest request, String currentUserId, String c
168168
rejectProcess(currentTask, currentUserId, currentOrgId);
169169
}
170170

171-
/**
172-
* 获取流程配置相关权限
173-
*
174-
* @param id 审批实例ID
175-
* @return 审批流
176-
*/
177-
private ApprovalFlowVersion getFlowVersionOfInstanceId(String id) {
178-
ApprovalInstance approvalInstance = approvalInstanceMapper.selectByPrimaryKey(id);
179-
return approvalFlowVersionMapper.selectByPrimaryKey(approvalInstance.getFlowVersionId());
180-
}
181-
182171
/**
183172
* 保存加签任务的信息
184173
*

0 commit comments

Comments
 (0)