瀏覽代碼

设备监测数据报表查询完整

jichaobo 4 年之前
父節點
當前提交
76d26315fc

+ 7 - 1
fiveep-persistence/src/main/java/com/bizmatics/persistence/mapper/RtAnalogDataMapper.java

@@ -1,11 +1,14 @@
 package com.bizmatics.persistence.mapper;
 
+import com.bizmatics.model.Device;
+import com.bizmatics.model.HtAnalogData;
 import com.bizmatics.model.RtAnalogData;
 import com.bizmatics.common.mvc.base.CrudMapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -32,6 +35,9 @@ public interface RtAnalogDataMapper extends CrudMapper<RtAnalogData> {
 
     Map<String,Object> getOneMap(@Param("siteId")Integer siteId);
 
-    Map<String,Object> getDataReportMap(@Param("siteId")Integer siteId, @Param("startTime") Date startTime, @Param("endTime")Date endTime);
+    List<HtAnalogData> getDataReportMap(@Param("siteId")Integer siteId, @Param("startTime") Date startTime, @Param("endTime")Date endTime);
+    List<Device> getDeviceListMap(@Param("siteId")Integer siteId);
+    List<HtAnalogData> getDataReportDMap(@Param("deviceCode")List deviceCode, @Param("startTime") Date startTime, @Param("endTime")Date endTime);
+    List<HtAnalogData> getDataReportMMap(@Param("deviceCode")List deviceCode, @Param("startTime") Date startTime, @Param("endTime")Date endTime);
 
 }

+ 313 - 9
fiveep-persistence/src/main/resources/mapper/mysql/RtAnalogDataMapper.xml

@@ -95,29 +95,333 @@
             </if>
         </where>
     </select>
-
-
-    <select id="getDataReportMap" resultType="java.util.Map">
+    <select id="getDataReportMap" resultType="com.bizmatics.model.HtAnalogData">
         select
         *
         from user_site as us
         inner join device as d
         on us.site_id = d.site_id
-        inner join rt_analog_data as rad
+        inner join ht_analog_data as rad
         on d.device_code = rad.deviceName
         <where>
-               and d.enable=1
+            and d.enable=1
             <if test="siteId != null and siteId != 0">
                 and us.site_id = #{siteId}
             </if>
-            <if test="startTime != null">
-                and rad.dataTime &gt;= #{startTime}
+            <if test="endTime != null and startTime != null">
+                and rad.dataTime BETWEEN   #{startTime} and #{endTime}
             </if>
-            <if test="endTime != null">
-                and rad.dataTime &lt; #{endTime}
+        </where>
+    </select>
+    <select id="getDeviceListMap" resultType="com.bizmatics.model.Device">
+        select
+        *
+        from user_site as us
+        inner join device as d
+        on us.site_id = d.site_id
+        <where>
+                and d.enable=1
+            <if test="siteId != null and siteId != 0">
+                and d.site_id = #{siteId}
             </if>
         </where>
     </select>
 
+    <select id="getDataReportDMap" resultType="com.bizmatics.model.HtAnalogData">
+        SELECT
+        t.deviceName AS deviceName,
+        AVG(t.Busot) AS Busot,
+        AVG(t.COS) AS COS,
+        AVG(t.COSa) AS COSa,
+        AVG(t.COSb) AS COSb,
+        AVG(t.COSc) AS COSc,
+        AVG(t.Demand) AS Demand,
+        AVG(t.DevResetTimes) AS DevResetTimes,
+        AVG(t.DeviceTemp) AS DeviceTemp,
+        AVG(t.Epn) AS Epn,
+        AVG(t.Epn1) AS Epn1,
+        AVG(t.Epn2) AS Epn2,
+        AVG(t.Epn3) AS Epn3,
+        AVG(t.Epn4) AS Epn4,
+        AVG(t.Epp) AS Epp,
+        AVG(t.Epp1) AS Epp1,
+        AVG(t.Epp2) AS Epp2,
+        AVG(t.Epp3) AS Epp3,
+        AVG(t.Epp4) AS Epp4,
+        AVG(t.Eqn) AS Eqn,
+        AVG(t.Eqp) AS Eqp,
+        AVG(t.F) AS F,
+        AVG(t.I0) AS I0,
+        AVG(t.I2) AS I2,
+        AVG(t.IHa) AS IHa,
+        AVG(t.IHb) AS IHb,
+        AVG(t.IHc) AS IHc,
+        AVG(t.Ia) AS Ia,
+        AVG(t.Ib) AS Ib,
+        AVG(t.Ic) AS Ic,
+        AVG(t.Ir) AS Ir,
+        AVG(t.LastDayMD) AS LastDayMD,
+        AVG(t.LastDayMDt) AS LastDayMDt,
+        AVG(t.P) AS P,
+        AVG(t.Pa) AS Pa,
+        AVG(t.Pb) AS Pb,
+        AVG(t.Pc) AS Pc,
+        AVG(t.Q) AS Q,
+        AVG(t.Qa) AS Qa,
+        AVG(t.Qb) AS Qb,
+        AVG(t.Qc) AS Qc,
+        AVG(t.SignalIntensity) AS SignalIntensity,
+        AVG(t.T1) AS T1,
+        AVG(t.T2) AS T2,
+        AVG(t.T3) AS T3,
+        AVG(t.T4) AS T4,
+        AVG(t.THDUa) AS THDUa,
+        AVG(t.THDUb) AS THDUb,
+        AVG(t.THDUc) AS THDUc,
+        AVG(t.Ua) AS Ua,
+        AVG(t.Uab) AS Uab,
+        AVG(t.Ub) AS Ub,
+        AVG(t.Ubc) AS Ubc,
+        AVG(t.UblU0) AS UblU0,
+        AVG(t.UblU2) AS UblU2,
+        AVG(t.Uc) AS Uc,
+        AVG(t.Uca) AS Uca,
+        AVG(t.Udt) AS Udt,
+        AVG(t.Ul) AS Ul,
+        AVG(t.Upt) AS Upt,
+        AVG(t.Ust) AS Ust,
+        t.freezingTime AS freezingTime,
+        t.dataTime
+        FROM
+        (
+        SELECT
+        deviceName,
+        Busot,
+        COS,
+        COSa,
+        COSb,
+        COSc,
+        Demand,
+        DevResetTimes,
+        DeviceTemp,
+        Epn,
+        Epn1,
+        Epn2,
+        Epn3,
+        Epn4,
+        Epp,
+        Epp1,
+        Epp2,
+        Epp3,
+        Epp4,
+        Eqn,
+        Eqp,
+        F,
+        I0,
+        I2,
+        IHa,
+        IHb,
+        IHc,
+        Ia,
+        Ib,
+        Ic,
+        Ir,
+        LastDayMD,
+        LastDayMDt,
+        P,
+        Pa,
+        Pb,
+        Pc,
+        Q,
+        Qa,
+        Qb,
+        Qc,
+        SignalIntensity,
+        T1,
+        T2,
+        T3,
+        T4,
+        THDUa,
+        THDUb,
+        THDUc,
+        Ua,
+        Uab,
+        Ub,
+        Ubc,
+        UblU0,
+        UblU2,
+        Uc,
+        Uca,
+        Udt,
+        Ul,
+        Upt,
+        Ust,
+        freezingTime,
+        date_format(dataTime, '%Y-%m-%d') AS dataTime
+        FROM
+        ht_analog_data
+        <where>
+                and deviceName in
+            <foreach item="item"  collection="deviceCode" open="(" separator="," close=")">
+                #{item.deviceCode}
+            </foreach>
+            <if test="endTime != null and startTime != null">
+                and dataTime BETWEEN   #{startTime} and #{endTime}
+            </if>
+        </where>
+        ) t
+        GROUP BY
+        t.dataTime
+        ORDER BY
+        t.dataTime
+    </select>
 
+    <select id="getDataReportMMap" resultType="com.bizmatics.model.HtAnalogData">
+        SELECT
+        t.deviceName AS deviceName,
+        AVG(t.Busot) AS Busot,
+        AVG(t.COS) AS COS,
+        AVG(t.COSa) AS COSa,
+        AVG(t.COSb) AS COSb,
+        AVG(t.COSc) AS COSc,
+        AVG(t.Demand) AS Demand,
+        AVG(t.DevResetTimes) AS DevResetTimes,
+        AVG(t.DeviceTemp) AS DeviceTemp,
+        AVG(t.Epn) AS Epn,
+        AVG(t.Epn1) AS Epn1,
+        AVG(t.Epn2) AS Epn2,
+        AVG(t.Epn3) AS Epn3,
+        AVG(t.Epn4) AS Epn4,
+        AVG(t.Epp) AS Epp,
+        AVG(t.Epp1) AS Epp1,
+        AVG(t.Epp2) AS Epp2,
+        AVG(t.Epp3) AS Epp3,
+        AVG(t.Epp4) AS Epp4,
+        AVG(t.Eqn) AS Eqn,
+        AVG(t.Eqp) AS Eqp,
+        AVG(t.F) AS F,
+        AVG(t.I0) AS I0,
+        AVG(t.I2) AS I2,
+        AVG(t.IHa) AS IHa,
+        AVG(t.IHb) AS IHb,
+        AVG(t.IHc) AS IHc,
+        AVG(t.Ia) AS Ia,
+        AVG(t.Ib) AS Ib,
+        AVG(t.Ic) AS Ic,
+        AVG(t.Ir) AS Ir,
+        AVG(t.LastDayMD) AS LastDayMD,
+        AVG(t.LastDayMDt) AS LastDayMDt,
+        AVG(t.P) AS P,
+        AVG(t.Pa) AS Pa,
+        AVG(t.Pb) AS Pb,
+        AVG(t.Pc) AS Pc,
+        AVG(t.Q) AS Q,
+        AVG(t.Qa) AS Qa,
+        AVG(t.Qb) AS Qb,
+        AVG(t.Qc) AS Qc,
+        AVG(t.SignalIntensity) AS SignalIntensity,
+        AVG(t.T1) AS T1,
+        AVG(t.T2) AS T2,
+        AVG(t.T3) AS T3,
+        AVG(t.T4) AS T4,
+        AVG(t.THDUa) AS THDUa,
+        AVG(t.THDUb) AS THDUb,
+        AVG(t.THDUc) AS THDUc,
+        AVG(t.Ua) AS Ua,
+        AVG(t.Uab) AS Uab,
+        AVG(t.Ub) AS Ub,
+        AVG(t.Ubc) AS Ubc,
+        AVG(t.UblU0) AS UblU0,
+        AVG(t.UblU2) AS UblU2,
+        AVG(t.Uc) AS Uc,
+        AVG(t.Uca) AS Uca,
+        AVG(t.Udt) AS Udt,
+        AVG(t.Ul) AS Ul,
+        AVG(t.Upt) AS Upt,
+        AVG(t.Ust) AS Ust,
+        t.freezingTime AS freezingTime,
+        t.dataTime
+        FROM
+        (
+        SELECT
+        deviceName,
+        Busot,
+        COS,
+        COSa,
+        COSb,
+        COSc,
+        Demand,
+        DevResetTimes,
+        DeviceTemp,
+        Epn,
+        Epn1,
+        Epn2,
+        Epn3,
+        Epn4,
+        Epp,
+        Epp1,
+        Epp2,
+        Epp3,
+        Epp4,
+        Eqn,
+        Eqp,
+        F,
+        I0,
+        I2,
+        IHa,
+        IHb,
+        IHc,
+        Ia,
+        Ib,
+        Ic,
+        Ir,
+        LastDayMD,
+        LastDayMDt,
+        P,
+        Pa,
+        Pb,
+        Pc,
+        Q,
+        Qa,
+        Qb,
+        Qc,
+        SignalIntensity,
+        T1,
+        T2,
+        T3,
+        T4,
+        THDUa,
+        THDUb,
+        THDUc,
+        Ua,
+        Uab,
+        Ub,
+        Ubc,
+        UblU0,
+        UblU2,
+        Uc,
+        Uca,
+        Udt,
+        Ul,
+        Upt,
+        Ust,
+        freezingTime,
+        date_format(dataTime, '%Y-%m-%d %H:00:00') AS dataTime
+        FROM
+        ht_analog_data
+        <where>
+            and deviceName in
+            <foreach item="item"  collection="deviceCode" open="(" separator="," close=")">
+                #{item.deviceCode}
+            </foreach>
+            <if test="endTime != null and startTime != null">
+                and dataTime BETWEEN   #{startTime} and #{endTime}
+            </if>
+        </where>
+        ) t
+        GROUP BY
+        t.dataTime
+        ORDER BY
+        t.dataTime
+    </select>
 </mapper>

+ 88 - 32
fiveep-service/src/main/java/com/bizmatics/service/impl/RtAnalogDataServiceImpl.java

@@ -1,10 +1,9 @@
 package com.bizmatics.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.bizmatics.common.core.util.DateUtils;
 import com.bizmatics.common.core.util.StringUtils;
-import com.bizmatics.model.RtAnalogData;
-import com.bizmatics.model.Site;
-import com.bizmatics.model.UserSite;
+import com.bizmatics.model.*;
 import com.bizmatics.persistence.mapper.RtAnalogDataMapper;
 import com.bizmatics.service.RtAnalogDataService;
 import com.bizmatics.common.mvc.base.AbstractCrudService;
@@ -13,10 +12,10 @@ import com.bizmatics.service.UserSiteService;
 import com.bizmatics.service.util.Arith;
 import com.bizmatics.service.util.SessionLocal;
 import com.bizmatics.service.vo.RadCountVO;
+import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
@@ -120,38 +119,95 @@ public class RtAnalogDataServiceImpl extends AbstractCrudService<RtAnalogDataMap
     @Override
     public List<Map<String, Object>> getDataReport(Integer siteId,Date startTime, Date endTime,String queryType) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        SimpleDateFormat formatter1 = new SimpleDateFormat("MM-dd HH:mm");
+        SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
         List<Map<String, Object>> list = new ArrayList<>();
-        Map<String, Object> radMap = baseMapper.getDataReportMap(siteId,startTime,endTime);
-        Object value = radMap.get("LoadLive");
-
-//        String[] result = queryType.split(",");
-//        for (int i = 0; i < result.length; i++) {
-//            System.out.println(result[i]);
-//        }
-
-        for (String name : radMap.keySet()) {
+        String a="2";
+        List<HtAnalogData> rtAnalogDataList = null;
+        long diff = endTime.getTime() - startTime.getTime();
+        long days = diff / (1000 * 60 * 60);
+
+        if (days<=24){
+            rtAnalogDataList = baseMapper.getDataReportMap(siteId, startTime, endTime);
+        }else if (days<360&&days>24){
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportMMap(device_list,startTime, endTime);
+        }else if (days>=360){
+            List<Device> device_list = baseMapper.getDeviceListMap(siteId);
+            rtAnalogDataList = baseMapper.getDataReportDMap(device_list,startTime, endTime);
+        }
+        String[] result = queryType.split(",");
+        rtAnalogDataList.forEach(rtAnalogData -> {
             Map<String,Object> map = new HashMap<>();
-            if (queryType.startsWith("bgbhg_183__Ia")){
-                map.put("name",name);
+            if (ArrayUtils.contains(result,"I")){
+                map.put("Ia",rtAnalogData.getIa());
+                map.put("Ib",rtAnalogData.getIb());
+                map.put("Ic",rtAnalogData.getIc());
+                if (ArrayUtils.contains(result,"P")){
+                    map.put("P",rtAnalogData.getP());
+                    map.put("Q",rtAnalogData.getQ());
+                    map.put("Pa",rtAnalogData.getPa());
+                    map.put("Pb",rtAnalogData.getPb());
+                    map.put("Pc",rtAnalogData.getPc());
+                    map.put("Qa",rtAnalogData.getQa());
+                    map.put("Qb",rtAnalogData.getQb());
+                    map.put("Qc",rtAnalogData.getQc());
+                    map.put("Demand",rtAnalogData.getDemand());
+                    if (ArrayUtils.contains(result,"KWh")){
+                        map.put("Epn",rtAnalogData.getEpn());
+                        map.put("Epp",rtAnalogData.getEpp());
+                        map.put("Eqn",rtAnalogData.getEqn());
+                        map.put("Eqp",rtAnalogData.getEqp());
+                        if (ArrayUtils.contains(result,"V")){
+                            map.put("Ua",rtAnalogData.getUa());
+                            map.put("Ub",rtAnalogData.getUb());
+                            map.put("Uc",rtAnalogData.getUc());
+                            map.put("Uab",rtAnalogData.getUab());
+                            map.put("Ubc",rtAnalogData.getUbc());
+                            map.put("Uca",rtAnalogData.getUca());
+                            map.put("Ul",rtAnalogData.getUl());
+                            if (ArrayUtils.contains(result,"C")){
+                                map.put("T1",rtAnalogData.getT1());
+                                map.put("T2",rtAnalogData.getT2());
+                                map.put("T3",rtAnalogData.getT3());
+                                map.put("T4",rtAnalogData.getT4());
+                                map.put("Ic",rtAnalogData.getIc());
+                                if (ArrayUtils.contains(result,"HZ")){
+                                    map.put("F",rtAnalogData.getF());
+                                    if (queryType.startsWith("PS")){
+                                        map.put("COSa",rtAnalogData.getCOSa());
+                                        map.put("COSb",rtAnalogData.getCOSb());
+                                        map.put("COSc",rtAnalogData.getCOSc());
+                                        map.put("COS",rtAnalogData.getCos());
+                                        if (ArrayUtils.contains(result,"RMS")){
+                                            map.put("IHa",rtAnalogData.getIHa());
+                                            map.put("IHb",rtAnalogData.getIHb());
+                                            map.put("IHc",rtAnalogData.getIHc());
+                                            if (ArrayUtils.contains(result,"DDB")){
+                                                map.put("SignalIntensity",rtAnalogData.getSignalIntensity());
+                                                if (ArrayUtils.contains(result,"VT")){
+                                                    map.put("Upt",rtAnalogData.getUpt());
+                                                    map.put("Udt",rtAnalogData.getUdt());
+                                                    map.put("Ust",rtAnalogData.getUst());
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            if (days<=24){
+                map.put("dataTime",rtAnalogData.getDataTime());
+            }else if (days<360&&days>24){
+                map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),"MM-dd HH:mm"));
+            }else if (days>=360){
+                map.put("dataTime", DateUtils.format(rtAnalogData.getDataTime(),DateUtils.PARSE_PATTERNS[8]));
             }
-
-
-            map.put("value",addUnit(name,radMap.get(name).toString()));
             list.add(map);
-
-        }
-
-//        Map<String,Object> map = new HashMap<>();
-//        map.put("LoadLive",value);
-//        list.add(map);
-
-
-//        Map<String, Object> LoopStatusList = baseMapper.getLoopStatusListMap(siteId);
-////        Iterator<String> it = radMap.keySet().iterator();
-
-//        int duration=0;
-
-
+        });
         return list;
     }
 }