A17404李放 пре 3 година
родитељ
комит
5229129ad3

+ 0 - 9
nb-system/src/main/java/com/nb/bus/controller/BusStatsAnalyseController.java

@@ -73,24 +73,15 @@ public class BusStatsAnalyseController {
         CommonStats commonStats=statsMap.get(analyseEnum);
 
         List<Date> startTimRange=CollectionUtil.isEmpty(query.getStartTimeRange())?query.getClinicStartTimeRange():query.getStartTimeRange();
-        long t0 = System.currentTimeMillis();
         List queryResult = commonStats.queryResult(query);
         //提示分析时,根据所选设备类型 进行分析判定
-        long startTime = System.currentTimeMillis();
-        System.out.println("查询 = " + (startTime - t0));
         StatsAnalyseResult result = new StatsAnalyseResult();
         ThreadUtil.set(query.getDeviceType());
 
 
         result.setPie(commonStats.handlePie(queryResult));
-        long t1 = System.currentTimeMillis();
-        System.out.println("饼图耗时 = " + (t1 - startTime));
         result.setLine(commonStats.handleLine(queryResult, query.getTimeUnit(),startTimRange.get(0),startTimRange.get(1)));
-        long t2 = System.currentTimeMillis();
-        System.out.println("线段图耗时 = " + (t2 - t1));
         result.setTable( commonStats.handleTable(queryResult,query.getTimeUnit(),startTimRange.get(0),startTimRange.get(1)));
-        long t3 = System.currentTimeMillis();
-        System.out.println("图表耗时 = " + (t3- t2));
         ThreadUtil.remove();
         return R.success(result);
 

+ 0 - 1
nb-system/src/main/java/com/nb/bus/stats/CommonStats.java

@@ -119,7 +119,6 @@ public interface CommonStats<T extends CombineResult> {
                     for (String timeFormat : timeFormats) {
                         result.computeIfAbsent(timeFormat,k->new ArrayList<>()).add(combineResult);
                     }
-//            combineResult.setTimeParseResult(timeFormat);
                 });
         return result;
     }

+ 10 - 9
nb-system/src/main/java/com/nb/bus/stats/analyse/AlarmStatsAnalyse.java

@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /**
@@ -218,11 +219,13 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
     @Override
     public  List<TableResult> handleTable(List<CombineAlarmResult> sources, StatsTimeUnit unit,Date minTime,Date maxTime) {
         TableResult result = new TableResult();
-        //根据时间对结果进行区分统计
-        Map<String, List<CombineAlarmResult>> groupByTimeResults = groupByTime(sources, unit,minTime,maxTime,
-                t->true,
-                CombineAlarmResult::getUpdateTime,
-                t->CollectionUtil.newHashSet(unit.parse(t.getUpdateTime())));
+        //统计所有输注总数
+        Map<String, List<CombineAlarmResult>> groupByInfusionTimeResults = groupByInfusionTime(sources, unit,minTime,maxTime);
+        //统计报警总数
+        Map<String, List<CombineAlarmResult>> groupByAlarmTimeResults = groupByTime(sources, unit,minTime,maxTime,
+                t->ObjectUtil.isNotNull(t.getAlarmTime()),
+                CombineAlarmResult::getAlarmTime,
+                t->CollectionUtil.newHashSet(unit.parse(t.getAlarmTime())));
         List<String> columnNames = Arrays.asList(
                 DeviceAlarmEnum.Jam.getText(),
                 DeviceAlarmEnum.Limit.getText(),
@@ -256,14 +259,12 @@ public class AlarmStatsAnalyse implements CommonStats<CombineAlarmResult> {
         //根据时间区间对镇痛方式进行统计
         Map<String, AlarmTotalPieResult> groupByTimeCountResult = new LinkedHashMap<>();
         //根据时间区间对镇痛方式进行统计
-        groupByTimeResults.forEach((timeRange,combineResults)->{
+        groupByAlarmTimeResults.forEach((timeRange,combineResults)->{
             AlarmTotalPieResult alarmTotalPieResult = groupByTimeCountResult.computeIfAbsent(timeRange, k -> new AlarmTotalPieResult(addIntelligentParam()));
-            Set<String> totalInfusion=new HashSet<>();
             combineResults.stream()
                     .filter(r->ObjectUtil.isNotNull(r.getAlarmTime()))
-                    .peek(r->totalInfusion.add(r.getId()))
                     .forEach(alarmTotalPieResult::handle);
-            alarmTotalPieResult.setInfusionCount(CollectionUtil.size(totalInfusion));
+            alarmTotalPieResult.setInfusionCount(CollectionUtil.size(groupByInfusionTimeResults.get(timeRange)));
         });
         groupByTimeCountResult.forEach((timeRange,totalResult)->{
             //表格内容

+ 3 - 2
nb-system/src/main/resources/mapper/bus/BusInfusionHistoryMapper.xml

@@ -74,6 +74,7 @@
     <resultMap id="combineAlarmResult" type="com.nb.bus.service.dto.CombineAlarmResult">
         <result column="device_type" property="type"/>
         <result column="alarm_time" property="alarmTime"/>
+        <result column="last_upload_time" property="lastUploadTime"/>
         <result column="infusion_id" property="id"/>
         <result column="infusion_start_time" property="infusionStartTime"/>
         <result column="cause" property="cause"/>
@@ -252,6 +253,7 @@
         i.type as device_type,
         i.id as infusion_id,
         i.start_time as infusion_start_time,
+        i.last_upload_time as last_upload_time,
         a.cause as cause,
         i.patient_code as patient_code,
         a.upload_time as alarm_time,
@@ -361,7 +363,6 @@
 
     <select id="queryStatsHistory" resultMap="queryStatsHistory">
         SELECT i.id AS infusion_id,
-        p.id AS patient_id,
         c.id as clinic_id,
         MAX(h.total_append_dose) AS total_append_dose,
         MAX(h.input_dose) AS input_dose,
@@ -391,7 +392,7 @@
         </where>
         ) as p on p.id = c.patient_id
         join (select * from bus_device_history) as h on h.infusion_id=i.id
-        group by i.id,p.id,DATE_FORMAT(h.upload_time,'%Y-%m-%d')
+        group by i.id,c.id,DATE_FORMAT(h.upload_time,'%Y-%m-%d')
     </select>