AuditUndoOwnerSettledCmd.java
6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package com.java110.user.cmd.ownerSettled;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.dto.owner.OwnerSettledApplyDto;
import com.java110.intf.common.IOaWorkflowActivitiInnerServiceSMO;
import com.java110.intf.user.IOwnerSettledApplyV1InnerServiceSMO;
import com.java110.intf.user.IOwnerSettledSettingV1InnerServiceSMO;
import com.java110.po.owner.OwnerSettledApplyPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.ParseException;
import java.util.List;
/**
* 业主入驻申请审核撤销命令类
* 负责处理业主入驻申请的审核撤销操作,包括办理、转单、退回等审核流程操作
* 通过工作流引擎完成相应的审核任务处理,并更新申请状态
*
* @author Java110
* @version 1.0
* @since 2023
*/
@Java110Cmd(serviceCode = "ownerSettled.auditUndoOwnerSettled")
public class AuditUndoOwnerSettledCmd extends Cmd {
@Autowired
private IOaWorkflowActivitiInnerServiceSMO oaWorkflowUserInnerServiceSMOImpl;
@Autowired
private IOwnerSettledApplyV1InnerServiceSMO ownerSettledApplyV1InnerServiceSMOImpl;
@Autowired
private IOwnerSettledSettingV1InnerServiceSMO ownerSettledSettingV1InnerServiceSMOImpl;
/**
* 验证请求参数
* 检查请求JSON中是否包含必要的参数,确保请求数据的完整性
*
* @param event 命令事件对象,包含事件相关信息
* @param context 命令数据流上下文,包含请求和响应数据
* @param reqJson 请求的JSON数据对象
* @throws CmdException 当命令执行出现异常时抛出
* @throws ParseException 当数据解析出现异常时抛出
*/
@Override
public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
// 验证必须的参数是否存在
Assert.hasKeyAndValue(reqJson, "taskId", "未包含任务");
Assert.hasKeyAndValue(reqJson, "applyId", "未包含applyId");
Assert.hasKeyAndValue(reqJson, "flowId", "未包含流程");
Assert.hasKeyAndValue(reqJson, "auditCode", "未包含状态");
Assert.hasKeyAndValue(reqJson, "auditMessage", "未包含状态说明");
}
/**
* 执行审核撤销命令
* 根据审核码执行不同的审核操作:办理、转单或退回
* 更新业主入驻申请的状态并完成相应的工作流任务
*
* @param event 命令事件对象,包含事件相关信息
* @param context 命令数据流上下文,包含请求和响应数据
* @param reqJson 请求的JSON数据对象
* @throws CmdException 当命令执行出现异常时抛出
* @throws ParseException 当数据解析出现异常时抛出
*/
@Override
public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
// 从请求头中获取店铺ID
String storeId = context.getReqHeaders().get("store-id");
// 根据申请ID查询业主入驻申请信息
OwnerSettledApplyDto ownerSettledApplyDto = new OwnerSettledApplyDto();
ownerSettledApplyDto.setApplyId(reqJson.getString("applyId"));
List<OwnerSettledApplyDto> ownerSettledApplyDtos = ownerSettledApplyV1InnerServiceSMOImpl.queryOwnerSettledApplys(ownerSettledApplyDto);
// 验证申请是否存在且唯一
Assert.listOnlyOne(ownerSettledApplyDtos, "入驻申请不存在");
// 准备更新申请状态的PO对象
OwnerSettledApplyPo ownerSettledApplyPo = new OwnerSettledApplyPo();
ownerSettledApplyPo.setApplyId(ownerSettledApplyDtos.get(0).getApplyId());
// 在请求JSON中添加必要参数
reqJson.put("id", reqJson.getString("applyId"));
reqJson.put("storeId", storeId);
// 根据审核码执行不同的审核操作
String auditCode = reqJson.getString("auditCode");
// 办理操作:1100-通过,1500-其他办理操作
if ("1100".equals(auditCode) || "1500".equals(auditCode)) {
// 设置下一处理人
reqJson.put("nextUserId", reqJson.getString("staffId"));
// 完成当前任务
boolean isLastTask = oaWorkflowUserInnerServiceSMOImpl.completeTask(reqJson);
// 根据是否最后一个任务设置申请状态
if (isLastTask) {
ownerSettledApplyPo.setState(OwnerSettledApplyDto.STATE_COMPLETE); // 审核完成
} else {
ownerSettledApplyPo.setState(OwnerSettledApplyDto.STATE_DOING); // 审核中
}
// 更新申请状态
ownerSettledApplyV1InnerServiceSMOImpl.updateOwnerSettledApply(ownerSettledApplyPo);
}
// 转单操作:1300-转交给其他处理人
else if ("1300".equals(auditCode)) {
// 设置下一处理人
reqJson.put("nextUserId", reqJson.getString("staffId"));
// 将任务转交给其他用户
oaWorkflowUserInnerServiceSMOImpl.changeTaskToOtherUser(reqJson);
// 设置申请状态为审核中
ownerSettledApplyPo.setState(OwnerSettledApplyDto.STATE_DOING);
// 更新申请状态
ownerSettledApplyV1InnerServiceSMOImpl.updateOwnerSettledApply(ownerSettledApplyPo);
}
// 退回操作:1200-退回,1400-其他退回操作
else if ("1200".equals(auditCode) || "1400".equals(auditCode)) {
// 退回任务
oaWorkflowUserInnerServiceSMOImpl.goBackTask(reqJson);
// 设置申请状态为审核失败
ownerSettledApplyPo.setState(OwnerSettledApplyDto.STATE_FAIT);
// 更新申请状态
ownerSettledApplyV1InnerServiceSMOImpl.updateOwnerSettledApply(ownerSettledApplyPo);
}
// 不支持的审核码类型
else {
throw new IllegalArgumentException("不支持的类型");
}
}
}