|
@@ -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)) {
|