1.解决综合评估,时间范围查询bug

This commit is contained in:
wr
2023-09-20 15:36:38 +08:00
parent 243088415d
commit 0fbbb426a0
3 changed files with 35 additions and 34 deletions

View File

@@ -24,24 +24,13 @@ public interface RMpPollutionDPOMapper extends BaseMapper<RMpPollutionDPO> {
int insertOrUpdateSelective(RMpPollutionDPO record); int insertOrUpdateSelective(RMpPollutionDPO record);
@Select({"<script>", List<RMpPollutionDPO> selectMaxList(@Param("ids") List<String> line,
"SELECT\n", @Param("pollutionType") String pollutionType,
" l.line_id,\n", @Param("statTime") String statTime,
" max(l.value) as value\n", @Param("endTime") String endTime);
"FROM\n" +
" r_mp_pollution_d l\n",
"where line_id in\n",
"<foreach item='item' index='index' collection='items' open='(' separator=',' close=')'>",
"#{item}",
"</foreach>",
"\tand DATE_FORMAT( data_date ,'%Y-%m-%d') like #{searchBeginTime}\n",
"and pollution_type =#{pollutionType}",
"GROUP BY\n",
" l.line_id",
"</script>"
}) List<PublicDTO> getTop10Line(@Param("list") List<String> lineList,
List<RMpPollutionDPO> selectMaxList(@Param("items") List<String> line, @Param("pollutionType") String pollutionType, @Param("searchBeginTime") String searchBeginTime); @Param("start") DateTime searchBeginTime,
@Param("end") DateTime searchEndTime,
List<PublicDTO> getTop10Line(@Param("list") List<String> lineList, @Param("start") DateTime searchBeginTime, @Param("end") DateTime searchEndTime, @Param("pollutionType") String id); @Param("pollutionType") String id);
} }

View File

@@ -43,6 +43,30 @@
ORDER BY data DESC ORDER BY data DESC
LIMIT 0,10 LIMIT 0,10
</select> </select>
<select id="selectMaxList" resultType="com.njcn.harmonic.pojo.po.RMpPollutionDPO">
SELECT
l.line_id,
max( l.VALUE ) AS VALUE
FROM
r_mp_pollution_d l
<where>
pollution_type = #{pollutionType}
<if test=" ids != null and ids.size > 0">
AND line_id IN
<foreach collection='ids' item='item' index="index" open='(' separator=',' close=')'>
#{item}
</foreach>
</if>
<if test=" statTime != null and statTime !=''">
AND data_date >= #{statTime}
</if>
<if test="endTime != null and endTime != ''">
AND data_date &lt;= #{endTime}
</if>
</where>
GROUP BY
l.line_id;
</select>
<insert id="batchInsert" parameterType="map"> <insert id="batchInsert" parameterType="map">

View File

@@ -505,18 +505,6 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
List<PollutionLineDTO> list = new ArrayList<>(); List<PollutionLineDTO> list = new ArrayList<>();
String pollutionType = harmonicPublicParam.getStatisticalType ( ).getId (); String pollutionType = harmonicPublicParam.getStatisticalType ( ).getId ();
String code = harmonicPublicParam.getStatisticalType ( ).getCode ();
String searchBeginTime = "";
if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_YEAR) ){
searchBeginTime = harmonicPublicParam.getSearchBeginTime ( ).substring (0, 4)+"%";
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_MONTH)){
searchBeginTime = harmonicPublicParam.getSearchBeginTime ( ).substring (0, 7)+"%";
}else if(Objects.equals (harmonicPublicParam.getReportFlag (),BizParamConstant.STAT_BIZ_DAY)) {
searchBeginTime = harmonicPublicParam.getSearchBeginTime ( ).substring (0, 10)+"%";
}
PollutionParamDTO paramDTO = new PollutionParamDTO(); PollutionParamDTO paramDTO = new PollutionParamDTO();
if (StringUtils.isBlank(RequestUtil.getDeptIndex())){ if (StringUtils.isBlank(RequestUtil.getDeptIndex())){
return list; return list;
@@ -528,7 +516,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData(); List<PmsStatationStatInfoDTO> data = statationStatClient.getStatationStatInfo(param).getData();
if(CollectionUtil.isNotEmpty(data)){ if(CollectionUtil.isNotEmpty(data)){
List<String> monitorId = data.stream().map(PmsStatationStatInfoDTO::getMonitorId).collect(Collectors.toList()); List<String> monitorId = data.stream().map(PmsStatationStatInfoDTO::getMonitorId).collect(Collectors.toList());
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorId,pollutionType,searchBeginTime); List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorId,pollutionType,harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime());
Map<String, Double> lineMap = lineData.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue)); Map<String, Double> lineMap = lineData.stream().collect(Collectors.toMap(RMpPollutionDPO::getLineId, RMpPollutionDPO::getValue));
PollutionLineDTO dto; PollutionLineDTO dto;
for (PmsStatationStatInfoDTO power : data) { for (PmsStatationStatInfoDTO power : data) {
@@ -559,7 +547,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if (!CollectionUtils.isEmpty(line)){ if (!CollectionUtils.isEmpty(line)){
paramDTO.setLineList(line); paramDTO.setLineList(line);
list = lineFeignClient.getLineInfo(paramDTO).getData(); list = lineFeignClient.getLineInfo(paramDTO).getData();
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( line,pollutionType,searchBeginTime); List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( line,pollutionType,harmonicPublicParam.getSearchBeginTime(),harmonicPublicParam.getSearchEndTime());
if (!CollectionUtils.isEmpty(lineData)){ if (!CollectionUtils.isEmpty(lineData)){
list.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getLineId ())).findAny().map(m->{ list.stream().map(list1->lineData.stream().filter(list2-> Objects.equals(list1.getId(),list2.getLineId ())).findAny().map(m->{
list1.setData (m.getValue ()); list1.setData (m.getValue ());
@@ -621,7 +609,7 @@ public class PollutionSubstationServiceImpl extends ServiceImpl<RStatPollutionSu
if(CollectionUtil.isNotEmpty(monitorIdList)){ if(CollectionUtil.isNotEmpty(monitorIdList)){
//获取监测点数据 //获取监测点数据
List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorIdList,pollutionType,param.getSearchBeginTime()); List<RMpPollutionDPO> lineData = rMpPollutionDPOMapper.selectMaxList ( monitorIdList,pollutionType,param.getSearchBeginTime(),param.getSearchEndTime());
if(CollectionUtil.isEmpty(lineData)){ if(CollectionUtil.isEmpty(lineData)){
return list; return list;