From aea105c1f303c341e283e516b5d3b0c49c4fa688 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 27 Jul 2026 09:32:40 +0800 Subject: [PATCH 01/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/service/IMsWarnRuleBService.java | 3 +- .../service/impl/MsWarnRuleBServiceImpl.java | 31 ++++++++----------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java index 21396e56..05607c7f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java @@ -3,6 +3,7 @@ package com.yfd.platform.qgc_base.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.qgc_base.domain.MsWarnRuleB; import com.yfd.platform.qgc_sys.warnRule.vo.MsWarnRuleBVo; import com.yfd.platform.qgc_sys.warnRule.vo.WarnRuleVo; @@ -58,7 +59,7 @@ public interface IMsWarnRuleBService extends IService { /** * 查询测站和预警规则绑定列表 */ - Page getRuleBindList(DataSourceRequest request); + DataSourceResult getRuleBindList(DataSourceRequest request); /** * 根据id查询规则配置详情 diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index c921e1eb..ee9490de 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; import com.yfd.platform.qgc_base.domain.MsWarnRuleB; import com.yfd.platform.qgc_base.domain.MsWarnRuleDetailB; @@ -20,10 +22,7 @@ import com.yfd.platform.qgc_sys.warnRule.vo.MsWarnRuleBVo; import com.yfd.platform.qgc_sys.warnRule.vo.MsWarnRuleDetailVo; import com.yfd.platform.qgc_sys.warnRule.vo.WarnRuleVo; import com.yfd.platform.qgc_sys.warnRule.vo.WarnYsVo; -import com.yfd.platform.utils.DataSourceRequestUtil; -import com.yfd.platform.utils.DictCodeToNameConverter; -import com.yfd.platform.utils.CodeToNameMetadataBo; -import com.yfd.platform.utils.SecurityUtils; +import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -174,7 +173,7 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl getRuleBindList(DataSourceRequest request) { + public DataSourceResult getRuleBindList(DataSourceRequest request) { + DataSourceResult dataSourceResult = new DataSourceResult<>(); StringBuilder sql = new StringBuilder(); sql.append("SELECT id AS bindId, STCD, STNM, STTP_CODE AS sttpCode, RULE_NAME AS ruleName, ") .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") @@ -342,18 +342,13 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl page; - if (request.getPage() > 0 && request.getPageSize() > 0) { - page = new Page<>(request.getPage(), request.getPageSize()); - } else if (request.getTake() > 0) { - long pageNum = (request.getSkip() / request.getTake()) + 1; - page = new Page<>(pageNum, request.getTake()); - } else { - page = new Page<>(1, 20); - } - microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), params, MsWarnRuleBVo.class); - return page; + DataSourceLoadOptionsBase loadOptions = request.toDevRequest(); + Page page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); + List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), params, MsWarnRuleBVo.class); + dictCodeToNameConverter.convertCodeToName(list, CODE_TO_NAME_META_LIST); + dataSourceResult.setData(list); + dataSourceResult.setTotal(page == null ? list.size() : page.getTotal()); + return dataSourceResult; } @Override From 8e8c5dc2f4aca52d998ba7459cc282fb0c258917 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 27 Jul 2026 15:36:58 +0800 Subject: [PATCH 02/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/service/IMsWarnRuleBService.java | 2 +- .../service/impl/MsWarnRuleBServiceImpl.java | 93 ++++++++++++++----- .../entity/vo/OverviewVmsstbprptVo.java | 1 + .../controller/MsWarnRuleBController.java | 62 +++++++------ .../qgc_sys/warnRule/vo/WarnYsVo.java | 6 ++ 5 files changed, 111 insertions(+), 53 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java index 05607c7f..5c3ea2d5 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsWarnRuleBService.java @@ -24,7 +24,7 @@ public interface IMsWarnRuleBService extends IService { /** * 获取告警类型对应的要素列表 */ - List getAllYs(String ruleType); + List getAllYs(String ruleId,String ruleType); /** * 新增或修改预警规则 diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index ee9490de..b48ed9a8 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.service.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -25,10 +26,12 @@ import com.yfd.platform.qgc_sys.warnRule.vo.WarnYsVo; import com.yfd.platform.utils.*; import jakarta.annotation.Resource; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -115,18 +118,59 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl 0; } + /** + * 最小值 + */ + private BigDecimal minVal; + + /** + * 最大值 + */ + private BigDecimal maxVal; + @Override - public List getAllYs(String ruleType) { + public List getAllYs(String ruleId, String ruleType) { String dbRuleType = getOldRuleType(ruleType); - String sql = "SELECT t2.TB_ID AS tbId, t2.YS, t3.YS_SHOW_NAME AS ysName\n" + - "FROM MS_WARN_RULE_B t1\n" + - "INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID\n" + - "INNER JOIN ST_YS_B t3 ON t2.YS = t3.YS\n" + - "WHERE t1.RULE_TYPE ='" + dbRuleType + "'\n" + - " AND t1.IS_DELETED = 0\n" + - " AND t2.IS_DELETED = 0\n" + - "GROUP BY t2.TB_ID, t2.YS, t3.YS_SHOW_NAME"; + boolean hasRuleId = (ruleId != null && !ruleId.isEmpty()); + + // 动态构建 SELECT 子句 + StringBuilder selectClause = new StringBuilder( + "SELECT t2.TB_ID AS tbId, t2.YS, t3.YS_SHOW_NAME AS ysName" + ); + // 有 ruleId 时额外查询 MIN_VAL 和 MAX_VAL + if (hasRuleId) { + selectClause.append(",t2.WARN_LEVEL,t2.MARK,t2.LVL, t2.MIN_VAL, t2.MAX_VAL"); + } + + // 动态构建 GROUP BY 子句(与 SELECT 对应) + StringBuilder groupByClause = new StringBuilder( + "GROUP BY t2.TB_ID, t2.YS, t3.YS_SHOW_NAME" + ); + if (hasRuleId) { + groupByClause.append(",t2.WARN_LEVEL,t2.MARK,t2.LVL, t2.MIN_VAL, t2.MAX_VAL"); + } + + // 基础 FROM / JOIN 和固定过滤条件(删除标志) + String fromJoin = "\nFROM MS_WARN_RULE_B t1" + + "\nINNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID" + + "\nINNER JOIN ST_YS_B t3 ON t2.YS = t3.YS" + + "\nWHERE t1.IS_DELETED = 0" + + "\n AND t2.IS_DELETED = 0"; + + // 动态条件(使用占位符) + String condition; Map paramMap = new HashMap<>(); + if (hasRuleId) { + condition = "\n AND t1.ID = #{map.ruleId}"; + paramMap.put("ruleId", ruleId); + } else { + condition = "\n AND t1.RULE_TYPE = #{map.ruleType}"; + paramMap.put("ruleType", dbRuleType); + } + + // 组装完整 SQL + String sql = selectClause + fromJoin + condition + "\n" + groupByClause; + return microservicDynamicSQLMapper.getAllListWithResultType(sql, paramMap, WarnYsVo.class); } @@ -139,11 +183,11 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl detail = vo.getDetail(); Integer lvl = null; - if (!CollectionUtils.isEmpty(detail) && detail.get(0) != null && detail.get(0).getLvl() != null) { - lvl = Integer.parseInt(detail.get(0).getLvl()); + if (!CollectionUtils.isEmpty(detail) && detail.getFirst() != null && detail.getFirst().getLvl() != null) { + lvl = Integer.parseInt(detail.getFirst().getLvl()); } List detailBList = new ArrayList<>(); @@ -156,10 +200,13 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl dataSourceResult = new DataSourceResult<>(); StringBuilder sql = new StringBuilder(); sql.append("SELECT id AS bindId, STCD, STNM, STTP_CODE AS sttpCode, RULE_NAME AS ruleName, ") - .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") - .append("FROM (\n") - .append("SELECT t1.ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") - .append("t2.RECORD_USER AS recordUser, t2.MODIFY_TIME, t2.DESCRIPTION, t2.IS_SHOW AS isShow, t2.RULE_CODE ") - .append("FROM MS_WARN_RULE_STBPRP_B t1\n") - .append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n") - .append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n") - .append("WHERE t2.RULE_CODE IN ('common','custom')\n") - .append(") WHERE 1=1"); + .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") + .append("FROM (\n") + .append("SELECT t1.ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") + .append("t2.RECORD_USER AS recordUser, t2.MODIFY_TIME, t2.DESCRIPTION, t2.IS_SHOW AS isShow, t2.RULE_CODE ") + .append("FROM MS_WARN_RULE_STBPRP_B t1\n") + .append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n") + .append("INNER JOIN V_MS_STBPRP_T t3 ON t1.STCD = t3.STCD\n") + .append("WHERE t2.RULE_CODE IN ('common','custom')\n") + .append(") WHERE 1=1"); Map params = new HashMap<>(); // 处理过滤条件 diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java index 62120e64..2a9dd782 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/overview/entity/vo/OverviewVmsstbprptVo.java @@ -52,6 +52,7 @@ public class OverviewVmsstbprptVo implements Serializable { private BigDecimal inv; private Integer invinmn; private Date stdsdt; + private String precis; private Date pststdt; private Date pesstdt; private Date swdt; diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java index 40ac8a3c..ec387386 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/controller/MsWarnRuleBController.java @@ -1,9 +1,11 @@ package com.yfd.platform.qgc_sys.warnRule.controller; +import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.config.ResponseResult; import com.yfd.platform.qgc_base.service.IMsWarnRuleBService; import com.yfd.platform.qgc_sys.warnRule.vo.MsWarnRuleBVo; +import com.yfd.platform.utils.QgcQueryWrapperUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; @@ -33,11 +35,13 @@ public class MsWarnRuleBController { @PostMapping("/ysList") @Operation(summary = "获取告警类型对应的要素") public ResponseResult getAllYs(@RequestBody DataSourceRequest dataSourceRequest) { - String ruleType = getFilterFieldValue(dataSourceRequest, "ruleType"); + DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest(); + String ruleType = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ruleType"); + String ruleId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ruleId"); if (ruleType == null || ruleType.isEmpty()) { return ResponseResult.error("ruleType 不能为空"); } - return ResponseResult.successData(msWarnRuleBService.getAllYs(ruleType)); + return ResponseResult.successData(msWarnRuleBService.getAllYs(ruleId,ruleType)); } @PostMapping("/addOrUpdate") @@ -108,31 +112,31 @@ public class MsWarnRuleBController { return ResponseResult.successData(msWarnRuleBService.getRuleListByStcd(stcd, ruleType, lvl)); } - /** - * 从 DataSourceRequest 过滤条件中提取指定字段的值 - */ - private String getFilterFieldValue(DataSourceRequest request, String fieldName) { - if (request == null || request.getFilter() == null) { - return null; - } - return findFilterValue(request.getFilter(), fieldName); - } - - private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) { - if (filter == null) { - return null; - } - if (fieldName.equals(filter.getField()) && filter.getValue() != null) { - return filter.getValue().toString(); - } - if (filter.getFilters() != null) { - for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { - String value = findFilterValue(child, fieldName); - if (value != null) { - return value; - } - } - } - return null; - } +// /** +// * 从 DataSourceRequest 过滤条件中提取指定字段的值 +// */ +// private String getFilterFieldValue(DataSourceRequest request, String fieldName) { +// if (request == null || request.getFilter() == null) { +// return null; +// } +// return findFilterValue(request.getFilter(), fieldName); +// } +// +// private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) { +// if (filter == null) { +// return null; +// } +// if (fieldName.equals(filter.getField()) && filter.getValue() != null) { +// return filter.getValue().toString(); +// } +// if (filter.getFilters() != null) { +// for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { +// String value = findFilterValue(child, fieldName); +// if (value != null) { +// return value; +// } +// } +// } +// return null; +// } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java index 6c83c04d..6f9c9c22 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java @@ -15,6 +15,12 @@ public class WarnYsVo { /** 要素编码 */ private String ys; + /** 等级 */ + private String lvl; + + /** 告警等级 */ + private String warnLevel; + /** 要素名称 */ private String ysName; From cc3d280dda50ef08b7d39efe5e4665b1fd3d9720 Mon Sep 17 00:00:00 2001 From: tangwei Date: Mon, 27 Jul 2026 18:26:54 +0800 Subject: [PATCH 03/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/qgc_base/domain/MsWarnRuleB.java | 7 +++++++ .../platform/qgc_base/mapper/MsWarnRuleBMapper.java | 4 ++-- .../service/impl/MsWarnRuleBServiceImpl.java | 10 ++++++++-- .../platform/qgc_sys/warnRule/vo/MsWarnRuleBVo.java | 13 ++++++++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/MsWarnRuleB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/MsWarnRuleB.java index 1812285c..4bf6fecc 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/MsWarnRuleB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/MsWarnRuleB.java @@ -2,6 +2,8 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.UserIdField; +import com.yfd.platform.annotation.UserNameField; import lombok.Data; import java.io.Serializable; @@ -64,8 +66,13 @@ public class MsWarnRuleB implements Serializable { // ---------- 审计字段 ---------- @TableField("RECORD_USER") + @UserIdField private String recordUser; + @TableField(exist = false) + @UserNameField + private String recordUserName; + @TableField("RECORD_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date recordTime; diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/mapper/MsWarnRuleBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/MsWarnRuleBMapper.java index c61f1a2f..f0e7325a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/mapper/MsWarnRuleBMapper.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/mapper/MsWarnRuleBMapper.java @@ -38,7 +38,7 @@ public interface MsWarnRuleBMapper extends BaseMapper { @Select("SELECT t1.ID, RULE_NAME AS ruleName, RULE_CODE AS ruleCode, t2.LVL AS lvl " + "FROM MS_WARN_RULE_B t1 INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " + - "WHERE 1=1 AND t1.STCD = #{stcd} " + + "WHERE 1=1 AND (t1.RULE_CODE ='common' OR (t1.RULE_CODE ='custom' AND t1.STCD=#{stcd})) " + "AND t1.RULE_TYPE = #{ruleType} AND t1.IS_DELETED = 0 AND t2.IS_DELETED = 0 " + "GROUP BY t1.ID, RULE_NAME, RULE_CODE, lvl") List getRuleListByStcd(@Param("stcd") String stcd, @Param("ruleType") String ruleType); @@ -46,7 +46,7 @@ public interface MsWarnRuleBMapper extends BaseMapper { @Update("UPDATE MS_WARN_RULE_B SET STCD = #{stcd} WHERE ID = #{id}") void updateStcd(@Param("stcd") String stcd, @Param("id") String id); - @Select("SELECT t2.STTP_NAME FROM V_MS_STBPRP_T t1 INNER JOIN SD_STTP_B t2 ON t1.STTP = t2.ID WHERE t1.STCD = #{stcd}") + @Select("SELECT t2.STTP_NAME FROM V_MS_STBPRP_T t1 INNER JOIN SD_STTP_B t2 ON t1.STTP = t2.STTP_CODE WHERE t1.STCD = #{stcd}") String getSttpCodeNameByStcd(@Param("stcd") String stcd); @Select("SELECT COUNT(t1.ID) FROM MS_WARN_RULE_B t1 INNER JOIN MS_WARN_RULE_DETAIL_B t2 ON t1.ID = t2.RULE_ID " + diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index b48ed9a8..931a1aa4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -11,6 +11,7 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.common.utils.UserNameFillHelper; import com.yfd.platform.qgc_base.domain.MsWarnRuleB; import com.yfd.platform.qgc_base.domain.MsWarnRuleDetailB; import com.yfd.platform.qgc_base.domain.MsWarnRuleStbprpB; @@ -70,9 +71,13 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl queryPageList(DataSourceRequest request) { Page page = DataSourceRequestUtil.executeQuery(request, MsWarnRuleB.class, this); + userNameFillHelper.fillUserNames(page.getRecords()); dictCodeToNameConverter.convertCodeToName(page, CODE_TO_NAME_META_LIST); return page; } @@ -372,10 +377,10 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl getRuleBindList(DataSourceRequest request) { DataSourceResult dataSourceResult = new DataSourceResult<>(); StringBuilder sql = new StringBuilder(); - sql.append("SELECT id AS bindId, STCD, STNM, STTP_CODE AS sttpCode, RULE_NAME AS ruleName, ") + sql.append("SELECT id AS bindId, STCD,RULE_ID, STNM, STTP_CODE AS sttpCode, RULE_NAME AS ruleName, ") .append("RULE_TYPE AS ruleType, recordUser, MODIFY_TIME AS modifyTime, isShow, RULE_CODE AS ruleCode ") .append("FROM (\n") - .append("SELECT t1.ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") + .append("SELECT t1.ID,t2.ID RULE_ID, t1.STCD, t3.STNM, t3.STTP_CODE, t2.RULE_NAME, t2.RULE_TYPE, ") .append("t2.RECORD_USER AS recordUser, t2.MODIFY_TIME, t2.DESCRIPTION, t2.IS_SHOW AS isShow, t2.RULE_CODE ") .append("FROM MS_WARN_RULE_STBPRP_B t1\n") .append("INNER JOIN MS_WARN_RULE_B t2 ON t1.RULE_ID = t2.ID\n") @@ -393,6 +398,7 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl page = loadOptions == null ? null : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake()); List list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), params, MsWarnRuleBVo.class); dictCodeToNameConverter.convertCodeToName(list, CODE_TO_NAME_META_LIST); + userNameFillHelper.fillUserNames(list); dataSourceResult.setData(list); dataSourceResult.setTotal(page == null ? list.size() : page.getTotal()); return dataSourceResult; diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/MsWarnRuleBVo.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/MsWarnRuleBVo.java index 428d37f0..86951abf 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/MsWarnRuleBVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/MsWarnRuleBVo.java @@ -1,6 +1,9 @@ package com.yfd.platform.qgc_sys.warnRule.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.UserIdField; +import com.yfd.platform.annotation.UserNameField; import lombok.Data; import java.util.Date; @@ -18,6 +21,8 @@ public class MsWarnRuleBVo { /** 设施与规则绑定id */ private String bindId; + /** 告警规则名称 */ + private String ruleId; /** 告警规则名称 */ private String ruleName; @@ -58,11 +63,17 @@ public class MsWarnRuleBVo { private List detail; /** 创建人 */ + @UserIdField private String recordUser; - /** 创建人名称 */ + /** 创建人 */ + @UserNameField + @TableField(exist = false) private String recordUserName; +// /** 创建人名称 */ +// private String recordUserName; + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date modifyTime; From 2ba302ae8638961cd9583bade016ffbf74ae3251 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 28 Jul 2026 12:48:23 +0800 Subject: [PATCH 04/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yfd/platform/config/SecurityConfig.java | 2 ++ .../qgc_base/service/impl/MsWarnRuleBServiceImpl.java | 9 ++++++--- .../com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java | 2 +- backend/src/main/resources/application-dev.yml | 2 +- backend/src/main/resources/application-prod.yml | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index 3fbb007d..c0b79262 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -61,6 +61,8 @@ public class SecurityConfig { .requestMatchers("/tempFile/**").permitAll() .requestMatchers("/system/user/auditUser").permitAll() .requestMatchers("/register/accessToken").permitAll() + .requestMatchers("/sys/psbmodulelbb/**").permitAll() + // .requestMatchers("/eng/**").permitAll() // .requestMatchers("/eq/**").permitAll() // .requestMatchers("/env/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index 931a1aa4..a659a2a8 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -456,11 +456,14 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl detailGroup = warnLevelMap.get(warnLevel); List ysVoList = new ArrayList<>(); - MsWarnRuleDetailB first = detailGroup.get(0); - org.springframework.beans.BeanUtils.copyProperties(first, detailVo); + MsWarnRuleDetailB first = detailGroup.getFirst(); + detailVo.setLvl(first.getLvl().toString()); + detailVo.setWarnLevel(first.getWarnLevel()); +// detailVo.setLvlName(first.n); +// BeanUtils.copyProperties(first, detailVo); for (MsWarnRuleDetailB db : detailGroup) { WarnYsVo ysVo = new WarnYsVo(); - org.springframework.beans.BeanUtils.copyProperties(db, ysVo); + BeanUtils.copyProperties(db, ysVo); ysVoList.add(ysVo); } detailVo.setYsList(ysVoList); diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java index 6f9c9c22..92882047 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java +++ b/backend/src/main/java/com/yfd/platform/qgc_sys/warnRule/vo/WarnYsVo.java @@ -16,7 +16,7 @@ public class WarnYsVo { private String ys; /** 等级 */ - private String lvl; + private Integer lvl; /** 告警等级 */ private String warnLevel; diff --git a/backend/src/main/resources/application-dev.yml b/backend/src/main/resources/application-dev.yml index 31f5159d..2053da47 100644 --- a/backend/src/main/resources/application-dev.yml +++ b/backend/src/main/resources/application-dev.yml @@ -129,4 +129,4 @@ attachment: token: ${ATTACHMENT_TOKEN:qgcBkod25ngBa4wu8BtfCPYsJ7lQGVDoexH} upload-url: ${ATTACHMENT_UPLOAD_URL:http://172.16.31.185:18200/upload} video-url: ${ATTACHMENT_VIDEO_URL:http://172.16.31.185:18200/upload} - delete-url: ${ATTACHMENT_DELETE_URL:http://172.16.31.185:18200/delete} + delete-url: ${ATTACHMENT_DELETE_URL:http://172.16.31.185:18200/FileDelete} diff --git a/backend/src/main/resources/application-prod.yml b/backend/src/main/resources/application-prod.yml index f7005940..a87887d5 100644 --- a/backend/src/main/resources/application-prod.yml +++ b/backend/src/main/resources/application-prod.yml @@ -285,4 +285,4 @@ attachment: token: ${ATTACHMENT_TOKEN:qgcBkod25ngBa4wu8BtfCPYsJ7lQGVDoexH} upload-url: ${ATTACHMENT_UPLOAD_URL:http://172.16.31.185:18200/upload} video-url: ${ATTACHMENT_VIDEO_URL:http://172.16.31.185:18200/upload} - delete-url: ${ATTACHMENT_DELETE_URL:http://172.16.31.185:18200/delete} \ No newline at end of file + delete-url: ${ATTACHMENT_DELETE_URL:http://172.16.31.185:18200/FileDelete} \ No newline at end of file From 56305b8f891eebb2cfd975500282150516c33876 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 28 Jul 2026 14:01:39 +0800 Subject: [PATCH 05/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/service/impl/MsWarnRuleBServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index a659a2a8..52c17142 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -173,8 +173,10 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl detailGroup = warnLevelMap.get(warnLevel); List ysVoList = new ArrayList<>(); MsWarnRuleDetailB first = detailGroup.getFirst(); - detailVo.setLvl(first.getLvl().toString()); + if (first != null && first.getLvl() != null) { + detailVo.setLvl(first.getLvl().toString()); + } detailVo.setWarnLevel(first.getWarnLevel()); // detailVo.setLvlName(first.n); // BeanUtils.copyProperties(first, detailVo); From 26b1ca794d5680d17dc85719df4dbfadb38cd010 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 28 Jul 2026 15:15:04 +0800 Subject: [PATCH 06/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=97=A5=E5=BF=97=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yfd/platform/config/SecurityConfig.java | 2 +- .../controller/MsOperationLogController.java | 46 +++++++ .../service/IMsOperationLogService.java | 25 +++- .../impl/MsOperationLogServiceImpl.java | 60 +++++++-- .../service/impl/MsWarnRuleBServiceImpl.java | 2 +- .../vd/service/impl/VdMonitorServiceImpl.java | 120 +++++++++++------- 6 files changed, 201 insertions(+), 54 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/qgc_base/controller/MsOperationLogController.java diff --git a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java index c0b79262..d9b7b014 100644 --- a/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java +++ b/backend/src/main/java/com/yfd/platform/config/SecurityConfig.java @@ -62,7 +62,7 @@ public class SecurityConfig { .requestMatchers("/system/user/auditUser").permitAll() .requestMatchers("/register/accessToken").permitAll() .requestMatchers("/sys/psbmodulelbb/**").permitAll() - + .requestMatchers("/base/operationLog/**").permitAll() // .requestMatchers("/eng/**").permitAll() // .requestMatchers("/eq/**").permitAll() // .requestMatchers("/env/**").permitAll() diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/controller/MsOperationLogController.java b/backend/src/main/java/com/yfd/platform/qgc_base/controller/MsOperationLogController.java new file mode 100644 index 00000000..b67062b8 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_base/controller/MsOperationLogController.java @@ -0,0 +1,46 @@ +package com.yfd.platform.qgc_base.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_base.domain.MsOperationLog; +import com.yfd.platform.qgc_base.domain.MsOperationLogDetail; +import com.yfd.platform.qgc_base.service.IMsOperationLogService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 操作日志控制器 + */ +@Slf4j +@RestController +@RequestMapping("/base/operationLog") +@Tag(name = "操作日志管理") +public class MsOperationLogController { + + @Resource + private IMsOperationLogService msOperationLogService; + + @PostMapping("/GetKendoListCust") + @Operation(summary = "分页查询操作日志(tableName必传,recordId可选)") + public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) { + Page page = msOperationLogService.queryPageList(dataSourceRequest); + return ResponseResult.successData(page); + } + + @GetMapping("/getDetailByMainId") + @Operation(summary = "根据日志主表ID查询日志详情") + public ResponseResult getDetailByMainId(@RequestParam("mainId") String mainId) { + if (StringUtils.isBlank(mainId)) { + return ResponseResult.error("mainId 不能为空"); + } + List list = msOperationLogService.getDetailByMainId(mainId); + return ResponseResult.successData(list); + } +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java index 7ee1af42..f22e59c7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/IMsOperationLogService.java @@ -1,8 +1,15 @@ package com.yfd.platform.qgc_base.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.qgc_base.domain.MsOperationLog; +import com.yfd.platform.qgc_base.domain.MsOperationLogDetail; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; -public interface IMsOperationLogService { +import java.util.List; + +public interface IMsOperationLogService extends IService { void recordEngAddLog(SdEngInfoBH engInfo, String source); @@ -58,4 +65,20 @@ public interface IMsOperationLogService { * @param 实体类型 */ void recordDeleteDetailLog(String recordId,String tableName, T entity, String source); + + /** + * 分页查询操作日志 + * + * @param request 请求参数(tableName 必传在 filter 中,recordId 可选) + * @return 分页结果 + */ + Page queryPageList(DataSourceRequest request); + + /** + * 根据日志主表ID查询日志详情 + * + * @param mainId 日志主表ID + * @return 日志详情列表 + */ + List getDetailByMainId(String mainId); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java index 8b705c51..09b53724 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java @@ -4,28 +4,28 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.qgc_base.domain.MsOperationLog; import com.yfd.platform.qgc_base.domain.MsOperationLogDetail; import com.yfd.platform.qgc_base.domain.SdEngInfoBH; import com.yfd.platform.qgc_base.mapper.MsOperationLogDetailMapper; import com.yfd.platform.qgc_base.mapper.MsOperationLogMapper; import com.yfd.platform.qgc_base.service.IMsOperationLogService; +import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.SecurityUtils; import jakarta.annotation.Resource; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @Service -public class MsOperationLogServiceImpl implements IMsOperationLogService { +public class MsOperationLogServiceImpl extends ServiceImpl implements IMsOperationLogService { private static final String ENG_TABLE_NAME = "SD_ENGINFO_B_H"; @@ -685,4 +685,48 @@ public class MsOperationLogServiceImpl implements IMsOperationLogService { } return builder.toString(); } + + @Override + public Page queryPageList(DataSourceRequest request) { + Page msOperationLogPage = DataSourceRequestUtil.executeQuery(request, MsOperationLog.class, this); + return msOperationLogPage; + } + + @Override + public List getDetailByMainId(String mainId) { + if (StringUtils.isBlank(mainId)) { + return new ArrayList<>(); + } + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MsOperationLogDetail::getMainId, mainId); + return msOperationLogDetailMapper.selectList(wrapper); + } + + /** + * 从 DataSourceRequest 过滤条件中提取指定字段的值 + */ + private String getFilterFieldValue(DataSourceRequest request, String fieldName) { + if (request == null || request.getFilter() == null) { + return null; + } + return findFilterValue(request.getFilter(), fieldName); + } + + private String findFilterValue(DataSourceRequest.FilterDescriptor filter, String fieldName) { + if (filter == null) { + return null; + } + if (fieldName.equals(filter.getField()) && filter.getValue() != null) { + return filter.getValue().toString(); + } + if (filter.getFilters() != null) { + for (DataSourceRequest.FilterDescriptor child : filter.getFilters()) { + String value = findFilterValue(child, fieldName); + if (value != null) { + return value; + } + } + } + return null; + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index 52c17142..03ad2e4e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -387,7 +387,7 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl params = new HashMap<>(); diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index e9955d81..cff8f5a0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -843,52 +843,86 @@ public class VdMonitorServiceImpl implements VdMonitorService { "AND src.LGTD IS NOT NULL " + "AND src.LTTD IS NOT NULL "; } - private String buildRunDataCoreSql() { - return "SELECT " + - "run.ID AS id, " + - "run.STCD AS stcd, " + - "run.TM AS tm, " + - "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + - "run.IMG_PATH AS imgPath, " + - "run.FLPTH AS flpth, " + - "run.DEVICEINFO AS deviceinfo, " + - "run.DESCRIBE AS describe, " + - "run.FID AS fid, " + - "run.THUMBNAIL AS thumbnail, " + - "base.RSTCD AS rstcd, " + - "base.STNM AS stnm, " + - "eng.ENNM AS ennm, " + - "base.FHSTCD AS fhstcd, " + - "fh.STNM AS fhstnm, " + - "base.CSTCD AS stCode, " + - "cst.STNM AS stName, " + - "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + - "hb.BASENAME AS baseName, " + - "base.STTP AS sttpCode, " + - "sttp.STTP_NAME AS sttpName, " + - "base.STNM AS titleName, " + - "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + - "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + - "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + - "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + - "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + - "hbrv.HBRVNM AS hbrvcdName " + - "FROM SD_VDINFO_R run " + - "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + - "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + - " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + - "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + - " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + - " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + - "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + - "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + - "WHERE NVL(run.IS_DELETED, 0) = 0 "; + return " SELECT\n" + + " a.ID,\n" + + " a.STCD,\n" + + " a.TM,\n" + + " b.stnm || ' ' || to_char(a.TM, 'yyyy-mm-dd hh24') AS FLNM,\n" + + " a.IMG_PATH,\n" + + " a.FLPTH,\n" + + " a.DEVICEINFO,\n" + + " a.DESCRIBE,\n" + + " a.FID,\n" + + " a.THUMBNAIL,\n" + + " b.RSTCD,\n" + + " b.stnm,\n" + + " b.ennm,\n" + + " b.FHSTCD,\n" + + " b.FHSTNM,\n" + + " b.STCODE AS stCode,\n" + + " b.STNAME AS stName,\n" + + " b.BASE_ID AS baseId,\n" + + " b.BASE_NAME AS baseName,\n" + + " b.sttp_code AS sttpCode,\n" + + " b.sttp_name AS sttpName,\n" + + " b.stnm AS titleName,\n" + + " b.basestepsort,\n" + + " b.rvcdstepsort,\n" + + " b.rstcdstepsort,\n" + + " b.hbrvcd,\n" + + " b.hbrvcd_name\n" + + " FROM SD_VDINFO_R a\n" + + " INNER JOIN V_MS_STBPRP_T b\n" + + " ON a.STCD = b.STCD\n" + + " AND b.IS_DELETED = 0"; } +// private String buildRunDataCoreSql() { +// return "SELECT " + +// "run.ID AS id, " + +// "run.STCD AS stcd, " + +// "run.TM AS tm, " + +// "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + +// "run.IMG_PATH AS imgPath, " + +// "run.FLPTH AS flpth, " + +// "run.DEVICEINFO AS deviceinfo, " + +// "run.DESCRIBE AS describe, " + +// "run.FID AS fid, " + +// "run.THUMBNAIL AS thumbnail, " + +// "base.RSTCD AS rstcd, " + +// "base.STNM AS stnm, " + +// "eng.ENNM AS ennm, " + +// "base.FHSTCD AS fhstcd, " + +// "fh.STNM AS fhstnm, " + +// "base.CSTCD AS stCode, " + +// "cst.STNM AS stName, " + +// "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + +// "hb.BASENAME AS baseName, " + +// "base.STTP AS sttpCode, " + +// "sttp.STTP_NAME AS sttpName, " + +// "base.STNM AS titleName, " + +// "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + +// "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + +// "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + +// "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + +// "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + +// "hbrv.HBRVNM AS hbrvcdName " + +// "FROM SD_VDINFO_R run " + +// "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + +// "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + +// "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + +// " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + +// "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + +// " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + +// " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + +// "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + +// "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + +// "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + +// " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 " + +// "WHERE NVL(run.IS_DELETED, 0) = 0 "; +// } + private String buildLatestRunDataCoreSql() { return "SELECT " + "run.ID AS id, " + From 339ac6b609945fb0b538202320432c5785f03a9f Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 28 Jul 2026 15:44:05 +0800 Subject: [PATCH 07/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_env/vd/service/impl/VdMonitorServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index cff8f5a0..2fb7724f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -993,7 +993,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { selectMap.put("stcd", "t.stcd AS stcd"); selectMap.put("tm", "t.tm AS tm"); selectMap.put("flnm", "t.flnm AS flnm"); - selectMap.put("imgPath", "t.imgPath AS imgPath"); + selectMap.put("imgPath", "t.IMG_PATH AS imgPath"); selectMap.put("flpth", "t.flpth AS flpth"); selectMap.put("deviceinfo", "t.deviceinfo AS deviceinfo"); selectMap.put("describe", "t.describe AS describe"); @@ -1013,9 +1013,9 @@ public class VdMonitorServiceImpl implements VdMonitorService { selectMap.put("baseStepSort", "t.baseStepSort AS baseStepSort"); selectMap.put("rvcdStepSort", "t.rvcdStepSort AS rvcdStepSort"); selectMap.put("rstcdStepSort", "t.rstcdStepSort AS rstcdStepSort"); - selectMap.put("siteStepSort", "t.siteStepSort AS siteStepSort"); +// selectMap.put("siteStepSort", "t.siteStepSort AS siteStepSort"); selectMap.put("hbrvcd", "t.hbrvcd AS hbrvcd"); - selectMap.put("hbrvcdName", "t.hbrvcdName AS hbrvcdName"); + selectMap.put("hbrvcdName", "t.hbrvcd_name AS hbrvcdName"); if (CollUtil.isEmpty(selectFields)) { return String.join(", ", selectMap.values()); From 26a9591b223516a30aba3df2c470267f735de7d9 Mon Sep 17 00:00:00 2001 From: tangwei Date: Tue, 28 Jul 2026 16:16:39 +0800 Subject: [PATCH 08/11] =?UTF-8?q?fix:=20=E5=A2=9E=E5=8A=A0=E4=B8=AD?= =?UTF-8?q?=E6=96=87=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yfd/platform/annotation/FieldChinese.java | 12 ++++++++++++ .../service/impl/MsOperationLogServiceImpl.java | 2 +- .../service/impl/MsWarnRuleBServiceImpl.java | 14 +++++++------- 3 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 backend/src/main/java/com/yfd/platform/annotation/FieldChinese.java diff --git a/backend/src/main/java/com/yfd/platform/annotation/FieldChinese.java b/backend/src/main/java/com/yfd/platform/annotation/FieldChinese.java new file mode 100644 index 00000000..3d9343ee --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/annotation/FieldChinese.java @@ -0,0 +1,12 @@ +package com.yfd.platform.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface FieldChinese { + String value() default ""; +} \ No newline at end of file diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java index 09b53724..7cc85eb3 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java @@ -275,7 +275,7 @@ public class MsOperationLogServiceImpl extends ServiceImpl details = new ArrayList<>(); diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java index 03ad2e4e..57927268 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsWarnRuleBServiceImpl.java @@ -86,9 +86,9 @@ public class MsWarnRuleBServiceImpl extends ServiceImpl Date: Tue, 28 Jul 2026 16:44:45 +0800 Subject: [PATCH 09/11] =?UTF-8?q?fix:=20=E5=AE=9E=E4=BD=93=E7=B1=BB?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=AD=E6=96=87=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qgc_base/domain/SdAiboxBH.java | 44 +++++++++++++++++++ .../platform/qgc_base/domain/SdArtsgBH.java | 39 ++++++++++++++++ .../impl/MsOperationLogServiceImpl.java | 31 ++++++++++--- 3 files changed, 109 insertions(+), 5 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAiboxBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAiboxBH.java index 8edd3ef0..601289bf 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAiboxBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAiboxBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,16 +26,19 @@ public class SdAiboxBH implements Serializable { * 测站编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("测站编码") private String stcd; /** * 测站名称 */ + @FieldChinese("测站名称") private String stnm; /** * 测站类型 */ + @FieldChinese("测站类型") private String sttp; @TableField(exist = false) @@ -44,43 +48,51 @@ public class SdAiboxBH implements Serializable { * 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; /** * 位置经度 */ + @FieldChinese("位置经度") private BigDecimal lgtd; /** * 位置纬度 */ + @FieldChinese("位置纬度") private BigDecimal lttd; /** * 高程 */ + @FieldChinese("高程") private BigDecimal elev; /** * 站址 */ + @FieldChinese("站址") private String stlc; /** * 建成日期 */ + @FieldChinese("建成日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date jcdt; /** * 退役/拆除日期 */ + @FieldChinese("退役/拆除日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date wddt; /** * 建设状态代码 */ + @FieldChinese("建设状态代码") private Integer bldsttCode; @TableField(exist = false) @@ -89,11 +101,13 @@ public class SdAiboxBH implements Serializable { /** * 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; /** * 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) @@ -102,12 +116,14 @@ public class SdAiboxBH implements Serializable { /** * 数据接入时间 */ + @FieldChinese("数据接入时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date dtinTm; /** * 监测方式 */ + @FieldChinese("监测方式") private Integer mway; @TableField(exist = false) @@ -116,16 +132,19 @@ public class SdAiboxBH implements Serializable { /** * 站索引 */ + @FieldChinese("站索引") private String stindx; /** * 排序 */ + @FieldChinese("排序") private Integer orderIndex; /** * 关联测站编码 */ + @FieldChinese("关联测站编码") private String rstcd; @TableField(exist = false) @@ -134,6 +153,7 @@ public class SdAiboxBH implements Serializable { /** * 所属基地编码 */ + @FieldChinese("所属基地编码") private String baseId; @TableField(exist = false) @@ -142,11 +162,13 @@ public class SdAiboxBH implements Serializable { /** * 所属基地流域编码 */ + @FieldChinese("所属基地流域编码") private String hbrvcd; /** * 所属流域代码 */ + @FieldChinese("所属流域代码") private String rvcd; @TableField(exist = false) @@ -155,114 +177,136 @@ public class SdAiboxBH implements Serializable { /** * 简介 */ + @FieldChinese("简介") private String introduce; /** * LOGO */ + @FieldChinese("LOGO") private String logo; /** * 介绍文件 */ + @FieldChinese("介绍文件") private String inffile; /** * 服务对象 */ + @FieldChinese("服务对象") private String fwdx; /** * 供电方式 */ + @FieldChinese("供电方式") private String gdfs; /** * AI配置 */ + @FieldChinese("AI配置") private String aipz; /** * 模型版本 */ + @FieldChinese("模型版本") private String mxbb; /** * IP地址 */ + @FieldChinese("IP地址") private String ipaddr; /** * SIM卡信息 */ + @FieldChinese("SIM卡信息") private String siminfo; /** * 联系人 */ + @FieldChinese("联系人") private String lxr; /** * 用途 */ + @FieldChinese("用途") private String purpose; /** * 数据频率 */ + @FieldChinese("数据频率") private String dtfrqcy; /** * 备注 */ + @FieldChinese("备注") private String remark; /** * 植被覆盖类型 */ + @FieldChinese("植被覆盖类型") private String vlsr; /** * 植被覆盖调查时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("植被覆盖调查时间") private Date vlsrTm; /** * 创建人 */ + @FieldChinese("创建人") private String recordUser; /** * 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; /** * 更新人 */ + @FieldChinese("更新人") private String modifyUser; /** * 更新时间 */ + @FieldChinese("更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date modifyTime; /** * 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; /** * 删除人 */ + @FieldChinese("删除人") private String deleteUser; /** * 删除时间 */ + @FieldChinese("删除时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdArtsgBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdArtsgBH.java index ec63dfc4..b7b0fcc9 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdArtsgBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdArtsgBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -24,17 +25,20 @@ public class SdArtsgBH implements Serializable { /** * 测站编码 */ + @FieldChinese("测站编码") @TableId(type = IdType.INPUT) private String stcd; /** * 测站名称 */ + @FieldChinese("测站名称") private String stnm; /** * 测站类型 */ + @FieldChinese("测站类型") private String sttp; @TableField(exist = false) @@ -43,37 +47,44 @@ public class SdArtsgBH implements Serializable { /** * 数据时间 */ + @FieldChinese("数据时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date tm; /** * 位置经度 */ + @FieldChinese("位置经度") private BigDecimal lgtd; /** * 位置纬度 */ + @FieldChinese("位置纬度") private BigDecimal lttd; /** * 高程 */ + @FieldChinese("高程") private BigDecimal elev; /** * 站址 */ + @FieldChinese("站址") private String stlc; /** * 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; /** * 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) @@ -82,17 +93,20 @@ public class SdArtsgBH implements Serializable { /** * 数据接入时间 */ + @FieldChinese("数据接入时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date dtinTm; /** * 排序 */ + @FieldChinese("排序") private Integer orderIndex; /** * 关联测站编码 */ + @FieldChinese("关联测站编码") private String rstcd; @TableField(exist = false) @@ -101,6 +115,7 @@ public class SdArtsgBH implements Serializable { /** * 所属基地编码 */ + @FieldChinese("所属基地编码") private String baseId; @TableField(exist = false) @@ -109,11 +124,13 @@ public class SdArtsgBH implements Serializable { /** * 所属基地流域编码 */ + @FieldChinese("所属基地流域编码") private String hbrvcd; /** * 所属流域代码 */ + @FieldChinese("所属流域代码") private String rvcd; @@ -123,47 +140,55 @@ public class SdArtsgBH implements Serializable { /** * 所属行政区编码 */ + @FieldChinese("所属行政区编码") private String addvcd; /** * 规划设计日期 */ + @FieldChinese("规划设计日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date stdsdt; /** * 计划开工日期 */ + @FieldChinese("计划开工日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date pststdt; /** * 计划完工日期 */ + @FieldChinese("计划完工日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date pesstdt; /** * 开工日期 */ + @FieldChinese("开工日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date swdt; /** * 建成日期 */ + @FieldChinese("建成日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date jcdt; /** * 退役/拆除日期 */ + @FieldChinese("退役/拆除日期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date wddt; /** * 建设状态代码 */ + @FieldChinese("建设状态代码") private Integer bldsttCode; @TableField(exist = false) @@ -172,71 +197,85 @@ public class SdArtsgBH implements Serializable { /** * 简介 */ + @FieldChinese("简介") private String introduce; /** * LOGO */ + @FieldChinese("LOGO") private String logo; /** * 介绍文件 */ + @FieldChinese("介绍文件") private String inffile; /** * 投资 */ + @FieldChinese("投资") private BigDecimal inv; /** * 投资金额 */ + @FieldChinese("投资金额") private Integer invinmn; /** * 保护措施 */ + @FieldChinese("保护措施") private String prtcts; /** * 数量 */ + @FieldChinese("数量") private Integer cnt; /** * 面积 */ + @FieldChinese("面积") private BigDecimal ar; /** * 类型 */ + @FieldChinese("类型") private String tp; /** * 附件 */ + @FieldChinese("附件") private String attm; /** * 数据频率 */ + @FieldChinese("数据频率") private String dtfrqcy; /** * 备注 */ + @FieldChinese("备注") private String remark; /** * 植被覆盖类型 */ + @FieldChinese("植被覆盖类型") private String vlsr; /** * 植被覆盖调查时间 */ + @FieldChinese("植被覆盖调查时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java index 7cc85eb3..3ed63af0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/MsOperationLogServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yfd.platform.annotation.FieldChinese; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.qgc_base.domain.MsOperationLog; import com.yfd.platform.qgc_base.domain.MsOperationLogDetail; @@ -421,6 +422,7 @@ public class MsOperationLogServiceImpl extends ServiceImpl Date: Tue, 28 Jul 2026 17:35:17 +0800 Subject: [PATCH 10/11] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qgc_base/domain/SdAimonitorBH.java | 80 ++ .../yfd/platform/qgc_base/domain/SdDwBH.java | 311 ++--- .../platform/qgc_base/domain/SdEngInfoBH.java | 1236 +++++++---------- .../yfd/platform/qgc_base/domain/SdEqBH.java | 266 ++-- .../platform/qgc_base/domain/SdFbrdBH.java | 221 ++- .../platform/qgc_base/domain/SdFhbtBH.java | 231 ++- .../qgc_base/domain/SdFishDictoryB.java | 256 ++-- .../platform/qgc_base/domain/SdFpssBH.java | 418 +++--- .../platform/qgc_base/domain/SdOpinfoBH.java | 168 ++- .../platform/qgc_base/domain/SdOtteBH.java | 83 +- .../platform/qgc_base/domain/SdOtweBH.java | 85 +- .../platform/qgc_base/domain/SdSonarBH.java | 99 +- .../yfd/platform/qgc_base/domain/SdTeBH.java | 81 +- .../yfd/platform/qgc_base/domain/SdVaBH.java | 113 +- .../platform/qgc_base/domain/SdVdinfoB.java | 158 ++- .../yfd/platform/qgc_base/domain/SdVpBH.java | 109 +- .../yfd/platform/qgc_base/domain/SdWeBH.java | 75 +- .../yfd/platform/qgc_base/domain/SdWqBH.java | 101 +- .../yfd/platform/qgc_base/domain/SdWtBH.java | 127 +- .../service/impl/SdEngInfoBHServiceImpl.java | 4 +- .../vd/service/impl/VdMonitorServiceImpl.java | 106 +- 21 files changed, 2328 insertions(+), 2000 deletions(-) diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAimonitorBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAimonitorBH.java index 1a976bf0..bc1b1dd7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAimonitorBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdAimonitorBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; @@ -18,154 +19,233 @@ import java.util.Date; public class SdAimonitorBH implements Serializable { private static final long serialVersionUID = 1L; + /** 站码 */ @TableId(type = IdType.INPUT) + @FieldChinese("站码") private String stcd; + /** 站名 */ + @FieldChinese("站名") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 经度(单位:°) */ + @FieldChinese("经度(单位:°)") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度(单位:°)") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程(单位:m)") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; + /** 建设状态分类 */ @TableField("BLDSTT_CODE") + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; + /** 监测方式 */ + @FieldChinese("监测方式") private Integer mway; @TableField(exist = false) private String mwayName; + /** 监测指标 */ @TableField("STINDX") + @FieldChinese("监测指标") private String stindx; + /** 排序 */ @TableField("ORDER_INDEX") + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; + /** 所属水电基地编码 */ @TableField("BASE_ID") + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次(单位:min)") private Integer dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; + /** 数据来源时间 */ @TableField("VLSR_TM") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; /** 服务对象 */ @TableField("FWDX") + @FieldChinese("服务对象") private String fwdx; /** 供电方式 */ @TableField("GDFS") + @FieldChinese("供电方式") private String gdfs; /** AI盒子配置 */ @TableField("AIPZ") + @FieldChinese("AI盒子配置") private String aipz; /** 模型版本 */ @TableField("MXBB") + @FieldChinese("模型版本") private String mxbb; /** IP地址 */ @TableField("IPADDR") + @FieldChinese("IP地址") private String ipaddr; /** SIM卡信息 */ @TableField("SIMINFO") + @FieldChinese("SIM卡信息") private String siminfo; /** 用途 */ @TableField("PURPOSE") + @FieldChinese("用途") private String purpose; /** 观察方式 */ @TableField("OBSERVE") + @FieldChinese("观察方式") private String observe; /** 地形裁剪范围 */ @TableField("BOX") + @FieldChinese("地形裁剪范围") private String box; // ---------- 审计字段 ---------- + /** 创建人:关联SYS_USER.ID */ @TableField("RECORD_USER") + @FieldChinese("创建人") private String recordUser; + /** 创建时间 */ @TableField("RECORD_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; + /** 更新人:关联SYS_USER.ID */ @TableField("MODIFY_USER") + @FieldChinese("更新人") private String modifyUser; + /** 更新时间 */ @TableField("MODIFY_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; + /** 是否已删除 */ @TableField("IS_DELETED") + @FieldChinese("是否已删除") private Integer isDeleted; + /** 删除人:关联SYS_USER.ID */ @TableField("DELETE_USER") + @FieldChinese("删除人") private String deleteUser; + /** 删除时间 */ @TableField("DELETE_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdDwBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdDwBH.java index 2997cc93..f652c727 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdDwBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdDwBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,341 +22,279 @@ public class SdDwBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 测站编码 - */ + /** 低温水减缓设施编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("低温水减缓设施编码") private String stcd; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 测站名称 - */ + /** 低温水减缓设施名称 */ + @FieldChinese("低温水减缓设施名称") private String stnm; - /** - * 测站类型 - */ + /** 低温水减缓设施类型 */ + @FieldChinese("低温水减缓设施类型") private String sttp; @TableField(exist = false) private String sttpName; - /** - * 位置经度 - */ + /** 经度(°) */ + @FieldChinese("经度(°)") private BigDecimal lgtd; - /** - * 位置纬度 - */ + /** 纬度(°) */ + @FieldChinese("纬度(°)") private BigDecimal lttd; - /** - * 高程 - */ + /** 高程(m) */ + @FieldChinese("高程(m)") private BigDecimal elev; - /** - * 站址 - */ + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - /** - * 是否启用 - */ + /** 是否启用:0=禁用 1=启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 数据是否接入 - */ + /** 数据是否接入:0=未接入 1=已接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 排序 - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 所属基地编码 - */ + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; - /** - * 所属基地流域编码 - */ + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; - /** - * 关联测站编码 - */ + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - /** - * 规划设计日期 - */ + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - /** - * 计划开工日期 - */ + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - /** - * 计划完工日期 - */ + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - /** - * 开工日期 - */ + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - /** - * 建成日期 - */ + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - /** - * 退役/拆除日期 - */ + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - /** - * 建设状态代码 - */ + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; - /** - * 简介 - */ + /** 简介 */ + @FieldChinese("简介") private String introduce; - /** - * LOGO - */ + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; - /** - * 介绍文件 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 投资 - */ + /** 总投资(亿元) */ + @FieldChinese("总投资(亿元)") private BigDecimal inv; - /** - * 投资金额 - */ + /** 投资是否计入主体工程:0=否 1=是 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; - /** - * 调度方式 - */ + /** 是否有调度规程分析:0=无调度规程 1=有调度规程 */ + @FieldChinese("是否有调度规程分析") private Integer dispatch; - /** - * 调度描述 - */ + /** 调度规程文字描述 */ + @FieldChinese("调度规程文字描述") private String dispatchDes; - /** - * 调度文件 - */ + /** 调度规程文件 */ + @FieldChinese("调度规程文件") private String dispatchFile; - /** - * 叠梁门层数高度 - */ + /** 多层式进水口-每层取水口高程(用"/"隔断) */ + @FieldChinese("多层式进水口-每层取水口高程") private String dcshg; - /** - * 叠梁门单层取水口个数 - */ + /** 多层式进水口-取水口个数 */ + @FieldChinese("多层式进水口-取水口个数") private BigDecimal dcsqskgs; - /** - * 叠梁门层数 - */ + /** 叠梁门/翻板门式进水口的门叶数量 */ + @FieldChinese("叠梁门/翻板门式进水口的门叶数量") private Integer dlmcnt; - /** - * 叠梁门高度 - */ + /** 叠梁门/翻板门式进水口的单节门叶高度 */ + @FieldChinese("叠梁门/翻板门式进水口的单节门叶高度") private BigDecimal dlmhg; - /** - * 叠梁门底部高程 - */ + /** 叠梁门/翻板门顶部高程 */ + @FieldChinese("叠梁门/翻板门顶部高程") private BigDecimal dlmdbgc; - /** - * 叠梁门最大温度梯度 - */ + /** 叠梁门/翻板门式进水口的最大淹没水深 */ + @FieldChinese("叠梁门/翻板门式进水口的最大淹没水深") private BigDecimal dlmmxwdp; - /** - * 梯级电站台数 - */ + /** 套筒式进水口的套筒数量 */ + @FieldChinese("套筒式进水口的套筒数量") private Integer ttscnt; - /** - * 梯级电站高度 - */ + /** 套筒式进水口的单个套筒高度 */ + @FieldChinese("套筒式进水口的单个套筒高度") private BigDecimal ttshg; - /** - * 梯级电站最低死水位 - */ + /** 套筒式进水口的最大淹没水深 */ + @FieldChinese("套筒式进水口的最大淹没水深") private BigDecimal ttszdss; - /** - * 取水口段结构 - */ + /** 前置挡墙/隔水幕墙的结构形式 */ + @FieldChinese("前置挡墙/隔水幕墙的结构形式") private String qzdqjg; - /** - * 取水口段高度 - */ + /** 前置挡墙的挡墙顶高程 */ + @FieldChinese("前置挡墙的挡墙顶高程") private BigDecimal qzdqhg; - /** - * 隔水幕墙长度 - */ + /** 隔水幕墙的长度 */ + @FieldChinese("隔水幕墙的长度") private BigDecimal gsmqcd; - /** - * 隔水幕墙宽度 - */ + /** 隔水幕墙的宽度 */ + @FieldChinese("隔水幕墙的宽度") private BigDecimal gsmqkd; - /** - * 隔水幕墙材料 - */ + /** 隔水幕墙材料 */ + @FieldChinese("隔水幕墙材料") private BigDecimal gsmqcl; - /** - * 其他设施具体型式 - */ + /** 其他设施具体型式 */ + @FieldChinese("其他设施具体型式") private String qtssjbtx; - /** - * 天然河流平均水温 - */ + /** 天然河流平均水温 */ + @FieldChinese("天然河流平均水温") private BigDecimal nravwt; - /** - * 天然河流最高温月份多年平均水温 - */ + /** 天然河流最高温月份多年平均水温 */ + @FieldChinese("天然河流最高温月份多年平均水温") private BigDecimal nrmxavwt; - /** - * 天然河流最低温月份多年平均水温 - */ + /** 天然河流最低温月份多年平均水温 */ + @FieldChinese("天然河流最低温月份多年平均水温") private BigDecimal nrmnavwt; - /** - * 建成后坝下平均水温 - */ + /** 建成后坝下平均水温 */ + @FieldChinese("建成后坝下平均水温") private BigDecimal dnavwt; - /** - * 建成后坝下最高温月份多年平均水温 - */ + /** 建成后坝下最高温月份多年平均水温 */ + @FieldChinese("建成后坝下最高温月份多年平均水温") private BigDecimal dnmxavwt; - /** - * 建成后坝下最低温月份多年平均水温 - */ + /** 建成后坝下最低温月份多年平均水温 */ + @FieldChinese("建成后坝下最低温月份多年平均水温") private BigDecimal dnmnavwt; - /** - * 数据频率 - */ + /** 数据监测频次 */ + @FieldChinese("数据监测频次") private String dtfrqcy; - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 植被覆盖类型 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 植被覆盖调查时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - /** - * 创建人 - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人 - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人 - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java index 464ddc2f..aaf8da45 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEngInfoBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,1289 +22,1034 @@ public class SdEngInfoBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 水电水利工程编码 - */ + /** 水电水利工程编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("水电水利工程编码") private String stcd; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 工程名称 - */ + /** 工程名称 */ + @FieldChinese("工程名称") private String ennm; - /** - * 所属建设阶段 字典编码:sd_enginfo_b_h.blprd - * 1001000=规划 1002000=预可研 1003000=环评 1004000=可研 - * 1005000=在建 1006000=招标设计 1007000=施工详图 1009000=建设 - * 1010000=蓄水阶段环保验收 1011000=竣工 1012000=竣工环保验收 1013000=环境影响后评价 - */ + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; - /** - * 位置经度。单位:(°) - */ + /** 位置经度。单位:(°) */ + @FieldChinese("位置经度") private BigDecimal lgtd; - /** - * 位置纬度。单位:(°) - */ + /** 位置纬度。单位:(°) */ + @FieldChinese("位置纬度") private BigDecimal lttd; - /** - * 高程。单位:m - */ + /** 高程。单位:m */ + @FieldChinese("高程") private Double elev; - /** - * 站址 - */ + /** 站址 */ + @FieldChinese("站址") private String stlc; - /** - * 是否启用 字典编码:comm.enabled 0=禁用 1=启用 - */ + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 水能利用数据是否接入 字典编码:comm.yn 0=否 1=是 - */ + /** 水能利用数据是否接入 */ + @FieldChinese("水能利用数据是否接入") private Integer dtin; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @TableField("DTIN_TM") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 是否发布月报 - */ + /** 是否发布月报 */ + @FieldChinese("是否发布月报") private Integer monthReport; - /** - * 排序,按照干支流排序 - */ + /** 排序,按照电站/干支流排序 */ @TableField("ORDER_INDEX") + @FieldChinese("排序") private Integer orderIndex; - /** - * 所属基地编码,关联SD_HYDROBASE.BASEID - */ + /** 所属基地编码 */ @TableField("BASE_ID") + @FieldChinese("所属基地编码") private String baseId; - /** - * 所属基地名称 - */ + /** 所属基地名称 */ @TableField("BASE_NAME") + @FieldChinese("所属基地名称") private String baseName; - /** - * 所属基地流域编码 - */ + /** 所属基地河段编码 */ + @FieldChinese("所属基地河段编码") private String hbrvcd; - /** - * 所属基地河段名称 - */ + /** 所属基地河段名称 */ @TableField("HBRVCD_NAME") + @FieldChinese("所属基地河段名称") private String hbrvcdName; - /** - * 所属流域代码,关联SD_RVCD_DIC.RVCD - */ + /** 所属流域代码 */ + @FieldChinese("所属流域代码") private String rvcd; - /** - * 所属流域名称 - */ + /** 所属流域名称 */ @TableField("RVCD_NAME") + @FieldChinese("所属流域名称") private String rvcdName; - /** - * 所属行政区编码,关联SD_ADDVCD_DIC.ADDVCD - */ + /** 所属行政区编码 */ + @FieldChinese("所属行政区编码") private String addvcd; - /** - * 所属行政区名称 - */ + /** 所属行政区名称 */ @TableField("ADDVCD_NAME") + @FieldChinese("所属行政区名称") private String addvcdName; - /** - * 所属国家,关联SD_COUNTRY_B.COUNTRY_ID - */ + /** 所属国家 */ + @FieldChinese("所属国家") private String country; - /** - * 所属国家名称 - */ + /** 所属国家名称 */ @TableField("COUNTRY_NAME") + @FieldChinese("所属国家名称") private String countryName; - /** - * 所属河段编码 - */ + /** 所属河段编码 */ + @FieldChinese("所属河段编码") private String reachcd; - /** - * 所属河段名称 - */ + /** 所属河段名称 */ + @FieldChinese("所属河段名称") private String reachcdName; - /** - * 所属公司编码,关联SD_HYDROCOCD_DIC.HYCD - */ + /** 所属公司编码 */ + @FieldChinese("所属公司编码") private String hycd; - /** - * 所属公司名称 - */ + /** 所属公司名称 */ + @FieldChinese("所属公司名称") private String hynm; - /** - * 所属集团编码,关联SD_HYDROCOCD_DIC.HYCD - */ + /** 所属集团编码 */ @TableField("TOP_HYCD") + @FieldChinese("所属集团编码") private String topHycd; - /** - * 所属集团名称 - */ + /** 所属集团名称 */ @TableField("TOP_HYNM") + @FieldChinese("所属集团名称") private String topHynm; - /** - * 规划设计日期 - */ + /** 规划设计日期 */ @TableField("STDSDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - /** - * 计划开工日期 - */ + /** 计划开工日期 */ @TableField("PSTSTDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - /** - * 计划完工日期 - */ + /** 计划完工日期 */ @TableField("PESSTDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - /** - * 开工日期 - */ + /** 开工日期 */ @TableField("SWDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - /** - * 建成日期 - */ + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("JCDT") + @FieldChinese("建成日期") private Date jcdt; - /** - * 退役/拆除日期 - */ + /** 退役/拆除日期 */ @TableField("WDDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - /** - * 截流日期 - */ + /** 截流日期 */ @TableField("JLDT") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("截流日期") private Date jldt; - /** - * 电站简介 - */ + /** 电站简介 */ + @FieldChinese("电站简介") private String introduce; - /** - * 电站LOGO - */ + /** 电站LOGO */ + @FieldChinese("电站LOGO") private String logo; - /** - * 介绍弹窗图片 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 填报方式,比如:网页填报,国网数据,自动对接,网页/自动,自动/国网,国网/自动,数据录入,数据未接入,不定期邮寄光盘 - */ + /** 填报方式 */ @TableField("TB_WAY") + @FieldChinese("填报方式") private String tbWay; - /** - * 填报频率(条/日) - */ + /** 填报频率(条/日) */ @TableField("TB_FREQUENCY") + @FieldChinese("填报频率") private String tbFrequency; - /** - * 建设状态 字典编码:sd_enginfo_b_h.bldstt - * 4=规划 5=预可研 3=可研 6=已核准 7=招标设计 8=施工详图 2=在建 - * 1=已建成未验收 10=已建成已验收 11=已开展后评价 9=其他 91=拆除 - * 31=项目建议书 32=可研 33=已审批 34=初步设计 35=技施设计 36=在建 - * 37=已建成未验收 38=已建成已验收 39=已开展后评价 40=其他 - * 61=规划 62=项目建议书 63=预可研 64=可研 65=已核准 66=初步设计 - * 67=招标设计 68=技施设计 69=施工详图 70=在建 71=已建成未验收 - * 72=已建成已验收 73=已开展后评价 74=其他 - */ + /** 建设状态 */ + @FieldChinese("建设状态") private String bldstt; - /** - * 建设状态分类:0=未建/规划(3,4,5,6,为空) 1=在建(2,7,8) 2=已建(1,10,11) - */ + /** 建设状态分类 */ @TableField("BLDSTT_CODE") + @FieldChinese("建设状态分类") private Integer bldsttCode; - /** - * 工程类别 字典编码:sd_enginfo_b_h.engtp 1=水电站 2=水利工程 3=航电枢纽 - */ + /** 工程类别 */ + @FieldChinese("工程类别") private Integer engtp; - /** - * 工程规模 1=大型1 2=大型2 3=中型 4=小型 - */ + /** 工程规模 */ + @FieldChinese("工程规模") private Integer prsc; - /** - * 工程规模(水库库容)1=大型1 2=大型2 3=中型 4=小型1 5=小型2 - */ + /** 工程规模(水库库容) */ + @FieldChinese("工程规模(水库库容)") private Integer scrsc; - /** - * 工程等别 字典编码:sd_enginfo_b_h.prgr 1=Ⅰ 2=Ⅱ 3=Ⅲ 4=Ⅳ 5=Ⅴ - */ + /** 工程等别 */ + @FieldChinese("工程等别") private String prgr; - /** - * 电站-主要功能 1=发电 2=防洪 3=灌溉 4=供水 5=航运 6=旅游 7=环境 8=养殖 9=其他 - */ + /** 电站-主要功能 */ + @FieldChinese("电站-主要功能") private String fn; - /** - * 地震基本烈度 字典编码:sd_enginfo_b_h.bsssin 5=<Ⅵ 6=Ⅵ 7=Ⅶ 8=Ⅷ 9=≥Ⅸ - */ + /** 地震基本烈度 */ + @FieldChinese("地震基本烈度") private String bsssin; - /** - * 设防地震烈度 字典编码:sd_enginfo_b_h.frssin 0=未设防 6=Ⅵ 7=Ⅶ 8=Ⅷ 9=≥Ⅸ - */ + /** 设防地震烈度 */ + @FieldChinese("设防地震烈度") private Integer frssin; - /** - * 是否调节水库 0=否 1=是 - */ + /** 是否调节水库 */ + @FieldChinese("是否调节水库") private Integer adjustEng; - /** - * 有无拦河坝 字典编码:comm.yn 0=无 1=有 - */ + /** 有无拦河坝 */ @TableField("ISHVBRRG") + @FieldChinese("有无拦河坝") private String ishvrgrg; - /** - * 水库调节性能 字典编码:sd_enginfo_b_h.rgcp 1=多年调节 2=年调节 3=不完全年调节 4=径流式(无调节) 5=季调节 6=月调节 7=周调节 8=日调节 9=其他 - */ + /** 水库调节性能 */ + @FieldChinese("水库调节性能") private String rgcp; - /** - * 坝体材质 字典编码:sd_enginfo_b_h.dmat 0=混凝土坝 1=土坝 - */ + /** 坝体材质 */ + @FieldChinese("坝体材质") private Integer dmat; - /** - * 坝体类型 字典编码:sd_enginfo_b_h.dmtp 0=混合型 1=重力坝 2=拱坝 3=土石坝 4=支墩坝 5=混凝土闸坝 6=混凝土面板堆石坝 7=预应力坝 8=复合土工膜面板堆石坝 9=碾压混凝土重力坝 10=混凝土重力坝 - */ + /** 坝体类型 */ + @FieldChinese("坝体类型") private String dmtp; - /** - * 开发方式 字典编码:sd_enginfo_b_h.dvtp 1=堤坝式 2=引水式 3=混合式 - */ + /** 开发方式 */ + @FieldChinese("开发方式") private String dvtp; - /** - * 建设类型 字典编码:sd_enginfo_b_h.cntp 1=新建 2=改建 3=扩建 4=加固 - */ + /** 建设类型 */ + @FieldChinese("建设类型") private String cntp; - /** - * 管理单位 - */ + /** 管理单位 */ + @FieldChinese("管理单位") private String mnun; - /** - * 主管单位 - */ + /** 主管单位 */ + @FieldChinese("主管单位") private String cmun; - /** - * 归属部门 字典编码:sd_enginfo_b_h.blsys 1=水利 2=能源 3=交通 4=农业 5=建设 9=其他 - */ + /** 归属部门 */ + @FieldChinese("归属部门") private String blsys; - /** - * 绕经度方向旋转矩阵值 - */ + /** 绕经度方向旋转矩阵值 */ + @FieldChinese("绕经度方向旋转矩阵值") private Double roll; - /** - * 绕纬度方向旋转矩阵值 - */ + /** 绕纬度方向旋转矩阵值 */ + @FieldChinese("绕纬度方向旋转矩阵值") private Double pitch; - /** - * 绕高程方向旋转矩阵值 - */ + /** 绕高程方向旋转矩阵值 */ + @FieldChinese("绕高程方向旋转矩阵值") private Double heading; - /** - * 模型缩放比例 - */ + /** 模型缩放比例 */ + @FieldChinese("模型缩放比例") private Double scale; - /** - * 是否受下游顶托 字典编码:comm.yn 0=否 1=是 - */ + /** 是否受下游顶托 */ + @FieldChinese("是否受下游顶托") private String impdstrz; - /** - * 工程概况 - */ + /** 工程概况 */ + @FieldChinese("工程概况") private String prov; - /** - * 河口距离。单位:km - */ + /** 河口距离 */ + @FieldChinese("河口距离") private Double estrydis; - /** - * 三同时评价允许误差天数(0-7300) - */ + /** 三同时评价允许误差天数(0-7300) */ + @FieldChinese("三同时评价允许误差天数") private Integer thrsmdays; - /** - * 直接下游电站 - */ + /** 直接下游电站 */ + @FieldChinese("直接下游电站") private String zjxydz; - /** - * 编制单位 - */ + /** 编制单位 */ + @FieldChinese("编制单位") private String edtun; - /** - * 编制时间 - */ + /** 编制时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("编制时间") private Date edttm; - /** - * 勘测设计情况 - */ + /** 勘测设计情况 */ + @FieldChinese("勘测设计情况") private String dsnstt; - /** - * 引水道长。单位:km - */ + /** 引水道长 */ + @FieldChinese("引水道长") private Double ysdlen; - /** - * 坝基岩性 - */ + /** 坝基岩性 */ + @FieldChinese("坝基岩性") private String dmrktp; - /** - * 混凝土浇筑量 - */ + /** 混凝土浇筑量 */ + @FieldChinese("混凝土浇筑量") private String hntjzl; - /** - * 容量构成 机组机型,机组台数(台×水轮机型号) - */ + /** 容量构成 */ + @FieldChinese("容量构成") private String gntp; - /** - * 控制流域面积。单位:km2 - */ + /** 控制流域面积 */ + @FieldChinese("控制流域面积") private Double cntrar; - /** - * 控制面积占全流域比例 - */ + /** 控制面积占全流域比例 */ + @FieldChinese("控制面积占全流域比例") private Double cntrsc; - /** - * 多年平均降水量。单位:mm - */ + /** 多年平均降水量 */ + @FieldChinese("多年平均降水量") private Double avyrp; - /** - * 多年平均流量。单位:m3/s - */ + /** 多年平均流量 */ + @FieldChinese("多年平均流量") private Double avq; - /** - * 电站未建枯水期平均流量。单位:m3/s - */ + /** 电站未建枯水期平均流量 */ + @FieldChinese("电站未建枯水期平均流量") private Double dsavq; - /** - * 设计洪峰流量。单位:m3/s - */ + /** 设计洪峰流量 */ + @FieldChinese("设计洪峰流量") private Double dsmxq; - /** - * 校核洪峰流量。单位:m3/s - */ + /** 校核洪峰流量 */ + @FieldChinese("校核洪峰流量") private Double chmxq; - /** - * 河道长度。单位:km - */ + /** 河道长度 */ + @FieldChinese("河道长度") private Double rvlen; - /** - * 河道比降。单位:‰ - */ + /** 河道比降 */ + @FieldChinese("河道比降") private Double rvgr; - /** - * 多年平均径流量。 - */ + /** 多年平均径流量 */ + @FieldChinese("多年平均径流量") private Double avw; - /** - * 多年平均年径流量。 - */ + /** 多年平均年径流量 */ + @FieldChinese("多年平均年径流量") private Double avyrq; - /** - * 多年平均输沙量。单位:万t - */ + /** 多年平均输沙量 */ + @FieldChinese("多年平均输沙量") private Double avsd; - /** - * 多年平均含沙量。单位:kg/m3 - */ + /** 多年平均含沙量 */ + @FieldChinese("多年平均含沙量") private Double avs; - /** - * 多年平均最低气温。单位:℃ - */ + /** 多年平均最低气温 */ + @FieldChinese("多年平均最低气温") private Double myavmnat; - /** - * 设计一日洪量。 - */ + /** 设计一日洪量 */ + @FieldChinese("设计一日洪量") private Double dsw1; - /** - * 设计三日洪量。 - */ + /** 设计三日洪量 */ + @FieldChinese("设计三日洪量") private Double dsw3; - /** - * 校核洪水历时。单位:d - */ + /** 校核洪水历时 */ + @FieldChinese("校核洪水历时") private Integer chfldr; - /** - * 校核洪水总量。 - */ + /** 校核洪水总量 */ + @FieldChinese("校核洪水总量") private Double chflw; - /** - * 库容系数 - */ + /** 库容系数 */ + @FieldChinese("库容系数") private Double cpsc; - /** - * 正常蓄水位时水库面积。单位:km2 - */ + /** 正常蓄水位时水库面积 */ @TableField("NRZAR") + @FieldChinese("正常蓄水位时水库面积") private Double nrzar; - /** - * 水库回水长度。单位:km - */ + /** 水库回水长度 */ + @FieldChinese("水库回水长度") private Double bcklen; - /** - * 天然河流平均水温。单位:℃ - */ + /** 天然河流平均水温 */ + @FieldChinese("天然河流平均水温") private Double nravwt; - /** - * 天然河流最高温月份多年平均水温。单位:℃ - */ + /** 天然河流最高温月份多年平均水温 */ + @FieldChinese("天然河流最高温月份多年平均水温") private Double nrmxavwt; - /** - * 天然河流最低温月份多年平均水温。单位:℃ - */ + /** 天然河流最低温月份多年平均水温 */ + @FieldChinese("天然河流最低温月份多年平均水温") private Double nrmnavwt; - /** - * 建成后坝下平均水温。单位:℃ - */ + /** 建成后坝下平均水温 */ + @FieldChinese("建成后坝下平均水温") private Double dnavwt; - /** - * 建成后坝下最高温月份多年平均水温。单位:℃ - */ + /** 建成后坝下最高温月份多年平均水温 */ + @FieldChinese("建成后坝下最高温月份多年平均水温") private Double dnmxavwt; - /** - * 建成后坝下最低温月份多年平均水温。单位:℃ - */ + /** 建成后坝下最低温月份多年平均水温 */ + @FieldChinese("建成后坝下最低温月份多年平均水温") private Double dnmnavwt; - /** - * 坝址以上流域面积。单位:km2 - */ + /** 坝址以上流域面积 */ + @FieldChinese("坝址以上流域面积") private Double nrupar; - /** - * 坝址天然河流平均水位。单位:m - */ + /** 坝址天然河流平均水位 */ + @FieldChinese("坝址天然河流平均水位") private Double nravz; - /** - * 坝址天然河流平均水深。单位:m - */ + /** 坝址天然河流平均水深 */ + @FieldChinese("坝址天然河流平均水深") private Double nravh; - /** - * 设计入库洪水流量。单位:m3/s - */ + /** 设计入库洪水流量 */ + @FieldChinese("设计入库洪水流量") private String dsnfqfrq; - /** - * 校核入库洪水流量。单位:m3/s - */ + /** 校核入库洪水流量 */ + @FieldChinese("校核入库洪水流量") private String ckfqfqr; - /** - * 实测最大洪量(三天)。单位:亿立方米 - */ + /** 实测最大洪量(三天) */ + @FieldChinese("实测最大洪量(三天)") private Double obmxw3; - /** - * 水库淹没城镇。单位:个 - */ + /** 水库淹没城镇 */ @TableField("FDCZ") + @FieldChinese("水库淹没城镇") private Integer fdcz; - /** - * 淹没其它设施。单位:套 - */ + /** 淹没其它设施 */ + @FieldChinese("淹没其它设施") private Integer fdqt; - /** - * 距河源距离。单位:km - */ + /** 距河源距离 */ + @FieldChinese("距河源距离") private Double dstcrvr; - /** - * 校核洪量(三天)。单位:亿立方米 - */ + /** 校核洪量(三天) */ + @FieldChinese("校核洪量(三天)") private Double ckw3; - /** - * 防洪限制水位。单位:m - */ + /** 防洪限制水位 */ + @FieldChinese("防洪限制水位") private Double fsltdz; - /** - * 资源类别 - */ + /** 资源类别 */ + @FieldChinese("资源类别") private String rstp; - /** - * 调节库容单独。单位:MW - */ + /** 调节库容单独 */ + @FieldChinese("调节库容单独") private Double adjcps; - /** - * 调节库容联合。单位:MW - */ + /** 调节库容联合 */ + @FieldChinese("调节库容联合") private Double adjcpm; - /** - * 已正建规模装机容量 - */ + /** 已正建规模装机容量 */ + @FieldChinese("已正建规模装机容量") private Double yrgeb; - /** - * 已正建规模年发电量 - */ + /** 已正建规模年发电量 */ + @FieldChinese("已正建规模年发电量") private Double ttpwrb; - /** - * 坝顶高程。单位:m - */ + /** 坝顶高程 */ + @FieldChinese("坝顶高程") private Double dmcrel; - /** - * 水量利用系数。单位:% - */ + /** 水量利用系数 */ + @FieldChinese("水量利用系数") private Double wsc; - /** - * 最大坝高。单位:m - */ + /** 最大坝高 */ + @FieldChinese("最大坝高") private Double mxdmhg; - /** - * 最大坝高(左)。单位:m - */ + /** 最大坝高(左) */ + @FieldChinese("最大坝高(左)") private Double mxdmhgl; - /** - * 最大坝高(右)。单位:m - */ + /** 最大坝高(右) */ + @FieldChinese("最大坝高(右)") private Double mxdmhgr; - /** - * 防浪墙顶高程。单位:m - */ + /** 防浪墙顶高程 */ + @FieldChinese("防浪墙顶高程") private Double wvtpel; - /** - * 坝顶长度。单位:m - */ + /** 坝顶长度 */ + @FieldChinese("坝顶长度") private Double dmlen; - /** - * 泄水建筑物型式 - */ + /** 泄水建筑物型式 */ + @FieldChinese("泄水建筑物型式") private String xswtp; - /** - * 消能方式 字典编码:sd_enginfo_b_h.xntp - */ + /** 消能方式 */ + @FieldChinese("消能方式") private String xntp; - /** - * 进水口型式 字典编码:sd_enginfo_b_h.jsktp - */ + /** 进水口型式 */ + @FieldChinese("进水口型式") private Integer jsktp; - /** - * 进水口底板高程。单位:m - */ + /** 进水口底板高程 */ + @FieldChinese("进水口底板高程") private Double jskgc; - /** - * 水电站厂房的类型 字典编码:sd_enginfo_b_h.cftp - */ + /** 水电站厂房的类型 */ + @FieldChinese("水电站厂房的类型") private String cftp; - /** - * 发电尾水出口底板高程。单位:m - */ + /** 发电尾水出口底板高程 */ + @FieldChinese("发电尾水出口底板高程") private Double wschgc; - /** - * 通航建筑物型式 字典编码:sd_enginfo_b_h.thtp - */ + /** 通航建筑物型式 */ + @FieldChinese("通航建筑物型式") private String thtp; - /** - * 通航建筑物规模。单位:t 字典编码:sd_enginfo_b_h.thgm - */ + /** 通航建筑物规模 */ + @FieldChinese("通航建筑物规模") private Integer thgm; - /** - * 通航能力。单位:万t - */ + /** 设计年通航能力 */ + @FieldChinese("设计年通航能力") private Double thnl; - /** - * 船闸门槛水深。单位:m - */ + /** 利用落差(水头) */ + @FieldChinese("利用落差(水头)") private Double gap; - /** - * 船闸最大门槛水深。单位:m - */ + /** 最大水头 */ + @FieldChinese("最大水头") private Double mxgap; - /** - * 船闸最小门槛水深。单位:m - */ + /** 最小水头 */ + @FieldChinese("最小水头") private Double mngap; - /** - * 船闸平均门槛水深。单位:m - */ + /** 设计水头联合 */ + @FieldChinese("设计水头联合") private Double gapm; - /** - * 升船机型式 字典编码:sd_enginfo_b_h.hlstp - */ + /** 水头损失类型 */ + @FieldChinese("水头损失类型") private String hlstp; - /** - * 升船机建筑长度。单位:m - */ + /** 固定水头损失 */ + @FieldChinese("固定水头损失") private Double hlsconst; - /** - * 升船机建筑系数 - */ + /** 水头损失系数 */ + @FieldChinese("水头损失系数") private Double hlscoef; - /** - * 最大升船高度。单位:m - */ + /** 最大水头损失 */ + @FieldChinese("最大水头损失") private Double mxhls; - /** - * 船闸闸室长度。单位:m - */ + /** 设计水头单独 */ + @FieldChinese("设计水头单独") private Double gaps; - /** - * 引水系统长度。单位:m - */ + /** 设计坝前移民高程 */ + @FieldChinese("设计坝前移民高程") private Double dsimel; - /** - * 压力管道长度。单位:m - */ + /** 实际坝前移民高程 */ + @FieldChinese("实际坝前移民高程") private Double acimel; - /** - * 移民人口。单位:人 - */ + /** 搬迁安置人口 */ + @FieldChinese("搬迁安置人口") private Double ymbqrk; - /** - * 淹没上地。单位:亩 - */ + /** 生产安置人口 */ + @FieldChinese("生产安置人口") private Double ymscrk; - /** - * 淹没线以下人口。单位:人 - */ + /** 搬迁县城和集镇数量 */ + @FieldChinese("搬迁县城和集镇数量") private Integer ymbqxz; - /** - * 洪灾淹没面积。单位:km2 - */ + /** 淹没面积 */ + @FieldChinese("淹没面积") private Double fdar; - /** - * 洪灾损毁房屋。单位:间 - */ + /** 淹没影响涉及县数量 */ + @FieldChinese("淹没影响涉及县数量") private Integer fdxs; - /** - * 洪灾倒塌房屋。单位:间 - */ + /** 淹没影响涉及集镇数量 */ + @FieldChinese("淹没影响涉及集镇数量") private Integer fdzs; - /** - * 洪灾淹没耕地。单位:亩 - */ + /** 淹没耕地 */ + @FieldChinese("淹没耕地") private Double fdgd; - /** - * 洪灾淹没林地。单位:亩 - */ + /** 淹没林地 */ + @FieldChinese("淹没林地") private Double fdld; - /** - * 洪灾受灾人口。单位:人 - */ + /** 淹没影响人口 */ + @FieldChinese("淹没影响人口") private Double fdrk; - /** - * 洪灾影响范围。单位:km2 - */ + /** 淹没房屋 */ + @FieldChinese("淹没房屋") private Double fdfw; - /** - * 防洪保护区面积。单位:km2 - */ + /** 淹没等级公路 */ + @FieldChinese("淹没等级公路") private Double fdgl; - /** - * 珍稀保护动物种类数。单位:种 - */ + /** 是否经济可开发 */ + @FieldChinese("是否经济可开发") private Integer caned; - /** - * 淹没区征迁人口。单位:人 - */ + /** 农村移民 */ + @FieldChinese("农村移民") private Double ymbqrknc; - /** - * 防淤面积。单位:km2 - */ + /** 淹没园地面积 */ + @FieldChinese("淹没园地面积") private Double fdyd; - /** - * 蓄水验收日期 - */ + /** 下闸蓄水时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("下闸蓄水时间") private Date sswdt; - /** - * 一期下闸蓄水日期 - */ + /** 首台机组投运时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("首台机组投运时间") private Date piodt; - /** - * 二期下闸蓄水日期 - */ + /** 所有机组投运时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("所有机组投运时间") private Date aiodt; - /** - * 许可过鱼种类。单位:种 - */ + /** 总工期 */ + @FieldChinese("总工期") private Integer aptl; - /** - * 最大过木尺寸。单位:m - */ + /** 施工高峰工人数 */ + @FieldChinese("施工高峰工人数") private Double mxsn; - /** - * 最大漂浮物尺寸。单位:m - */ + /** 施工占地 */ + @FieldChinese("施工占地") private Integer clo; - /** - * 工程特征 - */ + /** 项目法人 */ + @FieldChinese("项目法人") private String pren; - /** - * 施工单位 - */ + /** 建设运营单位 */ + @FieldChinese("建设运营单位") private String oprtnun; - /** - * 设计单位 - */ + /** 设计单位 */ + @FieldChinese("设计单位") private String dsun; - /** - * 监理单位 - */ + /** 监理单位 */ + @FieldChinese("监理单位") private String spun; - /** - * 建设单位 - */ + /** 施工单位 */ + @FieldChinese("施工单位") private String cnun; - /** - * 建土石方。单位:万m3 - */ + /** 静态总投资 */ + @FieldChinese("静态总投资") private Double jtz; - /** - * 总投资。单位:亿元 - */ + /** 总投资 */ + @FieldChinese("总投资") private Double ztz; - /** - * 环保投资。单位:亿元 - */ + /** 环保投资 */ + @FieldChinese("环保投资") private Double htz; - /** - * 电站投资。单位:亿元 - */ + /** 单位千瓦投资 */ + @FieldChinese("单位千瓦投资") private Double dtz; - /** - * 动态投资。单位:亿元 - */ + /** 动态总投资 */ + @FieldChinese("动态总投资") private Double dyntz; - /** - * 水土保持竣工验收时间 - */ + /** 三通一平工程环评审批日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("三通一平工程环评审批日期") private Date styphpsp; - /** - * 现行环境保护竣工验收时间 - */ + /** 蓄水阶段环保验收日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("蓄水阶段环保验收日期") private Date xsjdhbys; - /** - * 申报水土保持方案日期 - */ + /** 水保方案审查日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("水保方案审查日期") private Date sbfascrq; - /** - * 现行水土保持方案验收时间 - */ + /** 蓄水阶段水保验收日期 */ @TableField("XSJDSBYS") + @FieldChinese("蓄水阶段水保验收日期") private Date xsjdsbys; - /** - * 环境影响后评价时间 - */ + /** 环评审批日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("环评审批日期") private Date hpsprq; - /** - * 竣工环境保护验收时间 - */ + /** 竣工环保验收日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("竣工环保验收日期") private Date jghbysrq; - /** - * 截流阶段环境保护验收时间 - */ + /** 截流阶段水保验收日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("截流阶段水保验收日期") private Date jljdsbys; - /** - * 竣工水土保持方案验收时间 - */ + /** 竣工阶段水保验收日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("竣工阶段水保验收日期") private Date jgjdsbys; - /** - * 主辅设备监造单位 - */ + /** 主体工程设计单位 */ + @FieldChinese("主体工程设计单位") private String ztgcsjdw; - /** - * 主辅设备监造单位 - */ + /** 主体工程施工单位 */ + @FieldChinese("主体工程施工单位") private String ztgcsgdw; - /** - * 环评单位 - */ + /** 环评单位 */ + @FieldChinese("环评单位") private String hpdw; - /** - * 鱼类影响 - */ + /** 修改电站流域编码 */ + @FieldChinese("修改电站流域编码") private String rvcdtow; - /** - * 环境监理单位 - */ + /** 环境监理单位 */ + @FieldChinese("环境监理单位") private String hjjldw; - /** - * 上游淹没指标。单位:km2 - */ + /** 水库淹没处理补偿投资 */ + @FieldChinese("水库淹没处理补偿投资") private Double skymbctz; - /** - * 落差 - */ + /** 航道级别 */ + @FieldChinese("航道级别") private String chngrd; - /** - * 渠道长度。单位:km - */ + /** 渠化航道里程 */ + @FieldChinese("渠化航道里程") private Double chnlnth; - /** - * 最大水头。单位:m - */ + /** 最大过船吨位 */ + @FieldChinese("最大过船吨位") private Double mxshptn; - /** - * 预可用率 - */ + /** 年设计通过能力 */ + @FieldChinese("年设计通过能力") private String yrcpcty; - /** - * 水资源开发利用率 - */ + /** 总供水量 */ + @FieldChinese("总供水量") private Double wspply; - /** - * 城镇入河排污口数量。单位:个 - */ + /** 灌溉水量 */ + @FieldChinese("灌溉水量") private Integer wirrg; - /** - * 农业入河排污口数量。单位:个 - */ + /** 灌溉面积 */ + @FieldChinese("灌溉面积") private Integer arirrg; - /** - * 最高水位变幅。单位:m - */ + /** 日最大水位变幅 */ + @FieldChinese("日最大水位变幅") private Double zVariationDmax; - /** - * 最高水位变率。单位:m/h - */ + /** 小时最大水位变幅 */ + @FieldChinese("小时最大水位变幅") private Double zVariationHmax; - /** - * 设备可用率 - */ + /** 生态流量泄放复核误差百分比 */ @TableField("EQRRATIO") + @FieldChinese("生态流量泄放复核误差百分比") private Double eqrRatio; - /** - * 一月平均流量。单位:m3/s - */ + /** 1月多年平均流量(设计) */ + @FieldChinese("1月多年平均流量(设计)") private Double avq01; - /** - * 二月平均流量。单位:m3/s - */ + /** 2月多年平均流量(设计) */ + @FieldChinese("2月多年平均流量(设计)") private Double avq02; - /** - * 三月平均流量。单位:m3/s - */ + /** 3月多年平均流量(设计) */ + @FieldChinese("3月多年平均流量(设计)") private Double avq03; - /** - * 四月平均流量。单位:m3/s - */ + /** 4月多年平均流量(设计) */ + @FieldChinese("4月多年平均流量(设计)") private Double avq04; - /** - * 五月平均流量。单位:m3/s - */ + /** 5月多年平均流量(设计) */ + @FieldChinese("5月多年平均流量(设计)") private Double avq05; - /** - * 六月平均流量。单位:m3/s - */ + /** 6月多年平均流量(设计) */ + @FieldChinese("6月多年平均流量(设计)") private Double avq06; - /** - * 七月平均流量。单位:m3/s - */ + /** 7月多年平均流量(设计) */ + @FieldChinese("7月多年平均流量(设计)") private Double avq07; - /** - * 八月平均流量。单位:m3/s - */ + /** 8月多年平均流量(设计) */ + @FieldChinese("8月多年平均流量(设计)") private Double avq08; - /** - * 九月平均流量。单位:m3/s - */ + /** 9月多年平均流量(设计) */ + @FieldChinese("9月多年平均流量(设计)") private Double avq09; - /** - * 十月平均流量。单位:m3/s - */ + /** 10月多年平均流量(设计) */ + @FieldChinese("10月多年平均流量(设计)") private Double avq10; - /** - * 十一月平均流量。单位:m3/s - */ + /** 11月多年平均流量(设计) */ + @FieldChinese("11月多年平均流量(设计)") private Double avq11; - /** - * 十二月平均流量。单位:m3/s - */ + /** 12月多年平均流量(设计) */ + @FieldChinese("12月多年平均流量(设计)") private Double avq12; - /** - * 设计代表年份入库流量。单位:m3/s - */ + /** 设计洪水重现期 */ + @FieldChinese("设计洪水重现期") private Integer dsrcin; - /** - * 校核代表年份入库流量。单位:m3/s - */ + /** 校核洪水重现期 */ + @FieldChinese("校核洪水重现期") private Integer chrcin; - /** - * 设计洪水位。单位:m - */ + /** 设计水头 */ + @FieldChinese("设计水头") private Double dshl; - /** - * 设计下泄流量。单位:m3/s - */ + /** 单机设计流量 */ + @FieldChinese("单机设计流量") private Double sgq; - /** - * 保护区名称 - */ + /** 调洪库容 */ + @FieldChinese("调洪库容") private String rcffr; - /** - * 下游汇入河流 - */ + /** 年消落水位/多年调节水库 */ + @FieldChinese("年消落水位/多年调节水库") private String ydownz; - /** - * 生态需水最大需水月份 - */ + /** 发电最大引用流量 */ + @FieldChinese("发电最大引用流量") private String gemaxrq; - /** - * 生态需水滞后时间。单位:d - */ + /** 滞时 */ + @FieldChinese("滞时") private String lagTime; - /** - * 生态需水泄流代表断面 - */ + /** 逐月多年平均流量描述 */ + @FieldChinese("逐月多年平均流量描述") private String avgdvlsr; - /** - * 生态需水描述 - */ + /** 来源 */ + @FieldChinese("来源") private String avgdes; - /** - * 生态需水流量数据来源 - */ + /** 多年平均流量来源 */ + @FieldChinese("多年平均流量来源") private String avqSrc; - /** - * 万元工业产值耗水量。单位:m3/万元 - */ + /** 平均耗水率(m3/kW·h) */ + @FieldChinese("平均耗水率") private Double wrAvg; - /** - * 是否主体工程 0=否 1=是 - */ + /** 是否主要流域电站:0=否&1=是 */ + @FieldChinese("是否主要流域电站") private Integer chiefbasineng; - /** - * 蓄水阶段环保验收 - */ + /** 蓄水开始时间 */ + @FieldChinese("蓄水开始时间") private String swsdt; - /** - * 上游影响水电站列表 - */ + /** 上游电站序列 */ + @FieldChinese("上游电站序列") private String uphydlist; - /** - * 河流弯道排序 - */ + /** 电站梯级计算排序 */ + @FieldChinese("电站梯级计算排序") private Double cashydsort; - /** - * 淹没占地。单位:亩 - */ + /** 最大蓄能 */ + @FieldChinese("最大蓄能") private Double esmx; - /** - * 拆迁占地。单位:亩 - */ + /** 最大叠加蓄能 */ + @FieldChinese("最大叠加蓄能") private Double esccdmx; - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 植被覆盖类型 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 植被覆盖调查时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - /** - * 创建人 - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人 - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人 - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; - /** - * 环境监测数据接入情况:2=已全部接入 1=部分接入 0=未接入 - */ + /** 环境监测数据接入情况:2=已全部接入 1=部分接入 0=未接入 */ @TableField("DTIN_ENV") + @FieldChinese("环境监测数据接入情况") private Integer dtinEnv; - /** - * 最新运行状态:1=运行中 2=未运行 - */ + /** 最新运行状态:1=运行中 2=未运行 */ + @FieldChinese("最新运行状态") private Integer runState; - /** - * 告警状态 - */ + /** 告警状态 */ + @FieldChinese("告警状态") private String warnState; - /** - * 开展环保自动检测工作状态:0=暂无数据 1=正常 - */ + /** 开展环保自动检测工作状态:0=暂无数据 1=正常 */ + @FieldChinese("开展环保自动检测工作状态") private Integer coenvwState; - /** - * 在线地址 - */ + /** 在线地址 */ + @FieldChinese("在线地址") private String url; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEqBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEqBH.java index 1bfffc83..d6086073 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEqBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdEqBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,296 +22,243 @@ public class SdEqBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 测站编码 - */ + /** 生态流量泄放设施编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("生态流量泄放设施编码") private String stcd; - /** - * 测站名称 - */ + /** 生态流量泄放设施名称 */ + @FieldChinese("生态流量泄放设施名称") private String stnm; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 测站类型 - */ + /** 生态流量泄放设施类型 */ + @FieldChinese("生态流量泄放设施类型") private String sttp; @TableField(exist = false) private String sttpName; - /** - * 所属建设阶段 - */ + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; - /** - * 位置经度 - */ + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; - /** - * 位置纬度 - */ + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; - /** - * 高程 - */ + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; - /** - * 站址 - */ + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - /** - * 是否启用 - */ + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 数据是否接入 - */ + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 排序 - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 关联测站编码 - */ + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - /** - * 所属基地编码 - */ + /** 所属基地编码 */ + @FieldChinese("所属基地编码") private String baseId; @TableField(exist = false) private String baseName; - /** - * 所属基地流域编码 - */ + /** 所属基地河段编码 */ + @FieldChinese("所属基地河段编码") private String hbrvcd; - /** - * 规划设计日期 - */ + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - /** - * 计划开工日期 - */ + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - /** - * 计划完工日期 - */ + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - /** - * 开工日期 - */ + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - /** - * 建成日期 - */ + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - /** - * 退役/拆除日期 - */ + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - /** - * 建设状态代码 - */ + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; - /** - * 简介 - */ + /** 简介 */ + @FieldChinese("简介") private String introduce; - /** - * LOGO - */ + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; - /** - * 介绍文件 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 投资 - */ + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; - /** - * 投资金额 - */ + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; - /** - * 泄放孔结构 - */ + /** 生态放流孔(闸、洞、管)-结构形式 */ + @FieldChinese("生态放流孔(闸、洞、管)-结构形式") private String flkjg; - /** - * 泄放孔尺寸 - */ + /** 生态放流孔(闸、洞、管)-孔口尺寸(单位:m) */ + @FieldChinese("生态放流孔(闸、洞、管)-孔口尺寸") private String flksz; - /** - * 单独泄放管渠 - */ + /** 生态放流孔(闸、洞、管)-死水位时保证流量(单位:m³/s) */ + @FieldChinese("生态放流孔(闸、洞、管)-死水位时保证流量") private String ddzgq; - /** - * 泄放孔口 - */ + /** 生态放流孔(闸、洞、管)-最大泄放流量(单位:m³/s) */ + @FieldChinese("生态放流孔(闸、洞、管)-最大泄放流量") private String flkq; - /** - * 进水口底板高程 - */ + /** 生态放流孔(闸、洞、管)或生态机组-进水口地板高程(单位:m) */ + @FieldChinese("进水口底板高程") private BigDecimal jskdbgc; - /** - * 出水口底板高程 - */ + /** 生态放流孔(闸、洞、管)或生态机组-出水口地板高程(单位:m) */ + @FieldChinese("出水口底板高程") private BigDecimal cskdbgc; - /** - * 检修放空管道 - */ + /** 基荷发电工况(单位:MW) */ + @FieldChinese("基荷发电工况") private String jhfdgk; - /** - * 泄放流量 - */ + /** 基荷发电或生态机组-发电流量(单位:m³/s) */ + @FieldChinese("发电流量") private BigDecimal fdll; - /** - * 生态机组装机容量 - */ + /** 生态机组装机容量 */ + @FieldChinese("生态机组装机容量") private BigDecimal stjzzjrl; - /** - * 生态机组引水渠道 - */ + /** 生态机组额定流量 */ + @FieldChinese("生态机组额定流量") private BigDecimal stjzysq; - /** - * 数据频率 - */ + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; - /** - * 评估方法 - */ + /** 考核方式 */ + @FieldChinese("考核方式") private String assessMethod; - /** - * 是否计算器 - */ + /** 是否建设期的考核要求 */ + @FieldChinese("是否建设期的考核要求") private Integer isJsq; - /** - * 是否流量 - */ + /** 是否有下泄生态流量要求 */ + @FieldChinese("是否有下泄生态流量要求") private String isFlow; - /** - * 最小流量 - */ + /** 最小保证下泄生态流量值(单位:m³/s) */ + @FieldChinese("最小保证下泄生态流量值") private BigDecimal minFlow; - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 植被覆盖类型 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 植被覆盖调查时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - /** - * 创建人 - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人 - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人 - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFbrdBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFbrdBH.java index 139ddff5..e96193f4 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFbrdBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFbrdBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,249 +22,205 @@ public class SdFbrdBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 测站编码 - */ + /** 鱼类增殖站编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("鱼类增殖站编码") private String stcd; - /** - * 测站名称 - */ + /** 鱼类增殖站名称 */ + @FieldChinese("鱼类增殖站名称") private String stnm; - /** - * 测站类型 - */ + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 所属建设阶段 - */ + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; - /** - * 位置经度 - */ + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; - /** - * 位置纬度 - */ + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; - /** - * 高程 - */ + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; - /** - * 站址 - */ + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - /** - * 是否启用 - */ + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 数据是否接入 - */ + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 排序 - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 关联测站编码 - */ + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - /** - * 所属基地编码 - */ + /** 所属基地编码 */ + @FieldChinese("所属基地编码") private String baseId; @TableField(exist = false) private String baseName; - /** - * 所属基地流域编码 - */ + /** 所属基地河段编码 */ + @FieldChinese("所属基地河段编码") private String hbrvcd; - /** - * 环评单位 - */ + /** 服务电站对象列表 */ + @FieldChinese("服务电站对象列表") private String rengcd; - /** - * 规划设计日期 - */ + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - /** - * 计划开工日期 - */ + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - /** - * 计划完工日期 - */ + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - /** - * 开工日期 - */ + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - /** - * 建成日期 - */ + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - /** - * 退役/拆除日期 - */ + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - /** - * 建设状态代码 - */ + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; - /** - * 简介 - */ + /** 简介 */ + @FieldChinese("简介") private String introduce; - /** - * LOGO - */ + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; - /** - * 介绍文件 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 投资 - */ + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; - /** - * 投资金额 - */ + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; - /** - * 增殖放流面积 - */ + /** 总占地面积(单位:km²) */ + @FieldChinese("总占地面积") private BigDecimal zzflar; - /** - * 增殖放流工艺 - */ + /** 生产工艺 */ + @FieldChinese("生产工艺") private String zzflgy; - /** - * 增殖放流鱼种描述 - */ + /** 养殖模式 */ + @FieldChinese("养殖模式") private String zzflyzms; - /** - * 增殖放流标记方式 - */ + /** 标记方式 */ + @FieldChinese("标记方式") private String zzflbjfs; - /** - * 增殖放流对象 - */ + /** 放流对象 */ + @FieldChinese("放流对象") private String zzfldx; - /** - * 增殖放流数量 - */ + /** 放流规模(单位:尾/年) */ + @FieldChinese("放流规模") private Integer zzflcnt; - /** - * 增殖放流放流流程 - */ + /** 放流地点 */ + @FieldChinese("放流地点") private String zzflfllc; - /** - * 增殖放流时间 - */ + /** 放流时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("放流时间") private Date zzfltm; - /** - * 增殖放流任务 - */ + /** 承担放流任务 */ + @FieldChinese("承担放流任务") private String zzflrw; - /** - * 设计单位 - */ + /** 设计单位 */ + @FieldChinese("设计单位") private String dsun; - /** - * 基本特性参数 - */ + /** 基本特性参数(文字描述) */ + @FieldChinese("基本特性参数") private String jbtxcs; - /** - * 数据频率 - */ + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 植被覆盖类型 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 植被覆盖调查时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFhbtBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFhbtBH.java index b42b0282..91a22062 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFhbtBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFhbtBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,252 +22,206 @@ public class SdFhbtBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 测站编码 - */ + /** 栖息地编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("栖息地编码") private String stcd; - /** - * 测站名称 - */ + /** 栖息地名称 */ + @FieldChinese("栖息地名称") private String stnm; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 所属建设阶段 - */ + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; - /** - * 位置经度 - */ + /** 经度 */ + @FieldChinese("经度") private BigDecimal lgtd; - /** - * 位置纬度 - */ + /** 纬度 */ + @FieldChinese("纬度") private BigDecimal lttd; - /** - * 高程 - */ + /** 高程 */ + @FieldChinese("高程") private BigDecimal elev; - /** - * 站址 - */ + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - /** - * 是否启用 - */ + /** 是否启用:0=禁用 1=启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 数据是否接入 - */ + /** 数据是否接入:0=未接入 1=已接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 排序 - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 关联测站编码 - */ + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - /** - * 所属基地编码 - */ + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; - /** - * 所属基地流域编码 - */ + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; - /** - * 所属流域代码 - */ + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; - /** - * 所属行政区编码 - */ + /** 所属行政区编码 */ + @FieldChinese("所属行政区编码") private String addvcd; - /** - * 河段描述 - */ + /** 河段描述 */ + @FieldChinese("河段描述") private String reachdes; - /** - * 经度纬度列表 - */ + /** 栖息地范围经纬度列表 */ + @FieldChinese("栖息地范围经纬度列表") private String lglttd; - /** - * 简介 - */ + /** 简介 */ + @FieldChinese("简介") private String introduce; - /** - * LOGO - */ + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; - /** - * 介绍文件 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 投资 - */ + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; - /** - * 投资金额 - */ + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; - /** - * 保护对象 - */ + /** 保护对象 */ + @FieldChinese("保护对象") private String bhdx; - /** - * 保护范围 - */ + /** 保护范围 */ + @FieldChinese("保护范围") private String bhfw; - /** - * 保护措施 - */ + /** 保护长度(单位:km) */ + @FieldChinese("保护长度") private String bhcd; - /** - * 保护面积 - */ + /** 保护面积(单位:km²) */ + @FieldChinese("保护面积") private BigDecimal bhmj; - /** - * 保护河流 - */ + /** 保护河流 */ + @FieldChinese("保护河流") private String bhhl; - /** - * 保护河道 - */ + /** 保护河段 */ + @FieldChinese("保护河段") private String bhhd; - /** - * 保护措施 - */ + /** 保护措施 */ + @FieldChinese("保护措施") private String bhcs; - /** - * 保护方式 - */ + /** 保护方式 */ + @FieldChinese("保护方式") private String bhfs; - /** - * 附件 - */ + /** 实施时间 */ + @FieldChinese("实施时间") private String attm; - /** - * 保护水文参数 - */ + /** 保护外围长度(单位:km) */ + @FieldChinese("保护外围长度") private String bhwwcd; - /** - * 保护河相关系 - */ + /** 保护核心长度(单位:km) */ + @FieldChinese("保护核心长度") private String bhhxcd; - /** - * 数据频率 - */ + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 植被覆盖类型 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 植被覆盖调查时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - /** - * 创建人 - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人 - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人 - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java index 589c8251..f4a18c95 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFishDictoryB.java @@ -1,6 +1,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,278 +20,225 @@ public class SdFishDictoryB implements Serializable { private static final long serialVersionUID = 1L; - /** - * 主键 - */ + /** 主键 */ @TableId(type = IdType.ASSIGN_UUID) + @FieldChinese("主键") private String id; - /** - * 编码 - */ + /** 编码 */ + @FieldChinese("编码") private String code; - /** - * 名称 - */ + /** 名称 */ + @FieldChinese("名称") private String name; - /** - * 英文名称 - */ + /** 英文名称 */ + @FieldChinese("英文名称") private String nameEn; - /** - * 俗名 - */ + /** 俗名 */ + @FieldChinese("俗名") private String alias; - /** - * LOGO - */ + /** LOGO */ + @FieldChinese("LOGO") private String logo; - /** - * 介绍 - */ + /** 介绍 */ + @FieldChinese("介绍") private String introduce; - /** - * 介绍弹窗图片 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 目 - */ + /** 目 */ + @FieldChinese("目") private String orders; - /** - * 科 - */ + /** 科 */ + @FieldChinese("科") private String family; - /** - * 属 - */ + /** 属 */ + @FieldChinese("属") private String genus; - /** - * 种 - */ + /** 种 */ + @FieldChinese("种") private String species; - /** - * 分类:1=淡水 2=海水 - */ + /** 分类:1=淡水 2=海水 */ + @FieldChinese("分类") private Integer type; @TableField(exist = false) private String typeName; - /** - * 成鱼大小:单位:cm - */ + /** 成鱼大小:单位:cm */ + @FieldChinese("成鱼大小") private String fsz; - /** - * 是否珍稀鱼类:0=否 1=是 - */ + /** 是否珍稀鱼类:0=否 1=是 */ + @FieldChinese("是否珍稀鱼类") private Integer rare; @TableField(exist = false) private String rareName; - /** - * 物种来源:1=本土物种 2=外来物种 - */ + /** 物种来源:1=本土物种 2=外来物种 */ + @FieldChinese("物种来源") private Integer specOrigin; @TableField(exist = false) private String specOriginName; - /** - * 保护类型:1=濒危 2=极危 3=近危 4=易危 5=重点保护 6=无危 7=国家二级 8=市二级保护 - */ + /** 保护类型 */ + @FieldChinese("保护类型") private Integer ptype; @TableField(exist = false) private String ptypeName; - /** - * 所属流域 - */ + /** 所属流域 */ + @FieldChinese("所属流域") private String rvcd; - /** - * 洄游习性 - */ + /** 洄游习性 */ + @FieldChinese("洄游习性") private String habitMigrat; - /** - * 摄食习性 - */ + /** 摄食习性 */ + @FieldChinese("摄食习性") private String feedingHabit; - /** - * 产卵特性 - */ + /** 产卵特性 */ + @FieldChinese("产卵特性") private String spawnCharact; - /** - * 主要食物 - */ + /** 主要食物 */ + @FieldChinese("主要食物") private String food; - /** - * 觅食时段 - */ + /** 觅食时段 */ + @FieldChinese("觅食时段") private String timeFeed; - /** - * 产地及产期 - */ + /** 产地及产期 */ + @FieldChinese("产地及产期") private String orignDate; - /** - * 适宜温度:单位:℃ - */ + /** 适宜温度:单位:℃ */ + @FieldChinese("适宜温度") private String pretemp; - /** - * 适宜流速:单位:m/s - */ + /** 适宜流速:单位:m/s */ + @FieldChinese("适宜流速") private String flowRate; - /** - * 适宜水深:单位(m) - */ + /** 适宜水深:单位(m) */ + @FieldChinese("适宜水深") private String depth; - /** - * 适宜底质 - */ + /** 适宜底质 */ + @FieldChinese("适宜底质") private String botmMater; - /** - * 水质要求:1=Ⅰ类 2=Ⅱ类 3=Ⅲ类 4=Ⅳ类 5=Ⅴ类 6=劣质V - */ + /** 水质要求 */ + @FieldChinese("水质要求") private String wqtq; -// @TableField(exist = false) -// private String wqtqName; - - /** - * 主要生活环境 1=流水生境 2=静缓流生境 3=洞穴生境 - */ + /** 主要生活环境 1=流水生境 2=静缓流生境 3=洞穴生境 */ + @FieldChinese("主要生活环境") private Integer habitat; @TableField(exist = false) private String habitatName; - /** - * 种群现状 1=优势种 2=常见种 3=少见种 4=记录种 - */ + /** 种群现状 1=优势种 2=常见种 3=少见种 4=记录种 */ + @FieldChinese("种群现状") private Integer situation; @TableField(exist = false) private String situationName; - /** - * 资源类型 1=保护鱼类 2=特有鱼类 3=重要经济鱼类 4=濒危状况 - */ + /** 资源类型 1=保护鱼类 2=特有鱼类 3=重要经济鱼类 4=濒危状况 */ + @FieldChinese("资源类型") private Integer resourceType; @TableField(exist = false) private String resourceTypeName; - /** - * 形态描述 - */ + /** 形态描述 */ + @FieldChinese("形态描述") private String shapedesc; - /** - * 保护级别 - */ + /** 保护级别 */ + @FieldChinese("保护级别") private String protectlvl; - /** - * 栖息习性 - */ + /** 栖息习性 */ + @FieldChinese("栖息习性") private String habitation; - /** - * 附件 - */ + /** 附件 */ + @FieldChinese("附件") private String fid; - /** - * 描述 - */ + /** 描述 */ + @FieldChinese("描述") private String description; - /** - * 是否启用:0=禁用 1=启用 - */ + /** 是否启用:0=禁用 1=启用 */ + @FieldChinese("是否启用") private Integer enable; - /** - * 系统内置项:0=否 1=是 - */ + /** 系统内置项:0=否 1=是 */ + @FieldChinese("系统内置项") private Integer internal; - /** - * 排序 - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 创建人:关联SYS_USER.ID - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人:关联SYS_USER.ID - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除:0=未删除 1=已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人:关联SYS_USER.ID - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ + @FieldChinese("删除时间") private Date deleteTime; - /** - * 产卵月份:多个月份以逗号分隔 - */ + /** 产卵月份:多个月份以逗号分隔 */ + @FieldChinese("产卵月份") private String spawnMonth; - /** - * 数据来源 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 数据来源时间 - */ + /** 数据来源时间 */ + @FieldChinese("数据来源时间") private Date vlsrTm; -} \ No newline at end of file +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java index 0faae642..0acf1183 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdFpssBH.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; @@ -22,455 +23,368 @@ public class SdFpssBH implements Serializable { private static final long serialVersionUID = 1L; - /** - * 过鱼设施编码 - */ + /** 过鱼设施编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("过鱼设施编码") private String stcd; - /** - * 设施名称 - */ + /** 过鱼设施名称 */ + @FieldChinese("过鱼设施名称") private String stnm; - /** - * 所属水电基地流域编码 - */ + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; - /** - * 数据时间 - */ + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; - /** - * 过鱼设施类型,字典编码:sd_fpss_b_h.sttp - * FP_1=鱼道 FP_2=仿自然通道 FP_3=集运鱼系统 FP_4=升鱼机 FP_5=其它过鱼方式 FP_6=网捕过坝 - */ + /** 过鱼设施类型 */ + @FieldChinese("过鱼设施类型") private String sttp; @TableField(exist = false) private String sttpName; - /** - * 所属基地编码 - */ + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; - /** - * 所属建设阶段 字典编码:common.blprd - * 1001000=规划 1002000=预可研 1003000=环评 1004000=可研 1005000=在建 1006000=招标设计 - * 1007000=施工详图 1009000=建设 1010000=蓄水阶段环保验收 1011000=竣工 1012000=竣工环保验收 1013000=环境影响后评价 - */ + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; - /** - * 经度,单位:(°) - */ + /** 经度,单位:(°) */ + @FieldChinese("经度") private BigDecimal lgtd; - /** - * 纬度,单位:(°) - */ + /** 纬度,单位:(°) */ + @FieldChinese("纬度") private BigDecimal lttd; - /** - * 高程,单位:m - */ + /** 高程,单位:m */ + @FieldChinese("高程") private BigDecimal elev; - /** - * 站址/位置 - */ + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - /** - * 是否启用 字典编码:common.enabled 0=禁用 1=启用 - */ + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; - /** - * 数据是否接入 字典编码:common.yn 0=否 1=是 - */ + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - /** - * 数据接入时间 - */ + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - /** - * 排序,按照业务规则"升序" - */ + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; - /** - * 所属电站编码,关联SD_ENGINFO_B_H.STCD - */ + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - /** - * 规划设计日期 - */ + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - /** - * 计划开工日期 - */ + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - /** - * 计划完工日期 - */ + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - /** - * 开工日期 - */ + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - /** - * 建成日期 - */ + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - /** - * 退役/拆除日期 - */ + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - /** - * 建设状态分类:0=未建/规划(3,4,5,6,为空) 1=在建(2,7,8) 2=已建(1,10,11) - */ + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; - /** - * 简介 - */ + /** 简介 */ + @FieldChinese("简介") private String introduce; - /** - * LOGO - */ + /** LOGO */ + @FieldChinese("LOGO") private String logo; - /** - * 介绍弹窗图片 - */ + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; - /** - * 投资,单位:亿元 - */ + /** 投资,单位:亿元 */ + @FieldChinese("投资") private BigDecimal inv; - /** - * 鱼道型式 - */ + /** 鱼道型式 */ + @FieldChinese("鱼道型式") private String ydxs; - /** - * 鱼道总长度,单位:m - */ + /** 鱼道总长度,单位:m */ + @FieldChinese("鱼道总长度") private BigDecimal ydzcd; - /** - * 鱼道进口运行设计水位,单位:m - */ + /** 鱼道进口运行设计水位,单位:m */ + @FieldChinese("鱼道进口运行设计水位") private BigDecimal ydjkz; - /** - * 鱼道进口数量,单位:个 - */ + /** 鱼道进口数量,单位:个 */ + @FieldChinese("鱼道进口数量") private Integer ydjkcnt; - /** - * 鱼道或仿自然通道-进口高程,单位:m - */ + /** 鱼道或仿自然通道-进口高程,单位:m */ + @FieldChinese("鱼道或仿自然通道-进口高程") private BigDecimal jkhg; - /** - * 鱼道进口诱鱼型式 - */ + /** 鱼道进口诱鱼型式 */ + @FieldChinese("鱼道进口诱鱼型式") private String ydyyxs; - /** - * 鱼道出口运行设计水位,单位:m - */ + /** 鱼道出口运行设计水位,单位:m */ + @FieldChinese("鱼道出口运行设计水位") private BigDecimal ydckz; - /** - * 鱼道出口数量,单位:个 - */ + /** 鱼道出口数量,单位:个 */ + @FieldChinese("鱼道出口数量") private Integer ydckcnt; - /** - * 鱼道或仿自然通道-出口高程,单位:m - */ + /** 鱼道或仿自然通道-出口高程,单位:m */ + @FieldChinese("鱼道或仿自然通道-出口高程") private BigDecimal ckhg; - /** - * 鱼道池室设计流速,单位:m/s - */ + /** 鱼道池室设计流速,单位:m/s */ + @FieldChinese("鱼道池室设计流速") private BigDecimal ydcsv; - /** - * 鱼道每级池室长,单位:m - */ + /** 鱼道每级池室长,单位:m */ + @FieldChinese("鱼道每级池室长") private Integer ydcscd; - /** - * 鱼道每级池室宽,单位:m - */ + /** 鱼道每级池室宽,单位:m */ + @FieldChinese("鱼道每级池室宽") private Integer ydcskd; - /** - * 鱼道池室坡度 - */ + /** 鱼道池室坡度 */ + @FieldChinese("鱼道池室坡度") private String ydcspd; - /** - * 鱼道池室数量,单位:个 - */ + /** 鱼道池室数量,单位:个 */ + @FieldChinese("鱼道池室数量") private Integer ydcscnt; - /** - * 鱼道休息池个数 - */ + /** 鱼道休息池个数 */ + @FieldChinese("鱼道休息池个数") private Integer ydxxccnt; - /** - * 鱼道或仿自然通道-流速,单位:m/s - */ + /** 鱼道或仿自然通道-流速,单位:m/s */ + @FieldChinese("鱼道或仿自然通道-流速") private String flow; - /** - * 仿自然通道断面形状 - */ + /** 仿自然通道断面形状 */ + @FieldChinese("仿自然通道断面形状") private String fzrdmxz; - /** - * 仿自然通道长度*宽度 - */ + /** 仿自然通道长度*宽度 */ + @FieldChinese("仿自然通道长度*宽度") private String fzrtdsz; - /** - * 仿自然通道运行水深,单位:m - */ + /** 仿自然通道运行水深,单位:m */ + @FieldChinese("仿自然通道运行水深") private BigDecimal fzryxwdp; - /** - * 仿自然通道坡降 - */ + /** 仿自然通道坡降 */ + @FieldChinese("仿自然通道坡降") private BigDecimal fzrpj; - /** - * 集运鱼系统或升鱼机-上游码头位置 - */ + /** 集运鱼系统或升鱼机-上游码头位置 */ + @FieldChinese("集运鱼系统或升鱼机-上游码头位置") private String symtlc; - /** - * 集运鱼系统或升鱼机-上游码头型式 - */ + /** 集运鱼系统或升鱼机-上游码头型式 */ + @FieldChinese("集运鱼系统或升鱼机-上游码头型式") private String symtxs; - /** - * 集运鱼系统或升鱼机-下游码头位置 - */ + /** 集运鱼系统或升鱼机-下游码头位置 */ + @FieldChinese("集运鱼系统或升鱼机-下游码头位置") private String xymtlc; - /** - * 集运鱼系统或升鱼机-下游码头型式 - */ + /** 集运鱼系统或升鱼机-下游码头型式 */ + @FieldChinese("集运鱼系统或升鱼机-下游码头型式") private String xymtxs; - /** - * 集运鱼系统或升鱼机-集诱鱼方式 - */ + /** 集运鱼系统或升鱼机-集诱鱼方式 */ + @FieldChinese("集运鱼系统或升鱼机-集诱鱼方式") private String jyfs; - /** - * 集运鱼系统或升鱼机-运鱼设施方式 - */ + /** 集运鱼系统或升鱼机-运鱼设施方式 */ + @FieldChinese("集运鱼系统或升鱼机-运鱼设施方式") private String yyfs; - /** - * 升鱼机集鱼槽数量,单位:个 - */ + /** 升鱼机集鱼槽数量,单位:个 */ + @FieldChinese("升鱼机集鱼槽数量") private Integer syjcnt; - /** - * 升鱼机集鱼槽进口高程,单位:m - */ + /** 升鱼机集鱼槽进口高程,单位:m */ + @FieldChinese("升鱼机集鱼槽进口高程") private BigDecimal syjhg; - /** - * 升鱼机集鱼槽流量,单位:m3/s - */ + /** 升鱼机集鱼槽流量,单位:m3/s */ + @FieldChinese("升鱼机集鱼槽流量") private String syjq; - /** - * 升鱼机断面尺寸(长*宽*高),单位:m - */ + /** 升鱼机断面尺寸(长*宽*高),单位:m */ + @FieldChinese("升鱼机断面尺寸") private String syjsz; - /** - * 升鱼机集鱼槽水深,单位:m - */ + /** 升鱼机集鱼槽水深,单位:m */ + @FieldChinese("升鱼机集鱼槽水深") private String syjwdp; - /** - * 设计过鱼规模,单位:尾 - */ + /** 设计过鱼规模,单位:尾 */ + @FieldChinese("设计过鱼规模") private String sjgycnt; - /** - * 主要过鱼对象{[code:鱼编码1,name:鱼名称1,数量],[code:鱼编码2,name:鱼名称2]...} - */ + /** 主要过鱼对象 */ + @FieldChinese("主要过鱼对象") private String zygydx; - /** - * 主要过鱼对象描述 - */ + /** 主要过鱼对象描述 */ + @FieldChinese("主要过鱼对象描述") private String zygydxms; - /** - * 兼顾过鱼对象{[code:鱼编码1,name:鱼名称1,数量],[code:鱼编码2,name:鱼名称2]...} - */ + /** 兼顾过鱼对象 */ + @FieldChinese("兼顾过鱼对象") private String jggydx; - /** - * 兼顾过鱼对象描述 - */ + /** 兼顾过鱼对象描述 */ + @FieldChinese("兼顾过鱼对象描述") private String jggydxms; - /** - * 过鱼时间 - */ + /** 过鱼时间 */ + @FieldChinese("过鱼时间") private String gytm; - /** - * 所属测站编码 - */ + /** 所属测站编码 */ + @FieldChinese("所属测站编码") private String stCode; - /** - * 运行时间 - */ + /** 运行时间 */ + @FieldChinese("运行时间") private String yxtm; - /** - * 主要过鱼月份(多个月份用,隔开) - */ + /** 主要过鱼月份(多个月份用,隔开) */ + @FieldChinese("主要过鱼月份") private String fpssmn; - /** - * 数据监测频次,单位:min - */ + /** 数据监测频次,单位:min */ + @FieldChinese("数据监测频次") private Integer dtfrqcy; - /** - * 基本特性参数(文字描述) - */ + /** 基本特性参数(文字描述) */ + @FieldChinese("基本特性参数") private String jbtxcs; - /** - * 设施是否实现鱼类上行 0=否 1=是 - */ + /** 设施是否实现鱼类上行 0=否 1=是 */ + @FieldChinese("设施是否实现鱼类上行") private Integer isUp; @TableField(exist = false) private String isUpName; - /** - * 设施是否实现鱼类下行 0=否 1=是 - */ + /** 设施是否实现鱼类下行 0=否 1=是 */ + @FieldChinese("设施是否实现鱼类下行") private Integer isDown; @TableField(exist = false) private String isDownName; - /** - * 监测方式:1=人工 2=自动 - */ + /** 监测方式:1=人工 2=自动 */ + @FieldChinese("监测方式") private Integer mway; - @TableField(exist = false) private String mwayName; - - /** - * 备注 - */ + /** 备注 */ + @FieldChinese("备注") private String remark; - /** - * 数据来源 - */ + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - /** - * 数据来源时间 - */ + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - /** - * 创建人 - */ + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - /** - * 创建时间 - */ + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - /** - * 更新人 - */ + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - /** - * 更新时间 - */ + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - /** - * 是否已删除 - */ + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - /** - * 删除人 - */ + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - /** - * 删除时间 - */ + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; -} \ No newline at end of file +} diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOpinfoBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOpinfoBH.java index b71e9983..3a204669 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOpinfoBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOpinfoBH.java @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import com.yfd.platform.annotation.UserIdField; import com.yfd.platform.annotation.UserNameField; import lombok.Data; @@ -15,210 +16,308 @@ import java.util.Date; public class SdOpinfoBH implements Serializable { private static final long serialVersionUID = 1L; + /** 倾斜摄影站点编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("倾斜摄影站点编码") private String stcd; + /** 站点名称 */ + @FieldChinese("站点名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; + /** 经度。单位:(°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度。单位:(°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程。单位:(°) */ + @FieldChinese("高程") private BigDecimal elev; + /** 位置 */ + @FieldChinese("位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; @TableField(exist = false) private String hbrvcdName; + /** 所属流域代码 */ + @FieldChinese("所属流域代码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区编码 */ + @FieldChinese("所属行政区编码") private String addvcd; - @TableField("STDSDT") + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - @TableField("PSTSTDT") + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - @TableField("PESSTDT") + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - @TableField("SWDT") + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO */ + @FieldChinese("LOGO") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 在线地址 */ + @FieldChinese("在线地址") private String url; + /** 自定义高程(前端) */ + @FieldChinese("自定义高程") private BigDecimal height; + /** 边界数据 */ + @FieldChinese("边界数据") private String boundary; - @TableField("CENTER_LGTD") + /** 中心点经度 */ + @FieldChinese("中心点经度") private BigDecimal centerLgtd; - @TableField("CENTER_LTTD") + /** 中心点纬度 */ + @FieldChinese("中心点纬度") private BigDecimal centerLttd; - @TableField("CENTER_ELEV") + /** 中心点高程 */ + @FieldChinese("中心点高程") private BigDecimal centerElev; + /** 说明 */ + @FieldChinese("说明") private String description; - @TableField("CENTER1_LGTD") + /** 中心点1经度 */ + @FieldChinese("中心点1经度") private BigDecimal center1Lgtd; - @TableField("CENTER1_LTTD") + /** 中心点1纬度 */ + @FieldChinese("中心点1纬度") private BigDecimal center1Lttd; - @TableField("CENTER1_ELEV") + /** 中心点1高程 */ + @FieldChinese("中心点1高程") private BigDecimal center1Elev; - @TableField("CLIPPING_PLANES") + /** 裁剪平面 */ + @FieldChinese("裁剪平面") private String clippingPlanes; - @TableField("DESTINATION_TYPE") + /** 相机位置坐标系类型 */ + @FieldChinese("相机位置坐标系类型") private String destinationType; - @TableField("DESTINATION_LGTD") + /** 相机位置经度X */ + @FieldChinese("相机位置经度X") private BigDecimal destinationLgtd; - @TableField("DESTINATION_LTTD") + /** 相机位置纬度Y */ + @FieldChinese("相机位置纬度Y") private BigDecimal destinationLttd; - @TableField("DESTINATION_ELEV") + /** 相机位置高度Z */ + @FieldChinese("相机位置高度Z") private BigDecimal destinationElev; - @TableField("ORIENTATION_ROLL") + /** 摄像头滚转角X */ + @FieldChinese("摄像头滚转角X") private BigDecimal orientationRoll; - @TableField("ORIENTATION_HEADING") + /** 摄像头偏航角Z(左右旋转) */ + @FieldChinese("摄像头偏航角Z") private BigDecimal orientationHeading; - @TableField("ORIENTATION_PITCH") + /** 摄像头俯仰角Y(上下旋转) */ + @FieldChinese("摄像头俯仰角Y") private BigDecimal orientationPitch; - @TableField("REVISE_SITE_ELEV") + /** 前端校正站点高程 */ + @FieldChinese("前端校正站点高程") private BigDecimal reviseSiteElev; - @TableField("REVISE_SITE_ELEV_FACTOR") + /** 前端校正站点高程系数 */ + @FieldChinese("前端校正站点高程系数") private BigDecimal reviseSiteElevFactor; - @TableField("DESTINATION_LGTD_WCS") + /** 相机位置经度X世界坐标系 */ + @FieldChinese("相机位置经度X世界坐标系") private BigDecimal destinationLgtdWcs; - @TableField("DESTINATION_LTTD_WCS") + /** 相机位置纬度Y世界坐标系 */ + @FieldChinese("相机位置纬度Y世界坐标系") private BigDecimal destinationLttdWcs; - @TableField("DESTINATION_ELEV_WCS") + /** 相机位置高度Z世界坐标系 */ + @FieldChinese("相机位置高度Z世界坐标系") private BigDecimal destinationElevWcs; - @TableField("DESTINATION_LGTD_WGS84") + /** 相机位置经度X WGS-84坐标系 */ + @FieldChinese("相机位置经度X WGS-84坐标系") private BigDecimal destinationLgtdWgs84; - @TableField("DESTINATION_LTTD_WGS84") + /** 相机位置纬度Y WGS-84坐标系 */ + @FieldChinese("相机位置纬度Y WGS-84坐标系") private BigDecimal destinationLttdWgs84; - @TableField("DESTINATION_ELEV_WGS84") + /** 相机位置高度Z WGS-84坐标系 */ + @FieldChinese("相机位置高度Z WGS-84坐标系") private BigDecimal destinationElevWgs84; + /** 倾斜摄影电站坐标json串 */ + @FieldChinese("倾斜摄影电站坐标json串") private String location; + /** 倾斜摄影模型精度 */ + @FieldChinese("倾斜摄影模型精度") private String accuracy; - @TableField("STNM_ALIAS") + /** 别名 */ + @FieldChinese("别名") private String stnmAlias; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; + /** 创建时间 */ @TableField("RECORD_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; + /** 更新人 */ @TableField("MODIFY_USER") + @FieldChinese("更新人") private String modifyUser; + /** 更新时间 */ @TableField("MODIFY_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; + /** 是否已删除 */ @TableField("IS_DELETED") + @FieldChinese("是否已删除") private Integer isDeleted; + /** 删除人 */ @TableField("DELETE_USER") + @FieldChinese("删除人") private String deleteUser; + /** 删除时间 */ @TableField("DELETE_TIME") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; /** 所属站类全路径(非数据库字段) */ @@ -232,6 +331,7 @@ public class SdOpinfoBH implements Serializable { /** 创建人 */ @TableField("RECORD_USER") @UserIdField + @FieldChinese("创建人") private String recordUser; /** 创建人名称(非数据库字段) */ diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtteBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtteBH.java index 058033af..686ef28e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtteBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtteBH.java @@ -2,124 +2,185 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 其他陆生生态保护工程信息表 + */ @Data @TableName("SD_OTTE_B_H") public class SdOtteBH implements Serializable { private static final long serialVersionUID = 1L; + /** 其他陆生生态保护工程编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("其他陆生生态保护工程编码") private String stcd; + /** 其他陆生生态保护工程名称 */ + @FieldChinese("其他陆生生态保护工程名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; @TableField(exist = false) private String usflName; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区划编码 */ + @FieldChinese("所属行政区划编码") private String addvcd; - @TableField("STDSDT") + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - @TableField("PSTSTDT") + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - @TableField("PESSTDT") + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - @TableField("SWDT") + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 基本特性参数(文字描述) */ + @FieldChinese("基本特性参数") private String jbtxcs; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtweBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtweBH.java index 3066160b..8b4fbf03 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtweBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdOtweBH.java @@ -2,126 +2,189 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 其他水生生态保护工程信息表 + */ @Data @TableName("SD_OTWE_B_H") public class SdOtweBH implements Serializable { private static final long serialVersionUID = 1L; + /** 其他水生生态保护工程编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("其他水生生态保护工程编码") private String stcd; + /** 其他水生生态保护工程名称 */ + @FieldChinese("其他水生生态保护工程名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; @TableField(exist = false) private String usflName; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区划编码 */ + @FieldChinese("所属行政区划编码") private String addvcd; - @TableField("STDSDT") + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - @TableField("PSTSTDT") + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - @TableField("PESSTDT") + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - @TableField("SWDT") + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; + /** 基本特性参数(文字描述) */ + @FieldChinese("基本特性参数") private String jbtxcs; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdSonarBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdSonarBH.java index a503baae..b39c1b4f 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdSonarBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdSonarBH.java @@ -2,142 +2,211 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 声呐及水下摄像头基本属性表 + */ @Data @TableName("SD_SONAR_B_H") public class SdSonarBH implements Serializable { private static final long serialVersionUID = 1L; + /** 站码 */ @TableId(type = IdType.INPUT) + @FieldChinese("站码") private String stcd; + /** 站名 */ + @FieldChinese("站名") private String stnm; + /** 监控类型 */ + @FieldChinese("监控类型") private String mntp; + /** 监控类别 */ + @FieldChinese("监控类别") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; @TableField(exist = false) private String usflName; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; + /** 监测方式 */ + @FieldChinese("监测方式") private Integer mway; @TableField(exist = false) private String mwayName; + /** 监测指标 */ + @FieldChinese("监测指标") private String stindx; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区编码 */ + @FieldChinese("所属行政区编码") private String addvcd; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 服务对象 */ + @FieldChinese("服务对象") private String fwdx; + /** 观察方式 */ + @FieldChinese("观察方式") private String gcfs; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("RECORD_USER") + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - @TableField("RECORD_TIME") + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - @TableField("MODIFY_USER") + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - @TableField("MODIFY_TIME") + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - @TableField("IS_DELETED") + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - @TableField("DELETE_USER") + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - @TableField("DELETE_TIME") + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; - @TableField("WARN_STATE") + /** 告警状态 */ + @FieldChinese("告警状态") private String warnState; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdTeBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdTeBH.java index ebf5402b..e24b2e80 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdTeBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdTeBH.java @@ -2,119 +2,178 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 陆生生态调查断面工程信息表 + */ @Data @TableName("SD_TE_B_H") public class SdTeBH implements Serializable { private static final long serialVersionUID = 1L; + /** 陆生生态调查断面编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("陆生生态调查断面编码") private String stcd; + /** 陆生生态调查断面名称 */ + @FieldChinese("陆生生态调查断面名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区划编码 */ + @FieldChinese("所属行政区划编码") private String addvcd; - @TableField("STDSDT") + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - @TableField("PSTSTDT") + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - @TableField("PESSTDT") + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - @TableField("SWDT") + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVaBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVaBH.java index eb3ab517..7ec6f02b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVaBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVaBH.java @@ -2,152 +2,229 @@ package com.yfd.platform.qgc_base.domain; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 动物救助站工程信息表 + */ @Data @TableName("SD_VA_B_H") public class SdVaBH implements Serializable { private static final long serialVersionUID = 1L; + /** 动物救助站编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("动物救助站编码") private String stcd; + /** 动物救助站名称 */ + @FieldChinese("动物救助站名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; @TableField(exist = false) private String usflName; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; + @TableField(exist = false) private String dtinName; + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - @TableField("DTIN_TM") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 服务电站编码列表 */ + @FieldChinese("服务电站编码列表") private String rstcdmap; - @TableField("STDSDT") + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; - @TableField("PSTSTDT") + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; - @TableField("PESSTDT") + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; - @TableField("SWDT") + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; - @TableField("JCDT") + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; - @TableField("WDDT") + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 面积(单位:km²) */ + @FieldChinese("面积") private BigDecimal area; + /** 地点 */ + @FieldChinese("地点") private String place; + /** 保护方式 */ + @FieldChinese("保护方式") private String bhfs; + /** 保护原因 */ + @FieldChinese("保护原因") private String bhyy; + /** 保护对象文字描述 */ + @FieldChinese("保护对象文字描述") private String bhdx; + /** 保护对象列表 */ + @FieldChinese("保护对象列表") private String bhdxlb; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("RECORD_USER") + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - @TableField("RECORD_TIME") + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - @TableField("MODIFY_USER") + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - @TableField("MODIFY_TIME") + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - @TableField("IS_DELETED") + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - @TableField("DELETE_USER") + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - @TableField("DELETE_TIME") + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVdinfoB.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVdinfoB.java index f89e258d..8d5f79bf 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVdinfoB.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVdinfoB.java @@ -5,196 +5,302 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 视频站基本属性表 + */ @Data @TableName("SD_VDINFO_B") public class SdVdinfoB implements Serializable { private static final long serialVersionUID = 1L; + /** 视频站站码 */ @TableId(type = IdType.INPUT) + @FieldChinese("视频站站码") private String stcd; + /** 视频站名称 */ + @FieldChinese("视频站名称") private String stnm; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 视频站监控类型 */ + @FieldChinese("视频站监控类型") private String mntp; + /** 视频站子站类 */ + @FieldChinese("视频站子站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 经度 */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度 */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程/海拔 */ + @FieldChinese("高程/海拔") private BigDecimal elev; + /** 地址 */ + @FieldChinese("地址") private String stlc; + /** 监测指标 */ + @FieldChinese("监测指标") private String stindx; + /** 备注 */ + @FieldChinese("备注") private String description; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; + /** 所属测站编码 */ + @FieldChinese("所属测站编码") private String cstcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政编码 */ + @FieldChinese("所属行政编码") private String addvcd; @TableField(exist = false) private String addvcdName; + /** 所属公司编码 */ + @FieldChinese("所属公司编码") private String hycd; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属栖息地编码 */ + @FieldChinese("所属栖息地编码") private String fhstcd; + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 撤站日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("撤站日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - @TableField("DTIN_SRC") + /** 数据接入来源 */ + @FieldChinese("数据接入来源") private String dtinSrc; - @TableField("DTIN_TM") + /** 数据接入开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入开始时间") private Date dtinTm; - @TableField("DEVICE_INFO") + /** 设备关键信息 */ + @FieldChinese("设备关键信息") private String deviceInfo; - @TableField("ACCESS_WAY") + /** 视频站接入方式 */ + @FieldChinese("视频站接入方式") private String accessWay; - @TableField("DEVICE_SERIAL") + /** 视频站设备序列号 */ + @FieldChinese("视频站设备序列号") private String deviceSerial; - @TableField("CHANNEL_NO") + /** 视频站通道号 */ + @FieldChinese("视频站通道号") private String channelNo; - @TableField("CHANNEL_NAME") + /** 视频站通道名 */ + @FieldChinese("视频站通道名") private String channelName; + /** 国标设备的通道编号 */ + @FieldChinese("国标设备的通道编号") private String gbchannel; + /** 视频站流播放协议 */ + @FieldChinese("视频站流播放协议") private String protocol; + /** 视频站码流类型 */ + @FieldChinese("视频站码流类型") private String quality; + /** 视频站传输协议 */ + @FieldChinese("视频站传输协议") private String transmode; - @TableField("IS_VD_CONTROL") + /** 视频站是否支持远程控制 */ + @FieldChinese("视频站是否支持远程控制") private Integer isVdControl; - @TableField("CONTROL_MODE") + /** 获取视频站支持远程控制范围 */ + @FieldChinese("获取视频站支持远程控制范围") private String controlMode; + /** 视频站直播地址 */ + @FieldChinese("视频站直播地址") private String url; - @TableField("INTRANET_URL") + /** 视频站直播内网地址 */ + @FieldChinese("视频站直播内网地址") private String intranetUrl; + /** 视频站用户名 */ + @FieldChinese("视频站用户名") private String vduser; + /** 视频站密码 */ + @FieldChinese("视频站密码") private String vdpwd; - @TableField("STORAGE_WAY") + /** 视频站定时截取存储方式 */ + @FieldChinese("视频站定时截取存储方式") private String storageWay; + /** 视频站定时截取频率cron表达式 */ + @FieldChinese("视频站定时截取频率") private String frequency; - @TableField("CUT_TIME") + /** 视频站定时截取时长 */ + @FieldChinese("视频站定时截取时长") private String cutTime; - @TableField("FRAME_RATE") + /** 视频站定时截取压缩每秒多少帧 */ + @FieldChinese("视频站定时截取压缩每秒多少帧") private String frameRate; - @TableField("TS_DURATION") + /** ts文件的时长 */ + @FieldChinese("ts文件的时长") private String tsDuration; - @TableField("OCR_WAY") + /** ocr方式 */ + @FieldChinese("ocr方式") private String ocrWay; + /** 是否是生态流量泄放复核 */ + @FieldChinese("是否是生态流量泄放复核") private String eqreviewm; + /** 视频站设备机位变更日期 */ + @FieldChinese("视频站设备机位变更日期") private Integer jwupdate; - @TableField("AI_ENABLED") + /** 视频站AI识别是否启用 */ + @FieldChinese("视频站AI识别是否启用") private Integer aiEnabled; - @TableField("AI_FREQUENCY") + /** 视频站AI识别频率cron表达式 */ + @FieldChinese("视频站AI识别频率") private String aiFrequency; - @TableField("AI_EXT_CODE") + /** 视频站AI识别外部站码 */ + @FieldChinese("视频站AI识别外部站码") private String aiExtCode; - @TableField("AI_EXT_NAME") + /** 视频站AI识别外部站名 */ + @FieldChinese("视频站AI识别外部站名") private String aiExtName; - @TableField("LIVE_ADDRESS") + /** 平台提供的直接列表 */ + @FieldChinese("平台提供的直接列表") private String liveAddress; + /** 视频录像数据保留天数 */ + @FieldChinese("视频录像数据保留天数") private Integer vdhisday; - @TableField("DELAY_TIME") + /** 视频截取失败多少秒重试 */ + @FieldChinese("视频截取失败多少秒重试") private String delayTime; - @TableField("DELAY_NUM") + /** 视频截取失败最大重试次数 */ + @FieldChinese("视频截取失败最大重试次数") private Integer delayNum; + /** 依托项目 */ + @FieldChinese("依托项目") private String project; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("WARN_STATE") + /** 告警状态 */ + @FieldChinese("告警状态") private String warnState; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVpBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVpBH.java index fdb7b945..83cb23a7 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVpBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdVpBH.java @@ -5,147 +5,230 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 珍稀植物保护工程信息表 + */ @Data @TableName("SD_VP_B_H") public class SdVpBH implements Serializable { private static final long serialVersionUID = 1L; + /** 珍稀植物园编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("珍稀植物园编码") private String stcd; + /** 珍稀植物园名称 */ + @FieldChinese("珍稀植物园名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; - + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 所属建设阶段 */ + @FieldChinese("所属建设阶段") private Integer blprd; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - @TableField("DTIN_TM") + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 总工期(单位:天) */ + @FieldChinese("总工期") private Integer aptl; + /** 面积(单位:km²) */ + @FieldChinese("面积") private BigDecimal area; + /** 地点 */ + @FieldChinese("地点") private String place; + /** 保护对象文字描述 */ + @FieldChinese("保护对象文字描述") private String bhdx; + /** 保护对象列表 */ + @FieldChinese("保护对象列表") private String bhdxlb; + /** 保护方式 */ + @FieldChinese("保护方式") private String bhfs; + /** 保护原因 */ + @FieldChinese("保护原因") private String bhyy; + /** 是否业主营地公用 */ + @FieldChinese("是否业主营地公用") private Integer iscaec; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("RECORD_USER") + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - @TableField("RECORD_TIME") + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - @TableField("MODIFY_USER") + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - @TableField("MODIFY_TIME") + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - @TableField("IS_DELETED") + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - @TableField("DELETE_USER") + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - @TableField("DELETE_TIME") + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWeBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWeBH.java index f3014353..5a1e814e 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWeBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWeBH.java @@ -5,113 +5,178 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 水生生态调查断面工程信息表 + */ @Data @TableName("SD_WE_B_H") public class SdWeBH implements Serializable { private static final long serialVersionUID = 1L; + /** 水生生态调查断面编码 */ @TableId(type = IdType.INPUT) + @FieldChinese("水生生态调查断面编码") private String stcd; + /** 水生生态调查断面名称 */ + @FieldChinese("水生生态调查断面名称") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 经度(单位:°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(单位:°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程(单位:m) */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址/位置 */ + @FieldChinese("站址/位置") private String stlc; + /** 是否启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - @TableField("DTIN_TM") + /** 数据接入时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入时间") private Date dtinTm; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属流域编码 */ + @FieldChinese("所属流域编码") private String rvcd; @TableField(exist = false) private String rvnm; + /** 所属行政区划编码 */ + @FieldChinese("所属行政区划编码") private String addvcd; + /** 规划设计日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("规划设计日期") private Date stdsdt; + /** 计划开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划开工日期") private Date pststdt; + /** 计划完工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("计划完工日期") private Date pesstdt; + /** 开工日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("开工日期") private Date swdt; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 投资(单位:亿元) */ + @FieldChinese("投资") private BigDecimal inv; + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; + /** 数据监测频次(单位:min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWqBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWqBH.java index c4b03141..732fde4b 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWqBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWqBH.java @@ -5,144 +5,215 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 水质站基本属性表 + */ @Data @TableName("SD_WQ_B_H") public class SdWqBH implements Serializable { private static final long serialVersionUID = 1L; + /** 站码 */ @TableId(type = IdType.INPUT) + @FieldChinese("站码") private String stcd; + /** 站名 */ + @FieldChinese("站名") private String stnm; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 经度(°) */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度(°) */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程/海拔(m) */ + @FieldChinese("高程/海拔") private BigDecimal elev; + /** 站址 */ + @FieldChinese("站址") private String stlc; + /** 水质目标 */ + @FieldChinese("水质目标") private String wwqtg; @TableField(exist = false) private String wwqtgName; + /** 水质建设类型 */ + @FieldChinese("水质建设类型") private String wqtype; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 退役/拆除日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("退役/拆除日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** LOGO图片 */ + @FieldChinese("LOGO图片") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 是否启用:0=禁用 1=启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入:0=未接入 1=已接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - @TableField("DTIN_SRC") + /** 数据接入来源 */ + @FieldChinese("数据接入来源") private String dtinSrc; - @TableField("DTIN_TYPE") + /** 数据接入类型:0=自建 1=国家建 2=人工建 */ + @FieldChinese("数据接入类型") private Integer dtinType; @TableField(exist = false) private String dtinTypeName; - @TableField("DTIN_TM") + /** 数据接入开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入开始时间") private Date dtinTm; + /** 监测方式:1=人工 2=自动 */ + @FieldChinese("监测方式") private Integer mway; @TableField(exist = false) private String mwayName; + /** 监测指标 */ + @FieldChinese("监测指标") private String stindx; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; + /** 所属栖息地编码 */ + @FieldChinese("所属栖息地编码") private String fhstcd; + /** 是否关联断面 */ + @FieldChinese("是否关联断面") private Integer ispro; + /** 数据监测频次(min) */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注 */ + @FieldChinese("备注") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("RECORD_USER") + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - @TableField("RECORD_TIME") + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - @TableField("MODIFY_USER") + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - @TableField("MODIFY_TIME") + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - @TableField("IS_DELETED") + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - @TableField("DELETE_USER") + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - @TableField("DELETE_TIME") + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; - @TableField("WARN_STATE") + /** 告警状态 */ + @FieldChinese("告警状态") private String warnState; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWtBH.java b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWtBH.java index 8bef14a8..7f18dd9a 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWtBH.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/domain/SdWtBH.java @@ -5,167 +5,252 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.yfd.platform.annotation.FieldChinese; import lombok.Data; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +/** + * 水温站基本属性表 + */ @Data @TableName("SD_WT_B_H") public class SdWtBH implements Serializable { private static final long serialVersionUID = 1L; + /** 水温站站码 */ @TableId(type = IdType.INPUT) + @FieldChinese("水温站站码") private String stcd; + /** 数据时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据时间") private Date tm; + /** 水温站站名 */ + @FieldChinese("水温站站名") private String stnm; + /** 站类 */ + @FieldChinese("站类") private String sttp; @TableField(exist = false) private String sttpName; + /** 经度 */ + @FieldChinese("经度") private BigDecimal lgtd; + /** 纬度 */ + @FieldChinese("纬度") private BigDecimal lttd; + /** 高程 */ + @FieldChinese("高程") private BigDecimal elev; + /** 站址 */ + @FieldChinese("站址") private String stlc; + /** 测站来源 */ + @FieldChinese("测站来源") private String stsr; - @TableField("WT_DEVICE_TYPE") + /** 水温监测断面设备类型:1=浮动式 2=固定式 */ + @FieldChinese("水温监测断面设备类型") private Integer wtDeviceType; - @TableField("WT_TYPE") + /** 水温监测断面类型 */ + @FieldChinese("水温监测断面类型") private String wtType; + /** 电站水温结构类型 */ + @FieldChinese("电站水温结构类型") private String wts; - @TableField("WT_HGT_TYPE") + /** 固定垂向水温类型:1=相对位置 2=高程 */ + @FieldChinese("固定垂向水温类型") private Integer wtHgtType; - @TableField("WT_FIRST_HGT") + /** 固定垂向水温第1个探头高程 */ + @FieldChinese("固定垂向水温第1个探头高程") private BigDecimal wtFirstHgt; - @TableField("WT_DIST") + /** 垂向水温探头分布 */ + @FieldChinese("垂向水温探头分布") private String wtDist; + /** 建成日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("建成日期") private Date jcdt; + /** 撤站日期 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("撤站日期") private Date wddt; - @TableField("BLDSTT_CODE") + /** 建设状态分类 */ + @FieldChinese("建设状态分类") private Integer bldsttCode; @TableField(exist = false) private String bldsttCodeName; + /** 总投资 */ + @FieldChinese("总投资") private BigDecimal inv; + /** 投资是否计入主体工程 */ + @FieldChinese("投资是否计入主体工程") private Integer invinmn; + /** 简介 */ + @FieldChinese("简介") private String introduce; + /** 测站logo */ + @FieldChinese("测站logo") private String logo; + /** 介绍弹窗图片 */ + @FieldChinese("介绍弹窗图片") private String inffile; + /** 是否启用:0=禁用 1=启用 */ + @FieldChinese("是否启用") private Integer usfl; + /** 数据是否接入:0=未接入 1=已接入 */ + @FieldChinese("数据是否接入") private Integer dtin; @TableField(exist = false) private String dtinName; - @TableField("DTIN_SRC") + /** 数据接入来源 */ + @FieldChinese("数据接入来源") private String dtinSrc; - @TableField("DTIN_TYPE") + /** 数据接入类型:0=自建 1=国家建 2=人工建 */ + @FieldChinese("数据接入类型") private Integer dtinType; @TableField(exist = false) private String dtinTypeName; - @TableField("DTIN_TM") + /** 数据接入开始时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据接入开始时间") private Date dtinTm; + /** 监测方式:1=人工 2=自动 */ + @FieldChinese("监测方式") private Integer mway; @TableField(exist = false) private String mwayName; + /** 监测指标 */ + @FieldChinese("监测指标") private String stindx; - @TableField("ORDER_INDEX") + /** 排序 */ + @FieldChinese("排序") private Integer orderIndex; + /** 所属断面编码 */ + @FieldChinese("所属断面编码") private String dmstcd; + /** 所属电站编码 */ + @FieldChinese("所属电站编码") private String rstcd; @TableField(exist = false) private String ennm; + /** 所属栖息地编码 */ + @FieldChinese("所属栖息地编码") private String fhstcd; + /** 是否属于测站:0=否 1=是 */ + @FieldChinese("是否属于测站") private Integer ispro; + /** 依托项目 */ + @FieldChinese("依托项目") private String project; + /** 数据监测频次 */ + @FieldChinese("数据监测频次") private String dtfrqcy; + /** 备注说明 */ + @FieldChinese("备注说明") private String remark; + /** 数据来源 */ + @FieldChinese("数据来源") private String vlsr; - @TableField("VLSR_TM") + /** 数据来源时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("数据来源时间") private Date vlsrTm; - @TableField("RECORD_USER") + /** 创建人 */ + @FieldChinese("创建人") private String recordUser; - @TableField("RECORD_TIME") + /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("创建时间") private Date recordTime; - @TableField("MODIFY_USER") + /** 更新人 */ + @FieldChinese("更新人") private String modifyUser; - @TableField("MODIFY_TIME") + /** 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("更新时间") private Date modifyTime; - @TableField("IS_DELETED") + /** 是否已删除 */ + @FieldChinese("是否已删除") private Integer isDeleted; - @TableField("DELETE_USER") + /** 删除人 */ + @FieldChinese("删除人") private String deleteUser; - @TableField("DELETE_TIME") + /** 删除时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @FieldChinese("删除时间") private Date deleteTime; - @TableField("BASE_ID") + /** 所属水电基地编码 */ + @FieldChinese("所属水电基地编码") private String baseId; @TableField(exist = false) private String baseName; + /** 所属水电基地流域编码 */ + @FieldChinese("所属水电基地流域编码") private String hbrvcd; - @TableField("WARN_STATE") + /** 告警状态 */ + @FieldChinese("告警状态") private String warnState; - @TableField("IS_PUSH") + /** 是否纳入推送:0=否 1=是 */ + @FieldChinese("是否纳入推送") private Integer isPush; } diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java index 7259fdca..1db399ec 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdEngInfoBHServiceImpl.java @@ -170,7 +170,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl "t.id"; case "sttp" -> "t.sttp"; + case "hycd" -> "t.hycd"; + case "topHycd" -> "t.topHycd"; case "sttpCode" -> "t.sttpCode"; case "runState" -> "t.runState"; case "sttpName" -> "t.sttpName"; diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java index 2fb7724f..173950ba 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/vd/service/impl/VdMonitorServiceImpl.java @@ -477,7 +477,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryLatestRunDataDetailList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { - return queryRunDataDetailList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + return queryRunDataDetailList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); } private DataSourceResult queryRunDataDetailList(DataSourceRequest dataSourceRequest, @@ -513,7 +513,7 @@ public class VdMonitorServiceImpl implements VdMonitorService { private DataSourceResult queryLatestRunDataGroupList(DataSourceRequest dataSourceRequest, DataSourceLoadOptionsBase loadOptions) { - return queryRunDataGroupList(dataSourceRequest, loadOptions, buildLatestRunDataCoreSql()); + return queryRunDataGroupList(dataSourceRequest, loadOptions, buildRunDataCoreSql()); } private DataSourceResult queryVdPointDetailList(DataSourceRequest dataSourceRequest, @@ -923,57 +923,57 @@ public class VdMonitorServiceImpl implements VdMonitorService { // "WHERE NVL(run.IS_DELETED, 0) = 0 "; // } - private String buildLatestRunDataCoreSql() { - return "SELECT " + - "run.ID AS id, " + - "run.STCD AS stcd, " + - "run.TM AS tm, " + - "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + - "run.IMG_PATH AS imgPath, " + - "run.FLPTH AS flpth, " + - "run.DEVICEINFO AS deviceinfo, " + - "run.DESCRIBE AS describe, " + - "run.FID AS fid, " + - "run.THUMBNAIL AS thumbnail, " + - "base.RSTCD AS rstcd, " + - "base.STNM AS stnm, " + - "eng.ENNM AS ennm, " + - "base.FHSTCD AS fhstcd, " + - "fh.STNM AS fhstnm, " + - "base.CSTCD AS stCode, " + - "cst.STNM AS stName, " + - "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + - "hb.BASENAME AS baseName, " + - "base.STTP AS sttpCode, " + - "sttp.STTP_NAME AS sttpName, " + - "base.STNM AS titleName, " + - "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + - "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + - "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + - "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + - "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + - "hbrv.HBRVNM AS hbrvcdName " + - "FROM ( " + - "SELECT detail.ID, detail.STCD, detail.TM, detail.FLNM, detail.IMG_PATH, detail.FLPTH, detail.DEVICEINFO, " + - "detail.DESCRIBE, detail.FID, detail.THUMBNAIL " + - "FROM SD_VDINFO_R detail " + - "INNER JOIN ( " + - "SELECT STCD, MAX(TM) AS TM FROM SD_VDINFO_R WHERE NVL(IS_DELETED, 0) = 0 GROUP BY STCD " + - ") latest ON detail.STCD = latest.STCD AND detail.TM = latest.TM " + - "WHERE NVL(detail.IS_DELETED, 0) = 0 " + - ") run " + - "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + - "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + - "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + - " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + - "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + - " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + - " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + - "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + - "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + - "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + - " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; - } +// private String buildLatestRunDataCoreSql() { +// return "SELECT " + +// "run.ID AS id, " + +// "run.STCD AS stcd, " + +// "run.TM AS tm, " + +// "NVL(run.FLNM, base.STNM || ' ' || TO_CHAR(run.TM, 'yyyy-mm-dd hh24')) AS flnm, " + +// "run.IMG_PATH AS imgPath, " + +// "run.FLPTH AS flpth, " + +// "run.DEVICEINFO AS deviceinfo, " + +// "run.DESCRIBE AS describe, " + +// "run.FID AS fid, " + +// "run.THUMBNAIL AS thumbnail, " + +// "base.RSTCD AS rstcd, " + +// "base.STNM AS stnm, " + +// "eng.ENNM AS ennm, " + +// "base.FHSTCD AS fhstcd, " + +// "fh.STNM AS fhstnm, " + +// "base.CSTCD AS stCode, " + +// "cst.STNM AS stName, " + +// "NVL(eng.BASE_ID, base.BASE_ID) AS baseId, " + +// "hb.BASENAME AS baseName, " + +// "base.STTP AS sttpCode, " + +// "sttp.STTP_NAME AS sttpName, " + +// "base.STNM AS titleName, " + +// "NVL(hb.ORDER_INDEX, 999999) AS baseStepSort, " + +// "NVL(hbrv.ORDER_INDEX, 999999) AS rvcdStepSort, " + +// "NVL(eng.ORDER_INDEX, 999999) AS rstcdStepSort, " + +// "NVL(base.ORDER_INDEX, 999999) AS siteStepSort, " + +// "NVL(eng.HBRVCD, base.HBRVCD) AS hbrvcd, " + +// "hbrv.HBRVNM AS hbrvcdName " + +// "FROM ( " + +// "SELECT detail.ID, detail.STCD, detail.TM, detail.FLNM, detail.IMG_PATH, detail.FLPTH, detail.DEVICEINFO, " + +// "detail.DESCRIBE, detail.FID, detail.THUMBNAIL " + +// "FROM SD_VDINFO_R detail " + +// "INNER JOIN ( " + +// "SELECT STCD, MAX(TM) AS TM FROM SD_VDINFO_R WHERE NVL(IS_DELETED, 0) = 0 GROUP BY STCD " + +// ") latest ON detail.STCD = latest.STCD AND detail.TM = latest.TM " + +// "WHERE NVL(detail.IS_DELETED, 0) = 0 " + +// ") run " + +// "INNER JOIN (" + buildVdDeviceBaseSql() + ") base ON run.STCD = base.STCD " + +// "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = base.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 " + +// "LEFT JOIN SD_HYDROBASE hb ON hb.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + +// " AND NVL(hb.IS_DELETED, 0) = 0 AND NVL(hb.ENABLED, 1) = 1 " + +// "LEFT JOIN SD_HBRV_DIC hbrv ON hbrv.HBRVCD = NVL(eng.HBRVCD, base.HBRVCD) " + +// " AND hbrv.BASEID = NVL(eng.BASE_ID, base.BASE_ID) " + +// " AND NVL(hbrv.IS_DELETED, 0) = 0 AND NVL(hbrv.ENABLED, 1) = 1 " + +// "LEFT JOIN SD_FHBT_B_H fh ON fh.STCD = base.FHSTCD AND NVL(fh.IS_DELETED, 0) = 0 " + +// "LEFT JOIN (" + buildStationBaseSql() + ") cst ON cst.STCD = base.CSTCD " + +// "LEFT JOIN SD_STTP_B sttp ON sttp.STTP_CODE = base.STTP " + +// " AND NVL(sttp.IS_DELETED, 0) = 0 AND NVL(sttp.ENABLE, 1) = 1 "; +// } private String buildStationBaseSql() { return "SELECT river.STCD AS STCD, river.STNM AS STNM FROM SD_RIVER_B_H river WHERE NVL(river.IS_DELETED, 0) = 0 " + From f3228fca742bd98004c21c2434a802f1d5e242bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=88=E5=85=86=E5=A2=9E?= <你的邮箱@example.com> Date: Tue, 28 Jul 2026 18:28:07 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E9=85=8D=E5=9B=BE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/.env.development | 6 +- ...视化配置平台(MapStudio)技术实现说明文档.md | 343 + frontend/package.json | 2 + frontend/pnpm-lock.yaml | 47 + .../src/assets/images/map-denggaoxian.png | Bin 0 -> 46772 bytes frontend/src/layout/components/AppMain.vue | 7 +- frontend/src/modules/MapStudio/api/index.ts | 210 + .../MapStudio/components/HistoryModal.vue | 251 + .../components/ImportAnchorModal.vue | 456 + .../MapStudio/components/LeftToolbar.vue | 416 + .../modules/MapStudio/components/Legend.vue | 291 + .../MapStudio/components/MapContainer.vue | 13 + .../MapStudio/components/MapImageOverlay.vue | 224 + .../MapStudio/components/RightDrawer.vue | 3259 ++ .../MapStudio/components/SaveModal.vue | 363 + .../MapStudio/components/TableOverlay.vue | 299 + .../MapStudio/components/district.json | 26913 ++++++++++++++++ .../MapStudio/composables/useAnchorLayers.ts | 1420 + .../MapStudio/composables/useDrawTools.ts | 1097 + .../MapStudio/composables/useMapInit.ts | 250 + .../MapStudio/composables/useOverlayLayers.ts | 238 + .../MapStudio/composables/useUndoRedo.ts | 445 + frontend/src/modules/MapStudio/index.vue | 268 + .../MapStudio/stores/mapStudioStore.ts | 263 + .../src/modules/MapStudio/styles/index.scss | 191 + frontend/src/modules/MapStudio/types/index.ts | 359 + .../views/zhiNengFenXi/zhiNengPeiTu/index.vue | 7 + 27 files changed, 37634 insertions(+), 4 deletions(-) create mode 100644 frontend/docs/地图可视化配置平台(MapStudio)技术实现说明文档.md create mode 100644 frontend/src/assets/images/map-denggaoxian.png create mode 100644 frontend/src/modules/MapStudio/api/index.ts create mode 100644 frontend/src/modules/MapStudio/components/HistoryModal.vue create mode 100644 frontend/src/modules/MapStudio/components/ImportAnchorModal.vue create mode 100644 frontend/src/modules/MapStudio/components/LeftToolbar.vue create mode 100644 frontend/src/modules/MapStudio/components/Legend.vue create mode 100644 frontend/src/modules/MapStudio/components/MapContainer.vue create mode 100644 frontend/src/modules/MapStudio/components/MapImageOverlay.vue create mode 100644 frontend/src/modules/MapStudio/components/RightDrawer.vue create mode 100644 frontend/src/modules/MapStudio/components/SaveModal.vue create mode 100644 frontend/src/modules/MapStudio/components/TableOverlay.vue create mode 100644 frontend/src/modules/MapStudio/components/district.json create mode 100644 frontend/src/modules/MapStudio/composables/useAnchorLayers.ts create mode 100644 frontend/src/modules/MapStudio/composables/useDrawTools.ts create mode 100644 frontend/src/modules/MapStudio/composables/useMapInit.ts create mode 100644 frontend/src/modules/MapStudio/composables/useOverlayLayers.ts create mode 100644 frontend/src/modules/MapStudio/composables/useUndoRedo.ts create mode 100644 frontend/src/modules/MapStudio/index.vue create mode 100644 frontend/src/modules/MapStudio/stores/mapStudioStore.ts create mode 100644 frontend/src/modules/MapStudio/styles/index.scss create mode 100644 frontend/src/modules/MapStudio/types/index.ts create mode 100644 frontend/src/views/zhiNengFenXi/zhiNengPeiTu/index.vue diff --git a/frontend/.env.development b/frontend/.env.development index d29767aa..51fb15b8 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -7,13 +7,13 @@ VITE_APP_TITLE = '水电水利建设项目全过程环境管理信息平台' VITE_APP_PORT = 3000 VITE_APP_BASE_API = '/dev-api' # 本地环境 -# VITE_APP_BASE_URL = 'http://localhost:8093' +VITE_APP_BASE_URL = 'http://localhost:8093' # 测试环境 # VITE_APP_BASE_URL = 'http://172.16.21.142:8093' # 汤伟 -VITE_APP_BASE_URL = 'http://10.84.111.235:8093' +# VITE_APP_BASE_URL = 'http://10.84.111.235:8093' # 李林 -# VITE_APP_BASE_URL = 'http://10.84.111.25:8093' +VITE_APP_BASE_URL = 'http://10.84.111.25:8093' ## 开发环境 附件服务地址 VITE_APP_ATTACHMENT_URL = 'https://211.99.26.225:12125' diff --git a/frontend/docs/地图可视化配置平台(MapStudio)技术实现说明文档.md b/frontend/docs/地图可视化配置平台(MapStudio)技术实现说明文档.md new file mode 100644 index 00000000..474df459 --- /dev/null +++ b/frontend/docs/地图可视化配置平台(MapStudio)技术实现说明文档.md @@ -0,0 +1,343 @@ +# 地图可视化配置平台(MapStudio)技术实现说明文档 + +## 1. 项目概述 + +本项目是一个基于 **Vue3** + **Ant Design Vue 4.0** + **OpenLayers (ol ^10.8.0)** 的独立地图配图功能模块。 **核心定位**:用于流域水电场景的地图配图工具,支持多类型底图切换、基础图层叠加、业务锚点管理(含样式编辑)。 **关键特性**:作为一个高内聚、低耦合的独立模块,支持整体复制迁移至其他 Vue3 项目。 + +## 2. 技术栈与环境 + +- **框架**:Vue 3 (Composition API) +- **UI 组件库**:Ant Design Vue 4.0 (`a-drawer`, `a-tabs`, `a-popover`, `a-modal` 等) +- **地图引擎**:OpenLayers (`ol@^10.8.0`) +- **状态管理**:Vue `reactive` + `provide`/`inject` 模式(`useMapStudioState.ts`) +- **辅助库**:`html2canvas`(配图截图预览,待接入) +- **图标资源**:`/src/assets/legend/*.svg`(Vite glob 批量导入) + +## 3. 页面布局结构 + +整体采用 **“左侧固定工具栏 + 中央地图容器 + 右侧可收抽屉 + 左下悬浮图例”** 的布局方案。 + +| 区域 | 组件/实现 | 交互说明 | +| :--------------------- | :--------------------- | :------------------------------------------------------------------------------------------- | +| **工具栏** | `LeftToolbar.vue` | 垂直排列【放大】、【缩小】、【全屏】、【导入(占位)】、【保存配图】。独立于抽屉,抽屉收起时依然显示。目前按钮均为静态占位,无实际交互逻辑。 | +| **中央地图容器** | `index.vue` 内联 div | 承载 OL Map 实例,直接在 `index.vue` 中通过 `ref` 挂载地图,无独立 `MapContainer.vue` 组件。 | +| **右侧抽屉** | `RightDrawer.vue` | `a-drawer` 组件,支持收起/展开。内部嵌套 `a-tabs`,包含【基础底图】、【图例/标题管理】、【锚点样式】三个 Tab。 | +| **左下悬浮图例** | `Legend.vue` | 动态显示当前可见锚点分类的图标和标签,支持图例标题/子级样式配置,位置可通过配置调整(左上/左下/右上/右下)。 | + +## 4. 功能模块详细说明 + +### 4.1 底图切换 + +- **支持类型**:【影像图】、【矢量图】、【地形图】、【等高线图】。通过替换 `ol/layer/Tile` 的 `source` 实现。 + - 影像图:ArcGIS World Imagery + - 矢量图:内网 GeoServer WMTS(`qgc_qsj_arcgistiles_l13`) + - 地形图:天地图地形 `ter_w` + - 等高线图:Thunderforest Cycle +- **边界图层**:可通过 `a-checkbox` 控制显示/隐藏内网 GeoServer 提供的流域边界线。切换到矢量图时强制隐藏边界。 +- **空间范围限定**:未实现(后续可扩展)。 + +### 4.2 叠加基础图层(显隐控制) + +通过 `useOverlayLayers.ts` 管理,右侧抽屉"基础底图"Tab 中的 Checkbox 勾选控制图层显隐(取消勾选时仅 `setVisible(false)`,不删除图层)。 + +支持以下图层(部分为 WMTS/ArcGIS/GeoServer 服务): + +| 图层 | 类型 | 数据来源 | +| :----------- | :---------- | :------------------------------- | +| 行政标注 | TileLayer | 天地图矢量标注 `cia_w` | +| 区域服务 | ImageLayer | ArcGIS REST `ZH_QUYU` | +| 九段线 | ImageLayer | ArcGIS REST `九段线服务1` | +| 岛屿 | ImageLayer | GeoServer WMS `cite:dy` | +| 流域注记 | ImageLayer | ArcGIS REST `zh_LiuYu_annotation` | +| 流域线 | ImageLayer | ArcGIS REST `zh_LiuYu_line` | +| 轮渡 | ImageLayer | ArcGIS REST `jiaotong_ferry` | +| 铁路 | ImageLayer | ArcGIS REST `jiaotong_railway` | +| 地铁 | ImageLayer | ArcGIS REST `jiaotong_metro` | +| 行政区面状 | ImageLayer | ArcGIS REST `zh_XingZhengQu_Polygon` | +| 行政区 | ImageLayer | ArcGIS REST `ZH_XINGZHEGNQU` | + +### 4.3 业务锚点系统 + +锚点类型(4 类):电站、过鱼设施、鱼类增殖站、低温水减缓设施。页面初始化时即并行加载所有分类的接口数据,勾选子类型后渲染到地图上,同时图例自动显示。 + +#### 4.3.1 数据模型 + +锚点核心接口定义在 `useMapStudioState.ts` 中: + +```typescript +interface AnchorCategory { + key: string; // 分类 key(powerStation / fishPassage / fishFarm / coldWater) + label: string; // 分类名称 + icon: string; // 分类图标 key + children: AnchorItem[]; +} + +interface AnchorItem { + key: string; // 子类型 key(如 large_eng_built) + label: string; // 子类型名称 + icon: string; // 子类型图标 key + checked: boolean; // 是否勾选 +} +``` + +每个锚点 Feature 的 properties 包含: + +- `_iconUrl` - 当前图标 URL +- `_label` - 显示文字 +- `_stnm` - 站点名称 +- `_lng`, `_lat` - 经纬度 +- `_categoryKey`, `_subTypeKey` - 分类/子类型标识 +- `_iconSource` - 图标来源(inherit / custom) +- `_customIconUrl` - 自定义图标 URL +- `_customTypeLabel` - 自定义类型名称(更换图标时可自定义) +- `_ov_*` - 样式覆盖字段(字体、字号、颜色、加粗、图标大小、描边、文字位置/边距、显示文字) + +#### 4.3.2 样式继承与优先级 + +- **全局样式**:存储在 `anchorGlobalStyle` ref 中,修改时全局锚点刷新。 +- **单个覆盖**:存储在 feature properties 的 `_ov_*` 字段中。`null` 表示继承全局。 +- **渲染合并**:在 `createStyleFunction()` 中执行:`getOv(feature, key, globalValue)` - 有覆盖用覆盖值,否则回退到全局。 +- **恢复默认**:将所有 `_ov_*` 置为 `null`。 + +#### 4.3.3 锚点交互 + +- **勾选显示**:右侧抽屉"基础底图"Tab 提供四类锚点的 Checkbox 组,勾选子类型后地图渲染对应锚点,图例自动更新。 +- **选中与编辑**: + - **点击地图锚点**:触发选中事件,右侧抽屉自动切换到"锚点样式"Tab 并展开该锚点的详情编辑区域。 + - **右侧面板编辑**:可编辑当前选中锚点的: + - **经纬度**(支持直接修改并更新地图位置) + - **显示文字**(修改锚点显示的文本) + - **更换图标**(上传自定义图标,支持两个选项) + - **样式覆盖**(每个样式字段独立覆盖全局,支持一键恢复继承) + - **无气泡 popover**:目前不弹出地图气泡。 + +- **更换图标**: + - **选项 A - 应用于此锚点**:仅替换当前选中锚点的图标。可选择"添加到图例",输入父级名称和当前名称,若图例中不存在则自动添加。 + - **选项 B - 应用于所有同类型**:替换当前分类下所有锚点的图标,同时图例中该分类的图标也会更新。 + +- **碰撞检测**:不做碰撞检测与抽稀(`declutterMode: 'none'`)。 + +#### 4.3.4 锚点导入(暂为占位) + +左侧工具栏【导入】按钮为静态占位,无实际交互逻辑。 + +#### 4.3.5 图标资源映射 + +图标 SVG 文件存放于 `/src/assets/legend/`,通过 `ICON_SVG_MAP`(`useMapStudioState.ts`)建立 icon key 到文件名(不含扩展名)的映射,Vite glob 批量导入获取 URL。 + +### 4.4 图例/标题管理 + +右侧抽屉"图例/标题管理"Tab: + +#### 4.4.1 图例配置 + +- **显示控制**:`a-checkbox` 控制图例和标题的显隐 +- **图例属性**:位置(左上/左下/右上/右下)、宽度、高度、左边距/右边距、上边距/下边距 +- **图例标题**:对齐方式(左/中/右)、字体、字号、颜色、加粗 +- **子级样式**:字体、字号、颜色、加粗、图标大小 + +#### 4.4.2 标题配置 + +- 标题内容、X/Y 位置、宽度、高度(通过 `BasicControlOptions[1].checked` 控制显隐) + +### 4.5 锚点全局样式管理 + +右侧抽屉"锚点样式"Tab,在无选中锚点时仅显示"全局样式"配置区: + +- 字体、字号、颜色、加粗 +- 图标大小 +- 文字描边宽度、描边颜色 +- 文字位置(上/下/左/右)、水平边距、垂直边距 +- 是否显示文字标注 +- **恢复默认**:一键重置为 `DEFAULT_ANCHOR_STYLE` + +有选中锚点时,顶部显示"当前选中"区域,包含: + +- 分类标签(含自定义类型名称) +- 站点名称 +- 经纬度编辑 +- 显示文字编辑 +- 当前图标预览 + 更换图标按钮 +- **样式覆盖**区:每个样式字段独立可调,带"恢复为继承"按钮(×) +- **恢复默认**:一键清空所有覆盖 + +### 4.6 自定义图形绘制(未实现) + +预留功能,尚未开发。 + +### 4.7 自定义图片叠加(未实现) + +预留功能,尚未开发。 + +### 4.8 配图方案管理(未实现) + +预留功能,尚未开发。 + +## 5. 目录结构与实际代码 + +``` +src/modules/MapStudio/ +├── index.vue # 主入口组件 +├── api/ +│ └── index.ts # 4 类锚点 API 接口 +├── components/ +│ ├── LeftToolbar.vue # 左侧工具栏 +│ ├── RightDrawer.vue # 右侧抽屉 +│ └── Legend.vue # 左下悬浮图例 +├── composables/ +│ ├── useMapStudioState.ts # 共享状态创建/注入 +│ ├── useMapInit.ts # 地图初始化与底图切换 +│ ├── useOverlayLayers.ts # 基础图层叠加管理 +│ └── useAnchorLayers.ts # 锚点图层管理 +└── styles/ + └── index.scss # 模块样式 +``` + +## 6. 核心数据流 + +- **状态管理**:`useMapStudioState.ts` 通过 `createMapStudioState()` 创建所有响应式状态,`provideMapStudioState()` 注入,子组件通过 `injectMapStudioState()` 获取。 +- **锚点图层**:`useAnchorLayers.ts` 管理 4 类锚点的 API 数据加载、OL 图层创建/显隐、样式函数、地图点击选中、样式覆盖同步。 +- **基础图层**:`useOverlayLayers.ts` 管理基础底图的叠加,通过 `LAYER_MAP` 定义各图层的创建工厂,响应式同步勾选状态。 +- **API 层**:`api/index.ts` 定义 4 类锚点的请求参数和接口函数,使用项目通用 `request` 工具(基于 axios)。 + +## 7. 开发注意事项与难点规避 + +- **性能优化**:锚点数量较多(>500)时,务必开启 VectorSource 的 `renderMode: 'vector'`,并批量添加 Features(`source.addFeatures()`)。 +- **样式刷新**:覆盖字段写入 feature 后,必须重新 `setStyle(styleFn)` 触发重绘。 +- **交互冲突**:左侧工具栏按钮需阻止点击事件冒泡,避免触发地图的 `singleclick` 事件。 +- **底图切换**:切换时将新底图 `insertAt(0)` 插入最底层,避免覆盖上层叠加图层。 +- **边界图层**:切换到底图"矢量图"时强制移除边界图层(因矢量图 WMTS 已包含边界信息)。 +- **图标覆盖**:选项 B 替换图标时,通过 `categoryIconOverrides` 存储覆盖 URL,图例组件会读取该字段更新显示。 + +## 8. 未实现功能列表与推荐优先级 + +### 功能完成度概览 + +| 功能模块 | 状态 | 说明 | +| :--------------------- | :----------- | :------------------------------------------- | +| 底图切换 | ✅ 已完成 | 4 种底图,边界图层显隐控制 | +| 基础图层叠加 | ✅ 已完成 | 11 个子图层,分组 Checkbox 勾选控制 | +| 锚点数据加载与展示 | ✅ 已完成 | 4 类接口初始化加载,勾选渲染,图例自动更新 | +| 锚点全局样式控制 | ✅ 已完成 | 字体/字号/颜色/加粗/图标大小/描边/位置/边距 | +| 锚点选中与编辑 | ✅ 已完成 | 点击选中,右侧面板编辑经纬度/文字/样式 | +| 更换图标(单锚点) | ✅ 已完成 | 上传+添加到图例,自定义类型名称 | +| 更换图标(同分类) | ✅ 已完成 | 替换全部分类图标,更新图例 | +| 图例/标题配置 | ✅ 已完成 | 位置/尺寸/对齐/字体/颜色/加粗 | +| 配图方案管理 | ❌ 未实现 | 保存/加载/历史配图 | +| 工具栏按钮功能 | ❌ 未实现 | 放大/缩小/全屏/导入/保存按钮均为静态占位 | +| 自定义图形绘制 | ❌ 未实现 | 线条/箭头/矩形/圆圈 | +| 自定义图片叠加 | ❌ 未实现 | PNG 上传叠加,调整位置/大小 | +| 空间范围限定 | ❌ 未实现 | 选择区域并裁切地图 | +| 锚点拖拽 | ❌ 未实现 | Translate 交互拖动锚点位置 | +| 选中锚点 popover 气泡 | ❌ 未实现 | 点击锚点在地图弹出小气泡 | +| 锚点导入功能 | ❌ 未实现 | Excel/CSV 批量导入 | + +### 推荐开发优先级 + +**P0 - 核心功能(建议优先完成)** + +1. **配图方案管理** - 这是配图工具的核心闭环功能。左侧【保存】按钮应弹出命名输入框,保存当前所有状态(底图类型、图层显隐、锚点数据与样式覆盖、图例配置、标题配置)为JSON配图方案,并支持历史记录查看、加载、删除。 + - 涉及文件:`LeftToolbar.vue`(接入保存/导入按钮逻辑)、`RightDrawer.vue`(新增加载方案界面)、新建 `useSerializer.ts`(序列化/反序列化) + - 依赖:需要后端存储接口或本地 localStorage + +2. **工具栏按钮功能** - 放大/缩小/全屏/导入/保存按钮目前均为静态。放大缩小应绑定 `map.getView().zoom`,全屏应调用 `FullScreen` API,导入按钮应弹出功能弹框。 + - 涉及文件:`LeftToolbar.vue`(接入 mapInstance) + +**P1 - 重要功能(配图方案之后)** + +3. **自定义图形绘制** - 利用 `ol/interaction/Draw` 实现线条、矩形、圆圈,以及箭头(起点终点+终点三角头)。图形存入独立 `VectorSource`,支持选中删除。保存配图时需包含图形坐标数据。 + - 涉及文件:新建 `useDrawTools.ts`、`RightDrawer.vue`(新增绘制Tab或面板) + +4. **自定义图片叠加** - 上传 PNG 图片以绝对定位 div 覆盖在地图上,支持鼠标拖拽移动位置。保存配图时记录 CSS 位置数据。 + - 涉及文件:新建 `CustomImageOverlay.vue`、`RightDrawer.vue`(新增图片管理面板) + +**P2 - 增强功能(基础功能稳定后)** + +5. **空间范围限定** - 下拉选择水电基地/流域/省份,地图 fit 至对应边界,并可调用 `clippingPolygons` 实现区域外变灰的裁切效果。 + - 涉及文件:`useMapInit.ts`(扩展)、`RightDrawer.vue`(新增下拉选择) + +6. **选中锚点气泡 popover** - 点击锚点时在地图弹出轻量 `a-popover` 气泡,显示站点名称和"删除"按钮。 + - 涉及文件:`useAnchorLayers.ts`(点击事件扩展) + +7. **锚点拖拽** - 启用 `ol/interaction/Translate` 允许拖动锚点改变地理位置,拖拽结束自动更新选中面板的经纬度。 + - 涉及文件:`useAnchorLayers.ts`(添加 Translate 交互) + +8. **锚点导入** - 左侧【导入】按钮弹出 a-modal 弹框,支持 Excel/CSV 批量导入经纬度数据。 + - 涉及文件:`LeftToolbar.vue`(接入导入弹框)、新建导入逻辑 composable + +**P3 - 工程优化(可逐步完善)** + +9. **迁移为 Pinia 状态管理** - 当前使用 `provide`/`inject`,迁移到 Pinia 可更好地支持 Vue Devtools 调试和模块隔离。 + - 涉及文件:新建 `store/mapStudioStore.ts`,调整 `useMapStudioState.ts` + +10. **目录结构调整** - 将类型定义迁移到 `types/index.ts`,新建 `MapContainer.vue` 独立组件,对外暴露 `index.ts`(app.use 安装)。 + +## 9. 与现有底层地图的集成方案(接入指南) + +### 9.1 核心原则(禁止叠放) + +在集成至已有地图项目时,**严禁**使用 `z-index` 将本模块地图叠放于底层地图之上。 + +**原因**: + +1. **事件冲突**:鼠标滚轮缩放、点击拖拽等事件会同时触发两层地图,导致画面闪烁、缩放倍数混乱。 +2. **性能浪费**:被遮盖的底层地图仍在持续进行瓦片请求和渲染,消耗 CPU/GPU 与网络资源。 + +**正确策略**:必须将底层地图**隐藏/销毁**后,再加载本模块地图。 + +### 9.2 推荐集成方案(二选一) + +#### 方案 A:隐藏底层容器(推荐,保留底层状态) + +适用于底层地图涉及复杂的业务交互状态(如选中的点位、高亮区域),退出模块后需无缝恢复。 + +- **进入模块时**:设置底层地图容器的 CSS 样式为 `display: none` 或 `visibility: hidden`。 +- **模块内部**:在底层地图容器同级位置,新建一个绝对定位的 `div` 作为本模块地图的挂载点,初始化 `ol.Map`。 +- **退出模块时**: + 1. 调用本模块地图实例的 `map.dispose()` 销毁地图。 + 2. 移除新建的挂载 `div` 元素。 + 3. 恢复底层地图容器的显示样式。 + +#### 方案 B:销毁底层地图(更彻底) + +适用于底层地图仅作展示、无复杂临时状态的场景。 + +- **进入模块时**:直接获取底层地图容器,销毁原有 `ol.Map` 实例(`targetElement.innerHTML = ''`),并复用该容器作为本模块地图的挂载点。 +- **退出模块时**:销毁本模块地图实例,根据业务需求决定是否重新初始化底层地图。 + +### 9.3 解耦约定(确保模块可迁移) + +由于本模块设计为**独立可迁移**,模块内部代码**严禁**直接操作父级项目的 DOM 元素或地图实例。 + +**正确的通信方式**:本模块 `MapStudio/index.vue` 通过暴露生命周期事件,由父级项目自行控制底层地图的显隐与销毁。 + +```vue + + + + +``` diff --git a/frontend/package.json b/frontend/package.json index 72fb6471..cb07e5e5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,6 +34,7 @@ "esri-leaflet": "^3.0.19", "exceljs": "^4.4.0", "file-saver": "^2.0.5", + "html2canvas": "^1.4.1", "js-base64": "^3.7.5", "js-cookie": "^3.0.1", "jsencrypt": "^3.3.2", @@ -57,6 +58,7 @@ "vue-ant-modal-enhance": "^1.2.2", "vue-i18n": "^9.1.9", "vue-router": "^4.1.6", + "vue3-draggable-resizable": "^1.6.5", "vuedraggable": "^2.24.3", "wujie": "^1.0.24", "wujie-vue3": "^1.0.24", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 42ba5b75..3eddab55 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -80,6 +80,9 @@ importers: file-saver: specifier: ^2.0.5 version: 2.0.5 + html2canvas: + specifier: ^1.4.1 + version: 1.4.1 js-base64: specifier: ^3.7.5 version: 3.7.8 @@ -149,6 +152,9 @@ importers: vue-router: specifier: ^4.1.6 version: 4.6.4(vue@3.5.33(typescript@6.0.3)) + vue3-draggable-resizable: + specifier: ^1.6.5 + version: 1.6.5 vuedraggable: specifier: ^2.24.3 version: 2.24.3 @@ -2720,6 +2726,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -3016,6 +3026,9 @@ packages: css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} @@ -3772,6 +3785,10 @@ packages: html-void-elements@2.0.1: resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + htmlparser2@3.10.1: resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} @@ -5462,6 +5479,9 @@ packages: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -5714,6 +5734,9 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + uuid@13.0.2: resolution: {integrity: sha512-vzi9uRZ926x4XV73S/4qQaTwPXM2JBj6/6lI/byHH1jOpCzb0zDbfytgA9LcN/hzb2l7WQSQnxITOVx5un/wGw==} hasBin: true @@ -5858,6 +5881,9 @@ packages: peerDependencies: vue: ^3.0.0 + vue3-draggable-resizable@1.6.5: + resolution: {integrity: sha512-31142E31fGNnq3HKqvmFLSsqIbhck7TyGuQWhUKrDw6DOcGAuRx4ddRjaxvT6fe7dgeKH53qAh+i0ZlWtPLl2g==} + vue@3.5.33: resolution: {integrity: sha512-1AgChhx5w3ALgT4oK3acm2Es/7jyZhWSVUfs3rOBlGQC0rjEDkS7G4lWlJJGGNQD+BV3reCwbQrOe1mPNwKHBQ==} peerDependencies: @@ -10304,6 +10330,8 @@ snapshots: balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: {} + base64-js@1.5.1: {} base@0.11.2: @@ -10654,6 +10682,10 @@ snapshots: dependencies: tiny-invariant: 1.3.3 + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + css-select@4.3.0: dependencies: boolbase: 1.0.0 @@ -11558,6 +11590,11 @@ snapshots: html-void-elements@2.0.1: {} + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + htmlparser2@3.10.1: dependencies: domelementtype: 1.3.1 @@ -13279,6 +13316,10 @@ snapshots: text-extensions@1.9.0: {} + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + text-table@0.2.0: {} thenify-all@1.6.0: @@ -13533,6 +13574,10 @@ snapshots: util-deprecate@1.0.2: {} + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + uuid@13.0.2: {} uuid@8.3.2: {} @@ -13695,6 +13740,8 @@ snapshots: is-plain-object: 3.0.1 vue: 3.5.33(typescript@6.0.3) + vue3-draggable-resizable@1.6.5: {} + vue@3.5.33(typescript@6.0.3): dependencies: '@vue/compiler-dom': 3.5.33 diff --git a/frontend/src/assets/images/map-denggaoxian.png b/frontend/src/assets/images/map-denggaoxian.png new file mode 100644 index 0000000000000000000000000000000000000000..9f04743594d72b962962b33f634edc3ec17a6ceb GIT binary patch literal 46772 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 literal 0 HcmV?d00001 diff --git a/frontend/src/layout/components/AppMain.vue b/frontend/src/layout/components/AppMain.vue index ec8921f5..c0f0bb70 100644 --- a/frontend/src/layout/components/AppMain.vue +++ b/frontend/src/layout/components/AppMain.vue @@ -11,11 +11,16 @@ const modelStore = useModelStore(); const tagsViewStore = useTagsViewStore(); const router = useRoute(); const routeKey = computed(() => router.path + Math.random()); + +// 智能配图页面隐藏底层 GisView(避免地图叠放冲突) +const isZhiNengPeiTu = computed(() => { + return router.path === '/zhiNengFenXi/zhiNengPeiTu/index'; +});