Browse Source

feat:添加基础数据同步&修复问题&补充脚本

master_tdsql
huangrenya 11 months ago
parent
commit
09263106b7
  1. 63
      shuili-system/src/main/java/com/kms/yxgh/base/domain/df/DfDwsRelDiscDike.java
  2. 2
      shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResDscdnm.java
  3. 2
      shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResRv.java
  4. 1
      shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncBasicEnum.java
  5. 8
      shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncMonitorEnum.java
  6. 30
      shuili-system/src/main/java/com/kms/yxgh/base/job/DataSyncJob.java
  7. 4
      shuili-system/src/main/java/com/kms/yxgh/util/RestTemplateUtils.java
  8. 21
      sql/sy/v1.3.0/全量脚本/dataSync.sql
  9. 23
      sql/sy/v1.3.0/增量脚本/v1.3.0-update.sql

63
shuili-system/src/main/java/com/kms/yxgh/base/domain/df/DfDwsRelDiscDike.java

@ -0,0 +1,63 @@
package com.kms.yxgh.base.domain.df;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@TableName("dws_rel_disc_dike")
@Data
@ApiModel("堤段所属堤防对象关系表")
public class DfDwsRelDiscDike extends SyBaseEntity {
private static final long serialVersionUID = 1L;
/**
* 堤段代码
*/
@ApiModelProperty("堤段代码")
@TableField("DISC_CODE")
private String discCode;
/**
* 堤段名称
*/
@ApiModelProperty("堤段名称")
@TableField("DISC_NAME")
private String discName;
/**
* 堤防代码
*/
@ApiModelProperty("堤防代码")
@TableField("DIKE_CODE")
private String dikeCode;
/**
* 堤防名称
*/
@ApiModelProperty("堤防名称")
@TableField("DIKE_NAME")
private String dikeName;
/**
* 关系建立时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间")
@TableField("FROM_DATE")
private Date fromDate;
/**
* 关系终止时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系终止时间")
@TableField("TO_DATE")
private Date toDate;
}

2
shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResDscdnm.java

@ -50,7 +50,7 @@ public class SkDwsRelResDscdnm extends SyBaseEntity {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间")
@TableField("FROM_CODE")
@TableField("FROM_DATE")
private Date fromDate;
/**

2
shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResRv.java

@ -50,7 +50,7 @@ public class SkDwsRelResRv extends SyBaseEntity {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间")
@TableField("FROM_CODE")
@TableField("FROM_DATE")
private Date fromDate;
/**

1
shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncBasicEnum.java

@ -27,6 +27,7 @@ public enum DataSyncBasicEnum {
REL_WAGA_RES("dws_rel_waga_res", "/dws_rel_waga_res", SzDwsRelWagaRes.class, "水闸所属水库关系表"),
REL_WAGA_DIKE("dws_rel_waga_dike", "/dws_rel_waga_dike", SzDwsRelWagaDike.class, "水闸所属堤防对象关系表"),
REL_DIKE_RV("dws_rel_dike_rv", "/dws_rel_dike_rv", DfDwsRelDikeRv.class, "堤防所属河流关系表"),
REL_DISC_DIKE("dws_rel_disc_dike", "/dws_rel_disc_dike", DfDwsRelDiscDike.class, "堤段所属堤防对象关系表"),
;
private final String name;

8
shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncMonitorEnum.java

@ -11,7 +11,7 @@ public enum DataSyncMonitorEnum {
MS_HDM_OBP("ms_hdm_obp", "/bzjck/ms_hdm_obp", MsHdmObp.class, "降水量监测表"),
MS_HDM_RIVER("ms_hdm_river", "/bzjck/ms_hdm_river", MsHdmRiver.class, "河道水情监测表"),
MS_HDM_RSVR("ms_hdm_rsvr", "/bzjck/ms_hdm_rsvr", MsHdmRiver.class, "水库水情监测表"),
MS_HDM_RSVR("ms_hdm_rsvr", "/bzjck/ms_hdm_rsvr", MsHdmRsvr.class, "水库水情监测表"),
MS_HDM_TIDE("ms_hdm_tide", "/bzjck/ms_hdm_tide", MsHdmTide.class, "潮汐水情监测表"),
MS_HDM_WDWV("ms_hdm_wdwv", "/bzjck/ms_hdm_wdwv", MsHdmWdwv.class, "风浪监测表"),
MS_HDM_SALT("ms_hdm_salt", "/bzjck/ms_hdm_salt", MsHdmSalt.class, "咸潮监测表"),
@ -21,15 +21,15 @@ public enum DataSyncMonitorEnum {
MS_HDM_DAYEV("ms_hdm_dayev", "/bzjck/ms_hdm_dayev", MsHdmDayev.class, "日蒸发量表"),
MS_HDM_PSTAT("ms_hdm_pstat", "/bzjck/ms_hdm_pstat", MsHdmPstat.class, "降水量统计表"),
MS_WQM_WQAMD("ms_wqm_wqamd", "/bzjck/ms_wqm_wqamd", MsHdmWqamd.class, "水质自动监测数据表"),
MS_HPM_SLCRS("ms_hpm_slcrs", "/bzjck/ms_hpm_slcrs", MsHdmStorm.class, "水闸运行状况监测表"),
MS_HPM_SLCRS("ms_hpm_slcrs", "/bzjck/ms_hpm_slcrs", MsHdmSlcrs.class, "水闸运行状况监测表"),
MS_HPM_DKRS("ms_hpm_dkrs", "/bzjck/ms_hpm_dkrs", MsHdmDkrs.class, "堤防段运行状况监测表"),
MS_HPM_GATE("ms_hpm_gate", "/bzjck/ms_hpm_gate", MsHdmGate.class, "水利工程闸门开度监测表"),
MS_DSM_SRVRDS("ms_dsm_srvrds", "/bzjck/ms_dsm_srvrds", MsHdmSvrds.class, "表面垂直位移监测表"),
MS_DSM_SRHRDS("ms_dsm_srhrds", "/bzjck/ms_dsm_srhrds", MsHdmSrhrds.class, "表面水平位移监测表"),
MS_DSM_INVRDS("ms_dsm_invrds", "/bzjck/ms_dsm_invrds", MsHdmInvrds.class, "内部垂直位移监测表"),
MS_DSM_INHRDS("ms_dsm_inhrds", "/bzjck/ms_dsm_inhrds", MsHdmInhrds.class, "内部水平位移监测表"),
MS_DSM_CKOPDG("ms_dsm_ckopdg", "/bzjck/ms_dsm_ckopdg", MsHdmGate.class, "裂缝开合度位移监测表"),
MS_DSM_SPPR("ms_dsm_sppr", "/bzjck/ms_dsm_sppr", MsHdmSvrds.class, "渗流压力水位监测表"),
MS_DSM_CKOPDG("ms_dsm_ckopdg", "/bzjck/ms_dsm_ckopdg", MsHdmCkopdg.class, "裂缝开合度位移监测表"),
MS_DSM_SPPR("ms_dsm_sppr", "/bzjck/ms_dsm_sppr", MsHdmSppr.class, "渗流压力水位监测表"),
MS_DSM_PZWL("ms_dsm_pzwl", "/bzjck/ms_dsm_pzwl", MsHdmPzwl.class, "测压管水位监测表"),
MS_DSM_SPQN("ms_dsm_spqn", "/bzjck/ms_dsm_spqn", MsHdmSpqn.class, "渗流量监测表"),
MS_DSM_ST("ms_dsm_st", "/bzjck/ms_dsm_srhrds", MsHdmSt.class, "应变监测表"),

30
shuili-system/src/main/java/com/kms/yxgh/base/job/DataSyncJob.java

@ -44,7 +44,7 @@ public class DataSyncJob {
private static final Map<String, String> FIELD_MAP = TableFieldFactory.getCacheFieldMap();
private static final Map<String, Map<String, Class>> FIELD_TYPE_MAP = TableFieldFactory.getCacheFieldTypeMap();
private static final int ASYNC_THRESHOLD = 500;
private static final int BATCH_COUNT = 100;
private static final int BATCH_COUNT = 500;
private static final SimpleDateFormat DATE_FORMAT_WITH_TIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat DATE_FORMAT_WITH_OUT_TIME = new SimpleDateFormat("yyyy-MM-dd");
@ -67,7 +67,7 @@ public class DataSyncJob {
*/
@Scheduled(cron = "0 0 2 * * *")
public void runMonitor() {
log.info("--------开启监测数据同步请求--------------", dataSyncEnabled);
log.info("--------开启监测数据同步请求:{}--------------", dataSyncEnabled);
if (dataSyncEnabled) {
Date date = new Date();
for (DataSyncMonitorEnum dataSyncEnum : DataSyncMonitorEnum.values()) {
@ -97,12 +97,12 @@ public class DataSyncJob {
do {
String requestUrl = String.format("%s%s", dataSyncUrl, url);
// 发送POST请求
Map<String, Object> map = new HashMap();
Map<String, Object> map = new HashMap<>();
map.put("pageNum", pageNum);
map.put("pageSize", pageSize);
if(StringUtils.isNotBlank(type)){
map.put("beginTime", beginTime);
map.put("endTime", endTime);
map.put("START_TIME", beginTime);
map.put("END_TIME", endTime);
}
String jsonStr = restTemplateUtils.doPostRequest(requestUrl, map);
if (StringUtils.isBlank(jsonStr)) {
@ -124,7 +124,7 @@ public class DataSyncJob {
// 解析数据
List<List<Object>> dataList = processDataList(jsonArray, filed.split(","), date, tableName, type);
// 清除数据
if (StringUtils.isBlank(type)) {
if (StringUtils.isBlank(type) && pageNum == 1) {
baseDdlMapper.delete(tableName);
}
// 插入数据
@ -133,13 +133,13 @@ public class DataSyncJob {
if (StringUtils.isBlank(type) && jsonArray.size() < pageSize) {
break;
}
if (pageNum * pageSize >= total) {
if (StringUtils.isNotBlank(type) && pageNum * pageSize >= total) {
break;
}
pageNum += 1;
} while (true);
} catch (Exception e) {
log.error("--------数据同步出错--------------,表:" + tableName, e);
log.error("--------数据同步出错--------------,表:"+tableName+", 异常:" + e.getMessage());
}
}
@ -161,9 +161,9 @@ public class DataSyncJob {
Class<?> fieldType = FIELD_TYPE_MAP.getOrDefault(tableName, Collections.emptyMap()).get(fieldName);
// 特殊处理:监测数据的入库时间与系统的CREATE_TIME冲突
if (StringUtils.isNotBlank(type)) {
if (fieldName.equals("MS_CREATE_TIME")) {
if ("MS_CREATE_TIME".equals(fieldName)) {
return typeConversion(obj, "CREATE_TIME", fieldType);
} else if (fieldName.equals("CREATE_TIME")) {
} else if ("CREATE_TIME".equals(fieldName)) {
return nowDate;
}
}
@ -176,6 +176,9 @@ public class DataSyncJob {
* 批量入库
*/
private void insertData(String filed, List<List<Object>> dataList, String tableName) {
if(dataList.isEmpty()){
return;
}
// 入库操作
if (dataList.size() > ASYNC_THRESHOLD) {
// 先入库100条数据入库
@ -193,7 +196,9 @@ public class DataSyncJob {
cachedDataList = new ArrayList<>(BATCH_COUNT);
}
}
baseDdlMapper.insert(filed, cachedDataList, tableName);
if(cachedDataList.size()>0) {
baseDdlMapper.insert(filed, cachedDataList, tableName);
}
});
} else {
baseDdlMapper.insert(filed, dataList, tableName);
@ -230,7 +235,8 @@ public class DataSyncJob {
} else if (Date.class.equals(fieldType)) {
return convertToDate(obj, fieldName);
} else if (Long.class.equals(fieldType)) {
return obj.getLong(fieldName);
return Optional.ofNullable(obj.get(fieldName)).map(Object::toString).filter(s -> !StringUtils.isBlank(s))
.map(s -> Double.valueOf(s).longValue()).orElse(0L);
}
return null;
}

4
shuili-system/src/main/java/com/kms/yxgh/util/RestTemplateUtils.java

@ -69,9 +69,9 @@ public class RestTemplateUtils {
String seqResult = "";
try {
seqResult = new String(responseEntity.getBody().getBytes(),"utf-8");
log.info("返回报文:{}", seqResult);
log.info("请求接口:{}, 请求报文:{}, 返回报文:{}", url, requestStr, seqResult);
} catch (UnsupportedEncodingException e) {
log.error("接口返回异常", e);
log.error("请求接口:" + url + ",返回异常:" + e.getMessage());
}
return seqResult;
}

21
sql/sy/v1.3.0/全量脚本/dataSync.sql

@ -157,6 +157,21 @@ CREATE TABLE `dws_rel_dike_rv` (
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤防所属河流对象关系表';
CREATE TABLE `dws_rel_disc_dike` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`DISC_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤段代码',
`DISC_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤段名称',
`DIKE_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤防代码',
`DIKE_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤防名称',
`FROM_DATE` datetime DEFAULT NULL COMMENT '关系建立时间',
`TO_DATE` datetime DEFAULT NULL COMMENT '关系终止时间',
`REMARK` text COLLATE utf8mb4_general_ci COMMENT '备注',
`CREATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最近修改人',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '最近修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤段所属堤防对象关系表';
@ -870,7 +885,7 @@ CREATE TABLE `MS_DSM_AMS` (
CREATE TABLE `MS_DSM_GSTMONREC` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号',
`MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间',
`STATUS` int DEFAULT NULL COMMENT 'GNSS定位状态(°)',
`SATELLITE_NUM` int DEFAULT NULL COMMENT '卫星数',
@ -904,7 +919,7 @@ CREATE TABLE `MS_DSM_GSTMONREC` (
CREATE TABLE `MS_DSM_OSSMONREC` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号',
`MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间',
`UPLIFTED_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '扬压力(MPa)',
`OSMOTIC_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '渗透压力(坝体、坝基、绕坝)(MPa)',
@ -929,7 +944,7 @@ CREATE TABLE `MS_DSM_OSSMONREC` (
CREATE TABLE `MS_DSM_ENV` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号',
`MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间',
`GTP` decimal(6,1) DEFAULT NULL COMMENT '地温(℃)',
`AlTP` decimal(6,1) DEFAULT NULL COMMENT '瞬时气温(℃)',

23
sql/sy/v1.3.0/增量脚本/v1.3.0-update.sql

@ -1 +1,22 @@
SET NAMES utf8mb4;
SET NAMES utf8mb4;
CREATE TABLE `dws_rel_disc_dike` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`DISC_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤段代码',
`DISC_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤段名称',
`DIKE_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤防代码',
`DIKE_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤防名称',
`FROM_DATE` datetime DEFAULT NULL COMMENT '关系建立时间',
`TO_DATE` datetime DEFAULT NULL COMMENT '关系终止时间',
`REMARK` text COLLATE utf8mb4_general_ci COMMENT '备注',
`CREATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最近修改人',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '最近修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤段所属堤防对象关系表';
ALTER TABLE `MS_DSM_ENV` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';
ALTER TABLE `MS_DSM_GSTMONREC` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';
ALTER TABLE `MS_DSM_OSSMONREC` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';

Loading…
Cancel
Save