终端运行管理bug修复

This commit is contained in:
zhuxinyu
2023-04-10 14:13:28 +08:00
parent 5b81bf940c
commit 1798ef91a1
5 changed files with 58 additions and 16 deletions

View File

@@ -72,4 +72,6 @@ public class RunManageParam extends BaseParam implements Serializable {
@ApiModelProperty(name = "runFlag", value = "终端状态") @ApiModelProperty(name = "runFlag", value = "终端状态")
private List<Integer> runFlag; private List<Integer> runFlag;
@ApiModelProperty(name = "searchValue", value = "篩選數據")
private String searchValue;
} }

View File

@@ -42,7 +42,6 @@ public class RunTimeVO implements Serializable {
@ApiModelProperty(name = "loginTime",value = "投运时间") @ApiModelProperty(name = "loginTime",value = "投运时间")
private String loginTime; private String loginTime;
@ApiModelProperty(name = "devType",value = "终端型号") @ApiModelProperty(name = "devType",value = "终端型号")
private String devType; private String devType;

View File

@@ -3,6 +3,7 @@ package com.njcn.device.pq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.device.pq.pojo.po.Device; import com.njcn.device.pq.pojo.po.Device;
import com.njcn.device.pq.pojo.vo.LineInfluxDbOnlineVO;
import com.njcn.device.pq.pojo.vo.RunManageVO; import com.njcn.device.pq.pojo.vo.RunManageVO;
import com.njcn.device.pq.pojo.vo.RunTimeVO; import com.njcn.device.pq.pojo.vo.RunTimeVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@@ -46,9 +47,15 @@ public interface DeviceMapper extends BaseMapper<Device> {
* @param list 终端集合 * @param list 终端集合
* @param comFlag 状态 * @param comFlag 状态
* @param runFlag 状态 * @param runFlag 状态
* @param manufacturer
* @param searchValue
* @return 结果 * @return 结果
*/ */
List<RunTimeVO> getRunManageDevList(@Param("list") List<String> list, @Param("comFlag")List<Integer> comFlag, @Param("runFlag")List<Integer> runFlag); List<RunTimeVO> getRunManageDevList(@Param("list") List<String> list,
@Param("comFlag") List<Integer> comFlag,
@Param("runFlag") List<Integer> runFlag,
@Param("manufacturers") List<String> manufacturer,
@Param("searchValue") String searchValue);
/** /**
* 获取指定等级的装置 * 获取指定等级的装置
@@ -56,4 +63,8 @@ public interface DeviceMapper extends BaseMapper<Device> {
* @date 2023/2/10 * @date 2023/2/10
*/ */
List<String> getDevByGrade(@Param("devId")List<String> devIds,@Param("lineGrade") String lineGrade); List<String> getDevByGrade(@Param("devId")List<String> devIds,@Param("lineGrade") String lineGrade);
List<LineInfluxDbOnlineVO> getOnlineEvaluate(@Param("list") List<String> devIndexes,
@Param("begin") String searchBeginTime,
@Param("end") String searchEndTime);
} }

View File

@@ -160,19 +160,46 @@
<foreach item="item" collection="list" open="(" separator="," close=")"> <foreach item="item" collection="list" open="(" separator="," close=")">
#{item} #{item}
</foreach> </foreach>
<if test="runFlag == '' and runFlag !=null"> <if test="runFlag.size()!=0">
and device.Run_Flag in and device.Run_Flag in
<foreach item="item1" collection="runFlag" open="(" separator="," close=")"> <foreach item="item1" collection="runFlag" separator="," open="(" close=")">
#{item1} #{item1}
</foreach> </foreach>
</if> </if>
<if test="comFlag == '' and comFlag !=null"> <if test="comFlag.size()!=0">
and device.Com_Flag in and device.Com_Flag in
<foreach item="item2" collection="comFlag" open="(" separator="," close=")"> <foreach item="item2" collection="comFlag" separator="," open="(" close=")">
#{item2} #{item2}
</foreach> </foreach>
</if> </if>
<if test="manufacturers.size()!=0">
and device.Manufacturer in
<foreach collection="manufacturers" item="item3" separator="," open="(" close=")">
#{item3}
</foreach>
</if>
<if test="searchValue != '' and searchValue != null ">
<bind name="searchValueLike" value="'%'+searchValue+'%'"/>
AND sub.NAME LIKE #{searchValueLike}
OR dev.NAME LIKE #{searchValueLike}
OR devT.Name LIKE #{searchValueLike}
OR device.IP LIKE #{searchValueLike}
</if>
ORDER BY ORDER BY
areaId.NAME areaId.NAME
</select> </select>
<select id="getOnlineEvaluate" resultType="com.njcn.device.pq.pojo.vo.LineInfluxDbOnlineVO">
SELECT
SUM(r.online_min) / (SUM(r.online_min)+SUM(r.offline_min)) AS onlineRate,
r.dev_index AS devIndex
FROM r_stat_onlinerate_d r
WHERE time_id BETWEEN #{begin} AND #{end}
<if test="list.size > 0">
AND r.dev_index IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
GROUP BY r.dev_index
</select>
</mapper> </mapper>

View File

@@ -93,19 +93,22 @@ public class RunManageServiceImpl implements RunManageService {
if (!CollectionUtils.isEmpty(generalDeviceDTOList)) { if (!CollectionUtils.isEmpty(generalDeviceDTOList)) {
List<String> devIndexes = generalDeviceDTOList.stream().flatMap(list->list.getDeviceIndexes().stream()).collect(Collectors.toList()); List<String> devIndexes = generalDeviceDTOList.stream().flatMap(list->list.getDeviceIndexes().stream()).collect(Collectors.toList());
DateFormat bf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); DateFormat bf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
runManageParam.setSearchBeginTime(DateUtil.beginOfMonth(new Date()).toString(bf)); runManageParam.setSearchBeginTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchBeginTime()))));
runManageParam.setSearchEndTime(DateUtil.endOfMonth(new Date()).toString(bf)); runManageParam.setSearchEndTime(bf.format(DateUtil.beginOfDay(DateUtil.parse(runManageParam.getSearchEndTime()))));
List<String> manuList = runManageParam.getManufacturer().stream().map(SimpleDTO::getId).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(devIndexes)){ if(CollectionUtil.isNotEmpty(devIndexes)){
runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag()); runManageDevList = deviceMapper.getRunManageDevList(devIndexes, runManageParam.getComFlag(), runManageParam.getRunFlag(),manuList,runManageParam.getSearchValue());
StringBuilder devSql = InfluxDBCommUtils.assToInfluxParamDev(devIndexes); List<LineInfluxDbOnlineVO> lineInfluxDbOnlineVOList = deviceMapper.getOnlineEvaluate(devIndexes,runManageParam.getSearchBeginTime(),runManageParam.getSearchEndTime());
String stringBuilder = "time >= '" + runManageParam.getSearchBeginTime() + "' and " + "time <= '" + runManageParam.getSearchEndTime()+"' and "+devSql+" group by dev_id";
//sql语句
String sql = "SELECT MEAN(online_rate) AS online_rate FROM " + PQS_ONLINERATE + " WHERE " + stringBuilder + TIME_ZONE;
QueryResult queryResult = influxDbUtils.query(sql);
InfluxDBResultMapper inCn = new InfluxDBResultMapper(); // StringBuilder devSql = InfluxDBCommUtils.assToInfluxParamDev(devIndexes);
List<LineInfluxDbOnlineVO> lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class); // String stringBuilder = "time >= '" + runManageParam.getSearchBeginTime() + "' and " + "time <= '" + runManageParam.getSearchEndTime()+"' and "+devSql+" group by dev_id";
// //sql语句
// String sql = "SELECT MEAN(online_rate) AS online_rate FROM " + PQS_ONLINERATE + " WHERE " + stringBuilder + TIME_ZONE;
// QueryResult queryResult = influxDbUtils.query(sql);
//
// InfluxDBResultMapper inCn = new InfluxDBResultMapper();
// List<LineInfluxDbOnlineVO> lineInfluxDbOnlineVOList = inCn.toPOJO(queryResult,LineInfluxDbOnlineVO.class);
runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList()); runManageDevList = runManageDevList.stream().peek(item-> lineInfluxDbOnlineVOList.stream().filter(it-> Objects.equals(item.getId(),it.getDevIndex())).findFirst().ifPresent(i->item.setOnlineEvaluate(i.getOnlineRate()))).collect(Collectors.toList());
} }
} }