From e6ce38c62958e0a9974a2565856bf12702730f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=87=E9=87=8C?= <1726150332@qq.com> Date: Wed, 17 Sep 2025 16:28:00 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E6=99=9A=E4=B8=8E=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E6=97=B6=E9=97=B4=E9=AA=8C=E8=AF=81=EF=BC=8C=E7=BB=B4?= =?UTF-8?q?=E4=BF=AE=E6=97=B6=E9=97=B4=E9=80=BB=E8=BE=91=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DevicePDAController.java | 5 ++ .../op/device/service/IDevicePDAService.java | 2 + .../service/impl/DevicePDAServiceImpl.java | 56 ++++++++++++++++--- .../mapper/wms/BaseEquipmentMapper.xml | 7 ++- 4 files changed, 61 insertions(+), 9 deletions(-) diff --git a/op-modules/op-device/src/main/java/com/op/device/controller/DevicePDAController.java b/op-modules/op-device/src/main/java/com/op/device/controller/DevicePDAController.java index 7fe4e7522..8a3021139 100644 --- a/op-modules/op-device/src/main/java/com/op/device/controller/DevicePDAController.java +++ b/op-modules/op-device/src/main/java/com/op/device/controller/DevicePDAController.java @@ -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(); + } } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/IDevicePDAService.java b/op-modules/op-device/src/main/java/com/op/device/service/IDevicePDAService.java index 0b9264d5d..8c47413d4 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/IDevicePDAService.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/IDevicePDAService.java @@ -147,6 +147,8 @@ public interface IDevicePDAService { AjaxResult getWXList(EquRepairWorkOrder equRepairWorkOrder); + AjaxResult updateWorkCostTime(); + //故障维修审核 // AjaxResult checkWX(UpKeepOrderDTO upKeepOrderDTO); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java index fb1dc10cf..ea1c90909 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java @@ -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 list = equRepairWorkOrderMapper.selectEquRepairWorkOrderList(equRepairWorkOrder); return success(list); } + + @Override + @DS("#header.poolName") + public AjaxResult updateWorkCostTime() { + //查询 + EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder(); + equRepairWorkOrder.setWorkCostTime("-"); + List 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(); + } } diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/BaseEquipmentMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/BaseEquipmentMapper.xml index bd4f7f9e3..7aff77836 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/BaseEquipmentMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/BaseEquipmentMapper.xml @@ -57,6 +57,7 @@ + @@ -153,7 +154,8 @@ unit_measurement, sap_code, sap_name, - factory_workshop + factory_workshop, + dh from base_equipment @@ -282,6 +284,7 @@ sap_code, sap_name, factory_workshop, + dh, #{equipmentCode}, @@ -334,6 +337,7 @@ #{sapCode}, #{sapName}, #{factoryWorkshop}, + #{dh}, @@ -390,6 +394,7 @@ sap_code = #{sapCode}, sap_name = #{sapName}, factory_workshop = #{factoryWorkshop}, + dh = #{dh}, where equipment_id = #{equipmentId} From 2e115e40718ae24c0b2c5f23ec4bfc4c447c3c08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=87=E9=87=8C?= <1726150332@qq.com> Date: Wed, 17 Sep 2025 16:41:39 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=BB=B4=E4=BF=AE?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4=E6=99=9A=E4=B8=8E=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E6=97=B6=E9=97=B4=E9=AA=8C=E8=AF=81=EF=BC=8C=E7=BB=B4?= =?UTF-8?q?=E4=BF=AE=E6=97=B6=E9=97=B4=E9=80=BB=E8=BE=91=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/op/device/domain/EquRepairWorkOrder.java | 1 + .../java/com/op/device/service/impl/DevicePDAServiceImpl.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/op-modules/op-device/src/main/java/com/op/device/domain/EquRepairWorkOrder.java b/op-modules/op-device/src/main/java/com/op/device/domain/EquRepairWorkOrder.java index aaa69884d..606faf0f2 100644 --- a/op-modules/op-device/src/main/java/com/op/device/domain/EquRepairWorkOrder.java +++ b/op-modules/op-device/src/main/java/com/op/device/domain/EquRepairWorkOrder.java @@ -51,6 +51,7 @@ public class EquRepairWorkOrder extends BaseEntity { private String workFaultDesc; private String orderDesc;//故障描述 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "报修时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") private Date createTime;//报修时间 diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java index ea1c90909..12ddffb0a 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java @@ -1574,7 +1574,7 @@ public class DevicePDAServiceImpl implements IDevicePDAService { public AjaxResult updateWorkCostTime() { //查询 EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder(); - equRepairWorkOrder.setWorkCostTime("-"); +// equRepairWorkOrder.setWorkCostTime("-"); List list = equRepairWorkOrderMapper.selectEquRepairWorkOrderList(equRepairWorkOrder); int i ; int sum =0;