fix: 优化出入库水温查询逻辑
This commit is contained in:
parent
219323e0fc
commit
cb59b3835e
@ -1,12 +1,16 @@
|
||||
package com.yfd.platform.env.controller;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.yfd.platform.common.DataSourceLoadOptionsBase;
|
||||
import com.yfd.platform.common.DataSourceRequest;
|
||||
import com.yfd.platform.common.DataSourceResult;
|
||||
import com.yfd.platform.common.exception.BizException;
|
||||
import com.yfd.platform.config.ResponseResult;
|
||||
import com.yfd.platform.env.entity.vo.BatchDeleteAo;
|
||||
import com.yfd.platform.env.entity.vo.WtrvInfo;
|
||||
import com.yfd.platform.env.service.AlongDetailService;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
@ -60,12 +64,25 @@ public class SdAlongDetailController {
|
||||
return ResponseResult.success();
|
||||
}
|
||||
|
||||
// @PostMapping("/qgc/GetKendoListCust")
|
||||
// @Operation(summary = "环保部查询出入库水温、出入库流量、入库水温、天然水温、降雨、气温数据")
|
||||
// public ResponseResult getQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
// DataSourceResult result = alongDetailService.getQgcKendoListCust(dataSourceRequest);
|
||||
// return ResponseResult.successData(result);
|
||||
// }
|
||||
@PostMapping("/qgc/GetKendoListCust")
|
||||
@Operation(summary = "环保部查询出入库水温、出入库流量、入库水温、天然水温、降雨、气温数据")
|
||||
public ResponseResult getQgcKendoListCust(@RequestBody DataSourceRequest dataSourceRequest) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
|
||||
if (StrUtil.isBlank(stcd)) {
|
||||
throw new BizException("站点编码不能为空.");
|
||||
}
|
||||
WtrvInfo wtrvInfo = alongDetailService.getWtrvInfoByStcd(stcd);
|
||||
if (wtrvInfo == null) {
|
||||
throw new BizException("获取站点信息失败,请检查是否站点存在.");
|
||||
}
|
||||
DataSourceResult result = alongDetailService.processKendoList(dataSourceRequest, null, new Page<>());
|
||||
if (wtrvInfo.getType() == 3 || result == null || result.getData() == null || result.getTotal() == 0) {
|
||||
return ResponseResult.successData(result);
|
||||
}
|
||||
DataSourceResult qgcResult = alongDetailService.processQgcKendList(result, wtrvInfo);
|
||||
return ResponseResult.successData(qgcResult);
|
||||
}
|
||||
|
||||
@GetMapping("/qgc/stcdCheck")
|
||||
@Operation(summary = "判断出库水温站、垂向水温站或者低温水减缓设施所属的电站是否有出库水温站、垂向水温站和低温水减缓设施")
|
||||
|
||||
@ -20,13 +20,20 @@ import java.util.Map;
|
||||
@Mapper
|
||||
public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
|
||||
@Select("SELECT wt.STCD AS stcd, wt.STNM AS stnm, wt.RSTCD AS rstcd, eng.ENNM AS ennm, " +
|
||||
"CASE WHEN wt.STCD = rel.ENG_IWT_CODE THEN 1 WHEN wt.STCD = rel.ENG_DWT_CODE THEN 2 ELSE 3 END AS type, " +
|
||||
"wt.STTP AS sttpCode " +
|
||||
"FROM SD_WT_B_H wt " +
|
||||
"LEFT JOIN SD_ENGINFO_B_H eng ON eng.STCD = wt.RSTCD " +
|
||||
"LEFT JOIN SD_PRWTRLTN_B rel ON rel.STCD = wt.RSTCD AND rel.IS_DELETED = 0 " +
|
||||
"WHERE wt.IS_DELETED = 0 AND wt.STTP = 'WTRV' AND wt.STCD = #{stcd}")
|
||||
WtrvInfo getWtrvInfoByStcd(@Param("stcd") String stcd);
|
||||
//电站数据
|
||||
@Select("SELECT AVG(a.QI) AS qi, AVG(a.QO) AS qo, a.tm, AVG(a.RZ) AS rz, AVG(a.DZ) AS dz " +
|
||||
"FROM SD_HYDROPW_R a " +
|
||||
"INNER JOIN MS_STBPRP_T b ON a.STCD = b.RSTCD " +
|
||||
"WHERE b.IS_DELETED = 0 AND a.IS_DELETED = 0 " +
|
||||
"AND b.STCD = #{stcd} AND a.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"WHERE a.IS_DELETED = 0 " +
|
||||
"AND a.STCD = (SELECT RSTCD FROM SD_WT_B_H WHERE STCD = #{stcd} AND IS_DELETED = 0) " +
|
||||
"AND a.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"GROUP BY a.TM")
|
||||
List<Map<String, Object>> getHydropwDataList(@Param("stcd") String stcd,
|
||||
@Param("startTime") Date startTime,
|
||||
@ -34,7 +41,7 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
//天然水温
|
||||
@Select("<script>" +
|
||||
"SELECT STCD, WTTP, MNTH, WT FROM SD_WTNP_B " +
|
||||
"WHERE WTTP = 1 " +
|
||||
"WHERE WTTP = 1 AND IS_DELETED = 0 " +
|
||||
"<if test='rstcd != null and rstcd != \"\"'>" +
|
||||
"AND STCD = #{rstcd} " +
|
||||
"</if>" +
|
||||
@ -46,14 +53,14 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
//入库水温
|
||||
@Select("<script>" +
|
||||
"SELECT 1 AS TYPE, AVG(b.WT) AS WT, b.TM " +
|
||||
"FROM MS_STBPRP_T a " +
|
||||
"INNER JOIN SD_WTRV_R b ON a.STCD = b.STCD " +
|
||||
"WHERE a.STTP_CODE = 'WTRV' AND a.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"FROM SD_PRWTRLTN_B rel " +
|
||||
"INNER JOIN SD_WTRV_R b ON b.STCD = rel.ENG_IWT_CODE " +
|
||||
"WHERE rel.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"<if test='stcd != null and stcd != \"\"'>" +
|
||||
"AND a.ENG_IWT_CODE = (SELECT RSTCD FROM MS_STBPRP_T WHERE STCD = #{stcd}) " +
|
||||
"AND rel.STCD = (SELECT RSTCD FROM SD_WT_B_H WHERE STCD = #{stcd} AND IS_DELETED = 0) " +
|
||||
"</if>" +
|
||||
"<if test='rstcd != null and rstcd != \"\"'>" +
|
||||
"AND a.ENG_IWT_CODE = #{rstcd} " +
|
||||
"AND rel.STCD = #{rstcd} " +
|
||||
"</if>" +
|
||||
"AND b.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"GROUP BY b.TM" +
|
||||
@ -62,14 +69,14 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
//出库水温
|
||||
@Select("<script>" +
|
||||
"SELECT 2 AS TYPE, AVG(b.WT) AS WT, b.TM " +
|
||||
"FROM MS_STBPRP_T a " +
|
||||
"INNER JOIN SD_WTRV_R b ON a.STCD = b.STCD " +
|
||||
"WHERE a.STTP_CODE = 'WTRV' AND a.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"FROM SD_PRWTRLTN_B rel " +
|
||||
"INNER JOIN SD_WTRV_R b ON b.STCD = rel.ENG_DWT_CODE " +
|
||||
"WHERE rel.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"<if test='stcd != null and stcd != \"\"'>" +
|
||||
"AND a.ENG_DWT_CODE = (SELECT RSTCD FROM MS_STBPRP_T WHERE STCD = #{stcd}) " +
|
||||
"AND rel.STCD = (SELECT RSTCD FROM SD_WT_B_H WHERE STCD = #{stcd} AND IS_DELETED = 0) " +
|
||||
"</if>" +
|
||||
"<if test='rstcd != null and rstcd != \"\"'>" +
|
||||
"AND a.ENG_DWT_CODE = #{rstcd} " +
|
||||
"AND rel.STCD = #{rstcd} " +
|
||||
"</if>" +
|
||||
"AND b.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"GROUP BY b.TM" +
|
||||
@ -81,7 +88,7 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
"INNER JOIN MS_STBPRP_T b ON a.STCD = b.STCD " +
|
||||
"WHERE b.STTP_CODE = 'MM' " +
|
||||
"AND a.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"AND b.RSTCD = (SELECT RSTCD FROM MS_STBPRP_T WHERE STCD = #{stcd}) " +
|
||||
"AND b.RSTCD = (SELECT RSTCD FROM SD_WT_B_H WHERE STCD = #{stcd} AND IS_DELETED = 0) " +
|
||||
"AND a.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"GROUP BY a.TM")
|
||||
List<Map<String, Object>> getPptnDataList(@Param("stcd")String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||
@ -90,7 +97,7 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
"FROM SD_TMP_R a " +
|
||||
"INNER JOIN MS_STBPRP_T b ON a.STCD = b.STCD " +
|
||||
"WHERE b.STTP_CODE = 'MM' AND a.IS_DELETED = 0 AND b.IS_DELETED = 0 " +
|
||||
"AND b.RSTCD = (SELECT RSTCD FROM MS_STBPRP_T WHERE STCD = #{stcd}) " +
|
||||
"AND b.RSTCD = (SELECT RSTCD FROM SD_WT_B_H WHERE STCD = #{stcd} AND IS_DELETED = 0) " +
|
||||
"AND a.TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
"GROUP BY a.TM")
|
||||
List<Map<String, Object>> getTmpDataList(@Param("stcd")String stcd, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
|
||||
@ -99,8 +106,8 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
"SELECT TM, WTHG, ROUND(AVG(VWT), 2) AS VWT " +
|
||||
"FROM SD_WTVT_R " +
|
||||
"WHERE STCD IN (" +
|
||||
" SELECT STCD FROM MS_STBPRP_T " +
|
||||
" WHERE RSTCD = #{rstcd} AND STTP_CODE = 'WTVT' AND IS_DELETED = 0" +
|
||||
" SELECT STCD FROM SD_WT_B_H " +
|
||||
" WHERE RSTCD = #{rstcd} AND STTP = 'WTVT' AND IS_DELETED = 0 AND MWAY = 2" +
|
||||
") " +
|
||||
"AND TO_CHAR(TM, 'mi') = 0 AND IS_DELETED = 0 " +
|
||||
"AND TM BETWEEN #{startTime} AND #{endTime} " +
|
||||
@ -126,18 +133,19 @@ public interface AlongDetailMapper extends BaseMapper<SdAlongDetailVO> {
|
||||
"GROUP BY a.STCD, a.STNM")
|
||||
WtrvInfo getWtrvInfoByStcd2(@Param("stcd") String stcd);
|
||||
|
||||
@Select("SELECT a.STCD AS rstcd, a.STNM AS ennm, " +
|
||||
"REGEXP_REPLACE(LISTAGG(TO_CHAR(b.STCD), ',') WITHIN GROUP (ORDER BY b.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS stcd, " +
|
||||
"REGEXP_REPLACE(LISTAGG(TO_CHAR(b.STNM), ',') WITHIN GROUP (ORDER BY b.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS stnm, " +
|
||||
"REGEXP_REPLACE(LISTAGG(TO_CHAR(c.STCD), ',') WITHIN GROUP (ORDER BY c.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS vtStcd, " +
|
||||
"REGEXP_REPLACE(LISTAGG(TO_CHAR(c.STNM), ',') WITHIN GROUP (ORDER BY c.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS vtStnm " +
|
||||
"FROM MS_STBPRP_T a " +
|
||||
"LEFT JOIN MS_STBPRP_T b ON a.STCD = b.RSTCD AND b.STTP_CODE = 'WTRV' AND b.IS_DELETED = 0 AND b.MWAY = 2 AND b.DTIN_TYPE = 0 " +
|
||||
"LEFT JOIN MS_STBPRP_T c ON a.STCD = c.RSTCD AND c.STTP_CODE = 'WTVT' AND c.IS_DELETED = 0 AND c.MWAY = 2 " +
|
||||
"WHERE a.STTP_CODE = 'ENG' AND a.IS_DELETED = 0 " +
|
||||
"AND b.STCD IS NOT NULL AND c.STCD IS NOT NULL AND b.ENG_DWT_CODE IS NOT NULL " +
|
||||
"AND (b.STCD = #{stcd} OR c.STCD = #{stcd} OR a.STCD = #{stcd}) " +
|
||||
"AND a.STCD = b.ENG_DWT_CODE " +
|
||||
"GROUP BY a.STCD, a.STNM")
|
||||
@Select("SELECT eng.STCD AS rstcd, eng.ENNM AS ennm, " +
|
||||
"REGEXP_REPLACE(LISTAGG(DISTINCT TO_CHAR(wtrv.STCD), ',') WITHIN GROUP (ORDER BY wtrv.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS stcd, " +
|
||||
"REGEXP_REPLACE(LISTAGG(DISTINCT TO_CHAR(wtrv.STNM), ',') WITHIN GROUP (ORDER BY wtrv.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS stnm, " +
|
||||
"REGEXP_REPLACE(LISTAGG(DISTINCT TO_CHAR(vt.STCD), ',') WITHIN GROUP (ORDER BY vt.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS vtStcd, " +
|
||||
"REGEXP_REPLACE(LISTAGG(DISTINCT TO_CHAR(vt.STNM), ',') WITHIN GROUP (ORDER BY vt.STCD), '([^,]+)(,\\1)*(,|$)', '\\1\\3') AS vtStnm " +
|
||||
"FROM SD_ENGINFO_B_H eng " +
|
||||
"LEFT JOIN SD_PRWTRLTN_B rel ON rel.STCD = eng.STCD AND rel.IS_DELETED = 0 " +
|
||||
"LEFT JOIN SD_WT_B_H wtrv ON wtrv.RSTCD = eng.STCD AND wtrv.STCD IN (rel.ENG_IWT_CODE, rel.ENG_DWT_CODE) " +
|
||||
" AND wtrv.STTP = 'WTRV' AND wtrv.IS_DELETED = 0 AND wtrv.MWAY = 2 " +
|
||||
"LEFT JOIN SD_WT_B_H vt ON vt.RSTCD = eng.STCD AND vt.STTP = 'WTVT' AND vt.IS_DELETED = 0 AND vt.MWAY = 2 " +
|
||||
"WHERE eng.USFL = 1 " +
|
||||
"AND wtrv.STCD IS NOT NULL AND vt.STCD IS NOT NULL AND rel.ENG_DWT_CODE IS NOT NULL " +
|
||||
"AND (wtrv.STCD = #{stcd} OR vt.STCD = #{stcd} OR eng.STCD = #{stcd}) " +
|
||||
"GROUP BY eng.STCD, eng.ENNM")
|
||||
WtrvInfo getWtrvInfoByStcd3(@Param("stcd") String stcd);
|
||||
}
|
||||
|
||||
@ -7,11 +7,13 @@ import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.yfd.platform.common.*;
|
||||
import com.yfd.platform.common.exception.BizException;
|
||||
import com.yfd.platform.env.entity.vo.*;
|
||||
import com.yfd.platform.env.mapper.AlongDetailMapper;
|
||||
import com.yfd.platform.env.mapper.SdWtrvdrtpSMapper;
|
||||
import com.yfd.platform.env.service.AlongDetailService;
|
||||
import com.yfd.platform.utils.CollectionExtUtils;
|
||||
import com.yfd.platform.utils.QgcQueryWrapperUtil;
|
||||
import com.yfd.platform.utils.SecurityUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
@ -33,6 +35,8 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
@Resource
|
||||
private DynamicSQLMapper dynamicSQLMapper;
|
||||
@Resource
|
||||
private MicroservicDynamicSQLMapper microservicDynamicSQLMapper;
|
||||
@Resource
|
||||
private AlongDetailMapper alongDetailMapper;
|
||||
|
||||
@Resource
|
||||
@ -44,34 +48,71 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
@Override
|
||||
public DataSourceResult processKendoList(DataSourceRequest dataSourceRequest, Map<String, GroupResult> filterResult, Page page) {
|
||||
DataSourceResult dataSourceResult = new DataSourceResult();
|
||||
StringBuilder sql = new StringBuilder("SELECT t.tm,t.mon, t.stcd, t.wt, t.stnm, t.basename,t.mway,t.rstcd\n" +
|
||||
"FROM (SELECT DISTINCT r.tm,to_char(r.tm,'MM') mon, r.stcd, r.WT,r.TASK_ID,r.TASK_STATUS ,t2.stnm,t2.BASE_Id AS baseId, t2.BASE_NAME baseName,t2.MWAY AS mway, t2.rstcd\n" +
|
||||
" FROM SD_WTRV_R r\n" +
|
||||
//" inner join MS_ALONGDET_B b on r.stcd=b.stcd and b.is_deleted=0 inner join MS_ALONG_B a on a.ID=b.ALONG_ID and a.code='common' " +
|
||||
" LEFT JOIN MS_STBPRP_T t2 ON r.STCD = t2.STCD \n" +
|
||||
" WHERE r.is_deleted=0 and t2.is_deleted=0 " +
|
||||
" order by r.tm DESC, r.stcd) t where 1=1 ");
|
||||
|
||||
sql. append(" AND (TASK_ID IS NULL OR TASK_ID ='' OR TASK_STATUS ='Approved') ");
|
||||
if (ObjectUtil.isNotEmpty(filterResult.get(CommonConstant.DEFAULT))) {
|
||||
if (StrUtil.isNotBlank(filterResult.get(CommonConstant.DEFAULT).getGroupSql())) {
|
||||
sql.append(" and ").append(filterResult.get(CommonConstant.DEFAULT).getGroupSql());
|
||||
}
|
||||
|
||||
if (StrUtil.isNotBlank(filterResult.get(CommonConstant.DEFAULT).getOrderBySql())) {
|
||||
sql.append(" ").append(filterResult.get(CommonConstant.DEFAULT).getOrderBySql());
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||
String stcd = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd");
|
||||
String tm = QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "tm");
|
||||
if (StrUtil.isBlank(tm)) {
|
||||
throw new BizException("时间(tm)不能为空.");
|
||||
}
|
||||
Date startTime = null;
|
||||
Date endTime = null;
|
||||
String[] tmArr = tm.split(",");
|
||||
if (tmArr.length == 2) {
|
||||
Date first = DateUtil.parse(tmArr[0].trim());
|
||||
Date second = DateUtil.parse(tmArr[1].trim());
|
||||
if (first.after(second)) {
|
||||
startTime = second;
|
||||
endTime = first;
|
||||
} else {
|
||||
startTime = first;
|
||||
endTime = second;
|
||||
}
|
||||
}
|
||||
Map<String, Object> map = new HashMap();
|
||||
Iterator iterator = filterResult.keySet().iterator();
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
String key = (String) iterator.next();
|
||||
map.putAll(filterResult.get(key).getParamMap());
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.append("SELECT t.tm, t.mon, t.stcd, t.wt, t.stnm, t.baseName ")
|
||||
.append("FROM (")
|
||||
.append(" SELECT DISTINCT r.tm, TO_NUMBER(TO_CHAR(r.tm,'MM')) mon, r.stcd, r.wt, ")
|
||||
.append(" wt.stnm, hb.basename AS baseName, wt.mway, wt.rstcd ")
|
||||
.append(" FROM SD_WTRV_R r ")
|
||||
.append(" LEFT JOIN SD_WT_B_H wt ON r.STCD = wt.STCD ")
|
||||
.append(" LEFT JOIN SD_ENGINFO_B_H eng ON wt.RSTCD = eng.STCD ")
|
||||
.append(" LEFT JOIN SD_HYDROBASE hb ON eng.BASE_ID = hb.BASEID ")
|
||||
.append(" WHERE r.IS_DELETED = 0 ")
|
||||
.append(" AND wt.IS_DELETED = 0 ")
|
||||
.append(" AND wt.STTP = 'WTRV' ")
|
||||
.append(" AND r.TM BETWEEN #{map.startTime} AND #{map.endTime} ");
|
||||
if (StrUtil.isNotBlank(stcd)) {
|
||||
sql.append(" AND r.STCD = #{map.stcd} ");
|
||||
}
|
||||
List<SdAlongDetailVO> list = this.dynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), map, SdAlongDetailVO.class);
|
||||
sql.append(") t WHERE 1=1 ");
|
||||
if (dataSourceRequest.getSort() != null && !dataSourceRequest.getSort().isEmpty()) {
|
||||
DataSourceRequest.SortDescriptor sortDescriptor = dataSourceRequest.getSort().get(0);
|
||||
String orderField = "tm";
|
||||
if ("stcd".equalsIgnoreCase(sortDescriptor.getField())) {
|
||||
orderField = "stcd";
|
||||
} else if ("stnm".equalsIgnoreCase(sortDescriptor.getField())) {
|
||||
orderField = "stnm";
|
||||
} else if ("wt".equalsIgnoreCase(sortDescriptor.getField())) {
|
||||
orderField = "wt";
|
||||
}
|
||||
String orderDir = "desc".equalsIgnoreCase(sortDescriptor.getDir()) ? "DESC" : "ASC";
|
||||
sql.append(" ORDER BY t.").append(orderField).append(" ").append(orderDir);
|
||||
} else {
|
||||
sql.append(" ORDER BY t.tm ASC ");
|
||||
}
|
||||
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("startTime", startTime);
|
||||
map.put("endTime", endTime);
|
||||
if (StrUtil.isNotBlank(stcd)) {
|
||||
map.put("stcd", stcd);
|
||||
}
|
||||
PageInfo pageInfo = QgcQueryWrapperUtil.getPageInfo(loadOptions);
|
||||
Page currentPage = pageInfo.getHasPageInfo() ? pageInfo.getPage() : page;
|
||||
List<SdAlongDetailVO> list = this.microservicDynamicSQLMapper.pageAllListWithResultType(currentPage, sql.toString(), map, SdAlongDetailVO.class);
|
||||
dataSourceResult.setData(list);
|
||||
dataSourceResult.setTotal(ObjectUtil.isNotEmpty(page) ? page.getTotal() : (long) list.size());
|
||||
dataSourceResult.setTotal(ObjectUtil.isNotEmpty(currentPage) ? currentPage.getTotal() : (long) list.size());
|
||||
return dataSourceResult;
|
||||
}
|
||||
|
||||
@ -142,7 +183,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
@Override
|
||||
public DataSourceResult processQgcKendList(DataSourceResult dataSourceResult, WtrvInfo wtrvInfo) {
|
||||
DataSourceResult dr = new DataSourceResult();
|
||||
List<Map<String, Object>> list = (List<Map<String, Object>>) dataSourceResult.getData();
|
||||
List<SdAlongDetailVO> list = (List<SdAlongDetailVO>) dataSourceResult.getData();
|
||||
|
||||
if (list == null || list.isEmpty()) {
|
||||
dr.setData(new ArrayList<>());
|
||||
@ -150,8 +191,8 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
return dr;
|
||||
}
|
||||
|
||||
Date startTime = (Date) list.get(0).get("tm");
|
||||
Date endTime = (Date) list.get(list.size() - 1).get("tm");
|
||||
Date startTime = list.get(0).getTm();
|
||||
Date endTime = list.get(list.size() - 1).getTm();
|
||||
|
||||
if (startTime.compareTo(endTime) > 0) {
|
||||
Date tmpDate = startTime;
|
||||
@ -162,7 +203,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
List<Map<String, Object>> iwtDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> dwtDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> wtvtDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> hydropwDataVoList = new ArrayList<>();
|
||||
// List<Map<String, Object>> hydropwDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> pptnDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> tmpDataVoList = new ArrayList<>();
|
||||
List<Map<String, Object>> wtnpDataVoList;
|
||||
@ -187,9 +228,9 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
Map<Date, Map<String, Object>> dwtDataMap = dwtDataVoList.stream()
|
||||
.collect(Collectors.toMap(it -> (Date) it.get("tm"), Function.identity()));
|
||||
|
||||
hydropwDataVoList.addAll(this.alongDetailMapper.getHydropwDataList(wtrvInfo.getStcd(), startTime, endTime));
|
||||
Map<Date, Map<String, Object>> hydropwDataMap = hydropwDataVoList.stream()
|
||||
.collect(Collectors.toMap(it -> (Date) it.get("tm"), Function.identity()));
|
||||
// hydropwDataVoList.addAll(this.alongDetailMapper.getHydropwDataList(wtrvInfo.getStcd(), startTime, endTime));
|
||||
// Map<Date, Map<String, Object>> hydropwDataMap = hydropwDataVoList.stream()
|
||||
// .collect(Collectors.toMap(it -> (Date) it.get("tm"), Function.identity()));
|
||||
|
||||
pptnDataVoList.addAll(this.alongDetailMapper.getPptnDataList(wtrvInfo.getStcd(), startTime, endTime));
|
||||
Map<Date, Map<String, Object>> pptnDataMap = pptnDataVoList.stream()
|
||||
@ -213,42 +254,42 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
List<Map<String, Object>> qgcWtrvDataVoList = new ArrayList<>();
|
||||
list.forEach(it -> {
|
||||
Map<String, Object> vo = new HashMap<>();
|
||||
vo.put("stcd", it.get("stcd"));
|
||||
vo.put("stnm", it.get("stnm"));
|
||||
vo.put("wt", it.get("wt"));
|
||||
vo.put("tm", it.get("tm"));
|
||||
vo.put("stcd", it.getStcd());
|
||||
vo.put("stnm", it.getStnm());
|
||||
vo.put("wt", it.getWt());
|
||||
vo.put("tm", it.getTm());
|
||||
vo.put("ennm", wtrvInfo.getEnnm());
|
||||
vo.put("rstcd", wtrvInfo.getRstcd());
|
||||
vo.put("type", wtrvInfo.getType());
|
||||
vo.put("natureTmp", wtnpDataMap.get(it.get("mon")));
|
||||
vo.put("hydropwDataVo", hydropwDataMap.get(it.get("tm")));
|
||||
vo.put("pptnDataVo", pptnDataMap.get(it.get("tm")));
|
||||
vo.put("tmpDataVo", tmpDataMap.get(it.get("tm")));
|
||||
vo.put("natureTmp", wtnpDataMap.get(it.getMon()));
|
||||
// vo.put("hydropwDataVo", hydropwDataMap.get(it.getTm()));
|
||||
vo.put("pptnDataVo", pptnDataMap.get(it.getTm()));
|
||||
vo.put("tmpDataVo", tmpDataMap.get(it.getTm()));
|
||||
|
||||
if (wtrvInfo.getType() == 1) {
|
||||
Map<String, Object> iwtVo = new HashMap<>();
|
||||
iwtVo.put("tm", it.get("tm"));
|
||||
iwtVo.put("wt", it.get("wt"));
|
||||
iwtVo.put("tm", it.getTm());
|
||||
iwtVo.put("wt", it.getWt());
|
||||
vo.put("iwtDataVo", iwtVo);
|
||||
vo.put("dwtDataVo", dwtDataMap.get(it.get("tm")));
|
||||
vo.put("dwtDataVo", dwtDataMap.get(it.getTm()));
|
||||
}
|
||||
|
||||
if (wtrvInfo.getType() == 2) {
|
||||
Map<String, Object> dwtVo = new HashMap<>();
|
||||
dwtVo.put("tm", it.get("tm"));
|
||||
dwtVo.put("wt", it.get("wt"));
|
||||
dwtVo.put("tm", it.getTm());
|
||||
dwtVo.put("wt", it.getWt());
|
||||
vo.put("dwtDataVo", dwtVo);
|
||||
vo.put("iwtDataVo", iwtDataMap.get(it.get("tm")));
|
||||
vo.put("iwtDataVo", iwtDataMap.get(it.getTm()));
|
||||
|
||||
if (it.get("wt") != null && wtvtDataVoMap != null) {
|
||||
List<Map<String, Object>> vtList = wtvtDataVoMap.get(it.get("tm"));
|
||||
if (it.getWt() != null && wtvtDataVoMap != null) {
|
||||
List<Map<String, Object>> vtList = wtvtDataVoMap.get(it.getTm());
|
||||
if (vtList != null) {
|
||||
Map<BigDecimal, List<Map<String, Object>>> vtMap = vtList.stream()
|
||||
.filter(tt -> tt.get("vwt") != null)
|
||||
.collect(Collectors.groupingBy(tt -> (BigDecimal) tt.get("vwt")));
|
||||
|
||||
if (vtMap.containsKey(it.get("wt"))) {
|
||||
vo.put("wtvtDataVo", vtMap.get(it.get("wt")).get(0));
|
||||
if (vtMap.containsKey(it.getWt())) {
|
||||
vo.put("wtvtDataVo", vtMap.get(it.getWt()).get(0));
|
||||
qgcWtrvDataVoList.add(vo);
|
||||
return;
|
||||
}
|
||||
@ -262,7 +303,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
|
||||
BigDecimal[] lrValue = CollectionExtUtils.findNeighbors(sortVt, (BigDecimal) it.get("wt"));
|
||||
BigDecimal[] lrValue = CollectionExtUtils.findNeighbors(sortVt, it.getWt());
|
||||
if (lrValue.length == 2) {
|
||||
leftVt = lrValue[0];
|
||||
rightVt = lrValue[1];
|
||||
@ -279,7 +320,7 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
}
|
||||
|
||||
if (leftVt != null && rightVt != null) {
|
||||
BigDecimal currentWt = (BigDecimal) it.get("wt");
|
||||
BigDecimal currentWt = it.getWt();
|
||||
BigDecimal wthg = ((rightVt.subtract(currentWt)).multiply((BigDecimal) leftVo.get("wthg"))
|
||||
.add((currentWt.subtract(leftVt)).multiply((BigDecimal) rightVo.get("wthg"))))
|
||||
.divide((rightVt.subtract(currentWt)).add(currentWt.subtract(leftVt)), RoundingMode.HALF_UP);
|
||||
@ -594,4 +635,4 @@ public class AlongDetailServiceImpl extends ServiceImpl<AlongDetailMapper, SdAlo
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,11 +90,14 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
String forceType) {
|
||||
DataSourceLoadOptionsBase loadOptions = dataSourceRequest.toDevRequest();
|
||||
String engStcd = normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "stcd"));
|
||||
String relationStcd = firstNotBlank(
|
||||
engStcd,
|
||||
normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "engIwtCode")),
|
||||
normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "engDwtCode"))
|
||||
);
|
||||
String engIwtCode = normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "engIwtCode"));
|
||||
String engDwtCode = normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "engDwtCode"));
|
||||
if (StrUtil.isBlank(engIwtCode) && StrUtil.isNotBlank(engStcd)) {
|
||||
engIwtCode = engStcd;
|
||||
}
|
||||
if (StrUtil.isBlank(engDwtCode) && StrUtil.isNotBlank(engStcd)) {
|
||||
engDwtCode = engStcd;
|
||||
}
|
||||
String url = normalizeFilterValue(QgcQueryWrapperUtil.getFilterFieldValue(loadOptions, "url"));
|
||||
boolean isDetail = forceDetail != null ? forceDetail : "details".equals(url);
|
||||
|
||||
@ -112,26 +115,19 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
.append("SWS.WT AS wt, ")
|
||||
.append("REL.ENG_IWT_CODE AS engIwtCode, ")
|
||||
.append("REL.ENG_DWT_CODE AS engDwtCode ")
|
||||
.append("FROM (")
|
||||
.append(" SELECT SPR.STCD, SPR.ENG_IWT_CODE, SPR.ENG_DWT_CODE ")
|
||||
.append(" FROM SD_PRWTRLTN_B SPR ")
|
||||
.append(" WHERE SPR.IS_DELETED = 0 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
if (StrUtil.isNotBlank(relationStcd)) {
|
||||
paramMap.put("relationStcd", relationStcd);
|
||||
sql.append(" AND SPR.STCD = #{map.relationStcd} ");
|
||||
}
|
||||
sql.append(") REL ")
|
||||
.append("INNER JOIN SD_ENGINFO_B_H SEG ON SEG.STCD = REL.STCD ")
|
||||
.append("INNER JOIN ").append(tableName).append(" SWS ON SWS.STCD IN (REL.ENG_IWT_CODE, REL.ENG_DWT_CODE) ")
|
||||
.append("INNER JOIN SD_WT_B_H SWT ON SWT.STCD = SWS.STCD ")
|
||||
.append("FROM SD_WT_B_H SWT ")
|
||||
.append("INNER JOIN ").append(tableName).append(" SWS ON SWS.STCD = SWT.STCD ")
|
||||
.append("INNER JOIN SD_WTENGRLTN_B REL ON REL.STCD = SWT.STCD ")
|
||||
.append("INNER JOIN SD_ENGINFO_B_H SEG ON SEG.STCD = SWT.RSTCD ")
|
||||
.append("WHERE SWS.IS_DELETED = 0 ")
|
||||
.append("AND SWT.IS_DELETED = 0 ")
|
||||
.append("AND REL.IS_DELETED = 0 ")
|
||||
.append("AND SWT.USFL = 1 ")
|
||||
.append("AND SWT.MWAY = 2 ")
|
||||
.append("AND SWT.STTP = 'WTRV' ")
|
||||
.append("AND SEG.USFL = 1 ");
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
if (timeRange[0] != null && timeRange[1] != null) {
|
||||
paramMap.put("startTime", timeRange[0]);
|
||||
paramMap.put("endTime", timeRange[1]);
|
||||
@ -140,8 +136,19 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
}
|
||||
|
||||
if (isDetail) {
|
||||
appendDetailCondition(sql, forceType);
|
||||
appendDetailCondition(sql, paramMap, forceType, engIwtCode, engDwtCode);
|
||||
} else {
|
||||
if (StrUtil.isNotBlank(engIwtCode) && StrUtil.isNotBlank(engDwtCode)) {
|
||||
paramMap.put("engIwtCode", engIwtCode);
|
||||
paramMap.put("engDwtCode", engDwtCode);
|
||||
sql.append("AND ((REL.ENG_IWT_CODE = #{map.engIwtCode}) OR (REL.ENG_DWT_CODE = #{map.engDwtCode})) ");
|
||||
} else if (StrUtil.isNotBlank(engIwtCode)) {
|
||||
paramMap.put("engIwtCode", engIwtCode);
|
||||
sql.append("AND REL.ENG_IWT_CODE = #{map.engIwtCode} ");
|
||||
} else if (StrUtil.isNotBlank(engDwtCode)) {
|
||||
paramMap.put("engDwtCode", engDwtCode);
|
||||
sql.append("AND REL.ENG_DWT_CODE = #{map.engDwtCode} ");
|
||||
}
|
||||
appendInCondition(sql, paramMap, "SEG.BASE_ID", "baseId", baseIdList);
|
||||
appendInCondition(sql, paramMap, "SEG.RVCD", "rvcd", rvcdList);
|
||||
}
|
||||
@ -151,7 +158,7 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
List<SdRvwtSVO> resultList = microservicDynamicSQLMapper.pageAllListWithResultType(page, sql.toString(), paramMap, SdRvwtSVO.class);
|
||||
|
||||
if (!isDetail) {
|
||||
fillDwtp(resultList);
|
||||
fillDwtp(resultList, engIwtCode, engDwtCode);
|
||||
}
|
||||
|
||||
DataSourceResult<SdRvwtSVO> result = new DataSourceResult<>();
|
||||
@ -160,23 +167,43 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
return result;
|
||||
}
|
||||
|
||||
private void appendDetailCondition(StringBuilder sql, String forceType) {
|
||||
private void appendDetailCondition(StringBuilder sql,
|
||||
Map<String, Object> paramMap,
|
||||
String forceType,
|
||||
String engIwtCode,
|
||||
String engDwtCode) {
|
||||
if (TYPE_IWT.equals(forceType)) {
|
||||
sql.append("AND SWT.STCD = REL.ENG_IWT_CODE ");
|
||||
sql.append("AND SWT.WT_TYPE = 'IWT' ");
|
||||
if (StrUtil.isNotBlank(engIwtCode)) {
|
||||
paramMap.put("detailEngIwtCode", engIwtCode);
|
||||
sql.append("AND REL.ENG_IWT_CODE = #{map.detailEngIwtCode} ");
|
||||
}
|
||||
} else if (TYPE_DWT.equals(forceType)) {
|
||||
sql.append("AND SWT.STCD = REL.ENG_DWT_CODE ");
|
||||
sql.append("AND SWT.WT_TYPE = 'DWT' ");
|
||||
if (StrUtil.isNotBlank(engDwtCode)) {
|
||||
paramMap.put("detailEngDwtCode", engDwtCode);
|
||||
sql.append("AND REL.ENG_DWT_CODE = #{map.detailEngDwtCode} ");
|
||||
}
|
||||
} else if (StrUtil.isNotBlank(engDwtCode)) {
|
||||
paramMap.put("detailEngDwtCode", engDwtCode);
|
||||
sql.append("AND SWT.WT_TYPE = 'DWT' ")
|
||||
.append("AND REL.ENG_DWT_CODE = #{map.detailEngDwtCode} ");
|
||||
} else if (StrUtil.isNotBlank(engIwtCode)) {
|
||||
paramMap.put("detailEngIwtCode", engIwtCode);
|
||||
sql.append("AND SWT.WT_TYPE = 'IWT' ")
|
||||
.append("AND REL.ENG_IWT_CODE = #{map.detailEngIwtCode} ");
|
||||
}
|
||||
}
|
||||
|
||||
private void fillDwtp(List<SdRvwtSVO> voList) {
|
||||
private void fillDwtp(List<SdRvwtSVO> voList, String engIwtCode, String engDwtCode) {
|
||||
for (SdRvwtSVO vo : voList) {
|
||||
if (StrUtil.isNotBlank(vo.getStcd())
|
||||
&& StrUtil.isNotBlank(vo.getEngIwtCode())
|
||||
&& vo.getStcd().equals(vo.getEngIwtCode())) {
|
||||
if (StrUtil.isNotBlank(vo.getEngIwtCode())
|
||||
&& StrUtil.isNotBlank(engIwtCode)
|
||||
&& vo.getEngIwtCode().contains(engIwtCode)) {
|
||||
vo.setDwtp(SdRvwtSVO.DWTP_IWT);
|
||||
} else if (StrUtil.isNotBlank(vo.getStcd())
|
||||
&& StrUtil.isNotBlank(vo.getEngDwtCode())
|
||||
&& vo.getStcd().equals(vo.getEngDwtCode())) {
|
||||
} else if (StrUtil.isNotBlank(vo.getEngDwtCode())
|
||||
&& StrUtil.isNotBlank(engDwtCode)
|
||||
&& vo.getEngDwtCode().contains(engDwtCode)) {
|
||||
vo.setDwtp(SdRvwtSVO.DWTP_DWT);
|
||||
}
|
||||
}
|
||||
@ -324,15 +351,4 @@ public class SdRvwtSInOutOneServiceImpl extends ServiceImpl<SdRvwtSInOutOneMappe
|
||||
return timeValue;
|
||||
}
|
||||
|
||||
private String firstNotBlank(String... values) {
|
||||
if (values == null) {
|
||||
return null;
|
||||
}
|
||||
for (String value : values) {
|
||||
if (StrUtil.isNotBlank(value)) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user