feat: 增殖站概况二级页面
This commit is contained in:
parent
229a987dfa
commit
95e6a5271b
@ -26,4 +26,10 @@ public class FbStationController {
|
||||
public ResponseResult getQgcOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(fbStationService.getQgcOverviewSecond(dataSourceRequest));
|
||||
}
|
||||
|
||||
@PostMapping("/overview/getOverviewSecond")
|
||||
@Operation(summary = "增殖站概况二级页面")
|
||||
public ResponseResult getOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
return ResponseResult.successData(fbStationService.getOverviewSecond(dataSourceRequest));
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,5 +6,7 @@ import com.yfd.platform.qgc_env.fb.entity.vo.FbStationOverviewSecondVo;
|
||||
|
||||
public interface FbStationService {
|
||||
|
||||
DataSourceResult<FbStationOverviewSecondVo> getOverviewSecond(DataSourceRequest dataSourceRequest);
|
||||
|
||||
DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest);
|
||||
}
|
||||
|
||||
@ -25,6 +25,27 @@ public class FbStationServiceImpl implements FbStationService {
|
||||
@Resource
|
||||
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
|
||||
|
||||
@Override
|
||||
public DataSourceResult<FbStationOverviewSecondVo> getOverviewSecond(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
String year = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "year");
|
||||
String baseId = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "baseId");
|
||||
String stnm = loadOptions == null ? null : QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stnm");
|
||||
List<String> stcdList = resolveStcdList(dataSourceRequest, loadOptions);
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
String sql = buildOverviewSecondSql(year, baseId, stnm, stcdList, paramMap);
|
||||
List<FbStationOverviewSecondVo> list = microservicDynamicSQLMapper.pageAllListWithResultType(
|
||||
null, sql, paramMap, FbStationOverviewSecondVo.class
|
||||
);
|
||||
|
||||
DataSourceResult<FbStationOverviewSecondVo> result = new DataSourceResult<>();
|
||||
result.setData(list);
|
||||
result.setTotal(list.size());
|
||||
result.setAggregates(new HashMap<>());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||
@ -47,6 +68,45 @@ public class FbStationServiceImpl implements FbStationService {
|
||||
return result;
|
||||
}
|
||||
|
||||
private String buildOverviewSecondSql(String year,
|
||||
String baseId,
|
||||
String stnm,
|
||||
List<String> stcdList,
|
||||
Map<String, Object> paramMap) {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT fb.STCD AS stcd, ")
|
||||
.append("fb.STNM AS stnm, ")
|
||||
.append("eng.ENNM AS ennm, ")
|
||||
.append("fb.INV AS totalInv, ")
|
||||
.append("t.YEAR AS year, ")
|
||||
.append("MAX(t.planFtp) AS planFtp, ")
|
||||
.append("SUM(t.fcntjh) AS fcntjh, ")
|
||||
.append("MAX(t.realftp) AS realftp, ")
|
||||
.append("SUM(t.realfcnt) AS realfcnt, ")
|
||||
.append("TO_CHAR(SUM(t.realfcnt)) AS realfcntStr ")
|
||||
.append("FROM SD_FBRD_B_H fb ")
|
||||
.append("LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = fb.RSTCD ")
|
||||
.append(" AND NVL(eng.IS_DELETED, 0) = 0 ")
|
||||
.append("LEFT JOIN (")
|
||||
.append(buildOverviewPlanUnionActualSql(year, stcdList, paramMap))
|
||||
.append(") t ON fb.STCD = t.rstcd ")
|
||||
.append("WHERE 1 = 1 ");
|
||||
|
||||
if (StrUtil.isNotBlank(stnm)) {
|
||||
paramMap.put("overviewStnm", "%" + stnm.trim() + "%");
|
||||
sql.append("AND fb.STNM LIKE #{map.overviewStnm} ");
|
||||
}
|
||||
if (StrUtil.isNotBlank(baseId)) {
|
||||
paramMap.put("overviewBaseId", baseId.trim());
|
||||
sql.append("AND fb.BASE_ID = #{map.overviewBaseId} ");
|
||||
}
|
||||
appendLikeAnyCondition(sql, paramMap, "NVL(fb.RENGCD, fb.RSTCD)", stcdList, "overviewStationFilter");
|
||||
|
||||
sql.append("GROUP BY fb.STCD, fb.STNM, eng.ENNM, t.YEAR, fb.INV ")
|
||||
.append("ORDER BY fb.STCD ASC");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildQgcOverviewSecondSql(String year,
|
||||
String baseId,
|
||||
String hbrvcd,
|
||||
@ -94,6 +154,78 @@ public class FbStationServiceImpl implements FbStationService {
|
||||
return buildPlanSql(year, stcdList, paramMap) + " UNION ALL " + buildActualSql(year, stcdList, paramMap);
|
||||
}
|
||||
|
||||
private String buildOverviewPlanUnionActualSql(String year, List<String> stcdList, Map<String, Object> paramMap) {
|
||||
return buildOverviewPlanSql(year, stcdList, paramMap) + " UNION ALL "
|
||||
+ buildOverviewActualSql(year, stcdList, paramMap);
|
||||
}
|
||||
|
||||
private String buildOverviewPlanSql(String year, List<String> stcdList, Map<String, Object> paramMap) {
|
||||
String fishNameExpr = buildFishViewNameExpr("det.FTP");
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT planFish.RSTCD AS rstcd, ")
|
||||
.append("LISTAGG(planFish.NAME, ', ') WITHIN GROUP (ORDER BY planFish.NAME) AS planFtp, ")
|
||||
.append("SUM(planFish.FCNT) AS fcntjh, ")
|
||||
.append("CAST(NULL AS VARCHAR2(4000)) AS realftp, ")
|
||||
.append("CAST(NULL AS NUMBER(18, 2)) AS realfcnt, ")
|
||||
.append("TO_CHAR(planFish.PLANSD, 'YYYY') AS year ")
|
||||
.append("FROM ( ")
|
||||
.append(" SELECT plan.RSTCD AS RSTCD, plan.PLANSD AS PLANSD, ")
|
||||
.append(" ").append(fishNameExpr).append(" AS NAME, ")
|
||||
.append(" SUM(det.FCNT) AS FCNT ")
|
||||
.append(" FROM SD_ENGFRPLAN_B plan ")
|
||||
.append(" LEFT JOIN SD_ENGFRPLANDET_B det ON plan.ID = det.RPJH_ID ")
|
||||
.append(" INNER JOIN SD_FBRD_B_H fbPlan ON fbPlan.STCD = plan.RSTCD ")
|
||||
.append(buildFishViewJoinSql("det.FTP", "fbPlan.HBRVCD"))
|
||||
.append(" WHERE NVL(plan.IS_DELETED, 0) = 0 ")
|
||||
.append(" AND NVL(det.IS_DELETED, 0) = 0 ")
|
||||
.append(" AND det.FTP IS NOT NULL ");
|
||||
|
||||
if (StrUtil.isNotBlank(year)) {
|
||||
paramMap.put("overviewPlanYear", year.trim());
|
||||
sql.append("AND TO_CHAR(plan.PLANSD, 'YYYY') = #{map.overviewPlanYear} ");
|
||||
}
|
||||
appendInCondition(sql, paramMap, "plan.STCD", stcdList, "overviewPlanStcd");
|
||||
|
||||
sql.append(" GROUP BY plan.RSTCD, plan.PLANSD, ").append(fishNameExpr).append(" ")
|
||||
.append(") planFish ")
|
||||
.append("GROUP BY planFish.RSTCD, TO_CHAR(planFish.PLANSD, 'YYYY') ");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildOverviewActualSql(String year, List<String> stcdList, Map<String, Object> paramMap) {
|
||||
String fishNameExpr = buildFishViewNameExpr("det.FTP");
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT actualFish.RSTCD AS rstcd, ")
|
||||
.append("CAST(NULL AS VARCHAR2(4000)) AS planFtp, ")
|
||||
.append("CAST(NULL AS NUMBER(18, 2)) AS fcntjh, ")
|
||||
.append("LISTAGG(actualFish.NAME, ', ') WITHIN GROUP (ORDER BY actualFish.NAME) AS realftp, ")
|
||||
.append("SUM(actualFish.FCNT) AS realfcnt, ")
|
||||
.append("actualFish.YR AS year ")
|
||||
.append("FROM ( ")
|
||||
.append(" SELECT run.RSTCD AS RSTCD, ")
|
||||
.append(" TO_CHAR(run.TM, 'YYYY') AS YR, ")
|
||||
.append(" ").append(fishNameExpr).append(" AS NAME, ")
|
||||
.append(" SUM(det.FCNT) AS FCNT ")
|
||||
.append(" FROM SD_ENGFR_R run ")
|
||||
.append(" LEFT JOIN SD_RPIMNFISH_R det ON run.ID = det.RPIMN_ID ")
|
||||
.append(" AND NVL(det.IS_DELETED, 0) = 0 ")
|
||||
.append(" AND det.FTP IS NOT NULL ")
|
||||
.append(" INNER JOIN SD_FBRD_B_H fbRun ON fbRun.STCD = run.RSTCD ")
|
||||
.append(buildFishViewJoinSql("det.FTP", "fbRun.HBRVCD"))
|
||||
.append(" WHERE NVL(run.IS_DELETED, 0) = 0 ");
|
||||
|
||||
if (StrUtil.isNotBlank(year)) {
|
||||
paramMap.put("overviewActualYear", year.trim());
|
||||
sql.append("AND TO_CHAR(run.TM, 'YYYY') = #{map.overviewActualYear} ");
|
||||
}
|
||||
appendInCondition(sql, paramMap, "run.STCD", stcdList, "overviewActualStcd");
|
||||
|
||||
sql.append(" GROUP BY run.RSTCD, TO_CHAR(run.TM, 'YYYY'), ").append(fishNameExpr).append(" ")
|
||||
.append(") actualFish ")
|
||||
.append("GROUP BY actualFish.RSTCD, actualFish.YR ");
|
||||
return sql.toString();
|
||||
}
|
||||
|
||||
private String buildPlanSql(String year, List<String> stcdList, Map<String, Object> paramMap) {
|
||||
String fishNameExpr = buildFishNameExpr("det.FTP");
|
||||
StringBuilder sql = new StringBuilder();
|
||||
@ -185,6 +317,17 @@ public class FbStationServiceImpl implements FbStationService {
|
||||
return "COALESCE(fishRv.NAME, relRv.FISH_NAME, fishZy.NAME, relZy.FISH_NAME, fishDirect.NAME, " + fishFieldExpr + ")";
|
||||
}
|
||||
|
||||
private String buildFishViewJoinSql(String fishFieldExpr, String hbrvcdFieldExpr) {
|
||||
return " LEFT JOIN V_SD_FISHDICTORY_B fishViewRv ON fishViewRv.FISH_ID = " + fishFieldExpr +
|
||||
" AND fishViewRv.RVCD = " + hbrvcdFieldExpr +
|
||||
" LEFT JOIN V_SD_FISHDICTORY_B fishViewZy ON fishViewZy.FISH_ID = " + fishFieldExpr +
|
||||
" AND fishViewZy.RVCD = 'ZY' ";
|
||||
}
|
||||
|
||||
private String buildFishViewNameExpr(String fishFieldExpr) {
|
||||
return "COALESCE(fishViewRv.NAME, fishViewZy.NAME, " + fishFieldExpr + ")";
|
||||
}
|
||||
|
||||
private void appendInCondition(StringBuilder sql,
|
||||
Map<String, Object> paramMap,
|
||||
String column,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user