fengxiang
2018-05-07 052fd7444c1c2852fd9fd07876438c2ed9a5b45a
Merge remote-tracking branch 'origin/master'
5 files modified
71 ■■■■■ changed files
src/main/java/com/moral/controller/ReportController.java 12 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/AlarmDailyMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/AlarmDailyService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java 38 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/AlarmDailyMapper.xml 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ReportController.java
@@ -82,9 +82,17 @@
    @GetMapping("alarm-year")
    public ResultBean<List<Integer>> getAlarmDataByYear(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<Integer> alarmDataByYear = alarmDailyService.getAlarmDataByYear(parameters);
        List<Integer> result = alarmDailyService.getAlarmDataByYear(parameters);
        
        return new ResultBean<List<Integer>>(alarmDataByYear);
        return new ResultBean<List<Integer>>(result);
    }
    @GetMapping("alarm-month")
    public ResultBean<List<Map<String, Object>>> getAlarmDataByMonth(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = getParametersStartingWith(request, null);
        List<Map<String, Object>> result = alarmDailyService.getAlarmDataByMonth(parameters);
        return new ResultBean<List<Map<String, Object>>>(result);
    }
}
src/main/java/com/moral/mapper/AlarmDailyMapper.java
@@ -12,4 +12,6 @@
    List<Map<String, Object>> getAlarmDataByYear(Map<String, Object> parameters);
    Map<String, Object> getAlarmDataByMonth(Map<String, Object> parameters);
}
src/main/java/com/moral/service/AlarmDailyService.java
@@ -10,4 +10,6 @@
    List<Integer> getAlarmDataByYear(Map<String, Object> parameters);
    List<Map<String, Object>> getAlarmDataByMonth(Map<String, Object> parameters);
}
src/main/java/com/moral/service/impl/AlarmDailyServiceImpl.java
@@ -5,10 +5,13 @@
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@@ -16,6 +19,7 @@
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import com.moral.entity.Sensor;
import com.moral.mapper.AlarmDailyMapper;
import com.moral.mapper.SensorMapper;
import com.moral.service.AlarmDailyService;
@@ -119,4 +123,38 @@
        return Arrays.asList(result);
    }
    @Override
    public List<Map<String, Object>> getAlarmDataByMonth(Map<String, Object> parameters) {
        LocalDate localDate = LocalDate.now();
        List<Sensor> sensors = sensorMapper.selectAll();
        parameters.put("start", localDate.with(TemporalAdjusters.firstDayOfMonth()));
        parameters.put("end", localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
        parameters.put("sensors", sensors);
        Map<String, Object> map = alarmDailyMapper.getAlarmDataByMonth(parameters);
        List<Entry<String, Object>> list = new ArrayList<Entry<String,Object>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
            @Override
            public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
                if (o2.getValue().equals(o1.getValue())) {
                    return Integer.compare(Integer.valueOf(o1.getKey().replace("e", "")),Integer.valueOf(o2.getKey().replace("e", "")));
                }
                return Integer.valueOf(o2.getValue().toString()).compareTo(Integer.valueOf(o1.getValue().toString()));
            }
        });
        List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>();
        for (Entry<String, Object> entry : list) {
            for (Sensor sensor : sensors) {
                if (!entry.getValue().toString().equals("0") && entry.getKey().equals(sensor.getSensorKey())) {
                    Map<String, Object> map2 = new HashMap<String, Object>();
                    map2.put(sensor.getName(), entry.getValue());
                    resultList.add(map2);
                    sensors.remove(sensor);
                    break;
                }
            }
        }
        return resultList;
    }
}
src/main/resources/mapper/AlarmDailyMapper.xml
@@ -80,7 +80,7 @@
        SELECT
            DATE_FORMAT(h.time, '%Y-%m') AS 'time'
            <foreach collection="sensorKeys" open="," separator="+" close=" AS 'sum' " item="sensorKey">
                COUNT(json -> '$.${sensorKey}')
                COUNT(json -> '$.${sensorKey}')
            </foreach>
        FROM
            alarm_daily h
@@ -93,5 +93,20 @@
        GROUP BY
            DATE_FORMAT(h.time, '%Y-%m')            
    </select>
    <select id="getAlarmDataByMonth" resultType="java.util.Map">
        SELECT
            <foreach collection="sensors" separator="," item="sensor">
                COUNT(json -> '$.${sensor.sensorKey}') AS '${sensor.sensorKey}'
            </foreach>
        FROM
            alarm_daily h
        WHERE
            h.time >= #{start}
            AND h.time <![CDATA[<]]> #{end}
            <if test="state != null">
            AND h.state = #{state}
            </if>
    </select>
    
</mapper>