Browse Source

添加生成报表定时任务

fengyanjie@sagacloud.cn 4 năm trước cách đây
mục cha
commit
0ef030a00f

+ 27 - 0
dmp-report/src/main/java/com/persagy/dmp/report/controller/InitDataController.java

@@ -0,0 +1,27 @@
+package com.persagy.dmp.report.controller;
+
+import com.persagy.common.web.MapResponse;
+import com.persagy.dmp.report.service.InitDataService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author: yaoll
+ * @date: 2020-09-29
+ * @verison: 1.0
+ */
+@RestController
+@RequestMapping("/report/init")
+public class InitDataController {
+
+    @Autowired
+    private InitDataService initService;
+
+    @GetMapping("/group")
+    public MapResponse initGroup(@RequestParam String createTime) {
+        return initService.initGroup(createTime);
+    }
+}

+ 31 - 0
dmp-report/src/main/java/com/persagy/dmp/report/jms/executor/CreateTableExecutor.java

@@ -0,0 +1,31 @@
+package com.persagy.dmp.report.jms.executor;
+
+import com.persagy.common.json.JacksonMapper;
+import com.persagy.dmp.report.jms.MessageExecutor;
+import com.persagy.dmp.report.service.InitDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+/**
+ * @author: yaoll
+ * @date: 2020-10-28
+ * @verison: 1.0
+ */
+@Slf4j
+@Component
+public class CreateTableExecutor implements MessageExecutor {
+
+	@Autowired
+	private InitDataService initService;
+
+	@Override
+	public void execute(Map<String, Object> message) {
+		log.info("group create : {}", JacksonMapper.toSimpleJson(message));
+		String createTime = MapUtils.getString(message, "createTime");
+		initService.initGroup(createTime);
+	}
+}

+ 118 - 0
dmp-report/src/main/java/com/persagy/dmp/report/service/InitDataService.java

@@ -0,0 +1,118 @@
+package com.persagy.dmp.report.service;
+
+import com.persagy.common.web.MapResponse;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.sql.DataSource;
+import javax.transaction.Transactional;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+/**
+ * @author fengyanjie
+ */
+@Slf4j
+@Service
+public class InitDataService {
+
+    @Autowired
+    private DataSource dataSource;
+
+    @Transactional
+    public MapResponse initGroup(String createTime) {
+        MapResponse resp = new MapResponse();
+        String sql = null;
+        Connection connection = null;
+        Statement statement = null;
+        try {
+            connection = dataSource.getConnection();
+            statement = connection.createStatement();
+            // 创建对象信息统计报表
+            sql = getCreateReportRwdObjectSql(createTime);
+            statement.executeUpdate(sql);
+
+            // 创建报警信息统计报表
+            sql = getCreateReportAlarmRecordSql(createTime);
+            statement.executeUpdate(sql);
+        } catch (SQLException e) {
+            e.printStackTrace();
+            resp.setFail(e.getMessage());
+        } finally {
+            close(statement);
+            close(connection);
+        }
+        return resp;
+    }
+
+    private String getCreateReportRwdObjectSql(String createTime) {
+        StringBuilder sql = new StringBuilder();
+        sql.append("  CREATE TABLE `report_rwd_object_" + createTime + "` (        \n");
+        sql.append("    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',        \n");
+        sql.append("    `project_id` varchar(50) NOT NULL COMMENT '项目id',        \n");
+        sql.append("    `group_code` varchar(40) DEFAULT NULL COMMENT '集团编码',        \n");
+        sql.append("    `obj_type` varchar(50) NOT NULL COMMENT '对象分类',        \n");
+        sql.append("    `class_code` varchar(50) NOT NULL COMMENT '对象类型编码',        \n");
+        sql.append("    `year` varchar(4) NOT NULL COMMENT '年',        \n");
+        sql.append("    `month` varchar(2) DEFAULT NULL COMMENT '月(小于10:01-09)',        \n");
+        sql.append("    `day` varchar(2) DEFAULT NULL COMMENT '日(小于10:01-09)',        \n");
+        sql.append("    `hour` varchar(2) DEFAULT NULL COMMENT '时(24小时制,小于10:01-09)',        \n");
+        sql.append("    `week` varchar(2) DEFAULT NULL COMMENT '周',        \n");
+        sql.append("    `season` varchar(1) DEFAULT NULL COMMENT '季度:1:0101-0401,2:0401-0701,3:0701-1001,4: 1001-0101  (日期前闭后开)',        \n");
+        sql.append("    `create_time` varchar(10) DEFAULT NULL COMMENT '创建时间  日期格式:yyyyMMddh24',        \n");
+        sql.append("    `rwd_object_num` int(11) DEFAULT '0' COMMENT '对象信息统计数量',        \n");
+        sql.append("    `date_type` varchar(100) NOT NULL COMMENT '日期类型(年:year 月:month 日:day 时:hour 周:week  季度:season)',        \n");
+        sql.append("    PRIMARY KEY (`id`)        \n");
+        sql.append("  ) ENGINE=InnoDB AUTO_INCREMENT=4206 DEFAULT CHARSET=utf8mb4 COMMENT='对象信息统计报表'       \n");
+        return sql.toString();
+    }
+
+    private String getCreateReportAlarmRecordSql(String createTime) {
+        StringBuilder sql = new StringBuilder();
+        sql.append("  CREATE TABLE `report_alarm_record_" + createTime + "` (                     \n");
+        sql.append("    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',                     \n");
+        sql.append("    `item_code` varchar(40) NOT NULL COMMENT '报警条目编码',                     \n");
+        sql.append("    `project_id` varchar(50) NOT NULL DEFAULT '' COMMENT '项目id',                     \n");
+        sql.append("    `group_code` varchar(40) DEFAULT NULL COMMENT '集团编码',                     \n");
+        sql.append("    `category` varchar(80) DEFAULT NULL COMMENT '报警分类',                     \n");
+        sql.append("    `class_code` varchar(50) DEFAULT NULL COMMENT '对象类型编码',                     \n");
+        sql.append("    `level` varchar(10) DEFAULT NULL COMMENT '严重程度',                     \n");
+        sql.append("    `alarm_state` varchar(2) DEFAULT NULL COMMENT '报警状态',                     \n");
+        sql.append("    `year` varchar(4) DEFAULT NULL COMMENT '年',                     \n");
+        sql.append("    `month` varchar(2) DEFAULT NULL COMMENT '月(小于10:01-09)',                     \n");
+        sql.append("    `day` varchar(2) DEFAULT NULL COMMENT '日(小于10:01-09)',                     \n");
+        sql.append("    `hour` varchar(2) DEFAULT NULL COMMENT '时(24小时制,小于10:01-09)',                     \n");
+        sql.append("    `week` varchar(2) DEFAULT NULL COMMENT '周',                     \n");
+        sql.append("    `season` varchar(1) DEFAULT NULL COMMENT '季度:1:0101-0401,2:0401-0701,3:0701-1001,4: 1001-0101  (日期前闭后开)',                     \n");
+        sql.append("    `create_time` varchar(10) DEFAULT NULL COMMENT '创建时间  日期格式:yyyyMMddh24',                     \n");
+        sql.append("    `alarm_record_num` int(11) DEFAULT '0' COMMENT '报警信息统计数量',                     \n");
+        sql.append("    `alarm_record_num2` int(11) DEFAULT NULL,                     \n");
+        sql.append("    `date_type` varchar(100) NOT NULL COMMENT '日期类型(年:year 月:month 日:day 时:hour 周:week  季度:season)',                     \n");
+        sql.append("    PRIMARY KEY (`id`)                     \n");
+        sql.append("  ) ENGINE=InnoDB AUTO_INCREMENT=39917 DEFAULT CHARSET=utf8mb4 COMMENT='报警信息统计报表';                     \n");
+        return sql.toString();
+    }
+
+    private void close(Statement statement) {
+        if (statement != null) {
+            try {
+                statement.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private void close(Connection connection) {
+        if (connection != null) {
+
+            try {
+                connection.close();
+            } catch (SQLException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}