feat: 增殖站地图描点接口(仅查询在建状态的)

This commit is contained in:
tangwei 2026-07-08 18:32:57 +08:00
parent 53aaf3eb2e
commit cf6a85d712
3 changed files with 112 additions and 2 deletions

View File

@ -152,4 +152,10 @@ public class FbStationController {
public ResponseResult getFbPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fbStationService.getFbPointKendoListCust(dataSourceRequest));
}
@PostMapping("/point/built/GetKendoListCust")
@Operation(summary = "增殖站地图描点接口(仅查询在建状态的)")
public ResponseResult getFbBuiltPointKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
return ResponseResult.successData(fbStationService.getFbBuiltPointKendoListCust(dataSourceRequest));
}
}

View File

@ -65,4 +65,6 @@ public interface FbStationService {
DataSourceResult<TableVo> getFishbreedrFishKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<FbTracingPointVo> getFbPointKendoListCust(DataSourceRequest dataSourceRequest);
DataSourceResult<FbTracingPointVo> getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest);
}

View File

@ -4577,6 +4577,15 @@ public class FbStationServiceImpl implements FbStationService {
@Override
public DataSourceResult<FbTracingPointVo> getFbPointKendoListCust(DataSourceRequest dataSourceRequest) {
return queryFbPointKendoListCust(dataSourceRequest, false);
}
@Override
public DataSourceResult<FbTracingPointVo> getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest) {
return queryFbPointKendoListCust(dataSourceRequest, true);
}
private DataSourceResult<FbTracingPointVo> queryFbPointKendoListCust(DataSourceRequest dataSourceRequest, boolean builtMode) {
DataSourceResult<FbTracingPointVo> dataSourceResult = new DataSourceResult<>();
dataSourceResult.setAggregates(new HashMap<>());
@ -4589,6 +4598,9 @@ public class FbStationServiceImpl implements FbStationService {
DataSourceLoadOptionsBase devRequest = dataSourceRequest.toDevRequest();
String rstcd = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "rstcd");
String sttp = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttp");
if(StrUtil.isBlank(sttp)){
sttp= QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "sttpCode");
}
String bldsttCcode = QgcQueryWrapperUtil.getFilterFieldValue(devRequest, "bldsttCcode");
if (StrUtil.isEmpty(sttp)) {
@ -4670,7 +4682,7 @@ public class FbStationServiceImpl implements FbStationService {
String filterSql = QgcQueryWrapperUtil.buildFilterCondition(
dataSourceRequest == null ? null : dataSourceRequest.getFilter(),
dataSourceRequest.getFilter(),
paramMap,
new int[]{0},
this::mapWeFvColumn
@ -4683,7 +4695,12 @@ public class FbStationServiceImpl implements FbStationService {
Page<?> page = devRequest == null ? null : QgcQueryWrapperUtil.buildPage(devRequest, devRequest.getSkip(), devRequest.getTake());
List<FbTracingPointVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, FbTracingPointVo.class);
list = getPointLegend(list);
if (builtMode) {
enrichFbBuiltPointYearStatistics(list, sttp);
list = getBuiltPointLegend(list);
} else {
list = getPointLegend(list);
}
SiteAvoidanceUtils.calcSiteMapLev(list,
FbTracingPointVo::getStcd,
@ -4697,6 +4714,53 @@ public class FbStationServiceImpl implements FbStationService {
return dataSourceResult;
}
private void enrichFbBuiltPointYearStatistics(List<FbTracingPointVo> list, String sttp) {
if (CollUtil.isEmpty(list) || !"FB".equalsIgnoreCase(sttp)) {
return;
}
String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
Map<String, Object> planParamMap = new HashMap<>();
planParamMap.put("yr", currentYear);
String planSql = "SELECT plan.RSTCD AS stcd, SUM(det.FCNT) AS fcnt "
+ "FROM SD_ENGFRPLAN_B plan "
+ "INNER JOIN SD_ENGFRPLANDET_B det ON plan.ID = det.RPJH_ID "
+ "WHERE NVL(plan.IS_DELETED, 0) = 0 "
+ "AND NVL(det.IS_DELETED, 0) = 0 "
+ "AND TO_CHAR(plan.PLANSD, 'YYYY') = #{map.yr} "
+ "GROUP BY plan.RSTCD";
List<FbPointCountVo> planList = microservicDynamicSQLMapper.getAllListWithResultType(planSql, planParamMap, FbPointCountVo.class);
Map<String, Object> actualParamMap = new HashMap<>();
actualParamMap.put("yr", currentYear);
String actualSql = "SELECT run.RSTCD AS stcd, SUM(det.FCNT) AS fcnt "
+ "FROM SD_ENGFR_R run "
+ "INNER JOIN SD_RPIMNFISH_R det ON run.ID = det.RPIMN_ID "
+ "WHERE NVL(run.IS_DELETED, 0) = 0 "
+ "AND NVL(det.IS_DELETED, 0) = 0 "
+ "AND TO_CHAR(run.TM, 'YYYY') = #{map.yr} "
+ "GROUP BY run.RSTCD";
List<FbPointCountVo> actualList = microservicDynamicSQLMapper.getAllListWithResultType(actualSql, actualParamMap, FbPointCountVo.class);
Map<String, Long> planMap = planList.stream()
.filter(item -> StrUtil.isNotBlank(item.getStcd()))
.collect(Collectors.toMap(FbPointCountVo::getStcd, FbPointCountVo::getFcnt, (left, right) -> left));
Map<String, Long> actualMap = actualList.stream()
.filter(item -> StrUtil.isNotBlank(item.getStcd()))
.collect(Collectors.toMap(FbPointCountVo::getStcd, FbPointCountVo::getFcnt, (left, right) -> left));
list.forEach(item -> {
Long planCount = planMap.get(item.getStcd());
Long actualCount = actualMap.get(item.getStcd());
item.setYr(currentYear);
item.setJhCnt(planCount);
item.setFished(actualCount);
if (planCount != null) {
item.setUnfished(actualCount == null ? planCount : Math.max(planCount - actualCount, 0L));
}
});
}
private String mapWeFvColumn(String field) {
if (StrUtil.isBlank(field)) {
return null;
@ -4705,6 +4769,7 @@ public class FbStationServiceImpl implements FbStationService {
case "rstcd" -> "a.RSTCD";
case "stcd" -> "a.STCD";
case "sttp" -> "a.STTP";
case "sttpcode" -> "a.STTP";
case "bldsttccode" -> "a.BLDSTT_CODE";
case "lgtd" -> "a.LGTD";
default -> null;
@ -4727,4 +4792,41 @@ public class FbStationServiceImpl implements FbStationService {
}
return voList;
}
private List<FbTracingPointVo> getBuiltPointLegend(List<FbTracingPointVo> voList) {
for (FbTracingPointVo pointVo : voList) {
Integer bldstt = pointVo.getBldstt();
String sttp = pointVo.getSttp();
if (bldstt != null && bldstt == 1) {
if ("FB".equals(sttp)) {
pointVo.setAnchoPointState("fb_built");
}
if ("SG".equals(sttp)) {
pointVo.setAnchoPointState("sg_built");
}
}
}
return voList;
}
private static class FbPointCountVo {
private String stcd;
private Long fcnt;
public String getStcd() {
return stcd;
}
public void setStcd(String stcd) {
this.stcd = stcd;
}
public Long getFcnt() {
return fcnt;
}
public void setFcnt(Long fcnt) {
this.fcnt = fcnt;
}
}
}