feat: 环保自动监测开展情况

This commit is contained in:
tangwei 2026-06-29 18:59:51 +08:00
parent 0295c67e41
commit 1fe6607dbf
4 changed files with 656 additions and 0 deletions

View File

@ -75,6 +75,12 @@ public class WeFishController {
return ResponseResult.successData(weFishService.getWeCompareBarList(dataSourceRequest)); return ResponseResult.successData(weFishService.getWeCompareBarList(dataSourceRequest));
} }
@PostMapping("/base/evnmAutoMonitor/GetKendoListCust")
@Operation(summary = "环保自动监测开展情况")
public ResponseResult getEnvmAutoMonitorList(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(weFishService.getEnvmAutoMonitorList(dataSourceRequest));
}
@PostMapping("/we/fisht/year/qgc/GetKendoListCust") @PostMapping("/we/fisht/year/qgc/GetKendoListCust")
@Operation(summary = "全过程沿程鱼类变化情况有数据的流域和年份") @Operation(summary = "全过程沿程鱼类变化情况有数据的流域和年份")
public ResponseResult getQgcFishStaticsYearList(@RequestBody DataSourceRequest dataSourceRequest) { public ResponseResult getQgcFishStaticsYearList(@RequestBody DataSourceRequest dataSourceRequest) {

View File

@ -0,0 +1,27 @@
package com.yfd.platform.qgc_env.wte.entity.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "环保自动监测开展情况")
public class WeEnvmAutoMonitorVo {
@Schema(description = "数量")
private Integer cnt;
@Schema(description = "功能序号")
private Integer orderInx;
@Schema(description = "功能序号名称")
private String orderInxName;
@Schema(description = "类型路径")
private String sttpFullPath;
@Schema(description = "站点类型")
private String sttpCode;
@Schema(description = "站点类型名称")
private String sttpName;
}

View File

@ -5,6 +5,7 @@ import com.yfd.platform.common.DataSourceResult;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeEnvmAutoMonitorVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeMsstbprptVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishPointQgcVo;
@ -41,6 +42,8 @@ public interface WeFishService {
DataSourceResult<WeCompareBarTableVo> getWeCompareBarList(DataSourceRequest dataSourceRequest); DataSourceResult<WeCompareBarTableVo> getWeCompareBarList(DataSourceRequest dataSourceRequest);
DataSourceResult<WeEnvmAutoMonitorVo> getEnvmAutoMonitorList(DataSourceRequest dataSourceRequest);
DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest); DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest);
DataSourceResult<WeStaticsVo> getQgcWeFishStatics(DataSourceRequest dataSourceRequest); DataSourceResult<WeStaticsVo> getQgcWeFishStatics(DataSourceRequest dataSourceRequest);

View File

@ -13,6 +13,7 @@ import com.yfd.platform.common.MicroservicDynamicSQLMapper;
import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarHeadColumnVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarHeadColumnVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarTableVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeCompareBarVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeEnvmAutoMonitorVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListQgcVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishListStatQgcVo;
import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo; import com.yfd.platform.qgc_env.wte.entity.vo.WeFishDetailVo;
@ -478,6 +479,135 @@ public class WeFishServiceImpl implements WeFishService {
return result; return result;
} }
@Override
public DataSourceResult<WeEnvmAutoMonitorVo> getEnvmAutoMonitorList(DataSourceRequest dataSourceRequest) {
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
DataSourceRequest.FilterDescriptor filter = dataSourceRequest == null ? null : dataSourceRequest.getFilter();
String baseId = resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "baseId");
Date startTime = toDateValue(resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "startTime"));
Date endTime = toDateValue(resolveWeFishStringFilterValue(dataSourceRequest, loadOptions, "endTime"));
if (startTime == null || endTime == null) {
startTime = null;
endTime = null;
}
List<String> rstcds = getWeFishFilterTexts(filter, "rstcd");
List<String> hbrvcds = getWeFishFilterTexts(filter, "hbrvcd");
List<String> rvcds = getWeFishFilterTexts(filter, "rvcd");
List<String> showIds = getWeFishFilterTexts(filter, "showIds");
boolean ignoreFhRstcd = shouldIgnoreWeEnvmFhRstcd(rstcds);
List<WeEnvmAutoMonitorVo> rows = new ArrayList<>();
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWtSql(baseId, rstcds)),
1, null, "ENV,ENVM,WT,", "水温监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmGjWqSql(baseId, hbrvcds, rvcds)),
2, "WQ", "ENV,ENVM,WQ,", "国家水质站"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmZjWqSql(baseId, rstcds)),
3, "WQ", "ENV,ENVM,WQ,", "水质监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmStGjSql(baseId)),
5, null, "ST,ZQ-ST,ZZ", "国家水文站"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmStZjSql(baseId, rstcds)),
6, null, "ST,ZQ-ST,ZZ", "水文监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmEngQecSql(baseId, rstcds)),
7, "ENG", "ENG", "生态流量"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmVdSql(baseId, rstcds)),
8, null, "VD,VD", "视频监控"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmRiverWqSql(baseId, rstcds)),
9, "WQ", "ENV,ENVM,WQ,", "河道水质监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFbWqSql(baseId, rstcds)),
10, "WQFB", "ENV,ENVM,WQFB,", "增殖站水质站"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFhSql(baseId, rstcds, ignoreFhRstcd)),
11, "FH", "ENV,ENVP,FH,", "栖息地"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFhWqSql(baseId, rstcds, ignoreFhRstcd)),
12, "WQ", "ENV,ENVM,WQ,", "栖息地水质监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFhWtSql(baseId, rstcds, ignoreFhRstcd)),
13, "WTRV", "ENV,ENVM,WT,WTRV,", "栖息地水温监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFhStSql(baseId, rstcds, ignoreFhRstcd)),
14, null, "ST,ZQ-ST,ZZ", "水文监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWeSql(baseId, rstcds)),
15, "WE", "ENV,ENVM,WE,", "水生态调查断面"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWvaSql(baseId, rstcds, hbrvcds)),
16, "WVA", "ENV,ENVM,WVA,", "野生动物监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmVdEqsSql(baseId, rstcds)),
17, "VD_EQS", "VD,VD_EQS,", "生态流量视频站"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmRareFishSql(baseId, rstcds, startTime, endTime)),
18, null, "WE_FISH", "土著珍稀鱼类"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmTeAnimalsSql()),
20, "TE_ANIMALS", "TE_ANIMALS", "重点陆生动物"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmRgWqSql(baseId, rstcds)),
21, "WQ", "ENV,ENVM,WQ,", "人工水质监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWeFishStaticsSql(baseId, rstcds, startTime, endTime)),
22, "WE", "WE_FISH_ST", "调查鱼类统计"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmFpStaticsSql(baseId, rstcds)),
23, "FP", "ENV,ENVP,FP,", "过鱼设施"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmVdYljSql(baseId, rstcds)),
24, null, "VD,VD", "视频监控"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmAiSql(baseId, rstcds, hbrvcds)),
25, "AI", "AI,AI_", "AI盒子"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWtrvSql(baseId, rstcds)),
26, null, "ENV,ENVM,WT,", "表层水温监测"
));
rows.add(buildWeEnvmAutoMonitorVo(
queryWeEnvmAutoMonitorCount(buildWeEnvmWtvtSql(baseId, rstcds)),
27, null, "ENV,ENVM,WT,", "垂向水温监测"
));
List<WeEnvmAutoMonitorVo> finalRows = reorderWeEnvmAutoMonitorRows(rows, showIds);
DataSourceResult<WeEnvmAutoMonitorVo> result = new DataSourceResult<>();
result.setData(finalRows);
result.setTotal((long) finalRows.size());
result.setAggregates(new HashMap<>());
return result;
}
@Override @Override
public DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest) { public DataSourceResult<Map<String, List<String>>> getQgcFishStaticsYearList(DataSourceRequest dataSourceRequest) {
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
@ -3695,6 +3825,496 @@ public class WeFishServiceImpl implements WeFishService {
} }
} }
private WeEnvmAutoMonitorVo buildWeEnvmAutoMonitorVo(Integer cnt,
Integer orderInx,
String sttpCode,
String sttpFullPath,
String sttpName) {
WeEnvmAutoMonitorVo vo = new WeEnvmAutoMonitorVo();
vo.setCnt(cnt == null ? 0 : cnt);
vo.setOrderInx(orderInx);
vo.setOrderInxName(sttpName);
vo.setSttpCode(sttpCode);
vo.setSttpFullPath(sttpFullPath);
vo.setSttpName(sttpName);
return vo;
}
private List<WeEnvmAutoMonitorVo> reorderWeEnvmAutoMonitorRows(List<WeEnvmAutoMonitorVo> rows, List<String> showIds) {
if (CollUtil.isEmpty(rows)) {
return new ArrayList<>();
}
LinkedHashMap<String, WeEnvmAutoMonitorVo> rowMap = new LinkedHashMap<>();
for (WeEnvmAutoMonitorVo row : rows) {
if (row != null && row.getOrderInx() != null) {
rowMap.put(String.valueOf(row.getOrderInx()), row);
}
}
List<WeEnvmAutoMonitorVo> result = new ArrayList<>();
if (CollUtil.isNotEmpty(showIds)) {
for (String showId : showIds) {
WeEnvmAutoMonitorVo row = rowMap.get(showId);
if (row != null) {
result.add(row);
}
}
return result;
}
result.addAll(rowMap.values());
result.sort((a, b) -> Integer.compare(
a == null || a.getOrderInx() == null ? Integer.MAX_VALUE : a.getOrderInx(),
b == null || b.getOrderInx() == null ? Integer.MAX_VALUE : b.getOrderInx()
));
return result;
}
private Integer queryWeEnvmAutoMonitorCount(SqlAndParams sqlAndParams) {
if (sqlAndParams == null || StrUtil.isBlank(sqlAndParams.sql())) {
return 0;
}
Map<String, Object> row = microservicDynamicSQLMapper.getOneBySql(sqlAndParams.sql(), sqlAndParams.params());
return toWeFishIntegerValue(firstPresentWeFishValue(row, "CNT", "cnt"));
}
private boolean shouldIgnoreWeEnvmFhRstcd(List<String> rstcds) {
if (CollUtil.isEmpty(rstcds)) {
return false;
}
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(DISTINCT eng.STCD) AS cnt ")
.append("FROM SD_ENGINFO_B_H eng ")
.append("WHERE NVL(eng.IS_DELETED, 0) = 0 ")
.append("AND eng.HYCD = '10304' ")
.append("AND NVL(eng.BLDSTT_CODE, 0) IN (1, 2) ");
appendWeEnvmExactInCondition(sql, paramMap, "eng.STCD", "rstcd", rstcds);
Integer cnt = queryWeEnvmAutoMonitorCount(new SqlAndParams(sql.toString(), paramMap));
return cnt != null && cnt == rstcds.size();
}
private SqlAndParams buildWeEnvmWtSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt ")
.append("FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 ")
.append("AND wt.STTP IN ('WTRV', 'WTVT') ")
.append("AND NVL(wt.MWAY, 0) = 2 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wt.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmGjWqSql(String baseId, List<String> hbrvcds, List<String> rvcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt ")
.append("FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP = 'WQ' ")
.append("AND NVL(wq.MWAY, 0) = 2 ")
.append("AND NVL(wq.DTIN_TYPE, 0) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmExactInCondition(sql, paramMap, "eng.HBRVCD", "hbrvcd", hbrvcds);
appendWeEnvmExactInCondition(sql, paramMap, "eng.RVCD", "rvcd", rvcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmZjWqSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP IN ('WQ', 'WQFB') ")
.append("AND NVL(wq.MWAY, 0) = 2 ")
.append("AND NVL(wq.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wq.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmStGjSql(String baseId) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_RIVER_B_H river ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = river.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(river.IS_DELETED, 0) = 0 ")
.append("AND river.STTP IN ('ZQ', 'ZZ') ")
.append("AND NVL(river.MWAY, 0) = 2 ")
.append("AND NVL(river.DTIN_TYPE, 0) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmStZjSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_RIVER_B_H river ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = river.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(river.IS_DELETED, 0) = 0 ")
.append("AND river.STTP IN ('ZQ', 'ZZ') ")
.append("AND NVL(river.MWAY, 0) = 2 ")
.append("AND NVL(river.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "river.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmEngQecSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_ENGINFO_B_H eng ")
.append("WHERE NVL(eng.IS_DELETED, 0) = 0 ")
.append("AND NVL(eng.DTIN, 0) = 1 ")
.append("AND NVL(eng.BLDSTT_CODE, 0) = 2 ");
if (CollUtil.isEmpty(rstcds)) {
sql.append("AND NVL(eng.RUN_STATE, 0) = 4 ");
} else {
sql.append("AND NVL(eng.PRSC, 0) IN (1, 2, 3) ")
.append("AND NVL(eng.COENVW_STATE, 0) = 1 ");
}
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmExactInCondition(sql, paramMap, "eng.STCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmVdSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_VDINFO_B vd ")
.append("WHERE 1=1 ")
.append("AND vd.STTP LIKE 'VD%' ")
.append("AND NVL(vd.DTIN, 0) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "vd.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "vd.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmRiverWqSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP = 'WQ' ")
.append("AND NVL(wq.MWAY, 0) = 2 ")
.append("AND NVL(wq.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wq.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFbWqSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP = 'WQFB' ")
.append("AND NVL(wq.MWAY, 0) = 2 ")
.append("AND NVL(wq.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wq.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFhSql(String baseId, List<String> rstcds, boolean ignoreRstcd) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_FHBT_B_H fh ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "fh.BASE_ID", baseId);
if (!ignoreRstcd) {
appendWeEnvmLikeCondition(sql, paramMap, "fh.RSTCD", "rstcd", rstcds);
}
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFhWqSql(String baseId, List<String> rstcds, boolean ignoreRstcd) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP = 'WQ' ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
if (!ignoreRstcd) {
appendWeEnvmLikeCondition(sql, paramMap, "wq.RSTCD", "rstcd", rstcds);
appendWeEnvmFhByRstcdCondition(sql, paramMap, "wq.FHSTCD", "fh_rstcd", rstcds);
}
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFhWtSql(String baseId, List<String> rstcds, boolean ignoreRstcd) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 ")
.append("AND wt.STTP = 'WTRV' ")
.append("AND NVL(wt.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
if (!ignoreRstcd) {
appendWeEnvmLikeCondition(sql, paramMap, "wt.RSTCD", "rstcd", rstcds);
appendWeEnvmFhByRstcdCondition(sql, paramMap, "wt.FHSTCD", "fh_rstcd", rstcds);
}
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFhStSql(String baseId, List<String> rstcds, boolean ignoreRstcd) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_RIVER_B_H river ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = river.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(river.IS_DELETED, 0) = 0 ")
.append("AND river.STTP IN ('ZQ', 'ZZ') ")
.append("AND NVL(river.DTIN_TYPE, 0) = 0 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
if (!ignoreRstcd) {
appendWeEnvmLikeCondition(sql, paramMap, "river.RSTCD", "rstcd", rstcds);
appendWeEnvmFhByRstcdCondition(sql, paramMap, "river.FHSTCD", "fh_rstcd", rstcds);
}
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmWeSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WE_B_H weB ")
.append("WHERE NVL(weB.IS_DELETED, 0) = 0 ")
.append("AND EXISTS (SELECT 1 FROM SD_WE_R we ")
.append("WHERE we.STCD = weB.STCD AND NVL(we.IS_DELETED, 0) = 0 AND NVL(we.STATUS, 1) = 1) ");
appendWeEnvmBaseIdCondition(sql, paramMap, "weB.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "weB.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmWvaSql(String baseId, List<String> rstcds, List<String> hbrvcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_AIMONITOR_B_H ai ")
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
.append("AND ai.STTP = 'WVA' ");
appendWeEnvmBaseIdCondition(sql, paramMap, "ai.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "ai.RSTCD", "rstcd", rstcds);
appendWeEnvmExactInCondition(sql, paramMap, "ai.HBRVCD", "hbrvcd", hbrvcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmVdEqsSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_VDINFO_B vd ")
.append("WHERE 1=1 ")
.append("AND vd.STTP = 'VD_EQS' ");
appendWeEnvmBaseIdCondition(sql, paramMap, "vd.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "vd.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmRareFishSql(String baseId, List<String> rstcds, Date startTime, Date endTime) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(DISTINCT fish.FTP) AS cnt ")
.append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_FISHDICTORY_B dict ON dict.ID = fish.FTP AND NVL(dict.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H weB ON weB.STCD = we.STCD AND NVL(weB.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(we.IS_DELETED, 0) = 0 ")
.append("AND NVL(we.STATUS, 1) = 1 ")
.append("AND NVL(dict.RARE, 0) = 1 ")
.append("AND NVL(dict.SPEC_ORIGIN, 0) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "weB.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "weB.RSTCD", "rstcd", rstcds);
appendWeEnvmDateRangeCondition(sql, paramMap, "we.TM", startTime, endTime);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmTeAnimalsSql() {
String sql = "SELECT COUNT(1) AS cnt FROM (" +
"SELECT b.ID FROM MS_SPECANIMALS_B a " +
"INNER JOIN SD_VABASIC_B b ON a.ANIMAL_ID = b.ID " +
"WHERE NVL(a.IS_DELETED, 0) = 0 AND NVL(b.IS_DELETED, 0) = 0 AND NVL(b.ENABLE, 1) = 1 " +
"GROUP BY b.ID" +
")";
return new SqlAndParams(sql, new HashMap<>());
}
private SqlAndParams buildWeEnvmRgWqSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WQ_B_H wq ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wq.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wq.IS_DELETED, 0) = 0 ")
.append("AND wq.STTP = 'WQ' ")
.append("AND NVL(wq.MWAY, 0) = 1 ")
.append("AND NVL(wq.DTIN_TYPE, 0) = 2 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wq.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmWeFishStaticsSql(String baseId, List<String> rstcds, Date startTime, Date endTime) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(DISTINCT fish.FTP) AS cnt ")
.append("FROM SD_WE_R we ")
.append("INNER JOIN SD_WEFISH_R fish ON we.ID = fish.WER_ID AND NVL(fish.IS_DELETED, 0) = 0 ")
.append("INNER JOIN SD_WE_B_H weB ON weB.STCD = we.STCD AND NVL(weB.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(we.IS_DELETED, 0) = 0 ")
.append("AND NVL(we.STATUS, 1) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "weB.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "weB.RSTCD", "rstcd", rstcds);
appendWeEnvmDateRangeCondition(sql, paramMap, "we.TM", startTime, endTime);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmFpStaticsSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_FPSS_B_H fp ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = fp.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(fp.IS_DELETED, 0) = 0 ")
.append("AND fp.LGTD IS NOT NULL ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmExactInCondition(sql, paramMap, "fp.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmVdYljSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_VDINFO_B vd ")
.append("WHERE 1=1 ")
.append("AND vd.STTP LIKE 'VD%' ")
.append("AND vd.STTP <> 'VD_FH' ")
.append("AND NVL(vd.DTIN, 0) = 1 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "vd.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "vd.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmAiSql(String baseId, List<String> rstcds, List<String> hbrvcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_AIMONITOR_B_H ai ")
.append("WHERE NVL(ai.IS_DELETED, 0) = 0 ")
.append("AND ai.STTP LIKE 'AI%' ")
.append("AND ai.STCD = ai.DTIN_SRC ");
appendWeEnvmBaseIdCondition(sql, paramMap, "ai.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "ai.RSTCD", "rstcd", rstcds);
appendWeEnvmExactInCondition(sql, paramMap, "ai.HBRVCD", "hbrvcd", hbrvcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmWtrvSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 ")
.append("AND wt.STTP = 'WTRV' ")
.append("AND NVL(wt.MWAY, 0) = 2 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wt.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private SqlAndParams buildWeEnvmWtvtSql(String baseId, List<String> rstcds) {
StringBuilder sql = new StringBuilder();
Map<String, Object> paramMap = new HashMap<>();
sql.append("SELECT COUNT(1) AS cnt FROM SD_WT_B_H wt ")
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD AND NVL(eng.IS_DELETED, 0) = 0 ")
.append("WHERE NVL(wt.IS_DELETED, 0) = 0 ")
.append("AND wt.STTP = 'WTVT' ")
.append("AND NVL(wt.MWAY, 0) = 2 ");
appendWeEnvmBaseIdCondition(sql, paramMap, "eng.BASE_ID", baseId);
appendWeEnvmLikeCondition(sql, paramMap, "wt.RSTCD", "rstcd", rstcds);
return new SqlAndParams(sql.toString(), paramMap);
}
private void appendWeEnvmBaseIdCondition(StringBuilder sql, Map<String, Object> paramMap, String column, String baseId) {
if (StrUtil.isBlank(baseId)) {
return;
}
sql.append("AND ").append(column).append(" = #{map.baseId} ");
paramMap.put("baseId", baseId);
}
private void appendWeEnvmExactInCondition(StringBuilder sql,
Map<String, Object> paramMap,
String column,
String prefix,
List<String> values) {
if (CollUtil.isEmpty(values)) {
return;
}
sql.append("AND ").append(column).append(" IN (");
for (int i = 0; i < values.size(); i++) {
String key = prefix + i;
if (i > 0) {
sql.append(", ");
}
sql.append("#{map.").append(key).append("}");
paramMap.put(key, values.get(i));
}
sql.append(") ");
}
private void appendWeEnvmLikeCondition(StringBuilder sql,
Map<String, Object> paramMap,
String column,
String prefix,
List<String> values) {
if (CollUtil.isEmpty(values)) {
return;
}
sql.append("AND (");
for (int i = 0; i < values.size(); i++) {
String key = prefix + i;
if (i > 0) {
sql.append(" OR ");
}
sql.append(column).append(" LIKE '%' || #{map.").append(key).append("} || '%'");
paramMap.put(key, values.get(i));
}
sql.append(") ");
}
private void appendWeEnvmDateRangeCondition(StringBuilder sql,
Map<String, Object> paramMap,
String column,
Date startTime,
Date endTime) {
if (startTime == null || endTime == null) {
return;
}
sql.append("AND ").append(column).append(" BETWEEN #{map.startTime} AND #{map.endTime} ");
paramMap.put("startTime", startTime);
paramMap.put("endTime", endTime);
}
private void appendWeEnvmFhByRstcdCondition(StringBuilder sql,
Map<String, Object> paramMap,
String column,
String prefix,
List<String> rstcds) {
if (CollUtil.isEmpty(rstcds)) {
return;
}
sql.append("AND ").append(column).append(" IN (")
.append("SELECT fh.STCD FROM SD_FHBT_B_H fh ")
.append("WHERE NVL(fh.IS_DELETED, 0) = 0 ");
appendWeEnvmLikeCondition(sql, paramMap, "fh.RSTCD", prefix, rstcds);
sql.append(") ");
}
private record SqlAndParams(String sql, Map<String, Object> params) {
}
private void fillWeFishDerivedFields(List<WeFishTQgcVo> list) { private void fillWeFishDerivedFields(List<WeFishTQgcVo> list) {
if (CollUtil.isEmpty(list)) { if (CollUtil.isEmpty(list)) {
return; return;