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 d6bbd185..19d7887c 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 @@ -1,12 +1,15 @@ package com.yfd.platform.qgc_env.fb.controller; import com.yfd.platform.common.DataSourceRequest; +import com.yfd.platform.common.DataSourceResult; import com.yfd.platform.config.ResponseResult; +import com.yfd.platform.qgc_env.fb.entity.vo.BreedStageVO; import com.yfd.platform.qgc_env.fb.service.FbStationService; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import cn.hutool.core.util.StrUtil; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -15,6 +18,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @RestController @RequestMapping("/fb") @Tag(name = "鱼类增殖站模块") @@ -91,6 +96,26 @@ public class FbStationController { return ResponseResult.successData(fbStationService.getEngKendoListCust(dataSourceRequest)); } + @PostMapping("/breedStage/GetKendoListCust") + @Operation(summary = "条件过滤数据列表定制") + public ResponseResult getBreedStageKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) { + String stcd = null; + List filters = dataSourceRequest.getFilter().getFilters(); + for (DataSourceRequest.FilterDescriptor filter : filters) { + if ("stcd".equals(filter.getField())) { + stcd = (String) filter.getValue(); + } + } + if (StrUtil.isEmpty(stcd)) { + return ResponseResult.error("增殖站stcd不能为空!"); + } + List breedStageList = fbStationService.getBreedStageList(stcd); + DataSourceResult dataSourceResult = new DataSourceResult<>(); + dataSourceResult.setData(breedStageList); + dataSourceResult.setTotal(breedStageList.size()); + return ResponseResult.successData(dataSourceResult); + } + @PostMapping("/msfbrdm/fbFlData/GetKendoListCust") @Operation(summary = "增殖站增殖情况(app)") public ResponseResult getFbFlData(@RequestBody DataSourceRequest dataSourceRequest) { diff --git a/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/BreedStageVO.java b/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/BreedStageVO.java new file mode 100644 index 00000000..96e50ad1 --- /dev/null +++ b/backend/src/main/java/com/yfd/platform/qgc_env/fb/entity/vo/BreedStageVO.java @@ -0,0 +1,30 @@ +package com.yfd.platform.qgc_env.fb.entity.vo; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 鱼类增殖阶段 + */ +@Data +@Accessors(chain = true) +public class BreedStageVO { + + /** 增殖站编码 */ + private String stcd; + + /** 阶段名称 */ + private String key; + + /** 阶段状态:1=有数据 2=无数据 */ + private String value; + + /** 是否为最新数据 */ + private Boolean newest; + + /** 最新表 */ + private String newSurface; + + /** 主菜单 */ + private String firstGrade; +} 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 fa4f612c..5e94e2de 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 @@ -2,6 +2,7 @@ package com.yfd.platform.qgc_env.fb.service; import com.yfd.platform.common.DataSourceRequest; import com.yfd.platform.common.DataSourceResult; +import com.yfd.platform.qgc_env.fb.entity.vo.BreedStageVO; import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRQgcVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRFishTableVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbEngFishVo; @@ -78,4 +79,9 @@ public interface FbStationService { * 电站放流统计列表 */ DataSourceResult getEngKendoListCust(DataSourceRequest dataSourceRequest); + + /** + * 获取增殖站各阶段数据状态(选配/繁殖/培育/防治) + */ + List getBreedStageList(String stcd); } 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 0d700f67..635edcef 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 @@ -11,6 +11,7 @@ import com.yfd.platform.common.Group; import com.yfd.platform.common.GroupHelper; import com.yfd.platform.common.GroupingInfo; import com.yfd.platform.common.MicroservicDynamicSQLMapper; +import com.yfd.platform.qgc_env.fb.entity.vo.BreedStageVO; import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRQgcVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRFishHeadColumnVo; import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRFishSummaryVo; @@ -5026,6 +5027,69 @@ public class FbStationServiceImpl implements FbStationService { return sql.toString(); } + @Override + public List getBreedStageList(String stcd) { + List stageVOList = new ArrayList<>(); + + // 阶段1:选配 --- SD_FBBSMF_R(亲鱼档案管理记录表)+ SD_FBBSDEATH_R(亲鱼死亡记录表) + boolean bsmfExists = existsDataInTable("SD_FBBSMF_R", stcd); + boolean bsdeathExists = existsDataInTable("SD_FBBSDEATH_R", stcd); + BreedStageVO stage1 = new BreedStageVO(); + stage1.setKey("选配"); + stage1.setValue((bsmfExists || bsdeathExists) ? "1" : "2"); + stageVOList.add(stage1); + + // 阶段2:繁殖 --- SD_FBFISHARTINL_R(鱼类人工催产记录) + boolean fishArtinlExists = existsDataInTable("SD_FBFISHARTINL_R", stcd); + BreedStageVO stage2 = new BreedStageVO(); + stage2.setKey("繁殖"); + stage2.setValue(fishArtinlExists ? "1" : "2"); + stageVOList.add(stage2); + + // 阶段3:培育 --- SD_FBFISHBREED_R(鱼苗和鱼种培育记录)+ SD_FBSCWEM_R(苗种培育水环境监测记录表) + boolean fishbreedExists = existsDataInTable("SD_FBFISHBREED_R", stcd); + boolean scwemExists = existsDataInTable("SD_FBSCWEM_R", stcd); + BreedStageVO stage3 = new BreedStageVO(); + stage3.setKey("培育"); + stage3.setValue((fishbreedExists || scwemExists) ? "1" : "2"); + stageVOList.add(stage3); + + // 阶段4:防治 --- SD_FBFISHDPAC_R(鱼病防治记录表) + boolean fishDpacExists = existsDataInTable("SD_FBFISHDPAC_R", stcd); + BreedStageVO stage4 = new BreedStageVO(); + stage4.setKey("防治"); + stage4.setValue(fishDpacExists ? "1" : "2"); + stageVOList.add(stage4); + + return stageVOList; + } + + /** + * 检查指定表在指定 stcd 下是否存在未删除的数据 + */ + private boolean existsDataInTable(String tableName, String stcd) { + Map paramMap = new HashMap<>(); + paramMap.put("stcd", stcd); + StringBuilder sql = new StringBuilder(); + sql.append("SELECT 1 AS existFlag FROM ").append(tableName); + sql.append(" WHERE STCD = #{map.stcd} AND NVL(IS_DELETED, 0) = 0 AND ROWNUM = 1"); + List list = microservicDynamicSQLMapper.pageAllListWithResultType( + null, sql.toString(), paramMap, DataExistsVo.class); + return CollUtil.isNotEmpty(list); + } + + private static class DataExistsVo { + private Integer existFlag; + + public Integer getExistFlag() { + return existFlag; + } + + public void setExistFlag(Integer existFlag) { + this.existFlag = existFlag; + } + } + private static class FbPointCountVo { private String stcd; private Long fcnt;