浏览代码

Merge branch 'master' of http://116.63.33.55/git/industry-data-platform

ws 11 月之前
父节点
当前提交
7afee7c394
共有 27 个文件被更改,包括 332 次插入122 次删除
  1. 12 12
      PrintServer/src/main/java/com/jd/printserver/controller/PrintServerController.java
  2. 53 39
      industry-admin/src/views/collector/index.vue
  3. 12 1
      industry-admin/src/views/report/reportTablePolicy/index.vue
  4. 1 1
      industry-admin/src/views/report/reportTablePolicy/reportDataPolicy.vue
  5. 12 14
      industry-admin/src/views/source/itemGroup/item.vue
  6. 2 0
      industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/enums/ResultEnum.java
  7. 12 0
      industry-system/industry-da/src/main/java/com/example/opc_da/dao/CollectorDao.java
  8. 13 0
      industry-system/industry-da/src/main/java/com/example/opc_da/dao/ReportDataPolicyDao.java
  9. 6 0
      industry-system/industry-da/src/main/java/com/example/opc_da/dao/ReportTableDao.java
  10. 19 0
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/CollectorServiceImpl.java
  11. 2 2
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/DataModelServiceImpl.java
  12. 1 1
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/DataSourceServiceImpl.java
  13. 46 5
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java
  14. 13 0
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportDataPolicyServiceImpl.java
  15. 4 1
      industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java
  16. 26 2
      industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticReportTableValidate.java
  17. 14 0
      industry-system/industry-da/src/main/resources/mapper/CollectorDao.xml
  18. 5 6
      industry-system/industry-da/src/main/resources/mapper/ItemGroupDao.xml
  19. 15 0
      industry-system/industry-da/src/main/resources/mapper/ReportDataPolicyDao.xml
  20. 7 0
      industry-system/industry-da/src/main/resources/mapper/ReportTableDao.xml
  21. 0 0
      industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.esm.js
  22. 0 0
      industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.esm.js.map
  23. 1 1
      industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.umd.js
  24. 0 0
      industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.umd.js.map
  25. 19 3
      industry-system/industry-da/src/main/resources/static/reportSheet/js/report-history.js
  26. 4 2
      industry-system/industry-da/src/main/resources/static/reportSheet/js/src/model/right-menu.js
  27. 33 32
      industry-system/industry-da/src/main/resources/static/reportSheet/js/src/model/sheet-util.js

+ 12 - 12
PrintServer/src/main/java/com/jd/printserver/controller/PrintServerController.java

@@ -41,17 +41,17 @@ public class PrintServerController extends BaseController {
     @Value("${data.app.version}")
     private String appVersion;
 
-    @RequestMapping(value = "/appVersion")
+    /*@RequestMapping(value = "/appVersion")
     @CrossOrigin
     public AjaxResult appVersion() {
         return success((Object) appVersion);
-    }
+    }*/
 
-    @RequestMapping(value = "/testInstalled")
+    /*@RequestMapping(value = "/testInstalled")
     @CrossOrigin
     public AjaxResult testInstalled() {
         return success();
-    }
+    }*/
 
     /*@RequestMapping(value = "/settingShow")
     public AjaxResult settingShow(){
@@ -65,7 +65,7 @@ public class PrintServerController extends BaseController {
         });
         return success();
     }*/
-    @PostMapping(value = "/uploadExcel")
+    /*@PostMapping(value = "/uploadExcel")
     @CrossOrigin
     public AjaxResult uploadExcel(@RequestParam("file") MultipartFile file, String randomId) {
         // 判断文件是否存在
@@ -99,7 +99,7 @@ public class PrintServerController extends BaseController {
         log.info("uploadExcel.resultData:{}", resultData);
         log.info("上传excel文件的地址:{}", excelFile.getAbsolutePath());
         return success();
-    }
+    }*/
 
     /**
      * 查询打印机名称的列表
@@ -293,7 +293,7 @@ public class PrintServerController extends BaseController {
      * @param printConfig 打印配置JSON字符串。必填
      * @return
      */
-    @RequestMapping(value = "/printUrl")
+    /*@RequestMapping(value = "/printUrl")
     @CrossOrigin
     public AjaxResult printUrl(HttpServletRequest request, String excelUrl, String id, String clientIP, String printConfig) {
 //        printConfig = new PrintParam();
@@ -397,9 +397,9 @@ public class PrintServerController extends BaseController {
         log.info("删除{}天前的打印文件{}", 30, excelFile.getParent());
         FileUtils.deleteFileDate(excelFile.getParentFile(), 30);
         return success();
-    }
+    }*/
 
-    @RequestMapping(value = "/printUrlreal")
+    /*@RequestMapping(value = "/printUrlreal")
     @CrossOrigin
     public AjaxResult printUrlreal(HttpServletRequest request, String excelUrl, String id, String clientIP, String printConfig) {
 //        printConfig = new PrintParam();
@@ -503,7 +503,7 @@ public class PrintServerController extends BaseController {
         log.info("删除{}天前的打印文件{}", 30, excelFile.getParent());
         FileUtils.deleteFileDate(excelFile.getParentFile(), 30);
         return success();
-    }
+    }*/
 
     @PostMapping(value = "/printReportTable")
     @CrossOrigin
@@ -522,7 +522,7 @@ public class PrintServerController extends BaseController {
         return error();
     }
 
-    @PostMapping(value = "/printPdf")
+    /*@PostMapping(value = "/printPdf")
     @CrossOrigin
     public AjaxResult printPdf(HttpServletRequest request, @RequestParam("pdfUrl") String pdfUrl, @RequestParam(value = "printConfig") String printConfig) {
 
@@ -555,5 +555,5 @@ public class PrintServerController extends BaseController {
             return error("打印失败");
         }
         return success();
-    }
+    }*/
 }

+ 53 - 39
industry-admin/src/views/collector/index.vue

@@ -210,8 +210,8 @@
         </el-table>
       </el-row>
       <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="handelConfigSubmit()" size="mini">确定</el-button>
-        <el-button @click="handelConfigCancel()" size="mini">取消</el-button>
+        <el-button v-if="false" type="primary" @click="handelConfigSubmit()" size="mini">确定</el-button>
+        <el-button @click="handelConfigCancel()" size="mini">关闭</el-button>
       </span>
     </el-dialog>
     <el-dialog title="日志" :visible.sync="dialogLog" width="800px" :close-on-click-modal="false">
@@ -423,7 +423,7 @@ export default {
     this.statusTask = setInterval(() => {
       this.getClientStatusByList();
       this.getClientErrorList();
-    }, 15000)
+    }, 60000)
 
   },
   beforeDestroy() {
@@ -584,41 +584,48 @@ export default {
         this.$refs['configForm'].resetFields()
       }
       this.itemTableData = []
+      let data = this.configForm
+      this.refreshConfig(data.id)
     },
     handelConfigSubmit() {
-          if (this.itemTableData.length === 0) {
-            this.$message({
-              message: '请配置需要采集的数据组',
-              type: 'warning'
-            })
-            return;
-          }
-          const loading = this.$loading({
-            lock: true,
-            text: 'Loading',
-            spinner: 'el-icon-loading',
-            background: 'rgba(0, 0, 0, 0.7)'
-          })
-          let data = this.configForm;
-          data.itemJson = JSON.stringify(this.itemTableData)
-          saveConfigInfo(data).then((json) => {
-            loading.close()
-            if (json.code != 200) {
-              this.$message({
-                message: json.msg,
-                type: 'warning'
-              })
-              return;
-            }
-            this.$message({
-              message: '配置成功',
-              type: 'success'
-            })
-            this.refreshConfig(data.id)
-            this.handelConfigCancel()
-          })
+      this.saveConfigInfo((data) => {
+        this.refreshConfig(data.id)
+        this.handelConfigCancel()
+      })
 
     },
+    saveConfigInfo(callback){
+      if (this.itemTableData.length === 0) {
+        this.$message({
+          message: '请配置需要采集的数据组',
+          type: 'warning'
+        })
+        return;
+      }
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      let data = this.configForm;
+      data.itemJson = JSON.stringify(this.itemTableData)
+      saveConfigInfo(data).then((json) => {
+        loading.close()
+        if (json.code != 200) {
+          this.$message({
+            message: json.msg,
+            type: 'warning'
+          })
+          return;
+        }
+        this.$message({
+          message: '配置成功',
+          type: 'success'
+        })
+        if(callback)callback(data)
+      })
+    },
     handelStart(id) {
       const loading = this.$loading({
         lock: true,
@@ -702,8 +709,6 @@ export default {
             }
             return item
           })
-
-
         } else {
           const arr = this.itemTableData.filter(item => {
             return data.itemGroupId === item.itemGroupId
@@ -717,7 +722,10 @@ export default {
           }
           this.itemTableData.push(data)
         }
-        this.itemFormClose()
+        this.saveConfigInfo((data) => {
+          this.handelConfig(data.id)
+          this.itemFormClose()
+        })
       })
     },
     itemFormClose() {
@@ -746,6 +754,9 @@ export default {
       this.itemTableData = this.itemTableData.filter(item => {
         return row.itemGroupId !== item.itemGroupId
       })
+      this.saveConfigInfo((data) => {
+        this.handelConfig(data.id)
+      })
     },
     deleteCollector(row) {
       if (row.runStatus === 1) {
@@ -760,7 +771,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
-        this.deleteCollectorApi(row.id).then(json => {
+        deleteCollectorApi(row.id).then(json => {
           this.$message({
             type: json.code === 200 ? 'success' : 'warning',
             message: json.code === 200 ? '删除成功!' : json.msg
@@ -781,7 +792,10 @@ export default {
     handelSettingSubmit() {
       this.$refs['configForm'].validate((valid) => {
         if (valid) {
-          this.dialogSetting = false
+          this.saveConfigInfo((data) => {
+            this.handelConfig(data.id)
+            this.dialogSetting = false
+          })
         }
       })
     },

+ 12 - 1
industry-admin/src/views/report/reportTablePolicy/index.vue

@@ -198,6 +198,17 @@ export default {
         if (this.itemGroupList && this.itemGroupList.length) {
           let lastIndex = -1;
           for (let i = 0; i < this.itemGroupList.length; i++) {
+            if(!this.itemGroupList[i].ipAddr){
+              lastIndex++;
+              this.itemGroupList[i].onLine = 0;
+              this.itemGroupList[i].runStatus = 0;
+              if(lastIndex === i){
+                if(this.itemGroupStatus === -1){
+                  this.itemGroupStatus = 0
+                }
+              }
+              return
+            }
             getClientStatus(this.itemGroupList[i].ipAddr).then((json) => {
               lastIndex++;
               const client = json.data;
@@ -289,7 +300,7 @@ export default {
         delPolicyEvent(row) {
             showConfirmWin(this, null, '您确定要删除该数据采集策略吗?', () => {
                 delReportDataPolicyById(row.id).then(res => {
-                    this.$message({
+                  this.$message({
                         message: '删除数据采集策略成功!',
                         type: 'success'
                     })

+ 1 - 1
industry-admin/src/views/report/reportTablePolicy/reportDataPolicy.vue

@@ -161,7 +161,7 @@
                 </el-tab-pane>
             </el-tabs>
           <div slot="footer" style="text-align: right">
-                <el-button type="primary" size="mini" @click="handleSave">确定</el-button>
+                <el-button v-if="itemGroupStatus === 1" type="primary" size="mini" @click="handleSave">确定</el-button>
                 <el-button size="mini" @click="handleClose">取消</el-button>
             </div>
         </el-dialog>

+ 12 - 14
industry-admin/src/views/source/itemGroup/item.vue

@@ -454,21 +454,19 @@ export default {
     },
     /** 通过id数组删除相应的点位信息 */
     delItemList(ids) {
-      showConfirmWin(this, null, '您确定要删除已选择点位吗?', () => {
-        if (ids.length === this.tableTotal) {
-          this.$message({
-            message: '至少保留一项点位信息!',
-            type: 'warning'
-          })
-          return
-        }
-        deleteItemByIdList(ids).then(res => {
-          this.$message({
-            message: '删除成功!',
-            type: 'success'
-          })
-          this.itemChangeEvent()
+      if (ids.length === this.tableTotal) {
+        this.$message({
+          message: '至少保留一项点位信息!',
+          type: 'warning'
         })
+        return
+      }
+      deleteItemByIdList(ids).then(res => {
+        this.$message({
+          message: '删除成功!',
+          type: 'success'
+        })
+        this.itemChangeEvent()
       })
     },
     /** 表格操作按钮,编辑点位 */

+ 2 - 0
industry-system/cqcy-ei-common/src/main/java/com/example/opc_common/enums/ResultEnum.java

@@ -2,6 +2,8 @@ package com.example.opc_common.enums;
 
 public enum ResultEnum {
 
+
+    OPERATION_ERROR(106, "操作错误"),
     SUCCESS(200, "success"),
 
     REQUEST_WRONGPARAMS(400, "参数错误"),

+ 12 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/dao/CollectorDao.java

@@ -94,4 +94,16 @@ public interface CollectorDao {
      * @return
      */
     List<Map<String, Object>> getAllDataSource();
+
+    /**
+     * 查询使用数据组的采集器名称集合
+     * @return
+     */
+    List<String> getClientNameByItemGroupId(Integer itemGroupId);
+
+    /**
+     * 查询使用采集器下数据组的策略名称集合
+     * @return
+     */
+    List<String> getReportDataPolicyNameByClientId(Integer clientId);
 }

+ 13 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/dao/ReportDataPolicyDao.java

@@ -5,6 +5,7 @@ import com.example.opc_common.entity.ReportDataPolicyItem;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 @Repository
 public interface ReportDataPolicyDao {
@@ -153,4 +154,16 @@ public interface ReportDataPolicyDao {
      * @return
      */
     List<ReportDataPolicyItem> getRdpItemListByIdList(List<Integer> idList);
+
+    /**
+     * 查询使用数据组的采集策略名称集合
+     * @return
+     */
+    List<String> getReportDataPolicyNameByItemGroupId(Integer itemGroupId);
+
+    /**
+     * 查询使用数据组中点位的采集策略名称集合
+     * @return
+     */
+    List<Map<String, Object>> getReportDataPolicyNameByItemId(List<Integer> idList);
 }

+ 6 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/dao/ReportTableDao.java

@@ -211,4 +211,10 @@ public interface ReportTableDao {
 
     //通过报表模板id删除报表、策略、点位关系
     Integer delReportTableIdAndPolicyIdAndItemIdByReportTableIds(List<String> idList);
+
+    /**
+     * 查询使用采集策略的设计的报表名称集合
+     * @return
+     */
+    List<String> getReportTableNameByPolicyId(Integer policyId);
 }

+ 19 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/CollectorServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.example.opc_common.entity.Collector;
+import com.example.opc_common.enums.ResultEnum;
 import com.example.opc_common.util.Blank;
 import com.example.opc_common.util.ClientInfoUtil;
 import com.example.opc_common.util.ClientUtil;
@@ -55,6 +56,10 @@ public class CollectorServiceImpl implements CollectorService {
         String itemGroupIds = collector.getItemJson();
         if (Blank.notBlank(itemGroupIds)) {
             JSONArray array = JSONUtil.parseArray(itemGroupIds);
+
+            List<Map<String, Object>> list = collectorDao.getItemGroupByClientId(collector.getId());
+
+
             // 删除原有数据组
             status = collectorDao.deleteCollectorItemGroup(collector.getId());
             // 保存当前配置数据组
@@ -227,6 +232,20 @@ public class CollectorServiceImpl implements CollectorService {
         if (obj.getInt("status", 0) == 1) {
             return Result.no(102, "采集器运行中,请先停止采集器");
         }
+
+        List<String> reportDataPolicyNameList = collectorDao.getReportDataPolicyNameByClientId(id);
+        if (Blank.isNotEmpty(reportDataPolicyNameList)) {
+            String message = "此采集器的数据组已被配置在策略【";
+            for (int i = 0; i < reportDataPolicyNameList.size(); i++) {
+                if (i != 0) {
+                    message += ",";
+                }
+                message += reportDataPolicyNameList.get(i);
+            }
+            message += "】中,无法直接删除";
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
+        }
+
         Boolean status = false;
         status = collectorDao.deleteCollectorItemGroup(id);
         status = collectorDao.deleteCollector(id);

+ 2 - 2
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/DataModelServiceImpl.java

@@ -89,7 +89,7 @@ public class DataModelServiceImpl implements DataModelService {
                 message += "组" + mapList.get(i).get("item_group_name") + "-" + mapList.get(i).get("count") + "个标签";
             }
             message += "】中,无法直接删除";
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), message);
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
         }
         if (dataModelDao.delDataModelById(id) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "删除数据模型失败");
@@ -109,7 +109,7 @@ public class DataModelServiceImpl implements DataModelService {
                 message += "组" + mapList.get(i).get("item_group_name") + "-" + mapList.get(i).get("count") + "个标签";
             }
             message += "】中,无法直接删除";
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), message);
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
         }
         if (dataModelDao.delDataModelByIdList(idList) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "批量删除数据模型失败");

+ 1 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/DataSourceServiceImpl.java

@@ -130,7 +130,7 @@ public class DataSourceServiceImpl implements DataSourceService {
                 message += itemGroupList.get(i).getGroupName();
             }
             message += "】中,无法直接删除";
-            return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), message);
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
         }
         if (dataSourceDao.delDataSourceById(id) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "删除数据源配置失败");

+ 46 - 5
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ItemGroupServiceImpl.java

@@ -12,10 +12,7 @@ import com.example.opc_common.util.Blank;
 import com.example.opc_common.util.DateUtil;
 import com.example.opc_common.util.OpcUtil;
 import com.example.opc_common.util.Result;
-import com.example.opc_da.dao.DataModelDao;
-import com.example.opc_da.dao.DataSchemeDao;
-import com.example.opc_da.dao.DataSourceDao;
-import com.example.opc_da.dao.ItemGroupDao;
+import com.example.opc_da.dao.*;
 import com.example.opc_da.service.ItemGroupService;
 import com.example.opc_da.util.OpcDaUtil;
 import com.example.opc_da.util.QueryServiceUtil;
@@ -26,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -56,6 +54,12 @@ public class ItemGroupServiceImpl implements ItemGroupService {
     @Autowired
     private QueryServiceUtil queryServiceUtil;
 
+    @Resource
+    private CollectorDao collectorDao;
+
+    @Resource
+    private ReportDataPolicyDao reportDataPolicyDao;
+
     @Override
     public synchronized Result addItemGroup(ItemGroup itemGroup) {
         String currentUserId = userUtil.getCurrentUserId();
@@ -209,6 +213,31 @@ public class ItemGroupServiceImpl implements ItemGroupService {
 
     @Override
     public synchronized Result delItemGroupById(Integer id) {
+        List<String> clientNameList = collectorDao.getClientNameByItemGroupId(id);
+        if (Blank.isNotEmpty(clientNameList)) {
+            String message = "此数据组已被配置在采集器【";
+            for (int i = 0; i < clientNameList.size(); i++) {
+                if (i != 0) {
+                    message += ",";
+                }
+                message += clientNameList.get(i);
+            }
+            message += "】中,无法直接删除";
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
+        }
+        List<String> reportDataPolicyNameList = reportDataPolicyDao.getReportDataPolicyNameByItemGroupId(id);
+        if (Blank.isNotEmpty(reportDataPolicyNameList)) {
+            String message = "此数据组已被配置在策略【";
+            for (int i = 0; i < reportDataPolicyNameList.size(); i++) {
+                if (i != 0) {
+                    message += ",";
+                }
+                message += reportDataPolicyNameList.get(i);
+            }
+            message += "】中,无法直接删除";
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
+        }
+
         itemGroupDao.delItemByGroupId(id);
         itemGroupDao.delItemGroupById(id);
         return Result.ok("删除成功");
@@ -288,7 +317,19 @@ public class ItemGroupServiceImpl implements ItemGroupService {
 
     @Override
     public synchronized Result deleteItemByIdList(List<Integer> idList) {
-        Item item = itemGroupDao.getItemById(idList.get(0));
+       //Item item = itemGroupDao.getItemById(idList.get(0));
+        List<Map<String, Object>> reportDataPolicyNameList = reportDataPolicyDao.getReportDataPolicyNameByItemId(idList);
+        if (Blank.isNotEmpty(reportDataPolicyNameList)) {
+            String message = "";
+            for (int i = 0; i < reportDataPolicyNameList.size(); i++) {
+                message += (i+1) + "、不允许在数据组中删除在策略组"
+                        + "【" + reportDataPolicyNameList.get(i).get("reportDataPolicyName") + "】"
+                        +"已选择的点位【"
+                        + reportDataPolicyNameList.get(i).get("itemReadName") + "】;";
+            }
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
+        }
+
         if (itemGroupDao.deleteItemByIdList(idList) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), ResultEnum.SERVER_ERROR.getRespMsg());
         }

+ 13 - 0
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportDataPolicyServiceImpl.java

@@ -192,6 +192,19 @@ public class ReportDataPolicyServiceImpl implements ReportDataPolicyService {
 
     @Override
     public synchronized Result delReportDataPolicyById(Integer id) {
+        List<String> reportTableNameList = reportTableDao.getReportTableNameByPolicyId(id);
+        if (Blank.isNotEmpty(reportTableNameList)) {
+            String message = "此策略已被配置在报表【";
+            for (int i = 0; i < reportTableNameList.size(); i++) {
+                if (i != 0) {
+                    message += ",";
+                }
+                message += reportTableNameList.get(i);
+            }
+            message += "】中,无法直接删除";
+            return Result.no(ResultEnum.OPERATION_ERROR.getRespCode(), message);
+        }
+
         if (reportDataPolicyDao.delReportDataPolicyById(id) <= 0) {
             return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "删除报表数据策略失败");
         }

+ 4 - 1
industry-system/industry-da/src/main/java/com/example/opc_da/service/impl/ReportTableServiceImpl.java

@@ -178,7 +178,10 @@ public class ReportTableServiceImpl implements ReportTableService {
         }
         // 添加报表、策略、点位关系
         addReportTableIdAndPolicyIdAndItemId(resultList);
-        return Result.ok("修改报表模板成功");
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("msg", "修改报表模板成功");
+        jsonObject.put("version", tableTemplate.getVersion());
+        return Result.ok(jsonObject);
     }
 
     @Override

+ 26 - 2
industry-system/industry-da/src/main/java/com/example/opc_da/validate/reportTable/AutomaticReportTableValidate.java

@@ -29,7 +29,11 @@ import java.util.stream.Stream;
 @Slf4j
 public abstract class AutomaticReportTableValidate implements ReportTableValidate {
 
-    private static final String timePattern = "yyyy-MM-dd HH:mm:ss.SSS";
+    private static final String timePattern = "yyyy-MM-dd HH:mm:ss.SSS";//秒
+    private static final String timePattern_hour = "yyyy-MM-dd HH:00";//小时
+    private static final String timePattern_min = "yyyy-MM-dd HH:mm";//分
+    private static final String timePattern_day = "yyyy-MM-dd";//日
+    String timePattern_str;
 
     InFluxDBService inFluxDBService = SpringContextUtils.getBean(InFluxDBService.class);
     String bucket = SpringContextUtils.getYamlProperty("influxdb.bucket");
@@ -561,9 +565,29 @@ public abstract class AutomaticReportTableValidate implements ReportTableValidat
                     }
                 }
                 //求出每段应该返回的值
+
+                switch (bucketType){
+                    case 0:
+                        timePattern_str = timePattern;
+                        break;
+                    case 1:
+                        timePattern_str = timePattern_day;
+                        break;
+                    case 2:
+                        timePattern_str = timePattern_hour;
+                        break;
+                    case 3:
+                        timePattern_str = timePattern_min;
+                        break;
+                    case 4:
+                        timePattern_str = timePattern;
+                        break;
+                }
+
                 newItemList.add(new Item()
                         .value(CalculateDataFactory.getCalculateData(valueTakingMode).calculateData(valueList))
-                        .time(sDateTime.format(DateTimeFormatter.ofPattern(timePattern))));
+                        .time(sDateTime.format(DateTimeFormatter.ofPattern(timePattern_str))));
+
                 sDateTime = eDateTime;
 
             }

+ 14 - 0
industry-system/industry-da/src/main/resources/mapper/CollectorDao.xml

@@ -132,4 +132,18 @@
         delete from f_telegraf_client where id = #{clientId}
     </delete>
 
+
+    <select id="getClientNameByItemGroupId" resultType="String">
+        select ftc.client_name
+        from f_telegraf_client ftc,f_telegraf_client_item ftci
+        where ftc.id = ftci.client_id and ftci.item_group_id = #{itemGroupId}
+        ORDER BY ftc.client_name
+    </select>
+
+    <select id="getReportDataPolicyNameByClientId" resultType="String">
+        select trdp.report_data_policy_name
+        from f_telegraf_client_item ftci,t_report_data_policy trdp
+        where ftci.item_group_id = trdp.item_group_id and ftci.client_id = #{clientId}
+        ORDER BY trdp.report_data_policy_name
+    </select>
 </mapper>

+ 5 - 6
industry-system/industry-da/src/main/resources/mapper/ItemGroupDao.xml

@@ -169,12 +169,11 @@
 
 
     <select id="getAllItemGroupAndCollector" resultType="map">
-        select tig.id id,tig.group_name groupName,ip_addr ipAddr
-        from t_item_group tig,f_telegraf_client_item ftci,f_telegraf_client ftc
-        where
-            tig.id = ftci.item_group_id
-            and ftci.client_id = ftc.id
-            and tig.user_id=#{userId}
+        select tig.id id,tig.group_name groupName,ftc.ip_addr ipAddr
+        from t_item_group tig
+        left join f_telegraf_client_item ftci on tig.id = ftci.item_group_id
+        left join f_telegraf_client ftc on ftci.client_id = ftc.id
+        where tig.user_id=#{userId}
         order by tig.create_time
     </select>
 

+ 15 - 0
industry-system/industry-da/src/main/resources/mapper/ReportDataPolicyDao.xml

@@ -216,5 +216,20 @@
         </if>
     </select>
 
+    <select id="getReportDataPolicyNameByItemGroupId" resultType="String">
+        select report_data_policy_name 
+		from t_report_data_policy 
+		where item_group_id = #{itemGroupId}
+		ORDER BY report_data_policy_name
+    </select>
 
+    <select id="getReportDataPolicyNameByItemId" resultType="map">
+        select trdp.report_data_policy_name reportDataPolicyName,ti.item_read_name itemReadName
+        from t_report_data_policy trdp,t_report_data_policy_item trdpi,t_item ti
+        where trdp.id = trdpi.report_data_policy_id and trdpi.item_id = ti.id and trdpi.item_id IN
+        <foreach collection="idList" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
+        ORDER BY trdp.report_data_policy_name,ti.item_read_name
+    </select>
 </mapper>

+ 7 - 0
industry-system/industry-da/src/main/resources/mapper/ReportTableDao.xml

@@ -1105,4 +1105,11 @@
         </foreach>
     </delete>
 
+    <select id="getReportTableNameByPolicyId" resultType="String">
+        select DISTINCT trt.report_table_name
+        from t_report_table_policy_item trtpi,t_report_table trt
+        where trtpi.report_table_id = trt.id and trtpi.policy_id = #{policyId}
+		ORDER BY trt.report_table_name
+    </select>
+
 </mapper>

文件差异内容过多而无法显示
+ 0 - 0
industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.esm.js


文件差异内容过多而无法显示
+ 0 - 0
industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.esm.js.map


+ 1 - 1
industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.umd.js

@@ -22033,7 +22033,7 @@
 				Engineering: "工程计算",
 				Filter: "过滤器",
 				Financial: "财务",
-				luckysheet: "Luckysheet内置",
+				luckysheet: "系统内置",
 				other: "其它",
 				Logical: "逻辑",
 				Lookup: "查找",

文件差异内容过多而无法显示
+ 0 - 0
industry-system/industry-da/src/main/resources/static/reportSheet/js/Luckysheet-2.1.13/luckysheet.umd.js.map


+ 19 - 3
industry-system/industry-da/src/main/resources/static/reportSheet/js/report-history.js

@@ -98,8 +98,6 @@ window.onload = function() {
 				}
 			})
 		} else if(json.cmd=='download'){
-			//console.log('down');
-			console.log(json.data.dtype);
 			const range = luckysheet.getRange()
 			if (range.length > 1) {
 				layer.msg('请选择单个打印区域!', {icon: 2})
@@ -130,7 +128,25 @@ window.onload = function() {
 				data,
 				success: (json) => {
 					let fileName = localStorage.getItem('url') + '/' + json.data;
-					console.log(fileName);
+					console.log(json.data);
+					let url = fileName;
+					let name=json.data.split('/').pop();
+					let xhr = new XMLHttpRequest();
+					xhr.open('get',url,true);
+					xhr.responseType = 'blob';
+					xhr.onreadystatechange = function (){
+						if(xhr.readyState===4 && xhr.status===200){
+							window.URL = window.URL || window.webkitURL;
+							let a = document.createElement('a');
+							let blob = new Blob([xhr.response]);
+							let url = window.URL.createObjectURL(blob);
+							a.href = url;
+							a.download = name;
+							a.click();
+							window.URL.revokeObjectURL(url);
+						}
+					}
+					xhr.send();
 				}
 			})
 		}

+ 4 - 2
industry-system/industry-da/src/main/resources/static/reportSheet/js/src/model/right-menu.js

@@ -29,15 +29,17 @@ layui.define(['layer', 'util', 'jquery', 'form', 'sheetTypew', 'chartRightw', 'i
 					chart: layui.excelUtil.getChartData()
 				}),
 			}
-			console.log(params)
+			//console.log(params)
 			if (layui.sheetTypew.templateReportId > 0) {
 				params.id = layui.sheetTypew.templateReportId
 				params.version = layui.sheetTypew.templateReportVersion
+				console.log(params)
 				layui.api.updateTableTemplate(params).then(json => {
 					if (json.code == 200) {
+						layui.sheetTypew.templateReportVersion = json.data.version;
 						layer.msg('保存报表成功!', {icon: 1})
 					} else {
-						layer.msg(json.msg, {icon: 2})
+						layer.msg(json.data.msg, {icon: 2})
 					}
 				})
 			} else {

+ 33 - 32
industry-system/industry-da/src/main/resources/static/reportSheet/js/src/model/sheet-util.js

@@ -71,6 +71,7 @@ layui.define(function(exports) {
 			if (sheetConfig && sheetConfig.data) {
 				option.data = sheetConfig.data
 			}
+
 			option.hook = {
 				cellEditBefore: function(range) {
 					const cell = luckysheet.getCellValue((range[0].row)[0], (range[0].column)[0], {type: 'v'})
@@ -106,38 +107,38 @@ layui.define(function(exports) {
 					return true
 				},
 				rangeCopyAfter:function(range,data){
-					// copyRange = range;
-					// let scol = copyRange[0].column[0];
-					// let ecol = copyRange[0].column[1];
-					// let srow = copyRange[0].row[0];
-					// let erow = copyRange[0].row[1];
-					// console.log(scol);
-					// console.log(srow);
-					// console.log(luckysheet.getCellValue(3, 6));
-					// for(let i=srow;i<=erow;i++){
-					// 	for(let j=scol;j<=ecol;j++){
-					// 		const cell = luckysheet.getCellValue(i, j);
-					// 		console.log(cell)
-					// 	}
-					// }
+					copyRange = range;
+					let scol = copyRange[0].column[0];
+					let ecol = copyRange[0].column[1];
+					let srow = copyRange[0].row[0];
+					let erow = copyRange[0].row[1];
+					console.log(scol);
+					console.log(srow);
+					console.log(luckysheet.getCellValue(3, 6));
+					for(let i=srow;i<=erow;i++){
+						for(let j=scol;j<=ecol;j++){
+							const cell = luckysheet.getCellValue(i, j);
+							console.log(cell)
+						}
+					}
 				},
 				rangePasteBefore:function(range,data){
-					// console.log('rangePasteBefore')
-					// console.log(range);
-					// console.log(data);
-					// let scol = range[0].column[0];
-					// let ecol = range[0].column[1];
-					// let srow = range[0].row[0];
-					// let erow = range[0].row[1];
-					// console.log(scol);
-					// console.log(srow);
-					// console.log(luckysheet.getCellValue(3, 6));
-					// for(let i=srow;i<=erow;i++){
-					// 	for(let j=scol;j<=ecol;j++){
-					// 		const cell = luckysheet.getCellValue(i, j);
-					// 		console.log(cell)
-					// 	}
-					// }
+					console.log('rangePasteBefore')
+					console.log(range);
+					console.log(data);
+					let scol = range[0].column[0];
+					let ecol = range[0].column[1];
+					let srow = range[0].row[0];
+					let erow = range[0].row[1];
+					console.log(scol);
+					console.log(srow);
+					console.log(luckysheet.getCellValue(3, 6));
+					for(let i=srow;i<=erow;i++){
+						for(let j=scol;j<=ecol;j++){
+							const cell = luckysheet.getCellValue(i, j);
+							console.log(cell)
+						}
+					}
 				},
 				cellMousedown:function(cell,position,sheet,ctx){
 					//console.log('r='+position.r+','+'c='+position.c);
@@ -145,8 +146,8 @@ layui.define(function(exports) {
 					//console.log(cell);
 				},
 				rangePasteAfter:function(range,data){
-					//console.log('rangePasteAfter')
-					//console.log(data);
+					console.log('rangePasteAfter')
+					console.log(data);
 				},
 				sheetMousemove: function(cell, position, sheet, moveState) {
 					if (moveState.cellSelectedMove && !moveJson.move) {

部分文件因为文件数量过多而无法显示