From 7650d20e1333ed821d11cedf7ee38da4b81ecc57 Mon Sep 17 00:00:00 2001
From: tangwei
Date: Tue, 21 Jul 2026 14:52:45 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=80=BE=E6=96=9C?=
=?UTF-8?q?=E6=91=84=E5=BD=B1=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../platform/qgc_base/domain/SdOpinfoBH.java | 18 +-
.../service/impl/SdVdinfoBServiceImpl.java | 5 +
.../controller/MsObliqueImageBController.java | 25 +-
.../obliqueImage/domain/MsObliqueImageB.java | 152 ---------
.../mapper/MsObliqueImageBMapper.java | 16 +-
.../service/IMsObliqueImageBService.java | 21 +-
.../impl/MsObliqueImageBServiceImpl.java | 302 +++++++++++-------
7 files changed, 238 insertions(+), 301 deletions(-)
delete mode 100644 backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/domain/MsObliqueImageB.java
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 dff3466c..b71e9983 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,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;
@@ -63,6 +65,9 @@ public class SdOpinfoBH implements Serializable {
private String hbrvcd;
+ @TableField(exist = false)
+ private String hbrvcdName;
+
private String rvcd;
@TableField(exist = false)
@@ -195,9 +200,6 @@ public class SdOpinfoBH implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date vlsrTm;
- @TableField("RECORD_USER")
- private String recordUser;
-
@TableField("RECORD_TIME")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date recordTime;
@@ -226,4 +228,14 @@ public class SdOpinfoBH implements Serializable {
/** 所属站类层级(非数据库字段) */
@TableField(exist = false)
private Integer sttpTreeLevel;
+
+ /** 创建人 */
+ @TableField("RECORD_USER")
+ @UserIdField
+ private String recordUser;
+
+ /** 创建人名称(非数据库字段) */
+ @TableField(exist = false)
+ @UserNameField
+ private String recordUserName;
}
diff --git a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java
index 6d431473..e5599d34 100644
--- a/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java
+++ b/backend/src/main/java/com/yfd/platform/qgc_base/service/impl/SdVdinfoBServiceImpl.java
@@ -1,5 +1,6 @@
package com.yfd.platform.qgc_base.service.impl;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yfd.platform.common.DataSourceRequest;
@@ -64,6 +65,10 @@ public class SdVdinfoBServiceImpl extends ServiceImpl基于 SD_OPINFO_B_H 表,管理 STTP = 'OSGB' 的倾斜摄影数据
*
* @author migration
*/
@@ -25,37 +27,40 @@ public class MsObliqueImageBController {
@Resource
private IMsObliqueImageBService msObliqueImageBService;
+ @Resource
+ private UserNameFillHelper userNameFillHelper;
+
/**
* 条件过滤数据列表
*/
@Operation(summary = "条件过滤数据列表")
@PostMapping("/GetKendoListCust")
public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
- DataSourceResult result = msObliqueImageBService.getKendoList(dataSourceRequest);
+ DataSourceResult result = msObliqueImageBService.getKendoList(dataSourceRequest);
+ userNameFillHelper.fillUserNames(result.getData());
return ResponseResult.successData(result);
}
-
/**
* 新增或修改
*/
@Operation(summary = "新增或修改")
@PostMapping("/addOrUpdate")
- public ResponseResult addOrUpdate(@RequestBody MsObliqueImageB msObliqueImageB) {
- msObliqueImageBService.addOrUpdate(msObliqueImageB);
+ public ResponseResult addOrUpdate(@RequestBody SdOpinfoBH entity) {
+ msObliqueImageBService.addOrUpdate(entity);
return ResponseResult.success();
}
/**
- * 删除
+ * 逻辑删除(id 即 stcd)
*/
@Operation(summary = "删除")
@GetMapping("/delete")
- public ResponseResult delete(@RequestParam("id") String id) {
- if (StrUtil.isBlank(id)) {
+ public ResponseResult delete(@RequestParam("stcd") String stcd) {
+ if (StrUtil.isBlank(stcd)) {
throw new BizException("ID不能为空");
}
- msObliqueImageBService.delete(id);
+ msObliqueImageBService.delete(stcd);
return ResponseResult.success();
}
-}
\ No newline at end of file
+}
diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/domain/MsObliqueImageB.java b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/domain/MsObliqueImageB.java
deleted file mode 100644
index 9c545c74..00000000
--- a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/domain/MsObliqueImageB.java
+++ /dev/null
@@ -1,152 +0,0 @@
-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.math.BigDecimal;
-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 BigDecimal lgtd;
-
- /** 电站纬度(非数据库字段) */
- @TableField("LTTD")
- private BigDecimal 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;
-}
\ No newline at end of file
diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/mapper/MsObliqueImageBMapper.java b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/mapper/MsObliqueImageBMapper.java
index 7e527915..8629be31 100644
--- a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/mapper/MsObliqueImageBMapper.java
+++ b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/mapper/MsObliqueImageBMapper.java
@@ -1,11 +1,8 @@
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 com.yfd.platform.qgc_base.domain.SdOpinfoBH;
import org.apache.ibatis.annotations.Mapper;
-
-import org.apache.ibatis.annotations.Delete;
-import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
@@ -14,11 +11,8 @@ import org.apache.ibatis.annotations.Select;
* @author migration
*/
@Mapper
-public interface MsObliqueImageBMapper extends BaseMapper {
+public interface MsObliqueImageBMapper extends BaseMapper {
- @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();
-}
\ No newline at end of file
+ @Select("SELECT STTP_CODE FROM SD_STTP_B WHERE STTP_CODE = 'OSGB' AND NVL(IS_DELETED, 0) = 0")
+ String getOpgbSttpId();
+}
diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/IMsObliqueImageBService.java b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/IMsObliqueImageBService.java
index 9f95d550..90490722 100644
--- a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/IMsObliqueImageBService.java
+++ b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/IMsObliqueImageBService.java
@@ -3,34 +3,27 @@ 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;
+import com.yfd.platform.qgc_base.domain.SdOpinfoBH;
/**
* 倾斜摄影管理 Service 接口
*
* @author migration
*/
-public interface IMsObliqueImageBService extends IService {
+public interface IMsObliqueImageBService extends IService {
/**
* 条件过滤数据列表(Kendo 数据源)
- *
- * @param dataSourceRequest 数据源请求
- * @return 数据源结果
*/
- DataSourceResult getKendoList(DataSourceRequest dataSourceRequest);
+ DataSourceResult getKendoList(DataSourceRequest dataSourceRequest);
/**
* 新增或修改
- *
- * @param msObliqueImageB 倾斜摄影实体
*/
- void addOrUpdate(MsObliqueImageB msObliqueImageB);
+ void addOrUpdate(SdOpinfoBH entity);
/**
- * 删除
- *
- * @param id 主键ID
+ * 逻辑删除
*/
- void delete(String id);
-}
\ No newline at end of file
+ void delete(String stcd);
+}
diff --git a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/impl/MsObliqueImageBServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/impl/MsObliqueImageBServiceImpl.java
index a5686be2..a57bc793 100644
--- a/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/impl/MsObliqueImageBServiceImpl.java
+++ b/backend/src/main/java/com/yfd/platform/qgc_sys/obliqueImage/service/impl/MsObliqueImageBServiceImpl.java
@@ -1,38 +1,37 @@
package com.yfd.platform.qgc_sys.obliqueImage.service.impl;
+import cn.hutool.core.collection.CollUtil;
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.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.common.exception.BizException;
import com.yfd.platform.qgc_base.domain.SdEngInfoBH;
+import com.yfd.platform.qgc_base.domain.SdOpinfoBH;
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 org.springframework.transaction.annotation.Transactional;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* 倾斜摄影管理 Service 实现类
+ * 基于 SD_OPINFO_B_H 表,STTP = 'OSGB' 的数据
*
* @author migration
*/
@Service
-public class MsObliqueImageBServiceImpl extends ServiceImpl implements IMsObliqueImageBService {
+public class MsObliqueImageBServiceImpl extends ServiceImpl implements IMsObliqueImageBService {
@Resource
private MsObliqueImageBMapper msObliqueImageBMapper;
@@ -40,132 +39,213 @@ public class MsObliqueImageBServiceImpl extends ServiceImpl getKendoList(DataSourceRequest dataSourceRequest) {
- // 1. 构建查询条件
+ public DataSourceResult getKendoList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
- QueryWrapper wrapper = DataSourceRequestUtil.buildQueryWrapper(
- dataSourceRequest, MsObliqueImageB.class);
+ String osgbSttpId = msObliqueImageBMapper.getOpgbSttpId();
+ if (StrUtil.isBlank(osgbSttpId)) {
+ DataSourceResult empty = new DataSourceResult<>();
+ empty.setData(Collections.emptyList());
+ empty.setTotal(0L);
+ return empty;
+ }
- // 固定条件: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");
+ StringBuilder sql = new StringBuilder();
+ sql.append("SELECT a.STCD, a.STNM, a.STTP, a.LGTD, a.LTTD, a.ELEV, a.STLC, ")
+ .append("a.USFL, a.DTIN, a.ORDER_INDEX, a.RSTCD, a.BASE_ID, ")
+ .append("a.HBRVCD, a.RVCD, a.ADDVCD, a.URL, a.HEIGHT, a.BOUNDARY, ")
+ .append("a.LOCATION, a.ACCURACY, a.REMARK, a.RECORD_USER,a.RECORD_TIME, ")
+ .append("a.MODIFY_USER, a.MODIFY_TIME, a.IS_DELETED, ")
+ .append("eng.ENNM, eng.LGTD AS engLgtd, eng.LTTD AS engLttd, ")
+ .append("eng.BASE_ID AS engBaseId, eng.BASE_NAME, ")
+ .append("vsrd.RVNM AS hbrvcdName ")
+ .append("FROM SD_OPINFO_B_H a ")
+ .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = a.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
+ .append("LEFT JOIN SD_HBRV_DIC hbrv ON a.HBRVCD = hbrv.HBRVCD AND NVL(hbrv.IS_DELETED, 0) = 0 ")
+ .append("LEFT JOIN V_SD_RVCD_DIC_TREE vsrd ON eng.REACHCD = vsrd.RVCD AND NVL(hbrv.IS_DELETED, 0) = 0 ")
+ .append("WHERE a.IS_DELETED = 0 ")
+ .append("AND a.STTP = '").append(osgbSttpId).append("' ");
- // 旧系统 rvcd 字段映射到 HBRVCD 列(前端传参保持 rvcd 不变)
- if (loadOptions != null) {
- String rvcd = QueryWrapperUtil.getFilterFieldValue(loadOptions, "rvcd");
- if (StrUtil.isNotBlank(rvcd)) {
- wrapper.eq("HBRVCD", rvcd);
- }
+ Map paramMap = new HashMap<>();
+ String filterSql = buildFilterSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
+ if (StrUtil.isNotBlank(filterSql)) {
+ sql.append(" AND ").append(filterSql);
}
// 默认按修改时间倒序
- wrapper.orderByDesc("MODIFY_TIME");
+ sql.append(" ORDER BY a.MODIFY_TIME DESC NULLS LAST");
- // 2. 分页参数处理
- Page page = loadOptions == null ? null
- : (Page) QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
+ Page> page = loadOptions == null ? null
+ : QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
+ List list = microservicDynamicSQLMapper.pageAllListWithResultType(
+ page, sql.toString(), paramMap, SdOpinfoBH.class
+ );
- // 3. 执行查询
- Page resultPage;
- if (page != null) {
- resultPage = this.page(page, wrapper);
- } else {
- List list = this.list(wrapper);
- resultPage = new Page<>();
- resultPage.setRecords(list);
- resultPage.setTotal(list.size());
+ DataSourceResult result = new DataSourceResult<>();
+ result.setData(list);
+ result.setTotal(page == null ? list.size() : page.getTotal());
+ return result;
+ }
+
+ /**
+ * 递归构建过滤 SQL
+ */
+ private String buildFilterSql(DataSourceRequest.FilterDescriptor filter,
+ Map paramMap, int[] indexHolder) {
+ if (filter == null) return "";
+
+ List childFilters = filter.getFilters();
+ if (CollUtil.isNotEmpty(childFilters)) {
+ List childConditions = new ArrayList<>();
+ for (DataSourceRequest.FilterDescriptor child : childFilters) {
+ String childSql = buildFilterSql(child, paramMap, indexHolder);
+ 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) + ")";
}
- // 4. 构建结果
- DataSourceResult dataSourceResult = new DataSourceResult<>();
- dataSourceResult.setData(resultPage.getRecords());
- dataSourceResult.setTotal(resultPage.getTotal());
- return dataSourceResult;
+ String field = filter.getField();
+ Object value = filter.getValue();
+ String operator = filter.getOperator();
+
+ if (StrUtil.isBlank(field)) return "";
+
+ String column = mapToColumn(field);
+ if (StrUtil.isBlank(column)) return "";
+
+ if ("isnull".equalsIgnoreCase(operator)) return column + " IS NULL";
+ if ("isnotnull".equalsIgnoreCase(operator)) return column + " IS NOT NULL";
+ if (value == null) return "";
+
+ String paramKey = "p" + indexHolder[0]++;
+ paramMap.put(paramKey, value);
+
+ if ("eq".equalsIgnoreCase(operator)) {
+ return column + " = #{map." + paramKey + "}";
+ } else if ("neq".equalsIgnoreCase(operator)) {
+ return column + " != #{map." + paramKey + "}";
+ } else if ("contains".equalsIgnoreCase(operator)) {
+ return column + " LIKE '%' || #{map." + paramKey + "} || '%'";
+ } else if ("startswith".equalsIgnoreCase(operator)) {
+ return column + " LIKE #{map." + paramKey + "} || '%'";
+ } else if ("endswith".equalsIgnoreCase(operator)) {
+ return column + " LIKE '%' || #{map." + paramKey + "}";
+ } else if ("gt".equalsIgnoreCase(operator)) {
+ return column + " > #{map." + paramKey + "}";
+ } else if ("gte".equalsIgnoreCase(operator)) {
+ return column + " >= #{map." + paramKey + "}";
+ } else if ("lt".equalsIgnoreCase(operator)) {
+ return column + " < #{map." + paramKey + "}";
+ } else if ("lte".equalsIgnoreCase(operator)) {
+ return column + " <= #{map." + paramKey + "}";
+ } else if ("in".equalsIgnoreCase(operator)) {
+ return column + " IN (#{map." + paramKey + "})";
+ }
+ return "";
+ }
+
+ /**
+ * 前端字段名 -> SQL 列名映射
+ */
+ private String mapToColumn(String field) {
+ if (StrUtil.isBlank(field)) return null;
+ return switch (field) {
+ case "stcd" -> "a.STCD";
+ case "stnm" -> "a.STNM";
+ case "rstcd" -> "a.RSTCD";
+ case "ennm" -> "eng.ENNM";
+ case "baseId" -> "a.BASE_ID";
+ case "baseName" -> "eng.BASE_NAME";
+ // 旧系统 rvcd 字段映射到 HBRVCD 列(保持兼容)
+ case "rvcd" -> "a.HBRVCD";
+ case "hbrvcd" -> "vsrd.RVCD";
+ case "url" -> "a.URL";
+ case "remark" -> "a.REMARK";
+ case "modifyTime" -> "a.MODIFY_TIME";
+ case "usfl" -> "a.USFL";
+ default -> null;
+ };
}
@Override
- public void addOrUpdate(MsObliqueImageB msObliqueImageB) {
- if (StrUtil.isNotBlank(msObliqueImageB.getRstcd())){
-
- LambdaQueryWrapper 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)) {
+ @Transactional(rollbackFor = Exception.class)
+ public void addOrUpdate(SdOpinfoBH entity) {
+ if (StrUtil.isBlank(entity.getRstcd())) {
throw new BizException("电站不能为空");
}
- String id = "OSGB_" + rstcd;
- MsObliqueImageB old = msObliqueImageBMapper.selectById(id);
- if (old != null) {
- throw new BizException("该电站已存在倾斜摄影");
+
+ // 查询电站信息补充经纬度和基地信息
+ SdEngInfoBH engInfo = engInfoBHService.lambdaQuery()
+ .eq(SdEngInfoBH::getStcd, entity.getRstcd())
+ .eq(SdEngInfoBH::getIsDeleted, 0)
+ .select(SdEngInfoBH::getLgtd, SdEngInfoBH::getLttd,
+ SdEngInfoBH::getBaseId, SdEngInfoBH::getBaseName)
+ .one();
+ if (engInfo == null) {
+ throw new BizException("电站不存在:" + entity.getRstcd());
}
- msObliqueImageB.setSttpCode("OSGB");
- msObliqueImageB.setSttpName("倾斜摄影");
- if (StrUtil.isBlank(msObliqueImageB.getRvcd())) {
- msObliqueImageB.setRvcd(msObliqueImageB.getHbrvcd());
+ if (engInfo.getLgtd() != null) {
+ entity.setLgtd(engInfo.getLgtd());
}
- if (StrUtil.isBlank(msObliqueImageB.getRvcdName())) {
- msObliqueImageB.setRvcdName(msObliqueImageB.getHbrvcdName());
+ if (engInfo.getLttd() != null) {
+ entity.setLttd(engInfo.getLttd());
}
- msObliqueImageB.setStcd("OSGB_" + msObliqueImageB.getRstcd());
- msObliqueImageB.setId("OSGB_" + msObliqueImageB.getRstcd());
- msObliqueImageB.setSttpFullPath("OSGB,");
- msObliqueImageB.setSttpTreeLevel(1);
- String sttp = msObliqueImageBMapper.getSttp();
- if (StrUtil.isBlank(sttp)) {
+ if (StrUtil.isNotBlank(engInfo.getBaseId())) {
+ entity.setBaseId(engInfo.getBaseId());
+ }
+
+ // 获取 OSGB 对应的 STTP ID
+ String osgbSttpId = msObliqueImageBMapper.getOpgbSttpId();
+ if (StrUtil.isBlank(osgbSttpId)) {
throw new BizException("倾斜摄影对应的sttp在SD_STTP_B中找不到");
}
- msObliqueImageB.setSttp(sttp);
- // 设置通用字段
+ entity.setSttp(osgbSttpId);
+
+ // 生成 ID 和 STCD
+ String stcd = "OSGB_" + entity.getRstcd();
+ entity.setStcd(stcd);
+
+ long count = this.count(new LambdaQueryWrapper().eq(SdOpinfoBH::getStcd, stcd));
+
String userId = currentUserIdOrSystem();
- msObliqueImageB.setRecordUser(userId);
- Date now = new java.util.Date();
- msObliqueImageB.setModifyTime(now);
- msObliqueImageB.setModifyUser(userId);
- msObliqueImageB.setIsDeleted(0);
- msObliqueImageBMapper.insert(msObliqueImageB);
+ Date now = new Date();
+
+ if (count==0) {
+ entity.setRecordUser(userId);
+ entity.setRecordTime(now);
+ entity.setModifyUser(userId);
+ entity.setModifyTime(now);
+ entity.setIsDeleted(0);
+ this.save(entity);
+ } else {
+ entity.setModifyUser(userId);
+ entity.setModifyTime(now);
+ this.updateById(entity);
+ }
}
- private void updateMsObliqueImageB(MsObliqueImageB msObliqueImageB) {
- String userId = currentUserIdOrSystem();
- msObliqueImageB.setModifyUser(userId);
- msObliqueImageB.setModifyTime(new java.util.Date());
- this.updateById(msObliqueImageB);
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(String stcd) {
+ msObliqueImageBMapper.deleteById(stcd);
+ // id 即 stcd
+// LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>();
+// wrapper.eq(SdOpinfoBH::getStcd, stcd);
+// wrapper.set(SdOpinfoBH::getIsDeleted, 1);
+// wrapper.set(SdOpinfoBH::getDeleteUser, SecurityUtils.getCurrentUsername());
+// wrapper.set(SdOpinfoBH::getDeleteTime, new Date());
+// if (!this.update(wrapper)) {
+// throw new BizException("删除失败:" + stcd);
+// }
}
private String currentUserIdOrSystem() {
@@ -175,4 +255,4 @@ public class MsObliqueImageBServiceImpl extends ServiceImpl