lipenghui 2 mesi fa
parent
commit
0e07a2f526

+ 8 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java

@@ -3,6 +3,8 @@ package cn.iocoder.yudao.framework.common.util.date;
 import cn.hutool.core.date.LocalDateTimeUtil;
 import com.google.common.collect.ImmutableMap;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.*;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -236,4 +238,10 @@ public class DateUtils {
         }
 
     }
+
+    public static BigDecimal calculateHoursDiff(LocalDateTime start, LocalDateTime end) {
+        Duration duration = Duration.between(start, end);
+        double hoursDiff = duration.toHours() + (duration.toMinutes() % 60) / 60.0;
+        return new BigDecimal(hoursDiff).setScale(1, RoundingMode.HALF_UP);
+    }
 }

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportRespVO.java

@@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.pms.controller.admin.failure.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
@@ -46,6 +48,13 @@ public class IotFailureReportRespVO {
     @ExcelProperty("故障时间")
     private LocalDateTime failureTime;
 
+    @Schema(description = "解决时间")
+    @ExcelProperty("解决时间")
+    private LocalDateTime dealTime;
+
+    @Schema(description = "处理小时")
+    private BigDecimal dealHour;
+
     @Schema(description = "故障影响")
     @ExcelProperty("故障影响")
     private String failureInfluence;

+ 2 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/failure/vo/IotFailureReportSaveReqVO.java

@@ -35,6 +35,8 @@ public class IotFailureReportSaveReqVO {
 
     @Schema(description = "故障时间")
     private LocalDateTime failureTime;
+    @Schema(description = "解决时间")
+    private LocalDateTime dealTime;
 
     @Schema(description = "故障影响")
     private String failureInfluence;

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/dataobject/failure/IotFailureReportDO.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.pms.dal.dataobject.failure;
 
 import lombok.*;
+
+import java.math.BigDecimal;
 import java.util.*;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
@@ -60,6 +62,8 @@ public class IotFailureReportDO extends BaseDO {
      * 故障时间
      */
     private LocalDateTime failureTime;
+    private LocalDateTime dealTime;
+    private BigDecimal dealHour;
     /**
      * 故障影响
      */

+ 2 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/iotopeationfill/IotOpeationFillMapper.java

@@ -57,6 +57,7 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     List<IotOpeationFillDO> fillList(IotOpeationFillPageReqVO vo);
     @TenantIgnore
     List<IotOpeationFillDO> fillListByUserId(IotOpeationFillRespVO vo);
+    @TenantIgnore
     List<IotOpeationFillDO> fillListByDeptId(IotOpeationFillRespVO vo);
     @TenantIgnore
     List<IotOpeationFillDO> rdList();
@@ -91,4 +92,4 @@ public interface IotOpeationFillMapper extends BaseMapperX<IotOpeationFillDO> {
     int updateFillOrder2(IotDeviceRunLogDO vo);
     @TenantIgnore
     List<IotOpeationFillOrderDO> fillRecords(IotOpeationFillPageReqVO vo);
-}
+}

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/failure/IotFailureReportServiceImpl.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.pms.service.failure;
 import cn.hutool.core.date.DateUtil;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
@@ -33,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 
@@ -116,6 +118,10 @@ public class IotFailureReportServiceImpl implements IotFailureReportService {
         iotFailureReport.setDeleted(false);
         if (iotFailureReport.getIfDeal()) {
             iotFailureReport.setStatus("finished");
+            if (Objects.nonNull(iotFailureReport.getDealTime())) {
+                BigDecimal v = DateUtils.calculateHoursDiff(iotFailureReport.getFailureTime(), iotFailureReport.getDealTime());
+                iotFailureReport.setDealHour(v);
+            }
             iotFailureReportMapper.insert(iotFailureReport);
             sendMessage(iotFailureReport);
         } else {