xufenglei
2018-07-02 62520477e6ac5fc8ccce28fdb69ec26246a4a37b
优化 大屏数据排名接口
3 files modified
43 ■■■■ changed files
src/main/java/com/moral/mapper/HistoryMapper.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/HistoryServiceImpl.java 28 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/HistoryMapper.xml 13 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/HistoryMapper.java
@@ -12,7 +12,7 @@
    List<Map<String, Object>> getRegionRankingData(Map<String, Object> parameters);
    List<Map<String, Object>> selectNextLevelRegion(Map<String, Object> parameters);
    List<String> selectNextLevelRegion(Map<String, Object> parameters);
    List<Map<String, Object>> getDischargeByRegion(Map<String, Object> parameters);
src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -16,6 +16,7 @@
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Profession;
@@ -161,6 +162,9 @@
                for (Profession profession : professions) {
                    if (map.get("name").equals(profession.getName())) {
                        professions.remove(profession);
                        if (ObjectUtils.isEmpty(map.get("avg"))) {
                            map.put("avg", 0);
                        }
                        break;
                    }
                }
@@ -172,25 +176,19 @@
                result.add(map);
            }
        } else if ("region".equals(parameters.get("dimension"))) {
            List<Map<String, Object>> regions = historyMapper.selectNextLevelRegion(parameters);
            for (int i = result.size() - 1; i >= 0; i--) {
                Map<String, Object> map = result.get(i);
                for (Map<String, Object> region : regions) {
                    if ((map.get("code") == null)) {
                        result.remove(map);
                        break;
                    }
                    if (map.get("code").equals(region.get("code"))) {
                        map.put("name", region.get("name"));
                        regions.remove(region);
                        map.remove("code");
                        break;
            List<String> regions = historyMapper.selectNextLevelRegion(parameters);
            for (Map<String, Object> map : result) {
                if (regions.contains(map.get("name"))) {
                    regions.remove(map.get("name"));
                    if (ObjectUtils.isEmpty(map.get("avg"))) {
                        map.put("avg", 0);
                    }
                }
            }
            for (Map<String, Object> region : regions) {
            for (String region : regions) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("name", region.get("name"));
                map.put("name", region);
                map.put("avg", 0);
                result.add(map);
            }
src/main/resources/mapper/HistoryMapper.xml
@@ -46,11 +46,14 @@
                mp.`name`
            </if>
            <if test="dimension == 'region'">
                mp.${nextLevel}_code AS 'code'
                r.${nextLevel}_name AS 'name'
            </if>
        FROM
            <if test="dimension == 'profession'">
                profession p , 
            </if>
            <if test="dimension == 'region'">
                ${nextLevel} r,
            </if>
            device d,
            ${table} h,
@@ -64,6 +67,9 @@
            AND mp.${regionType}_code = #{regionCode}
            <if test="dimension == 'profession'">
                AND d.profession_id = p.id 
            </if>
            <if test="dimension == 'region'">
                AND r.${nextLevel}_code = mp.${nextLevel}_code
            </if>
            <if test="orgIds != null and orgIds.size &gt; 0">
                AND mp.organization_id IN
@@ -88,9 +94,8 @@
        </if>
    </select>
    
    <select id="selectNextLevelRegion" resultType="java.util.Map">
    <select id="selectNextLevelRegion" resultType="string">
        SELECT
            ${nextLevel}_code AS 'code',
            ${nextLevel}_name AS 'name' 
        FROM
            ${nextLevel}
@@ -101,7 +106,7 @@
    <select id="getDischargeByRegion" resultType="java.util.Map">
        SELECT
            mp.`name`,
            dis.`value` -> '$.e1' 'value'
            dis.`value` -> '$.${sensorKey}' 'value'
        FROM
            monitor_point mp,
            discharge dis