| | |
| | | //计算维修时间与故障时间 |
| | | Date startTime; |
| | | Date endTime; |
| | | //维修结束时间-维修开始时间=维修时长 |
| | | // 1. 计算维修时长(维修结束时间-维修开始时间) |
| | | if (eamRepairOrder.getActualStartTime() != null && |
| | | eamRepairOrder.getActualEndTime() != null) { |
| | | startTime=eamRepairOrder.getActualStartTime(); |
| | | endTime=eamRepairOrder.getActualEndTime(); |
| | | eamRepairOrder.setRepairDuration(TimeUtil.howLong(startTime,endTime,2)); |
| | | //维修结束时间-故障报修时间=故障时长 |
| | | EamReportRepair eamReportRepair=eamReportRepairService.getById(eamRepairOrder.getReportId()); |
| | | if (eamReportRepair==null){ |
| | | return false; |
| | | // 确保结束时间在开始时间之后 |
| | | if (endTime.after(startTime)) { |
| | | long time = endTime.getTime() - startTime.getTime(); |
| | | double hours = (double) time / (1000 * 60 * 60); |
| | | eamRepairOrder.setRepairDuration(String.format("%.2f", hours)); |
| | | } else { |
| | | // 时间顺序错误处理 |
| | | eamRepairOrder.setRepairDuration("0.00"); |
| | | } |
| | | } else { |
| | | // 处理缺失时间的情况 |
| | | eamRepairOrder.setRepairDuration("0.00"); |
| | | } |
| | | // 2. 计算故障时长(维修结束时间-故障开始时间) |
| | | EamReportRepair eamReportRepair = eamReportRepairService.getById(eamRepairOrder.getReportId()); |
| | | if (eamReportRepair != null && |
| | | eamReportRepair.getFaultStartTime() != null && |
| | | eamRepairOrder.getActualEndTime() != null) { |
| | | startTime=eamReportRepair.getFaultStartTime(); |
| | | endTime=eamRepairOrder.getActualEndTime(); |
| | | eamRepairOrder.setFaultDuration(TimeUtil.howLong(startTime,endTime,2)); |
| | | if (endTime.after(startTime)) { |
| | | long time = endTime.getTime() - startTime.getTime(); |
| | | double hours = (double) time / (1000 * 60 * 60); |
| | | eamRepairOrder.setFaultDuration(String.format("%.2f", hours)); |
| | | } else { |
| | | eamRepairOrder.setFaultDuration("0.00"); |
| | | } |
| | | } else { |
| | | eamRepairOrder.setFaultDuration("0.00"); |
| | | } |
| | | eamRepairOrder.setFaultStartTime(new Date()); |
| | | this.updateById(eamRepairOrder); |
| | | eamReportRepair.setReportStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name()); |