|
|
@@ -2,16 +2,14 @@ package com.nb.bus.stats.analyse;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.text.CharSequenceUtil;
|
|
|
-import com.nb.bus.enums.DeviceAlarmEnum;
|
|
|
-import com.nb.bus.enums.FlowStatusEnum;
|
|
|
-import com.nb.bus.enums.StatsAnalyseEnum;
|
|
|
-import com.nb.bus.enums.StatsTimeUnit;
|
|
|
+import com.nb.bus.enums.*;
|
|
|
import com.nb.bus.service.LocalBusInfusionHistoryService;
|
|
|
import com.nb.bus.service.dto.CombineAlarmResult;
|
|
|
import com.nb.bus.service.dto.CombineQuery;
|
|
|
import com.nb.bus.stats.CommonStats;
|
|
|
import com.nb.bus.stats.entity.*;
|
|
|
import com.nb.bus.stats.enums.PieEnum;
|
|
|
+import com.nb.bus.utils.ThreadUtil;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.Data;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -80,8 +78,8 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
groupByTime.forEach((timeRange,combineResults)->{
|
|
|
for (CombineAlarmResult combineResult : combineResults) {
|
|
|
alarmScatter.handle(combineResult,timeRange);
|
|
|
-
|
|
|
}
|
|
|
+ alarmScatter.fillAllAlarm(timeRange,addIntelligentParam());
|
|
|
});
|
|
|
result.getTime().addAll(alarmScatter.keySet());
|
|
|
//均值、方差
|
|
|
@@ -118,7 +116,7 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
Map<String, AlarmTotalPieResult> groupByTime = new HashMap<>();
|
|
|
//根据时间区间对镇痛方式进行统计
|
|
|
results.forEach((timeRange,combineResults)->{
|
|
|
- AlarmTotalPieResult alarmTotalPieResult = groupByTime.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult());
|
|
|
+ AlarmTotalPieResult alarmTotalPieResult = groupByTime.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult(addIntelligentParam()));
|
|
|
combineResults.forEach(alarmTotalPieResult::handle);
|
|
|
time.add(timeRange);
|
|
|
});
|
|
|
@@ -148,16 +146,18 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
.add(computeRatio(BigDecimal.valueOf(totalResult.getInfusionMax().getValue()),total));
|
|
|
|
|
|
//智能泵专属
|
|
|
- lineContentMap.computeIfAbsent("加档率",k->new LineResult.LineContent<>(FlowStatusEnum.Up.getText())).getValue()
|
|
|
- .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowUp().getValue()),total));
|
|
|
- lineContentMap.computeIfAbsent("减档率",k->new LineResult.LineContent<>(FlowStatusEnum.Down.getText())).getValue()
|
|
|
- .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowDown().getValue()),total));
|
|
|
- lineContentMap.computeIfAbsent("流速已达上限率",k->new LineResult.LineContent<>(FlowStatusEnum.MaxFlow.getText())).getValue()
|
|
|
- .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowMax().getValue()),total));
|
|
|
- lineContentMap.computeIfAbsent("加档受限率",k->new LineResult.LineContent<>(FlowStatusEnum.Limited.getText())).getValue()
|
|
|
- .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowLimited().getValue()),total));
|
|
|
- lineContentMap.computeIfAbsent("低输注率",k->new LineResult.LineContent<>(FlowStatusEnum.Lowest.getText())).getValue()
|
|
|
- .add(computeRatio(BigDecimal.valueOf(totalResult.getLowInfusion().getValue()),total));
|
|
|
+ if(addIntelligentParam()){
|
|
|
+ lineContentMap.computeIfAbsent("加档率",k->new LineResult.LineContent<>(FlowStatusEnum.Up.getText())).getValue()
|
|
|
+ .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowUp().getValue()),total));
|
|
|
+ lineContentMap.computeIfAbsent("减档率",k->new LineResult.LineContent<>(FlowStatusEnum.Down.getText())).getValue()
|
|
|
+ .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowDown().getValue()),total));
|
|
|
+ lineContentMap.computeIfAbsent("流速已达上限率",k->new LineResult.LineContent<>(FlowStatusEnum.MaxFlow.getText())).getValue()
|
|
|
+ .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowMax().getValue()),total));
|
|
|
+ lineContentMap.computeIfAbsent("加档受限率",k->new LineResult.LineContent<>(FlowStatusEnum.Limited.getText())).getValue()
|
|
|
+ .add(computeRatio(BigDecimal.valueOf(totalResult.getFlowLimited().getValue()),total));
|
|
|
+ lineContentMap.computeIfAbsent("低输注率",k->new LineResult.LineContent<>(FlowStatusEnum.Lowest.getText())).getValue()
|
|
|
+ .add(computeRatio(BigDecimal.valueOf(totalResult.getLowInfusion().getValue()),total));
|
|
|
+ }
|
|
|
});
|
|
|
result.setContent(new ArrayList<>(lineContentMap.values()));
|
|
|
return result;
|
|
|
@@ -176,7 +176,7 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
Map<String, AlarmTotalPieResult> groupByTime = new HashMap<>();
|
|
|
//根据时间区间对镇痛方式进行统计
|
|
|
results.forEach((timeRange,combineResults)->{
|
|
|
- AlarmTotalPieResult alarmTotalPieResult = groupByTime.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult());
|
|
|
+ AlarmTotalPieResult alarmTotalPieResult = groupByTime.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult(addIntelligentParam()));
|
|
|
combineResults.forEach(alarmTotalPieResult::handle);
|
|
|
time.add(timeRange);
|
|
|
});
|
|
|
@@ -194,12 +194,15 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
lineContentMap.computeIfAbsent(DeviceAlarmEnum.Bubble.getText(),k->new LineResult.LineContent<>(DeviceAlarmEnum.Bubble.getText())).getValue().add(totalResult.getBubble().getValue());
|
|
|
lineContentMap.computeIfAbsent(DeviceAlarmEnum.InfusionMax.getText(),k->new LineResult.LineContent<>(DeviceAlarmEnum.InfusionMax.getText())).getValue().add(totalResult.getLowInfusion().getValue());
|
|
|
|
|
|
- //智能泵专属
|
|
|
- lineContentMap.computeIfAbsent(FlowStatusEnum.Up.getText(), k->new LineResult.LineContent<>(FlowStatusEnum.Up.getText())).getValue().add(totalResult.getFlowUp().getValue());
|
|
|
- lineContentMap.computeIfAbsent(FlowStatusEnum.Down.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Down.getText())).getValue().add(totalResult.getFlowDown().getValue());
|
|
|
- lineContentMap.computeIfAbsent(FlowStatusEnum.MaxFlow.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.MaxFlow.getText())).getValue().add(totalResult.getFlowMax().getValue());
|
|
|
- lineContentMap.computeIfAbsent(FlowStatusEnum.Limited.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Limited.getText())).getValue().add(totalResult.getFlowLimited().getValue());
|
|
|
- lineContentMap.computeIfAbsent(FlowStatusEnum.Lowest.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Lowest.getText())).getValue().add(totalResult.getLowInfusion().getValue());
|
|
|
+ if(addIntelligentParam()){
|
|
|
+ //智能泵专属
|
|
|
+ lineContentMap.computeIfAbsent(FlowStatusEnum.Up.getText(), k->new LineResult.LineContent<>(FlowStatusEnum.Up.getText())).getValue().add(totalResult.getFlowUp().getValue());
|
|
|
+ lineContentMap.computeIfAbsent(FlowStatusEnum.Down.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Down.getText())).getValue().add(totalResult.getFlowDown().getValue());
|
|
|
+ lineContentMap.computeIfAbsent(FlowStatusEnum.MaxFlow.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.MaxFlow.getText())).getValue().add(totalResult.getFlowMax().getValue());
|
|
|
+ lineContentMap.computeIfAbsent(FlowStatusEnum.Limited.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Limited.getText())).getValue().add(totalResult.getFlowLimited().getValue());
|
|
|
+ lineContentMap.computeIfAbsent(FlowStatusEnum.Lowest.getText(),k->new LineResult.LineContent<>(FlowStatusEnum.Lowest.getText())).getValue().add(totalResult.getLowInfusion().getValue());
|
|
|
+ }
|
|
|
+
|
|
|
});
|
|
|
result.setContent(new ArrayList<>(lineContentMap.values()));
|
|
|
result.setSampleCount(CollUtil.size(results));
|
|
|
@@ -224,14 +227,17 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
"低电量",
|
|
|
DeviceAlarmEnum.Bubble.getText(),
|
|
|
DeviceAlarmEnum.InfusionMax.getText());
|
|
|
- //智能泵专属
|
|
|
- columnNames=CollUtil.unionAll(columnNames,Arrays.asList(
|
|
|
- FlowStatusEnum.Up.getText(),
|
|
|
- FlowStatusEnum.Down.getText(),
|
|
|
- FlowStatusEnum.MaxFlow.getText(),
|
|
|
- FlowStatusEnum.Limited.getText(),
|
|
|
- FlowStatusEnum.Lowest.getText()
|
|
|
- ));
|
|
|
+ if(addIntelligentParam()){
|
|
|
+ //智能泵专属
|
|
|
+ columnNames=CollUtil.unionAll(columnNames,Arrays.asList(
|
|
|
+ FlowStatusEnum.Up.getText(),
|
|
|
+ FlowStatusEnum.Down.getText(),
|
|
|
+ FlowStatusEnum.MaxFlow.getText(),
|
|
|
+ FlowStatusEnum.Limited.getText(),
|
|
|
+ FlowStatusEnum.Lowest.getText()
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
//顺序不可错! 先数量后比率
|
|
|
List<StatsColumn> allColumn = getAllColumn(columnNames);
|
|
|
|
|
|
@@ -244,7 +250,7 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
Map<String, AlarmTotalPieResult> groupByTimeCountResult = new HashMap<>();
|
|
|
//根据时间区间对镇痛方式进行统计
|
|
|
groupByTimeResults.forEach((timeRange,combineResults)->{
|
|
|
- AlarmTotalPieResult alarmTotalPieResult = groupByTimeCountResult.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult());
|
|
|
+ AlarmTotalPieResult alarmTotalPieResult = groupByTimeCountResult.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult(addIntelligentParam()));
|
|
|
combineResults.forEach(alarmTotalPieResult::handle);
|
|
|
alarmTotalPieResult.setInfusionCount(combineResults.stream().map(CombineAlarmResult::getId).distinct().count());
|
|
|
});
|
|
|
@@ -278,18 +284,19 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
contentValues.put(DeviceAlarmEnum.InfusionMax.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getInfusionMax().getValue()),total));
|
|
|
|
|
|
//智能泵专属
|
|
|
- contentValues.put( FlowStatusEnum.Up.getText(),totalResult.getFlowUp().getValue());
|
|
|
- contentValues.put( FlowStatusEnum.Down.getText(),totalResult.getFlowDown().getValue());
|
|
|
- contentValues.put(FlowStatusEnum.Limited.getText(),totalResult.getFlowLimited().getValue());
|
|
|
- contentValues.put(FlowStatusEnum.MaxFlow.getText(),totalResult.getFlowMax().getValue());
|
|
|
- contentValues.put(FlowStatusEnum.Lowest.getText(),totalResult.getLowInfusion().getValue());
|
|
|
-
|
|
|
- contentValues.put( FlowStatusEnum.Up.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowUp().getValue()),total));
|
|
|
- contentValues.put( FlowStatusEnum.Down.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowDown().getValue()),total));
|
|
|
- contentValues.put(FlowStatusEnum.Limited.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowLimited().getValue()),total));
|
|
|
- contentValues.put(FlowStatusEnum.MaxFlow.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowMax().getValue()),total));
|
|
|
- contentValues.put(FlowStatusEnum.Lowest.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getLowInfusion().getValue()),total));
|
|
|
+ if(addIntelligentParam()){
|
|
|
+ contentValues.put( FlowStatusEnum.Up.getText(),totalResult.getFlowUp().getValue());
|
|
|
+ contentValues.put( FlowStatusEnum.Down.getText(),totalResult.getFlowDown().getValue());
|
|
|
+ contentValues.put(FlowStatusEnum.Limited.getText(),totalResult.getFlowLimited().getValue());
|
|
|
+ contentValues.put(FlowStatusEnum.MaxFlow.getText(),totalResult.getFlowMax().getValue());
|
|
|
+ contentValues.put(FlowStatusEnum.Lowest.getText(),totalResult.getLowInfusion().getValue());
|
|
|
|
|
|
+ contentValues.put( FlowStatusEnum.Up.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowUp().getValue()),total));
|
|
|
+ contentValues.put( FlowStatusEnum.Down.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowDown().getValue()),total));
|
|
|
+ contentValues.put(FlowStatusEnum.Limited.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowLimited().getValue()),total));
|
|
|
+ contentValues.put(FlowStatusEnum.MaxFlow.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getFlowMax().getValue()),total));
|
|
|
+ contentValues.put(FlowStatusEnum.Lowest.getText()+"比率",computeRatio(BigDecimal.valueOf(totalResult.getLowInfusion().getValue()),total));
|
|
|
+ }
|
|
|
|
|
|
contents.add(contentValues);
|
|
|
});
|
|
|
@@ -317,7 +324,7 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
*/
|
|
|
private PieResult totalPie(List<CombineAlarmResult> results){
|
|
|
PieResult result = PieResult.of(PieEnum.total.name(),PieEnum.total.getText());
|
|
|
- AlarmTotalPieResult alarmTotalPieResult = new AlarmTotalPieResult();
|
|
|
+ AlarmTotalPieResult alarmTotalPieResult = new AlarmTotalPieResult(addIntelligentParam());
|
|
|
results.forEach(alarmTotalPieResult::handle);
|
|
|
result.setContent(new ArrayList<>(alarmTotalPieResult.values()));
|
|
|
return result;
|
|
|
@@ -340,14 +347,13 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
*/
|
|
|
private List<PieResult> alarmAnalysePie(List<CombineAlarmResult> results){
|
|
|
Map<DeviceAlarmEnum, PieResult> resultMap = new EnumMap<>(DeviceAlarmEnum.class);
|
|
|
- resultMap.put(DeviceAlarmEnum.Jam,PieResult.of("jam","堵塞报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.Limit,PieResult.of("limit","极限报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.NotBox,PieResult.of("noBox","未装药盒报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.OutOfControl,PieResult.of("outOfControl","电机失控报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.Machine,PieResult.of("machine","机械故障报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.LowBattery,PieResult.of("lowBattery","电量耗尽报警原因分析饼图"));
|
|
|
- resultMap.put(DeviceAlarmEnum.Bubble,PieResult.of("bubble","气泡无液报警原因分析饼图"));
|
|
|
-// resultMap.put(DeviceAlarmEnum.InfusionMax,PieResult.of("infusionMax","返厂维护报警原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.Jam,PieResult.of("jam",DeviceAlarmEnum.Jam.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.Limit,PieResult.of("limit",DeviceAlarmEnum.Limit.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.NotBox,PieResult.of("noBox",DeviceAlarmEnum.NotBox.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.OutOfControl,PieResult.of("outOfControl",DeviceAlarmEnum.OutOfControl.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.Machine,PieResult.of("machine",DeviceAlarmEnum.Machine.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.LowBattery,PieResult.of("lowBattery",DeviceAlarmEnum.LowBattery.getText()+"原因分析饼图"));
|
|
|
+ resultMap.put(DeviceAlarmEnum.Bubble,PieResult.of("bubble",DeviceAlarmEnum.Bubble.getText()+"原因分析饼图"));
|
|
|
//按照报警类型分类
|
|
|
Map<DeviceAlarmEnum, List<CombineAlarmResult>> alarmMap = results.stream()
|
|
|
.peek(r->{
|
|
|
@@ -368,4 +374,20 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
|
|
|
});
|
|
|
return new ArrayList<>(resultMap.values());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 描述:是否添加智能泵的提示参数 当查询设备类型为空或是智能泵时添加
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/7/15 10:28
|
|
|
+ * @param
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public boolean addIntelligentParam(){
|
|
|
+ Object deviceType = ThreadUtil.getSingleThreadLocal().get();
|
|
|
+ if(deviceType==null|| DeviceTypeEnum.intelligent.getValue().equals(deviceType)){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|