feat: 增殖站概况二级页面
This commit is contained in:
parent
229a987dfa
commit
95e6a5271b
@ -26,4 +26,10 @@ public class FbStationController {
|
|||||||
public ResponseResult getQgcOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
public ResponseResult getQgcOverviewSecond(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||||
return ResponseResult.successData(fbStationService.getQgcOverviewSecond(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 {
|
public interface FbStationService {
|
||||||
|
|
||||||
|
DataSourceResult<FbStationOverviewSecondVo> getOverviewSecond(DataSourceRequest dataSourceRequest);
|
||||||
|
|
||||||
DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest);
|
DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,6 +25,27 @@ public class FbStationServiceImpl implements FbStationService {
|
|||||||
@Resource
|
@Resource
|
||||||
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
|
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
|
@Override
|
||||||
public DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest) {
|
public DataSourceResult<FbStationOverviewSecondVo> getQgcOverviewSecond(DataSourceRequest dataSourceRequest) {
|
||||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
DataSourceLoadOptionsBase loadOptions = dataSourceRequest == null ? null : dataSourceRequest.toDevRequest();
|
||||||
@ -47,6 +68,45 @@ public class FbStationServiceImpl implements FbStationService {
|
|||||||
return result;
|
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,
|
private String buildQgcOverviewSecondSql(String year,
|
||||||
String baseId,
|
String baseId,
|
||||||
String hbrvcd,
|
String hbrvcd,
|
||||||
@ -94,6 +154,78 @@ public class FbStationServiceImpl implements FbStationService {
|
|||||||
return buildPlanSql(year, stcdList, paramMap) + " UNION ALL " + buildActualSql(year, stcdList, paramMap);
|
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) {
|
private String buildPlanSql(String year, List<String> stcdList, Map<String, Object> paramMap) {
|
||||||
String fishNameExpr = buildFishNameExpr("det.FTP");
|
String fishNameExpr = buildFishNameExpr("det.FTP");
|
||||||
StringBuilder sql = new StringBuilder();
|
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 + ")";
|
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,
|
private void appendInCondition(StringBuilder sql,
|
||||||
Map<String, Object> paramMap,
|
Map<String, Object> paramMap,
|
||||||
String column,
|
String column,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user