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) {
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());
if (tempCount == null) {
tempCount = item.get("COUNT_" + groupInfo.getSelector().toUpperCase());

View File

@ -23,7 +23,7 @@ public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
Date now = new Date();
// 创建时间
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, "modifyTime", Date.class, now);
// 更新时间
this.strictInsertFill(metaObject, "recordTime", Date.class, now);
try {
String userId = SecurityUtils.getUserId();
// 创建人

View File

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

View File

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

View File

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

View File

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

View File

@ -170,7 +170,7 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
wrapper.eq(StringUtils.hasText(baseId), SdEngInfoBH::getBaseId, baseId)
.eq(StringUtils.hasText(hbrvcd), SdEngInfoBH::getHbrvcd, hbrvcd)
.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(hbrvcds != null && !hbrvcds.isEmpty(), SdEngInfoBH::getHbrvcd, hbrvcds)
.like(StringUtils.hasText(ennm), SdEngInfoBH::getEnnm, ennm)
@ -1237,9 +1237,9 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"eng.AVQ10 AS avq10, " +
"eng.AVQ11 AS avq11, " +
"eng.AVQ12 AS avq12, " +
"CAST(NULL AS NUMBER) AS obmxq, " +
"CAST(NULL AS NUMBER) AS obmnq, " +
"CAST(NULL AS NUMBER) AS hmxq, " +
"rbh.OBMXQ AS obmxq, " +
"rbh.OBMNQ AS obmnq, " +
"rbh.HMXQ AS hmxq, " +
"eng.DSNFQFRQ AS dsnfqfrq, " +
"eng.DSRCIN AS dsrcin, " +
"eng.CKFQFQR AS ckfqfqr, " +
@ -1249,21 +1249,21 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
"eng.CKW3 AS ckw3, " +
"eng.AVSD AS avsd, " +
"eng.AVS AS avs, " +
"CAST(NULL AS NUMBER) AS obmxs, " +
"CAST(NULL AS NUMBER) AS ckflz, " +
"CAST(NULL AS NUMBER) AS dsflz, " +
"CAST(NULL AS NUMBER) AS normz, " +
"CAST(NULL AS NUMBER) AS uzfc, " +
"rbh.OBMXS AS obmxs, " +
"rbh.CKFLZ AS ckflz, " +
"rbh.DSFLZ AS dsflz, " +
"rbh.NORMZ AS normz, " +
"rbh.UZFC AS uzfc, " +
"eng.FSLTDZ AS fsltdz, " +
"eng.YDOWNZ AS ydownz, " +
"CAST(NULL AS NUMBER) AS ddz, " +
"rbh.DDZ AS ddz, " +
"eng.NRZAR AS nrzar, " +
"eng.BCKLEN AS bcklen, " +
"rbh.TTCP AS ttcp, " +
"CAST(NULL AS NUMBER) AS nmzcp, " +
"CAST(NULL AS VARCHAR2(255)) AS fldcpStr, " +
"CAST(NULL AS NUMBER) AS actcp, " +
"CAST(NULL AS NUMBER) AS ddcp, " +
"rbh.NMZCP AS nmzcp, " +
"b.VAL AS fldcpStr, " +
"rbh.ACTCP AS actcp, " +
"rbh.DDCP AS ddcp, " +
"eng.CPSC AS cpsc, " +
"eng.PRSC AS prsc, " +
"eng.RGCP AS rgcp, " +
@ -1279,26 +1279,26 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
" WHEN '9' THEN '其他' " +
" ELSE NULL END AS rgcpName, " +
"eng.DSMXQ AS dsflzmxq, " +
"CAST(NULL AS NUMBER) AS dsflzxyz, " +
"rbh.DSFLZXYZ AS dsflzxyz, " +
"eng.CHMXQ AS ckflzmxq, " +
"CAST(NULL AS NUMBER) AS ckflzxyz, " +
"CAST(NULL AS NUMBER) AS ksqadjq, " +
"CAST(NULL AS NUMBER) AS ksqxyz, " +
"rbh.CKFLZXYZ AS ckflzxyz, " +
"rbh.KSQADJQ AS ksqadjq, " +
"rbh.KSQXYZ AS ksqxyz, " +
"eng.GEMAXRQ AS gemaxrq, " +
"CAST(NULL AS NUMBER) AS mxgeqxyz, " +
"rbh.MXGEQXYZ AS mxgeqxyz, " +
"eng.YRGEB AS ttpwr, " +
"CAST(NULL AS NUMBER) AS gncnt, " +
"pwr.GNCNT AS gncnt, " +
"eng.GNTP AS gntp, " +
"CAST(NULL AS NUMBER) AS grntpwr, " +
"pwr.GRNTPWR AS grntpwr, " +
"pwr.YRGE AS yrge, " +
"CAST(NULL AS NUMBER) AS ushr, " +
"CAST(NULL AS NUMBER) AS k, " +
"pwr.USHR AS ushr, " +
"pwr.K AS k, " +
"eng.DMTP AS dmtp, " +
"eng.DMCREL AS dmcrel, " +
"eng.MXDMHG AS mxdmhg, " +
"eng.DMLEN AS dmlen, " +
"CAST(NULL AS NUMBER) AS sgyge, " +
"CAST(NULL AS NUMBER) AS unyge, " +
"pwr.SGYGE AS sgyge, " +
"UNYGE AS unyge, " +
"eng.GAP AS gap, " +
"eng.DVTP AS 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_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 ( 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 ( " +
" SELECT det.SORT,cfg.BASEID, cfg.RVCD, det.STCD " +
@ -3492,10 +3519,11 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
sql.append("SELECT ")
.append("r.ID AS id, ")
.append("r.RVCD AS rvcd, ")
.append("rv.RVNM AS rvcdName, ")
.append("eng.BASE_ID AS rvcd, ")
.append("eng.BASE_NAME AS rvcdName, ")
.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.DMHG AS dmhg, ")
.append("r.NORMZ AS normz, ")
@ -3534,13 +3562,13 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT DISTINCT ")
.append("dic.HBRVCD AS wbsCode, ")
.append("dic.HBRVNM AS wbsName, ")
.append("dic.BASEID AS wbsCode, ")
.append("dic.BASENAME AS wbsName, ")
.append("dic.BASEID AS objId, ")
.append("NVL(dic.BASEID, 'ZZZZZZZZ') AS baseOrder, ")
.append("NVL(dic.ORDER_INDEX, 999999) AS orderIndex ")
.append("FROM SD_HBRV_DIC dic ")
.append("INNER JOIN SD_RSVRCSCD_B r ON r.RVCD = dic.HBRVCD AND NVL(r.IS_DELETED, 0) = 0 ")
.append("FROM SD_HYDROBASE dic ")
.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("AND NVL(dic.ENABLED, 1) = 1 ");
@ -3685,7 +3713,8 @@ public class SdEngInfoBHServiceImpl extends ServiceImpl<SdEngInfoBHMapper, SdEng
}
return switch (field) {
case "id" -> "r.ID";
case "rvcd" -> "r.RVCD";
case "rvcd" -> "eng.BASE_ID";
case "baseId" -> "eng.BASE_ID";
case "rvcdName" -> "rv.RVNM";
case "stcd" -> "r.STCD";
case "ennm" -> "r.ENNM";

View File

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

View File

@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Set;
/**
* <p>
@ -33,6 +34,24 @@ public interface FishDraftDataMapper extends BaseMapper<FishDraftData> {
@Param("hbrvcd") String hbrvcd,
@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);
/**
* 分页查询草稿数据关联电站和设施表含电站权限过滤
* 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.qgc_base.domain.SdRvcdDic;
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.FishDraftData;
import com.yfd.platform.qgc_data.domain.SysUserDataScope;
@ -89,6 +90,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
@Resource
private ISdFpssRService sdFpssRService;
@Resource
private ICurrentUserDataScopeService currentUserDataScopeService;
@Resource
private PlatformTransactionManager transactionManager;
@ -108,19 +112,68 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
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 startTime = null;
String endTime = null;
// String userId = (SecurityUtils.hasPermission("sjtb:edit-review") || "admin".equals(SecurityUtils.getCurrentUsername())) ?null:SecurityUtils.getUserId();
String userId = SecurityUtils.getUserId();
if(StrUtil.isNotBlank(approvalId)){
userId=null;
if (StrUtil.isNotBlank(approvalId)) {
userId = null;
}
// 如果 startTime endTime 为空尝试从 TM 字段解析
if (StrUtil.isNotBlank(STRDT)&& STRDT.split( ",").length==2) {
startTime=STRDT.split(",")[0];
endTime=STRDT.split(",")[1];
if (StrUtil.isNotBlank(STRDT) && STRDT.split(",").length == 2) {
startTime = STRDT.split(",")[0];
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());
return resultPage;
}
@ -262,7 +315,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
@Override
public boolean batchRemoveDraft(List<String> ids) {
long count = countByIdsAndLockFlag(ids, 1);
if(count > 0){
if (count > 0) {
return false;
}
String userId = SecurityUtils.getUserId();
@ -392,7 +445,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
// hbrvnmSet.add(hbrv.getRvnm());
// }
List<SdEngInfoBH> stationList = engInfoBHMapper.selectByRvcd(null,orgId);
List<SdEngInfoBH> stationList = engInfoBHMapper.selectByRvcd(null, orgId);
if (stationList != null) {
for (SdEngInfoBH station : stationList) {
if (station.getStcd() != null) {
@ -401,7 +454,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
if (station.getEnnm() != null) {
ennmSet.add(station.getEnnm());
}
if(station.getReachcdName() != null){
if (station.getReachcdName() != null) {
hbrvnmSet.add(station.getReachcdName());
}
}
@ -419,7 +472,7 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
if (station.getEnnm() != null) {
ennmSet.add(station.getEnnm());
}
if(station.getReachcdName() != null){
if (station.getReachcdName() != null) {
hbrvnmSet.add(station.getReachcdName());
}
@ -825,9 +878,9 @@ public class FishDraftDataServiceImpl extends ServiceImpl<FishDraftDataMapper, F
}
private void rollbackSubmittedDrafts(String approvalId,
List<String> succeededIds,
Map<String, String> originalStatusMap,
Exception originalException) {
List<String> succeededIds,
Map<String, String> originalStatusMap,
Exception originalException) {
try {
for (List<String> batchIds : splitList(normalizeBatchValues(succeededIds), IN_QUERY_BATCH_SIZE)) {
executeInNewTransaction(() -> {

View File

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

View File

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

View File

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

View File

@ -1459,6 +1459,11 @@ public class OverviewServiceImpl implements OverviewService {
columnMap.put("introduce", "t.INTRODUCE AS \"introduce\"");
columnMap.put("logo", "t.LOGO AS \"logo\"");
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("invinmn", "t.INVINMN AS \"invinmn\"");
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_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 (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 " +
" 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 " +
" 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 " +
" 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 " +

View File

@ -2959,7 +2959,7 @@ public class SdWtMonitorServiceImpl implements SdWtMonitorService {
}
@Override
// @Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator")
@Cacheable(cacheNames = "wtCache#3600", keyGenerator = "cacheKeyByUserGenerator")
public DataSourceResult<WaterTempMapVO> getEngTempPointListKendoListCust(DataSourceRequest dataSourceRequest) {
DataSourceResult<WaterTempMapVO> dataSourceResult = new DataSourceResult<>();
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 " +
"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_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 " +
"WHERE NVL(we.IS_DELETED, 0) = 0 " +
"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 totalAgg.fcnt END AS endCnt ")
.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("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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(" 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("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) ");
if (StrUtil.isNotBlank(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)) {
paramMap.put("fishPageHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} ");
sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} ");
}
if (StrUtil.isNotBlank(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("LEFT JOIN (")
.append("SELECT SUM(NVL(fish.FCNT, 0)) AS fcnt, TO_CHAR(we.TM, 'YYYY') AS yr ")
.append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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(" 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("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND TO_CHAR(we.TM, 'YYYY') IN (#{map.startYear}, #{map.endYear}) ");
if (StrUtil.isNotBlank(baseId)) {
sql.append("AND section.BASE_ID = #{map.fishPageBaseId} ");
sql.append("AND sec.BASE_ID = #{map.fishPageBaseId} ");
}
if (StrUtil.isNotBlank(hbrvcd)) {
sql.append("AND section.HBRVCD = #{map.fishPageHbrvcd} ");
sql.append("AND sec.HBRVCD = #{map.fishPageHbrvcd} ");
}
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') ")
.append(") totalAgg ON totalAgg.yr = fishAgg.yr ")
@ -1087,33 +1087,33 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap = new HashMap<>();
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("section.STCD AS stcd, ")
.append("section.STNM AS stnm, ")
.append("section.LGTD AS lgtd, ")
.append("section.LTTD AS lttd, ")
.append("section.ELEV AS dtmel, ")
.append("section.RSTCD AS rstcds, ")
.append("sec.STCD AS stcd, ")
.append("sec.STNM AS stnm, ")
.append("sec.LGTD AS lgtd, ")
.append("sec.LTTD AS lttd, ")
.append("sec.ELEV AS dtmel, ")
.append("sec.RSTCD AS rstcds, ")
.append("eng.ENNM AS ennm, ")
.append("TO_CHAR(latest.TM, 'yyyy-mm-dd hh24:mi:ss') AS tm, ")
.append("'WE' AS anchoPointState, ")
.append("'WE' AS sttpMap, ")
.append("'WE' AS sttp, ")
.append("'WE' AS sttpCode, ")
.append("section.STNM AS titleName, ")
.append("section.RVCD AS rvcd, ")
.append("section.ADDVCD AS addvcd, ")
.append("section.BASE_ID AS baseId, ")
.append("section.RSTCD AS rstcd, ")
.append("sec.STNM AS titleName, ")
.append("sec.RVCD AS rvcd, ")
.append("sec.ADDVCD AS addvcd, ")
.append("sec.BASE_ID AS baseId, ")
.append("sec.RSTCD AS rstcd, ")
.append("siteSort.SORT AS siteStepSort ")
.append("FROM SD_WE_B_H section ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("FROM SD_WE_B_H sec ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN ( ")
.append(" SELECT STCD, MAX(TM) AS TM ")
.append(" FROM SD_WE_R ")
.append(" WHERE NVL(IS_DELETED, 0) = 0 AND STATUS = 1 ")
.append(" GROUP BY STCD ")
.append(") latest ON latest.STCD = section.STCD ")
.append("LEFT JOIN MS_ALONG_B along ON along.BASEID = section.BASE_ID ")
.append(") latest ON latest.STCD = sec.STCD ")
.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("LEFT JOIN ( ")
.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(" AND NVL(cfg.IS_DELETED, 0) = 0 ")
.append(" AND cfg.CODE = 'common' ")
.append(") siteSort ON siteSort.BASEID = section.BASE_ID AND siteSort.STCD = section.STCD ")
.append("WHERE NVL(section.USFL, 1) = 1 ");
.append(") siteSort ON siteSort.BASEID = sec.BASE_ID AND siteSort.STCD = sec.STCD ")
.append("WHERE NVL(sec.USFL, 1) = 1 ");
String filterSql = buildWePointFilterCondition(dataSourceRequest.getFilter(), paramMap, new int[]{0});
if (StrUtil.isNotBlank(filterSql)) {
@ -1186,8 +1186,8 @@ public class WeFishServiceImpl implements WeFishService {
.append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H section ON section.STCD = we.STCD ")
.append(" AND NVL(section.USFL, 1) = 1 ")
.append("INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD ")
.append(" AND NVL(sec.USFL, 1) = 1 ")
.append("INNER JOIN ( ")
.append(" SELECT STCD, MAX(TM) AS TM ")
.append(" FROM SD_WE_R ")
@ -1201,7 +1201,7 @@ public class WeFishServiceImpl implements WeFishService {
.append(" WHERE NVL(rel.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(") 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("AND NVL(we.IS_DELETED, 0) = 0 ")
.append("AND NVL(we.STATUS, 1) = 1 ");
@ -1925,16 +1925,16 @@ public class WeFishServiceImpl implements WeFishService {
StringBuilder sql = new StringBuilder();
sql.append("SELECT t.BASE_ID AS hbrvcd, t.YR AS yr ")
.append("FROM (")
.append("SELECT section.HBRVCD, section.RSTCD, section.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("SELECT sec.HBRVCD, sec.RSTCD, sec.BASE_ID, TO_CHAR(we.TM, 'yyyy') AS yr ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.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("WHERE NVL(section.USFL, 0) = 1 ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND CASE ")
.append("WHEN dict.SPEC_ORIGIN = 2 THEN 1 ")
.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)) {
paramMap.put("weYearBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weYearBaseId} ");
sql.append("AND sec.BASE_ID = #{map.weYearBaseId} ");
}
if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weYearHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weYearHbrvcd} ");
sql.append("AND sec.HBRVCD = #{map.weYearHbrvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("weYearYr", yr);
@ -1965,11 +1965,11 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}");
}
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("INNER JOIN (")
.append("SELECT det.STCD, det.SORT, cfg.RVCD ")
@ -1993,7 +1993,7 @@ public class WeFishServiceImpl implements WeFishService {
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 ")
.append("FROM (")
.append("SELECT section.RSTCD AS STCD, ")
.append("SELECT sec.RSTCD AS STCD, ")
.append("eng.ENNM AS STNM, ")
.append("COUNT(DISTINCT fish.FTP) AS NUM, ")
.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 dict.PTYPE = 6 THEN '3' ")
.append("END AS TY ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
// .append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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("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 NVL(section.USFL, 0) = 1 ");
// .append("WHERE NVL(sec.USFL, 0) = 1 ");
if (StrUtil.isNotBlank(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)) {
paramMap.put("weFishStatHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weFishStatHbrvcd} ");
sql.append("AND sec.HBRVCD = #{map.weFishStatHbrvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishStatYr", yr);
@ -2038,7 +2038,7 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}");
}
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 dict.PTYPE = 6 THEN 3 ")
.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 = 1 AND NVL(dict.PTYPE, -1) <> 6 THEN '2' ")
.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();
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("SELECT section.RSTCD AS STCD, ")
.append("SELECT sec.RSTCD AS STCD, ")
.append("eng.ENNM AS STNM, ")
.append("COUNT(DISTINCT fish.FTP) AS NUM, ")
.append("CASE ")
@ -2083,29 +2083,29 @@ public class WeFishServiceImpl implements WeFishService {
.append("WHEN dict.SPEC_ORIGIN = 1 AND dict.PTYPE = 6 THEN '3' ")
.append("END AS TY, ")
.append("TO_CHAR(we.TM, 'yyyy') AS YR ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.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)) {
paramMap.put("weFishStatBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weFishStatBaseId} ");
sql.append("AND sec.BASE_ID = #{map.weFishStatBaseId} ");
}
if (StrUtil.isNotBlank(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("GROUP BY section.RSTCD, eng.ENNM, ")
.append("GROUP BY sec.RSTCD, eng.ENNM, ")
.append("CASE ")
.append("WHEN dict.SPEC_ORIGIN = 2 THEN '1' ")
.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) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("section.RSTCD AS rstcd, ")
.append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT dict.ZY_FISH_ID)) AS id ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ")
.append("AND dict.ZY_FISH_ID IS NOT NULL ");
if (StrUtil.isNotBlank(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)) {
paramMap.put("qgcWeFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.qgcWeFishDetailRstcd} ");
sql.append("AND sec.RSTCD = #{map.qgcWeFishDetailRstcd} ");
}
if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("qgcWeFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.qgcWeFishDetailRvcd} ");
sql.append("AND sec.HBRVCD = #{map.qgcWeFishDetailRvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("qgcWeFishDetailYr", yr);
@ -2233,7 +2233,7 @@ public class WeFishServiceImpl implements WeFishService {
.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");
return sql.toString();
}
@ -2246,36 +2246,36 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("section.RSTCD AS rstcd, ")
.append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT section.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STCD)) AS stcd, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT sec.STNM)) AS stnm, ")
.append("TO_CHAR(WM_CONCAT(DISTINCT dict.NAME)) AS name ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.append(" AND NVL(dict.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ")
.append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ")
.append("AND dict.NAME IS NOT NULL ");
if (StrUtil.isNotBlank(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)) {
paramMap.put("weFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.weFishDetailRstcd} ");
sql.append("AND sec.RSTCD = #{map.weFishDetailRstcd} ");
}
if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.weFishDetailRvcd} ");
sql.append("AND sec.HBRVCD = #{map.weFishDetailRvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishDetailYr", yr);
@ -2290,7 +2290,7 @@ public class WeFishServiceImpl implements WeFishService {
.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");
return sql.toString();
}
@ -2303,36 +2303,36 @@ public class WeFishServiceImpl implements WeFishService {
Map<String, Object> paramMap) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT ")
.append("section.RSTCD AS rstcd, ")
.append("sec.RSTCD AS rstcd, ")
.append("eng.ENNM AS rstcdName, ")
.append("section.STCD AS stcd, ")
.append("section.STNM AS stnm, ")
.append("sec.STCD AS stcd, ")
.append("sec.STNM AS stnm, ")
.append("dict.ZY_FISH_ID AS id ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.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("LEFT JOIN V_SD_FISHDICTORY_B dict ON fish.FTP = dict.FISH_ID ")
.append(" AND (section.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(section.USFL, 0) = 1 ")
.append("AND section.RSTCD IS NOT NULL ")
.append(" AND (sec.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') ")
.append("WHERE NVL(sec.USFL, 0) = 1 ")
.append("AND sec.RSTCD IS NOT NULL ")
.append("AND dict.ZY_FISH_ID IS NOT NULL ");
if (StrUtil.isNotBlank(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)) {
paramMap.put("hbbQgcWeFishDetailRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.hbbQgcWeFishDetailRstcd} ");
sql.append("AND sec.RSTCD = #{map.hbbQgcWeFishDetailRstcd} ");
}
if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("hbbQgcWeFishDetailRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} ");
sql.append("AND sec.HBRVCD = #{map.hbbQgcWeFishDetailRvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("hbbQgcWeFishDetailYr", yr);
@ -2347,8 +2347,8 @@ public class WeFishServiceImpl implements WeFishService {
.append("END = #{map.hbbQgcWeFishDetailTy} ");
}
sql.append("GROUP BY section.RSTCD, eng.ENNM, section.STCD, section.STNM,dict.ZY_FISH_ID ")
.append("ORDER BY eng.ENNM ASC NULLS LAST, section.STNM ASC NULLS LAST");
sql.append("GROUP BY sec.RSTCD, eng.ENNM, sec.STCD, sec.STNM,dict.ZY_FISH_ID ")
.append("ORDER BY eng.ENNM ASC NULLS LAST, sec.STNM ASC NULLS LAST");
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 dict.PTYPE = 6 THEN '3' ")
.append("END AS ty ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("LEFT JOIN SD_FISHDICTORY_B dict ON fish.FTP = dict.ID ")
.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)) {
paramMap.put("weFishStatTabBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weFishStatTabBaseId} ");
sql.append("AND sec.BASE_ID = #{map.weFishStatTabBaseId} ");
}
if (StrUtil.isNotBlank(rvcd)) {
paramMap.put("weFishStatTabRvcd", rvcd);
sql.append("AND section.HBRVCD = #{map.weFishStatTabRvcd} ");
sql.append("AND sec.HBRVCD = #{map.weFishStatTabRvcd} ");
}
if (StrUtil.isNotBlank(rstcd)) {
paramMap.put("weFishStatTabRstcd", rstcd);
sql.append("AND section.RSTCD = #{map.weFishStatTabRstcd} ");
sql.append("AND sec.RSTCD = #{map.weFishStatTabRstcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("weFishStatTabYr", yr);
@ -2547,7 +2547,7 @@ public class WeFishServiceImpl implements WeFishService {
"eng.RVCD_NAME AS rvcdName, " +
"eng.HBRVCD AS hbrvcd, " +
"eng.HBRVCD_NAME AS hbrvcdName, " +
"section.RSTCD AS rstcd, " +
"sec.RSTCD AS rstcd, " +
"eng.ENNM AS ennm, " +
"eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " +
@ -2557,9 +2557,9 @@ public class WeFishServiceImpl implements WeFishService {
"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_WE_B_H section ON we.STCD = section.STCD " +
" AND NVL(section.USFL, 0) = 1 " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
"INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD " +
" AND NVL(sec.USFL, 0) = 1 " +
"INNER JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " +
"INNER JOIN V_SD_FISHDICTORY_B dict ON dict.FISH_ID = fish.FTP " +
" AND (eng.HBRVCD = dict.RVCD OR dict.RVCD = 'ZY') " +
@ -2580,11 +2580,11 @@ public class WeFishServiceImpl implements WeFishService {
end = parseDateTimeSafely(endTime);
}
StringBuilder sql = new StringBuilder();
sql.append("SELECT agg.ftp AS ftp, section.STCD AS stcd, section.RSTCD AS rstcds, ")
.append("section.STNM AS stnm, eng.ENNM AS ennm, ")
.append("section.LGTD AS lgtd, section.LTTD AS lttd, ")
sql.append("SELECT agg.ftp AS ftp, sec.STCD AS stcd, sec.RSTCD AS rstcds, ")
.append("sec.STNM AS stnm, eng.ENNM AS ennm, ")
.append("sec.LGTD AS lgtd, sec.LTTD AS lttd, ")
.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("eng.ELEV AS dtmel ")
.append("FROM (")
@ -2592,12 +2592,12 @@ public class WeFishServiceImpl implements WeFishService {
.append("FROM (")
.append("SELECT dict.ZY_FISH_ID AS ID, we.STCD AS stcd ")
.append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WE_B_H section ON we.STCD = section.STCD ")
.append(" AND NVL(section.USFL, 0) = 1 ")
.append("INNER JOIN SD_WE_B_H sec ON we.STCD = sec.STCD ")
.append(" AND NVL(sec.USFL, 0) = 1 ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID ")
.append(" AND NVL(fish.IS_DELETED, 0) = 0 ")
.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("AND NVL(we.STATUS, 1) = 1 ");
@ -2625,12 +2625,12 @@ public class WeFishServiceImpl implements WeFishService {
sql.append("AND we.STCD IN (")
.append("SELECT a.STCD ")
.append("FROM SD_WE_R a ")
.append("INNER JOIN SD_WE_B_H section2 ON a.STCD = section2.STCD ")
.append(" AND NVL(section2.USFL, 0) = 1 ")
.append("INNER JOIN SD_WE_B_H sec2 ON a.STCD = sec2.STCD ")
.append(" AND NVL(sec2.USFL, 0) = 1 ")
.append("INNER JOIN SD_WEFISH_R b ON a.ID = b.WER_ID ")
.append(" AND NVL(b.IS_DELETED, 0) = 0 ")
.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("AND NVL(a.STATUS, 1) = 1 ");
if (start != null && end != null) {
@ -2644,16 +2644,16 @@ public class WeFishServiceImpl implements WeFishService {
sql.append("GROUP BY we.STCD, dict.ZY_FISH_ID")
.append(") t GROUP BY t.stcd")
.append(") agg ")
.append("INNER JOIN SD_WE_B_H section ON agg.stcd = section.STCD ")
.append(" AND NVL(section.USFL, 0) = 1 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD ")
.append("INNER JOIN SD_WE_B_H sec ON agg.stcd = sec.STCD ")
.append(" AND NVL(sec.USFL, 0) = 1 ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD ")
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE 1 = 1 ");
if (StrUtil.isNotBlank(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();
}
@ -2669,14 +2669,14 @@ public class WeFishServiceImpl implements WeFishService {
}
return switch (field) {
case "stcd" -> "section.STCD";
case "lgtd" -> "section.LGTD";
case "stnm", "titleName" -> "section.STNM";
case "stcd" -> "sec.STCD";
case "lgtd" -> "sec.LGTD";
case "stnm", "titleName" -> "sec.STNM";
case "ennm" -> "eng.ENNM";
case "rvcd" -> "section.RVCD";
case "addvcd" -> "section.ADDVCD";
case "baseId" -> "section.BASE_ID";
case "rstcd", "rstcds" -> "section.RSTCD";
case "rvcd" -> "sec.RVCD";
case "addvcd" -> "sec.ADDVCD";
case "baseId" -> "sec.BASE_ID";
case "rstcd", "rstcds" -> "sec.RSTCD";
case "tm" -> "latest.TM";
default -> null;
};
@ -2709,13 +2709,13 @@ public class WeFishServiceImpl implements WeFishService {
return null;
}
return switch (field) {
case "stcd" -> "section.STCD";
case "stnm", "titleName" -> "section.STNM";
case "stcd" -> "sec.STCD";
case "stnm", "titleName" -> "sec.STNM";
case "ennm" -> "eng.ENNM";
case "tm" -> "latest.TM";
case "rvcd" -> "section.RVCD";
case "addvcd" -> "section.ADDVCD";
case "baseId" -> "section.BASE_ID";
case "rvcd" -> "sec.RVCD";
case "addvcd" -> "sec.ADDVCD";
case "baseId" -> "sec.BASE_ID";
case "siteStepSort" -> "siteSort.SORT";
default -> null;
};
@ -3949,21 +3949,21 @@ public class WeFishServiceImpl implements WeFishService {
.append("COUNT(DISTINCT we.STCD) AS stcdCount, ")
.append("COUNT(DISTINCT fish.FTP) AS ftpCount, ")
.append("NVL(SUM(NVL(fish.FCNT, 0)), 0) AS fcntSum ")
.append("FROM SD_WE_B_H section ")
.append("INNER JOIN SD_WE_R we ON section.STCD = we.STCD ")
.append("FROM SD_WE_B_H sec ")
.append("INNER JOIN SD_WE_R we ON sec.STCD = we.STCD ")
.append(" AND NVL(we.IS_DELETED, 0) = 0 ")
.append(" AND NVL(we.STATUS, 1) = 1 ")
.append("LEFT JOIN SD_WEFISH_R fish ON fish.WER_ID = we.ID ")
.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)) {
paramMap.put("weStaticsBaseId", baseId);
sql.append("AND section.BASE_ID = #{map.weStaticsBaseId} ");
sql.append("AND sec.BASE_ID = #{map.weStaticsBaseId} ");
}
if (StrUtil.isNotBlank(hbrvcd)) {
paramMap.put("weStaticsHbrvcd", hbrvcd);
sql.append("AND section.HBRVCD = #{map.weStaticsHbrvcd} ");
sql.append("AND sec.HBRVCD = #{map.weStaticsHbrvcd} ");
}
if (StrUtil.isNotBlank(yr)) {
paramMap.put("weStaticsYr", yr);
@ -3981,7 +3981,7 @@ public class WeFishServiceImpl implements WeFishService {
placeholders.add("#{map." + key + "}");
}
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();
@ -4001,8 +4001,8 @@ public class WeFishServiceImpl implements WeFishService {
private String buildWeFishTDetailSql() {
return "SELECT " +
"section.STCD AS stcd, " +
"section.STNM AS stnm, " +
"sec.STCD AS stcd, " +
"sec.STNM AS stnm, " +
"eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " +
"eng.RVCD AS rvcd, " +
@ -4044,9 +4044,9 @@ public class WeFishServiceImpl implements WeFishService {
"FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.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 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
"INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " +
" AND NVL(sec.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " +
" AND NVL(dict.IS_DELETED, 0) = 0 " +
@ -4056,8 +4056,8 @@ public class WeFishServiceImpl implements WeFishService {
private String buildWeFishQgcDetailSql() {
return "SELECT " +
"section.STCD AS stcd, " +
"section.STNM AS stnm, " +
"sec.STCD AS stcd, " +
"sec.STNM AS stnm, " +
"eng.BASE_ID AS baseId, " +
"eng.BASE_NAME AS baseName, " +
"eng.RVCD AS rvcd, " +
@ -4099,9 +4099,9 @@ public class WeFishServiceImpl implements WeFishService {
"FROM SD_WE_R we " +
"INNER JOIN SD_WEFISH_R fish ON fish.WER_ID = we.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 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = section.RSTCD " +
"INNER JOIN SD_WE_B_H sec ON sec.STCD = we.STCD " +
// " AND NVL(sec.USFL, 0) = 1 " +
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = sec.RSTCD " +
" AND NVL(eng.IS_DELETED, 0) = 0 " +
"LEFT JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP " +
// " 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.DataSourceResult;
import com.yfd.platform.common.exception.BizException;
import com.yfd.platform.common.utils.UserNameFillHelper;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.qgc_base.service.ISdHbrvDicService;
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.PowerDto;
import com.yfd.platform.qgc_lygk.along.domain.SttpDto;
import com.yfd.platform.qgc_lygk.along.service.IMsAlongBService;
import com.yfd.platform.qgc_sys.mapcfg.service.IMapmoduleBService;
import com.yfd.platform.utils.DataSourceRequestUtil;
@ -41,6 +43,9 @@ public class MsAlongBController {
@Resource
private ISdHbrvDicService hbrvDicService;
@Resource
private UserNameFillHelper userNameFillHelper;
/**
* 条件过滤数据列表
*/
@ -48,6 +53,7 @@ public class MsAlongBController {
@PostMapping("/GetKendoList")
public ResponseResult getKendoList(@RequestBody DataSourceRequest dataSourceRequest) {
DataSourceResult<MsAlongB> result = msAlongBService.getKendoList(dataSourceRequest);
userNameFillHelper.fillUserNames(result.getData());
return ResponseResult.successData(result);
}
@ -99,4 +105,11 @@ public class MsAlongBController {
DataSourceResult<PowerDto> result = msAlongBService.getKendoPage(dataSourceRequest);
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.TableId;
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 lombok.Data;
@ -47,10 +49,12 @@ public class MsAlongB implements Serializable {
/** 创建人 */
@TableField("RECORD_USER")
@UserIdField
private String recordUser;
/** 创建人名称(非数据库字段) */
@TableField(exist = false)
@UserNameField
private String recordUserName;
/** 创建时间 */

View File

@ -41,7 +41,11 @@ public class MsAlongDetB implements Serializable {
/** 排序序号 */
@TableField("SORT")
private String sort;
private Integer sort;
// /** 排序序号 */
// @TableField("SORT")
// private String sort;
/** 沿程配置表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.qgc_lygk.along.domain.MsAlongB;
import com.yfd.platform.qgc_lygk.along.domain.PowerDto;
import com.yfd.platform.qgc_lygk.along.domain.SttpDto;
import java.util.List;
@ -28,6 +29,14 @@ public interface IMsAlongBService extends IService<MsAlongB> {
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_lygk.along.domain.MsAlongB;
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.service.IMsAlongBService;
import com.yfd.platform.utils.CodeToNameMetadataBo;
@ -154,6 +155,127 @@ public class MsAlongBServiceImpl extends ServiceImpl<MsAlongBMapper, MsAlongB> i
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完美适配你的内部类结构
*/

View File

@ -81,7 +81,7 @@ public class MsAlongDetBServiceImpl extends ServiceImpl<MsAlongDetBMapper, MsAlo
List<PowerDto> powerDtos = msAlongDetBMapper.getWbsbList(stcd);
if (CollUtil.isNotEmpty(powerDtos)) {
// 取第一个结果通常一个 STCD 只对应一条记录
String stnm = powerDtos.get(0).getStnm();
String stnm = powerDtos.getFirst().getStnm();
record.setStnm(stnm);
}
}
@ -154,7 +154,7 @@ public class MsAlongDetBServiceImpl extends ServiceImpl<MsAlongDetBMapper, MsAlo
entity.setRecordUser(SecurityUtils.getUserId()); // 创建人
//entity.setRecordUser(SecurityUtils.getCurrentUsername()); // 创建人
if (node.getSort() != null){
entity.setSort(String.valueOf(node.getSort())); // 若传了排序
entity.setSort(node.getSort()); // 若传了排序
}
if (StrUtil.isBlank(entity.getId())) {
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
druid:
master:
driverClassName: oracle.jdbc.OracleDriver
url: "${DB_MASTER_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}"
# driverClassName: oracle.jdbc.OracleDriver
# 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}"
password: "${DB_MASTER_PASSWORD:Y4M4K1oCkL8U}"
initial-size: 5
@ -35,14 +37,17 @@ spring:
remove-abandoned-timeout: 1800
log-abandoned: true
break-after-acquire-failure: true
time-between-connect-error-millis: 300000
time-between-connect-error-millis: 30000
pool-prepared-statements: true
max-open-prepared-statements: 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:
driverClassName: oracle.jdbc.OracleDriver
url: "${DB_SLAVE_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}"
# driverClassName: oracle.jdbc.OracleDriver
# url: "${DB_SLAVE_URL:jdbc:oracle:thin:@172.16.31.190:1521/SDLYZ}"
username: "${DB_SLAVE_USERNAME:QGC_REFA}"
password: "${DB_SLAVE_PASSWORD:Y4M4K1oCkL8U}"
initial-size: 5
@ -65,11 +70,12 @@ spring:
remove-abandoned-timeout: 1800
log-abandoned: true
break-after-acquire-failure: true
time-between-connect-error-millis: 300000
time-between-connect-error-millis: 30000
pool-prepared-statements: true
max-open-prepared-statements: 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:
stat:
enabled: true

View File

@ -191,6 +191,66 @@
ORDER BY D.TM DESC, D.ROW_INDEX ASC
</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
<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%;
display: flex;
align-items: center;
justify-content: start;
justify-content: end;
"
>
<a-button
@ -983,7 +983,7 @@ onMounted(() => {
width: 20%;
max-height: 402px;
max-width: 400px;
min-height: 362px;
// min-height: 362px;
border-radius: 3px;
padding: 15px 24px 24px;
background-color: rgb(255, 255, 255);