沿程配置代码更新,倾斜摄影代码新增

This commit is contained in:
lilin 2026-07-15 13:51:18 +08:00
parent 2a27394b08
commit 16bdfe387d
15 changed files with 824 additions and 12 deletions

View File

@ -241,6 +241,14 @@ public class SwaggerConfig {
.build(); .build();
} }
@Bean
public GroupedOpenApi groupSysOqmgApi() {
return GroupedOpenApi.builder()
.group("5.2 倾斜摄影管理")
.packagesToScan("com.yfd.platform.qgc_sys.obliqueImage.controller")
.build();
}
@Bean @Bean
public GroupedOpenApi groupLygkApi() { public GroupedOpenApi groupLygkApi() {
return GroupedOpenApi.builder() return GroupedOpenApi.builder()

View File

@ -1,6 +1,7 @@
package com.yfd.platform.qgc_base.domain; package com.yfd.platform.qgc_base.domain;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -28,6 +29,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 数据时间 * 数据时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date tm; private Date tm;
/** /**
@ -77,6 +79,7 @@ public class SdEngInfoBH implements Serializable {
* 数据接入时间 * 数据接入时间
*/ */
@TableField("DTIN_TM") @TableField("DTIN_TM")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date dtinTm; private Date dtinTm;
/** /**
@ -182,29 +185,34 @@ public class SdEngInfoBH implements Serializable {
* 规划设计日期 * 规划设计日期
*/ */
@TableField("STDSDT") @TableField("STDSDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date stdsdt; private Date stdsdt;
/** /**
* 计划开工日期 * 计划开工日期
*/ */
@TableField("PSTSTDT") @TableField("PSTSTDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date pststdt; private Date pststdt;
/** /**
* 计划完工日期 * 计划完工日期
*/ */
@TableField("PESSTDT") @TableField("PESSTDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date pesstdt; private Date pesstdt;
/** /**
* 开工日期 * 开工日期
*/ */
@TableField("SWDT") @TableField("SWDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date swdt; private Date swdt;
/** /**
* 建成日期 * 建成日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@TableField("JCDT") @TableField("JCDT")
private Date jcdt; private Date jcdt;
@ -212,12 +220,14 @@ public class SdEngInfoBH implements Serializable {
* 退役/拆除日期 * 退役/拆除日期
*/ */
@TableField("WDDT") @TableField("WDDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date wddt; private Date wddt;
/** /**
* 截流日期 * 截流日期
*/ */
@TableField("JLDT") @TableField("JLDT")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date jldt; private Date jldt;
/** /**
@ -404,6 +414,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 编制时间 * 编制时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date edttm; private Date edttm;
/** /**
@ -856,16 +867,19 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 蓄水验收日期 * 蓄水验收日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date sswdt; private Date sswdt;
/** /**
* 一期下闸蓄水日期 * 一期下闸蓄水日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date piodt; private Date piodt;
/** /**
* 二期下闸蓄水日期 * 二期下闸蓄水日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date aiodt; private Date aiodt;
/** /**
@ -936,16 +950,19 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 水土保持竣工验收时间 * 水土保持竣工验收时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date styphpsp; private Date styphpsp;
/** /**
* 现行环境保护竣工验收时间 * 现行环境保护竣工验收时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date xsjdhbys; private Date xsjdhbys;
/** /**
* 申报水土保持方案日期 * 申报水土保持方案日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date sbfascrq; private Date sbfascrq;
/** /**
@ -957,21 +974,25 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 环境影响后评价时间 * 环境影响后评价时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date hpsprq; private Date hpsprq;
/** /**
* 竣工环境保护验收时间 * 竣工环境保护验收时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date jghbysrq; private Date jghbysrq;
/** /**
* 截流阶段环境保护验收时间 * 截流阶段环境保护验收时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date jljdsbys; private Date jljdsbys;
/** /**
* 竣工水土保持方案验收时间 * 竣工水土保持方案验收时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date jgjdsbys; private Date jgjdsbys;
/** /**
@ -1218,6 +1239,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 植被覆盖调查时间 * 植被覆盖调查时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date vlsrTm; private Date vlsrTm;
/** /**
@ -1228,6 +1250,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 创建时间 * 创建时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date recordTime; private Date recordTime;
/** /**
@ -1238,6 +1261,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 更新时间 * 更新时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date modifyTime; private Date modifyTime;
/** /**
@ -1253,6 +1277,7 @@ public class SdEngInfoBH implements Serializable {
/** /**
* 删除时间 * 删除时间
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date deleteTime; private Date deleteTime;
/** /**

View File

@ -10,6 +10,7 @@ import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_base.service.ISdHbrvDicService; import com.yfd.platform.qgc_base.service.ISdHbrvDicService;
import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService; import com.yfd.platform.qgc_env.wt.service.SdWtMonitorService;
import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; import com.yfd.platform.qgc_lygk.along.domain.MsAlongB;
import com.yfd.platform.qgc_lygk.along.domain.PowerDto;
import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService; import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService;
import com.yfd.platform.qgc_sys.mapcfg.service.IMapmoduleBService; import com.yfd.platform.qgc_sys.mapcfg.service.IMapmoduleBService;
import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DataSourceRequestUtil;
@ -90,4 +91,12 @@ public class MsAlongBController {
public ResponseResult getWbsbList(@RequestParam String stcd) { public ResponseResult getWbsbList(@RequestParam String stcd) {
return ResponseResult.successData(msAlongBService.getWbsbList(stcd)); return ResponseResult.successData(msAlongBService.getWbsbList(stcd));
} }
@PostMapping("/noAuth/GetKendoPage")
@Operation(summary = "查询水电基地流域字典分页列表")
public ResponseResult getKendoPage(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<PowerDto> result = msAlongBService.getKendoPage(dataSourceRequest);
return ResponseResult.successData(result);
}
} }

View File

@ -84,4 +84,12 @@ public class MsAlongB implements Serializable {
/** 排序 */ /** 排序 */
@TableField("ORDER_INDEX") @TableField("ORDER_INDEX")
private Integer orderIndex; private Integer orderIndex;
/** 水电基地编码 */
@TableField("BASEID")
private String baseId;
/** 水电基地名称 */
@TableField("BASENAME")
private String baseName;
} }

View File

@ -82,4 +82,10 @@ public class MsAlongDetB implements Serializable {
/** 删除时间 */ /** 删除时间 */
@TableField("DELETE_TIME") @TableField("DELETE_TIME")
private Date deleteTime; private Date deleteTime;
/** 出库入库标识 */
@TableField("IO_DIRECTION")
private String ioDirection;
} }

View File

@ -14,5 +14,6 @@ public class MsAlongDetTreeDto {
private String stnm; // 仅用于显示不存表 private String stnm; // 仅用于显示不存表
private String rstcd; // 仅用于显示不存表 private String rstcd; // 仅用于显示不存表
private String parentId; // 前端用不存表 private String parentId; // 前端用不存表
private String ioDirection; // 前端用不存表
private List<MsAlongDetTreeDto> children; // 子节点 private List<MsAlongDetTreeDto> children; // 子节点
} }

View File

@ -1,26 +1,191 @@
package com.yfd.platform.qgc_lygk.along.domain; package com.yfd.platform.qgc_lygk.along.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
@TableName("V_MS_STBPRP_T")
public class PowerDto { public class PowerDto {
// 水电水利工程编码
private String stcd;
// 水电水利工程名称 // ==================== 基础编码与名称 ====================
private String stnm; @TableField("STCD")
private String stcd; // 水电水利工程编码
// 水电水利工程名称 @TableField("STNM")
private String sttp; private String stnm; // 水电水利工程名称中文
// 主表实体 @TableField("ENNM")
private String sttpCode; private String ennm; // 水电水利工程名称英文/简称
// 主表实体 // ==================== 测站类型STTP ====================
private String sttpName; @TableField("STTP")
private String sttp; // 测站类型代码 WEEQ_5
// 主表实体 @TableField("STTP_CODE")
private String rstcd; private String sttpCode; // 测站类型编码 STTP 相同
@TableField("STTP_NAME")
private String sttpName; // 测站类型名称 水生生态调查断面基荷发电
@TableField("STTP_FULL_PATH")
private String sttpFullPath; // 测站类型完整路径 ENV,ENVM,WE,
@TableField("STTP_TREE_LEVEL")
private Integer sttpTreeLevel; // 测站类型树层级 3
// ==================== 关联上级 ====================
@TableField("RSTCD")
private String rstcd; // 关联上级测站编码
// ==================== 流域信息BASE ====================
@TableField("BASE_ID")
private String baseId; // 流域ID 02
@TableField("BASE_NAME")
private String baseName; // 流域名称 雅砻江干流
// ==================== 流域水系HBRVCD ====================
@TableField("HBRVCD")
private String hbrvcd; // 流域水系编码
@TableField("HBRVCD_NAME")
private String hbrvcdName; // 流域水系名称
// ==================== 河流/流域RVCD ====================
@TableField("RVCD")
private String rvcd; // 河流/流域编码 SJLY176
@TableField("RVCD_NAME")
private String rvcdName; // 河流/流域名称 雅砻江干流
// ==================== 行政区划ADDVCD ====================
@TableField("ADDVCD")
private String addvcd; // 行政区划编码
@TableField("ADDVNM")
private String addvnm; // 行政区划名称
// ==================== 河流水系HYCD ====================
@TableField("HYCD")
private String hycd; // 河流水系编码
@TableField("HYNM")
private String hynm; // 河流水系名称
@TableField("TOP_HYCD")
private String topHycd; // 顶级河流水系编码
@TableField("TOP_HYNM")
private String topHynm; // 顶级河流水系名称
// ==================== 地理坐标 ====================
@TableField("LGTD")
private BigDecimal lgtd; // 经度 100.780252
@TableField("LTTD")
private BigDecimal lttd; // 纬度 30.26872
// ==================== 站点属性 ====================
@TableField("STLC")
private String stlc; // 站点位置描述
@TableField("USFL")
private Integer usfl; // 是否启用1启用 0禁用
@TableField("DTIN")
private String dtin; // 数据类型代码
@TableField("DTIN_TM")
private Date dtinTm; // 数据类型更新时间
@TableField("BLDSTT_CODE")
private String bldsttCode; // 建设状态代码
// ==================== 描述与附件 ====================
@TableField("INTRODUCE")
private String introduce; // 介绍/描述
@TableField("LOGO")
private String logo; // LOGO 图片
@TableField("INFFILE")
private String inffile; // 附件文件
// ==================== 投资与建设 ====================
@TableField("INV")
private String inv; // 投资方/投资信息
@TableField("INVINMN")
private String invinmn; // 投资单位/法人
@TableField("STDSDT")
private Date stdsdt; // 开工日期
@TableField("PSTSTDT")
private Date pststdt; // 计划竣工日期
@TableField("PESSTDT")
private Date pesstdt; // 实际竣工日期
// ==================== 水文参数 ====================
@TableField("SWDT")
private String swdt; // 水文数据类型
@TableField("JCDT")
private String jcdt; // 监测数据类型
@TableField("WDDT")
private String wddt; // 温度数据类型
@TableField("ORDER_INDEX")
private Integer orderIndex; // 排序序号
@TableField("REMARK")
private String remark; // 备注
@TableField("VLSR")
private String vlsr; // 流速
@TableField("VLSR_TM")
private Date vlsrTm; // 流速时间
// ==================== 数据源与运行状态 ====================
@TableField("DTIN_TYPE")
private String dtinType; // 数据类型分类
@TableField("MWAY")
private String mway; // 测量方式
@TableField("RUN_STATE")
private String runState; // 运行状态 1-运行中
// ==================== 审计字段通用 ====================
@TableField("RECORD_USER")
private String recordUser; // 创建人
@TableField("RECORD_TIME")
private Date recordTime; // 创建时间
@TableField("MODIFY_USER")
private String modifyUser; // 修改人
@TableField("MODIFY_TIME")
private Date modifyTime; // 修改时间
@TableField("IS_DELETED")
private Integer isDeleted; // 软删除0未删 1已删
@TableField("DELETE_USER")
private String deleteUser; // 删除人
@TableField("DELETE_TIME")
private Date deleteTime; // 删除时间
// ==================== 数据来源 ====================
@TableField("DATA_SOURCE")
private String dataSource; // 数据来源 SD_WE_B_H
} }

View File

@ -26,6 +26,8 @@ public interface IMsAlongBService extends IService<MsAlongB> {
List<PowerDto> getWbsbList(String stcd); List<PowerDto> getWbsbList(String stcd);
DataSourceResult<PowerDto> getKendoPage(DataSourceRequest dataSourceRequest);
// /** // /**
// * 保存或更新沿程配置 // * 保存或更新沿程配置
// * // *

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.common.DataSourceLoadOptionsBase; import com.yfd.platform.common.DataSourceLoadOptionsBase;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.qgc_base.domain.SdRvcdDic; import com.yfd.platform.qgc_base.domain.SdRvcdDic;
import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper; import com.yfd.platform.qgc_base.mapper.SdRvcdDicMapper;
import com.yfd.platform.qgc_lygk.along.domain.MsAlongB; import com.yfd.platform.qgc_lygk.along.domain.MsAlongB;
@ -17,6 +18,9 @@ import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService;
import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.CodeToNameMetadataBo;
import com.yfd.platform.utils.DataSourceRequestUtil; import com.yfd.platform.utils.DataSourceRequestUtil;
import com.yfd.platform.utils.DictCodeToNameConverter; import com.yfd.platform.utils.DictCodeToNameConverter;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceRequest.FilterDescriptor;
import com.yfd.platform.common.DataSourceRequest.SortDescriptor;
import com.yfd.platform.utils.QgcQueryWrapperUtil; import com.yfd.platform.utils.QgcQueryWrapperUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -37,6 +41,9 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
@Resource @Resource
private SdRvcdDicMapper sdRvcdDicMapper; private SdRvcdDicMapper sdRvcdDicMapper;
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Override @Override
public DataSourceResult<MsAlongB> getKendoList(DataSourceRequest dataSourceRequest) { public DataSourceResult<MsAlongB> getKendoList(DataSourceRequest dataSourceRequest) {
// 1. 构建查询条件 // 1. 构建查询条件
@ -101,6 +108,136 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
return powerDtos; return powerDtos;
} }
@Override
public DataSourceResult<PowerDto> getKendoPage(DataSourceRequest dataSourceRequest) {
// 1. 处理分页参数
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
// 2. 构建基础 SQL
StringBuilder sql = new StringBuilder("SELECT * FROM V_MS_STBPRP_T WHERE 1=1");
Map<String, Object> paramMap = new HashMap<>();
// 3. 解析过滤条件利用你的 FilterDescriptor
if (dataSourceRequest != null && dataSourceRequest.getFilter() != null) {
String filterSql = parseFilter(dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql);
}
}
// 4. 解析排序利用你的 SortDescriptor
if (dataSourceRequest != null && CollUtil.isNotEmpty(dataSourceRequest.getSort())) {
List<String> orderList = new ArrayList<>();
for (SortDescriptor sort : dataSourceRequest.getSort()) {
String field = sort.getField();
if (StrUtil.isBlank(field) || !isSafeField(field)) continue;
String direction = "asc".equalsIgnoreCase(sort.getDir()) ? "ASC" : "DESC";
orderList.add(field + " " + direction);
}
if (!orderList.isEmpty()) {
sql.append(" ORDER BY ").append(String.join(", ", orderList));
}
}
// 5. 执行分页查询
Page<?> page = loadOptions == null ? null :
QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
List<PowerDto> list = microservicDynamicSQLMapper.pageAllListWithResultType(
page, sql.toString(), paramMap, PowerDto.class
);
// 6. 封装返回结果
DataSourceResult<PowerDto> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
/**
* 递归解析 FilterDescriptor完美适配你的内部类结构
*/
/**
* 递归解析 FilterDescriptor
*/
/**
* 递归解析 FilterDescriptorOracle 兼容版
*/
private String parseFilter(FilterDescriptor filter, Map<String, Object> paramMap, int[] paramIndex) {
if (filter == null) return "";
// 如果有嵌套条件logic + filters
List<FilterDescriptor> childFilters = filter.getFilters();
if (CollUtil.isNotEmpty(childFilters)) {
List<String> childConditions = new ArrayList<>();
for (FilterDescriptor child : childFilters) {
String childSql = parseFilter(child, paramMap, paramIndex);
if (StrUtil.isNotBlank(childSql)) {
childConditions.add(childSql);
}
}
if (childConditions.isEmpty()) return "";
String logic = StrUtil.isNotBlank(filter.getLogic()) ? filter.getLogic() : "and";
String connector = "and".equalsIgnoreCase(logic) ? " AND " : " OR ";
return "(" + String.join(connector, childConditions) + ")";
}
// 叶子节点单个条件
String field = filter.getField();
Object value = filter.getValue();
String operator = filter.getOperator();
if (StrUtil.isBlank(field) || value == null) return "";
if (!isSafeField(field)) return "";
String paramKey = "p" + paramIndex[0]++;
paramMap.put(paramKey, value);
// 根据操作符生成 SQLOracle 使用 || 拼接
if ("eq".equalsIgnoreCase(operator)) {
return field + " = #{map." + paramKey + "}";
} else if ("neq".equalsIgnoreCase(operator)) {
return field + " != #{map." + paramKey + "}";
} else if ("contains".equalsIgnoreCase(operator)) {
// Oracle || 替代 CONCAT
return field + " LIKE '%' || #{map." + paramKey + "} || '%'";
} else if ("startswith".equalsIgnoreCase(operator)) {
return field + " LIKE #{map." + paramKey + "} || '%'";
} else if ("endswith".equalsIgnoreCase(operator)) {
return field + " LIKE '%' || #{map." + paramKey + "}";
} else if ("gt".equalsIgnoreCase(operator)) {
return field + " > #{map." + paramKey + "}";
} else if ("gte".equalsIgnoreCase(operator)) {
return field + " >= #{map." + paramKey + "}";
} else if ("lt".equalsIgnoreCase(operator)) {
return field + " < #{map." + paramKey + "}";
} else if ("lte".equalsIgnoreCase(operator)) {
return field + " <= #{map." + paramKey + "}";
} else if ("isnull".equalsIgnoreCase(operator)) {
paramMap.remove(paramKey);
return field + " IS NULL";
} else if ("isnotnull".equalsIgnoreCase(operator)) {
paramMap.remove(paramKey);
return field + " IS NOT NULL";
}
return "";
}
/**
* 安全字段白名单根据你的视图字段调整
*/
private boolean isSafeField(String field) {
if (StrUtil.isBlank(field)) return false;
// 支持视图中的常用字段
Set<String> validFields = new HashSet<>(Arrays.asList(
"STCD", "STNM", "ENNM", "BASE_ID", "BASE_NAME", "RVCD", "RVCD_NAME",
"ADDVCD", "ADDVNM", "HYCD", "HYNM", "STTP", "STTP_CODE", "STTP_NAME",
"LGTD", "LTTD", "ORDER_INDEX", "RUN_STATE"
));
return validFields.contains(field.toUpperCase());
}
// @Override // @Override
// public boolean saveOrUpdate(MsAlongB msAlongB) { // public boolean saveOrUpdate(MsAlongB msAlongB) {
// super.saveOrUpdate(msAlongB); // super.saveOrUpdate(msAlongB);

View File

@ -149,6 +149,7 @@ public class MsAlongDetBServiceImpl extends ServiceImpl<MsAlongDetBMapper, MsAlo
entity.setAlongId(node.getAlongId()); entity.setAlongId(node.getAlongId());
entity.setStcd(node.getStcd()); entity.setStcd(node.getStcd());
entity.setSttp(node.getSttp()); entity.setSttp(node.getSttp());
entity.setIoDirection(node.getIoDirection());
entity.setRstcd(node.getRstcd()); entity.setRstcd(node.getRstcd());
entity.setRecordUser(SecurityUtils.getUserId()); // 创建人 entity.setRecordUser(SecurityUtils.getUserId()); // 创建人
//entity.setRecordUser(SecurityUtils.getCurrentUsername()); // 创建人 //entity.setRecordUser(SecurityUtils.getCurrentUsername()); // 创建人

View File

@ -0,0 +1,61 @@
package com.yfd.platform.qgc_sys.obliqueImage.controller;
import cn.hutool.core.util.StrUtil;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_sys.obliqueImage.domain.MsObliqueImageB;
import com.yfd.platform.qgc_sys.obliqueImage.service.IMsObliqueImageBService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
/**
* 倾斜摄影管理控制器
*
* @author migration
*/
@RestController
@RequestMapping("/sys/oblique")
@Tag(name = "倾斜摄影管理控制器")
public class MsObliqueImageBController {
@Resource
private IMsObliqueImageBService msObliqueImageBService;
/**
* 条件过滤数据列表
*/
@Operation(summary = "条件过滤数据列表")
@PostMapping("/GetKendoListCust")
public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<MsObliqueImageB> result = msObliqueImageBService.getKendoList(dataSourceRequest);
return ResponseResult.successData(result);
}
/**
* 新增或修改
*/
@Operation(summary = "新增或修改")
@PostMapping("/addOrUpdate")
public ResponseResult addOrUpdate(@RequestBody MsObliqueImageB msObliqueImageB) {
msObliqueImageBService.addOrUpdate(msObliqueImageB);
return ResponseResult.success();
}
/**
* 删除
*/
@Operation(summary = "删除")
@GetMapping("/delete")
public ResponseResult delete(@RequestParam("id") String id) {
if (StrUtil.isBlank(id)) {
throw new BizException("ID不能为空");
}
msObliqueImageBService.delete(id);
return ResponseResult.success();
}
}

View File

@ -0,0 +1,151 @@
package com.yfd.platform.qgc_sys.obliqueImage.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 倾斜摄影管理实体类
*
* @author migration
*/
@Data
@TableName("MS_OBL_PHOTO")
@Schema(description = "倾斜摄影管理实体类")
public class MsObliqueImageB implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_UUID)
private String id;
/** 站码 */
@TableField("STCD")
private String stcd;
/** 站名 */
@TableField("STNM")
private String stnm;
/** 所属站类ID */
@TableField("STTP")
private String sttp;
/** 所属站类编码 */
@TableField("STTP_CODE")
private String sttpCode;
/** 所属站类名称 */
@TableField("STTP_NAME")
private String sttpName;
/** 所属站类全路径(非数据库字段) */
@TableField(exist = false)
private String sttpFullPath;
/** 所属站类层级(非数据库字段) */
@TableField(exist = false)
private Integer sttpTreeLevel;
/** 所属水电基地编码 */
@TableField("BASE_ID")
private String baseId;
/** 所属水电基地名称 */
@TableField("BASE_NAME")
private String baseName;
/** 所属流域编码 */
@TableField("HBRVCD")
private String hbrvcd;
/** 所属流域名称 */
@TableField("HBRVCD_NAME")
private String hbrvcdName;
/** 所属河段编码非数据库字段与HBRVCD同源 */
@TableField(exist = false)
private String rvcd;
/** 所属河段名称非数据库字段与HBRVCD_NAME同源 */
@TableField(exist = false)
private String rvcdName;
/** 在线地址 */
@TableField("URL")
private String url;
/** 所属电站编码 */
@TableField("RSTCD")
private String rstcd;
/** 所属电站名称 */
@TableField("ENNM")
private String ennm;
/** 电站经度(非数据库字段) */
@TableField("LGTD")
private Double lgtd;
/** 电站纬度(非数据库字段) */
@TableField("LTTD")
private Double lttd;
/** 电站坐标JSON串 */
@TableField("LOCATION")
private String location;
/** 模型精度 */
@TableField("ACCURACY")
private Integer accuracy;
/** 边界范围 */
@TableField("BOUNDARY")
private String boundary;
/** 自定义高程 */
@TableField("HEIGHT")
private Integer height;
/** 备注 */
@TableField("COMMENTS")
private String comments;
/** 创建人 */
@TableField("RECORD_USER")
private String recordUser;
/** 创建人名称(非数据库字段) */
@TableField(exist = false)
private String recordUserName;
/** 创建时间(非数据库字段) */
@TableField(exist = false)
private Date recordTime;
/** 更新人 */
@TableField("MODIFY_USER")
private String modifyUser;
/** 更新时间 */
@TableField("MODIFY_TIME")
private Date modifyTime;
/** 是否已删除0=未删除 1=已删除 */
@TableField("IS_DELETED")
private Integer isDeleted;
/** 删除人 */
@TableField("DELETE_USER")
private String deleteUser;
/** 删除时间 */
@TableField("DELETE_TIME")
private Date deleteTime;
}

View File

@ -0,0 +1,24 @@
package com.yfd.platform.qgc_sys.obliqueImage.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yfd.platform.qgc_sys.obliqueImage.domain.MsObliqueImageB;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* 倾斜摄影管理 Mapper 接口
*
* @author migration
*/
@Mapper
public interface MsObliqueImageBMapper extends BaseMapper<MsObliqueImageB> {
@Delete("DELETE FROM MS_OBL_PHOTO WHERE ID = #{id}")
void deleteById(@Param("id") String id);
@Select("SELECT ID FROM SD_STTP_B WHERE STTP_CODE = 'OSGB'")
String getSttp();
}

View File

@ -0,0 +1,36 @@
package com.yfd.platform.qgc_sys.obliqueImage.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.qgc_sys.obliqueImage.domain.MsObliqueImageB;
/**
* 倾斜摄影管理 Service 接口
*
* @author migration
*/
public interface IMsObliqueImageBService extends IService<MsObliqueImageB> {
/**
* 条件过滤数据列表Kendo 数据源
*
* @param dataSourceRequest 数据源请求
* @return 数据源结果
*/
DataSourceResult<MsObliqueImageB> getKendoList(DataSourceRequest dataSourceRequest);
/**
* 新增或修改
*
* @param msObliqueImageB 倾斜摄影实体
*/
void addOrUpdate(MsObliqueImageB msObliqueImageB);
/**
* 删除
*
* @param id 主键ID
*/
void delete(String id);
}

View File

@ -0,0 +1,178 @@
package com.yfd.platform.qgc_sys.obliqueImage.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.exception.BizException;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
import com.yfd.platform.qgc_base.service.ISdEngInfoBHService;
import com.yfd.platform.qgc_sys.obliqueImage.domain.MsObliqueImageB;
import com.yfd.platform.qgc_sys.obliqueImage.mapper.MsObliqueImageBMapper;
import com.yfd.platform.qgc_sys.obliqueImage.service.IMsObliqueImageBService;
import com.yfd.platform.utils.DataSourceRequestUtil;
import com.yfd.platform.utils.QgcQueryWrapperUtil;
import com.yfd.platform.utils.QueryWrapperUtil;
import com.yfd.platform.utils.SecurityUtils;
import jakarta.annotation.Resource;
import lombok.Data;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Date;
import java.util.List;
/**
* 倾斜摄影管理 Service 实现类
*
* @author migration
*/
@Service
public class MsObliqueImageBServiceImpl extends ServiceImpl<MsObliqueImageBMapper, MsObliqueImageB> implements IMsObliqueImageBService {
@Resource
private MsObliqueImageBMapper msObliqueImageBMapper;
@Resource
private ISdEngInfoBHService engInfoBHService;
@Override
public DataSourceResult<MsObliqueImageB> getKendoList(DataSourceRequest dataSourceRequest) {
// 1. 构建查询条件
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
QueryWrapper<MsObliqueImageB> wrapper = DataSourceRequestUtil.buildQueryWrapper(
dataSourceRequest, MsObliqueImageB.class);
// 固定条件STTP_CODE = 'OSGB' AND IS_DELETED = 0 AND RSTCD IS NOT NULL
wrapper.eq("STTP_CODE", "OSGB");
wrapper.eq("IS_DELETED", 0);
wrapper.isNotNull("RSTCD");
// 旧系统 rvcd 字段映射到 HBRVCD 前端传参保持 rvcd 不变
if (loadOptions != null) {
String rvcd = QueryWrapperUtil.getFilterFieldValue(loadOptions, "rvcd");
if (StrUtil.isNotBlank(rvcd)) {
wrapper.eq("HBRVCD", rvcd);
}
}
// 默认按修改时间倒序
wrapper.orderByDesc("MODIFY_TIME");
// 2. 分页参数处理
Page<MsObliqueImageB> page = loadOptions == null ? null
: (Page<MsObliqueImageB>) QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
// 3. 执行查询
Page<MsObliqueImageB> resultPage;
if (page != null) {
resultPage = this.page(page, wrapper);
} else {
List<MsObliqueImageB> list = this.list(wrapper);
resultPage = new Page<>();
resultPage.setRecords(list);
resultPage.setTotal(list.size());
}
// 4. 构建结果
DataSourceResult<MsObliqueImageB> dataSourceResult = new DataSourceResult<>();
dataSourceResult.setData(resultPage.getRecords());
dataSourceResult.setTotal(resultPage.getTotal());
return dataSourceResult;
}
@Override
public void addOrUpdate(MsObliqueImageB msObliqueImageB) {
if (StrUtil.isNotBlank(msObliqueImageB.getRstcd())){
LambdaQueryWrapper<SdEngInfoBH> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StrUtil.isNotBlank(msObliqueImageB.getRstcd()), SdEngInfoBH::getStcd, msObliqueImageB.getRstcd())
.eq(SdEngInfoBH::getIsDeleted, 0)
.select(SdEngInfoBH::getLgtd, SdEngInfoBH::getLttd, SdEngInfoBH::getBaseId, SdEngInfoBH::getBaseName)
.orderByAsc(SdEngInfoBH::getBaseId, SdEngInfoBH::getOrderIndex);
SdEngInfoBH sdEngInfoBH = engInfoBHService.getOne(wrapper);
if (sdEngInfoBH.getLgtd() != null){
msObliqueImageB.setLgtd(sdEngInfoBH.getLgtd());
}
if (sdEngInfoBH.getLttd() != null){
msObliqueImageB.setLttd(sdEngInfoBH.getLttd());
}
if (StrUtil.isNotBlank(sdEngInfoBH.getBaseName())){
msObliqueImageB.setBaseName(sdEngInfoBH.getBaseName());
}
if (StrUtil.isNotBlank(sdEngInfoBH.getBaseId())){
msObliqueImageB.setBaseId(sdEngInfoBH.getBaseId());
}
}
if (StrUtil.isBlank(msObliqueImageB.getId())) {
addMsObliqueImageB(msObliqueImageB);
} else {
updateMsObliqueImageB(msObliqueImageB);
}
}
@Override
public void delete(String id) {
msObliqueImageBMapper.deleteById(id);
}
private void addMsObliqueImageB(MsObliqueImageB msObliqueImageB) {
// 查询新增的倾斜摄影是否已存在
String rstcd = msObliqueImageB.getRstcd();
if (StrUtil.isBlank(rstcd)) {
throw new BizException("电站不能为空");
}
String id = "OSGB_" + rstcd;
MsObliqueImageB old = msObliqueImageBMapper.selectById(id);
if (old != null) {
throw new BizException("该电站已存在倾斜摄影");
}
msObliqueImageB.setSttpCode("OSGB");
msObliqueImageB.setSttpName("倾斜摄影");
if (StrUtil.isBlank(msObliqueImageB.getRvcd())) {
msObliqueImageB.setRvcd(msObliqueImageB.getHbrvcd());
}
if (StrUtil.isBlank(msObliqueImageB.getRvcdName())) {
msObliqueImageB.setRvcdName(msObliqueImageB.getHbrvcdName());
}
msObliqueImageB.setStcd("OSGB_" + msObliqueImageB.getRstcd());
msObliqueImageB.setId("OSGB_" + msObliqueImageB.getRstcd());
msObliqueImageB.setSttpFullPath("OSGB,");
msObliqueImageB.setSttpTreeLevel(1);
String sttp = msObliqueImageBMapper.getSttp();
if (StrUtil.isBlank(sttp)) {
throw new BizException("倾斜摄影对应的sttp在SD_STTP_B中找不到");
}
msObliqueImageB.setSttp(sttp);
// 设置通用字段
String userId = currentUserIdOrSystem();
msObliqueImageB.setRecordUser(userId);
Date now = new java.util.Date();
msObliqueImageB.setModifyTime(now);
msObliqueImageB.setModifyUser(userId);
msObliqueImageB.setIsDeleted(0);
msObliqueImageBMapper.insert(msObliqueImageB);
}
private void updateMsObliqueImageB(MsObliqueImageB msObliqueImageB) {
String userId = currentUserIdOrSystem();
msObliqueImageB.setModifyUser(userId);
msObliqueImageB.setModifyTime(new java.util.Date());
this.updateById(msObliqueImageB);
}
private String currentUserIdOrSystem() {
try {
return SecurityUtils.getUserId();
} catch (Exception ex) {
return "system";
}
}
}