|
|
@@ -15,10 +15,13 @@ import com.java110.utils.constant.BusinessTypeConstant;
|
|
|
import com.java110.utils.constant.ServiceCodeRepairDispatchStepConstant;
|
|
|
import com.java110.utils.util.Assert;
|
|
|
import com.java110.utils.util.BeanConvertUtil;
|
|
|
+import com.java110.utils.util.DateUtil;
|
|
|
+import com.java110.vo.ResultVo;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.HttpMethod;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -29,6 +32,16 @@ import java.util.List;
|
|
|
@Java110Listener("repairDispatchListener")
|
|
|
public class RepairDispatchListener extends AbstractServiceApiPlusListener {
|
|
|
|
|
|
+
|
|
|
+ //派单
|
|
|
+ public static final String ACTION_DISPATCH = "DISPATCH";
|
|
|
+
|
|
|
+ //转单
|
|
|
+ public static final String ACTION_TRANSFER = "TRANSFER";
|
|
|
+ //退单
|
|
|
+ public static final String ACTION_BACK = "BACK";
|
|
|
+
|
|
|
+
|
|
|
private static Logger logger = LoggerFactory.getLogger(RepairDispatchListener.class);
|
|
|
|
|
|
@Autowired
|
|
|
@@ -49,6 +62,7 @@ public class RepairDispatchListener extends AbstractServiceApiPlusListener {
|
|
|
Assert.hasKeyAndValue(reqJson, "repairId", "未包含报修单信息");
|
|
|
Assert.hasKeyAndValue(reqJson, "context", "未包含派单内容");
|
|
|
Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息");
|
|
|
+ Assert.hasKeyAndValue(reqJson, "action", "未包含处理动作");
|
|
|
|
|
|
|
|
|
}
|
|
|
@@ -57,29 +71,176 @@ public class RepairDispatchListener extends AbstractServiceApiPlusListener {
|
|
|
protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
|
|
|
RepairUserPo repairUserPo = BeanConvertUtil.covertBean(reqJson, RepairUserPo.class);
|
|
|
|
|
|
+ String action = reqJson.getString("action");
|
|
|
+
|
|
|
+ switch (action) {
|
|
|
+ case ACTION_DISPATCH:
|
|
|
+ dispacthRepair(context, reqJson);
|
|
|
+ break;
|
|
|
+ case ACTION_TRANSFER:
|
|
|
+ transferRepair(context, reqJson);
|
|
|
+ break;
|
|
|
+ case ACTION_BACK:
|
|
|
+ backRepair(context, reqJson);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_OK, ResultVo.MSG_OK);
|
|
|
+
|
|
|
+ context.setResponseEntity(responseEntity);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void backRepair(DataFlowContext context, JSONObject reqJson) {
|
|
|
+ String userId = reqJson.getString("userId");
|
|
|
+ String userName = reqJson.getString("userName");
|
|
|
+
|
|
|
RepairUserDto repairUserDto = new RepairUserDto();
|
|
|
repairUserDto.setRepairId(reqJson.getString("repairId"));
|
|
|
repairUserDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
- repairUserDto.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
|
|
|
+ repairUserDto.setState(RepairUserDto.STATE_DOING);
|
|
|
+ repairUserDto.setStaffId(userId);
|
|
|
List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
|
|
+ Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
|
|
|
+ //插入派单者的信息
|
|
|
+ RepairUserPo repairUserPo = new RepairUserPo();
|
|
|
+ repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
|
|
|
+ repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
+ repairUserPo.setState(RepairUserDto.STATE_BACK);
|
|
|
+ repairUserPo.setContext(reqJson.getString("context"));
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
|
|
|
+ //处理人信息
|
|
|
+ repairUserPo = new RepairUserPo();
|
|
|
+ repairUserPo.setRuId("-1");
|
|
|
+ repairUserPo.setState(RepairUserDto.STATE_DOING);
|
|
|
+ repairUserPo.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserPo.setStaffId(reqJson.getString("staffId"));
|
|
|
+ repairUserPo.setStaffName(reqJson.getString("staffName"));
|
|
|
+ repairUserDto = new RepairUserDto();
|
|
|
+ repairUserDto.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserDto.setStaffId(reqJson.getString("staffId"));
|
|
|
+ repairUserDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ repairUserDto.setState(RepairUserDto.STATE_TRANSFER);
|
|
|
+ repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
|
|
|
|
|
if (repairUserDtos == null || repairUserDtos.size() < 1) {
|
|
|
- repairUserPo.setPreStaffId("-1");
|
|
|
- repairUserPo.setPreStaffName("-1");
|
|
|
- } else {
|
|
|
- repairUserPo.setPreStaffId(repairUserDtos.get(0).getStaffId());
|
|
|
- repairUserPo.setPreStaffName(repairUserDtos.get(0).getStaffName());
|
|
|
+ throw new IllegalArgumentException("未找到上级处理人");
|
|
|
}
|
|
|
|
|
|
+ repairUserPo.setPreStaffId(repairUserDtos.get(0).getPreStaffId());
|
|
|
+ repairUserPo.setPreStaffName(repairUserDtos.get(0).getPreStaffName());
|
|
|
repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
|
|
|
+ repairUserPo.setContext("");
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
|
|
|
+ ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_BACK);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 转单
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @param reqJson
|
|
|
+ */
|
|
|
+ private void transferRepair(DataFlowContext context, JSONObject reqJson) {
|
|
|
+ String userId = reqJson.getString("userId");
|
|
|
+ String userName = reqJson.getString("userName");
|
|
|
+
|
|
|
+ RepairUserDto repairUserDto = new RepairUserDto();
|
|
|
+ repairUserDto.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ repairUserDto.setState(RepairUserDto.STATE_DOING);
|
|
|
+ repairUserDto.setStaffId(userId);
|
|
|
+ List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
|
|
+ Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单");
|
|
|
+ //插入派单者的信息
|
|
|
+ RepairUserPo repairUserPo = new RepairUserPo();
|
|
|
+ repairUserPo.setRuId(repairUserDtos.get(0).getRuId());
|
|
|
+ repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
+ repairUserPo.setState(RepairUserDto.STATE_TRANSFER);
|
|
|
+ repairUserPo.setContext(reqJson.getString("context"));
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ super.update(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_UPDATE_REPAIR_USER);
|
|
|
+ //处理人信息
|
|
|
+ repairUserPo = new RepairUserPo();
|
|
|
repairUserPo.setRuId("-1");
|
|
|
repairUserPo.setState(RepairUserDto.STATE_DOING);
|
|
|
-
|
|
|
+ repairUserPo.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserPo.setStaffId(reqJson.getString("staffId"));
|
|
|
+ repairUserPo.setStaffName(reqJson.getString("staffName"));
|
|
|
+ repairUserPo.setPreStaffId(userId);
|
|
|
+ repairUserPo.setPreStaffName(userName);
|
|
|
+ repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
|
|
|
+ repairUserPo.setContext("");
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
|
|
|
+ ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_TRANSFER);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 派单处理
|
|
|
+ *
|
|
|
+ * @param context
|
|
|
+ * @param reqJson
|
|
|
+ */
|
|
|
+ private void dispacthRepair(DataFlowContext context, JSONObject reqJson) {
|
|
|
+ String userId = reqJson.getString("userId");
|
|
|
+ String userName = reqJson.getString("userName");
|
|
|
|
|
|
+ // 自己的单子状态修改为转单
|
|
|
+ RepairUserPo repairUserPo = new RepairUserPo();
|
|
|
+ repairUserPo.setRuId("-1");
|
|
|
+ repairUserPo.setEndTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
|
|
|
+ repairUserPo.setState(RepairUserDto.STATE_TRANSFER);
|
|
|
+ repairUserPo.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserPo.setStaffId(userId);
|
|
|
+ repairUserPo.setStaffName(userName);
|
|
|
+ freshPreStaff(reqJson, repairUserPo);
|
|
|
+ repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
|
|
|
+ repairUserPo.setContext(reqJson.getString("context"));
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
|
|
|
+ //处理人信息
|
|
|
+ repairUserPo = new RepairUserPo();
|
|
|
+ repairUserPo.setRuId("-2");
|
|
|
+ repairUserPo.setState(RepairUserDto.STATE_DOING);
|
|
|
+ repairUserPo.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserPo.setStaffId(reqJson.getString("staffId"));
|
|
|
+ repairUserPo.setStaffName(reqJson.getString("staffName"));
|
|
|
+ repairUserPo.setPreStaffId(userId);
|
|
|
+ repairUserPo.setPreStaffName(userName);
|
|
|
+ repairUserPo.setRepairEvent(RepairUserDto.REPAIR_EVENT_AUDIT_USER);
|
|
|
+ repairUserPo.setContext("");
|
|
|
+ repairUserPo.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ super.insert(context, repairUserPo, BusinessTypeConstant.BUSINESS_TYPE_SAVE_REPAIR_USER);
|
|
|
ownerRepairBMOImpl.modifyBusinessRepairDispatch(reqJson, context, RepairDto.STATE_TAKING);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 刷入上一处理人
|
|
|
+ *
|
|
|
+ * @param reqJson
|
|
|
+ * @param repairUserPo
|
|
|
+ */
|
|
|
+ private void freshPreStaff(JSONObject reqJson, RepairUserPo repairUserPo) {
|
|
|
+
|
|
|
+ RepairUserDto repairUserDto = new RepairUserDto();
|
|
|
+ repairUserDto.setRepairId(reqJson.getString("repairId"));
|
|
|
+ repairUserDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
+ //repairUserDto.setRepairEvent(RepairUserDto.REPAIR_EVENT_START_USER);
|
|
|
+ List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMOImpl.queryRepairUsers(repairUserDto);
|
|
|
+ if (repairUserDtos == null || repairUserDtos.size() < 1) {
|
|
|
+ repairUserPo.setPreStaffId("-1");
|
|
|
+ repairUserPo.setPreStaffName("-1");
|
|
|
+ } else {
|
|
|
+ int pos = repairUserDtos.size() - 1;
|
|
|
+ repairUserPo.setPreStaffId(repairUserDtos.get(pos).getStaffId());
|
|
|
+ repairUserPo.setPreStaffName(repairUserDtos.get(pos).getStaffName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public String getServiceCode() {
|
|
|
return ServiceCodeRepairDispatchStepConstant.BINDING_REPAIR_DISPATCH;
|