88e030b7
王彪总
init project
|
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
|
/**
* 业主报修工单结束命令类
*
* 该类负责处理业主报修工单的结束操作,包括验证请求参数、更新工单状态、
* 记录工单处理人员信息以及保存工单结束原因等业务逻辑
*
* @author Java110
* @version 1.0
* @since 2024
*/
package com.java110.community.cmd.ownerRepair;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.annotation.Java110Cmd;
import com.java110.core.context.CmdContextUtils;
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.event.cmd.Cmd;
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.repair.RepairDto;
import com.java110.dto.repair.RepairUserDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.community.IRepairInnerServiceSMO;
import com.java110.intf.community.IRepairPoolV1InnerServiceSMO;
import com.java110.intf.community.IRepairUserInnerServiceSMO;
import com.java110.intf.user.IUserV1InnerServiceSMO;
import com.java110.po.owner.RepairPoolPo;
import com.java110.po.owner.RepairUserPo;
import com.java110.utils.exception.CmdException;
import com.java110.utils.util.Assert;
import com.java110.utils.util.DateUtil;
import com.java110.utils.util.ListUtil;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import java.text.ParseException;
import java.util.List;
@Java110Cmd(serviceCode = "ownerRepair.repairEnd")
public class RepairEndCmd extends Cmd {
// 报修工单池服务接口
@Autowired
private IRepairPoolV1InnerServiceSMO repairPoolV1InnerServiceSMOImpl;
// 报修工单服务接口
@Autowired
private IRepairInnerServiceSMO repairInnerServiceSMOImpl;
// 报修工单处理人员服务接口
@Autowired
private IRepairUserInnerServiceSMO repairUserInnerServiceSMOImpl;
// 用户服务接口
@Autowired
private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
/**
* 验证请求参数方法
*
|
9750b443
王彪总
fix(config): 更新配置...
|
62
|
* 验证请求JSON中是否包含必要的参数:项目ID、工单ID和结束原因
|
88e030b7
王彪总
init project
|
63
64
65
66
67
68
69
70
71
|
*
* @param event 命令事件对象,包含请求相关信息
* @param context 命令数据流上下文,用于获取请求上下文信息
* @param reqJson 请求参数JSON对象
* @throws CmdException 当参数验证失败时抛出命令异常
* @throws ParseException 当参数解析失败时抛出解析异常
*/
@Override
public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
|
9750b443
王彪总
fix(config): 更新配置...
|
72
73
|
// 验证项目ID参数
Assert.hasKeyAndValue(reqJson, "communityId", "未包含项目");
|
88e030b7
王彪总
init project
|
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
142
143
144
|
// 验证工单ID参数
Assert.hasKeyAndValue(reqJson, "repairId", "未包含工单");
// 验证结束原因参数
Assert.hasKeyAndValue(reqJson, "context", "未包含工单");
}
/**
* 执行工单结束命令方法
*
* 主要功能:
* 1. 获取当前登录用户信息
* 2. 验证工单是否存在
* 3. 关闭正在处理的工单人员记录
* 4. 更新工单状态为已完成
* 5. 创建工单结束记录
*
* @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 staffId = CmdContextUtils.getUserId(context);
// 构建用户查询条件
UserDto userDto = new UserDto();
userDto.setUserId(staffId);
// 查询当前登录用户信息
List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
// 验证用户是否存在
if (ListUtil.isNull(userDtos)) {
throw new CmdException("登陆用户不存在");
}
// 构建工单查询条件
RepairDto repairDto = new RepairDto();
repairDto.setRepairId(reqJson.getString("repairId"));
repairDto.setCommunityId(reqJson.getString("communityId"));
// 查询工单信息
List<RepairDto> repairDtos = repairInnerServiceSMOImpl.queryRepairs(repairDto);
// 验证工单是否存在
if (ListUtil.isNull(repairDtos)) {
throw new CmdException("工单不存在");
}
// 构建工单处理人员查询条件,查找正在处理中的工单人员记录
RepairUserDto repairUserDto = new RepairUserDto();
repairUserDto.setRepairId(reqJson.getString("repairId"));
repairUserDto.setCommunityId(reqJson.getString("communityId"));
repairUserDto.setState(RepairUserDto.STATE_DOING); // 查询状态为处理中的记录
// 查询正在处理中的工单人员记录
List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
RepairUserPo repairUserPo = null;
// 如果存在正在处理的工单人员记录,则关闭这些记录
if (!ListUtil.isNull(repairUserDtos)) {
for (RepairUserDto tRepairUserDto : repairUserDtos) {
repairUserPo = new RepairUserPo();
repairUserPo.setRuId(tRepairUserDto.getRuId()); // 设置工单人员记录ID
repairUserPo.setState(RepairUserDto.STATE_CLOSE); // 更新状态为关闭
repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // 设置结束时间
|
9750b443
王彪总
fix(config): 更新配置...
|
145
|
repairUserPo.setCommunityId(reqJson.getString("communityId")); // 设置项目ID
|
88e030b7
王彪总
init project
|
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
repairUserPo.setContext(userDtos.get(0).getName() + "结束了工单"); // 设置结束说明
// 更新工单人员记录状态
repairUserInnerServiceSMOImpl.updateRepairUser(repairUserPo);
}
}
// 更新工单池中的工单状态
RepairPoolPo repairPoolPo = new RepairPoolPo();
repairPoolPo.setRepairId(reqJson.getString("repairId")); // 设置工单ID
repairPoolPo.setState(RepairDto.STATE_COMPLATE); // 更新状态为已完成
repairPoolPo.setFinishTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // 设置完成时间
// 执行工单状态更新操作
int flag = repairPoolV1InnerServiceSMOImpl.updateRepairPoolNew(repairPoolPo);
// 创建新的工单结束记录
repairUserPo = new RepairUserPo();
repairUserPo.setRuId(GenerateCodeFactory.getGeneratorId("11")); // 生成工单人员记录ID
repairUserPo.setRepairId(reqJson.getString("repairId")); // 设置工单ID
repairUserPo.setUserId(staffId); // 设置用户ID
|
9750b443
王彪总
fix(config): 更新配置...
|
167
|
repairUserPo.setCommunityId(reqJson.getString("communityId")); // 设置项目ID
|
88e030b7
王彪总
init project
|
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
repairUserPo.setState(RepairUserDto.STATE_CLOSE); // 设置状态为关闭
repairUserPo.setContext("结束原因:"+reqJson.getString("context")); // 设置结束原因
repairUserPo.setStaffId(staffId); // 设置处理人员ID
repairUserPo.setStaffName(userDtos.get(0).getName()); // 设置处理人员姓名
repairUserPo.setPreStaffId(staffId); // 设置前一个处理人员ID
repairUserPo.setPreStaffName(userDtos.get(0).getName()); // 设置前一个处理人员姓名
repairUserPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // 设置开始时间
repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // 设置结束时间
repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER); // 设置工单事件类型
repairUserPo.setPreRuId("-1"); // 设置前一个工单人员记录ID
repairUserPo.setCreateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); // 设置创建时间
// 保存工单结束记录
repairUserInnerServiceSMOImpl.saveRepairUser(repairUserPo);
}
}
|