diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java index 5b7c3eee..e68e22f5 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/controller/FbStationController.java @@ -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)); + } } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java index e0e19b45..66578ed0 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/FbStationService.java @@ -65,4 +65,6 @@ public interface FbStationService { DataSourceResult getFishbreedrFishKendoListCust(DataSourceRequest dataSourceRequest); DataSourceResult getFbPointKendoListCust(DataSourceRequest dataSourceRequest); + + DataSourceResult getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest); } diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java index 0c2017ff..98201b27 100644 --- a/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/service/impl/FbStationServiceImpl.java @@ -4577,6 +4577,15 @@ public class FbStationServiceImpl implements FbStationService { @Override public DataSourceResult getFbPointKendoListCust(DataSourceRequest dataSourceRequest) { + return queryFbPointKendoListCust(dataSourceRequest, false); + } + + @Override + public DataSourceResult getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest) { + return queryFbPointKendoListCust(dataSourceRequest, true); + } + + private DataSourceResult queryFbPointKendoListCust(DataSourceRequest dataSourceRequest, boolean builtMode) { DataSourceResult 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 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 list, String sttp) { + if (CollUtil.isEmpty(list) || !"FB".equalsIgnoreCase(sttp)) { + return; + } + + String currentYear = String.valueOf(Calendar.getInstance().get(Calendar.YEAR)); + Map 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 planList = microservicDynamicSQLMapper.getAllListWithResultType(planSql, planParamMap, FbPointCountVo.class); + + Map 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 actualList = microservicDynamicSQLMapper.getAllListWithResultType(actualSql, actualParamMap, FbPointCountVo.class); + + Map planMap = planList.stream() + .filter(item -> StrUtil.isNotBlank(item.getStcd())) + .collect(Collectors.toMap(FbPointCountVo::getStcd, FbPointCountVo::getFcnt, (left, right) -> left)); + Map 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 getBuiltPointLegend(List 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; + } + } }