Ver código fonte

feat: big_table月和日的历史数据处理

sunxiao 8 meses atrás
pai
commit
5f2db7327f

BIN
slibra-admin/.DS_Store


+ 239 - 8
slibra-admin/src/main/java/com/slibra/web/controller/business/HandleDataController.java

@@ -11,10 +11,12 @@ import com.slibra.business.mapper.*;
 import com.slibra.common.core.domain.TXinyiDaily;
 import com.slibra.common.core.controller.BaseController;
 import com.slibra.common.utils.DateUtils;
+import com.slibra.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
@@ -25,6 +27,7 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.slibra.common.constant.MyConstants.*;
 import static com.slibra.common.constant.MyConstants.BigDecimal_100;
@@ -60,6 +63,12 @@ public class HandleDataController extends BaseController
     @Autowired
     private TXinyiBigTableHourMapper tXinyiBigTableHourMapper;
 
+    @Autowired
+    private TXinyiBigTableDayMapper tXinyiBigTableDayMapper;
+
+    @Autowired
+    private  TXinyiBigTableMonthMapper tXinyiBigTableMonthMapper;
+
     @Autowired
     private SqlSessionFactory sqlSessionFactory;
 
@@ -857,9 +866,13 @@ public class HandleDataController extends BaseController
         return "ok;耗时:" + (end - begin) /1000 + "秒。";
     }
 
-    public static void main(String[] args) {
+    public void main(String[] args) {
 
+        // handleBigTableDayHistoryData();
 
+        // HandleDataController handleDataController = new HandleDataController();
+        //
+        // handleDataController.handleBigTableDayHistoryData();
 
 //        File file = new File("C:\\Users\\10109\\Desktop\\新程序\\历史数据");
 //        if(file.isDirectory()){
@@ -929,6 +942,228 @@ public class HandleDataController extends BaseController
         return sb;
     }
 
+    public BigDecimal getListAvg (Collection<BigDecimal> bigDecimals) {
+        if (bigDecimals.isEmpty()) {
+            return null;
+        }
+
+        BigDecimal sum = bigDecimals.stream()
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+        int size = bigDecimals.size();
+        return sum.divide(new BigDecimal(size), 6, RoundingMode.HALF_UP);
+    }
+
+    public String formatList(List<BigDecimal> list) {
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+
+        boolean isNullList = list.stream().allMatch(x -> x == null);
+
+        return isNullList ? null : list.toString();
+    }
+
+
+    /**
+     * 处理big_table_month历史数据
+     * @return
+     */
+    @GetMapping("/handleBigTableMonthHistoryData")
+    public String handleBigTableMonthHistoryData() {
+        log.info("进入了处理big_table_month历史数据");
+        long begin = System.currentTimeMillis();
+
+        List<TXinyiBigTableDay> tXinyiBigTableDayList = tXinyiBigTableDayMapper.selectTXinyiBigTableDayByMonthAvg();
+
+        if ( !CollectionUtils.isEmpty(tXinyiBigTableDayList)  ) {
+
+            for (int i = 0; i < tXinyiBigTableDayList.size(); i++) {
+                TXinyiBigTableDay tableDay = tXinyiBigTableDayList.get(i);
+
+                TXinyiBigTableMonth tableMonth = new TXinyiBigTableMonth();
+
+                ArrayList<BigDecimal> gyHycRjyAll = new ArrayList<>();
+                ArrayList<BigDecimal> gyHycRjyZdAll = new ArrayList<>();
+                ArrayList<BigDecimal> gyHycWnndAll = new ArrayList<>();
+
+                ArrayList<BigDecimal> rbHycRjyAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbHycWnndAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbYycRjyAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbQycRjyAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbWncjbAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbWntjzsAll = new ArrayList<>();
+                ArrayList<BigDecimal> rbHfxwnndAll = new ArrayList<>();
+
+                ArrayList<BigDecimal> hyHycxsyAll = new ArrayList<>();
+                ArrayList<BigDecimal> hyQyanAll = new ArrayList<>();
+                ArrayList<BigDecimal> hyQyckxsyAll = new ArrayList<>();
+                ArrayList<BigDecimal> hyHyzlsyAll = new ArrayList<>();
+
+                gyHycRjyAll.add(tableDay.getGyOneHymdDo());
+                gyHycRjyAll.add(tableDay.getGyTwoHymdDo());
+                gyHycRjyZdAll.add(tableDay.getGyOneHyzdDo());
+                gyHycRjyZdAll.add(tableDay.getGyTwoHyzdDo());
+                gyHycWnndAll.add(tableDay.getGyOneMlss());
+                gyHycWnndAll.add(tableDay.getGyTwoMlss());
+
+                rbHycRjyAll.add(tableDay.getGyOneHymdDo());
+                rbHycRjyAll.add(tableDay.getGyTwoHymdDo());
+                rbHycWnndAll.add(tableDay.getRbShcHyOneMlss());
+                rbHycWnndAll.add(tableDay.getRbShcHyTwoMlss());
+                rbYycRjyAll.add(tableDay.getRbShcYyOneDo());
+                rbYycRjyAll.add(tableDay.getRbShcYyTwoDo());
+                rbQycRjyAll.add(tableDay.getRbShcQyOneDo());
+                rbQycRjyAll.add(tableDay.getRbShcQyTwoDo());
+                rbWncjbAll.add(tableDay.getRbShcHyOneSv());
+                rbWncjbAll.add(tableDay.getRbShcHyTwoSv());
+                rbWntjzsAll.add(tableDay.getRbShcHyOneSvi());
+                rbWntjzsAll.add(tableDay.getRbShcHyTwoSvi());
+                rbHfxwnndAll.add(tableDay.getRbShcHyOneMlvss());
+                rbHfxwnndAll.add(tableDay.getRbShcHyTwoMlvss());
+
+                hyHycxsyAll.add(tableDay.getHyNo3Hlj1Jqr());
+                hyHycxsyAll.add(tableDay.getHyNo3Hlj2Jqr());
+                hyQyanAll.add(tableDay.getHyNh31Jqr());
+                hyQyanAll.add(tableDay.getHyNh32Jqr());
+                hyQyckxsyAll.add(tableDay.getHyNo3Qyc1Jqr());
+                hyQyckxsyAll.add(tableDay.getHyNo3Qyc2Jqr());
+                hyHyzlsyAll.add(tableDay.getHyTpHl1Jqr());
+                hyHyzlsyAll.add(tableDay.getHyTpHl2Jqr());
+
+                tableDay.setGyHycRjyAll(formatList(gyHycRjyAll));
+                tableDay.setGyHycRjyZdAll(formatList(gyHycRjyZdAll));
+                tableDay.setGyHycWnndAll(formatList(gyHycWnndAll));
+                tableDay.setRbHycRjyAll(formatList(rbHycRjyAll));
+                tableDay.setRbHycWnndAll(formatList(rbHycWnndAll));
+                tableDay.setRbYycRjyAll(formatList(rbYycRjyAll));
+                tableDay.setRbQycRjyAll(formatList(rbQycRjyAll));
+                tableDay.setRbWncjbAll(formatList(rbWncjbAll));
+                tableDay.setRbWntjzsAll(formatList(rbWntjzsAll));
+                tableDay.setRbHfxwnndAll(formatList(rbHfxwnndAll));
+                tableDay.setHyHycxsyAll(formatList(hyHycxsyAll));
+                tableDay.setHyQyanAll(formatList(hyQyanAll));
+                tableDay.setHyQyckxsyAll(formatList(hyQyckxsyAll));
+                tableDay.setHyHyzlsyAll(formatList(hyHyzlsyAll));
+
+                BeanUtils.copyProperties(tableDay, tableMonth);
+
+                tXinyiBigTableMonthMapper.insertTXinyiBigTableMonth(tableMonth);
+            }
+        }
+
+        long end = System.currentTimeMillis();
+        return "ok;耗时:" + (end - begin) / 1000 + "秒。";
+    }
+
+
+    /**
+     * 处理big_table_day历史数据
+     * @return
+     */
+    @GetMapping("/handleBigTableDayHistoryData")
+    public String handleBigTableDayHistoryData() {
+        log.info("进入了 处理big_table_hour历史数据");
+        long begin = System.currentTimeMillis();
+
+        List<TXinyiBigTableHour> tXinyiBigTableHours = tXinyiBigTableHourMapper.selectTXinyiBigTableHourByTestDate();
+        if ( !CollectionUtils.isEmpty(tXinyiBigTableHours) ) {
+
+            List<TXinyiBigTableDay> bigTableDayList = new ArrayList<>();
+
+            for (int i = 0; i < tXinyiBigTableHours.size(); i++) {
+                TXinyiBigTableHour tXinyiBigTableHour = tXinyiBigTableHours.get(i);
+                String testDate = tXinyiBigTableHour.getTestDate();
+
+                TXinyiBigTableHour tableHour = tXinyiBigTableHourMapper.selectTXinyiBigTableHourAvg(testDate);
+
+                if (!Objects.isNull(tableHour)) {
+                    TXinyiBigTableDay tableDay = new TXinyiBigTableDay();
+
+                    BeanUtils.copyProperties(tableHour, tableDay);
+
+                    ArrayList<BigDecimal> gyHycRjyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> gyHycRjyZdAll = new ArrayList<>();
+                    ArrayList<BigDecimal> gyHycWnndAll = new ArrayList<>();
+
+                    ArrayList<BigDecimal> rbHycRjyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbHycWnndAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbYycRjyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbQycRjyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbWncjbAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbWntjzsAll = new ArrayList<>();
+                    ArrayList<BigDecimal> rbHfxwnndAll = new ArrayList<>();
+
+                    ArrayList<BigDecimal> hyHycxsyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> hyQyanAll = new ArrayList<>();
+                    ArrayList<BigDecimal> hyQyckxsyAll = new ArrayList<>();
+                    ArrayList<BigDecimal> hyHyzlsyAll = new ArrayList<>();
+
+                    gyHycRjyAll.add(tableHour.getGyOneHymdDo());
+                    gyHycRjyAll.add(tableHour.getGyTwoHymdDo());
+                    gyHycRjyZdAll.add(tableHour.getGyOneHyzdDo());
+                    gyHycRjyZdAll.add(tableHour.getGyTwoHyzdDo());
+                    gyHycWnndAll.add(tableHour.getGyOneMlss());
+                    gyHycWnndAll.add(tableHour.getGyTwoMlss());
+
+                    rbHycRjyAll.add(tableHour.getGyOneHymdDo());
+                    rbHycRjyAll.add(tableHour.getGyTwoHymdDo());
+                    rbHycWnndAll.add(tableHour.getRbShcHyOneMlss());
+                    rbHycWnndAll.add(tableHour.getRbShcHyTwoMlss());
+                    rbYycRjyAll.add(tableHour.getRbShcYyOneDo());
+                    rbYycRjyAll.add(tableHour.getRbShcYyTwoDo());
+                    rbQycRjyAll.add(tableHour.getRbShcQyOneDo());
+                    rbQycRjyAll.add(tableHour.getRbShcQyTwoDo());
+                    rbWncjbAll.add(tableHour.getRbShcHyOneSv());
+                    rbWncjbAll.add(tableHour.getRbShcHyTwoSv());
+                    rbWntjzsAll.add(tableHour.getRbShcHyOneSvi());
+                    rbWntjzsAll.add(tableHour.getRbShcHyTwoSvi());
+                    rbHfxwnndAll.add(tableHour.getRbShcHyOneMlvss());
+                    rbHfxwnndAll.add(tableHour.getRbShcHyTwoMlvss());
+
+                    hyHycxsyAll.add(tableHour.getHyNo3Hlj1Jqr());
+                    hyHycxsyAll.add(tableHour.getHyNo3Hlj2Jqr());
+                    hyQyanAll.add(tableHour.getHyNh31Jqr());
+                    hyQyanAll.add(tableHour.getHyNh32Jqr());
+                    hyQyckxsyAll.add(tableHour.getHyNo3Qyc1Jqr());
+                    hyQyckxsyAll.add(tableHour.getHyNo3Qyc2Jqr());
+                    hyHyzlsyAll.add(tableHour.getHyTpHl1Jqr());
+                    hyHyzlsyAll.add(tableHour.getHyTpHl2Jqr());
+
+                    tableDay.setGyHycRjyAll(formatList(gyHycRjyAll));
+                    tableDay.setGyHycRjyZdAll(formatList(gyHycRjyZdAll));
+                    tableDay.setGyHycWnndAll(formatList(gyHycWnndAll));
+                    tableDay.setRbHycRjyAll(formatList(rbHycRjyAll));
+                    tableDay.setRbHycWnndAll(formatList(rbHycWnndAll));
+                    tableDay.setRbYycRjyAll(formatList(rbYycRjyAll));
+                    tableDay.setRbQycRjyAll(formatList(rbQycRjyAll));
+                    tableDay.setRbWncjbAll(formatList(rbWncjbAll));
+                    tableDay.setRbWntjzsAll(formatList(rbWntjzsAll));
+                    tableDay.setRbHfxwnndAll(formatList(rbHfxwnndAll));
+                    tableDay.setHyHycxsyAll(formatList(hyHycxsyAll));
+                    tableDay.setHyQyanAll(formatList(hyQyanAll));
+                    tableDay.setHyQyckxsyAll(formatList(hyQyckxsyAll));
+                    tableDay.setHyHyzlsyAll(formatList(hyHyzlsyAll));
+
+                    tableDay.setTestDate(testDate);
+
+                    bigTableDayList.add(tableDay);
+                }
+            }
+
+            if (!CollectionUtils.isEmpty(bigTableDayList)) {
+                SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+                TXinyiBigTableDayMapper sqlSessionMapper =  sqlSession.getMapper(TXinyiBigTableDayMapper.class);
+                bigTableDayList.stream().forEach(item -> sqlSessionMapper.insertTXinyiBigTableDay(item));
+                sqlSession.commit();
+                sqlSession.close();
+            }
+        }
+        long end = System.currentTimeMillis();
+        return "ok;耗时:" + (end - begin) / 1000 + "秒。";
+    }
+
+
     /**
      * 处理big_table_hour历史数据
      * @return
@@ -943,7 +1178,6 @@ public class HandleDataController extends BaseController
 
         int num = ( count / size ) + 1;
 
-        int index = 0;
         for (int i = 0; i < num; i++) {
             List<TXinyiIndustry> tXinyiIndustries = xinyiIndustryMapper.selectTXinyiIndustryListByPage(i * size, size);
             if ( !CollectionUtils.isEmpty(tXinyiIndustries) ) {
@@ -975,7 +1209,7 @@ public class HandleDataController extends BaseController
                     }
 
                     // 处理化验室
-                    List<TXinyiRobot> tXinyiRobots = xinyiRobotMapper.selectTXinyiRobotList(TXinyiRobot.builder().testHour(testHour).build()));
+                    List<TXinyiRobot> tXinyiRobots = xinyiRobotMapper.selectTXinyiRobotList(TXinyiRobot.builder().testHour(testHour).build());
                     if (!CollectionUtils.isEmpty(tXinyiRobots)) {
                         TXinyiRobot tXinyiRobot = tXinyiRobots.get(0);
                         handleRobotData(xinyiBigTableHour, tXinyiRobot);
@@ -989,8 +1223,6 @@ public class HandleDataController extends BaseController
                 }
 
                 if (!CollectionUtils.isEmpty(tXinyiBigTableHourList)) {
-                    index += tXinyiBigTableHourList.size();
-
                     SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
                     TXinyiBigTableHourMapper sqlSessionMapper = sqlSession.getMapper(TXinyiBigTableHourMapper.class);
                     tXinyiBigTableHourList.stream().forEach(item -> sqlSessionMapper.insertTXinyiBigTableHour(item));
@@ -1000,8 +1232,6 @@ public class HandleDataController extends BaseController
             }
         }
 
-        System.out.println( "index :::" + index );
-
         long end = System.currentTimeMillis();
         return "ok;耗时:" + (end - begin) /1000 + "秒。";
     }
@@ -1169,7 +1399,7 @@ public class HandleDataController extends BaseController
     }
 
     // 处理化验室
-    private void  handleRobotData(TXinyiBigTableHour tXinyiBigTableHour, TXinyiRobot tXinyiRobot) {
+    private void handleRobotData(TXinyiBigTableHour tXinyiBigTableHour, TXinyiRobot tXinyiRobot) {
         tXinyiBigTableHour.setHyCodYb(tXinyiRobot.getCodYb());
         tXinyiBigTableHour.setHyCodJqr(tXinyiRobot.getCodJqr());
         tXinyiBigTableHour.setHyCodYz(tXinyiRobot.getCodYz());
@@ -1198,5 +1428,6 @@ public class HandleDataController extends BaseController
         tXinyiBigTableHour.setHyQyckxsyAll(tXinyiRobot.getQyckxsyAll());
         tXinyiBigTableHour.setHyHyzlsyAll(tXinyiRobot.getHyzlsyAll());
     }
+
 }
 

+ 24 - 18
slibra-common/src/main/java/com/slibra/common/DecimalUtils.java

@@ -6,10 +6,7 @@ import com.slibra.common.utils.StringUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -28,6 +25,9 @@ public class DecimalUtils {
     public static BigDecimal getAbsAndScale(BigDecimal req, int length){
         if(Objects.isNull(req))
             return null;
+
+
+
         return req.abs().setScale(length, RoundingMode.DOWN);
     }
 
@@ -52,19 +52,25 @@ public class DecimalUtils {
 
 
     public static void main(String[] args) {
-        System.out.println(getAbsAndScale(null, 3));
-        System.out.println(getAbsAndScale(new BigDecimal("33.33333"), 3));
-        System.out.println(getAbsAndScale(new BigDecimal("-33.33333"), 3));
-        List<Double> list = new ArrayList<>();
-        list.add(1.1D);
-        list.add(1.2D);
-        list.add(1.3D);
-        System.out.println(list.toString());
-        System.out.println(JSON.toJSONString(list));
-
-//        System.out.println(getAbsForArray("a", 1));
-
-        System.out.println(new BigDecimal(1.1).divide(new BigDecimal(1.3), 0, RoundingMode.HALF_UP));
-        System.out.println(DecimalUtils.getAbsAndScale(new BigDecimal("3486.000000"), INT_2));
+//         System.out.println(getAbsAndScale(null, 3));
+//         System.out.println(getAbsAndScale(new BigDecimal("33.33333"), 3));
+//         System.out.println(getAbsAndScale(new BigDecimal("-33.33333"), 3));
+//         List<Double> list = new ArrayList<>();
+//         list.add(1.1D);
+//         list.add(1.2D);
+//         list.add(1.3D);
+//         System.out.println(list.toString());
+//         System.out.println(JSON.toJSONString(list));
+//
+// //        System.out.println(getAbsForArray("a", 1));
+//
+//         System.out.println(new BigDecimal(1.1).divide(new BigDecimal(1.3), 0, RoundingMode.HALF_UP));
+//         System.out.println(DecimalUtils.getAbsAndScale(new BigDecimal("3486.000000"), INT_2));
+
+        List<Integer> arr = new ArrayList<>();
+        arr.add(1);
+        arr.add(2);
+        OptionalDouble average = arr.stream().mapToInt(Integer::intValue).average();
+        System.out.println(average.getAsDouble());
     }
 }

+ 4 - 0
slibra-system/src/main/java/com/slibra/business/mapper/TXinyiBigTableDayMapper.java

@@ -2,6 +2,8 @@ package com.slibra.business.mapper;
 
 import java.util.List;
 import com.slibra.business.domain.TXinyiBigTableDay;
+import com.slibra.business.domain.TXinyiBigTableHour;
+import com.slibra.business.domain.TXinyiBigTableMonth;
 
 /**
  * 信义大天维度统计Mapper接口
@@ -60,4 +62,6 @@ public interface TXinyiBigTableDayMapper
     public int deleteTXinyiBigTableDayByIDs(Long[] IDs);
 
     TXinyiBigTableDay selectAvgByDay(String day);
+
+    List<TXinyiBigTableDay> selectTXinyiBigTableDayByMonthAvg();
 }

+ 6 - 0
slibra-system/src/main/java/com/slibra/business/mapper/TXinyiBigTableHourMapper.java

@@ -1,6 +1,8 @@
 package com.slibra.business.mapper;
 
 import java.util.List;
+
+import com.slibra.business.domain.TXinyiBigTableDay;
 import com.slibra.business.domain.TXinyiBigTableHour;
 
 /**
@@ -58,4 +60,8 @@ public interface TXinyiBigTableHourMapper
      * @return 结果
      */
     public int deleteTXinyiBigTableHourByIDs(Long[] IDs);
+
+    List<TXinyiBigTableHour> selectTXinyiBigTableHourByTestDate();
+
+    TXinyiBigTableHour selectTXinyiBigTableHourAvg(String testDate);
 }

+ 170 - 0
slibra-system/src/main/resources/mapper/business/TXinyiBigTableDayMapper.xml

@@ -1148,4 +1148,174 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         WHERE TEST_DATE = #{day}
     </select>
 
+    <select id="selectTXinyiBigTableDayByMonthAvg" resultType="com.slibra.business.domain.TXinyiBigTableDay">
+        SELECT
+            DATE_FORMAT(STR_TO_DATE(TEST_DATE, '%Y/%m/%d'), '%Y/%m') AS TEST_DATE,
+            avg(`GY_JS_COD`) GY_JS_COD,
+              avg(`GY_JS_PH`) GY_JS_PH,
+              avg(`GY_JS_SS`) GY_JS_SS,
+              avg(`GY_JS_TP`) GY_JS_TP,
+              avg(`GY_JS_TN`) GY_JS_TN,
+              avg(`GY_JS_NH3`) GY_JS_NH3,
+              avg(`GY_JS_SW_PH`) GY_JS_SW_PH,
+              avg(`GY_JS_BFYW`) GY_JS_BFYW,
+              avg(`GY_CS_SLQC`) GY_CS_SLQC,
+              avg(`GY_CS_COD`) GY_CS_COD,
+              avg(`GY_CS_PH`) GY_CS_PH,
+              avg(`GY_CS_SS`) GY_CS_SS,
+              avg(`GY_CS_TN`) GY_CS_TN,
+              avg(`GY_CS_TP`) GY_CS_TP,
+              avg(`GY_CS_NH3`) GY_CS_NH3,
+              avg(`GY_ONE_HYZD_DO`) GY_ONE_HYZD_DO,
+              avg(`GY_ONE_HYMD_DO`) GY_ONE_HYMD_DO,
+              avg(`GY_TWO_HYZD_DO`) GY_TWO_HYZD_DO,
+              avg(`GY_TWO_HYMD_DO`) GY_TWO_HYMD_DO,
+              avg(`GY_ONE_MLSS`) GY_ONE_MLSS,
+              avg(`GY_TWO_MLSS`) GY_TWO_MLSS,
+              avg(`GY_JS_TDS`) GY_JS_TDS,
+              avg(`GY_JS_SLQ`) GY_JS_SLQ,
+              avg(`GY_N_HLB_ONE_GP`) GY_N_HLB_ONE_GP,
+              avg(`GY_N_HLB_TWO_GP`) GY_N_HLB_TWO_GP,
+              avg(`GY_N_HLB_THREE_GP`) GY_N_HLB_THREE_GP,
+              avg(`GY_N_HLB_FOUR_GP` ) GY_N_HLB_FOUR_GP,
+              avg(`GY_NHL_B_FIVE_GP`) GY_NHL_B_FIVE_GP,
+              avg(`GY_N_HLB_SIX_GP`) GY_N_HLB_SIX_GP,
+              avg(`GY_W_HLB_ONE_GP`) GY_W_HLB_ONE_GP,
+              avg(`GY_W_HLB_TWO_GP`) GY_W_HLB_TWO_GP,
+              avg(`GY_W_HLB_THREE_GP`) GY_W_HLB_THREE_GP,
+              avg(`GY_W_HLB_FOUR_GP`) GY_W_HLB_FOUR_GP,
+              avg(`GY_W_HLB_FIVE_GP`) GY_W_HLB_FIVE_GP,
+              avg(`GY_FJ_ONE`) GY_FJ_ONE,
+              avg(`GY_FJ_TWO`) GY_FJ_TWO,
+              avg(`GY_FJ_THREE`) GY_FJ_THREE,
+              avg(`GY_FJ_FOUR`) GY_FJ_FOUR,
+              avg(`GY_FJ_FIVE`) GY_FJ_FIVE,
+              avg(`GY_FJ_SIX`) GY_FJ_SIX,
+              avg(`GY_KQLL_ONE`) GY_KQLL_ONE,
+              avg(`GY_KQLL_TWO`) GY_KQLL_TWO,
+              avg(`GY_KQLL_THREE`) GY_KQLL_THREE,
+              avg(`GY_KQLL_FOUR`) GY_KQLL_FOUR,
+              avg(`GY_KQLL_FIVE`) GY_KQLL_FIVE,
+              avg(`GY_KQLL_SIX`) GY_KQLL_SIX,
+              avg(`GY_SJTYJLY`) GY_SJTYJLY,
+              avg(`GY_CLJYSSLL`) GY_CLJYSSLL,
+              avg(`GY_CL_P04_YCZ`) GY_CL_P04_YCZ,
+              avg(`RB_JS_COD`) RB_JS_COD,
+              avg(`RB_JS_PH`) RB_JS_PH,
+              avg(`RB_JS_BOD5`) RB_JS_BOD5,
+              avg(`RB_JS_SS`) RB_JS_SS,
+              avg(`RB_JS_NH3`) RB_JS_NH3,
+              avg(`RB_JS_TN`) RB_JS_TN,
+              avg(`RB_JS_TP`) RB_JS_TP,
+              avg(`RB_JS_DCGJ`) RB_JS_DCGJ,
+              avg(`RB_CS_COD`) RB_CS_COD,
+              avg(`RB_CS_PH`) RB_CS_PH,
+              avg(`RB_CS_BOD5`) RB_CS_BOD5,
+              avg(`RB_CS_SS`) RB_CS_SS,
+              avg(`RB_CS_NH3`) RB_CS_NH3,
+              avg(`RB_CS_TN`) RB_CS_TN,
+              avg(`RB_CS_TP`) RB_CS_TP,
+              avg(`RB_CS_DCGJ`) RB_CS_DCGJ,
+              avg(`RB_JS_SW`) RB_JS_SW,
+              avg(`RB_CS_SW`) RB_CS_SW,
+              avg(`RB_SHC_ONE_PH`) RB_SHC_ONE_PH,
+              avg(`RB_SHC_TWO_PH`) RB_SHC_TWO_PH,
+              avg(`RB_SHC_HY_ONE_SV`) RB_SHC_HY_ONE_SV,
+              avg(`RB_SHC_HY_TWO_SV`) RB_SHC_HY_TWO_SV,
+              avg(`RB_SHC_HY_ONE_SVI`) RB_SHC_HY_ONE_SVI,
+              avg(`RB_SHC_HY_TWO_SVI`) RB_SHC_HY_TWO_SVI,
+              avg(`RB_SHC_HY_ONE_MLSS`) RB_SHC_HY_ONE_MLSS,
+              avg(`RB_SHC_HY_TWO_MLSS`) RB_SHC_HY_TWO_MLSS,
+              avg(`RB_SHC_HY_ONE_MLVSS`) RB_SHC_HY_ONE_MLVSS,
+              avg(`RB_SHC_HY_TWO_MLVSS`) RB_SHC_HY_TWO_MLVSS,
+              avg(`RB_SHC_YY_ONE_DO`) RB_SHC_YY_ONE_DO,
+              avg(`RB_SHC_YY_TWO_DO`) RB_SHC_YY_TWO_DO,
+              avg(`RB_SHC_QY_ONE_DO`) RB_SHC_QY_ONE_DO,
+              avg(`RB_SHC_QY_TWO_DO`) RB_SHC_QY_TWO_DO,
+              avg(`RB_SHC_HY_ONE_DO`) RB_SHC_HY_ONE_DO,
+              avg(`RB_SHC_HY_TWO_DO`) RB_SHC_HY_TWO_DO,
+              avg(`RB_JSL`) RB_JSL,
+              avg(`RB_CSL`) RB_CSL,
+              avg(`RB_SDCLCXSL`) RB_SDCLCXSL,
+              avg(`RB_QSB`) RB_QSB,
+              avg(`RB_F_M`) RB_F_M,
+              avg(`RB_YY_HRT`) RB_YY_HRT,
+              avg(`RB_HY_HRT`) RB_HY_HRT,
+              avg(`RB_QY_HRT`) RB_QY_HRT,
+              avg(`RB_NHL_R`) RB_NHL_R,
+              avg(`RB_WHL_R`) RB_WHL_R,
+              avg(`RB_SRT`) RB_SRT,
+              avg(`RB_CNL`) RB_CNL,
+              avg(`RB_TYQ_BOD5_TN`) RB_TYQ_BOD5_TN,
+              avg(`RB_TYH_BOD5_TN`) RB_TYH_BOD5_TN,
+              avg(`RB_CHUNILIANG`) RB_CHUNILIANG,
+              avg(`RB_CNHSL`) RB_CNHSL,
+              avg(`RB_GWNL`) RB_GWNL ,
+              avg(`RB_DF`) RB_DF,
+              avg(`RB_XNJF`) RB_XNJF,
+              avg(`RB_CLF`) RB_CLF,
+              avg(`RB_TYF`) RB_TYF,
+              avg(`RB_XDJF`) RB_XDJF,
+              avg(`RB_QTYJF`) RB_QTYJF,
+              avg(`RB_CNF`) RB_CNF,
+              avg(`RB_ZLSF`) RB_ZLSF,
+              avg(`RB_ZJCB`) RB_ZJCB,
+              avg(`RB_DWCB`) RB_DWCB,
+              avg(`HY_COD_YB`) HY_COD_YB,
+              avg(`HY_COD_JQR`) HY_COD_JQR,
+              avg(`HY_COD_YZ`) HY_COD_YZ,
+              avg(`HY_TP_HL1_JQR`) HY_TP_HL1_JQR,
+              avg(`HY_TP_HL2_JQR`) HY_TP_HL2_JQR,
+              avg(`HY_TP_RCC_JQR`) HY_TP_RCC_JQR,
+              avg(`HY_TP_1_YZ`) HY_TP_1_YZ,
+              avg(`HY_TP_2_YZ`) HY_TP_2_YZ,
+              avg(`HY_TP_RCC_YZ`) HY_TP_RCC_YZ,
+              avg(`HY_NH3_1_JQR`) HY_NH3_1_JQR,
+              avg(`HY_NH3_2_JQR`) HY_NH3_2_JQR,
+              avg(`HY_NH3_1_YZ`) HY_NH3_1_YZ,
+              avg(`HY_NO3_HLC1_YZ`) HY_NO3_HLC1_YZ,
+              avg(`HY_NH3_2_YZ`) HY_NH3_2_YZ,
+              avg(`HY_NO3_HLC2_YZ`) HY_NO3_HLC2_YZ,
+              avg(`HY_NO3_HLJ1_JQR`) HY_NO3_HLJ1_JQR,
+              avg(`HY_NO3_HLJ2_JQR`) HY_NO3_HLJ2_JQR,
+              avg(`HY_TYLL`) HY_TYLL,
+              avg(`HY_NO3_QYC_1_JQR`) HY_NO3_QYC_1_JQR,
+              avg(`HY_NO3_QYC_2_JQR`) HY_NO3_QYC_2_JQR,
+              avg(`HY_NO3_QYC_1_YZ`) HY_NO3_QYC_1_YZ,
+              avg(`HY_NO3_QYC_2_YZ`) HY_NO3_QYC_2_YZ,
+              avg(`HY_JSLL`) HY_JSLL,
+              avg(`JS_JS_TDB`) JS_JS_TDB,
+              avg(`JS_JS_TLB`) JS_JS_TLB,
+              avg(`JS_JS_BOD_B_COD`) JS_JS_BOD_B_COD,
+              avg(`JS_YYQ_HRT`) JS_YYQ_HRT,
+              avg(`JS_QYQ_HRT`) JS_QYQ_HRT,
+              avg(`JS_HYQ_HRT`) JS_HYQ_HRT,
+              avg(`JS_HFXWNNDZB`) JS_HFXWNNDZB,
+              avg(`JS_F_M`) JS_F_M,
+              avg(`JS_GSLS`) JS_GSLS,
+              avg(`JS_GSLS_ONE`) JS_GSLS_ONE,
+              avg(`JS_GSLS_TWO`) JS_GSLS_TWO,
+              avg(`JS_XGS_GSLS`) JS_XGS_GSLS,
+              avg(`JS_XLCSC_BMFH`) JS_XLCSC_BMFH,
+              avg(`JS_XLCSC_HRT`) JS_XLCSC_HRT,
+              avg(`JS_CCCDC_BMFH`) JS_CCCDC_BMFH,
+              avg(`JS_CCCDC_HRT`) JS_CCCDC_HRT,
+              avg(`JS_ECC_BMFH`) JS_ECC_BMFH,
+              avg(`JS_ECC_HRT`) JS_ECC_HRT,
+              avg(`JS_ECC_GTFH`) JS_ECC_GTFH,
+              avg(`JS_CLSN_JCSJ`) JS_CLSN_JCSJ,
+              avg(`JS_XGCDC_QSQ_SSLS`) JS_XGCDC_QSQ_SSLS,
+              avg(`JS_WHLB`) JS_WHLB,
+              avg(`JS_WHLB_R_N`) JS_WHLB_R_N,
+              avg(`JS_NHLB`) JS_NHLB,
+              avg(`JS_WDSCNL`) JS_WDSCNL,
+              avg(`JS_QSB`) JS_QSB,
+              avg(`JS_FCXSL`) JS_FCXSL,
+              avg(`JS_FCXSLBL`) JS_FCXSLBL
+        FROM
+            t_xinyi_big_table_day
+        GROUP BY
+            DATE_FORMAT(STR_TO_DATE(TEST_DATE, '%Y/%m/%d'), '%Y/%m');
+    </select>
+
 </mapper>

+ 170 - 3
slibra-system/src/main/resources/mapper/business/TXinyiBigTableHourMapper.xml

@@ -386,7 +386,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectTXinyiBigTableHourVo"/>
         where ID = #{ID} and del_flag = 0
     </select>
-        
+
     <insert id="insertTXinyiBigTableHour" parameterType="TXinyiBigTableHour" useGeneratedKeys="true" keyProperty="ID">
         insert into t_xinyi_big_table_hour
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -955,8 +955,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where ID = #{ID}
     </update>
 
-    
-
     <delete id="deleteTXinyiBigTableHourByID" parameterType="Long">
         update t_xinyi_big_table_hour set del_flag = 2,revision = revision + 1 where del_flag = 0 and ID = #{ID}
     </delete>
@@ -967,4 +965,173 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{ID}
         </foreach>
     </delete>
+
+    <select id="selectTXinyiBigTableHourByTestDate" resultMap="TXinyiBigTableHourResult">
+        select TEST_DATE from t_xinyi_big_table_hour group by TEST_DATE
+    </select>
+    <select id="selectTXinyiBigTableHourAvg" resultMap="TXinyiBigTableHourResult">
+        select
+              avg(`GY_JS_COD`) GY_JS_COD,
+              avg(`GY_JS_PH`) GY_JS_PH,
+              avg(`GY_JS_SS`) GY_JS_SS,
+              avg(`GY_JS_TP`) GY_JS_TP,
+              avg(`GY_JS_TN`) GY_JS_TN,
+              avg(`GY_JS_NH3`) GY_JS_NH3,
+              avg(`GY_JS_SW_PH`) GY_JS_SW_PH,
+              avg(`GY_JS_BFYW`) GY_JS_BFYW,
+              avg(`GY_CS_SLQC`) GY_CS_SLQC,
+              avg(`GY_CS_COD`) GY_CS_COD,
+              avg(`GY_CS_PH`) GY_CS_PH,
+              avg(`GY_CS_SS`) GY_CS_SS,
+              avg(`GY_CS_TN`) GY_CS_TN,
+              avg(`GY_CS_TP`) GY_CS_TP,
+              avg(`GY_CS_NH3`) GY_CS_NH3,
+              avg(`GY_ONE_HYZD_DO`) GY_ONE_HYZD_DO,
+              avg(`GY_ONE_HYMD_DO`) GY_ONE_HYMD_DO,
+              avg(`GY_TWO_HYZD_DO`) GY_TWO_HYZD_DO,
+              avg(`GY_TWO_HYMD_DO`) GY_TWO_HYMD_DO,
+              avg(`GY_ONE_MLSS`) GY_ONE_MLSS,
+              avg(`GY_TWO_MLSS`) GY_TWO_MLSS,
+              avg(`GY_JS_TDS`) GY_JS_TDS,
+              avg(`GY_JS_SLQ`) GY_JS_SLQ,
+              avg(`GY_N_HLB_ONE_GP`) GY_N_HLB_ONE_GP,
+              avg(`GY_N_HLB_TWO_GP`) GY_N_HLB_TWO_GP,
+              avg(`GY_N_HLB_THREE_GP`) GY_N_HLB_THREE_GP,
+              avg(`GY_N_HLB_FOUR_GP` ) GY_N_HLB_FOUR_GP,
+              avg(`GY_NHL_B_FIVE_GP`) GY_NHL_B_FIVE_GP,
+              avg(`GY_N_HLB_SIX_GP`) GY_N_HLB_SIX_GP,
+              avg(`GY_W_HLB_ONE_GP`) GY_W_HLB_ONE_GP,
+              avg(`GY_W_HLB_TWO_GP`) GY_W_HLB_TWO_GP,
+              avg(`GY_W_HLB_THREE_GP`) GY_W_HLB_THREE_GP,
+              avg(`GY_W_HLB_FOUR_GP`) GY_W_HLB_FOUR_GP,
+              avg(`GY_W_HLB_FIVE_GP`) GY_W_HLB_FIVE_GP,
+              avg(`GY_FJ_ONE`) GY_FJ_ONE,
+              avg(`GY_FJ_TWO`) GY_FJ_TWO,
+              avg(`GY_FJ_THREE`) GY_FJ_THREE,
+              avg(`GY_FJ_FOUR`) GY_FJ_FOUR,
+              avg(`GY_FJ_FIVE`) GY_FJ_FIVE,
+              avg(`GY_FJ_SIX`) GY_FJ_SIX,
+              avg(`GY_KQLL_ONE`) GY_KQLL_ONE,
+              avg(`GY_KQLL_TWO`) GY_KQLL_TWO,
+              avg(`GY_KQLL_THREE`) GY_KQLL_THREE,
+              avg(`GY_KQLL_FOUR`) GY_KQLL_FOUR,
+              avg(`GY_KQLL_FIVE`) GY_KQLL_FIVE,
+              avg(`GY_KQLL_SIX`) GY_KQLL_SIX,
+              avg(`GY_SJTYJLY`) GY_SJTYJLY,
+              avg(`GY_CLJYSSLL`) GY_CLJYSSLL,
+              avg(`GY_CL_P04_YCZ`) GY_CL_P04_YCZ,
+              avg(`RB_JS_COD`) RB_JS_COD,
+              avg(`RB_JS_PH`) RB_JS_PH,
+              avg(`RB_JS_BOD5`) RB_JS_BOD5,
+              avg(`RB_JS_SS`) RB_JS_SS,
+              avg(`RB_JS_NH3`) RB_JS_NH3,
+              avg(`RB_JS_TN`) RB_JS_TN,
+              avg(`RB_JS_TP`) RB_JS_TP,
+              avg(`RB_JS_DCGJ`) RB_JS_DCGJ,
+              avg(`RB_CS_COD`) RB_CS_COD,
+              avg(`RB_CS_PH`) RB_CS_PH,
+              avg(`RB_CS_BOD5`) RB_CS_BOD5,
+              avg(`RB_CS_SS`) RB_CS_SS,
+              avg(`RB_CS_NH3`) RB_CS_NH3,
+              avg(`RB_CS_TN`) RB_CS_TN,
+              avg(`RB_CS_TP`) RB_CS_TP,
+              avg(`RB_CS_DCGJ`) RB_CS_DCGJ,
+              avg(`RB_JS_SW`) RB_JS_SW,
+              avg(`RB_CS_SW`) RB_CS_SW,
+              avg(`RB_SHC_ONE_PH`) RB_SHC_ONE_PH,
+              avg(`RB_SHC_TWO_PH`) RB_SHC_TWO_PH,
+              avg(`RB_SHC_HY_ONE_SV`) RB_SHC_HY_ONE_SV,
+              avg(`RB_SHC_HY_TWO_SV`) RB_SHC_HY_TWO_SV,
+              avg(`RB_SHC_HY_ONE_SVI`) RB_SHC_HY_ONE_SVI,
+              avg(`RB_SHC_HY_TWO_SVI`) RB_SHC_HY_TWO_SVI,
+              avg(`RB_SHC_HY_ONE_MLSS`) RB_SHC_HY_ONE_MLSS,
+              avg(`RB_SHC_HY_TWO_MLSS`) RB_SHC_HY_TWO_MLSS,
+              avg(`RB_SHC_HY_ONE_MLVSS`) RB_SHC_HY_ONE_MLVSS,
+              avg(`RB_SHC_HY_TWO_MLVSS`) RB_SHC_HY_TWO_MLVSS,
+              avg(`RB_SHC_YY_ONE_DO`) RB_SHC_YY_ONE_DO,
+              avg(`RB_SHC_YY_TWO_DO`) RB_SHC_YY_TWO_DO,
+              avg(`RB_SHC_QY_ONE_DO`) RB_SHC_QY_ONE_DO,
+              avg(`RB_SHC_QY_TWO_DO`) RB_SHC_QY_TWO_DO,
+              avg(`RB_SHC_HY_ONE_DO`) RB_SHC_HY_ONE_DO,
+              avg(`RB_SHC_HY_TWO_DO`) RB_SHC_HY_TWO_DO,
+              avg(`RB_JSL`) RB_JSL,
+              avg(`RB_CSL`) RB_CSL,
+              avg(`RB_SDCLCXSL`) RB_SDCLCXSL,
+              avg(`RB_QSB`) RB_QSB,
+              avg(`RB_F_M`) RB_F_M,
+              avg(`RB_YY_HRT`) RB_YY_HRT,
+              avg(`RB_HY_HRT`) RB_HY_HRT,
+              avg(`RB_QY_HRT`) RB_QY_HRT,
+              avg(`RB_NHL_R`) RB_NHL_R,
+              avg(`RB_WHL_R`) RB_WHL_R,
+              avg(`RB_SRT`) RB_SRT,
+              avg(`RB_CNL`) RB_CNL,
+              avg(`RB_TYQ_BOD5_TN`) RB_TYQ_BOD5_TN,
+              avg(`RB_TYH_BOD5_TN`) RB_TYH_BOD5_TN,
+              avg(`RB_CHUNILIANG`) RB_CHUNILIANG,
+              avg(`RB_CNHSL`) RB_CNHSL,
+              avg(`RB_GWNL`) RB_GWNL ,
+              avg(`RB_DF`) RB_DF,
+              avg(`RB_XNJF`) RB_XNJF,
+              avg(`RB_CLF`) RB_CLF,
+              avg(`RB_TYF`) RB_TYF,
+              avg(`RB_XDJF`) RB_XDJF,
+              avg(`RB_QTYJF`) RB_QTYJF,
+              avg(`RB_CNF`) RB_CNF,
+              avg(`RB_ZLSF`) RB_ZLSF,
+              avg(`RB_ZJCB`) RB_ZJCB,
+              avg(`RB_DWCB`) RB_DWCB,
+              avg(`HY_COD_YB`) HY_COD_YB,
+              avg(`HY_COD_JQR`) HY_COD_JQR,
+              avg(`HY_COD_YZ`) HY_COD_YZ,
+              avg(`HY_TP_HL1_JQR`) HY_TP_HL1_JQR,
+              avg(`HY_TP_HL2_JQR`) HY_TP_HL2_JQR,
+              avg(`HY_TP_RCC_JQR`) HY_TP_RCC_JQR,
+              avg(`HY_TP_1_YZ`) HY_TP_1_YZ,
+              avg(`HY_TP_2_YZ`) HY_TP_2_YZ,
+              avg(`HY_TP_RCC_YZ`) HY_TP_RCC_YZ,
+              avg(`HY_NH3_1_JQR`) HY_NH3_1_JQR,
+              avg(`HY_NH3_2_JQR`) HY_NH3_2_JQR,
+              avg(`HY_NH3_1_YZ`) HY_NH3_1_YZ,
+              avg(`HY_NO3_HLC1_YZ`) HY_NO3_HLC1_YZ,
+              avg(`HY_NH3_2_YZ`) HY_NH3_2_YZ,
+              avg(`HY_NO3_HLC2_YZ`) HY_NO3_HLC2_YZ,
+              avg(`HY_NO3_HLJ1_JQR`) HY_NO3_HLJ1_JQR,
+              avg(`HY_NO3_HLJ2_JQR`) HY_NO3_HLJ2_JQR,
+              avg(`HY_TYLL`) HY_TYLL,
+              avg(`HY_NO3_QYC_1_JQR`) HY_NO3_QYC_1_JQR,
+              avg(`HY_NO3_QYC_2_JQR`) HY_NO3_QYC_2_JQR,
+              avg(`HY_NO3_QYC_1_YZ`) HY_NO3_QYC_1_YZ,
+              avg(`HY_NO3_QYC_2_YZ`) HY_NO3_QYC_2_YZ,
+              avg(`HY_JSLL`) HY_JSLL,
+              avg(`JS_JS_TDB`) JS_JS_TDB,
+              avg(`JS_JS_TLB`) JS_JS_TLB,
+              avg(`JS_JS_BOD_B_COD`) JS_JS_BOD_B_COD,
+              avg(`JS_YYQ_HRT`) JS_YYQ_HRT,
+              avg(`JS_QYQ_HRT`) JS_QYQ_HRT,
+              avg(`JS_HYQ_HRT`) JS_HYQ_HRT,
+              avg(`JS_HFXWNNDZB`) JS_HFXWNNDZB,
+              avg(`JS_F_M`) JS_F_M,
+              avg(`JS_GSLS`) JS_GSLS,
+              avg(`JS_GSLS_ONE`) JS_GSLS_ONE,
+              avg(`JS_GSLS_TWO`) JS_GSLS_TWO,
+              avg(`JS_XGS_GSLS`) JS_XGS_GSLS,
+              avg(`JS_XLCSC_BMFH`) JS_XLCSC_BMFH,
+              avg(`JS_XLCSC_HRT`) JS_XLCSC_HRT,
+              avg(`JS_CCCDC_BMFH`) JS_CCCDC_BMFH,
+              avg(`JS_CCCDC_HRT`) JS_CCCDC_HRT,
+              avg(`JS_ECC_BMFH`) JS_ECC_BMFH,
+              avg(`JS_ECC_HRT`) JS_ECC_HRT,
+              avg(`JS_ECC_GTFH`) JS_ECC_GTFH,
+              avg(`JS_CLSN_JCSJ`) JS_CLSN_JCSJ,
+              avg(`JS_XGCDC_QSQ_SSLS`) JS_XGCDC_QSQ_SSLS,
+              avg(`JS_WHLB`) JS_WHLB,
+              avg(`JS_WHLB_R_N`) JS_WHLB_R_N,
+              avg(`JS_NHLB`) JS_NHLB,
+              avg(`JS_WDSCNL`) JS_WDSCNL,
+              avg(`JS_QSB`) JS_QSB,
+              avg(`JS_FCXSL`) JS_FCXSL,
+              avg(`JS_FCXSLBL`) JS_FCXSLBL
+        from t_xinyi_big_table_hour where TEST_DATE = #{testDate}
+    </select>
 </mapper>