This commit is contained in:
扈兆增 2026-07-17 18:03:49 +08:00
commit 2f0bc9f67d
40 changed files with 1577 additions and 224 deletions

View File

@ -92,7 +92,10 @@ 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);
Object groupIndexKey = groupKey != null ? groupKey : null; if (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

@ -23,7 +23,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
@Override @Override
public void insertFill(MetaObject metaObject) { public void insertFill(MetaObject metaObject) {
Date now = new Date(); Date now = new Date();
// 创建时间 // 创建时间
this.strictInsertFill(metaObject, "createdAt", Date.class, now); this.strictInsertFill(metaObject, "createdAt", Date.class, now);
@ -31,7 +31,8 @@ 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,7 +28,9 @@ 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,6 +65,7 @@ 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,6 +249,15 @@ 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,6 +13,8 @@ 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::getRvcd, rvcd) .eq(StrUtil.isNotBlank(rvcd), SdEngInfoBH::getReachcd, 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, " +
"CAST(NULL AS NUMBER) AS obmxq, " + "rbh.OBMXQ AS obmxq, " +
"CAST(NULL AS NUMBER) AS obmnq, " + "rbh.OBMNQ AS obmnq, " +
"CAST(NULL AS NUMBER) AS hmxq, " + "rbh.HMXQ 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, " +
"CAST(NULL AS NUMBER) AS obmxs, " + "rbh.OBMXS AS obmxs, " +
"CAST(NULL AS NUMBER) AS ckflz, " + "rbh.CKFLZ AS ckflz, " +
"CAST(NULL AS NUMBER) AS dsflz, " + "rbh.DSFLZ AS dsflz, " +
"CAST(NULL AS NUMBER) AS normz, " + "rbh.NORMZ AS normz, " +
"CAST(NULL AS NUMBER) AS uzfc, " + "rbh.UZFC AS uzfc, " +
"eng.FSLTDZ AS fsltdz, " + "eng.FSLTDZ AS fsltdz, " +
"eng.YDOWNZ AS ydownz, " + "eng.YDOWNZ AS ydownz, " +
"CAST(NULL AS NUMBER) AS ddz, " + "rbh.DDZ 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, " +
"CAST(NULL AS NUMBER) AS nmzcp, " + "rbh.NMZCP AS nmzcp, " +
"CAST(NULL AS VARCHAR2(255)) AS fldcpStr, " + "b.VAL AS fldcpStr, " +
"CAST(NULL AS NUMBER) AS actcp, " + "rbh.ACTCP AS actcp, " +
"CAST(NULL AS NUMBER) AS ddcp, " + "rbh.DDCP 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, " +
"CAST(NULL AS NUMBER) AS dsflzxyz, " + "rbh.DSFLZXYZ AS dsflzxyz, " +
"eng.CHMXQ AS ckflzmxq, " + "eng.CHMXQ AS ckflzmxq, " +
"CAST(NULL AS NUMBER) AS ckflzxyz, " + "rbh.CKFLZXYZ AS ckflzxyz, " +
"CAST(NULL AS NUMBER) AS ksqadjq, " + "rbh.KSQADJQ AS ksqadjq, " +
"CAST(NULL AS NUMBER) AS ksqxyz, " + "rbh.KSQXYZ AS ksqxyz, " +
"eng.GEMAXRQ AS gemaxrq, " + "eng.GEMAXRQ AS gemaxrq, " +
"CAST(NULL AS NUMBER) AS mxgeqxyz, " + "rbh.MXGEQXYZ AS mxgeqxyz, " +
"eng.YRGEB AS ttpwr, " + "eng.YRGEB AS ttpwr, " +
"CAST(NULL AS NUMBER) AS gncnt, " + "pwr.GNCNT AS gncnt, " +
"eng.GNTP AS gntp, " + "eng.GNTP AS gntp, " +
"CAST(NULL AS NUMBER) AS grntpwr, " + "pwr.GRNTPWR AS grntpwr, " +
"pwr.YRGE AS yrge, " + "pwr.YRGE AS yrge, " +
"CAST(NULL AS NUMBER) AS ushr, " + "pwr.USHR AS ushr, " +
"CAST(NULL AS NUMBER) AS k, " + "pwr.K 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, " +
"CAST(NULL AS NUMBER) AS sgyge, " + "pwr.SGYGE AS sgyge, " +
"CAST(NULL AS NUMBER) AS unyge, " + "UNYGE 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,6 +1327,33 @@ 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 " +
@ -3492,10 +3519,11 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
sql.append("SELECT ") sql.append("SELECT ")
.append("r.ID AS id, ") .append("r.ID AS id, ")
.append("r.RVCD AS rvcd, ") .append("eng.BASE_ID AS rvcd, ")
.append("rv.RVNM AS rvcdName, ") .append("eng.BASE_NAME AS rvcdName, ")
.append("r.STCD AS stcd, ") .append("r.STCD AS stcd, ")
.append("r.ENNM AS ennm, ") .append("eng.BLDSTT_CODE AS bldsttCcode, ")
.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, ")
@ -3534,13 +3562,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.HBRVCD AS wbsCode, ") .append("dic.BASEID AS wbsCode, ")
.append("dic.HBRVNM AS wbsName, ") .append("dic.BASENAME 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_HBRV_DIC dic ") .append("FROM SD_HYDROBASE dic ")
.append("INNER JOIN SD_RSVRCSCD_B r ON r.RVCD = dic.HBRVCD AND NVL(r.IS_DELETED, 0) = 0 ") .append("INNER JOIN SD_RSVRCSCD_B r ON r.BASE_ID = dic.BASEID 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 ");
@ -3685,7 +3713,8 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
} }
return switch (field) { return switch (field) {
case "id" -> "r.ID"; case "id" -> "r.ID";
case "rvcd" -> "r.RVCD"; case "rvcd" -> "eng.BASE_ID";
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,10 +89,17 @@ 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 = "分页查询过鱼数据(关联电站和设施)") @Operation(summary = "分页查询过鱼数据(关联电站和设施APPROVED状态时根据当前用户电站权限过滤")
public ResponseResult queryPageList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult queryPageListWithScope(@RequestBody DataSourceRequest dataSourceRequest) {
Page<FishDraftDataVO> result = fishDraftDataService.queryPageList(dataSourceRequest); Page<FishDraftDataVO> result = fishDraftDataService.queryPageListWithScope(dataSourceRequest);
return ResponseResult.successData(result); return ResponseResult.successData(result);
} }

View File

@ -8,6 +8,7 @@ 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>
@ -33,6 +34,24 @@ 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,6 +20,12 @@ 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,6 +8,7 @@ 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;
@ -89,6 +90,9 @@ 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;
@ -108,19 +112,68 @@ 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;
} }
@ -262,7 +315,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();
@ -392,7 +445,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) {
@ -401,7 +454,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());
} }
} }
@ -419,7 +472,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());
} }
@ -825,9 +878,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,6 +15,7 @@ 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,6 +800,7 @@ 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, " +
@ -848,6 +849,7 @@ 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,6 +44,11 @@ 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,6 +1459,11 @@ 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,cfg.BASEID, along.RVCD, det.STCD " + "LEFT JOIN (SELECT det.SORT,along.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,cfg.BASEID, along.RVCD, det.STCD " + "LEFT JOIN (SELECT det.SORT,along.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 section ON section.STCD = we.STCD AND NVL(section.USFL, 0) = 1 " + "INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD AND NVL(sec.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, section.HBRVCD AS hbrvcd, SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ") .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("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 section ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H sec ON sec.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 (section.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ") .append(" AND (sec.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 section.BASE_ID = #{map.fishPageBaseId} "); sql.append("AND sec.BASE_ID = #{map.fishPageBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("fishPageHbrvcd", hbrvcd); paramMap.put("fishPageHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} "); sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("fishPageRstcd", rstcd); paramMap.put("fishPageRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.fishPageRstcd} "); sql.append("AND sec.RSTCD = #{map.fishPageRstcd} ");
} }
sql.append("GROUP BY fish.FTP, section.HBRVCD, TO_CHAR(we.TM, 'YYYY') ") sql.append("GROUP BY fish.FTP, sec.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 section ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H sec ON sec.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 (section.HBRVCD = dictFilter.RVCD OR dictFilter.RVCD = 'ZY') ") .append(" AND (sec.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 section.BASE_ID = #{map.fishPageBaseId} "); sql.append("AND sec.BASE_ID = #{map.fishPageBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} "); sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
sql.append("AND section.RSTCD = #{map.fishPageRstcd} "); sql.append("AND sec.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("section.STCD AS stcd, ") .append("sec.STCD AS stcd, ")
.append("section.STNM AS stnm, ") .append("sec.STNM AS stnm, ")
.append("section.LGTD AS lgtd, ") .append("sec.LGTD AS lgtd, ")
.append("section.LTTD AS lttd, ") .append("sec.LTTD AS lttd, ")
.append("section.ELEV AS dtmel, ") .append("sec.ELEV AS dtmel, ")
.append("section.RSTCD AS rstcds, ") .append("sec.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("section.STNM AS titleName, ") .append("sec.STNM AS titleName, ")
.append("section.RVCD AS rvcd, ") .append("sec.RVCD AS rvcd, ")
.append("section.ADDVCD AS addvcd, ") .append("sec.ADDVCD AS addvcd, ")
.append("section.BASE_ID AS baseId, ") .append("sec.BASE_ID AS baseId, ")
.append("section.RSTCD AS rstcd, ") .append("sec.RSTCD AS rstcd, ")
.append("siteSort.SORT AS siteStepSort ") .append("siteSort.SORT AS siteStepSort ")
.append("FROM SD_WE_B_H section ") .append("FROM SD_WE_B_H sec ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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 = section.STCD ") .append(") latest ON latest.STCD = sec.STCD ")
.append("LEFT JOIN MS_ALONG_B along ON along.BASEID = section.BASE_ID ") .append("LEFT JOIN MS_ALONG_B along ON along.BASEID = sec.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 = section.BASE_ID AND siteSort.STCD = section.STCD ") .append(") siteSort ON siteSort.BASEID = sec.BASE_ID AND siteSort.STCD = sec.STCD ")
.append("WHERE NVL(section.USFL, 1) = 1 "); .append("WHERE NVL(sec.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 section ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD ")
.append(" AND NVL(section.USFL, 1) = 1 ") .append(" AND NVL(sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(") dict ON fish.FTP = dict.FISH_ID AND (sec.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 section.HBRVCD, section.RSTCD, section.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ") .append("SELECT sec.HBRVCD, sec.RSTCD, sec.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ")
.append("FROM SD_WE_B_H section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(section.USFL, 0) = 1 ") .append("WHERE NVL(sec.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 section.BASE_ID = #{map.weYearBaseId} "); sql.append("AND sec.BASE_ID = #{map.weYearBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weYearHbrvcd", hbrvcd); paramMap.put("weYearHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weYearHbrvcd} "); sql.append("AND sec.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 section.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND sec.RSTCD IN (").append(String.join(", ", placeholders)).append(") ");
} }
} }
sql.append("GROUP BY section.BASE_ID, section.HBRVCD, section.RSTCD, TO_CHAR(we.TM, 'yyyy')") sql.append("GROUP BY sec.BASE_ID, sec.HBRVCD, sec.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 section.RSTCD AS STCD, ") .append("SELECT sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 = section.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE 1 = 1 "); .append("WHERE 1 = 1 ");
// .append("WHERE NVL(section.USFL, 0) = 1 "); // .append("WHERE NVL(sec.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatBaseId", baseId); paramMap.put("weFishStatBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weFishStatBaseId} "); sql.append("AND sec.BASE_ID = #{map.weFishStatBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weFishStatHbrvcd", hbrvcd); paramMap.put("weFishStatHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weFishStatHbrvcd} "); sql.append("AND sec.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 section.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND sec.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 section.RSTCD, eng.ENNM, CASE ") .append("GROUP BY sec.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 section.RSTCD AS STCD, ") .append("SELECT sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 = section.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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(section.USFL, 0) = 1 "); .append("WHERE NVL(sec.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatBaseId", baseId); paramMap.put("weFishStatBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weFishStatBaseId} "); sql.append("AND sec.BASE_ID = #{map.weFishStatBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weFishStatHbrvcd", hbrvcd); paramMap.put("weFishStatHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weFishStatHbrvcd} "); sql.append("AND sec.HBRVCD = #{map.weFishStatHbrvcd} ");
} }
sql.append("AND section.RSTCD IS NOT NULL ") sql.append("AND sec.RSTCD IS NOT NULL ")
.append("AND dict.SPEC_ORIGIN IS NOT NULL ") .append("AND dict.SPEC_ORIGIN IS NOT NULL ")
.append("GROUP BY section.RSTCD, eng.ENNM, ") .append("GROUP BY sec.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("section.RSTCD AS rstcd, ") .append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ") .append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ") .append("TO_CHAR(WM_CONCAT(DISTINCT sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 section.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(section.USFL, 0) = 1 ") .append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ") .append("AND sec.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 section.BASE_ID = #{map.qgcWeFishDetailBaseId} "); sql.append("AND sec.BASE_ID = #{map.qgcWeFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("qgcWeFishDetailRstcd", rstcd); paramMap.put("qgcWeFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.qgcWeFishDetailRstcd} "); sql.append("AND sec.RSTCD = #{map.qgcWeFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("qgcWeFishDetailRvcd", rvcd); paramMap.put("qgcWeFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.qgcWeFishDetailRvcd} "); sql.append("AND sec.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 section.RSTCD, eng.ENNM ") sql.append("GROUP BY sec.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("section.RSTCD AS rstcd, ") .append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ") .append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ") .append("TO_CHAR(WM_CONCAT(DISTINCT sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 section.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.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(section.USFL, 0) = 1 ") .append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ") .append("AND sec.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 section.BASE_ID = #{map.weFishDetailBaseId} "); sql.append("AND sec.BASE_ID = #{map.weFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("weFishDetailRstcd", rstcd); paramMap.put("weFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.weFishDetailRstcd} "); sql.append("AND sec.RSTCD = #{map.weFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishDetailRvcd", rvcd); paramMap.put("weFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.weFishDetailRvcd} "); sql.append("AND sec.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 section.RSTCD, eng.ENNM ") sql.append("GROUP BY sec.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("section.RSTCD AS rstcd, ") .append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ") .append("eng.ENNM AS rstcdName, ")
.append("section.STCD AS stcd, ") .append("sec.STCD AS stcd, ")
.append("section.STNM AS stnm, ") .append("sec.STNM AS stnm, ")
.append("dict.ZY_FISH_ID AS id ") .append("dict.ZY_FISH_ID AS id ")
.append("FROM SD_WE_B_H section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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 section.RSTCD = eng.STCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(section.USFL, 0) = 1 ") .append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ") .append("AND sec.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 section.BASE_ID = #{map.hbbQgcWeFishDetailBaseId} "); sql.append("AND sec.BASE_ID = #{map.hbbQgcWeFishDetailBaseId} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("hbbQgcWeFishDetailRstcd", rstcd); paramMap.put("hbbQgcWeFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.hbbQgcWeFishDetailRstcd} "); sql.append("AND sec.RSTCD = #{map.hbbQgcWeFishDetailRstcd} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("hbbQgcWeFishDetailRvcd", rvcd); paramMap.put("hbbQgcWeFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} "); sql.append("AND sec.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 section.RSTCD, eng.ENNM, section.STCD, section.STNM,dict.ZY_FISH_ID ") sql.append("GROUP BY sec.RSTCD, eng.ENNM, sec.STCD, sec.STNM,dict.ZY_FISH_ID ")
.append("ORDER BY eng.ENNM ASC NULLS LAST, section.STNM ASC NULLS LAST"); .append("ORDER BY eng.ENNM ASC NULLS LAST, sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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(section.USFL, 0) = 1 "); .append("WHERE NVL(sec.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weFishStatTabBaseId", baseId); paramMap.put("weFishStatTabBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weFishStatTabBaseId} "); sql.append("AND sec.BASE_ID = #{map.weFishStatTabBaseId} ");
} }
if (StrUtil.isNotBlank(rvcd)) { if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishStatTabRvcd", rvcd); paramMap.put("weFishStatTabRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.weFishStatTabRvcd} "); sql.append("AND sec.HBRVCD = #{map.weFishStatTabRvcd} ");
} }
if (StrUtil.isNotBlank(rstcd)) { if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("weFishStatTabRstcd", rstcd); paramMap.put("weFishStatTabRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.weFishStatTabRstcd} "); sql.append("AND sec.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, " +
"section.RSTCD AS rstcd, " + "sec.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 section ON we.STCD = section.STCD " + "INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD " +
" AND NVL(section.USFL, 0) = 1 " + " AND NVL(sec.USFL, 0) = 1 " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " + "INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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, section.STCD AS stcd, section.RSTCD AS rstcds, ") sql.append("SELECT agg.ftp AS ftp, sec.STCD AS stcd, sec.RSTCD AS rstcds, ")
.append("section.STNM AS stnm, eng.ENNM AS ennm, ") .append("sec.STNM AS stnm, eng.ENNM AS ennm, ")
.append("section.LGTD AS lgtd, section.LTTD AS lttd, ") .append("sec.LGTD AS lgtd, sec.LTTD AS lttd, ")
.append("'ylfb' AS sttp, 'ylfb' AS sttpMap, ") .append("'ylfb' AS sttp, 'ylfb' AS sttpMap, ")
.append("section.RVCD AS rvcd, section.ADDVCD AS addvcd, section.BASE_ID AS baseId, ") .append("sec.RVCD AS rvcd, sec.ADDVCD AS addvcd, sec.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 section ON we.STCD = section.STCD ") .append("INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD ")
.append(" AND NVL(section.USFL, 0) = 1 ") .append(" AND NVL(sec.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 (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ") .append(" AND (sec.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 section2 ON a.STCD = section2.STCD ") .append("INNER JOIN SD_WE_B_H sec2 ON a.STCD = sec2.STCD ")
.append(" AND NVL(section2.USFL, 0) = 1 ") .append(" AND NVL(sec2.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 (section2.HBRVCD = c.RVCD OR c.RVCD = 'ZY') ") .append(" AND (sec2.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 section ON agg.stcd = section.STCD ") .append("INNER JOIN SD_WE_B_H sec ON agg.stcd = sec.STCD ")
.append(" AND NVL(section.USFL, 0) = 1 ") .append(" AND NVL(sec.USFL, 0) = 1 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD ") .append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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 section.BASE_ID = #{map.weFishPointBaseId} "); sql.append("AND sec.BASE_ID = #{map.weFishPointBaseId} ");
} }
sql.append("ORDER BY section.STCD ASC"); sql.append("ORDER BY sec.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" -> "section.STCD"; case "stcd" -> "sec.STCD";
case "lgtd" -> "section.LGTD"; case "lgtd" -> "sec.LGTD";
case "stnm", "titleName" -> "section.STNM"; case "stnm", "titleName" -> "sec.STNM";
case "ennm" -> "eng.ENNM"; case "ennm" -> "eng.ENNM";
case "rvcd" -> "section.RVCD"; case "rvcd" -> "sec.RVCD";
case "addvcd" -> "section.ADDVCD"; case "addvcd" -> "sec.ADDVCD";
case "baseId" -> "section.BASE_ID"; case "baseId" -> "sec.BASE_ID";
case "rstcd", "rstcds" -> "section.RSTCD"; case "rstcd", "rstcds" -> "sec.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" -> "section.STCD"; case "stcd" -> "sec.STCD";
case "stnm", "titleName" -> "section.STNM"; case "stnm", "titleName" -> "sec.STNM";
case "ennm" -> "eng.ENNM"; case "ennm" -> "eng.ENNM";
case "tm" -> "latest.TM"; case "tm" -> "latest.TM";
case "rvcd" -> "section.RVCD"; case "rvcd" -> "sec.RVCD";
case "addvcd" -> "section.ADDVCD"; case "addvcd" -> "sec.ADDVCD";
case "baseId" -> "section.BASE_ID"; case "baseId" -> "sec.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 section ") .append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ") .append("INNER JOIN SD_WE_R we ON sec.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(section.USFL, 0) = 1 "); .append("WHERE NVL(sec.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(baseId)) { if (StrUtil.isNotBlank(baseId)) {
paramMap.put("weStaticsBaseId", baseId); paramMap.put("weStaticsBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weStaticsBaseId} "); sql.append("AND sec.BASE_ID = #{map.weStaticsBaseId} ");
} }
if (StrUtil.isNotBlank(hbrvcd)) { if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weStaticsHbrvcd", hbrvcd); paramMap.put("weStaticsHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weStaticsHbrvcd} "); sql.append("AND sec.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 section.RSTCD IN (").append(String.join(", ", placeholders)).append(") "); sql.append("AND sec.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 " +
"section.STCD AS stcd, " + "sec.STCD AS stcd, " +
"section.STNM AS stnm, " + "sec.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 section ON section.STCD = we.STCD " + "INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " +
" AND NVL(section.USFL, 0) = 1 " + " AND NVL(sec.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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 " +
"section.STCD AS stcd, " + "sec.STCD AS stcd, " +
"section.STNM AS stnm, " + "sec.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 section ON section.STCD = we.STCD " + "INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " +
// " AND NVL(section.USFL, 0) = 1 " + // " AND NVL(sec.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " + "LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.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,11 +6,13 @@ 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;
@ -41,6 +43,9 @@ public class MsAlongBController {
@Resource @Resource
private ISdHbrvDicService hbrvDicService; private ISdHbrvDicService hbrvDicService;
@Resource
private UserNameFillHelper userNameFillHelper;
/** /**
* 条件过滤数据列表 * 条件过滤数据列表
*/ */
@ -48,6 +53,7 @@ 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);
} }
@ -99,4 +105,11 @@ 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,6 +4,8 @@ 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;
@ -47,10 +49,12 @@ 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,7 +41,11 @@ public class MsAlongDetB implements Serializable {
/** 排序序号 */ /** 排序序号 */
@TableField("SORT") @TableField("SORT")
private String sort; private Integer sort;
// /** 排序序号 */
// @TableField("SORT")
// private String sort;
/** 沿程配置表ID */ /** 沿程配置表ID */
@TableField("ALONG_ID") @TableField("ALONG_ID")

View File

@ -0,0 +1,32 @@
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,6 +5,7 @@ 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;
@ -28,6 +29,14 @@ 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,6 +13,7 @@ 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;
@ -154,6 +155,127 @@ 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.get(0).getStnm(); String stnm = powerDtos.getFirst().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(String.valueOf(node.getSort())); // 若传了排序 entity.setSort(node.getSort()); // 若传了排序
} }
if (StrUtil.isBlank(entity.getId())) { if (StrUtil.isBlank(entity.getId())) {
entity.setId(null); entity.setId(null);

View File

@ -0,0 +1,119 @@
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

@ -0,0 +1,78 @@
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

@ -0,0 +1,71 @@
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

@ -0,0 +1,27 @@
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

@ -0,0 +1,36 @@
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

@ -0,0 +1,50 @@
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

@ -0,0 +1,12 @@
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

@ -0,0 +1,30 @@
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

@ -0,0 +1,44 @@
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

@ -0,0 +1,418 @@
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

@ -0,0 +1,30 @@
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,8 +11,10 @@ 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
@ -35,14 +37,17 @@ 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: 300000 time-between-connect-error-millis: 30000
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: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000 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
slave: slave:
driverClassName: oracle.jdbc.OracleDriver driverClassName: dm.jdbc.driver.DmDriver
url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}" url: "${DB_MASTER_URL:jdbc:dm://172.16.21.143:5236/QGC_REFA}"
# 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
@ -65,11 +70,12 @@ 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: 300000 time-between-connect-error-millis: 30000
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: oracle.net.CONNECT_TIMEOUT=10000;oracle.jdbc.ReadTimeout=60000;oracle.net.READ_TIMEOUT=60000 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
filter: filter:
stat: stat:
enabled: true enabled: true

View File

@ -191,6 +191,66 @@
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

@ -0,0 +1,43 @@
<?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

@ -277,7 +277,7 @@
width: 100%; width: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: start; justify-content: end;
" "
> >
<a-button <a-button
@ -983,7 +983,7 @@ onMounted(() => {
width: 20%; width: 20%;
max-height: 402px; max-height: 402px;
max-width: 400px; max-width: 400px;
min-height: 362px; // min-height: 362px;
border-radius: 3px; border-radius: 3px;
padding: 15px 24px 24px; padding: 15px 24px 24px;
background-color: rgb(255, 255, 255); background-color: rgb(255, 255, 255);