|
|
|
|
@ -33,6 +33,7 @@ import java.math.RoundingMode;
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.time.ZoneId;
|
|
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
|
|
@ -1099,6 +1100,10 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
|
|
|
|
|
if (list.getWorkDownMachine().equals("1")) {
|
|
|
|
|
equRepairWorkOrder.setActualDownEndTime(date);//维修真正停机时间
|
|
|
|
|
}
|
|
|
|
|
if (date.before(equRepairWorkOrder.getWorkStartTime()))
|
|
|
|
|
{
|
|
|
|
|
throw new NotLoginException("请检查设备维修开始时间!");
|
|
|
|
|
}
|
|
|
|
|
equRepairWorkOrder.setWorkEndTime(date);//维修工单结束时间
|
|
|
|
|
|
|
|
|
|
//1.2判断字段里面是否为空,是空的用,用无替代
|
|
|
|
|
@ -1117,16 +1122,21 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
|
|
|
|
|
|
|
|
|
|
////2.计算维修工单用时 + 故障停机时间
|
|
|
|
|
if (list.getWorkStartTime() != null && equRepairWorkOrder.getWorkEndTime() != null) {
|
|
|
|
|
////2.1计算维修日期差值
|
|
|
|
|
////2.1计算维修日期差值(开始时间为维修单创建时间)
|
|
|
|
|
ZoneId zoneId = ZoneId.systemDefault();
|
|
|
|
|
LocalDateTime workStart = LocalDateTime.ofInstant(list.getWorkStartTime().toInstant(), zoneId);
|
|
|
|
|
LocalDateTime workEnd = LocalDateTime.ofInstant(equRepairWorkOrder.getWorkEndTime().toInstant(), zoneId);
|
|
|
|
|
LocalDateTime workDateTime = LocalDateTime.from(workStart);
|
|
|
|
|
LocalDateTime workStart = LocalDateTime.parse(list.getCreateTime().toString());
|
|
|
|
|
LocalDateTime workEnd = LocalDateTime.parse(equRepairWorkOrder.getWorkEndTime().toString());
|
|
|
|
|
|
|
|
|
|
double workHours = workDateTime.until(workEnd, ChronoUnit.HOURS);
|
|
|
|
|
double workMinutes = ((workDateTime.until(workEnd, ChronoUnit.MINUTES) * 1.0) % 60) / 60;
|
|
|
|
|
double workSeconds = ((workDateTime.until(workEnd, ChronoUnit.SECONDS) * 1.0) % 3600) / 3600;
|
|
|
|
|
double workHour = BigDecimal.valueOf(workHours + workMinutes + workSeconds).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
|
// 核心计算方法
|
|
|
|
|
double workHour = calculateHourDifference(workStart, workEnd);
|
|
|
|
|
// LocalDateTime workStart = LocalDateTime.ofInstant(list.getCreateTime().toInstant(), zoneId);
|
|
|
|
|
// LocalDateTime workEnd = LocalDateTime.ofInstant(equRepairWorkOrder.getWorkEndTime().toInstant(), zoneId);
|
|
|
|
|
// LocalDateTime workDateTime = LocalDateTime.from(workStart);
|
|
|
|
|
//
|
|
|
|
|
// double workHours = workDateTime.until(workEnd, ChronoUnit.HOURS);
|
|
|
|
|
// double workMinutes = ((workDateTime.until(workEnd, ChronoUnit.MINUTES) * 1.0) % 60) / 60;
|
|
|
|
|
// double workSeconds = ((workDateTime.until(workEnd, ChronoUnit.SECONDS) * 1.0) % 3600) / 3600;
|
|
|
|
|
// double workHour = BigDecimal.valueOf(workHours + workMinutes + workSeconds).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
|
|
equRepairWorkOrder.setWorkCostTime(String.valueOf(workHour) + "小时"); //塞入维修用时
|
|
|
|
|
|
|
|
|
|
////2.2 计算故障停机时间差值
|
|
|
|
|
@ -1558,4 +1568,34 @@ public class DevicePDAServiceImpl implements IDevicePDAService {
|
|
|
|
|
List<EquRepairWorkOrder> list = equRepairWorkOrderMapper.selectEquRepairWorkOrderList(equRepairWorkOrder);
|
|
|
|
|
return success(list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@DS("#header.poolName")
|
|
|
|
|
public AjaxResult updateWorkCostTime() {
|
|
|
|
|
//查询
|
|
|
|
|
EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder();
|
|
|
|
|
// equRepairWorkOrder.setWorkCostTime("-");
|
|
|
|
|
List<EquRepairWorkOrder> list = equRepairWorkOrderMapper.selectEquRepairWorkOrderList(equRepairWorkOrder);
|
|
|
|
|
int i ;
|
|
|
|
|
int sum =0;
|
|
|
|
|
ZoneId zoneId = ZoneId.systemDefault();
|
|
|
|
|
for (EquRepairWorkOrder repairWorkOrder : list){
|
|
|
|
|
LocalDateTime workStart = LocalDateTime.ofInstant(repairWorkOrder.getCreateTime().toInstant(), zoneId);
|
|
|
|
|
LocalDateTime workEnd = LocalDateTime.ofInstant(repairWorkOrder.getWorkEndTime().toInstant(), zoneId);
|
|
|
|
|
// 核心计算方法
|
|
|
|
|
double workHour = calculateHourDifference(workStart, workEnd);
|
|
|
|
|
repairWorkOrder.setWorkCostTime(String.valueOf(workHour) + "小时"); //塞入维修用时
|
|
|
|
|
i=equRepairWorkOrderMapper.updateEquRepairWorkOrder(repairWorkOrder);
|
|
|
|
|
sum=sum+i;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return success("更新成功,共:"+sum+"条");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static double calculateHourDifference(LocalDateTime start, LocalDateTime end) {
|
|
|
|
|
Duration duration = Duration.between(start, end);
|
|
|
|
|
return BigDecimal.valueOf(duration.toMillis())
|
|
|
|
|
.divide(BigDecimal.valueOf(3600000), 2, RoundingMode.HALF_UP)
|
|
|
|
|
.doubleValue();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|