Преглед изворни кода

Merge branch 'master' of http://116.63.33.55/git/read_opc

Zt пре 2 година
родитељ
комит
a55154419a
18 измењених фајлова са 298 додато и 49 уклоњено
  1. 5 1
      chuanyi_client2/src/api/datasource.js
  2. 1 0
      chuanyi_client2/src/assets/icons/svg/report_template.svg
  3. BIN
      chuanyi_client2/src/assets/images/muban.png
  4. 36 2
      chuanyi_client2/src/components/HeaderMain/index.vue
  5. 86 12
      chuanyi_client2/src/views/report_template/index.vue
  6. 3 3
      chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/RawDataController.java
  7. 5 4
      chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/ReportTableController.java
  8. 1 1
      chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/RawDataDao.java
  9. 1 1
      chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/ItemGroup.java
  10. 6 12
      chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/TableDataDto.java
  11. 20 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/TableDataDtoCh.java
  12. 1 1
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/RawDataService.java
  13. 1 1
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/ReportTableService.java
  14. 1 1
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ItemGroupServiceImpl.java
  15. 18 5
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/RawDataServiceImpl.java
  16. 4 2
      chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ReportTableServiceImpl.java
  17. 10 0
      chuanyi_server/src/main/java/com/judong/chuanyiserver/util/ConstantStr.java
  18. 99 3
      chuanyi_server/src/main/resources/mapper/RawDataDao.xml

+ 5 - 1
chuanyi_client2/src/api/datasource.js

@@ -358,8 +358,12 @@ export function updateReportTemplate(data) {
  * @returns {AxiosPromise}
  */
 export function getAllTableTemplate(params) {
+    let uri = '?page=' + params.page + '&limit=' + params.limit
+    if (params.userId) {
+        uri += '&userId=' + params.userId
+    }
     return request({
-        url: '/reportTable/getAllTableTemplate?page=' + params.page + '&limit=' + params.limit,
+        url: '/reportTable/getAllTableTemplate' + uri,
         headers: {
             isToken: true
         },

+ 1 - 0
chuanyi_client2/src/assets/icons/svg/report_template.svg

@@ -0,0 +1 @@
+<svg t="1673921064718" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5484" width="16" height="16"><path d="M880.179775 0H143.820225A97.797753 97.797753 0 0 0 46.022472 97.797753v828.404494a97.797753 97.797753 0 0 0 97.797753 97.797753h736.35955a97.797753 97.797753 0 0 0 97.797753-97.797753V97.797753a97.797753 97.797753 0 0 0-97.797753-97.797753z m17.258427 926.202247a17.258427 17.258427 0 0 1-17.258427 17.258427H143.820225a17.258427 17.258427 0 0 1-17.258427-17.258427V97.797753a17.258427 17.258427 0 0 1 17.258427-17.258427h736.35955a17.258427 17.258427 0 0 1 17.258427 17.258427z" fill="#467CFD" p-id="5485"></path><path d="M604.965393 798.202247H268.94382c-60.692135 0-58.160899 72.197753 0 72.197753h336.021573c64.488989-0.057528 55.629663-72.197753 0-72.197753zM604.965393 514.473708H268.94382c-60.692135 0-58.160899 72.197753 0 72.197753h336.021573c64.488989 0.115056 55.629663-72.197753 0-72.197753zM266.930337 728.478202h201.923596c61.612584 0 53.155955-72.140225 0-72.140224H266.930337c-57.988315 0-55.572135 72.140225 0 72.140224z" fill="#467CFD" p-id="5486"></path><path d="M221.483146 149.055281m17.661124 0l545.71146 0q17.661124 0 17.661124 17.661123l0 247.083147q0 17.661124-17.661124 17.661123l-545.71146 0q-17.661124 0-17.661124-17.661123l0-247.083147q0-17.661124 17.661124-17.661123Z" fill="#8BAEF7" p-id="5487"></path><path d="M763.512809 834.27236m-36.12764 0a36.12764 36.12764 0 1 0 72.25528 0 36.12764 36.12764 0 1 0-72.25528 0Z" fill="#467CFD" p-id="5488"></path><path d="M763.512809 692.40809m-36.12764 0a36.12764 36.12764 0 1 0 72.25528 0 36.12764 36.12764 0 1 0-72.25528 0Z" fill="#467CFD" p-id="5489"></path><path d="M763.512809 550.54382m-36.070112 0a36.070112 36.070112 0 1 0 72.140224 0 36.070112 36.070112 0 1 0-72.140224 0Z" fill="#467CFD" p-id="5490"></path></svg>

BIN
chuanyi_client2/src/assets/images/muban.png


+ 36 - 2
chuanyi_client2/src/components/HeaderMain/index.vue

@@ -145,6 +145,16 @@
                   <template slot="append" v-if="groupRateForm.readMode == '2'">秒</template>
                 </el-input>
               </el-form-item>
+              <el-form-item label='取值模式' prop="valueMode">
+                <el-select v-model="groupRateForm.valueMode" placeholder="请选择取值模式" style="width: 100%;">
+                  <el-option
+                      v-for="dict in valueModeList"
+                      :key="dict.value"
+                      :label="dict.key"
+                      :value="dict.value"
+                  ></el-option>
+                </el-select>
+              </el-form-item>
             </el-form>
           </div>
         </el-tab-pane>
@@ -354,6 +364,19 @@ export default {
         'key': '频率',
         'value': '2'
       }],
+      valueModeList: [{
+        'key': '平均值',
+        'value': '0'
+      }, {
+        'key': '最大值',
+        'value': '1'
+      }, {
+        'key': '最小值',
+        'value': '2'
+      }, {
+        'key': '瞬时值',
+        'value': '3'
+      }],
       // 数据源
       dataSourceList: [],
       // 数据项
@@ -373,7 +396,8 @@ export default {
       },
       groupRateForm: {
         readMode: null,
-        modeValue: ''
+        modeValue: '',
+        valueMode: ''
       },
       updateGroupData: null,
       tempItemList: [],
@@ -561,7 +585,8 @@ export default {
       }
       this.groupRateForm = {
         readMode: null,
-        modeValue: ''
+        modeValue: '',
+        valueMode: ''
       }
       this.chooseItemDataView = false
       this.getDataSourceList()
@@ -575,6 +600,7 @@ export default {
           let params = JSON.parse(JSON.stringify(this.groupBasicForm))
           params.readMode = this.groupRateForm.readMode
           params.modeValue = this.groupRateForm.modeValue
+          params.valueCondition = this.groupRateForm.valueMode
           if (params.id) {
             this.addGroupItem(params, '修改')
           } else {
@@ -637,6 +663,7 @@ export default {
         this.chooseItemDataView = true
         this.groupRateForm.readMode = item.readMode + ''
         this.groupRateForm.modeValue = item.modeValue
+        this.groupRateForm.valueMode = item.valueCondition
       }).catch((e) => {
       })
     },
@@ -787,6 +814,13 @@ export default {
         })
         return false
       }
+      if (!this.groupRateForm.valueMode) {
+        this.$message({
+          message: '频率设置中取值模式不能为空!',
+          type: 'warning'
+        })
+        return false
+      }
       if (!this.groupBasicForm.dataSourceId) {
         this.$message({
           message: '请选择数据源!',

+ 86 - 12
chuanyi_client2/src/views/report_template/index.vue

@@ -34,10 +34,18 @@
           <span>重置</span>
         </div>
         <el-divider></el-divider>
+        <div class="cy-chart-div" @click="templateEvent()">
+          <svg-icon icon-class="report_template" style="width: 35px;"/>
+          <span>模板库</span>
+        </div>
         <div class="cy-chart-div" @click="dataEvent()">
           <svg-icon icon-class="report_data" style="width: 35px;"/>
-          <span>数据表</span>
+          <span>数据</span>
         </div>
+<!--        <div class="cy-chart-div" @click="dataEvent1()">-->
+<!--          <svg-icon icon-class="report_data" style="width: 35px;"/>-->
+<!--          <span>数据表</span>-->
+<!--        </div>-->
         <div class="cy-chart-div" @click="barEvent('bar')">
           <svg-icon icon-class="bar_chart"/>
           <span>柱状图</span>
@@ -86,10 +94,10 @@
           <el-radio v-model="barChartForm.showLegend" label="1">是</el-radio>
           <el-radio v-model="barChartForm.showLegend" label="0">否</el-radio>
         </el-form-item>
-        <el-form-item label="图例:" prop="legendType" v-if="barChartForm.type != 'pie'">
-          <el-radio v-model="barChartForm.legendType" label="1">数据项</el-radio>
-          <el-radio v-model="barChartForm.legendType" label="0">值</el-radio>
-        </el-form-item>
+<!--        <el-form-item label="图例:" prop="legendType" v-if="barChartForm.type != 'pie'">-->
+<!--          <el-radio v-model="barChartForm.legendType" label="1">数据项</el-radio>-->
+<!--          <el-radio v-model="barChartForm.legendType" label="0">值</el-radio>-->
+<!--        </el-form-item>-->
         <el-form-item label="数据组:">
           <el-select filterable
                      v-model="chooseDataGroup"
@@ -259,6 +267,31 @@
       </div>
     </el-dialog>
 
+    <!-- 公共模板报表类型选择 -->
+    <el-dialog
+        title="选择模板报表"
+        width="500px"
+        center
+        :before-close="dialogClose"
+        :visible.sync="dialogCommReportVisible"
+        :close-on-click-modal="false"
+        :append-to-body="true">
+      <div style="height: 220px; overflow: auto;">
+        <div v-for="item in commTemplateList"
+             style="float: left;width: 50%;display: flex;flex-direction: column;align-items: center;margin-top: 10px;">
+          <el-image :src="require('@/assets/images/muban.png')" fit="contain" style="height: 80px;"></el-image>
+          <el-radio v-model="commTemplate" :label="item"
+                    style="margin-top: 5px;width: 100%;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;text-align: center;">
+            {{ item.templateName }}
+          </el-radio>
+        </div>
+      </div>
+      <div style="text-align: center; margin-top: 40px;">
+        <el-button type="primary" @click="commReportEvent">确定</el-button>
+        <el-button @click="dialogClose">取消</el-button>
+      </div>
+    </el-dialog>
+
   </div>
   <div v-else></div>
 </template>
@@ -268,7 +301,7 @@ import RulerView from '@/components/RulerView'
 import { insertEChart } from 'luckytool'
 import {
   getAllDataModel,
-  getAllItemGroup,
+  getAllItemGroup, getAllTableTemplate,
   getTableItemGroupById,
   getTableTemplateById,
   saveReportTemplate,
@@ -288,6 +321,7 @@ export default {
       dialogDataVisible: false,
       dialogDataItemVisible: false,
       dialogDataModelVisible: false,
+      dialogCommReportVisible: false,
       menuLeft: 0,
       menuTop: 0,
       visibleChartMenu: false,
@@ -329,6 +363,8 @@ export default {
           { key: 'calcDataValue', label: 'calcDataValue(数据计算值)', sort: 71 }
       ],
       transferValue: [],
+      commTemplate: null,
+      commTemplateList: [],
       templateName: '',
       templateId: '',
       reportTemplateItem: 'REPORT_TEMPLATE_ITEM',
@@ -369,15 +405,15 @@ export default {
           copy: false, // 复制
           copyAs: false, // 复制为
           paste: false, // 粘贴
-          insertRow: false, // 插入行
-          insertColumn: false, // 插入列
-          deleteRow: false, // 删除选中行
-          deleteColumn: false, // 删除选中列
+          insertRow: true, // 插入行
+          insertColumn: true, // 插入列
+          deleteRow: true, // 删除选中行
+          deleteColumn: true, // 删除选中列
           deleteCell: false, // 删除单元格
           hideRow: false, // 隐藏选中行和显示选中行
           hideColumn: false, // 隐藏选中列和显示选中列
-          rowHeight: false, // 行高
-          columnWidth: false, // 列宽
+          rowHeight: true, // 行高
+          columnWidth: true, // 列宽
           clear: false, // 清除内容
           matrix: false, // 矩阵操作选区
           sort: false, // 排序选区
@@ -727,8 +763,44 @@ export default {
       })
       this.dialogDataModelVisible = false
     },
+    /** 报表模板库 */
+    templateEvent() {
+      let params = {
+        'page': 1,
+        'limit': 1000,
+        'userId': 'comm'
+      }
+      getAllTableTemplate(params).then(res => {
+        if (!res.data) {
+          return
+        }
+        this.dialogCommReportVisible = true
+        this.commTemplateList = res.data.tableTemplateList
+      }).catch((e) => {
+      })
+    },
+    /** 选择模板报表 */
+    commReportEvent() {
+      if (!this.commTemplate) {
+        this.$message({
+          message: '请选择模板!',
+          type: 'warning'
+        })
+        return
+      }
+      let locItem = this.commTemplate.templateData
+      luckysheet.destroy()
+      let option = JSON.parse(JSON.stringify(this.luckysheetOption))
+      option.data = JSON.parse(locItem).data
+      this.toolChart = JSON.parse(locItem).charts
+      luckysheet.create(option)
+      this.dialogClose()
+    },
     /** 数据项 */
     dataEvent() {
+    },
+    /** 数据表 */
+    dataEvent1() {
       let rangeWithFlatten = luckysheet.getRangeWithFlatten()
       if (!rangeWithFlatten || rangeWithFlatten.length != 1) {
         this.$message({
@@ -1024,6 +1096,7 @@ export default {
     },
     /** 弹出层关闭事件 */
     dialogClose(done) {
+      this.commTemplate = null
       if (typeof(done) === 'function') {
         done()
       } else {
@@ -1031,6 +1104,7 @@ export default {
         this.dialogDataVisible = false
         this.dialogDataItemVisible = false
         this.dialogDataModelVisible = false
+        this.dialogCommReportVisible = false
       }
     },
     /** 弹出层关闭事件 */

+ 3 - 3
chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/RawDataController.java

@@ -55,12 +55,12 @@ public class RawDataController {
     /**
      * 获取表格数据 其中TableDataDto的itemGroupId,itemName为必填选项
      *
-     * @param tableDataDtoList
+     * @param tableDataDto
      * @return
      */
     @PostMapping("/getTableData")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.REPORTTABLE, OperationEnum = OperationEnum.TABLEDATA)
-    public Result getTableData(@RequestBody List<TableDataDto> tableDataDtoList) {
-        return rawDataService.getTableData(tableDataDtoList);
+    public Result getTableData(@RequestBody TableDataDto tableDataDto) {
+        return rawDataService.getTableData(tableDataDto);
     }
 }

+ 5 - 4
chuanyi_server/src/main/java/com/judong/chuanyiserver/controller/ReportTableController.java

@@ -54,16 +54,17 @@ public class ReportTableController {
     }
 
     /**
-     * 获取当前登录人的所有报表模板
+     * 如果userId为空,则获取当前登录人的所有报表模板;不为空,则查询对应的参数的报表模板
      *
      * @param page
      * @param limit
+     * @param userId
      * @return
      */
     @GetMapping("/getAllTableTemplate")
     @WebLog(ServerEnum = ServerEnum.CLIENT, ModelEnum = ModelEnum.TABLETEMPLATE, OperationEnum = OperationEnum.SELECT)
-    public Result getAllTableTemplate(Integer page, Integer limit) {
-        return reportTableService.getAllTableTemplate(page, limit);
+    public Result getAllTableTemplate(Integer page, Integer limit, String userId) {
+        return reportTableService.getAllTableTemplate(page, limit, userId);
     }
 
     /**
@@ -170,7 +171,7 @@ public class ReportTableController {
     }
 
     @PostMapping("/tableExchangeFileById/{id}")
-    public Result tableExchangeFileById(@PathVariable Integer id){
+    public Result tableExchangeFileById(@PathVariable Integer id) {
         return null;
     }
 }

+ 1 - 1
chuanyi_server/src/main/java/com/judong/chuanyiserver/dao/RawDataDao.java

@@ -20,5 +20,5 @@ public interface RawDataDao {
 
     List<Map<String, Object>> getPieData(Integer itemGroupId, Integer remainder, Integer dataSourceId, List<Item> itemList);
 
-    List<String> getTableData(int itemGroupId, Integer remainder, String itemName);
+    List<Map<String, Object>> getTableDataEavg(int itemGroupId, Integer remainder, String itemName, Integer dataSourceId);
 }

+ 1 - 1
chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/ItemGroup.java

@@ -51,7 +51,7 @@ public class ItemGroup implements Serializable {
      */
     private String endReadTime;
     /**
-     * 取值条件
+     * 取值条件0平均值,1最大值,2最小值,3瞬时值
      */
     private Integer valueCondition;
     /**

+ 6 - 12
chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/TableDataDto.java

@@ -3,22 +3,16 @@ package com.judong.chuanyiserver.entity;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 @Data
 public class TableDataDto implements Serializable {
 
-    private static final long serialVersionUID = -96536212774977561L;
-
-    /**
-     * 数据组id
-     */
-    private Integer itemGroupId;
     /**
-     * 项名称
+     * 报表取值格式
      */
-    private String itemName;
-    /**
-     * 数据模型id
-     */
-    private Integer dataModelId;
+    private Integer reportValueFormat;
+
+    private List<TableDataDtoCh> tableDataDtoChList;
+
 }

+ 20 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/entity/TableDataDtoCh.java

@@ -0,0 +1,20 @@
+package com.judong.chuanyiserver.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class TableDataDtoCh implements Serializable {
+    private static final long serialVersionUID = -96536212774977561L;
+
+    /**
+     * 数据组id
+     */
+    private Integer itemGroupId;
+    /**
+     * 项名称
+     */
+    private String itemName;
+
+}

+ 1 - 1
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/RawDataService.java

@@ -13,5 +13,5 @@ public interface RawDataService {
 
     Result getChartData(ChartDataDto chartDataDto);
 
-    Result getTableData(List<TableDataDto> tableDataDtoList);
+    Result getTableData(TableDataDto tableDataDto);
 }

+ 1 - 1
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/ReportTableService.java

@@ -8,7 +8,7 @@ public interface ReportTableService {
 
     Result addTableTemplate(TableTemplate tableTemplate);
 
-    Result getAllTableTemplate(Integer page, Integer limit);
+    Result getAllTableTemplate(Integer page, Integer limit, String userId);
 
     Result getTableTemplateById(Integer id);
 

+ 1 - 1
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ItemGroupServiceImpl.java

@@ -382,7 +382,7 @@ public class ItemGroupServiceImpl implements ItemGroupService {
         } else if (dataSourceType.getDataSourceTypeKey().equals(DataSourceTypeEnum.OPC_DA_REAL.getValue()) ||
                 dataSourceType.getDataSourceTypeKey().equals(DataSourceTypeEnum.OPC_AE_ALARMS.getValue()) ||
                 dataSourceType.getDataSourceTypeKey().equals(DataSourceTypeEnum.OPC_HDA_HISTORY.getValue())) {
-
+            itemList = itemGroupDao.getItemListByGroupId(id);
         } else if (dataSourceType.getDataSourceTypeKey().equals(DataSourceTypeEnum.KEP_SERVER_REAL.getValue())) {
             itemList = itemGroupDao.getItemListByGroupId(id);
         } else {

+ 18 - 5
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/RawDataServiceImpl.java

@@ -122,16 +122,29 @@ public class RawDataServiceImpl implements RawDataService {
     }
 
     @Override
-    public Result getTableData(List<TableDataDto> tableDataDtoList) {
+    public Result getTableData(TableDataDto tableDataDto) {
         List<JSONObject> jsonObjectList = new ArrayList<>();
+        List<TableDataDtoCh> tableDataDtoChList = tableDataDto.getTableDataDtoChList();
 
-        for (TableDataDto tableDataDto : tableDataDtoList) {
+        if (Blank.isEmpty(tableDataDtoChList)) {
+            throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), ResultEnum.REQUEST_WRONGPARAMS.getRespMsg());
+        }
+        for (TableDataDtoCh tableDataDtoCh : tableDataDtoChList) {
             JSONObject jsonObject = new JSONObject();
-            Integer itemGroupId = tableDataDto.getItemGroupId();
+            Integer itemGroupId = tableDataDtoCh.getItemGroupId();
             Integer remainder = itemGroupId % ConstantStr.SUB_TABLE_NUM;
-            String itemName = tableDataDto.getItemName();
-            List<String> tableDataList = rawDataDao.getTableData(itemGroupId, remainder, itemName);
+            String itemName = tableDataDtoCh.getItemName();
             ItemGroup itemGroup = itemGroupDao.getItemGroupById(itemGroupId);
+            List<Map<String, Object>> tableDataList = new ArrayList<>();
+            if (tableDataDto.getReportValueFormat() == ConstantStr.EVERY_DAY_ES) {
+                if (itemGroup.getValueCondition() == ConstantStr.AVERAGE_VALUE) {
+                    tableDataList = rawDataDao.getTableDataEavg(itemGroupId, remainder, itemName, itemGroup.getDataSourceId());
+                } else {
+                    throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型数据组的取值条件");
+                }
+            } else {
+                throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "目前还未适配此种类型的报表取值格式");
+            }
             DataSource dataSource = dataSourceDao.getDataSourceById(itemGroup.getDataSourceId());
             DataSourceType dataSourceType = dataSourceDao.getDataSourceTypeById(dataSource.getTypeId());
             Item item = new Item();

+ 4 - 2
chuanyi_server/src/main/java/com/judong/chuanyiserver/service/impl/ReportTableServiceImpl.java

@@ -105,9 +105,11 @@ public class ReportTableServiceImpl implements ReportTableService {
     }
 
     @Override
-    public Result getAllTableTemplate(Integer page, Integer limit) {
+    public Result getAllTableTemplate(Integer page, Integer limit, String userId) {
         JSONObject jsonObject = new JSONObject();
-        String userId = userUtil.getCurrentUserId();
+        if (Blank.isEmpty(userId)) {
+            userId = userUtil.getCurrentUserId();
+        }
         Long count = reportTableDao.getTableTemplateCount(userId);
         Long startNum = Long.valueOf((page - 1) * limit);
         List<TableTemplate> tableTemplateList = reportTableDao.getAllTableTemplate(startNum, Long.valueOf(limit), userId);

+ 10 - 0
chuanyi_server/src/main/java/com/judong/chuanyiserver/util/ConstantStr.java

@@ -64,6 +64,16 @@ public class ConstantStr {
     public static final String BAR_CHART = "bar";
     public static final String PIE_CHART = "pie";
 
+    //取值条件
+    public static final Integer AVERAGE_VALUE = 0;
+    public static final Integer MAX_VALUE = 1;
+    public static final Integer MIN_VALUE = 2;
+    public static final Integer INSTANTANEOUS_VALUE = 3;
+
+    //报表取值格式
+    //每天的08:00到第二天的07:00
+    public static final Integer EVERY_DAY_ES= 0;
+
     //定时器时间间隔
     public static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
 

+ 99 - 3
chuanyi_server/src/main/resources/mapper/RawDataDao.xml

@@ -45,7 +45,7 @@
         SELECT id, data_source_id, item_name, data_type, data_value, create_time
         FROM t_raw_data${remainder}
         WHERE item_group_id = #{itemGroupId}
-          AND data_source_id =#{dataSourceId}
+          AND data_source_id = #{dataSourceId}
           AND item_name = #{itemName}
         ORDER BY create_time
         LIMIT 6
@@ -61,13 +61,109 @@
         a ORDER BY a.item_name,a.create_time
     </select>
 
-    <select id="getTableData" resultType="java.lang.String">
+    <select id="getTableDataEavg" resultType="java.util.Map">
         SELECT data_value
         FROM t_raw_data${remainder}
         WHERE item_group_id = #{itemGroupId}
           AND item_name = #{itemName}
-          AND data_source_id = (SELECT data_source_id FROM t_item_group WHERE id = #{itemGroupId})
+          AND data_source_id = #{dataSourceId}
         order by create_time
         LIMIT 10;
+        SELECT
+        IF
+        (
+        a.data_h &gt; 7,
+        date_format( CONCAT( date_format( CURRENT_DATE ()- 1, '%Y-%m-%d' ), ' ', a.data_h, ':00:00' ), '%Y-%m-%d %H:%i' ),
+        date_format( CONCAT( date_format( CURRENT_DATE (), '%Y-%m-%d' ), ' ', a.data_h, ':00:00' ), '%Y-%m-%d %H:%i' )) dh,
+        a.data_v dv
+        FROM
+        (
+        SELECT
+        CONCAT( timetable.HOUR, ':00:00' ) data_h,
+        ifnull( avgtable.data_val, 0 ) data_v
+        FROM
+        (
+        SELECT
+        0 HOUR UNION ALL
+        SELECT
+        1 HOUR UNION ALL
+        SELECT
+        2 HOUR UNION ALL
+        SELECT
+        3 HOUR UNION ALL
+        SELECT
+        4 HOUR UNION ALL
+        SELECT
+        5 HOUR UNION ALL
+        SELECT
+        6 HOUR UNION ALL
+        SELECT
+        7 HOUR UNION ALL
+        SELECT
+        8 HOUR UNION ALL
+        SELECT
+        9 HOUR UNION ALL
+        SELECT
+        10 HOUR UNION ALL
+        SELECT
+        11 HOUR UNION ALL
+        SELECT
+        12 HOUR UNION ALL
+        SELECT
+        13 HOUR UNION ALL
+        SELECT
+        14 HOUR UNION ALL
+        SELECT
+        15 HOUR UNION ALL
+        SELECT
+        16 HOUR UNION ALL
+        SELECT
+        17 HOUR UNION ALL
+        SELECT
+        18 HOUR UNION ALL
+        SELECT
+        19 HOUR UNION ALL
+        SELECT
+        20 HOUR UNION ALL
+        SELECT
+        21 HOUR UNION ALL
+        SELECT
+        22 HOUR UNION ALL
+        SELECT
+        23 HOUR
+        ) timetable
+        LEFT JOIN ((
+        SELECT HOUR
+        ( create_time ) AS data_hour,
+        avg( data_value ) AS data_val
+        FROM
+        t_raw_data${remainder}
+        WHERE
+        item_group_id = #{itemGroupId}
+        AND item_name = #{itemName}
+        AND data_source_id = #{dataSourceId}
+        AND date_format( create_time, '%Y-%m-%d' )= date_format( now(), '%Y-%m-%d' )
+        AND date_format( create_time, '%Y-%m-%d %H' ) &lt;= concat( date_format( now(), '%Y-%m-%d ' ), '07' )
+        GROUP BY
+        HOUR ( create_time )
+        ) UNION ALL
+        (
+        SELECT HOUR
+        ( create_time ),
+        avg( data_value )
+        FROM
+        t_raw_data${remainder}
+        WHERE
+        item_group_id = #{itemGroupId}
+        AND item_name = #{itemName}
+        AND data_source_id = #{dataSourceId}
+        AND date_format( create_time, '%Y-%m-%d' )= date_format( CURRENT_DATE ()- 1, '%Y-%m-%d' )
+        AND date_format( create_time, '%Y-%m-%d %H' ) &gt;= concat( date_format( CURRENT_DATE ()- 1, '%Y-%m-%d ' ), '08' )
+        GROUP BY
+        HOUR ( create_time ))
+        ) avgtable ON timetable.HOUR = avgtable.data_hour
+        ) a
+        ORDER BY
+        dh
     </select>
 </mapper>