|
|
@@ -3,29 +3,33 @@ package com.repair.controller;
|
|
|
|
|
|
import com.jcraft.jsch.*;
|
|
|
import com.repair.api.RepairRecordControllerAPI;
|
|
|
-import com.repair.common.utils.StrUtils;
|
|
|
-import com.repair.common.utils.TimeExchange;
|
|
|
-import com.repair.common.utils.paramUtils;
|
|
|
+import com.repair.common.utils.*;
|
|
|
import com.repair.model.enumModel.eRecordStatu;
|
|
|
-import com.repair.model.pojo.RepairConsumables;
|
|
|
-import com.repair.model.pojo.RepairRecord;
|
|
|
+import com.repair.model.enumModel.eTechnicianStatu;
|
|
|
+import com.repair.model.enumModel.eUserZZ;
|
|
|
+import com.repair.model.pojo.*;
|
|
|
import com.repair.model.request.repairRecordRequest;
|
|
|
+import com.repair.model.request.timeVo;
|
|
|
import com.repair.model.result.CommonResult;
|
|
|
import com.repair.model.result.PageUtils;
|
|
|
-import com.repair.model.vo.MyRepairRecordVo;
|
|
|
-import com.repair.model.vo.RepairRecordCountVo;
|
|
|
-import com.repair.model.vo.UploadFileVo;
|
|
|
-import com.repair.services.RepairConsumablesService;
|
|
|
-import com.repair.services.RepairRecordService;
|
|
|
+import com.repair.model.vo.*;
|
|
|
+import com.repair.services.*;
|
|
|
+import lombok.Data;
|
|
|
+import lombok.SneakyThrows;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.commons.lang3.time.DateUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.BindingResult;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
+import java.lang.reflect.Array;
|
|
|
+import java.text.MessageFormat;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -43,9 +47,24 @@ import static com.repair.common.utils.StrUtils.getUUIDBits;
|
|
|
public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
|
|
|
@Autowired
|
|
|
+ private RepairUserService repairUserService;
|
|
|
+ @Autowired
|
|
|
private RepairRecordService repairRecordService;
|
|
|
@Autowired
|
|
|
+ private RepairReceivingService repairReceivingService;
|
|
|
+ @Autowired
|
|
|
private RepairConsumablesService repairConsumablesService;
|
|
|
+ @Autowired
|
|
|
+ private RepairLeaveMessageService repairLeaveMessageService;
|
|
|
+ @Autowired
|
|
|
+ private RepairShiftSettingsService repairShiftSettingsService;
|
|
|
+ @Autowired
|
|
|
+ private RepairDispatchRecordService repairDispatchRecordService;
|
|
|
+ @Autowired
|
|
|
+ private RepairCollaborateRecordService repairCollaborateRecordService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private WeiXiaoUtil weiXiaoUtil;
|
|
|
|
|
|
@Override
|
|
|
public CommonResult InsertRepairRecord(repairRecordRequest rrr, BindingResult bindingResult) {
|
|
|
@@ -56,6 +75,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
RepairRecord rr = new RepairRecord();
|
|
|
rr.setAreaId(rrr.getAreaId());
|
|
|
rr.setArticleId(rrr.getArticleId());
|
|
|
+ rr.setSchoolId(rrr.getSchoolId());
|
|
|
rr.setRecordNo(getUUIDBits(15));
|
|
|
rr.setAddress(rrr.getAddress());
|
|
|
rr.setDescription(rrr.getDescription());
|
|
|
@@ -66,6 +86,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
rr.setUserPhone(rrr.getUserPhone());
|
|
|
rr.setReportTime(new Date());
|
|
|
rr.setMaintenanceState(eRecordStatu.Dispatch.getValue());
|
|
|
+ rr.setBuildId(rrr.getBuildId());
|
|
|
int result = repairRecordService.insertRepairRecord(rr);
|
|
|
|
|
|
return result > 0 ? CommonResult.ok("提交成功") : CommonResult.fail("提交失败");
|
|
|
@@ -160,6 +181,22 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public CommonResult revokeRepairRecordById(int id) {
|
|
|
+ RepairRecord data = repairRecordService.getRepairById(id);
|
|
|
+ if (data == null) {
|
|
|
+ return CommonResult.fail("当前数据不存在,撤销失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ RepairRecord rr = new RepairRecord();
|
|
|
+ rr.setId(id);
|
|
|
+ rr.setMaintenanceState(eRecordStatu.Canceled.getValue());
|
|
|
+
|
|
|
+ int result = repairRecordService.updateRepairRecord(rr);
|
|
|
+
|
|
|
+ return result > 0 ? CommonResult.ok("撤销成功") : CommonResult.fail("撤销失败");
|
|
|
+ }
|
|
|
+
|
|
|
@Override//还要处理一下订单超时状态
|
|
|
public CommonResult getRepairRecordsByUserId(int currentPage, int pageCount, int userId, int state) {
|
|
|
PageUtils<MyRepairRecordVo> result = repairRecordService.queryMyRepairRecordList(currentPage, pageCount, state, userId);
|
|
|
@@ -173,35 +210,423 @@ public class RepairRecordController implements RepairRecordControllerAPI {
|
|
|
r.setImages(Arrays.asList(r.getImage().split(",")));
|
|
|
List<RepairConsumables> datas = rcs.stream().filter(e -> e.getRecordId() == r.getId()).collect(Collectors.toList());
|
|
|
r.setConsumables(datas);
|
|
|
+ }
|
|
|
+ return CommonResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult getRepairRecordCountByUserId(int userId) {
|
|
|
+ RepairRecordCountVo result = repairRecordService.getRepairRecordCount(userId);
|
|
|
+ return CommonResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult getTechnicianCountByUserId(int userId) {
|
|
|
+ String dateNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
+ MaintenanceTechnicianVo result = repairRecordService.queryRepairTechnicianCount(userId, dateNow);
|
|
|
+ return CommonResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult getTechniciansByUserId(int currentPage, int pageCount, int userId, int state) {
|
|
|
+ PageUtils<RepairTechnicianVo> result = null;
|
|
|
+ String dateNow = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
|
|
|
+ switch (state) {
|
|
|
+ case 1://待接单
|
|
|
+ result = repairRecordService.queryPendingOrderList(currentPage, pageCount, userId, dateNow);
|
|
|
+ break;
|
|
|
+ case 2://维修中
|
|
|
+ result = repairRecordService.queryRepairOrderList(currentPage, pageCount, userId, dateNow);
|
|
|
+ break;
|
|
|
+ case 3://已超时
|
|
|
+ result = repairRecordService.queryTimeoutOrderList(currentPage, pageCount, userId, dateNow);
|
|
|
+ break;
|
|
|
+ case 4://待审核
|
|
|
+ result = repairRecordService.queryExamineOrderList(currentPage, pageCount, userId);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return CommonResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult repairRecordReminder(int recordId) {
|
|
|
+ // 根据报修ID查找是否有派单数据 并且是有效的
|
|
|
+ RepairRecord record = repairRecordService.getRepairById(recordId);
|
|
|
+ if (record == null) {
|
|
|
+ return CommonResult.fail("报修工单数据无效,催单失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (record.getMaintenanceState() >= eRecordStatu.Finished.getValue()) {
|
|
|
+ return CommonResult.fail("当前报修工单状态不支持催单操作");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> cardnumber = new ArrayList<>();
|
|
|
+
|
|
|
+ // 有的话就发给被派单的维修师傅
|
|
|
+ // 否则就发给郭师傅
|
|
|
+ List<RepairCardNumberVo> cardNumbers = repairDispatchRecordService.queryRepairCardNumber(recordId);
|
|
|
+ if (cardNumbers.size() <= 0) {
|
|
|
+ List<Integer> uz = new ArrayList<>();
|
|
|
+ uz.add(eUserZZ.Monitor.getValue());
|
|
|
+ List<RepairUser> users = repairUserService.getRepairByUserZZ(uz, record.getSchoolId());
|
|
|
+ cardnumber = users.stream().map(RepairUser::getCardNumber).collect(Collectors.toList());
|
|
|
+ } else {
|
|
|
+ cardnumber = cardNumbers.stream().map(RepairCardNumberVo::getCardNumber).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (cardnumber.size() <= 0) {
|
|
|
+ return CommonResult.fail("当前工单无接收人,催单失败");
|
|
|
+ }
|
|
|
+ String content = MessageFormat.format("【报修系统】维修师傅,你好,工单{0}用户催单,请及时处理,谢谢!", record.getRecordNo());
|
|
|
+ CommonResult result = weiXiaoUtil.sendNotice(cardnumber, "报修工单催单", "催单", content, null);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CommonResult queryManageCount() {
|
|
|
+ RepairManageCountVo result = repairRecordService.queryManageCount();
|
|
|
+ return CommonResult.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 全部 0
|
|
|
+ * 待接单 1
|
|
|
+ * 维修中 2
|
|
|
+ * 待处理 3
|
|
|
+ * 待审核 4
|
|
|
+ * 已完成 5
|
|
|
+ * 已取消 6
|
|
|
+ * 已关单 7
|
|
|
+ * 已超时 8
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public CommonResult queryManagePage(int currentPage, int pageCount, int state, String keyWord, String startTime, String endTime) {
|
|
|
+
|
|
|
+ if (startTime != null && endTime != null) {
|
|
|
+ try {
|
|
|
+ startTime = TimeExchange.getStartOfDayStr(TimeExchange.StringToDate(startTime, "yyyy-MM-dd"));
|
|
|
+ endTime = TimeExchange.getEndOfDayStr(TimeExchange.StringToDate(endTime, "yyyy-MM-dd"));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //状态为待接单 判断是否是超时未接
|
|
|
- if (r.getStateId() == eRecordStatu.Dispatch.getValue()) {
|
|
|
- //超时未接判断标准:派单时间 < (当前时间 - 接单考核时间)
|
|
|
- if (r.getDispatchTime() != null) {
|
|
|
- Date dateTime = DateUtils.addMinutes(new Date(), -r.getAcceptanceAssessTime());
|
|
|
+ PageUtils<RepairRecordPageVo> result = null;
|
|
|
+ /**
|
|
|
+ * 出现延时按钮
|
|
|
+ * 待接单 已完成 已取消 已关单 不需要出现延时按钮
|
|
|
+ * 0 2 3 4 8 需要
|
|
|
+ */
|
|
|
+ String stateStr = null;
|
|
|
+ switch (state) {
|
|
|
+ case 0:
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ if (r.getMaintenanceState() == 1) {
|
|
|
+ r.setState("待接单");
|
|
|
+ } else if (r.getMaintenanceState() == 2) {
|
|
|
+ r.setState("维修中");
|
|
|
+ } else if (r.getMaintenanceState() == 3) {
|
|
|
+ r.setState("待处理");
|
|
|
+ } else if (r.getMaintenanceState() == 5 || r.getMaintenanceState() == 6) {
|
|
|
+ r.setState("待审核");
|
|
|
+ } else if (r.getMaintenanceState() == 7) {
|
|
|
+ r.setState("已完成");
|
|
|
+ } else if (r.getMaintenanceState() == 8) {
|
|
|
+ r.setState("已取消");
|
|
|
+ } else if (r.getMaintenanceState() == 9) {
|
|
|
+ r.setState("已关单");
|
|
|
+ }
|
|
|
+ r.setDelayed(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ stateStr = "=1)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("待接单");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ stateStr = "=2)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("维修中");
|
|
|
+ r.setDelayed(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ stateStr = "=3)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("待处理");
|
|
|
+ r.setDelayed(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ stateStr = "=5 or rr.maintenance_state = 6)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("待审核");
|
|
|
+ r.setDelayed(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ stateStr = "=7)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("已完成");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 6:
|
|
|
+ stateStr = "=8)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("已取消");
|
|
|
+ r.setDelayed(1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ stateStr = "=9)";
|
|
|
+ result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("已关单");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 8:
|
|
|
+ result = repairRecordService.queryTimeout(currentPage, pageCount, keyWord, startTime, endTime);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ r.setState("已超时");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (result.getList().size() > 0) {
|
|
|
+ List<Integer> recordIds = result.getList().stream().map(RepairRecordPageVo::getId).collect(Collectors.toList());
|
|
|
+ /**
|
|
|
+ * 全部 待接单 待处理
|
|
|
+ * 出现派单按钮
|
|
|
+ * 没有派单记录的数据出现派单按钮
|
|
|
+ */
|
|
|
+ if (state == 0 || state == 1 || state == 3) {
|
|
|
+
|
|
|
+ List<RepairDispatchRecord> disps = repairDispatchRecordService.queryRepairDispatch(recordIds);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ long count = disps.stream().filter(e -> e.getRecordId().equals(r.getId())).count();
|
|
|
+ r.setDispatch(count > 0 ? 0 : 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if(r.getDispatchTime().before(dateTime)){
|
|
|
- r.setTimeoutStr("超时未接");
|
|
|
+ /**
|
|
|
+ * 全部 待审核
|
|
|
+ * 出现协作审核按钮
|
|
|
+ * 出现转单审核按钮
|
|
|
+ */
|
|
|
+ if (state == 0 || state == 4) {
|
|
|
+ List<CollaborateRecordVo> collaborates = repairCollaborateRecordService.queryRepairCollaborate(recordIds);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ long collaborate = collaborates.stream().filter(e -> e.getRecordId() == r.getId() && e.getState().equals("协作")).count();
|
|
|
+ long transfer = collaborates.stream().filter(e -> e.getRecordId() == r.getId() && e.getState().equals("转单")).count();
|
|
|
+ r.setCollaborate(collaborate > 0 ? 1 : 0);
|
|
|
+ r.setTransfer(transfer > 0 ? 1 : 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (state < 5 || state == 8) {
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ if (r.getMaintenanceState() < eRecordStatu.Finished.getValue()) {
|
|
|
+ r.setClose(1);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //维修超时 报修时间 < (当前时间 - 维修考核时间)
|
|
|
- if(r.getMaintenanceAssessTime() != null){
|
|
|
- Date dateTime = DateUtils.addMinutes(new Date(), -r.getMaintenanceAssessTime());
|
|
|
|
|
|
- if(r.getReportTime().before(dateTime)){
|
|
|
- r.setTimeoutStr("维修超时");
|
|
|
+ /**
|
|
|
+ * 全部 待处理 待审核 维修中
|
|
|
+ * 有耗材记录就显示改价按钮
|
|
|
+ * 出现改价按钮
|
|
|
+ */
|
|
|
+ if (state == 0 || state == 2 || state == 3 || state == 4) {
|
|
|
+ List<RepairConsumables> consumables = repairConsumablesService.getRepairsByRecordIds(recordIds);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ long collaborate = consumables.stream().filter(e -> e.getRecordId() == r.getId()).count();
|
|
|
+ r.setChangePrice(collaborate > 0 ? 1 : 0);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 出现回复按钮
|
|
|
+ * 有留言 且用户回复消息数大于后勤人员回复的
|
|
|
+ */
|
|
|
+ List<RepairLeaveMessage> messages = repairLeaveMessageService.getRepairsByRecordIds(recordIds);
|
|
|
+ for (RepairRecordPageVo r : result.getList()) {
|
|
|
+ List<RepairLeaveMessage> alls = messages.stream().filter(e -> e.getRecordId() == r.getId()).collect(Collectors.toList());
|
|
|
+ List<RepairLeaveMessage> owns = alls.stream().filter(e -> e.getRecordId() == r.getId() && e.getSenderId().equals(r.getUserId())).collect(Collectors.toList());
|
|
|
+ r.setReply(owns.size() > alls.size() / 2 ? 1 : 0);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
- public CommonResult getRepairRecordCountByUserId(int userId) {
|
|
|
- RepairRecordCountVo result = repairRecordService.getRepairRecordCount(userId);
|
|
|
+ public CommonResult queryPendingOrder(int currentPage, int pageCount, int userId) {
|
|
|
+ PageUtils<pendingOrderVo> result = repairRecordService.queryPendingOrder(currentPage, pageCount, userId);
|
|
|
return CommonResult.ok(result);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = {Exception.class})
|
|
|
+ public CommonResult receiveOrders(int recordId, int userId) throws Exception {
|
|
|
+ try {
|
|
|
+ Date nowDate = new Date();
|
|
|
+ //获取订单
|
|
|
+ RepairRecord recordData = repairRecordService.getRepairById(recordId);
|
|
|
+ if (recordData == null) {
|
|
|
+ return CommonResult.fail("订单不存在,接单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!recordData.getMaintenanceState().equals(eRecordStatu.Dispatch.getValue())) {
|
|
|
+ return CommonResult.fail("订单状态错误,接单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取维修师傅的用户信息 并获取当天的排班数据
|
|
|
+ String dateNow = TimeExchange.DateToString(nowDate, "yyyy-MM-dd");
|
|
|
+ UserDataVo result = repairUserService.queryUserData(userId, dateNow);
|
|
|
+
|
|
|
+ if (result == null) {
|
|
|
+ return CommonResult.fail("非法身份,接单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (result.getStartDate() == null || result.getShiftId() == null) {
|
|
|
+ return CommonResult.fail("当天未排班,无法接单!");
|
|
|
+ }
|
|
|
+
|
|
|
+ long count = Arrays.asList(result.getArticleId().split(",")).stream().filter(e -> e.equals(recordData.getArticleId().toString())).count();
|
|
|
+ if (count <= 0) {
|
|
|
+ return CommonResult.fail("无法维修该种类物品!");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> shifts = Arrays.asList(result.getShiftId().split(","));
|
|
|
+ List<RepairShiftSettings> shiftDatas = repairShiftSettingsService.getRepairsByShiftIds(shifts);
|
|
|
+ if (shiftDatas.size() <= 0) {
|
|
|
+ return CommonResult.fail("当天未排班,无法接单!");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer isDuty = 0;
|
|
|
+ int acceptanceAssessTime = result.getAcceptanceAssessTime();
|
|
|
+ int maintenanceAssessTime = result.getMaintenanceAssessTime();
|
|
|
+ try {
|
|
|
+
|
|
|
+ //下班之后或者值班接的单不考核 将报修工单中的is_duty改为1
|
|
|
+ Date workTime = TimeExchange.StringToDate(dateNow + " " + shiftDatas.get(0).getEndTime() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (workTime.before(nowDate)) {
|
|
|
+ isDuty = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isDuty == 0) {
|
|
|
+ List<timeVo> tvs = DelayedUtils.timeVos(shiftDatas);
|
|
|
+
|
|
|
+ //工作的时间是否够修完 临下班接的单不做延长
|
|
|
+ for (int i = 0; i < tvs.size(); i++) {
|
|
|
+ Date startWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i).getStart() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date endWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i).getEnd() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+
|
|
|
+ if (nowDate.before(startWorkTime)) {
|
|
|
+ if (i == 0) {
|
|
|
+ int minute = TimeExchange.getOffsetMinutes(nowDate, startWorkTime);
|
|
|
+ int workMinte = TimeExchange.getOffsetMinutes(nowDate, endWorkTime);
|
|
|
+ acceptanceAssessTime = acceptanceAssessTime + minute;
|
|
|
+ acceptanceAssessTime = DelayedUtils.addMinuteStart(tvs, endWorkTime, acceptanceAssessTime, nowDate, dateNow, workMinte, i, 1);
|
|
|
+ maintenanceAssessTime = maintenanceAssessTime + minute;
|
|
|
+ maintenanceAssessTime = DelayedUtils.addMinuteStart(tvs, endWorkTime, maintenanceAssessTime, nowDate, dateNow, workMinte, i, 1);
|
|
|
+ break;
|
|
|
+ } else {
|
|
|
+ Date lastEndWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i - 1).getEnd() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ if (lastEndWorkTime.before(nowDate)) {
|
|
|
+ Date nextStartWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i + 1).getStart() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date nextEndWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i + 1).getEnd() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ int minute = TimeExchange.getOffsetMinutes(nowDate, nextStartWorkTime);
|
|
|
+ int workMinte = TimeExchange.getOffsetMinutes(nowDate, nextEndWorkTime);
|
|
|
+ acceptanceAssessTime = acceptanceAssessTime + minute;
|
|
|
+ acceptanceAssessTime = DelayedUtils.addMinuteStart(tvs, nextEndWorkTime, acceptanceAssessTime, nowDate, dateNow, workMinte, i, 2);
|
|
|
+ maintenanceAssessTime = maintenanceAssessTime + minute;
|
|
|
+ maintenanceAssessTime = DelayedUtils.addMinuteStart(tvs, nextEndWorkTime, maintenanceAssessTime, nowDate, dateNow, workMinte, i, 2);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (startWorkTime.before(nowDate) && nowDate.before(endWorkTime)) {
|
|
|
+ int workMinte = TimeExchange.getOffsetMinutes(nowDate, endWorkTime);
|
|
|
+ acceptanceAssessTime = DelayedUtils.addMinuteStart(tvs, endWorkTime, acceptanceAssessTime, nowDate, dateNow, workMinte, i, 1);
|
|
|
+ maintenanceAssessTime = DelayedUtils.addMinuteStart(tvs, endWorkTime, maintenanceAssessTime, nowDate, dateNow, workMinte, i, 1);
|
|
|
+ break;
|
|
|
+ } else if (endWorkTime.before(nowDate) && nowDate.before(TimeExchange.StringToDate(dateNow + " " + tvs.get(i + 1).getStart() + ":00", "yyyy-MM-dd HH:mm:ss"))) {
|
|
|
+ Date nextStartWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i + 1).getStart() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date nextEndWorkTime = TimeExchange.StringToDate(dateNow + " " + tvs.get(i + 1).getEnd() + ":00", "yyyy-MM-dd HH:mm:ss");
|
|
|
+ int minute = TimeExchange.getOffsetMinutes(nowDate, nextStartWorkTime);
|
|
|
+ int workMinte = TimeExchange.getOffsetMinutes(nowDate, nextEndWorkTime);
|
|
|
+ acceptanceAssessTime = acceptanceAssessTime + minute;
|
|
|
+ acceptanceAssessTime = DelayedUtils.addMinuteStart(tvs, nextEndWorkTime, acceptanceAssessTime, nowDate, dateNow, workMinte, i, 2);
|
|
|
+ maintenanceAssessTime = maintenanceAssessTime + minute;
|
|
|
+ maintenanceAssessTime = DelayedUtils.addMinuteStart(tvs, nextEndWorkTime, maintenanceAssessTime, nowDate, dateNow, workMinte, i, 2);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new Exception("延时异常,抢单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //将工单状态更新为维修中
|
|
|
+ recordData.setMaintenanceState(eRecordStatu.Maintenance.getValue());
|
|
|
+ recordData.setMaintenancerId(String.valueOf(userId));
|
|
|
+ recordData.setMaintenancerName(result.getUserName());
|
|
|
+ recordData.setMaintenancerPhone(result.getUserPhone());
|
|
|
+ recordData.setIsDuty(isDuty);
|
|
|
+ int updateRecord = repairRecordService.updateRepairRecord(recordData);
|
|
|
+ if (updateRecord <= 0) {
|
|
|
+ throw new Exception("抢单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建派单记录
|
|
|
+ RepairDispatchRecord rdr = new RepairDispatchRecord();
|
|
|
+ rdr.setRecordId(recordId);
|
|
|
+ rdr.setUsersId(userId);
|
|
|
+ rdr.setAssignedTime(new Date());
|
|
|
+ rdr.setAcceptanceAssessTime(acceptanceAssessTime);
|
|
|
+ rdr.setOrderType(0);
|
|
|
+ rdr.setIsLoseEfficacy(0);
|
|
|
+ int dispatch = repairDispatchRecordService.insertRepairDispatchRecord(rdr);
|
|
|
+ if (dispatch <= 0) {
|
|
|
+ throw new Exception("抢单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //创建接单记录
|
|
|
+ RepairReceiving rr = new RepairReceiving();
|
|
|
+ rr.setRecordId(recordId);
|
|
|
+ rr.setDispatchId(rdr.getId());
|
|
|
+ rr.setUserId(userId);
|
|
|
+ rr.setReceivingTime(new Date());
|
|
|
+ rr.setMaintenanceAssessTime(maintenanceAssessTime);
|
|
|
+ rr.setIsLoseEfficacy(0);
|
|
|
+ int receive = repairReceivingService.insertRepairReceiving(rr);
|
|
|
+ if (receive <= 0) {
|
|
|
+ throw new Exception("抢单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ //return CommonResult.fail("抢单失败");
|
|
|
+ throw new Exception("抢单失败!");
|
|
|
+ }
|
|
|
+
|
|
|
+ return CommonResult.ok("抢单成功");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|