设备维修结束时间晚与开始时间验证,维修时间逻辑修正。

master
杨万里 3 months ago
parent efe80d28db
commit e6ce38c629

@ -88,6 +88,7 @@ public class DevicePDAController extends BaseController {
return devicePDAService.updateDowntime(equRepairWorkOrder);
}
//获取设备详细信息
@GetMapping(value = "/queryEquipment/{equipmentCode}")
public AjaxResult queryEquipment(@PathVariable("equipmentCode") String equipmentCode) {
@ -185,4 +186,8 @@ public class DevicePDAController extends BaseController {
public AjaxResult getWXList(EquRepairWorkOrder equRepairWorkOrder) {
return devicePDAService.getWXList(equRepairWorkOrder);
}
@PostMapping("updateWorkCostTime")
public AjaxResult updateWorkCostTime(){
return devicePDAService.updateWorkCostTime();
}
}

@ -147,6 +147,8 @@ public interface IDevicePDAService {
AjaxResult getWXList(EquRepairWorkOrder equRepairWorkOrder);
AjaxResult updateWorkCostTime();
//故障维修审核
// AjaxResult checkWX(UpKeepOrderDTO upKeepOrderDTO);
}

@ -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();
}
}

@ -57,6 +57,7 @@
<result property="sapCode" column="sap_code"/>
<result property="sapName" column="sap_name"/>
<result property="factoryWorkshop" column="factory_workshop"/>
<result property="dh" column="dh"/>
</resultMap>
<resultMap type="EquSpareEquipment" id="EquSpareEquipmentResult">
@ -153,7 +154,8 @@
unit_measurement,
sap_code,
sap_name,
factory_workshop
factory_workshop,
dh
from base_equipment
</sql>
@ -282,6 +284,7 @@
<if test="sapCode != null">sap_code,</if>
<if test="sapName != null">sap_name,</if>
<if test="factoryWorkshop != null">factory_workshop,</if>
<if test="dh != null">dh,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="equipmentCode != null and equipmentCode != ''">#{equipmentCode},</if>
@ -334,6 +337,7 @@
<if test="sapCode != null and sapCode != ''">#{sapCode},</if>
<if test="sapName != null and sapName != ''">#{sapName},</if>
<if test="factoryWorkshop != null and factoryWorkshop != ''">#{factoryWorkshop},</if>
<if test="dh != null and dh != ''">#{dh},</if>
</trim>
</insert>
@ -390,6 +394,7 @@
<if test="sapCode != null">sap_code = #{sapCode},</if>
<if test="sapName != null">sap_name = #{sapName},</if>
<if test="factoryWorkshop != null">factory_workshop = #{factoryWorkshop},</if>
<if test="dh != null">dh = #{dh},</if>
</trim>
where equipment_id = #{equipmentId}
</update>

Loading…
Cancel
Save