|
@@ -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();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|