Compare commits

..

No commits in common. "main" and "wxk-main" have entirely different histories.

50 changed files with 274 additions and 4193 deletions

View File

@ -92,10 +92,7 @@ public class GroupHelper {
for(Map<String, Object> item : data) { for(Map<String, Object> item : data) {
Object groupKey = this.getKey(item, groupInfo); Object groupKey = this.getKey(item, groupInfo);
if (groupKey == null) { Object groupIndexKey = groupKey != null ? groupKey : null;
continue;
}
Object groupIndexKey = groupKey;
Object tempCount = item.get("count_" + groupInfo.getSelector()); Object tempCount = item.get("count_" + groupInfo.getSelector());
if (tempCount == null) { if (tempCount == null) {
tempCount = item.get("COUNT_" + groupInfo.getSelector().toUpperCase()); tempCount = item.get("COUNT_" + groupInfo.getSelector().toUpperCase());

View File

@ -31,8 +31,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
this.strictInsertFill(metaObject, "updatedAt", Date.class, now); this.strictInsertFill(metaObject, "updatedAt", Date.class, now);
// 更新时间 // 更新时间
this.strictInsertFill(metaObject, "modifyTime", Date.class, now); this.strictInsertFill(metaObject, "modifyTime", Date.class, now);
// 更新时间
this.strictInsertFill(metaObject, "recordTime", Date.class, now);
try { try {
String userId = SecurityUtils.getUserId(); String userId = SecurityUtils.getUserId();
// 创建人 // 创建人

View File

@ -28,9 +28,7 @@ public class MybitsPlusConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() { public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页拦截器指定数据库类型为 Oracle // 添加分页拦截器指定数据库类型为 Oracle
// interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE)); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
// 添加分页拦截器指定数据库类型为 Oracle
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));
return interceptor; return interceptor;
} }

View File

@ -65,7 +65,6 @@ public class SecurityConfig {
.requestMatchers("/eq/**").permitAll() .requestMatchers("/eq/**").permitAll()
.requestMatchers("/env/**").permitAll() .requestMatchers("/env/**").permitAll()
.requestMatchers("/warn/**").permitAll() .requestMatchers("/warn/**").permitAll()
.requestMatchers("/threedroamb/**").permitAll()
.requestMatchers("/overview/**").permitAll() .requestMatchers("/overview/**").permitAll()
.requestMatchers("/wt/**").permitAll() .requestMatchers("/wt/**").permitAll()
.requestMatchers("/fb/**").permitAll() .requestMatchers("/fb/**").permitAll()

View File

@ -249,15 +249,6 @@ public class SwaggerConfig {
.build(); .build();
} }
@Bean
public GroupedOpenApi groupThreedRoamApi() {
return GroupedOpenApi.builder()
.group("5.3 三维漫游")
.packagesToScan("com.yfd.platform.qgc_sys.threedRoam.controller")
.build();
}
@Bean @Bean
public GroupedOpenApi groupLygkApi() { public GroupedOpenApi groupLygkApi() {
return GroupedOpenApi.builder() return GroupedOpenApi.builder()

View File

@ -13,8 +13,6 @@ public class EngRsvrcscdBVo {
private String rvcdName; private String rvcdName;
private String bldsttCcode;
private String stcd; private String stcd;
private String ennm; private String ennm;

View File

@ -170,7 +170,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId) wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
.eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd) .eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd)
.eq(StrUtil.isNotBlank(reachcd), SdEngInfoBH::getReachcd, reachcd) .eq(StrUtil.isNotBlank(reachcd), SdEngInfoBH::getReachcd, reachcd)
.eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getReachcd, rvcd) .eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getRvcd, rvcd)
.in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getReachcd, rvcds) .in(rvcds != null && !rvcds.isEmpty(), SdEngInfoBH::getReachcd, rvcds)
.in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds) .in(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds)
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm) .like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
@ -1237,9 +1237,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"eng.AVQ10 AS avq10, " + "eng.AVQ10 AS avq10, " +
"eng.AVQ11 AS avq11, " + "eng.AVQ11 AS avq11, " +
"eng.AVQ12 AS avq12, " + "eng.AVQ12 AS avq12, " +
"rbh.OBMXQ AS obmxq, " + "CAST(NULL AS NUMBER) AS obmxq, " +
"rbh.OBMNQ AS obmnq, " + "CAST(NULL AS NUMBER) AS obmnq, " +
"rbh.HMXQ AS hmxq, " + "CAST(NULL AS NUMBER) AS hmxq, " +
"eng.DSNFQFRQ AS dsnfqfrq, " + "eng.DSNFQFRQ AS dsnfqfrq, " +
"eng.DSRCIN AS dsrcin, " + "eng.DSRCIN AS dsrcin, " +
"eng.CKFQFQR AS ckfqfqr, " + "eng.CKFQFQR AS ckfqfqr, " +
@ -1249,21 +1249,21 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"eng.CKW3 AS ckw3, " + "eng.CKW3 AS ckw3, " +
"eng.AVSD AS avsd, " + "eng.AVSD AS avsd, " +
"eng.AVS AS avs, " + "eng.AVS AS avs, " +
"rbh.OBMXS AS obmxs, " + "CAST(NULL AS NUMBER) AS obmxs, " +
"rbh.CKFLZ AS ckflz, " + "CAST(NULL AS NUMBER) AS ckflz, " +
"rbh.DSFLZ AS dsflz, " + "CAST(NULL AS NUMBER) AS dsflz, " +
"rbh.NORMZ AS normz, " + "CAST(NULL AS NUMBER) AS normz, " +
"rbh.UZFC AS uzfc, " + "CAST(NULL AS NUMBER) AS uzfc, " +
"eng.FSLTDZ AS fsltdz, " + "eng.FSLTDZ AS fsltdz, " +
"eng.YDOWNZ AS ydownz, " + "eng.YDOWNZ AS ydownz, " +
"rbh.DDZ AS ddz, " + "CAST(NULL AS NUMBER) AS ddz, " +
"eng.NRZAR AS nrzar, " + "eng.NRZAR AS nrzar, " +
"eng.BCKLEN AS bcklen, " + "eng.BCKLEN AS bcklen, " +
"rbh.TTCP AS ttcp, " + "rbh.TTCP AS ttcp, " +
"rbh.NMZCP AS nmzcp, " + "CAST(NULL AS NUMBER) AS nmzcp, " +
"b.VAL AS fldcpStr, " + "CAST(NULL AS VARCHAR2(255)) AS fldcpStr, " +
"rbh.ACTCP AS actcp, " + "CAST(NULL AS NUMBER) AS actcp, " +
"rbh.DDCP AS ddcp, " + "CAST(NULL AS NUMBER) AS ddcp, " +
"eng.CPSC AS cpsc, " + "eng.CPSC AS cpsc, " +
"eng.PRSC AS prsc, " + "eng.PRSC AS prsc, " +
"eng.RGCP AS rgcp, " + "eng.RGCP AS rgcp, " +
@ -1279,26 +1279,26 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
" WHEN '9' THEN '其他' " + " WHEN '9' THEN '其他' " +
" ELSE NULL END AS rgcpName, " + " ELSE NULL END AS rgcpName, " +
"eng.DSMXQ AS dsflzmxq, " + "eng.DSMXQ AS dsflzmxq, " +
"rbh.DSFLZXYZ AS dsflzxyz, " + "CAST(NULL AS NUMBER) AS dsflzxyz, " +
"eng.CHMXQ AS ckflzmxq, " + "eng.CHMXQ AS ckflzmxq, " +
"rbh.CKFLZXYZ AS ckflzxyz, " + "CAST(NULL AS NUMBER) AS ckflzxyz, " +
"rbh.KSQADJQ AS ksqadjq, " + "CAST(NULL AS NUMBER) AS ksqadjq, " +
"rbh.KSQXYZ AS ksqxyz, " + "CAST(NULL AS NUMBER) AS ksqxyz, " +
"eng.GEMAXRQ AS gemaxrq, " + "eng.GEMAXRQ AS gemaxrq, " +
"rbh.MXGEQXYZ AS mxgeqxyz, " + "CAST(NULL AS NUMBER) AS mxgeqxyz, " +
"eng.YRGEB AS ttpwr, " + "eng.YRGEB AS ttpwr, " +
"pwr.GNCNT AS gncnt, " + "CAST(NULL AS NUMBER) AS gncnt, " +
"eng.GNTP AS gntp, " + "eng.GNTP AS gntp, " +
"pwr.GRNTPWR AS grntpwr, " + "CAST(NULL AS NUMBER) AS grntpwr, " +
"pwr.YRGE AS yrge, " + "pwr.YRGE AS yrge, " +
"pwr.USHR AS ushr, " + "CAST(NULL AS NUMBER) AS ushr, " +
"pwr.K AS k, " + "CAST(NULL AS NUMBER) AS k, " +
"eng.DMTP AS dmtp, " + "eng.DMTP AS dmtp, " +
"eng.DMCREL AS dmcrel, " + "eng.DMCREL AS dmcrel, " +
"eng.MXDMHG AS mxdmhg, " + "eng.MXDMHG AS mxdmhg, " +
"eng.DMLEN AS dmlen, " + "eng.DMLEN AS dmlen, " +
"pwr.SGYGE AS sgyge, " + "CAST(NULL AS NUMBER) AS sgyge, " +
"UNYGE AS unyge, " + "CAST(NULL AS NUMBER) AS unyge, " +
"eng.GAP AS gap, " + "eng.GAP AS gap, " +
"eng.DVTP AS dvtp, " + "eng.DVTP AS dvtp, " +
"CASE eng.DVTP " + "CASE eng.DVTP " +
@ -1327,33 +1327,6 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"LEFT JOIN SD_HYCD_DIC topHy ON topHy.HYCD = eng.TOP_HYCD AND NVL(topHy.IS_DELETED, 0) = 0 AND NVL(topHy.ENABLED, 1) = 1 " + "LEFT JOIN SD_HYCD_DIC topHy ON topHy.HYCD = eng.TOP_HYCD AND NVL(topHy.IS_DELETED, 0) = 0 AND NVL(topHy.ENABLED, 1) = 1 " +
"LEFT JOIN SD_PWR_B_H pwr ON pwr.STCD = eng.STCD AND NVL(pwr.IS_DELETED, 0) = 0 " + "LEFT JOIN SD_PWR_B_H pwr ON pwr.STCD = eng.STCD AND NVL(pwr.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_RSVRFCCH_B_H rbh ON rbh.STCD = eng.STCD " + "LEFT JOIN SD_RSVRFCCH_B_H rbh ON rbh.STCD = eng.STCD " +
"LEFT JOIN ( SELECT STCD\n" +
" , MAX(CASE WHEN RN = 1 THEN TM END) AS TM\n" +
" , MAX(CASE WHEN RN = 1 THEN VAL END) AS VAL\n" +
" , MAX(VLSR) AS VLSR\n" +
" , MAX(VLSR_TM) AS VLSR_TM\n" +
" , LISTAGG('起始时间' || TO_CHAR(TM, 'YYYY-MM-DD') || '' || VAL || '' ||\n" +
" CASE WHEN VLSR IS NOT NULL THEN '来源' || VLSR ELSE '' END ||\n" +
" CASE WHEN VLSR_TM IS NOT NULL THEN ',来源时间' || TO_CHAR(VLSR_TM, 'YYYY-MM-DD') ELSE '' END,\n" +
" CHR(10)) WITHIN GROUP (ORDER BY TM DESC) AS ALL_VAL\n" +
" FROM ( SELECT STCD\n" +
" , TM\n" +
" , MAX(VLSR) AS VLSR\n" +
" , MAX(VLSR_TM) AS VLSR_TM\n" +
" , LISTAGG(\n" +
" SUBSTR(BGMD, 0, 2) || '月' || SUBSTR(BGMD, 3, 2) || '日' || '~' || SUBSTR(EDMD, 0, 2) || '月' ||\n" +
" SUBSTR(EDMD, 3, 2) || '日' || '限值为' ||\n" +
" (CASE WHEN FLDCPMN IS NOT NULL THEN (DECODE(SUBSTR(FLDCPMN, 1, 1), '.', '0' || FLDCPMN, FLDCPMN) ||\n" +
" '~' || DECODE(SUBSTR(FLDCP, 1, 1), '.', '0' || FLDCP, FLDCP))\n" +
" ELSE TO_CHAR(FLDCP) END), '') WITHIN GROUP (ORDER BY BGMD) AS VAL\n" +
" , ROW_NUMBER() OVER (PARTITION BY STCD ORDER BY TM DESC) RN\n" +
" FROM SD_RSVRFSR_B\n" +
" WHERE BGMD IS NOT NULL\n" +
" AND EDMD IS NOT NULL\n" +
" AND FLDCPMN IS NOT NULL\n" +
" AND FLDCPMN > 0\n" +
" GROUP BY STCD, TM ) temp\n" +
" GROUP BY STCD) b ON b.STCD = eng.STCD " +
"LEFT JOIN MS_ALONG_B along ON along.BASEID = eng.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " + "LEFT JOIN MS_ALONG_B along ON along.BASEID = eng.BASE_ID AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 " +
"LEFT JOIN ( " + "LEFT JOIN ( " +
" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD " + " SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD " +
@ -3519,11 +3492,10 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
sql.append("SELECT ") sql.append("SELECT ")
.append("r.ID AS id, ") .append("r.ID AS id, ")
.append("eng.BASE_ID AS rvcd, ") .append("r.RVCD AS rvcd, ")
.append("eng.BASE_NAME AS rvcdName, ") .append("rv.RVNM AS rvcdName, ")
.append("r.STCD AS stcd, ") .append("r.STCD AS stcd, ")
.append("eng.BLDSTT_CODE AS bldsttCcode, ") .append("r.ENNM AS ennm, ")
.append("eng.ENNM AS ennm, ")
.append("r.SRCDIS AS srcdis, ") .append("r.SRCDIS AS srcdis, ")
.append("r.DMHG AS dmhg, ") .append("r.DMHG AS dmhg, ")
.append("r.NORMZ AS normz, ") .append("r.NORMZ AS normz, ")
@ -3562,13 +3534,13 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT ") sql.append("SELECT DISTINCT ")
.append("dic.BASEID AS wbsCode, ") .append("dic.HBRVCD AS wbsCode, ")
.append("dic.BASENAME AS wbsName, ") .append("dic.HBRVNM AS wbsName, ")
.append("dic.BASEID AS objId, ") .append("dic.BASEID AS objId, ")
.append("NVL(dic.BASEID, 'ZZZZZZZZ') AS baseOrder, ") .append("NVL(dic.BASEID, 'ZZZZZZZZ') AS baseOrder, ")
.append("NVL(dic.ORDER_INDEX, 999999) AS orderIndex ") .append("NVL(dic.ORDER_INDEX, 999999) AS orderIndex ")
.append("FROM SD_HYDROBASE dic ") .append("FROM SD_HBRV_DIC dic ")
.append("INNER JOIN SD_RSVRCSCD_B r ON r.BASE_ID = dic.BASEID AND NVL(r.IS_DELETED, 0) = 0 ") .append("INNER JOIN SD_RSVRCSCD_B r ON r.RVCD = dic.HBRVCD AND NVL(r.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(dic.IS_DELETED, 0) = 0 ") .append("WHERE NVL(dic.IS_DELETED, 0) = 0 ")
.append("AND NVL(dic.ENABLED, 1) = 1 "); .append("AND NVL(dic.ENABLED, 1) = 1 ");
@ -3713,8 +3685,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
} }
return switch (field) { return switch (field) {
case "id" -> "r.ID"; case "id" -> "r.ID";
case "rvcd" -> "eng.BASE_ID"; case "rvcd" -> "r.RVCD";
case "baseId" -> "eng.BASE_ID";
case "rvcdName" -> "rv.RVNM"; case "rvcdName" -> "rv.RVNM";
case "stcd" -> "r.STCD"; case "stcd" -> "r.STCD";
case "ennm" -> "r.ENNM"; case "ennm" -> "r.ENNM";

View File

@ -89,17 +89,10 @@ public class FishDraftDataController {
return t; return t;
}); });
// @PostMapping("/page")
// @Operation(summary = "分页查询过鱼数据(关联电站和设施)")
// public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) {
// Page<FishDraftDataVO> result = fishDraftDataService.queryPageList(dataSourceRequest);
// return ResponseResult.successData(result);
// }
@PostMapping("/page") @PostMapping("/page")
@Operation(summary = "分页查询过鱼数据(关联电站和设施APPROVED状态时根据当前用户电站权限过滤") @Operation(summary = "分页查询过鱼数据(关联电站和设施)")
public ResponseResult queryPageListWithScope(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) {
Page<FishDraftDataVO> result = fishDraftDataService.queryPageListWithScope(dataSourceRequest); Page<FishDraftDataVO> result = fishDraftDataService.queryPageList(dataSourceRequest);
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }

View File

@ -8,7 +8,6 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import java.util.List; import java.util.List;
import java.util.Set;
/** /**
* <p> * <p>
@ -34,24 +33,6 @@ public interface FishDraftDataMapper extends BaseMapper<FishDraftData> {
@Param("hbrvcd") String hbrvcd, @Param("hbrvcd") String hbrvcd,
@Param("approvalId") String approvalId); @Param("approvalId") String approvalId);
/**
* 关联查询过鱼数据分页含电站权限过滤
*/
Page<FishDraftDataVO> selectJoinPageWithStationScope(Page<FishDraftDataVO> page,
@Param("stcd") String stcd,
@Param("rstcd") String rstcd,
@Param("baseId") String baseId,
@Param("rvcd") String rvcd,
@Param("direction") String direction,
@Param("status") String status,
@Param("ftp") String ftp,
@Param("startTime") String startTime,
@Param("endTime") String endTime,
@Param("userId") String userId,
@Param("hbrvcd") String hbrvcd,
@Param("approvalId") String approvalId,
@Param("stationCodes") Set<String> stationCodes);
/** /**
* 关联查询过鱼数据不分页 * 关联查询过鱼数据不分页
*/ */

View File

@ -20,12 +20,6 @@ public interface IFishDraftDataService extends IService<FishDraftData> {
*/ */
Page<FishDraftDataVO> queryPageList(DataSourceRequest dataSourceRequest); Page<FishDraftDataVO> queryPageList(DataSourceRequest dataSourceRequest);
/**
* 分页查询草稿数据关联电站和设施表含电站权限过滤
* status = APPROVED 根据当前用户有权限的电站编码过滤数据
*/
Page<FishDraftDataVO> queryPageListWithScope(DataSourceRequest dataSourceRequest);
/** /**
* 查询草稿数据列表关联电站和设施表不分页 * 查询草稿数据列表关联电站和设施表不分页
*/ */

View File

@ -8,7 +8,6 @@ import com.yfd.platform.common.DataSourceLoadOptionsBase;
import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceRequest;
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_base.service.ICurrentUserDataScopeService;
import com.yfd.platform.qgc_data.domain.ApprovalMain; import com.yfd.platform.qgc_data.domain.ApprovalMain;
import com.yfd.platform.qgc_data.domain.FishDraftData; import com.yfd.platform.qgc_data.domain.FishDraftData;
import com.yfd.platform.qgc_data.domain.SysUserDataScope; import com.yfd.platform.qgc_data.domain.SysUserDataScope;
@ -90,9 +89,6 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
@Resource @Resource
private ISdFpssRService sdFpssRService; private ISdFpssRService sdFpssRService;
@Resource
private ICurrentUserDataScopeService currentUserDataScopeService;
@Resource @Resource
private PlatformTransactionManager transactionManager; private PlatformTransactionManager transactionManager;
@ -112,68 +108,19 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
String direction = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "direction"); String direction = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "direction");
String status = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "status"); String status = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "status");
String STRDT = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "strdt"); String STRDT = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "strdt");
String startTime = null; String startTime=null;
String endTime = null; String endTime=null;
// String userId = (SecurityUtils.hasPermission("sjtb:edit-review") || "admin".equals(SecurityUtils.getCurrentUsername())) ?null:SecurityUtils.getUserId(); // String userId = (SecurityUtils.hasPermission("sjtb:edit-review") || "admin".equals(SecurityUtils.getCurrentUsername())) ?null:SecurityUtils.getUserId();
String userId = SecurityUtils.getUserId(); String userId = SecurityUtils.getUserId();
if (StrUtil.isNotBlank(approvalId)) { if(StrUtil.isNotBlank(approvalId)){
userId = null; userId=null;
} }
// 如果 startTime endTime 为空尝试从 TM 字段解析 // 如果 startTime endTime 为空尝试从 TM 字段解析
if (StrUtil.isNotBlank(STRDT) && STRDT.split(",").length == 2) { if (StrUtil.isNotBlank(STRDT)&& STRDT.split( ",").length==2) {
startTime = STRDT.split(",")[0]; startTime=STRDT.split(",")[0];
endTime = STRDT.split(",")[1]; endTime=STRDT.split(",")[1];
} }
Page<FishDraftDataVO> resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, rvcd, direction, status, ftp, startTime, endTime, userId, hbrvcd, approvalId); Page<FishDraftDataVO> resultPage = fishDraftDataMapper.selectJoinPage(page, stcd, rstcd, baseId, rvcd, direction, status, ftp, startTime, endTime,userId,hbrvcd,approvalId);
fillUserNames(resultPage.getRecords());
return resultPage;
}
@Override
public Page<FishDraftDataVO> queryPageListWithScope(DataSourceRequest dataSourceRequest) {
Page<FishDraftDataVO> page = KendoUtil.getPage(dataSourceRequest);
page.setSize(dataSourceRequest.getTake());
page.setCurrent(dataSourceRequest.getSkip());
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
String approvalId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "approvalId");
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rstcd");
String hbrvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "hbrvcd");
String rvcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "rvcd");
String baseId = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
String ftp = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "ftp");
String direction = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "direction");
String status = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "status");
String STRDT = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "strdt");
String startTime = null;
String endTime = null;
String userId = SecurityUtils.getUserId();
if (StrUtil.isNotBlank(approvalId)) {
userId = null;
}
if (StrUtil.isNotBlank(STRDT) && STRDT.split(",").length == 2) {
startTime = STRDT.split(",")[0];
endTime = STRDT.split(",")[1];
}
// status = APPROVED 加上当前用户的电站权限过滤
Set<String> stationCodes = null;
if ("APPROVED".equals(status)) {
userId=null;
if (!currentUserDataScopeService.getCurrentUserDataScope().isManagedAdmin()) {
stationCodes = currentUserDataScopeService.getCurrentUserDataScope().getStationCodes();
// 如果用户没有电站权限且不是管理员返回空结果
if (stationCodes == null || stationCodes.isEmpty()) {
page.setRecords(Collections.emptyList());
page.setTotal(0);
return page;
}
}
}
Page<FishDraftDataVO> resultPage = fishDraftDataMapper.selectJoinPageWithStationScope(
page, stcd, rstcd, baseId, rvcd, direction, status, ftp,
startTime, endTime, userId, hbrvcd, approvalId, stationCodes);
fillUserNames(resultPage.getRecords()); fillUserNames(resultPage.getRecords());
return resultPage; return resultPage;
} }
@ -315,7 +262,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
@Override @Override
public boolean batchRemoveDraft(List<String> ids) { public boolean batchRemoveDraft(List<String> ids) {
long count = countByIdsAndLockFlag(ids, 1); long count = countByIdsAndLockFlag(ids, 1);
if (count > 0) { if(count > 0){
return false; return false;
} }
String userId = SecurityUtils.getUserId(); String userId = SecurityUtils.getUserId();
@ -445,7 +392,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
// hbrvnmSet.add(hbrv.getRvnm()); // hbrvnmSet.add(hbrv.getRvnm());
// } // }
List<SdEngInfoBH> stationList = engInfoBHMapper.selectByRvcd(null, orgId); List<SdEngInfoBH> stationList = engInfoBHMapper.selectByRvcd(null,orgId);
if (stationList != null) { if (stationList != null) {
for (SdEngInfoBH station : stationList) { for (SdEngInfoBH station : stationList) {
if (station.getStcd() != null) { if (station.getStcd() != null) {
@ -454,7 +401,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
if (station.getEnnm() != null) { if (station.getEnnm() != null) {
ennmSet.add(station.getEnnm()); ennmSet.add(station.getEnnm());
} }
if (station.getReachcdName() != null) { if(station.getReachcdName() != null){
hbrvnmSet.add(station.getReachcdName()); hbrvnmSet.add(station.getReachcdName());
} }
} }
@ -472,7 +419,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
if (station.getEnnm() != null) { if (station.getEnnm() != null) {
ennmSet.add(station.getEnnm()); ennmSet.add(station.getEnnm());
} }
if (station.getReachcdName() != null) { if(station.getReachcdName() != null){
hbrvnmSet.add(station.getReachcdName()); hbrvnmSet.add(station.getReachcdName());
} }
@ -878,9 +825,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
} }
private void rollbackSubmittedDrafts(String approvalId, private void rollbackSubmittedDrafts(String approvalId,
List<String> succeededIds, List<String> succeededIds,
Map<String, String> originalStatusMap, Map<String, String> originalStatusMap,
Exception originalException) { Exception originalException) {
try { try {
for (List<String> batchIds : splitList(normalizeBatchValues(succeededIds), IN_QUERY_BATCH_SIZE)) { for (List<String> batchIds : splitList(normalizeBatchValues(succeededIds), IN_QUERY_BATCH_SIZE)) {
executeInNewTransaction(() -> { executeInNewTransaction(() -> {

View File

@ -15,7 +15,6 @@ public class FprZyFishDicVo {
private String rvcdName; private String rvcdName;
private String name; private String name;
private Integer type; private Integer type;
private String typeName;
private String family; private String family;
private String genus; private String genus;
private String species; private String species;

View File

@ -800,7 +800,6 @@ public class FprMonitorServiceImpl implements FprMonitorService {
"rv.RVNM AS rvcdName, " + "rv.RVNM AS rvcdName, " +
"src.NAME AS name, " + "src.NAME AS name, " +
"src.TYPE AS type, " + "src.TYPE AS type, " +
"CASE WHEN src.TYPE = 1 THEN '淡水' WHEN src.TYPE = 2 THEN '海水' ELSE '未知' END AS typeName,"+
"src.FAMILY AS family, " + "src.FAMILY AS family, " +
"src.GENUS AS genus, " + "src.GENUS AS genus, " +
"src.SPECIES AS species, " + "src.SPECIES AS species, " +
@ -849,7 +848,6 @@ public class FprMonitorServiceImpl implements FprMonitorService {
"NVL(relAgg.rvcdName, '') AS rvcdName, " + "NVL(relAgg.rvcdName, '') AS rvcdName, " +
"src.NAME AS name, " + "src.NAME AS name, " +
"src.TYPE AS type, " + "src.TYPE AS type, " +
"CASE WHEN src.TYPE = 1 THEN '淡水' WHEN src.TYPE = 2 THEN '海水' ELSE '未知' END AS typeName,"+
"src.FAMILY AS family, " + "src.FAMILY AS family, " +
"src.GENUS AS genus, " + "src.GENUS AS genus, " +
"src.SPECIES AS species, " + "src.SPECIES AS species, " +

View File

@ -44,11 +44,6 @@ public class OverviewVmsstbprptVo implements Serializable {
private String introduce; private String introduce;
private String logo; private String logo;
private String inffile; private String inffile;
private String boundary;
private String location;
private BigDecimal height;
private String url;
private String accuracy;
private BigDecimal inv; private BigDecimal inv;
private Integer invinmn; private Integer invinmn;
private Date stdsdt; private Date stdsdt;

View File

@ -1459,11 +1459,6 @@ public class OverviewServiceImpl implements OverviewService {
columnMap.put("introduce", "t.INTRODUCE AS \"introduce\""); columnMap.put("introduce", "t.INTRODUCE AS \"introduce\"");
columnMap.put("logo", "t.LOGO AS \"logo\""); columnMap.put("logo", "t.LOGO AS \"logo\"");
columnMap.put("inffile", "t.INFFILE AS \"inffile\""); columnMap.put("inffile", "t.INFFILE AS \"inffile\"");
columnMap.put("url", "t.URL AS \"url\"");
columnMap.put("boundary", "t.BOUNDARY AS \"boundary\"");
columnMap.put("height", "t.HEIGHT AS \"height\"");
columnMap.put("location", "t.LOCATION AS \"location\"");
columnMap.put("accuracy", "t.ACCURACY AS \"accuracy\"");
columnMap.put("inv", "t.INV AS \"inv\""); columnMap.put("inv", "t.INV AS \"inv\"");
columnMap.put("invinmn", "t.INVINMN AS \"invinmn\""); columnMap.put("invinmn", "t.INVINMN AS \"invinmn\"");
columnMap.put("stdsdt", "t.STDSDT AS \"stdsdt\""); columnMap.put("stdsdt", "t.STDSDT AS \"stdsdt\"");

View File

@ -1825,12 +1825,12 @@ public class EnvWqDataServiceImpl implements EnvWqDataService {
"LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " + "LEFT JOIN SD_RVCD_DIC rv ON rv.RVCD = eng.RVCD " +
"LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " + "LEFT JOIN SD_ADDVCD_DIC addv ON addv.ADDVCD = eng.ADDVCD " +
"LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.BASEID = wq.BASE_ID AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " + "LEFT JOIN MS_ALONG_B rvAlong ON rvAlong.BASEID = wq.BASE_ID AND rvAlong.CODE = 'common' AND NVL(rvAlong.IS_DELETED, 0) = 0 " +
"LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + "LEFT JOIN (SELECT det.SORT,cfg.BASEID, along.RVCD, det.STCD " +
" FROM MS_ALONGDET_B det " + " FROM MS_ALONGDET_B det " +
" INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " +
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') rstAlong " +
" ON rstAlong.BASEID = wq.BASE_ID AND rstAlong.STCD = wq.RSTCD " + " ON rstAlong.BASEID = wq.BASE_ID AND rstAlong.STCD = wq.RSTCD " +
"LEFT JOIN (SELECT det.SORT,along.BASEID, along.RVCD, det.STCD " + "LEFT JOIN (SELECT det.SORT,cfg.BASEID, along.RVCD, det.STCD " +
" FROM MS_ALONGDET_B det " + " FROM MS_ALONGDET_B det " +
" INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " + " INNER JOIN MS_ALONG_B along ON det.ALONG_ID = along.ID " +
" WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " + " WHERE NVL(det.IS_DELETED, 0) = 0 AND NVL(along.IS_DELETED, 0) = 0 AND along.CODE = 'common') siteAlong " +

View File

@ -2959,7 +2959,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
} }
@Override @Override
@Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator") // @Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator")
public DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) { public DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceResult<WaterTempMapVO> dataSourceResult = new DataSourceResult<>(); DataSourceResult<WaterTempMapVO> dataSourceResult = new DataSourceResult<>();
dataSourceResult.setAggregates(new HashMap<>()); dataSourceResult.setAggregates(new HashMap<>());

View File

@ -437,7 +437,7 @@ public class WeFishServiceImpl implements WeFishService {
"SUM(CASE WHEN we.DCPC = #{map.dcpc2} THEN NVL(fish.FCNT, 0) ELSE 0 END) AS fcnt2 " + "SUM(CASE WHEN we.DCPC = #{map.dcpc2} THEN NVL(fish.FCNT, 0) ELSE 0 END) AS fcnt2 " +
"FROM SD_WE_R we " + "FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID AND NVL(fish.IS_DELETED, 0) = 0 " + "INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID AND NVL(fish.IS_DELETED, 0) = 0 " +
"INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD AND NVL(sec.USFL, 0) = 1 " + "INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD AND NVL(section.USFL, 0) = 1 " +
"INNER JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP AND NVL(dict.IS_DELETED, 0) = 0 " + "INNER JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP AND NVL(dict.IS_DELETED, 0) = 0 " +
"WHERE NVL(we.IS_DELETED, 0) = 0 " + "WHERE NVL(we.IS_DELETED, 0) = 0 " +
"AND NVL(we.STATUS, 1) = 1 " + "AND NVL(we.STATUS, 1) = 1 " +
@ -514,49 +514,49 @@ public class WeFishServiceImpl implements WeFishService {
.append("CASE WHEN fishAgg.yr = #{map.endYear} THEN fishAgg.fcnt END AS endFtpCnt, ") .append("CASE WHEN fishAgg.yr = #{map.endYear} THEN fishAgg.fcnt END AS endFtpCnt, ")
.append("CASE WHEN fishAgg.yr = #{map.endYear} THEN totalAgg.fcnt END AS endCnt ") .append("CASE WHEN fishAgg.yr = #{map.endYear} THEN totalAgg.fcnt END AS endCnt ")
.append("FROM (") .append("FROM (")
.append("SELECT fish.FTP AS ftp, sec.HBRVCD AS hbrvcd, SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ") .append("SELECT fish.FTP AS ftp, section.HBRVCD AS hbrvcd, SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ")
.append("FROM SD_WE_R we ") .append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD ")
.append("INNER JOIN V_SD_FISHDICTORY_B dictFilter ON dictFilter.FISH_ID = fish.FTP ") .append("INNER JOIN V_SD_FISHDICTORY_B dictFilter ON dictFilter.FISH_ID = fish.FTP ")
.append(" AND (sec.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ")
.append("WHERE NVL(we.STATUS, 1) = 1 ") .append("WHERE NVL(we.STATUS, 1) = 1 ")
.append("AND NVL(we.IS_DELETED, 0) = 0 ") .append("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) "); .append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("fishPageBaseId", baseId); paramMap.put("fishPageBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.fishPageBaseId} "); sql.append("AND section.BASE_ID = #{map.fishPageBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("fishPageHbrvcd", hbrvcd); paramMap.put("fishPageHbrvcd", hbrvcd);
sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} "); sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("fishPageRstcd", rstcd); paramMap.put("fishPageRstcd", rstcd);
sql.append("AND sec.RSTCD = #{map.fishPageRstcd} "); sql.append("AND section.RSTCD = #{map.fishPageRstcd} ");
} }
sql.append("GROUP BY fish.FTP, sec.HBRVCD, TO_CHAR(we.TM, 'YYYY') ") sql.append("GROUP BY fish.FTP, section.HBRVCD, TO_CHAR(we.TM, 'YYYY') ")
.append(") fishAgg ") .append(") fishAgg ")
.append("LEFT JOIN (") .append("LEFT JOIN (")
.append("SELECT SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ") .append("SELECT SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ")
.append("FROM SD_WE_R we ") .append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD ")
.append("INNER JOIN V_SD_FISHDICTORY_B dictFilter ON dictFilter.FISH_ID = fish.FTP ") .append("INNER JOIN V_SD_FISHDICTORY_B dictFilter ON dictFilter.FISH_ID = fish.FTP ")
.append(" AND (sec.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ")
.append("WHERE NVL(we.STATUS, 1) = 1 ") .append("WHERE NVL(we.STATUS, 1) = 1 ")
.append("AND NVL(we.IS_DELETED, 0) = 0 ") .append("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) "); .append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
sql.append("AND sec.BASE_ID = #{map.fishPageBaseId} "); sql.append("AND section.BASE_ID = #{map.fishPageBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} "); sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
sql.append("AND sec.RSTCD = #{map.fishPageRstcd} "); sql.append("AND section.RSTCD = #{map.fishPageRstcd} ");
} }
sql.append("GROUP BY TO_CHAR(we.TM, 'YYYY') ") sql.append("GROUP BY TO_CHAR(we.TM, 'YYYY') ")
.append(") totalAgg ON totalAgg.yr = fishAgg.yr ") .append(") totalAgg ON totalAgg.yr = fishAgg.yr ")
@ -1087,33 +1087,33 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") sql.append("SELECT ")
.append("sec.STCD AS stcd, ") .append("section.STCD AS stcd, ")
.append("sec.STNM AS stnm, ") .append("section.STNM AS stnm, ")
.append("sec.LGTD AS lgtd, ") .append("section.LGTD AS lgtd, ")
.append("sec.LTTD AS lttd, ") .append("section.LTTD AS lttd, ")
.append("sec.ELEV AS dtmel, ") .append("section.ELEV AS dtmel, ")
.append("sec.RSTCD AS rstcds, ") .append("section.RSTCD AS rstcds, ")
.append("eng.ENNM AS ennm, ") .append("eng.ENNM AS ennm, ")
.append("TO_CHAR(latest.TM, 'yyyy-mm-dd hh24:mi:ss') AS tm, ") .append("TO_CHAR(latest.TM, 'yyyy-mm-dd hh24:mi:ss') AS tm, ")
.append("'WE' AS anchoPointState, ") .append("'WE' AS anchoPointState, ")
.append("'WE' AS sttpMap, ") .append("'WE' AS sttpMap, ")
.append("'WE' AS sttp, ") .append("'WE' AS sttp, ")
.append("'WE' AS sttpCode, ") .append("'WE' AS sttpCode, ")
.append("sec.STNM AS titleName, ") .append("section.STNM AS titleName, ")
.append("sec.RVCD AS rvcd, ") .append("section.RVCD AS rvcd, ")
.append("sec.ADDVCD AS addvcd, ") .append("section.ADDVCD AS addvcd, ")
.append("sec.BASE_ID AS baseId, ") .append("section.BASE_ID AS baseId, ")
.append("sec.RSTCD AS rstcd, ") .append("section.RSTCD AS rstcd, ")
.append("siteSort.SORT AS siteStepSort ") .append("siteSort.SORT AS siteStepSort ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN ( ") .append("LEFT JOIN ( ")
.append(" SELECT STCD, MAX(TM) AS TM ") .append(" SELECT STCD, MAX(TM) AS TM ")
.append(" FROM SD_WE_R ") .append(" FROM SD_WE_R ")
.append(" WHERE NVL(IS_DELETED, 0) = 0 AND STATUS = 1 ") .append(" WHERE NVL(IS_DELETED, 0) = 0 AND STATUS = 1 ")
.append(" GROUP BY STCD ") .append(" GROUP BY STCD ")
.append(") latest ON latest.STCD = sec.STCD ") .append(") latest ON latest.STCD = section.STCD ")
.append("LEFT JOIN MS_ALONG_B along ON along.BASEID = sec.BASE_ID ") .append("LEFT JOIN MS_ALONG_B along ON along.BASEID = section.BASE_ID ")
.append(" AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ") .append(" AND along.CODE = 'common' AND NVL(along.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN ( ") .append("LEFT JOIN ( ")
.append(" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD ") .append(" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD ")
@ -1122,8 +1122,8 @@ public class WeFishServiceImpl implements WeFishService {
.append(" WHERE NVL(det.IS_DELETED, 0) = 0 ") .append(" WHERE NVL(det.IS_DELETED, 0) = 0 ")
.append(" AND NVL(cfg.IS_DELETED, 0) = 0 ") .append(" AND NVL(cfg.IS_DELETED, 0) = 0 ")
.append(" AND cfg.CODE = 'common' ") .append(" AND cfg.CODE = 'common' ")
.append(") siteSort ON siteSort.BASEID = sec.BASE_ID AND siteSort.STCD = sec.STCD ") .append(") siteSort ON siteSort.BASEID = section.BASE_ID AND siteSort.STCD = section.STCD ")
.append("WHERE NVL(sec.USFL, 1) = 1 "); .append("WHERE NVL(section.USFL, 1) = 1 ");
String filterSql = buildWePointFilterCondition(dataSourceRequest.getFilter(), paramMap, new int[]{0}); String filterSql = buildWePointFilterCondition(dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) { if (StrUtil.isNotBlank(filterSql)) {
@ -1186,8 +1186,8 @@ public class WeFishServiceImpl implements WeFishService {
.append("FROM SD_WE_R we ") .append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ") .append("INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD ")
.append(" AND NVL(sec.USFL, 1) = 1 ") .append(" AND NVL(section.USFL, 1) = 1 ")
.append("INNER JOIN ( ") .append("INNER JOIN ( ")
.append(" SELECT STCD, MAX(TM) AS TM ") .append(" SELECT STCD, MAX(TM) AS TM ")
.append(" FROM SD_WE_R ") .append(" FROM SD_WE_R ")
@ -1201,7 +1201,7 @@ public class WeFishServiceImpl implements WeFishService {
.append(" WHERE NVL(rel.IS_DELETED, 0) = 0 ") .append(" WHERE NVL(rel.IS_DELETED, 0) = 0 ")
.append(" AND NVL(dic.IS_DELETED, 0) = 0 ") .append(" AND NVL(dic.IS_DELETED, 0) = 0 ")
.append(" AND (rel.FISH_ID <> rel.ZY_FISH_ID OR rel.RVCD = 'ZY') ") .append(" AND (rel.FISH_ID <> rel.ZY_FISH_ID OR rel.RVCD = 'ZY') ")
.append(") dict ON fish.FTP = dict.FISH_ID AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(") dict ON fish.FTP = dict.FISH_ID AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE fish.FCNT IS NOT NULL ") .append("WHERE fish.FCNT IS NOT NULL ")
.append("AND NVL(we.IS_DELETED, 0) = 0 ") .append("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND NVL(we.STATUS, 1) = 1 "); .append("AND NVL(we.STATUS, 1) = 1 ");
@ -1925,16 +1925,16 @@ public class WeFishServiceImpl implements WeFishService {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT t.BASE_ID AS hbrvcd, t.YR AS yr ") sql.append("SELECT t.BASE_ID AS hbrvcd, t.YR AS yr ")
.append("FROM (") .append("FROM (")
.append("SELECT sec.HBRVCD, sec.RSTCD, sec.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ") .append("SELECT section.HBRVCD, section.RSTCD, section.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ") .append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ") .append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND CASE ") .append("AND CASE ")
.append("WHEN dict.SPEC_ORIGIN = 2 THEN 1 ") .append("WHEN dict.SPEC_ORIGIN = 2 THEN 1 ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN 2 ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN 2 ")
@ -1943,11 +1943,11 @@ public class WeFishServiceImpl implements WeFishService {
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weYearBaseId", baseId); paramMap.put("weYearBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weYearBaseId} "); sql.append("AND section.BASE_ID = #{map.weYearBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weYearHbrvcd", hbrvcd); paramMap.put("weYearHbrvcd", hbrvcd);
sql.append("AND sec.HBRVCD = #{map.weYearHbrvcd} "); sql.append("AND section.HBRVCD = #{map.weYearHbrvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("weYearYr", yr); paramMap.put("weYearYr", yr);
@ -1965,11 +1965,11 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}"); placeholders.add("#{map." + key + "}");
} }
if (CollUtil.isNotEmpty(placeholders)) { if (CollUtil.isNotEmpty(placeholders)) {
sql.append("AND sec.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND section.RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
} }
} }
sql.append("GROUP BY sec.BASE_ID, sec.HBRVCD, sec.RSTCD, TO_CHAR(we.TM, 'yyyy')") sql.append("GROUP BY section.BASE_ID, section.HBRVCD, section.RSTCD, TO_CHAR(we.TM, 'yyyy')")
.append(") t ") .append(") t ")
.append("INNER JOIN (") .append("INNER JOIN (")
.append("SELECT det.STCD, det.SORT, cfg.RVCD ") .append("SELECT det.STCD, det.SORT, cfg.RVCD ")
@ -1993,7 +1993,7 @@ public class WeFishServiceImpl implements WeFishService {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT t.STCD AS stcd, t.STNM AS stnm, t.NUM AS num, t.TY AS ty, t2.SORT AS sort ") sql.append("SELECT t.STCD AS stcd, t.STNM AS stnm, t.NUM AS num, t.TY AS ty, t2.SORT AS sort ")
.append("FROM (") .append("FROM (")
.append("SELECT sec.RSTCD AS STCD, ") .append("SELECT section.RSTCD AS STCD, ")
.append("eng.ENNM AS STNM, ") .append("eng.ENNM AS STNM, ")
.append("COUNT(DISTINCT fish.FTP) AS NUM, ") .append("COUNT(DISTINCT fish.FTP) AS NUM, ")
.append("CASE ") .append("CASE ")
@ -2001,26 +2001,26 @@ public class WeFishServiceImpl implements WeFishService {
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ")
.append("END AS TY ") .append("END AS TY ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
// .append(" AND NVL(we.STATUS, 1) = 1 ") // .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ") .append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE 1 = 1 "); .append("WHERE 1 = 1 ");
// .append("WHERE NVL(sec.USFL, 0) = 1 "); // .append("WHERE NVL(section.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatBaseId", baseId); paramMap.put("weFishStatBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weFishStatBaseId} "); sql.append("AND section.BASE_ID = #{map.weFishStatBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weFishStatHbrvcd", hbrvcd); paramMap.put("weFishStatHbrvcd", hbrvcd);
sql.append("AND sec.HBRVCD = #{map.weFishStatHbrvcd} "); sql.append("AND section.HBRVCD = #{map.weFishStatHbrvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishStatYr", yr); paramMap.put("weFishStatYr", yr);
@ -2038,7 +2038,7 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}"); placeholders.add("#{map." + key + "}");
} }
if (CollUtil.isNotEmpty(placeholders)) { if (CollUtil.isNotEmpty(placeholders)) {
sql.append("AND sec.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND section.RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
} }
} }
@ -2047,7 +2047,7 @@ public class WeFishServiceImpl implements WeFishService {
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN 2 ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN 2 ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN 3 ") .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN 3 ")
.append("END IS NOT NULL ") .append("END IS NOT NULL ")
.append("GROUP BY sec.RSTCD, eng.ENNM, CASE ") .append("GROUP BY section.RSTCD, eng.ENNM, CASE ")
.append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ") .append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ")
@ -2074,7 +2074,7 @@ public class WeFishServiceImpl implements WeFishService {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT t.STCD AS stcd, t.STNM AS stnm, t.NUM AS num, t.TY AS ty, t2.SORT AS sort ") sql.append("SELECT t.STCD AS stcd, t.STNM AS stnm, t.NUM AS num, t.TY AS ty, t2.SORT AS sort ")
.append("FROM (") .append("FROM (")
.append("SELECT sec.RSTCD AS STCD, ") .append("SELECT section.RSTCD AS STCD, ")
.append("eng.ENNM AS STNM, ") .append("eng.ENNM AS STNM, ")
.append("COUNT(DISTINCT fish.FTP) AS NUM, ") .append("COUNT(DISTINCT fish.FTP) AS NUM, ")
.append("CASE ") .append("CASE ")
@ -2083,29 +2083,29 @@ public class WeFishServiceImpl implements WeFishService {
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ")
.append("END AS TY, ") .append("END AS TY, ")
.append("TO_CHAR(we.TM, 'yyyy') AS YR ") .append("TO_CHAR(we.TM, 'yyyy') AS YR ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ") .append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.append(" AND NVL(dict.IS_DELETED, 0) = 0 ") .append(" AND NVL(dict.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(sec.USFL, 0) = 1 "); .append("WHERE NVL(section.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatBaseId", baseId); paramMap.put("weFishStatBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weFishStatBaseId} "); sql.append("AND section.BASE_ID = #{map.weFishStatBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weFishStatHbrvcd", hbrvcd); paramMap.put("weFishStatHbrvcd", hbrvcd);
sql.append("AND sec.HBRVCD = #{map.weFishStatHbrvcd} "); sql.append("AND section.HBRVCD = #{map.weFishStatHbrvcd} ");
} }
sql.append("AND sec.RSTCD IS NOT NULL ") sql.append("AND section.RSTCD IS NOT NULL ")
.append("AND dict.SPEC_ORIGIN IS NOT NULL ") .append("AND dict.SPEC_ORIGIN IS NOT NULL ")
.append("GROUP BY sec.RSTCD, eng.ENNM, ") .append("GROUP BY section.RSTCD, eng.ENNM, ")
.append("CASE ") .append("CASE ")
.append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ") .append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ")
@ -2189,36 +2189,36 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap) { Map<String, Object> paramMap) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") sql.append("SELECT ")
.append("sec.RSTCD AS rstcd, ") .append("section.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ") .append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STNM)) AS stnm, ") .append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT dict.ZY_FISH_ID)) AS id ") .append("TO_CHAR(WM_CONCAT(DISTINCT dict.ZY_FISH_ID)) AS id ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON section.RSTCD = eng.STCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ") .append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ") .append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ") .append("AND section.RSTCD IS NOT NULL ")
.append("AND dict.ZY_FISH_ID IS NOT NULL "); .append("AND dict.ZY_FISH_ID IS NOT NULL ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("qgcWeFishDetailBaseId", baseId); paramMap.put("qgcWeFishDetailBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.qgcWeFishDetailBaseId} "); sql.append("AND section.BASE_ID = #{map.qgcWeFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("qgcWeFishDetailRstcd", rstcd); paramMap.put("qgcWeFishDetailRstcd", rstcd);
sql.append("AND sec.RSTCD = #{map.qgcWeFishDetailRstcd} "); sql.append("AND section.RSTCD = #{map.qgcWeFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("qgcWeFishDetailRvcd", rvcd); paramMap.put("qgcWeFishDetailRvcd", rvcd);
sql.append("AND sec.HBRVCD = #{map.qgcWeFishDetailRvcd} "); sql.append("AND section.HBRVCD = #{map.qgcWeFishDetailRvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("qgcWeFishDetailYr", yr); paramMap.put("qgcWeFishDetailYr", yr);
@ -2233,7 +2233,7 @@ public class WeFishServiceImpl implements WeFishService {
.append("END = #{map.qgcWeFishDetailTy} "); .append("END = #{map.qgcWeFishDetailTy} ");
} }
sql.append("GROUP BY sec.RSTCD, eng.ENNM ") sql.append("GROUP BY section.RSTCD, eng.ENNM ")
.append("ORDER BY eng.ENNM ASC NULLS LAST"); .append("ORDER BY eng.ENNM ASC NULLS LAST");
return sql.toString(); return sql.toString();
} }
@ -2246,36 +2246,36 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap) { Map<String, Object> paramMap) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") sql.append("SELECT ")
.append("sec.RSTCD AS rstcd, ") .append("section.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ") .append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STNM)) AS stnm, ") .append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT dict.NAME)) AS name ") .append("TO_CHAR(WM_CONCAT(DISTINCT dict.NAME)) AS name ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON section.RSTCD = eng.STCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ") .append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.append(" AND NVL(dict.IS_DELETED, 0) = 0 ") .append(" AND NVL(dict.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(sec.USFL, 0) = 1 ") .append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ") .append("AND section.RSTCD IS NOT NULL ")
.append("AND dict.NAME IS NOT NULL "); .append("AND dict.NAME IS NOT NULL ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishDetailBaseId", baseId); paramMap.put("weFishDetailBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weFishDetailBaseId} "); sql.append("AND section.BASE_ID = #{map.weFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("weFishDetailRstcd", rstcd); paramMap.put("weFishDetailRstcd", rstcd);
sql.append("AND sec.RSTCD = #{map.weFishDetailRstcd} "); sql.append("AND section.RSTCD = #{map.weFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishDetailRvcd", rvcd); paramMap.put("weFishDetailRvcd", rvcd);
sql.append("AND sec.HBRVCD = #{map.weFishDetailRvcd} "); sql.append("AND section.HBRVCD = #{map.weFishDetailRvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishDetailYr", yr); paramMap.put("weFishDetailYr", yr);
@ -2290,7 +2290,7 @@ public class WeFishServiceImpl implements WeFishService {
.append("END = #{map.weFishDetailTy} "); .append("END = #{map.weFishDetailTy} ");
} }
sql.append("GROUP BY sec.RSTCD, eng.ENNM ") sql.append("GROUP BY section.RSTCD, eng.ENNM ")
.append("ORDER BY eng.ENNM ASC NULLS LAST"); .append("ORDER BY eng.ENNM ASC NULLS LAST");
return sql.toString(); return sql.toString();
} }
@ -2303,36 +2303,36 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap) { Map<String, Object> paramMap) {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT ") sql.append("SELECT ")
.append("sec.RSTCD AS rstcd, ") .append("section.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("sec.STCD AS stcd, ") .append("section.STCD AS stcd, ")
.append("sec.STNM AS stnm, ") .append("section.STNM AS stnm, ")
.append("dict.ZY_FISH_ID AS id ") .append("dict.ZY_FISH_ID AS id ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON section.RSTCD = eng.STCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ") .append("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ") .append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ") .append("AND section.RSTCD IS NOT NULL ")
.append("AND dict.ZY_FISH_ID IS NOT NULL "); .append("AND dict.ZY_FISH_ID IS NOT NULL ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("hbbQgcWeFishDetailBaseId", baseId); paramMap.put("hbbQgcWeFishDetailBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.hbbQgcWeFishDetailBaseId} "); sql.append("AND section.BASE_ID = #{map.hbbQgcWeFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("hbbQgcWeFishDetailRstcd", rstcd); paramMap.put("hbbQgcWeFishDetailRstcd", rstcd);
sql.append("AND sec.RSTCD = #{map.hbbQgcWeFishDetailRstcd} "); sql.append("AND section.RSTCD = #{map.hbbQgcWeFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("hbbQgcWeFishDetailRvcd", rvcd); paramMap.put("hbbQgcWeFishDetailRvcd", rvcd);
sql.append("AND sec.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} "); sql.append("AND section.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("hbbQgcWeFishDetailYr", yr); paramMap.put("hbbQgcWeFishDetailYr", yr);
@ -2347,8 +2347,8 @@ public class WeFishServiceImpl implements WeFishService {
.append("END = #{map.hbbQgcWeFishDetailTy} "); .append("END = #{map.hbbQgcWeFishDetailTy} ");
} }
sql.append("GROUP BY sec.RSTCD, eng.ENNM, sec.STCD, sec.STNM,dict.ZY_FISH_ID ") sql.append("GROUP BY section.RSTCD, eng.ENNM, section.STCD, section.STNM,dict.ZY_FISH_ID ")
.append("ORDER BY eng.ENNM ASC NULLS LAST, sec.STNM ASC NULLS LAST"); .append("ORDER BY eng.ENNM ASC NULLS LAST, section.STNM ASC NULLS LAST");
return sql.toString(); return sql.toString();
} }
@ -2364,27 +2364,27 @@ public class WeFishServiceImpl implements WeFishService {
.append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ")
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ") .append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ")
.append("END AS ty ") .append("END AS ty ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ") .append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.append(" AND NVL(dict.IS_DELETED, 0) = 0 ") .append(" AND NVL(dict.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(sec.USFL, 0) = 1 "); .append("WHERE NVL(section.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatTabBaseId", baseId); paramMap.put("weFishStatTabBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weFishStatTabBaseId} "); sql.append("AND section.BASE_ID = #{map.weFishStatTabBaseId} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishStatTabRvcd", rvcd); paramMap.put("weFishStatTabRvcd", rvcd);
sql.append("AND sec.HBRVCD = #{map.weFishStatTabRvcd} "); sql.append("AND section.HBRVCD = #{map.weFishStatTabRvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("weFishStatTabRstcd", rstcd); paramMap.put("weFishStatTabRstcd", rstcd);
sql.append("AND sec.RSTCD = #{map.weFishStatTabRstcd} "); sql.append("AND section.RSTCD = #{map.weFishStatTabRstcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishStatTabYr", yr); paramMap.put("weFishStatTabYr", yr);
@ -2547,7 +2547,7 @@ public class WeFishServiceImpl implements WeFishService {
"eng.RVCD_NAME AS rvcdName, " + "eng.RVCD_NAME AS rvcdName, " +
"eng.HBRVCD AS hbrvcd, " + "eng.HBRVCD AS hbrvcd, " +
"eng.HBRVCD_NAME AS hbrvcdName, " + "eng.HBRVCD_NAME AS hbrvcdName, " +
"sec.RSTCD AS rstcd, " + "section.RSTCD AS rstcd, " +
"eng.ENNM AS ennm, " + "eng.ENNM AS ennm, " +
"eng.BASE_ID AS baseId, " + "eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " + "eng.BASE_NAME AS baseName, " +
@ -2557,9 +2557,9 @@ public class WeFishServiceImpl implements WeFishService {
"FROM SD_WE_R we " + "FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID " + "INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID " +
" AND NVL(fish.IS_DELETED, 0) = 0 " + " AND NVL(fish.IS_DELETED, 0) = 0 " +
"INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD " + "INNER JOIN SD_WE_B_H section ON we.STCD = section.STCD " +
" AND NVL(sec.USFL, 0) = 1 " + " AND NVL(section.USFL, 0) = 1 " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " + " AND NVL(eng.IS_DELETED, 0) = 0 " +
"INNER JOIN V_SD_FISHDICTORY_B dict ON dict.FISH_ID = fish.FTP " + "INNER JOIN V_SD_FISHDICTORY_B dict ON dict.FISH_ID = fish.FTP " +
" AND (eng.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') " + " AND (eng.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') " +
@ -2580,11 +2580,11 @@ public class WeFishServiceImpl implements WeFishService {
end = parseDateTimeSafely(endTime); end = parseDateTimeSafely(endTime);
} }
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("SELECT agg.ftp AS ftp, sec.STCD AS stcd, sec.RSTCD AS rstcds, ") sql.append("SELECT agg.ftp AS ftp, section.STCD AS stcd, section.RSTCD AS rstcds, ")
.append("sec.STNM AS stnm, eng.ENNM AS ennm, ") .append("section.STNM AS stnm, eng.ENNM AS ennm, ")
.append("sec.LGTD AS lgtd, sec.LTTD AS lttd, ") .append("section.LGTD AS lgtd, section.LTTD AS lttd, ")
.append("'ylfb' AS sttp, 'ylfb' AS sttpMap, ") .append("'ylfb' AS sttp, 'ylfb' AS sttpMap, ")
.append("sec.RVCD AS rvcd, sec.ADDVCD AS addvcd, sec.BASE_ID AS baseId, ") .append("section.RVCD AS rvcd, section.ADDVCD AS addvcd, section.BASE_ID AS baseId, ")
.append("'WE' AS sttpCode, 'ylfb' AS anchoPointState, '鱼类分布' AS titleName, ") .append("'WE' AS sttpCode, 'ylfb' AS anchoPointState, '鱼类分布' AS titleName, ")
.append("eng.ELEV AS dtmel ") .append("eng.ELEV AS dtmel ")
.append("FROM (") .append("FROM (")
@ -2592,12 +2592,12 @@ public class WeFishServiceImpl implements WeFishService {
.append("FROM (") .append("FROM (")
.append("SELECT dict.ZY_FISH_ID AS ID, we.STCD AS stcd ") .append("SELECT dict.ZY_FISH_ID AS ID, we.STCD AS stcd ")
.append("FROM SD_WE_R we ") .append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD ") .append("INNER JOIN SD_WE_B_H section ON we.STCD = section.STCD ")
.append(" AND NVL(sec.USFL, 0) = 1 ") .append(" AND NVL(section.USFL, 0) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ") .append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN V_SD_FISHDICTORY_B dict ON dict.FISH_ID = fish.FTP ") .append("INNER JOIN V_SD_FISHDICTORY_B dict ON dict.FISH_ID = fish.FTP ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(we.IS_DELETED, 0) = 0 ") .append("WHERE NVL(we.IS_DELETED, 0) = 0 ")
.append("AND NVL(we.STATUS, 1) = 1 "); .append("AND NVL(we.STATUS, 1) = 1 ");
@ -2625,12 +2625,12 @@ public class WeFishServiceImpl implements WeFishService {
sql.append("AND we.STCD IN (") sql.append("AND we.STCD IN (")
.append("SELECT a.STCD ") .append("SELECT a.STCD ")
.append("FROM SD_WE_R a ") .append("FROM SD_WE_R a ")
.append("INNER JOIN SD_WE_B_H sec2 ON a.STCD = sec2.STCD ") .append("INNER JOIN SD_WE_B_H section2 ON a.STCD = section2.STCD ")
.append(" AND NVL(sec2.USFL, 0) = 1 ") .append(" AND NVL(section2.USFL, 0) = 1 ")
.append("INNER JOIN SD_WEFISH_R b ON a.ID = b.WER_ID ") .append("INNER JOIN SD_WEFISH_R b ON a.ID = b.WER_ID ")
.append(" AND NVL(b.IS_DELETED, 0) = 0 ") .append(" AND NVL(b.IS_DELETED, 0) = 0 ")
.append("INNER JOIN V_SD_FISHDICTORY_B c ON c.FISH_ID = b.FTP ") .append("INNER JOIN V_SD_FISHDICTORY_B c ON c.FISH_ID = b.FTP ")
.append(" AND (sec2.HBRVCD = c.RVCD OR c.RVCD = 'ZY') ") .append(" AND (section2.HBRVCD = c.RVCD OR c.RVCD = 'ZY') ")
.append("WHERE NVL(a.IS_DELETED, 0) = 0 ") .append("WHERE NVL(a.IS_DELETED, 0) = 0 ")
.append("AND NVL(a.STATUS, 1) = 1 "); .append("AND NVL(a.STATUS, 1) = 1 ");
if (start != null && end != null) { if (start != null && end != null) {
@ -2644,16 +2644,16 @@ public class WeFishServiceImpl implements WeFishService {
sql.append("GROUP BY we.STCD, dict.ZY_FISH_ID") sql.append("GROUP BY we.STCD, dict.ZY_FISH_ID")
.append(") t GROUP BY t.stcd") .append(") t GROUP BY t.stcd")
.append(") agg ") .append(") agg ")
.append("INNER JOIN SD_WE_B_H sec ON agg.stcd = sec.STCD ") .append("INNER JOIN SD_WE_B_H section ON agg.stcd = section.STCD ")
.append(" AND NVL(sec.USFL, 0) = 1 ") .append(" AND NVL(section.USFL, 0) = 1 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ") .append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE 1 = 1 "); .append("WHERE 1 = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishPointBaseId", baseId); paramMap.put("weFishPointBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weFishPointBaseId} "); sql.append("AND section.BASE_ID = #{map.weFishPointBaseId} ");
} }
sql.append("ORDER BY sec.STCD ASC"); sql.append("ORDER BY section.STCD ASC");
return sql.toString(); return sql.toString();
} }
@ -2669,14 +2669,14 @@ public class WeFishServiceImpl implements WeFishService {
} }
return switch (field) { return switch (field) {
case "stcd" -> "sec.STCD"; case "stcd" -> "section.STCD";
case "lgtd" -> "sec.LGTD"; case "lgtd" -> "section.LGTD";
case "stnm", "titleName" -> "sec.STNM"; case "stnm", "titleName" -> "section.STNM";
case "ennm" -> "eng.ENNM"; case "ennm" -> "eng.ENNM";
case "rvcd" -> "sec.RVCD"; case "rvcd" -> "section.RVCD";
case "addvcd" -> "sec.ADDVCD"; case "addvcd" -> "section.ADDVCD";
case "baseId" -> "sec.BASE_ID"; case "baseId" -> "section.BASE_ID";
case "rstcd", "rstcds" -> "sec.RSTCD"; case "rstcd", "rstcds" -> "section.RSTCD";
case "tm" -> "latest.TM"; case "tm" -> "latest.TM";
default -> null; default -> null;
}; };
@ -2709,13 +2709,13 @@ public class WeFishServiceImpl implements WeFishService {
return null; return null;
} }
return switch (field) { return switch (field) {
case "stcd" -> "sec.STCD"; case "stcd" -> "section.STCD";
case "stnm", "titleName" -> "sec.STNM"; case "stnm", "titleName" -> "section.STNM";
case "ennm" -> "eng.ENNM"; case "ennm" -> "eng.ENNM";
case "tm" -> "latest.TM"; case "tm" -> "latest.TM";
case "rvcd" -> "sec.RVCD"; case "rvcd" -> "section.RVCD";
case "addvcd" -> "sec.ADDVCD"; case "addvcd" -> "section.ADDVCD";
case "baseId" -> "sec.BASE_ID"; case "baseId" -> "section.BASE_ID";
case "siteStepSort" -> "siteSort.SORT"; case "siteStepSort" -> "siteSort.SORT";
default -> null; default -> null;
}; };
@ -3949,21 +3949,21 @@ public class WeFishServiceImpl implements WeFishService {
.append("COUNT(DISTINCT we.STCD) AS stcdCount, ") .append("COUNT(DISTINCT we.STCD) AS stcdCount, ")
.append("COUNT(DISTINCT fish.FTP) AS ftpCount, ") .append("COUNT(DISTINCT fish.FTP) AS ftpCount, ")
.append("NVL(SUM(NVL(fish.FCNT, 0)), 0) AS fcntSum ") .append("NVL(SUM(NVL(fish.FCNT, 0)), 0) AS fcntSum ")
.append("FROM SD_WE_B_H sec ") .append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ") .append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ") .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("LEFT JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ") .append("LEFT JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ") .append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(sec.USFL, 0) = 1 "); .append("WHERE NVL(section.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weStaticsBaseId", baseId); paramMap.put("weStaticsBaseId", baseId);
sql.append("AND sec.BASE_ID = #{map.weStaticsBaseId} "); sql.append("AND section.BASE_ID = #{map.weStaticsBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weStaticsHbrvcd", hbrvcd); paramMap.put("weStaticsHbrvcd", hbrvcd);
sql.append("AND sec.HBRVCD = #{map.weStaticsHbrvcd} "); sql.append("AND section.HBRVCD = #{map.weStaticsHbrvcd} ");
} }
if (StrUtil.isNotBlank(yr)) { if (StrUtil.isNotBlank(yr)) {
paramMap.put("weStaticsYr", yr); paramMap.put("weStaticsYr", yr);
@ -3981,7 +3981,7 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}"); placeholders.add("#{map." + key + "}");
} }
if (CollUtil.isNotEmpty(placeholders)) { if (CollUtil.isNotEmpty(placeholders)) {
sql.append("AND sec.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND section.RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
} }
} }
return sql.toString(); return sql.toString();
@ -4001,8 +4001,8 @@ public class WeFishServiceImpl implements WeFishService {
private String buildWeFishTDetailSql() { private String buildWeFishTDetailSql() {
return "SELECT " + return "SELECT " +
"sec.STCD AS stcd, " + "section.STCD AS stcd, " +
"sec.STNM AS stnm, " + "section.STNM AS stnm, " +
"eng.BASE_ID AS baseId, " + "eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " + "eng.BASE_NAME AS baseName, " +
"eng.RVCD AS rvcd, " + "eng.RVCD AS rvcd, " +
@ -4044,9 +4044,9 @@ public class WeFishServiceImpl implements WeFishService {
"FROM SD_WE_R we " + "FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID " + "INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID " +
" AND NVL(fish.IS_DELETED, 0) = 0 " + " AND NVL(fish.IS_DELETED, 0) = 0 " +
"INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " + "INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD " +
" AND NVL(sec.USFL, 0) = 1 " + " AND NVL(section.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " + " AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " + "LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " +
" AND NVL(dict.IS_DELETED, 0) = 0 " + " AND NVL(dict.IS_DELETED, 0) = 0 " +
@ -4056,8 +4056,8 @@ public class WeFishServiceImpl implements WeFishService {
private String buildWeFishQgcDetailSql() { private String buildWeFishQgcDetailSql() {
return "SELECT " + return "SELECT " +
"sec.STCD AS stcd, " + "section.STCD AS stcd, " +
"sec.STNM AS stnm, " + "section.STNM AS stnm, " +
"eng.BASE_ID AS baseId, " + "eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " + "eng.BASE_NAME AS baseName, " +
"eng.RVCD AS rvcd, " + "eng.RVCD AS rvcd, " +
@ -4099,9 +4099,9 @@ public class WeFishServiceImpl implements WeFishService {
"FROM SD_WE_R we " + "FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID " + "INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID " +
" AND NVL(fish.IS_DELETED, 0) = 0 " + " AND NVL(fish.IS_DELETED, 0) = 0 " +
"INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " + "INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD " +
// " AND NVL(sec.USFL, 0) = 1 " + // " AND NVL(section.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " + " AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " + "LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " +
// " AND (dict.RVCD = 'ZY' OR dict.RVCD = eng.HBRVCD) " + // " AND (dict.RVCD = 'ZY' OR dict.RVCD = eng.HBRVCD) " +

View File

@ -6,13 +6,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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.exception.BizException; import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.common.utils.UserNameFillHelper;
import com.yfd.platform.config.ResponseResult; 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.domain.PowerDto;
import com.yfd.platform.qgc_lygk.along.domain.SttpDto;
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;
@ -43,9 +41,6 @@ public class MsAlongBController {
@Resource @Resource
private ISdHbrvDicService hbrvDicService; private ISdHbrvDicService hbrvDicService;
@Resource
private UserNameFillHelper userNameFillHelper;
/** /**
* 条件过滤数据列表 * 条件过滤数据列表
*/ */
@ -53,7 +48,6 @@ public class MsAlongBController {
@PostMapping("/GetKendoList") @PostMapping("/GetKendoList")
public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<MsAlongB> result = msAlongBService.getKendoList(dataSourceRequest); DataSourceResult<MsAlongB> result = msAlongBService.getKendoList(dataSourceRequest);
userNameFillHelper.fillUserNames(result.getData());
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }
@ -105,11 +99,4 @@ public class MsAlongBController {
DataSourceResult<PowerDto> result = msAlongBService.getKendoPage(dataSourceRequest); DataSourceResult<PowerDto> result = msAlongBService.getKendoPage(dataSourceRequest);
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }
@PostMapping("/sttp/GetKendoList")
@Operation(summary = "查询站类信息列表支持模糊搜索和STTP_CODE过滤")
public ResponseResult getSttpList(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<SttpDto> result = msAlongBService.getSttpList(dataSourceRequest);
return ResponseResult.successData(result);
}
} }

View File

@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.yfd.platform.annotation.UserIdField;
import com.yfd.platform.annotation.UserNameField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@ -49,12 +47,10 @@ public class MsAlongB implements Serializable {
/** 创建人 */ /** 创建人 */
@TableField("RECORD_USER") @TableField("RECORD_USER")
@UserIdField
private String recordUser; private String recordUser;
/** 创建人名称(非数据库字段) */ /** 创建人名称(非数据库字段) */
@TableField(exist = false) @TableField(exist = false)
@UserNameField
private String recordUserName; private String recordUserName;
/** 创建时间 */ /** 创建时间 */

View File

@ -41,11 +41,7 @@ public class MsAlongDetB implements Serializable {
/** 排序序号 */ /** 排序序号 */
@TableField("SORT") @TableField("SORT")
private Integer sort; private String sort;
// /** 排序序号 */
// @TableField("SORT")
// private String sort;
/** 沿程配置表ID */ /** 沿程配置表ID */
@TableField("ALONG_ID") @TableField("ALONG_ID")

View File

@ -1,32 +0,0 @@
package com.yfd.platform.qgc_lygk.along.domain;
import lombok.Data;
import java.util.Date;
/**
* 站类信息查询结果 DTO
*/
@Data
public class SttpDto {
private String id;
private String sttpCode;
private String sttpName;
private String sttpSname;
private String description;
private Integer enabled;
private String parentId;
private String fullPath;
private Integer treeLevel;
private Integer hasChildren;
private String introduce;
private String logo;
private String inffile;
private Integer internal;
private Integer orderIndex;
private String recordUser;
private Date recordTime;
private String modifyUser;
private Date modifyTime;
}

View File

@ -5,7 +5,6 @@ import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.common.DataSourceResult;
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.domain.PowerDto;
import com.yfd.platform.qgc_lygk.along.domain.SttpDto;
import java.util.List; import java.util.List;
@ -29,14 +28,6 @@ public interface IMsAlongBService extends IService<MsAlongB> {
DataSourceResult<PowerDto> getKendoPage(DataSourceRequest dataSourceRequest); DataSourceResult<PowerDto> getKendoPage(DataSourceRequest dataSourceRequest);
/**
* 查询站类信息列表支持模糊搜索和STTP_CODE过滤
*
* @param dataSourceRequest 数据源请求
* @return 数据源结果
*/
DataSourceResult<SttpDto> getSttpList(DataSourceRequest dataSourceRequest);
// /** // /**
// * 保存或更新沿程配置 // * 保存或更新沿程配置
// * // *

View File

@ -13,7 +13,6 @@ 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;
import com.yfd.platform.qgc_lygk.along.domain.PowerDto; import com.yfd.platform.qgc_lygk.along.domain.PowerDto;
import com.yfd.platform.qgc_lygk.along.domain.SttpDto;
import com.yfd.platform.qgc_lygk.along.mapper.MsAlongBMapper; import com.yfd.platform.qgc_lygk.along.mapper.MsAlongBMapper;
import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService; import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService;
import com.yfd.platform.utils.CodeToNameMetadataBo; import com.yfd.platform.utils.CodeToNameMetadataBo;
@ -155,127 +154,6 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
return result; return result;
} }
@Override
public DataSourceResult<SttpDto> getSttpList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
StringBuilder sql = new StringBuilder("SELECT * FROM SD_STTP_B WHERE NVL(IS_DELETED, 0) = 0");
Map<String, Object> paramMap = new HashMap<>();
// 解析过滤条件
if (dataSourceRequest != null && dataSourceRequest.getFilter() != null) {
String filterSql = parseSttpFilter(dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql);
}
}
// 解析排序
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) || !isSafeSttpField(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));
}
} else {
sql.append(" ORDER BY ORDER_INDEX ASC, STTP_CODE ASC");
}
// 执行分页查询
Page<?> page = loadOptions == null ? null :
QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
List<SttpDto> list = microservicDynamicSQLMapper.pageAllListWithResultType(
page, sql.toString(), paramMap, SttpDto.class
);
DataSourceResult<SttpDto> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page != null ? page.getTotal() : list.size());
result.setAggregates(new HashMap<>());
return result;
}
/**
* 递归解析站类过滤条件
*/
private String parseSttpFilter(FilterDescriptor filter, Map<String, Object> paramMap, int[] paramIndex) {
if (filter == null) return "";
List<FilterDescriptor> childFilters = filter.getFilters();
if (CollUtil.isNotEmpty(childFilters)) {
List<String> childConditions = new ArrayList<>();
for (FilterDescriptor child : childFilters) {
String childSql = parseSttpFilter(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)) return "";
if (!isSafeSttpField(field)) return "";
String paramKey = "stp" + paramIndex[0]++;
paramMap.put(paramKey, value);
if ("contains".equalsIgnoreCase(operator)) {
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 ("neq".equalsIgnoreCase(operator)) {
return field + " != #{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";
} else if (value == null) {
paramMap.remove(paramKey);
return "";
} else {
// 默认 eq
return field + " = #{map." + paramKey + "}";
}
}
/**
* 站类表安全字段白名单
*/
private boolean isSafeSttpField(String field) {
if (StrUtil.isBlank(field)) return false;
Set<String> validFields = new HashSet<>(Arrays.asList(
"ID", "STTP_CODE", "STTP_NAME", "STTP_SNAME", "DESCRIPTION",
"ENABLED", "PARENT_ID", "FULL_PATH", "TREE_LEVEL", "HAS_CHILDREN",
"INTRODUCE", "LOGO", "INFFILE", "INTERNAL", "ORDER_INDEX",
"IS_DELETED"
));
return validFields.contains(field.toUpperCase());
}
/** /**
* 递归解析 FilterDescriptor完美适配你的内部类结构 * 递归解析 FilterDescriptor完美适配你的内部类结构
*/ */

View File

@ -81,7 +81,7 @@ public class MsAlongDetBServiceImpl extends ServiceImpl<MsAlongDetBMapper, MsAlo
List<PowerDto> powerDtos = msAlongDetBMapper.getWbsbList(stcd); List<PowerDto> powerDtos = msAlongDetBMapper.getWbsbList(stcd);
if (CollUtil.isNotEmpty(powerDtos)) { if (CollUtil.isNotEmpty(powerDtos)) {
// 取第一个结果通常一个 STCD 只对应一条记录 // 取第一个结果通常一个 STCD 只对应一条记录
String stnm = powerDtos.getFirst().getStnm(); String stnm = powerDtos.get(0).getStnm();
record.setStnm(stnm); record.setStnm(stnm);
} }
} }
@ -154,7 +154,7 @@ public class MsAlongDetBServiceImpl extends ServiceImpl<MsAlongDetBMapper, MsAlo
entity.setRecordUser(SecurityUtils.getUserId()); // 创建人 entity.setRecordUser(SecurityUtils.getUserId()); // 创建人
//entity.setRecordUser(SecurityUtils.getCurrentUsername()); // 创建人 //entity.setRecordUser(SecurityUtils.getCurrentUsername()); // 创建人
if (node.getSort() != null){ if (node.getSort() != null){
entity.setSort(node.getSort()); // 若传了排序 entity.setSort(String.valueOf(node.getSort())); // 若传了排序
} }
if (StrUtil.isBlank(entity.getId())) { if (StrUtil.isBlank(entity.getId())) {
entity.setId(null); entity.setId(null);

View File

@ -1,119 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.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.threedRoam.domain.MsThreedRoamMEntity;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamBVO;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamMVO;
import com.yfd.platform.qgc_sys.threedRoam.service.IMsThreedRoamMService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.OutputStream;
import java.net.URLEncoder;
/**
* 三维漫游数据主表控制器
*
* @author migration
*/
@RestController
@RequestMapping("/threedroamb")
@Tag(name = "三维漫游数据主表控制器")
public class MsThreedRoamMController {
@Resource
private IMsThreedRoamMService msThreedRoamMService;
@PostMapping("/GetKendoListCust")
@Operation(summary = "条件过滤数据列表")
public ResponseResult getKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<MsThreedRoamMEntity> result = msThreedRoamMService.getKendoListCustReturn(dataSourceRequest);
return ResponseResult.successData(result);
}
@PostMapping("/save")
@Operation(summary = "保存三维漫游数据")
public ResponseResult save(@RequestBody MsThreedRoamMVO vo) {
if (msThreedRoamMService.save(vo)) {
return ResponseResult.success();
} else {
return ResponseResult.error("三维漫游数据保存失败");
}
}
@GetMapping("/getThreedRoamDetails")
@Operation(summary = "获取三维漫游数据详情")
public ResponseResult getThreedRoamDetails(@RequestParam("id") String id) {
return ResponseResult.successData(msThreedRoamMService.getThreedRoamDetails(id));
}
@GetMapping("/delete")
@Operation(summary = "删除三维漫游数据")
public ResponseResult delete(@RequestParam("id") String id) {
if (msThreedRoamMService.delete(id)) {
return ResponseResult.success();
} else {
return ResponseResult.error("三维漫游数据删除失败");
}
}
@PostMapping("/getThreedRoamData")
@Operation(summary = "三维漫游数据")
public MsThreedRoamBVO getThreedRoamData(@RequestBody DataSourceRequest dataSourceRequest) {
return msThreedRoamMService.getThreedRoamData(dataSourceRequest);
}
@PostMapping("/export")
@Operation(summary = "导出三维漫游数据模板")
public void export(HttpServletResponse response) {
try {
String fileName = "三维漫游数据模板";
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet();
workBook.setSheetName(0, "三维漫游数据模板");
XSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("飞行路径Code");
row.createCell(1).setCellValue("飞行路径名称");
row.createCell(2).setCellValue("经度\u00B0(0-180\u00B0)");
row.createCell(3).setCellValue("纬度\u00B0(0-90\u00B0)");
row.createCell(4).setCellValue("高程(m)(小于10000m)");
row.createCell(5).setCellValue("时间(s)(小于100s)");
row.createCell(6).setCellValue("序号");
row.createCell(7).setCellValue("里程碑节点编码(电站编码)");
row.createCell(8).setCellValue("里程碑节点名称(电站名称)");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename="
+ URLEncoder.encode(fileName, "utf-8") + ".xlsx");
OutputStream outputStream = response.getOutputStream();
workBook.write(outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
// ignore
}
}
@PostMapping("/import")
@Operation(summary = "导入三维漫游数据")
public ResponseResult importExcel(MultipartFile file) {
if (msThreedRoamMService.importData(file)) {
return ResponseResult.success();
} else {
return ResponseResult.error("导入三维漫游数据失败");
}
}
}

View File

@ -1,78 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.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 lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 三维漫游数据表实体子表
*
* @author migration
*/
@Data
@TableName("MS_THREEDROAM_B")
public class MsThreedRoamEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_UUID)
@TableField("ID")
private String id;
@TableField("ROAM_ID")
private String roamId;
@TableField("CODE")
private String code;
@TableField("NAME")
private String name;
@TableField("LGTD")
private BigDecimal lgtd;
@TableField("LTTD")
private BigDecimal lttd;
@TableField("DTMEL")
private BigDecimal dtmel;
@TableField("TIME")
private BigDecimal time;
@TableField("ORDER_INDEX")
private Integer orderIndex;
@TableField("STCD")
private String stcd;
@TableField("STNM")
private String stnm;
@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;
@TableField("DELETE_USER")
private String deleteUser;
@TableField("DELETE_TIME")
private Date deleteTime;
}

View File

@ -1,71 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 三维漫游数据主表实体
*
* @author migration
*/
@Data
@TableName("MS_THREEDROAMM_B")
public class MsThreedRoamMEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_UUID)
@TableField("ID")
private String id;
@TableField("CODE")
private String code;
@TableField("NAME")
private String name;
@TableField("RVCD")
private String rvcd;
@TableField("REMARK")
private String remark;
@TableField(value = "RECORD_USER",fill = FieldFill.INSERT)
private String recordUser;
@TableField(value = "RECORD_TIME",fill = FieldFill.INSERT)
private Date recordTime;
@TableField(value = "MODIFY_USER",fill = FieldFill.INSERT_UPDATE)
private String modifyUser;
@TableField(value = "MODIFY_TIME",fill = FieldFill.INSERT_UPDATE)
private Date modifyTime;
@TableField("IS_DELETED")
private Integer isDeleted;
@TableField("DELETE_USER")
private String deleteUser;
@TableField("DELETE_TIME")
private Date deleteTime;
@TableField("BASE_ID")
private String baseId;
/** 河段名称(非表字段,查询时填充) */
@TableField(exist = false)
private String rvcdName;
/** 基地编码(非表字段,查询时填充) */
@TableField(exist = false)
private String bscd;
/** 基地名称(非表字段,查询时填充) */
@TableField(exist = false)
private String bsnm;
}

View File

@ -1,27 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 三维漫游飞行路径数据查询结果 VO
*/
@Data
@Schema(description = "三维漫游飞行路径数据")
public class MsThreedRoamBVO {
@Schema(description = "数据集合 (坐标序列: totalTime, lgtd, lttd, dtmel, ...)")
private List<Object> list;
@Schema(description = "里程碑集合")
private List<String[]> milestoneList;
@Schema(description = "流域/编码")
private String code;
@Schema(description = "总时间")
private BigDecimal totalTime;
}

View File

@ -1,36 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.dto;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
/**
* 三维漫游数据保存/查询 VO
*/
@Data
@Schema(description = "三维漫游数据")
public class MsThreedRoamMVO {
@Schema(description = "主键")
private String id;
@Schema(description = "编码")
private String code;
@Schema(description = "名称")
private String name;
@Schema(description = "河段")
private String rvcd;
@Schema(description = "河段")
private String baseId;
@Schema(description = "备注")
private String remark;
@Schema(description = "漫游数据集合")
private List<MsThreedRoamEntity> list;
}

View File

@ -1,50 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.Date;
/**
* 三维漫游列表 VO
*/
@Data
@Schema(description = "三维漫游列表")
public class MsThreedRoamVO {
@Schema(description = "主键")
private String id;
@Schema(description = "编码")
private String code;
@Schema(description = "名称")
private String name;
@Schema(description = "备注")
private String remark;
@Schema(description = "创建人")
private String recordUser;
@Schema(description = "更新人")
private String modifyUser;
@Schema(description = "创建时间")
private Date recordTime;
@Schema(description = "更新时间")
private Date modifyTime;
@Schema(description = "河段编码")
private String rvcd;
@Schema(description = "河段名称")
private String rvcdName;
@Schema(description = "基地编码")
private String bscd;
@Schema(description = "基地名称")
private String bsnm;
}

View File

@ -1,12 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamMEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 三维漫游数据主表 Mapper
*/
@Mapper
public interface MsThreedRoamMMapper extends BaseMapper<MsThreedRoamMEntity> {
}

View File

@ -1,30 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 三维漫游数据子表 Mapper
*/
@Mapper
public interface MsThreedRoamMapper extends BaseMapper<MsThreedRoamEntity> {
/**
* 批量插入漫游详细数据
*/
int batchInsertList(@Param("list") List<MsThreedRoamEntity> list);
/**
* 根据漫游ID删除详细数据
*/
void deleteTheedRoam(@Param("roamId") String roamId);
/**
* 查询电站编码和名称校验里程碑节点是否存在
*/
MsThreedRoamEntity selectStcd(@Param("stcd") String stcd);
}

View File

@ -1,44 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.service;
import com.yfd.platform.common.DataSourceRequest;
import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamMEntity;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamBVO;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamMVO;
import org.springframework.web.multipart.MultipartFile;
/**
* 三维漫游数据主表 Service 接口
*/
public interface IMsThreedRoamMService {
/**
* 条件过滤数据列表GetKendoListCust
*/
DataSourceResult<MsThreedRoamMEntity> getKendoListCustReturn(DataSourceRequest dataSourceRequest);
/**
* 保存三维漫游数据
*/
Boolean save(MsThreedRoamMVO vo);
/**
* 获取三维漫游数据详情
*/
MsThreedRoamMVO getThreedRoamDetails(String id);
/**
* 删除三维漫游数据
*/
Boolean delete(String id);
/**
* 获取三维漫游飞行路径数据
*/
MsThreedRoamBVO getThreedRoamData(DataSourceRequest dataSourceRequest);
/**
* 导入三维漫游数据
*/
Boolean importData(MultipartFile file);
}

View File

@ -1,418 +0,0 @@
package com.yfd.platform.qgc_sys.threedRoam.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
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.MicroservicDynamicSQLMapper;
import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamEntity;
import com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamMEntity;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamBVO;
import com.yfd.platform.qgc_sys.threedRoam.dto.MsThreedRoamMVO;
import com.yfd.platform.qgc_sys.threedRoam.mapper.MsThreedRoamMMapper;
import com.yfd.platform.qgc_sys.threedRoam.mapper.MsThreedRoamMapper;
import com.yfd.platform.qgc_sys.threedRoam.service.IMsThreedRoamMService;
import com.yfd.platform.utils.QgcQueryWrapperUtil;
import jakarta.annotation.Resource;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 三维漫游数据主表 Service 实现类
*/
@Service
public class MsThreedRoamMServiceImpl extends ServiceImpl<MsThreedRoamMMapper, MsThreedRoamMEntity> implements IMsThreedRoamMService {
@Resource
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
@Resource
private MsThreedRoamMapper msThreedRoamMapper;
@Resource
private MsThreedRoamMMapper msThreedRoamMMapper;
@Override
public DataSourceResult<MsThreedRoamMEntity> getKendoListCustReturn(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
StringBuilder sql = new StringBuilder();
sql.append("SELECT a.ID, a.CODE, a.NAME, a.RVCD, b.HBRVNM AS rvcdName, a.REMARK, ")
.append("a.RECORD_USER, a.RECORD_TIME, a.MODIFY_USER, a.MODIFY_TIME, ")
.append("c.BASEID AS bscd, c.BASENAME AS bsnm ")
.append("FROM MS_THREEDROAMM_B a ")
.append("LEFT JOIN SD_HBRV_DIC b ON a.RVCD = b.HBRVCD AND b.IS_DELETED = 0 ")
.append("LEFT JOIN SD_HYDROBASE c ON b.BASEID = c.BASEID AND c.IS_DELETED = 0 ")
.append("WHERE a.IS_DELETED = 0");
Map<String, Object> paramMap = new HashMap<>();
String filterSql = buildFilterSql(dataSourceRequest == null ? null : dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) {
sql.append(" AND ").append(filterSql);
}
// 排序
sql.append(" ORDER BY a.CODE ASC");
Page<?> page = loadOptions == null ? null
: QgcQueryWrapperUtil.buildPage(loadOptions, loadOptions.getSkip(), loadOptions.getTake());
List<MsThreedRoamMEntity> list = microservicDynamicSQLMapper.pageAllListWithResultType(
page, sql.toString(), paramMap, MsThreedRoamMEntity.class
);
DataSourceResult<MsThreedRoamMEntity> result = new DataSourceResult<>();
result.setData(list);
result.setTotal(page == null ? list.size() : page.getTotal());
result.setAggregates(new HashMap<>());
return result;
}
/**
* 递归构建过滤 SQL
*/
private String buildFilterSql(com.yfd.platform.common.DataSourceRequest.FilterDescriptor filter,
Map<String, Object> paramMap, int[] indexHolder) {
if (filter == null) return "";
List<com.yfd.platform.common.DataSourceRequest.FilterDescriptor> childFilters = filter.getFilters();
if (CollUtil.isNotEmpty(childFilters)) {
List<String> childConditions = new ArrayList<>();
for (com.yfd.platform.common.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) + ")";
}
String field = filter.getField();
Object value = filter.getValue();
String operator = filter.getOperator();
if (StrUtil.isBlank(field)) return "";
String column = mapToListColumn(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 = "t" + 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 + "}";
}
return "";
}
private String mapToListColumn(String field) {
if (StrUtil.isBlank(field)) return null;
return switch (field) {
case "code" -> "a.CODE";
case "name" -> "a.NAME";
case "rvcd" -> "a.RVCD";
case "remark" -> "a.REMARK";
default -> null;
};
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean save(MsThreedRoamMVO vo) {
MsThreedRoamMEntity entity = new MsThreedRoamMEntity();
BeanUtils.copyProperties(vo, entity);
// 校验编码是否存在
if (!checkCodeExist(entity)) {
throw new BizException("该编码已存在");
}
boolean result;
if (StrUtil.isNotBlank(entity.getId())) {
result = this.updateById(entity);
} else {
result = this.save(entity);
}
if (result && CollUtil.isNotEmpty(vo.getList())) {
// 删除旧数据
msThreedRoamMapper.deleteTheedRoam(entity.getId());
// 批量插入新数据
List<MsThreedRoamEntity> batchList = new ArrayList<>();
List<MsThreedRoamEntity> detailList = vo.getList();
for (int i = 0; i < detailList.size(); i++) {
MsThreedRoamEntity detail = detailList.get(i);
if (StrUtil.isBlank(detail.getStcd())) {
detail.setStcd("");
}
if (StrUtil.isBlank(detail.getStnm())) {
detail.setStnm("");
}
detail.setRoamId(entity.getId());
detail.setCode(vo.getCode());
detail.setName(vo.getName());
batchList.add(detail);
if (batchList.size() == 2000 || i == detailList.size() - 1) {
int fruit = msThreedRoamMapper.batchInsertList(batchList);
if (fruit < 1) {
throw new BizException("保存三维漫游数据失败");
}
batchList = new ArrayList<>();
}
}
}
return result;
}
/**
* 校验编码是否存在修改时排除自身
*/
private boolean checkCodeExist(MsThreedRoamMEntity entity) {
QueryWrapper<MsThreedRoamMEntity> wrapper = new QueryWrapper<>();
wrapper.eq("CODE", entity.getCode());
MsThreedRoamMEntity exist = msThreedRoamMMapper.selectOne(wrapper);
if (exist != null && !exist.getId().equals(entity.getId())) {
return false;
}
return true;
}
@Override
public MsThreedRoamMVO getThreedRoamDetails(String id) {
MsThreedRoamMVO vo = new MsThreedRoamMVO();
MsThreedRoamMEntity entity = msThreedRoamMMapper.selectById(id);
if (entity != null) {
BeanUtils.copyProperties(entity, vo);
QueryWrapper<MsThreedRoamEntity> wrapper = new QueryWrapper<>();
wrapper.eq("ROAM_ID", id);
wrapper.orderByAsc("ORDER_INDEX");
List<MsThreedRoamEntity> list = msThreedRoamMapper.selectList(wrapper);
vo.setList(list);
}
return vo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(String id) {
// 删除子表数据
QueryWrapper<MsThreedRoamEntity> wrapper = new QueryWrapper<>();
wrapper.eq("ROAM_ID", id);
List<MsThreedRoamEntity> list = msThreedRoamMapper.selectList(wrapper);
if (CollUtil.isNotEmpty(list)) {
msThreedRoamMapper.delete(wrapper);
}
// 删除主表数据
int result = msThreedRoamMMapper.deleteById(id);
return result > 0;
}
@Override
public MsThreedRoamBVO getThreedRoamData(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
String code = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "code");
MsThreedRoamMEntity entity = msThreedRoamMMapper.selectOne(
new QueryWrapper<MsThreedRoamMEntity>().eq("CODE", code));
if (entity == null) {
throw new BizException("该流域没有三维漫游数据");
}
QueryWrapper<MsThreedRoamEntity> wrapper = new QueryWrapper<>();
wrapper.eq("ROAM_ID", entity.getId());
wrapper.orderByAsc("ORDER_INDEX");
List<MsThreedRoamEntity> threedRoamList = msThreedRoamMapper.selectList(wrapper);
BigDecimal totalTime = BigDecimal.ZERO;
List<Object> lists = new ArrayList<>();
String baseCode = "";
List<String[]> milestoneList = new ArrayList<>();
List<String> stcdList = new ArrayList<>();
for (MsThreedRoamEntity detail : threedRoamList) {
totalTime = totalTime.add(detail.getTime().multiply(new BigDecimal("0.2")));
lists.add(totalTime);
lists.add(detail.getLgtd());
lists.add(detail.getLttd());
lists.add(detail.getDtmel());
baseCode = detail.getCode();
if (StrUtil.isNotBlank(detail.getStcd()) && !stcdList.contains(detail.getStnm())) {
stcdList.add(detail.getStnm());
milestoneList.add(new String[]{detail.getStnm(), totalTime.toString()});
}
}
MsThreedRoamBVO vo = new MsThreedRoamBVO();
vo.setList(lists);
vo.setTotalTime(totalTime);
vo.setCode(baseCode);
vo.setMilestoneList(milestoneList);
return vo;
}
@Override
public Boolean importData(MultipartFile file) {
if (file == null) {
throw new BizException("请上传文件");
}
List<MsThreedRoamEntity> list = new ArrayList<>();
try {
XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream());
int sheets = workbook.getNumberOfSheets();
for (int i = 0; i < sheets; i++) {
XSSFSheet sheet = workbook.getSheetAt(i);
int rows = sheet.getPhysicalNumberOfRows();
for (int j = 1; j < rows; j++) {
MsThreedRoamEntity detail = new MsThreedRoamEntity();
XSSFRow row = sheet.getRow(j);
detail.setCode(row.getCell(0).toString());
detail.setName(row.getCell(1).toString());
double lgtd = Double.parseDouble(row.getCell(2).toString());
if (lgtd > 180 || lgtd < 0) {
throw new BizException("经度必须在0-180\u00B0之间");
}
detail.setLgtd(new BigDecimal(row.getCell(2).toString()));
double lttd = Double.parseDouble(row.getCell(3).toString());
if (lttd > 90 || lttd < 0) {
throw new BizException("纬度必须在0-90\u00B0之间");
}
detail.setLttd(new BigDecimal(row.getCell(3).toString()));
double dtmel = Double.parseDouble(row.getCell(4).toString());
if (dtmel >= 10000 || dtmel < 0) {
throw new BizException("高程小于10000米");
}
detail.setDtmel(new BigDecimal(row.getCell(4).toString()).setScale(3, BigDecimal.ROUND_HALF_UP));
double time = Double.parseDouble(row.getCell(5).toString());
if (time >= 100 || time < 0) {
throw new BizException("时间小于100秒");
}
detail.setTime(new BigDecimal(row.getCell(5).toString()).setScale(1, BigDecimal.ROUND_HALF_UP));
int px = (int) Double.parseDouble(row.getCell(6).toString());
detail.setOrderIndex(px);
if (row.getCell(7) != null && StrUtil.isNotBlank(row.getCell(7).toString())) {
detail.setStcd(row.getCell(7).toString());
} else {
detail.setStcd("");
}
if (row.getCell(8) != null && StrUtil.isNotBlank(row.getCell(8).toString())) {
detail.setStnm(row.getCell(8).toString());
} else {
detail.setStnm("");
}
list.add(detail);
}
}
} catch (IOException e) {
throw new BizException("导入文档解析错误");
}
return saveImportData(list);
}
/**
* 保存导入数据
*/
@Transactional(rollbackFor = Exception.class)
public Boolean saveImportData(List<MsThreedRoamEntity> list) {
Map<String, List<MsThreedRoamEntity>> collect = list.stream()
.collect(Collectors.groupingBy(MsThreedRoamEntity::getCode));
collect.forEach((code, roamList) -> {
MsThreedRoamMEntity entity = msThreedRoamMMapper.selectOne(
new QueryWrapper<MsThreedRoamMEntity>().eq("CODE", code));
if (entity == null) {
entity = new MsThreedRoamMEntity();
entity.setCode(code);
}
entity.setName(roamList.get(0).getName());
boolean result;
if (StrUtil.isNotBlank(entity.getId())) {
result = this.updateById(entity);
} else {
result = this.save(entity);
}
if (result) {
msThreedRoamMapper.deleteTheedRoam(entity.getId());
List<MsThreedRoamEntity> batchList = new ArrayList<>();
List<String> stcdExistList = new ArrayList<>();
List<String> newStcdList = new ArrayList<>();
for (int i = 0; i < roamList.size(); i++) {
MsThreedRoamEntity detail = roamList.get(i);
detail.setRoamId(entity.getId());
if (StrUtil.isNotBlank(detail.getStcd())) {
if (!stcdExistList.contains(detail.getStcd()) && !newStcdList.contains(detail.getStcd())) {
MsThreedRoamEntity stcdEntity = msThreedRoamMapper.selectStcd(detail.getStcd());
if (stcdEntity != null) {
stcdExistList.add(detail.getStcd());
} else {
newStcdList.add(detail.getStcd());
detail.setStcd("");
detail.setStnm("");
}
} else if (newStcdList.contains(detail.getStcd())) {
detail.setStcd("");
detail.setStnm("");
}
}
batchList.add(detail);
if (batchList.size() == 2000 || i == roamList.size() - 1) {
int fruit = msThreedRoamMapper.batchInsertList(batchList);
if (fruit < 1) {
throw new BizException("导入三维漫游数据失败");
}
batchList = new ArrayList<>();
}
}
}
});
return true;
}
}

View File

@ -1,30 +0,0 @@
package com.yfd.platform.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class AsyncWithCompletableFuture {
public static void main(String[] args) throws Exception {
// 异步执行任务返回 CompletableFuture
CompletableFuture<List<String>> future = CompletableFuture.supplyAsync(() -> {
List<String> list = new ArrayList<>();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return list;
});
// 注册回调非阻塞
future.thenAccept(result -> System.out.println("回调收到结果: " + result));
// 主线程继续执行
System.out.println("主线程继续...");
// 防止主线程提前退出如果不想阻塞可以省略
future.join(); // future.get()
}
}

View File

@ -11,10 +11,8 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
druid: druid:
master: master:
# driverClassName: oracle.jdbc.OracleDriver driverClassName: oracle.jdbc.OracleDriver
# url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}" url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}"
driverClassName: dm.jdbc.driver.DmDriver
url: "${DB_MASTER_URL:jdbc:dm://172.16.21.143:5236/QGC_REFA}"
username: "${DB_MASTER_USERNAME:QGC_REFA}" username: "${DB_MASTER_USERNAME:QGC_REFA}"
password: "${DB_MASTER_PASSWORD:Y4M4K1oCkL8U}" password: "${DB_MASTER_PASSWORD:Y4M4K1oCkL8U}"
initial-size: 5 initial-size: 5
@ -37,17 +35,14 @@ spring:
remove-abandoned-timeout: 1800 remove-abandoned-timeout: 1800
log-abandoned: true log-abandoned: true
break-after-acquire-failure: true break-after-acquire-failure: true
time-between-connect-error-millis: 30000 time-between-connect-error-millis: 300000
pool-prepared-statements: true pool-prepared-statements: true
max-open-prepared-statements: 100 max-open-prepared-statements: 100
max-pool-prepared-statement-per-connection-size: 100 max-pool-prepared-statement-per-connection-size: 100
connection-properties: connectTimeout=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000 connection-properties: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000
# connection-properties: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000
slave: slave:
driverClassName: dm.jdbc.driver.DmDriver driverClassName: oracle.jdbc.OracleDriver
url: "${DB_MASTER_URL:jdbc:dm://172.16.21.143:5236/QGC_REFA}" url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}"
# driverClassName: oracle.jdbc.OracleDriver
# url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}"
username: "${DB_SLAVE_USERNAME:QGC_REFA}" username: "${DB_SLAVE_USERNAME:QGC_REFA}"
password: "${DB_SLAVE_PASSWORD:Y4M4K1oCkL8U}" password: "${DB_SLAVE_PASSWORD:Y4M4K1oCkL8U}"
initial-size: 5 initial-size: 5
@ -70,12 +65,11 @@ spring:
remove-abandoned-timeout: 1800 remove-abandoned-timeout: 1800
log-abandoned: true log-abandoned: true
break-after-acquire-failure: true break-after-acquire-failure: true
time-between-connect-error-millis: 30000 time-between-connect-error-millis: 300000
pool-prepared-statements: true pool-prepared-statements: true
max-open-prepared-statements: 100 max-open-prepared-statements: 100
max-pool-prepared-statement-per-connection-size: 100 max-pool-prepared-statement-per-connection-size: 100
connection-properties: connectTimeout=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000 connection-properties: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000
# connection-properties: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000
filter: filter:
stat: stat:
enabled: true enabled: true

View File

@ -191,66 +191,6 @@
ORDER BY D.TM DESC, D.ROW_INDEX ASC ORDER BY D.TM DESC, D.ROW_INDEX ASC
</select> </select>
<select id="selectJoinPageWithStationScope" resultMap="JoinResultMap">
SELECT
<include refid="joinColumns"/>
FROM FISH_DRAFT_DATA D
LEFT JOIN SD_FPSS_B_H F ON D.STCD = F.STCD
LEFT JOIN SD_FISHDICTORY_B FB ON FB.ID = D.FTP
LEFT JOIN SD_ENGINFO_B_H E ON F.RSTCD = E.STCD
LEFT JOIN SD_HYDROBASE H ON E.BASE_ID = H.BASEID
<include refid="rvcdDisplayJoin"/>
WHERE D.DELETED_FLAG = 0
<if test="stcd != null and stcd != ''">
AND D.STCD = #{stcd}
</if>
<if test="userId != null and userId != ''">
AND D.CREATED_BY = #{userId}
</if>
<if test="ftp != null and ftp != ''">
AND D.FTP = #{ftp}
</if>
<if test="rstcd != null and rstcd != ''">
AND F.RSTCD = #{rstcd}
</if>
<if test="baseId != null and baseId != ''">
AND E.BASE_ID = #{baseId}
</if>
<if test="rvcd != null and rvcd != ''">
AND E.REACHCD = #{rvcd}
</if>
<if test="hbrvcd != null and hbrvcd != ''">
AND E.HBRVCD = #{hbrvcd}
</if>
<if test="direction != null and direction != ''">
AND D.DIRECTION = #{direction}
</if>
<if test="status != null and status != ''">
AND D.STATUS = #{status}
</if>
<if test="approvalId != null and approvalId != ''">
AND D.APPROVAL_ID = #{approvalId}
</if>
<if test="startTime != null and startTime != ''">
AND D.STRDT &gt;= TO_DATE(#{startTime}, 'yyyy-mm-dd hh24:mi:ss')
</if>
<if test="endTime != null and endTime != ''">
AND D.STRDT &lt;= TO_DATE(#{endTime}, 'yyyy-mm-dd hh24:mi:ss')
</if>
<if test="stationCodes != null and stationCodes.size() > 0">
AND D.STCD IN (
SELECT F2.STCD
FROM SD_FPSS_B_H F2
INNER JOIN SD_ENGINFO_B_H E2 ON F2.RSTCD = E2.STCD
WHERE E2.STCD IN
<foreach collection="stationCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
)
</if>
ORDER BY H.ORDER_INDEX ASC,E.ORDER_INDEX ASC, D.TM DESC, D.ROW_INDEX ASC
</select>
<select id="selectJoinList" resultMap="JoinResultMap"> <select id="selectJoinList" resultMap="JoinResultMap">
SELECT SELECT
<include refid="joinColumns"/> <include refid="joinColumns"/>

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yfd.platform.qgc_sys.threedRoam.mapper.MsThreedRoamMapper">
<insert id="batchInsertList" parameterType="List">
INSERT INTO MS_THREEDROAM_B(ROAM_ID, CODE, NAME, LGTD, LTTD, DTMEL, TIME, ORDER_INDEX, STCD, STNM)
SELECT *
FROM (
<foreach collection="list" item="item" separator="union all">
SELECT
#{item.roamId} AS roamId,
#{item.code} AS code,
#{item.name} AS name,
#{item.lgtd} AS lgtd,
#{item.lttd} AS lttd,
#{item.dtmel} AS dtmel,
#{item.time} AS time,
#{item.orderIndex} AS orderIndex,
#{item.stcd} AS stcd,
#{item.stnm} AS stnm
FROM DUAL
</foreach>
)
</insert>
<delete id="deleteTheedRoam" parameterType="java.lang.String">
DELETE FROM MS_THREEDROAM_B
<where>
<if test="roamId != null and roamId != ''">
AND ROAM_ID = #{roamId}
</if>
</where>
</delete>
<select id="selectStcd" resultType="com.yfd.platform.qgc_sys.threedRoam.domain.MsThreedRoamEntity">
SELECT STCD, STNM FROM V_MS_STBPRP_T
WHERE STTP_CODE = 'ENG'
<if test="stcd != null and stcd != ''">
AND STCD = #{stcd}
</if>
</select>
</mapper>

View File

@ -12,7 +12,6 @@
"dependencies": { "dependencies": {
"@ant-design/icons-vue": "^7.0.1", "@ant-design/icons-vue": "^7.0.1",
"@element-plus/icons-vue": "^2.0.10", "@element-plus/icons-vue": "^2.0.10",
"@turf/turf": "^7.3.5",
"@types/js-cookie": "^3.0.2", "@types/js-cookie": "^3.0.2",
"@univerjs-pro/exchange-client": "0.15.0", "@univerjs-pro/exchange-client": "0.15.0",
"@univerjs/core": "0.14.0", "@univerjs/core": "0.14.0",

File diff suppressed because it is too large Load Diff

View File

@ -9,18 +9,9 @@ import {
} from '@/utils/popupHtmlGenerator'; } from '@/utils/popupHtmlGenerator';
import { useModelStore } from '@/store/modules/model'; import { useModelStore } from '@/store/modules/model';
import { getNearbyPointDensityDisplayRules } from '@/modules/map/domain/nearby-point-rules'; import { getNearbyPointDensityDisplayRules } from '@/modules/map/domain/nearby-point-rules';
import {
LoadOSGB,
removeQxsy,
osgbChangeClick,
osgbLocation,
type OSGBItem
} from './osgbUtils';
export class MapCesium implements MapInterface { export class MapCesium implements MapInterface {
private viewer: Cesium.Viewer | null = null; private viewer: Cesium.Viewer | null = null;
private _ready = false;
private _pendingOSGBItems: OSGBItem[] = [];
private clickEventHandler: Cesium.ScreenSpaceEventHandler | null = null; private clickEventHandler: Cesium.ScreenSpaceEventHandler | null = null;
private popupElement: HTMLElement | null = null; private popupElement: HTMLElement | null = null;
private hoveredEntityId: string | null = null; private hoveredEntityId: string | null = null;
@ -109,7 +100,6 @@ export class MapCesium implements MapInterface {
this.containerId = container.id; this.containerId = container.id;
this.containerElement = container; this.containerElement = container;
this.showLoadingOverlay(container); this.showLoadingOverlay(container);
const token = 'bearer fa8aa37c-1e52-4631-a699-625b4147ace8';
this.viewer = new Cesium.Viewer(container, { this.viewer = new Cesium.Viewer(container, {
animation: false, animation: false,
@ -124,33 +114,35 @@ export class MapCesium implements MapInterface {
infoBox: false, infoBox: false,
selectionIndicator: false, selectionIndicator: false,
shouldAnimate: true, shouldAnimate: true,
requestRenderMode: false, requestRenderMode: true,
targetFrameRate: 30, targetFrameRate: 30,
terrainProvider: new Cesium.EllipsoidTerrainProvider() // 默认不使用地形 terrainProvider: new Cesium.EllipsoidTerrainProvider()
}); });
this.viewer.cesiumWidget.creditContainer.style.display = 'none'; this.viewer.cesiumWidget.creditContainer.style.display = 'none';
const layers = this.viewer.imageryLayers; const layers = this.viewer.imageryLayers;
layers.removeAll(); layers.removeAll();
const arcgisUrl =
'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/';
// const provider = await Cesium.ArcGisMapServerImageryProvider.fromUrl(
// arcgisUrl,
// {
// enablePickFeatures: false,
// maximumLevel: 19
// }
// );
const provider = new Cesium.UrlTemplateImageryProvider({ const provider = new Cesium.UrlTemplateImageryProvider({
url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', url: 'https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',
maximumLevel: 19, maximumLevel: 19,
credit: credit:
'Esri, DigitalGlobe, GeoEye, i-cubed, USDA FSA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community' 'Esri, DigitalGlobe, GeoEye, i-cubed, USDA FSA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community'
}); });
const customTerrain = await Cesium.CesiumTerrainProvider.fromUrl(
import.meta.env.VITE_APP_MAP_URL + '/Terrain?token=' + token, // 指向包含 layer.json 的目录
{
requestVertexNormals: true
}
);
// 应用地形到Viewer
this.viewer.terrainProvider = customTerrain;
this.imageryBaseLayer = layers.addImageryProvider(provider); this.imageryBaseLayer = layers.addImageryProvider(provider);
this.imageryBaseLayer.show = true; this.imageryBaseLayer.show = true;
this.viewer.scene.globe.depthTestAgainstTerrain = true; this.viewer.scene.globe.depthTestAgainstTerrain = false;
this.viewer.scene.globe.show = true; this.viewer.scene.globe.show = true;
this.viewer.scene.fog.enabled = false; this.viewer.scene.fog.enabled = false;
this.viewer.scene.fxaa = false; this.viewer.scene.fxaa = false;
@ -161,14 +153,7 @@ export class MapCesium implements MapInterface {
this.setupClickHandler(); this.setupClickHandler();
this.setupCameraPopupReset(); this.setupCameraPopupReset();
this._ready = true;
console.log('[Cesium] init complete, viewer ready'); console.log('[Cesium] init complete, viewer ready');
// 初始化完成后等 5 秒再加载倾斜摄影,确保渲染管线稳定
setTimeout(() => {
this.flushPendingOSGB();
}, 5000);
return this.viewer; return this.viewer;
} catch (error) { } catch (error) {
this.hideLoadingOverlay(); this.hideLoadingOverlay();
@ -540,40 +525,10 @@ export class MapCesium implements MapInterface {
this.popupElement.innerHTML = ''; this.popupElement.innerHTML = '';
} }
/** 判断 3D 位置是否被地形遮挡(基于射线与 terrain 求交) */
private isPositionBehindTerrain(position: Cesium.Cartesian3): boolean {
if (!this.viewer) return true;
const scene = this.viewer.scene;
const windowCoord = Cesium.SceneTransforms.worldToWindowCoordinates(
scene,
position
);
if (!windowCoord) return true; // 在地球背面
const ray = scene.camera.getPickRay(windowCoord);
if (!ray) return false;
const terrainPos = scene.globe.pick(ray, scene);
if (!terrainPos) return false; // 该方向无地形
const cameraPos = scene.camera.positionWC;
const terrainDist = Cesium.Cartesian3.distance(cameraPos, terrainPos);
const entityDist = Cesium.Cartesian3.distance(cameraPos, position);
// 地形交点明显更近 → 实体被遮挡
return terrainDist + 10 < entityDist;
}
/** 根据实体世界坐标把 popup 定位到屏幕坐标 */ /** 根据实体世界坐标把 popup 定位到屏幕坐标 */
private updatePopupPosition(position: Cesium.Cartesian3): void { private updatePopupPosition(position: Cesium.Cartesian3): void {
if (!this.viewer || !this.popupElement) return; if (!this.viewer || !this.popupElement) return;
// 被地形遮挡时隐藏 popup
if (this.isPositionBehindTerrain(position)) {
this.hidePopup();
return;
}
const canvasPosition = Cesium.SceneTransforms.worldToWindowCoordinates( const canvasPosition = Cesium.SceneTransforms.worldToWindowCoordinates(
this.viewer.scene, this.viewer.scene,
position position
@ -685,9 +640,6 @@ export class MapCesium implements MapInterface {
) )
return; return;
// 被地形遮挡的不展示 popup
if (this.isPositionBehindTerrain(position)) return;
const rawData: Record<string, any> = { const rawData: Record<string, any> = {
...((entity as any)._rawData || {}) ...((entity as any)._rawData || {})
}; };
@ -1106,8 +1058,6 @@ export class MapCesium implements MapInterface {
// 取消飞行超时和加载动画 // 取消飞行超时和加载动画
this.clearFlightFallbackTimer(); this.clearFlightFallbackTimer();
this.hideLoadingOverlay(); this.hideLoadingOverlay();
this._ready = false;
this._pendingOSGBItems = [];
// 批量 popup 和 hover popup // 批量 popup 和 hover popup
this.isBatchPopupMode = false; this.isBatchPopupMode = false;
@ -1615,7 +1565,7 @@ export class MapCesium implements MapInterface {
verticalOrigin: Cesium.VerticalOrigin.CENTER, verticalOrigin: Cesium.VerticalOrigin.CENTER,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER, horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
scaleByDistance: new Cesium.NearFarScalar(1.0e3, 1.5, 2.0e7, 0.8), scaleByDistance: new Cesium.NearFarScalar(1.0e3, 1.5, 2.0e7, 0.8),
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND disableDepthTestDistance: Number.POSITIVE_INFINITY
} as any, } as any,
label: { label: {
text: labelText || undefined, text: labelText || undefined,
@ -1628,7 +1578,7 @@ export class MapCesium implements MapInterface {
pixelOffset: dynamicLabelOffset as any, pixelOffset: dynamicLabelOffset as any,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER, horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
scaleByDistance: new Cesium.NearFarScalar(1.0e3, 1.2, 2.0e7, 0.8), scaleByDistance: new Cesium.NearFarScalar(1.0e3, 1.2, 2.0e7, 0.8),
heightReference: Cesium.HeightReference.CLAMP_TO_GROUND disableDepthTestDistance: Number.POSITIVE_INFINITY
} as any, } as any,
properties: { properties: {
...item, ...item,
@ -2753,57 +2703,4 @@ export class MapCesium implements MapInterface {
left.top - padding > right.bottom left.top - padding > right.bottom
); );
} }
// ==================== 倾斜摄影(OSGB) ====================
/**
* 3D Tileset
* viewer 5
*/
addQxsyLayer(item: OSGBItem): void {
if (!this.viewer || !this._ready) {
// 未就绪:放入等待队列
if (!this._pendingOSGBItems.includes(item)) {
this._pendingOSGBItems.push(item);
}
return;
}
LoadOSGB(this.viewer, item);
}
/**
*
*/
private flushPendingOSGB(): void {
if (!this.viewer || this.viewer.isDestroyed()) return;
const items = this._pendingOSGBItems.splice(0);
console.log(`[Cesium] 开始加载 ${items.length} 个待加载的倾斜摄影模型`);
items.forEach(item => LoadOSGB(this.viewer!, item));
}
/**
*
*/
removeQxsyLayer(item: OSGBItem): void {
if (!this.viewer) return;
// 从待加载队列中移除,防止已被移除的模型在 flushPendingOSGB 时又被加载
this._pendingOSGBItems = this._pendingOSGBItems.filter(i => i !== item);
removeQxsy(this.viewer, item);
}
/**
*
*/
qxsyChangeClick(item: OSGBItem, checked: boolean): void {
if (!this.viewer) return;
osgbChangeClick(this.viewer, item, checked);
}
/**
*
*/
qxsyToPosition(item: OSGBItem): void {
if (!this.viewer) return;
osgbLocation(this.viewer, item);
}
} }

View File

@ -276,22 +276,4 @@ export class MapClass implements MapClassInterface {
getCurrentZoom(): number | undefined { getCurrentZoom(): number | undefined {
return this.service.getCurrentZoom(); return this.service.getCurrentZoom();
} }
// ==================== 倾斜摄影 ====================
addQxsyLayer(item: any): void {
this.service.addQxsyLayer?.(item);
}
removeQxsyLayer(item: any): void {
this.service.removeQxsyLayer?.(item);
}
qxsyChangeClick(item: any, checked: boolean): void {
this.service.qxsyChangeClick?.(item, checked);
}
qxsyToPosition(item: any): void {
this.service.qxsyToPosition?.(item);
}
} }

View File

@ -130,26 +130,35 @@ export interface MapInterface {
* 2D zoom3D * 2D zoom3D
*/ */
getCurrentZoom(): number | undefined; getCurrentZoom(): number | undefined;
// /**
// * 加载倾斜摄影数据
// * @param HH3DUrlArray
// */
// addQxsyLayer(HH3DUrlArray: siteItem): void
/** // /**
* // * 移除倾斜摄影数据
*/ // * @param HH3DUrlArray
addQxsyLayer(item: any): void; // */
// removeQxsyLayer(HH3DUrlArray: siteItem): void
/** // /**
* // * 倾斜摄影定位
*/ // * @param HH3DUrlArray
removeQxsyLayer(item: any): void; // */
// qxsyToPosition(HH3DUrlArray: siteItem): void
/** // /**
* // * 倾斜摄影裁剪
*/ // * @param HH3DUrlArray
qxsyChangeClick(item: any, checked: boolean): void; // */
// qxsyClipBoundary(HH3DUrlArray: siteItem): void
/** // /**
* // * 移除倾斜摄影裁剪
*/ // * @param HH3DUrlArray
qxsyToPosition(item: any): void; // */
// removeQxsyClipBoundary(HH3DUrlArray: siteItem): void
/** /**
* *

View File

@ -2607,10 +2607,4 @@ export class MapOl implements MapInterface {
this.geoJsonData = null; this.geoJsonData = null;
this.geoJsonData1 = null; this.geoJsonData1 = null;
} }
// 倾斜摄影方法仅3D支持2D为空实现
addQxsyLayer(_item: any): void {}
removeQxsyLayer(_item: any): void {}
qxsyChangeClick(_item: any, _checked: boolean): void {}
qxsyToPosition(_item: any): void {}
} }

View File

@ -1,747 +0,0 @@
/**
* (OSGB)
* osgbTool.ts
*
* 使用字段: url, boundary, location, height, accuracy
*/
import * as turf from '@turf/turf';
import * as Cesium from 'cesium';
import { getToken } from '@/utils/auth';
// ==================== 类型定义 ====================
export interface OSGBLocation {
destination: number[]; // [x, y, z] 或 [lng, lat, height]
orientation: {
heading: number;
pitch: number;
roll: number;
};
center: number[];
}
export interface OSGBItem {
/** 3D Tileset 服务地址 */
url: string;
/** GeoJSON Polygon 边界(用于裁切) */
boundary?: any;
/** 定位信息 */
location?: OSGBLocation | string;
/** 模型高度偏移 */
height?: number;
/** 屏幕空间误差 (默认 16) */
accuracy?: number;
/** 内部状态 - 不要手动设置 */
osgbtitles?: any;
cartesian3?: any;
clippingPlanes?: any;
eventListener?: any;
_loading?: boolean;
_loadId?: number;
/** 用户手动关闭开关标志:为 true 时不自动加载/显示,只做显隐切换 */
_switchOff?: boolean;
}
// ==================== 内部状态(每个 OSGB 实例独立) ====================
interface OSGBInstanceState {
destination: Cesium.Cartesian3 | null;
orientation: any;
timelookat: any;
time: number;
num: number;
witetime: number;
timeout: any;
}
const instanceStates = new WeakMap<OSGBItem, OSGBInstanceState>();
function getState(obj: OSGBItem): OSGBInstanceState {
let state = instanceStates.get(obj);
if (!state) {
state = {
destination: null,
orientation: null,
timelookat: null,
time: 0,
num: 0,
witetime: 0,
timeout: undefined
};
instanceStates.set(obj, state);
}
return state;
}
function clearState(obj: OSGBItem) {
const state = instanceStates.get(obj);
if (state) {
clearTimeout(state.timeout);
clearInterval(state.timelookat);
}
instanceStates.delete(obj);
}
// ==================== 3D Tileset 场景管理 ====================
/**
* tileset
*/
const addOSGB = (viewer: Cesium.Viewer, tileset: Cesium.Cesium3DTileset) => {
if (!viewer || viewer.isDestroyed()) return;
viewer.scene.primitives.add(tileset);
};
/**
* tilesetPrimitiveCollection.remove destroy=true tileset
*/
const removeOSGB = (viewer: Cesium.Viewer, tileset: Cesium.Cesium3DTileset) => {
if (!viewer || viewer.isDestroyed()) return;
viewer.scene.primitives.remove(tileset);
};
// ==================== 裁切相关 ====================
/**
* GeoJSON Geometry
* Feature / FeatureCollection / Geometry
*/
const normalizeGeometry = (geo: any): any => {
if (!geo) return null;
// 已经是 Geometry 类型(有 type 且 coordinates
if (geo.type && geo.coordinates) return geo;
// Feature → 提取 geometry
if (geo.type === 'Feature' && geo.geometry) return geo.geometry;
// FeatureCollection → 取第一个 feature 的 geometry
if (geo.type === 'FeatureCollection' && geo.features?.length) {
return normalizeGeometry(geo.features[0]);
}
return null;
};
const get_verts_core = (poly: any): Cesium.Cartesian3[] => {
const verts_carte3: Cesium.Cartesian3[] = [];
if (!poly) return verts_carte3;
try {
// 规范化输入:兼容 Feature / FeatureCollection / Geometry
const geom = normalizeGeometry(poly);
if (!geom) return verts_carte3;
let verts = turf.coordAll(geom);
const clockwiseRing = turf.booleanClockwise(turf.lineString(verts));
if (clockwiseRing) {
verts = verts.reverse();
}
for (let i = 0; i < verts.length - 1; i++) {
const vert = verts[i];
verts_carte3.push(Cesium.Cartesian3.fromDegrees(vert[0], vert[1]));
}
} catch (e) {
console.warn('get_verts_core 解析 boundary 失败:', e);
}
return verts_carte3;
};
const get_clipping_planes = (
points: Cesium.Cartesian3[]
): Cesium.ClippingPlane[] => {
const pointsLength = points.length;
const clippingPlanes: Cesium.ClippingPlane[] = [];
for (let i = 0; i < pointsLength; ++i) {
const nextIndex = (i + 1) % pointsLength;
let midpoint = Cesium.Cartesian3.add(
points[i],
points[nextIndex],
new Cesium.Cartesian3()
);
midpoint = Cesium.Cartesian3.multiplyByScalar(midpoint, 0.5, midpoint);
const up = Cesium.Cartesian3.normalize(midpoint, new Cesium.Cartesian3());
let right = Cesium.Cartesian3.subtract(
points[nextIndex],
midpoint,
new Cesium.Cartesian3()
);
right = Cesium.Cartesian3.normalize(right, right);
let normal = Cesium.Cartesian3.cross(right, up, new Cesium.Cartesian3());
normal = Cesium.Cartesian3.normalize(normal, normal);
const originCenteredPlane = new Cesium.Plane(normal, 0.0);
const distance = Cesium.Plane.getPointDistance(
originCenteredPlane,
midpoint
);
clippingPlanes.push(new Cesium.ClippingPlane(normal, distance));
}
return clippingPlanes;
};
const clipping_terrain = (
viewer: Cesium.Viewer,
clippingPlanes: Cesium.ClippingPlane[]
) => {
const globe = viewer.scene.globe;
globe.clippingPlanes = new Cesium.ClippingPlaneCollection({
planes: clippingPlanes,
edgeWidth: 0,
edgeColor: Cesium.Color.GREEN,
enabled: true
});
globe.backFaceCulling = true;
globe.showSkirts = true;
};
const clipping_3dtiles = (
clippingPlanes: Cesium.ClippingPlane[],
tileset: Cesium.Cesium3DTileset
) => {
// Cesium 1.141: root.transform 是内部属性,安全访问
const rootTransform = (tileset as any)?.root?.transform;
if (!rootTransform) return;
const invtrans = Cesium.Matrix4.inverse(rootTransform, new Cesium.Matrix4());
for (let i = 0; i < clippingPlanes.length; i++) {
clippingPlanes[i] = Cesium.Plane.transform(clippingPlanes[i], invtrans);
}
tileset.clippingPlanes = new Cesium.ClippingPlaneCollection({
planes: clippingPlanes,
unionClippingRegions: true,
edgeWidth: 0,
edgeColor: Cesium.Color.RED,
enabled: false
});
};
const Clip3DTile = (boundary: any, tileset: Cesium.Cesium3DTileset) => {
try {
const geom = normalizeGeometry(boundary);
if (!geom) return;
const buffered = turf.buffer(geom, 10, { units: 'meters' });
const verts_core = get_verts_core(buffered).reverse();
if (!verts_core.length) return;
const planes = get_clipping_planes(verts_core);
clipping_3dtiles(planes, tileset);
} catch (e) {
console.warn('Clip3DTile 裁切失败:', e);
}
};
const ClipTerrain = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
// Cesium 1.141: 安全访问 clippingPlanes 内部属性 _planes
const existingPlanes = (viewer.scene.globe.clippingPlanes as any)?._planes;
if (
!osgbObj.clippingPlanes ||
(existingPlanes &&
!compareClippingPlanes(osgbObj.clippingPlanes, existingPlanes))
) {
const verts_core = get_verts_core(osgbObj.boundary);
if (!verts_core.length) return;
const planes = get_clipping_planes(verts_core);
clipping_terrain(viewer, planes);
osgbObj.clippingPlanes = planes;
}
};
const removeClip = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
if (osgbObj.clippingPlanes) {
removeClippingPlanes(viewer);
osgbObj.clippingPlanes = undefined;
}
};
const removeClippingPlanes = (viewer: Cesium.Viewer) => {
if (!Cesium.defined(viewer) || viewer.isDestroyed()) {
return;
}
if (Cesium.defined(viewer.scene.globe.clippingPlanes)) {
viewer.scene.globe.clippingPlanes.removeAll();
}
};
const compareClippingPlanes = (planes1: any, planes2: any): boolean => {
let result = true;
if (planes1.length === planes2?.length) {
for (let index = 0; index < planes1.length; index++) {
if (planes1[index]._distance !== planes2[index]._distance) {
result = false;
break;
}
}
} else {
result = false;
}
return result;
};
const getMinDistanceOfOSGB = (viewer: Cesium.Viewer): number => {
let result = Infinity;
const length = viewer.scene.primitives.length;
for (let i = 0; i < length; i++) {
const p = viewer.scene.primitives.get(i);
// Cesium 1.141: _url 和 _distanceToCamera 是内部属性,安全访问
// eslint-disable-next-line @typescript-eslint/no-explicit-any
if ((p as any)?._url) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const d = (p as any)?.root?._distanceToCamera;
if (d != null && d < result) result = d;
}
}
return result;
};
// ==================== 动态显隐 ====================
const dynamicSetVisible = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
if (!Cesium.defined(viewer) || viewer.isDestroyed()) return;
if (!Cesium.defined(osgbObj?.cartesian3)) return;
let cameraPosition: Cesium.Cartesian3 | undefined;
if (viewer.trackedEntity) {
cameraPosition = viewer.trackedEntity.position?.getValue(
viewer.clock.currentTime
);
}
if (!cameraPosition) {
cameraPosition = viewer.camera.position.clone();
}
const distance = Cesium.Cartesian3.distance(
osgbObj.cartesian3,
cameraPosition
);
if (distance < 12000) {
// 用户手动关闭了开关 → 不自动加载
if (osgbObj._switchOff) return;
// 匹配旧代码逻辑osgbObj.osgbtitles 同步设置为 nonClassificationTileset 防重入
// 新代码用 _loading + _loadId 实现同样的效果(因为 fromUrl 是异步的)
if (!osgbObj.osgbtitles && !osgbObj._loading) {
osgbObj._loading = true;
osgbObj._loadId = (osgbObj._loadId || 0) + 1;
const loadId = osgbObj._loadId;
const url = osgbObj.url.includes('?')
? osgbObj.url + `&token=${getToken()}`
: osgbObj.url + `?token=${getToken()}`;
Cesium.Cesium3DTileset.fromUrl(url, {
maximumScreenSpaceError: Number(osgbObj?.accuracy) || 16,
show: true,
maximumMemoryUsage: 128
})
.then((tileset: Cesium.Cesium3DTileset) => {
// 竞态保护版本号变了removeQxsy 被调用或新一轮加载开始)→ 销毁退出
if (
osgbObj._loadId !== loadId ||
!Cesium.defined(viewer) ||
viewer.isDestroyed()
) {
tileset.destroy();
return;
}
osgbObj._loading = false;
if (!Cesium.defined(tileset)) return;
tileset.maximumScreenSpaceError = 32;
// height 向上偏移模型几何自带高程height 只是微调(如 44m
if (osgbObj.height != 0) {
const bs = Cesium.Cartographic.fromCartesian(
tileset.boundingSphere.center
);
const surface = Cesium.Cartesian3.fromRadians(
bs.longitude,
bs.latitude,
0.0
);
const offset = Cesium.Cartesian3.fromRadians(
bs.longitude,
bs.latitude,
osgbObj.height
);
const translation = Cesium.Cartesian3.subtract(
offset,
surface,
new Cesium.Cartesian3()
);
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
}
addOSGB(viewer, tileset);
osgbObj.osgbtitles = tileset;
})
.catch((e: Error) => {
osgbObj._loading = false;
console.log('dynamicSetVisible 加载倾斜摄影报错', e);
});
}
} else if (distance > 13000) {
// 匹配旧代码逻辑:镜头拉远 → 销毁 tileset 释放内存
if (osgbObj.osgbtitles) {
removeOSGB(viewer, osgbObj.osgbtitles);
osgbObj.osgbtitles = undefined;
}
// 不重置 _switchOff开关状态由用户手动控制不受距离影响
}
};
// ==================== 地形动态裁切 ====================
const dynamicClipTerrain = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
if (!osgbObj?.osgbtitles) {
removeClip(viewer, osgbObj);
return;
}
// Cesium 1.141: root 和 _distanceToCamera 是内部属性,安全访问
const root = (osgbObj.osgbtitles as any)?.root;
if (!Cesium.defined(root)) {
removeClip(viewer, osgbObj);
if (osgbObj.osgbtitles?.clippingPlanes?.enabled) {
osgbObj.osgbtitles.clippingPlanes.enabled = false;
}
return;
}
if (!osgbObj?.osgbtitles?.show) {
removeClip(viewer, osgbObj);
if (osgbObj.osgbtitles?.clippingPlanes?.enabled) {
osgbObj.osgbtitles.clippingPlanes.enabled = false;
}
return;
}
const distance = root._distanceToCamera;
const tilesLoaded = osgbObj.osgbtitles.tilesLoaded;
if (osgbObj.boundary && tilesLoaded) {
if (distance != null && getMinDistanceOfOSGB(viewer) === distance) {
ClipTerrain(viewer, osgbObj);
if (
osgbObj.osgbtitles?.clippingPlanes &&
!osgbObj.osgbtitles.clippingPlanes.enabled
) {
osgbObj.osgbtitles.clippingPlanes.enabled = true;
}
} else {
removeClip(viewer, osgbObj);
if (osgbObj.osgbtitles?.clippingPlanes?.enabled) {
osgbObj.osgbtitles.clippingPlanes.enabled = false;
}
}
}
};
// ==================== 公开 API ====================
/**
* 3D Tileset
*
* Cesium 1.141 使 Cesium3DTileset.fromUrl()
* new Cesium3DTileset({url})
*/
export const LoadOSGB = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
if (!osgbObj.url) return;
// 已加载则跳过
if (osgbObj.osgbtitles && !osgbObj.osgbtitles.isDestroyed?.()) return;
// 正在加载中也跳过(防止重复调用 fromUrl
if (osgbObj._loading) return;
osgbObj._loading = true;
// 自增版本号:每次 LoadOSGB 都 +1.then() 里靠版本号判断是否已失效
osgbObj._loadId = (osgbObj._loadId || 0) + 1;
const loadId = osgbObj._loadId;
const url = osgbObj.url.includes('?')
? osgbObj.url + `&token=${getToken()}`
: osgbObj.url + `?token=${getToken()}`;
Cesium.Cesium3DTileset.fromUrl(url, {
maximumScreenSpaceError: Number(osgbObj?.accuracy) || 16,
show: true,
maximumMemoryUsage: 128
})
.then((tileset: Cesium.Cesium3DTileset) => {
// 竞态保护:版本号变了 → 销毁退出
if (
osgbObj._loadId !== loadId ||
!Cesium.defined(viewer) ||
viewer.isDestroyed()
) {
tileset.destroy();
return;
}
if (!Cesium.defined(tileset)) return;
osgbObj._loading = false;
tileset.maximumScreenSpaceError = 32;
// height 向上偏移模型几何自带高程height 只是微调(如 44m
if (osgbObj.height != 0) {
const bs = Cesium.Cartographic.fromCartesian(
tileset.boundingSphere.center
);
const surface = Cesium.Cartesian3.fromRadians(
bs.longitude,
bs.latitude,
0.0
);
const offset = Cesium.Cartesian3.fromRadians(
bs.longitude,
bs.latitude,
osgbObj.height
);
const translation = Cesium.Cartesian3.subtract(
offset,
surface,
new Cesium.Cartesian3()
);
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
}
// 加入场景(匹配旧代码 readyPromise 中 addOSGB
addOSGB(viewer, tileset);
osgbObj.osgbtitles = tileset;
// 始终设置 cartesian3保证 dynamicSetVisible 能计算距离
osgbObj.cartesian3 = tileset.boundingSphere.center.clone();
// boundary 裁切(匹配旧代码 readyPromise 中处理)
if (osgbObj.boundary) {
if (typeof osgbObj.boundary === 'string') {
osgbObj.boundary = JSON.parse(osgbObj.boundary);
}
Clip3DTile(osgbObj.boundary, tileset);
}
// 注册 postRender 动态显隐300ms 节流,匹配旧代码 throttle
let lastTime = 0;
osgbObj.eventListener = viewer.scene.postRender.addEventListener(() => {
if (!Cesium.defined(viewer) || viewer.isDestroyed()) return;
const now = performance.now();
if (now - lastTime < 300) return;
lastTime = now;
if (!getState(osgbObj).timelookat) {
dynamicSetVisible(viewer, osgbObj);
}
dynamicClipTerrain(viewer, osgbObj);
});
})
.catch((e: Error) => {
osgbObj._loading = false;
console.log('加载倾斜摄影报错', e);
});
};
/**
*
* 2D osgbChangeClick
* removeqxsy(osgbTool.ts:233-244) cartesian3
*/
export const removeQxsy = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
// 递增版本号:使所有进行中的 fromUrl().then() 失效
osgbObj._loadId = (osgbObj._loadId || 0) + 1;
removeClippingPlanes(viewer);
osgbObj.clippingPlanes = undefined;
osgbObj._loading = false;
osgbObj._switchOff = undefined;
if (typeof osgbObj.eventListener === 'function') {
osgbObj.eventListener();
osgbObj.eventListener = undefined;
}
if (osgbObj.osgbtitles) {
removeOSGB(viewer, osgbObj.osgbtitles);
osgbObj.osgbtitles = undefined;
}
// 注意:不清理 cartesian3匹配旧代码行为
};
/**
*
* -
* - 12km /
* - 12km tileset tileset
* - 2D removeQxsy
*/
export const osgbChangeClick = (
viewer: Cesium.Viewer,
osgbObj: OSGBItem,
checked: boolean
) => {
// 先记录开关状态(无论距离远近)
osgbObj._switchOff = !checked;
// 12km 以外:只记状态不操作 tileset此时 tileset 可能不存在或已销毁)
if (osgbObj.cartesian3) {
const cameraPosition = viewer.camera.position.clone();
const distance = Cesium.Cartesian3.distance(
osgbObj.cartesian3,
cameraPosition
);
if (distance >= 12000) return;
}
if (checked) {
// 开关 ON已有未销毁的 tileset → 直接显示;否则加载
if (osgbObj.osgbtitles && !osgbObj.osgbtitles.isDestroyed?.()) {
osgbObj.osgbtitles.show = true;
} else {
LoadOSGB(viewer, osgbObj);
}
} else {
// 开关 OFF隐藏 tileset移除 terrain 裁切
if (osgbObj.osgbtitles && !osgbObj.osgbtitles.isDestroyed?.()) {
osgbObj.osgbtitles.show = false;
}
removeClip(viewer, osgbObj);
}
};
/**
* location
*/
const parseLocation = (location: any): OSGBLocation | null => {
if (!location) return null;
// 如果已经是对象,直接用
if (typeof location === 'object' && location.destination) {
return location as OSGBLocation;
}
// 如果是字符串,尝试解析
if (typeof location === 'string') {
try {
const jsonString = location.replace(/\n/g, '');
const startIndex = jsonString.indexOf('{');
const endIndex = jsonString.lastIndexOf('}');
if (startIndex === -1 || endIndex === -1) return null;
const extractedData = jsonString.substring(startIndex, endIndex + 1);
const parsed = eval('(' + extractedData + ')');
return {
destination: parsed.destination,
orientation: parsed.orientation,
center: parsed.center
};
} catch {
return null;
}
}
return null;
};
/**
*
* flyTo +
*/
export const osgbLocation = (viewer: Cesium.Viewer, osgbObj: OSGBItem) => {
const state = getState(osgbObj);
clearTimeout(state.timeout);
state.num = 0;
state.time = 0;
state.witetime = 0;
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
let center = Cesium.Cartesian3.fromDegrees(
100.271729604817,
35.3107902811941,
2800
);
let heading = Cesium.Math.toRadians(0.0);
const pitch = Cesium.Math.toRadians(-30.0);
const range = 2000.0;
const locationInfor = parseLocation(osgbObj.location);
if (!locationInfor) {
console.warn('该模型定位坐标未配置!');
return;
}
// 判断是经纬度还是笛卡尔坐标
const destCoords = locationInfor.destination;
if (destCoords[0] <= 180 && destCoords[0] >= -180) {
state.destination = Cesium.Cartesian3.fromDegrees(
destCoords[0],
destCoords[1],
destCoords[2]
);
} else {
state.destination = new Cesium.Cartesian3(
destCoords[0],
destCoords[1],
destCoords[2]
);
}
state.orientation = locationInfor.orientation;
center = Cesium.Cartesian3.fromDegrees(
locationInfor.center[0],
locationInfor.center[1],
locationInfor.center[2]
);
if (!state.destination || !state.orientation) return;
viewer.camera.cancelFlight();
viewer.camera.flyTo({
destination: state.destination,
orientation: state.orientation,
complete: () => {
state.timeout = setTimeout(() => {
rotate();
}, 2000);
}
});
const rotate = () => {
clearInterval(state.timelookat);
state.timelookat = setInterval(() => {
if (!Cesium.defined(viewer) || viewer.isDestroyed()) {
return;
}
state.witetime += 0.7;
if (state.witetime > 180 && state.witetime < 360) {
state.time += 0.7;
heading = Cesium.Math.toRadians(state.time);
viewer.camera.lookAt(
center,
new Cesium.HeadingPitchRange(heading, pitch, range)
);
} else if (state.witetime > 360) {
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
clearInterval(state.timelookat);
state.timelookat = null;
viewer.camera.flyTo({
destination: state.destination!,
orientation: state.orientation,
duration: 2
});
return;
}
}, 10);
};
// 点击 body 两次退出旋转
const body = document.getElementsByTagName('body')[0];
body.onclick = function () {
if (viewer && !viewer.isDestroyed() && viewer.camera) {
state.num = state.num + 1;
if (state.num > 1) {
viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY);
clearInterval(state.timelookat);
clearTimeout(state.timeout);
state.timelookat = null;
}
}
};
};

View File

@ -32,16 +32,13 @@
class="leaf-item" class="leaf-item"
> >
<div class="leaf-content"> <div class="leaf-content">
<span class="leaf-name" @click="handleLeafClick(item)">{{ <span class="leaf-name">{{ item.stnm }}</span>
item.stnm <a-switch
}}</span> :checked="item.checked !== false"
<span @click.stop> size="small"
<a-switch @click.stop
:checked="item.checked !== false" @change="(checked: boolean) => handleSwitchChange(item, checked)"
size="small" />
@change="(checked: boolean) => handleSwitchChange(item, checked)"
/>
</span>
</div> </div>
</a-menu-item> </a-menu-item>
</a-sub-menu> </a-sub-menu>
@ -82,9 +79,6 @@ const props = defineProps<{
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update:visible', v: boolean): void; (e: 'update:visible', v: boolean): void;
(e: 'loadModel', item: any): void;
(e: 'unloadModel', item: any): void;
(e: 'flyToSite', item: any): void;
}>(); }>();
const tooltipVisible = ref(false); const tooltipVisible = ref(false);
@ -131,16 +125,6 @@ const onOpenChange = (visible: boolean) => {
// a-switch // a-switch
const handleSwitchChange = (item: any, checked: boolean) => { const handleSwitchChange = (item: any, checked: boolean) => {
item.checked = checked; item.checked = checked;
if (checked) {
emit('loadModel', item);
} else {
emit('unloadModel', item);
}
};
//
const handleLeafClick = (item: any) => {
emit('flyToSite', item);
}; };
// tooltip // tooltip

View File

@ -18,9 +18,6 @@
:countdown="countdown" :countdown="countdown"
:inTransition="is3DTransition && child.key === 'OSBGController'" :inTransition="is3DTransition && child.key === 'OSBGController'"
@update:visible="(v: boolean) => handleComponentVisibleToggle(child.key, v)" @update:visible="(v: boolean) => handleComponentVisibleToggle(child.key, v)"
@loadModel="handleLoadModel"
@unloadModel="handleUnloadModel"
@flyToSite="handleFlyToSite"
/> />
<!-- 非组件项包裹 tooltip 显示名称 --> <!-- 非组件项包裹 tooltip 显示名称 -->
<a-tooltip <a-tooltip
@ -109,10 +106,7 @@ const buildTiltPhotoTree = (list: any[]) => {
const id = String(item.baseId ?? ''); const id = String(item.baseId ?? '');
const group = baseMap.get(id); const group = baseMap.get(id);
if (group) { if (group) {
// push addQxsyLayer item group.children.push({ ...item, checked: true });
// OSGB osgbtitles, cartesian3, eventListener
item.checked = true;
group.children.push(item);
} }
} }
return Array.from(baseMap.entries()) return Array.from(baseMap.entries())
@ -152,33 +146,11 @@ const fetchTiltPhotoTree = async () => {
}); });
const list = res.data.data; const list = res.data.data;
tiltPhotoTree.value = buildTiltPhotoTree(list); tiltPhotoTree.value = buildTiltPhotoTree(list);
// dynamicSetVisible 12km
list.forEach((item: any) => {
map.value.addQxsyLayer?.(item);
});
} catch (err) { } catch (err) {
console.error('获取倾斜摄影数据失败:', err); console.error('获取倾斜摄影数据失败:', err);
} }
}; };
//
const handleLoadModel = (item: any) => {
// /
map.value.qxsyChangeClick?.(item, true);
};
const handleUnloadModel = (item: any) => {
// /
map.value.qxsyChangeClick?.(item, false);
};
const handleFlyToSite = (item: any) => {
//
map.value.addQxsyLayer?.(item);
map.value.qxsyToPosition?.(item);
};
// 3D // 3D
// layerController / OSBGController / threedRoam // layerController / OSBGController / threedRoam
const activeKey = ref<string | null>(null); const activeKey = ref<string | null>(null);
@ -403,18 +375,11 @@ const handleControllerClick = (item: any) => {
fetchTiltPhotoTree(); fetchTiltPhotoTree();
start3DTransition(); start3DTransition();
} else { } else {
// 3D2D // 3D2D
uiStore.drawerOpen = true; uiStore.drawerOpen = true;
uiStore.isRoaming = false; uiStore.isRoaming = false;
cleanup3DTransition(); cleanup3DTransition();
activeKey.value = null; activeKey.value = null;
//
tiltPhotoTree.value.forEach((group: any) => {
group.children?.forEach((item: any) => {
map.value.removeQxsyLayer?.(item);
});
});
tiltPhotoTree.value = [];
} }
props.onClick('dim', uiStore.mapType); props.onClick('dim', uiStore.mapType);
} }

View File

@ -647,7 +647,7 @@ const focusSelectedAnchorPoint = () => {
mapOrchestrator.focusPoint( mapOrchestrator.focusPoint(
selectedValue, selectedValue,
uiStore.mapType === '3D' ? 9 : 14, 14,
isFishSurveyMode.value ? anchorPointOptions.value : undefined isFishSurveyMode.value ? anchorPointOptions.value : undefined
); );
}; };

View File

@ -58,7 +58,7 @@ service.interceptors.response.use(
message.error(response.data.msg || '请求失败'); message.error(response.data.msg || '请求失败');
setTimeout(() => { setTimeout(() => {
localStorage.clear(); localStorage.clear();
window.location.href = '/login'; window.location.href = '/';
}, 1000); }, 1000);
return; return;
} else if (response.data.code == 1) { } else if (response.data.code == 1) {