Browse Source

feat: 视频图像告警

master_tdsql
hxh 1 year ago
parent
commit
19a6d9d8f0
  1. 35
      shuili-system/src/main/java/com/kms/common/utils/BaseEntityUtils.java
  2. 21
      shuili-system/src/main/java/com/kms/common/utils/UserUtils.java
  3. 35
      shuili-system/src/main/java/com/kms/yxgh/common/controller/VideoWarningController.java
  4. 21
      shuili-system/src/main/java/com/kms/yxgh/common/controller/WarningDataController.java
  5. 58
      shuili-system/src/main/java/com/kms/yxgh/common/domain/MonitoringData.java
  6. 30
      shuili-system/src/main/java/com/kms/yxgh/common/domain/MonitoringStation.java
  7. 35
      shuili-system/src/main/java/com/kms/yxgh/common/domain/VideoWarning.java
  8. 44
      shuili-system/src/main/java/com/kms/yxgh/common/dto/VideoWarningDto.java
  9. 137
      shuili-system/src/main/java/com/kms/yxgh/common/job/Job.java
  10. 18
      shuili-system/src/main/java/com/kms/yxgh/common/mapper/MonitoringDataMapper.java
  11. 17
      shuili-system/src/main/java/com/kms/yxgh/common/mapper/MonitoringStationMapper.java
  12. 55
      shuili-system/src/main/java/com/kms/yxgh/common/mapper/VideoWarningMapper.java
  13. 62
      shuili-system/src/main/java/com/kms/yxgh/common/service/VideoWarningService.java
  14. 56
      sql/sy/v1.2.0/全量脚本/statistic.sql

35
shuili-system/src/main/java/com/kms/common/utils/BaseEntityUtils.java

@ -7,31 +7,40 @@ import com.shuili.common.utils.StringUtils;
public class BaseEntityUtils { public class BaseEntityUtils {
//添加更新人 //添加更新人
public static void preUpdate(BaseEntity be){ public static void preUpdate(BaseEntity be) {
be.preUpdate(); be.preUpdate();
SysUser user = UserUtils.getUser(); try {
if(StringUtils.isNotNull(user)){ SysUser user = UserUtils.getUser();
be.setUpdateUid(user.getId()); if (StringUtils.isNotNull(user)) {
be.setUpdateUid(user.getId());
}
} catch (Exception ignored) {
} }
} }
//添加创建人 //添加创建人
public static void preInsert(BaseEntity be){ public static void preInsert(BaseEntity be) {
be.preInsert(); be.preInsert();
SysUser user = UserUtils.getUser(); try {
if(StringUtils.isNotNull(user)){ SysUser user = UserUtils.getUser();
be.setCreateUid(user.getId()); if (StringUtils.isNotNull(user)) {
be.setUpdateUid(user.getId()); be.setCreateUid(user.getId());
be.setUpdateUid(user.getId());
}
} catch (Exception ignored) {
} }
} }
/** /**
* 添加创建人 * 添加创建人
*/ */
public static void addCreateBy(BaseEntity be){ public static void addCreateBy(BaseEntity be) {
SysUser user = UserUtils.getUser(); try {
if(StringUtils.isNotNull(user)){ SysUser user = UserUtils.getUser();
be.setCreateUid(user.getId()); if (StringUtils.isNotNull(user)) {
be.setCreateUid(user.getId());
}
} catch (Exception ignored) {
} }
} }
} }

21
shuili-system/src/main/java/com/kms/common/utils/UserUtils.java

@ -1,11 +1,11 @@
package com.kms.common.utils; package com.kms.common.utils;
import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.stp.StpUtil;
import com.kms.framework.web.service.SysPermissionService;
import com.kms.system.service.SysUserService;
import com.shuili.common.core.domain.entity.SysUser; import com.shuili.common.core.domain.entity.SysUser;
import com.shuili.common.utils.SpringUtils; import com.shuili.common.utils.SpringUtils;
import com.shuili.common.utils.StringUtils; import com.shuili.common.utils.StringUtils;
import com.kms.framework.web.service.SysPermissionService;
import com.kms.system.service.SysUserService;
import java.util.Set; import java.util.Set;
@ -15,15 +15,15 @@ public class UserUtils {
private static SysPermissionService sysPermissionService = null; private static SysPermissionService sysPermissionService = null;
private static SysUserService getUserService(){ private static SysUserService getUserService() {
if(userService == null){ if (userService == null) {
userService = SpringUtils.getBean(SysUserService.class); userService = SpringUtils.getBean(SysUserService.class);
} }
return userService; return userService;
} }
private static SysPermissionService getSysPermissionService(){ private static SysPermissionService getSysPermissionService() {
if(sysPermissionService == null){ if (sysPermissionService == null) {
sysPermissionService = SpringUtils.getBean(SysPermissionService.class); sysPermissionService = SpringUtils.getBean(SysPermissionService.class);
} }
return sysPermissionService; return sysPermissionService;
@ -33,17 +33,16 @@ public class UserUtils {
try { try {
String loginId = StpUtil.getLoginId("-1"); String loginId = StpUtil.getLoginId("-1");
if(StringUtils.isNotEmpty(loginId)) { if (StringUtils.isNotEmpty(loginId)) {
return getUserService().getWithRedis(loginId); return getUserService().getWithRedis(loginId);
// return getUserService().selectUserById(loginId); // return getUserService().selectUserById(loginId);
} }
} catch (Exception e) { } catch (Exception ignored) {
e.printStackTrace();
} }
return null; return null;
} }
public static Set<String> getPermissions(){ public static Set<String> getPermissions() {
SysUser user = getUser(); SysUser user = getUser();
return sysPermissionService.getMenuPermission(user); return sysPermissionService.getMenuPermission(user);
} }

35
shuili-system/src/main/java/com/kms/yxgh/common/controller/VideoWarningController.java

@ -0,0 +1,35 @@
package com.kms.yxgh.common.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.kms.yxgh.base.Response;
import com.kms.yxgh.common.dto.VideoWarningDto;
import com.kms.yxgh.common.dto.WarningQueDto;
import com.kms.yxgh.common.service.VideoWarningService;
import com.shuili.common.core.domain.SearchParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
@RestController
@AllArgsConstructor
@RequestMapping("/run/api/video/warning")
@Api(tags = "运行管理视频预警相关")
public class VideoWarningController {
private final VideoWarningService warningService;
@PostMapping("/list")
@ApiOperation("预警列表")
public IPage<VideoWarningDto> list(@RequestBody SearchParam<WarningQueDto> sp) {
return warningService.selectPage(sp);
}
@GetMapping("/{id}")
@ApiOperation("预警详情")
public Response<VideoWarningDto> detail(@PathVariable String id) {
return Response.ok(warningService.detail(id));
}
}

21
shuili-system/src/main/java/com/kms/yxgh/common/controller/WarningDataController.java

@ -0,0 +1,21 @@
package com.kms.yxgh.common.controller;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName: WarningDataController
* @Description: TODO
* @Date: 2024/3/24 下午9:27
* *
* @author: hxh
* @version: 1.0
*/
@RestController
@AllArgsConstructor
@RequestMapping("/run/api/indicator")
@Api(tags = "运行管理运行指标相关")
public class WarningDataController {
}

58
shuili-system/src/main/java/com/kms/yxgh/common/domain/MonitoringData.java

@ -0,0 +1,58 @@
package com.kms.yxgh.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Date;
/**
* @ClassName: MonitoringData
* @Description: TODO
* @Date: 2024/3/24 下午7:14
* *
* @author: hxh
* @version: 1.0
*/
@TableName("bs_sgc_stc_jc")
@Data
@ApiModel("监测数据表")
public class MonitoringData extends SyBaseEntity {
// 测站编码
private String stcd;
// 上游水位
private Float upstreamLevel;
// 下游水位
private Float downstreamLevel;
// 开度
private Float opening;
// 过闸流量
private Float gateFlow;
// 雨量
private Float rainFall;
// 绕渗透压
private Float bypassOsmoticPressure;
// 渗透压计高程
private Float osmoticPressureGaugeElevation;
// 闸机扬压力
private Float boostPressure;
// 水闸接缝
private Float seam;
// 裂缝开合度
private Float crackOpeningDegree;
// 闸墩变形x
private Float deformationX;
// 闸墩变形y
private Float deformationY;
// 闸机油温
private Float oilTemperature;
// 采集时间
private Date collectionTime;
private Integer year;
@TableField(exist = false)
private String remark;
}

30
shuili-system/src/main/java/com/kms/yxgh/common/domain/MonitoringStation.java

@ -0,0 +1,30 @@
package com.kms.yxgh.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
* @ClassName: MonitoringStation
* @Description: TODO
* @Date: 2024/3/24 下午6:28
* *
* @author: hxh
* @version: 1.0
*/
@TableName("bs_sgc_stc_cz")
@Data
@ApiModel("测站表")
public class MonitoringStation extends SyBaseEntity {
private String stcd;
private String stcdName;
private String code;
private String type;
@TableField(exist = false)
private String remark;
}

35
shuili-system/src/main/java/com/kms/yxgh/common/domain/VideoWarning.java

@ -0,0 +1,35 @@
package com.kms.yxgh.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.util.Date;
/**
* @ClassName: VideoWarning
* @Description: TODO
* @Date: 2024/3/24 下午6:25
* *
* @author: hxh
* @version: 1.0
*/
@TableName("bs_sgc_stc_spfx")
@Data
@ApiModel("视频分析预警")
public class VideoWarning extends SyBaseEntity {
private String code;
private Integer type;
private String name;
private Date warningTime;
@TableField(exist = false)
private String remark;
}

44
shuili-system/src/main/java/com/kms/yxgh/common/dto/VideoWarningDto.java

@ -0,0 +1,44 @@
package com.kms.yxgh.common.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @ClassName: VideoWarningDto
* @Description: TODO
* @Date: 2024/3/24 下午7:24
* *
* @author: hxh
* @version: 1.0
*/
@ApiModel("视频预警")
@Data
public class VideoWarningDto {
@ApiModelProperty(value = "id")
private String id;
@ApiModelProperty(value = "对象编码")
private String code;
@ApiModelProperty(value = "对象名称")
private String objName;
@ApiModelProperty(value = "对象类型")
private Integer type;
@ApiModelProperty(value = "预警名称")
private String name;
@ApiModelProperty(value = "预警地点")
private String location;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "预警时间")
private Date warningTime;
}

137
shuili-system/src/main/java/com/kms/yxgh/common/job/Job.java

@ -0,0 +1,137 @@
package com.kms.yxgh.common.job;
import cn.hutool.core.date.DateField;
import cn.hutool.core.util.RandomUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.kms.yg.df.domain.BsSgcDfJbxx;
import com.kms.yg.df.mapper.BsSgcDfJbxxMapper;
import com.kms.yg.sz.domain.BsSgcSzGcda;
import com.kms.yg.sz.mapper.BsSgcSzGcdaMapper;
import com.kms.yxgh.common.domain.MonitoringData;
import com.kms.yxgh.common.domain.MonitoringStation;
import com.kms.yxgh.common.domain.VideoWarning;
import com.kms.yxgh.common.mapper.MonitoringDataMapper;
import com.kms.yxgh.common.mapper.MonitoringStationMapper;
import com.kms.yxgh.common.mapper.VideoWarningMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
/**
* @ClassName: Job
* @Description: TODO
* @Date: 2024/3/24 下午8:06
* *
* @author: hxh
* @version: 1.0
*/
//开启spring定时任务
@EnableScheduling
@Component
public class Job {
@Value("${job.isRunning:false}")
private Boolean isRunning;
@Autowired
private BsSgcDfJbxxMapper bsSgcDfJbxxMapper;
@Autowired
private BsSgcSzGcdaMapper bsSgcSzJbxxMapper;
@Autowired
private VideoWarningMapper videoWarningMapper;
@Autowired
private MonitoringDataMapper monitoringDataMapper;
@Autowired
private MonitoringStationMapper monitoringStationMapper;
@Scheduled(cron = "0 0/5 * * * ?")
public void run() {
if (isRunning) {
List<BsSgcDfJbxx> dfList = dfList();
List<BsSgcSzGcda> szList = szList();
try {
insert(dfList.get(RandomUtil.randomInt(dfList.size())).getDikeCode(), 1);
} catch (Exception ignored) {
}
try {
insert(szList.get(RandomUtil.randomInt(szList.size())).getWagaCode(), 2);
} catch (Exception ignored) {
}
try {
initMonitoringData();
} catch (Exception ignored) {
}
}
}
private void initMonitoringData() {
List<MonitoringStation> monitoringStationList = monitoringStationList();
int size = RandomUtil.randomInt(2, 4);
for (int i = 0; i < size; i++) {
MonitoringStation monitoringStation = monitoringStationList.get(RandomUtil.randomInt(monitoringStationList.size()));
MonitoringData monitoringData = new MonitoringData();
monitoringData.setStcd(monitoringStation.getStcd());
monitoringData.setUpstreamLevel((float) RandomUtil.randomDouble(0, 100));
monitoringData.setDownstreamLevel((float) RandomUtil.randomDouble(0, 100));
monitoringData.setOpening((float) RandomUtil.randomDouble(0, 100));
monitoringData.setGateFlow((float) RandomUtil.randomDouble(0, 100));
monitoringData.setRainFall((float) RandomUtil.randomDouble(0, 100));
monitoringData.setBypassOsmoticPressure((float) RandomUtil.randomDouble(0, 100));
monitoringData.setOsmoticPressureGaugeElevation((float) RandomUtil.randomDouble(0, 100));
monitoringData.setBoostPressure((float) RandomUtil.randomDouble(0, 100));
monitoringData.setSeam((float) RandomUtil.randomDouble(0, 100));
monitoringData.setCrackOpeningDegree((float) RandomUtil.randomDouble(0, 100));
monitoringData.setDeformationX((float) RandomUtil.randomDouble(0, 100));
monitoringData.setDeformationY((float) RandomUtil.randomDouble(0, 100));
monitoringData.setOilTemperature((float) RandomUtil.randomDouble(0, 100));
monitoringData.setCollectionTime(new Date());
monitoringData.setYear(monitoringData.getCollectionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().getYear());
monitoringDataMapper.insert(monitoringData);
}
}
private void insert(String code, Integer type) {
VideoWarning videoWarning = new VideoWarning();
videoWarning.setCode(code);
videoWarning.setType(type);
videoWarning.setName(warningName());
videoWarning.setWarningTime(RandomUtil.randomDate(new Date(), DateField.SECOND, 1, 60));
videoWarningMapper.insert(videoWarning);
}
private List<MonitoringStation> monitoringStationList() {
return monitoringStationMapper.selectList(null);
}
private String warningName() {
String[] dfWarningName = {"岸边违规侵占", "水面漂浮物聚集", "降雨天气识别", "违规下水游泳"};
return dfWarningName[RandomUtil.randomInt(dfWarningName.length)];
}
private List<BsSgcDfJbxx> dfList() {
Wrapper<BsSgcDfJbxx> wrapper = Wrappers.<BsSgcDfJbxx>lambdaQuery()
.isNull(BsSgcDfJbxx::getExprDate);
return bsSgcDfJbxxMapper.selectList(wrapper);
}
private List<BsSgcSzGcda> szList() {
Wrapper<BsSgcSzGcda> wrapper = Wrappers.<BsSgcSzGcda>lambdaQuery()
.isNull(BsSgcSzGcda::getExprDate);
return bsSgcSzJbxxMapper.selectList(wrapper);
}
}

18
shuili-system/src/main/java/com/kms/yxgh/common/mapper/MonitoringDataMapper.java

@ -0,0 +1,18 @@
package com.kms.yxgh.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kms.yxgh.common.domain.MonitoringData;
import org.springframework.stereotype.Repository;
/**
* @ClassName: MonitoringDataMapper
* @Description: TODO
* @Date: 2024/3/24 下午7:18
* *
* @author: hxh
* @version: 1.0
*/
@Repository
public interface MonitoringDataMapper extends BaseMapper<MonitoringData> {
}

17
shuili-system/src/main/java/com/kms/yxgh/common/mapper/MonitoringStationMapper.java

@ -0,0 +1,17 @@
package com.kms.yxgh.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kms.yxgh.common.domain.MonitoringStation;
import org.springframework.stereotype.Repository;
/**
* @ClassName: MonitoringStationMapper
* @Description: TODO
* @Date: 2024/3/24 下午7:19
* *
* @author: hxh
* @version: 1.0
*/
@Repository
public interface MonitoringStationMapper extends BaseMapper<MonitoringStation> {
}

55
shuili-system/src/main/java/com/kms/yxgh/common/mapper/VideoWarningMapper.java

@ -0,0 +1,55 @@
package com.kms.yxgh.common.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.domain.VideoWarning;
import com.kms.yxgh.common.dto.VideoWarningDto;
import com.kms.yxgh.common.dto.WarningQueDto;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
/**
* @ClassName: VideoWarningMapper
* @Description: TODO
* @Date: 2024/3/24 下午7:20
* *
* @author: hxh
* @version: 1.0
*/
@Repository
public interface VideoWarningMapper extends BaseMapper<VideoWarning> {
@Select("<script>" +
"SELECT a.id,a.code,a.type,a.name,a.warning_time," +
" (case when a.type = 1 then (select dike_name from bs_sgc_df_gcda where dike_code = a.code and expr_date is null) end " +
" when a.type = 2 then (select waga_name from bs_sgc_sz_jbxx where waga_code = a.code and expr_date is null ) end) as objName " +
" FROM bs_sgc_stc_spfx a order by a.create_time desc" +
" <if test='dto.code != null and dto.code != \"\"'>" +
"AND a.code = #{dto.code} " +
"</if>" +
"<if test='dto.startTime != null'>" +
"AND a.create_time &gt;= #{dto.startTime} " +
"</if>" +
"<if test='dto.endTime != null'>" +
"AND a.create_time &lt;= #{dto.endTime} " +
"</if>" +
"<if test='dto.types != null and dto.types.size() > 0'>" +
"AND a.type in " +
"<foreach collection='dto.types' item='type' open='(' close=')' separator=','>" +
"#{type}" +
"</foreach>" +
"</if>" +
"</script>")
IPage<VideoWarningDto> search(Page<VideoWarning> page, @Param("dto") WarningQueDto dto);
@Select("<script>" +
"SELECT a.id,a.code,a.type,a.name,a.warning_time ," +
" (case when a.type = 1 then (select dike_name from bs_sgc_df_gcda where dike_code = a.code and expr_date is null) end " +
" when a.type = 2 then (select waga_name from bs_sgc_sz_jbxx where waga_code = a.code and expr_date is null ) end) as objName, " +
" FROM bs_sgc_stc_spfx a order by a.create_time desc" +
" where a.id = #{id}" +
"</script>")
VideoWarningDto detail(@Param("id") String id);
}

62
shuili-system/src/main/java/com/kms/yxgh/common/service/VideoWarningService.java

@ -0,0 +1,62 @@
package com.kms.yxgh.common.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kms.yxgh.common.domain.VideoWarning;
import com.kms.yxgh.common.dto.VideoWarningDto;
import com.kms.yxgh.common.dto.WarningQueDto;
import com.kms.yxgh.common.mapper.VideoWarningMapper;
import com.shuili.common.core.domain.SearchParam;
import com.shuili.common.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Calendar;
import java.util.Date;
import java.util.Optional;
/**
* @ClassName: videoWarningService
* @Description: TODO
* @Date: 2024/3/24 下午7:22
* *
* @author: hxh
* @version: 1.0
*/
@Service
@RequiredArgsConstructor
public class VideoWarningService {
private final VideoWarningMapper videoWarningMapper;
public IPage<VideoWarningDto> selectPage(SearchParam<WarningQueDto> sp) {
Page<VideoWarning> page = new Page<>(sp.getPageNum(), sp.getPageSize());
WarningQueDto data = Optional.ofNullable(sp.getData()).orElse(new WarningQueDto());
if (StringUtils.isNotBlank(data.getAdcd())) {
data.setAdcd(remove00(data.getAdcd()));
}
if (data.getFromTime() != null && data.getStartTime() == null) {
data.setStartTime(getBeforeTime(data.getFromTime()));
}
return videoWarningMapper.search(page, data);
}
private String remove00(String str) {
if (str.endsWith("00")) {
return str.substring(0, str.length() - 2);
} else if (str.endsWith("0000")) {
return str.substring(0, str.length() - 4);
}
return str;
}
//计算指定小时数前的时间
private Date getBeforeTime(Integer fromTime) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR, -fromTime);
return calendar.getTime();
}
public VideoWarningDto detail(String id) {
return videoWarningMapper.detail(id);
}
}

56
sql/sy/v1.2.0/全量脚本/statistic.sql

@ -0,0 +1,56 @@
SET NAMES utf8mb4;
CREATE TABLE `bs_sgc_stc_jc` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '监测id',
`STCD` varchar(255) COLLATE utf8mb4_general_ci COMMENT '测站编码',
`UPSTREAM_LEVEL` float NULL DEFAULT NULL COMMENT '上游水位',
`DOWNSTREAM_LEVEL` float NULL DEFAULT NULL COMMENT '下游水位',
`OPENING` float NULL DEFAULT NULL COMMENT '开度',
`GATE_FLOW` float NULL DEFAULT NULL COMMENT '过闸流量',
`RAIN_FALL` float NULL DEFAULT NULL COMMENT '雨量',
`BYPASS_OSMOTIC_PRESSURE` float NULL DEFAULT NULL COMMENT '绕渗透压',
`OSMOTIC_PRESSURE_GAUGE_ELEVATION` float NULL DEFAULT NULL COMMENT '渗透压计高程',
`BOOST_PRESSURE` float NULL DEFAULT NULL COMMENT '闸机扬压力',
`SEAM` float NULL DEFAULT NULL COMMENT '水闸接缝',
`CRACK_OPENING_DEGREE` float NULL DEFAULT NULL COMMENT '裂缝开合度',
`DEFORMATION_X` float NULL DEFAULT NULL COMMENT '闸墩变形x',
`DEFORMATION_Y` float NULL DEFAULT NULL COMMENT '闸墩变形y',
`OIL_TEMPERATURE` float NULL DEFAULT NULL COMMENT '闸机油温',
`YEAR` int NOT NULL COMMENT '年份',
`COLLECTION_TIME` datetime DEFAULT NULL 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='监测数据表';
CREATE TABLE `bs_sgc_stc_cz` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT 'id',
`STCD` varchar(255) COLLATE utf8mb4_general_ci COMMENT '测站编码',
`STCD_NAME` varchar(255) COLLATE utf8mb4_general_ci COMMENT '测站名称',
`CODE` varchar(255) COLLATE utf8mb4_general_ci COMMENT '对象编码',
`TYPE` int NULL DEFAULT NULL 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='测站表';
CREATE TABLE `bs_sgc_stc_spfx` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`CODE` varchar(255) COLLATE utf8mb4_general_ci COMMENT '对象编码',
`TYPE` int NULL DEFAULT NULL COMMENT '类型',
`NAME` varchar(100) DEFAULT NULL COMMENT '名称',
`WARNING_TIME` datetime DEFAULT NULL 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='视频分析表';
Loading…
Cancel
Save