feat: 电站放流统计-返回有数据的年份
This commit is contained in:
parent
dabcef7134
commit
3eb9fe4dbd
@ -79,6 +79,12 @@ public class FbStationController {
|
|||||||
return ResponseResult.successData(fbStationService.getFbRelatedYrByStcd(stcd));
|
return ResponseResult.successData(fbStationService.getFbRelatedYrByStcd(stcd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/station/eng/GetAggregateData")
|
||||||
|
@Operation(summary = "电站放流统计-返回有数据的年份")
|
||||||
|
public ResponseResult getAggregateData(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
return ResponseResult.successData(fbStationService.getAggregateData(dataSourceRequest));
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/msfbrdm/fbFlData/GetKendoListCust")
|
@PostMapping("/msfbrdm/fbFlData/GetKendoListCust")
|
||||||
@Operation(summary = "增殖站增殖情况(app)")
|
@Operation(summary = "增殖站增殖情况(app)")
|
||||||
public ResponseResult getFbFlData(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getFbFlData(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package com.yfd.platform.qgc_env.fb.entity.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站放流统计-有数据的年份
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class FbEngFishVo {
|
||||||
|
/** 电站编码 */
|
||||||
|
private String stcd;
|
||||||
|
/** 电站名称 */
|
||||||
|
private String ennm;
|
||||||
|
/** 计划放流尾数 */
|
||||||
|
private BigDecimal fcntjh;
|
||||||
|
/** 实际放流尾数 */
|
||||||
|
private BigDecimal fcntjc;
|
||||||
|
/** 计划放流日期(年份) */
|
||||||
|
private String plansd;
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import com.yfd.platform.common.DataSourceRequest;
|
|||||||
import com.yfd.platform.common.DataSourceResult;
|
import com.yfd.platform.common.DataSourceResult;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbBsmfRQgcVo;
|
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.FbBsmfRFishTableVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbEngFishVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishCountFinishVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishCountFinishVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishRunQgcVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishRunQgcVo;
|
||||||
@ -67,4 +68,9 @@ public interface FbStationService {
|
|||||||
DataSourceResult<FbTracingPointVo> getFbPointKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbTracingPointVo> getFbPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<FbTracingPointVo> getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbTracingPointVo> getFbBuiltPointKendoListCust(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 电站放流统计-返回有数据的年份
|
||||||
|
*/
|
||||||
|
DataSourceResult<FbEngFishVo> getAggregateData(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import com.yfd.platform.qgc_env.fb.entity.vo.FbFishRunQgcVo;
|
|||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeStcdVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeStcdVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeFinishVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFishTypeFinishVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFtpStatisticsVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFtpStatisticsVo;
|
||||||
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbEngFishVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbFlDataVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbMsfbrdmQgcVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbMsfbrdmQgcVo;
|
||||||
import com.yfd.platform.qgc_env.fb.entity.vo.FbRelatedYrVo;
|
import com.yfd.platform.qgc_env.fb.entity.vo.FbRelatedYrVo;
|
||||||
@ -4809,6 +4810,103 @@ public class FbStationServiceImpl implements FbStationService {
|
|||||||
return voList;
|
return voList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DataSourceResult<FbEngFishVo> getAggregateData(DataSourceRequest dataSourceRequest) {
|
||||||
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
|
List<String> stcdList = resolveStcdList(dataSourceRequest, loadOptions);
|
||||||
|
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
String sql = buildAggregateDataSql(stcdList, paramMap);
|
||||||
|
|
||||||
|
List<FbEngFishVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||||
|
null, sql, paramMap, FbEngFishVo.class
|
||||||
|
);
|
||||||
|
|
||||||
|
if (CollUtil.isNotEmpty(list)) {
|
||||||
|
FbEngFishVo first = list.get(0);
|
||||||
|
if (StrUtil.isNotBlank(first.getPlansd()) && first.getPlansd().length() >= 4) {
|
||||||
|
first.setPlansd(first.getPlansd().substring(0, 4));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DataSourceResult<FbEngFishVo> result = new DataSourceResult<>();
|
||||||
|
result.setData(list.stream()
|
||||||
|
.filter(it -> StrUtil.isNotBlank(it.getStcd()))
|
||||||
|
.sorted(Comparator.comparing(FbEngFishVo::getStcd))
|
||||||
|
.collect(Collectors.toList()));
|
||||||
|
result.setTotal(list.size());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建电站放流统计-年份聚合数据 SQL
|
||||||
|
* <p>
|
||||||
|
* 查询指定电站有放流数据(计划或实际)的最新一条年份记录。
|
||||||
|
* 上半部分以计划表为主 LEFT JOIN 实际表,下半部分以实际表为主 LEFT JOIN 计划表,
|
||||||
|
* UNION 去重合并后按日期降序取第一条。
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
|
private String buildAggregateDataSql(List<String> stcdList, Map<String, Object> paramMap) {
|
||||||
|
String planTable = "SD_ENGFRPLAN_B";
|
||||||
|
String planDetTable = "SD_ENGFRPLANDET_B";
|
||||||
|
String actualTable = "SD_ENGFR_R";
|
||||||
|
String actualDetTable = "SD_RPIMNFISH_R";
|
||||||
|
String engInfoTable = "SD_ENGINFO_B_H";
|
||||||
|
|
||||||
|
StringBuilder sql = new StringBuilder();
|
||||||
|
sql.append("SELECT STCD, ennm, fcntjh, fcntjc, PLANSD FROM ( ");
|
||||||
|
sql.append("SELECT s.STCD, e.ENNM AS ennm, s.fcntjh, s.fcntjc, s.PLANSD ");
|
||||||
|
sql.append("FROM ( ");
|
||||||
|
|
||||||
|
// 上半部分:计划表为主 LEFT JOIN 实际表
|
||||||
|
sql.append("SELECT jh.STCD, jh.PLANSD, jh.fcntjh, jc.fcntjc FROM ( ");
|
||||||
|
sql.append("SELECT a.STCD, a.PLANSD, SUM(NVL(b.FCNT, 0)) AS fcntjh ");
|
||||||
|
sql.append("FROM ").append(planTable).append(" a ");
|
||||||
|
sql.append("LEFT JOIN ").append(planDetTable).append(" b ON a.ID = b.RPJH_ID AND NVL(b.IS_DELETED, 0) = 0 ");
|
||||||
|
sql.append("WHERE NVL(a.IS_DELETED, 0) = 0 ");
|
||||||
|
appendInCondition(sql, paramMap, "a.STCD", stcdList, "aggPlanStcd");
|
||||||
|
sql.append("GROUP BY a.STCD, a.PLANSD ");
|
||||||
|
sql.append(") jh ");
|
||||||
|
sql.append("LEFT JOIN ( ");
|
||||||
|
sql.append("SELECT a.STCD, SUM(NVL(b.FCNT, 0)) AS fcntjc ");
|
||||||
|
sql.append("FROM ").append(actualTable).append(" a ");
|
||||||
|
sql.append("LEFT JOIN ").append(actualDetTable).append(" b ON a.ID = b.RPIMN_ID AND NVL(b.IS_DELETED, 0) = 0 ");
|
||||||
|
sql.append("WHERE NVL(a.IS_DELETED, 0) = 0 ");
|
||||||
|
appendInCondition(sql, paramMap, "a.STCD", stcdList, "aggActStcd1");
|
||||||
|
sql.append("GROUP BY a.STCD ");
|
||||||
|
sql.append(") jc ON jh.STCD = jc.STCD ");
|
||||||
|
sql.append("WHERE (jh.fcntjh IS NOT NULL OR jc.fcntjc IS NOT NULL) ");
|
||||||
|
|
||||||
|
sql.append("UNION ");
|
||||||
|
|
||||||
|
// 下半部分:实际表为主 LEFT JOIN 计划表
|
||||||
|
sql.append("SELECT jc.STCD, jc.PLANSD, jh.fcntjh, jc.fcntjc FROM ( ");
|
||||||
|
sql.append("SELECT a.STCD, a.TM AS PLANSD, SUM(NVL(b.FCNT, 0)) AS fcntjc ");
|
||||||
|
sql.append("FROM ").append(actualTable).append(" a ");
|
||||||
|
sql.append("LEFT JOIN ").append(actualDetTable).append(" b ON a.ID = b.RPIMN_ID AND NVL(b.IS_DELETED, 0) = 0 ");
|
||||||
|
sql.append("WHERE NVL(a.IS_DELETED, 0) = 0 ");
|
||||||
|
appendInCondition(sql, paramMap, "a.STCD", stcdList, "aggActStcd2");
|
||||||
|
sql.append("GROUP BY a.STCD, a.TM ");
|
||||||
|
sql.append(") jc ");
|
||||||
|
sql.append("LEFT JOIN ( ");
|
||||||
|
sql.append("SELECT a.STCD, SUM(NVL(b.FCNT, 0)) AS fcntjh ");
|
||||||
|
sql.append("FROM ").append(planTable).append(" a ");
|
||||||
|
sql.append("LEFT JOIN ").append(planDetTable).append(" b ON a.ID = b.RPJH_ID AND NVL(b.IS_DELETED, 0) = 0 ");
|
||||||
|
sql.append("WHERE NVL(a.IS_DELETED, 0) = 0 ");
|
||||||
|
appendInCondition(sql, paramMap, "a.STCD", stcdList, "aggPlanStcd2");
|
||||||
|
sql.append("GROUP BY a.STCD ");
|
||||||
|
sql.append(") jh ON jc.STCD = jh.STCD ");
|
||||||
|
sql.append("WHERE (jh.fcntjh IS NOT NULL OR jc.fcntjc IS NOT NULL) ");
|
||||||
|
|
||||||
|
sql.append(") s ");
|
||||||
|
sql.append("LEFT JOIN ").append(engInfoTable).append(" e ON s.STCD = e.STCD AND NVL(e.IS_DELETED, 0) = 0 ");
|
||||||
|
sql.append("WHERE (s.fcntjh IS NOT NULL OR s.fcntjc IS NOT NULL) ");
|
||||||
|
sql.append("ORDER BY s.PLANSD DESC ");
|
||||||
|
sql.append(") WHERE ROWNUM = 1");
|
||||||
|
|
||||||
|
return sql.toString();
|
||||||
|
}
|
||||||
|
|
||||||
private static class FbPointCountVo {
|
private static class FbPointCountVo {
|
||||||
private String stcd;
|
private String stcd;
|
||||||
private Long fcnt;
|
private Long fcnt;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user