Kaynağa Gözat

解决开机率

wukai 7 ay önce
ebeveyn
işleme
48ffc23e89

+ 2 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/domain/IndexDevice.java

@@ -29,5 +29,7 @@ public class IndexDevice {
     private int alarm;
     @ApiModelProperty("盘头小于200圈数量")
     private int stopPan;
+    @ApiModelProperty("开机率")
+    private Double runningRatio;
 
 }

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/domain/TwinCalcDay.java

@@ -268,6 +268,9 @@ public class TwinCalcDay extends BaseEntity {
     @ApiModelProperty("更新时间")
     private Date updatedTime;
 
+    @ApiModelProperty("开机率")
+    private Double runningRatio;
+
     /**
      * 从calc2hr转换为当前对象
      *

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/ApiServiceImpl.java

@@ -92,6 +92,9 @@ public class ApiServiceImpl implements IApiService {
             weekDataList.add(weekData);
         }
         indexData.setWeekData(weekDataList);
+        IndexDevice device = new IndexDevice();
+        device.setRunningRatio(calcDay.getRunningRatio());
+        indexData.setDevice(device);
         CacheUtils.put(Constants.IOT_TOKEN, Constants.INDEX_CALC, indexData);
     }
 

+ 15 - 2
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TwinCalcDayServiceImpl.java

@@ -4,7 +4,6 @@ import com.ruoyi.biz.domain.*;
 import com.ruoyi.biz.mapper.TwinCalcDayMapper;
 import com.ruoyi.biz.service.*;
 import com.ruoyi.biz.tools.Tools;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.utils.DateUtils;
 import javafx.util.Pair;
@@ -295,6 +294,10 @@ public class TwinCalcDayServiceImpl implements ITwinCalcDayService {
         Date sTime = pair.getKey();
         Date eTime = pair.getValue();
         List<TwinCalcHour> hourList = hourService.selectTwinCalcHourListByDate(sTime, eTime);
+
+        // 按照deviceId、density、mick、team,并统计每组的length总和
+        //按照deviceId分组统计
+        Map<Long, BigDecimal> resultMap = hourList.stream().collect(Collectors.groupingBy(TwinCalcHour::getDeviceId, Collectors.reducing(BigDecimal.ZERO, TwinCalcHour::getLength, BigDecimal::add)));
         TwinCalcDay calcDay = new TwinCalcDay(sTime);
         if (hourList.size() > 0) {
             calcDay.calcHours(hourList);
@@ -335,8 +338,18 @@ public class TwinCalcDayServiceImpl implements ITwinCalcDayService {
         }
         if (hours.size() > 0) {
             calcDay.calcHours(hours);
+            int num = 0;
+            for (TwinCalcHour hour : hours) {
+                BigDecimal v = resultMap.get(hour.getDeviceId());
+                v.add(hour.getLength());
+                if (v.doubleValue() > 0d) {
+                    num++;
+                }
+            }
+            int deviceNum = list.size();
+            BigDecimal ratio = BigDecimal.valueOf(num).divide(BigDecimal.valueOf(deviceNum), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
+            calcDay.setRunningRatio(ratio.doubleValue());
         }
-
         BigDecimal totalTimeA = calcDay.getOpenTimeA().add(calcDay.getCloseTimeA());
         BigDecimal totalTimeB = calcDay.getOpenTimeB().add(calcDay.getCloseTimeB());
         if (!totalTimeA.equals(BigDecimal.ZERO)) {

+ 0 - 2
ruoyi-admin/src/main/java/com/ruoyi/biz/task/TwinTask.java

@@ -29,8 +29,6 @@ public class TwinTask {
     private JdbcTemplate jdbcTemplate;
     @Resource
     private ITwinEmpCalcService empCalcService;
-    @Resource
-    private ITwinEmpService empService;
 
     /**
      * 计算上一个小时数据