业务管理员-终端运维管理-主列表-流量详情接口开发

This commit is contained in:
zhuxinyu
2023-04-03 19:32:21 +08:00
parent 3248bbe83c
commit 7cabd4c4c3
15 changed files with 165 additions and 40 deletions

View File

@@ -110,8 +110,10 @@ public class OperationContrController extends BaseController {
@ApiImplicitParam(name = "deviceInfoParam", value = "实体", required = true)
public HttpResult<Page<LineFlowMealDetailVO>> getNewDeviceRunStatistics(@RequestBody PqsParam deviceInfoParam){
String methodDescribe = getMethodDescribe("getDeviceRunStatistics");
DeviceInfoParam param = new DeviceInfoParam(RequestUtil.getDeptIndex(),null);
deviceInfoParam.setDeptIndex(param.getDeptIndex());
// DeviceInfoParam param = new DeviceInfoParam(RequestUtil.getDeptIndex(),null);
// deviceInfoParam.setDeptIndex(param.getDeptIndex());
// 本地测试
deviceInfoParam.setDeptIndex("9b8f910f3c3ad4b049b6abda59d66419");
LogUtil.njcnDebug(log, "{},参数集合:{}", methodDescribe, deviceInfoParam);
Page<LineFlowMealDetailVO> result = lineService.getNewDeviceRunStatistics(deviceInfoParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, result, methodDescribe);

View File

@@ -40,7 +40,7 @@ import java.util.Objects;
@Slf4j
@Api(tags = "终端运维管理")
@RestController
@RequestMapping("maintain")
@RequestMapping("/maintain")
@RequiredArgsConstructor
@Validated
public class TerminalMaintainController extends BaseController {
@@ -96,11 +96,11 @@ public class TerminalMaintainController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getFlowManageDetail")
@ApiOperation("终端流量管理列表")
public HttpResult<Page<TerminalDaliyFlowVO>> getFlowManageDetail(@RequestBody TerminalMainQueryParam param) {
@ApiOperation("终端流量管理详情")
public HttpResult<List<TerminalDaliyFlowVO>> getFlowManageDetail(@RequestBody TerminalMainQueryParam param) {
String methodDescribe = getMethodDescribe("getFlowManageDetail");
Page<TerminalDaliyFlowVO> resList = terminalMaintainService.getFlowManageDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, resList, methodDescribe);
List<TerminalDaliyFlowVO> res = terminalMaintainService.getFlowManageDetail(param);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, res, methodDescribe);
}
/**

View File

@@ -76,5 +76,5 @@ public interface TerminalMaintainMapper {
List<TerminalMaintainVO> getFlowStrategyList(@Param("ids") List<String> ids);
Page<TerminalDaliyFlowVO>getFlowManageDetail(Page<TerminalDaliyFlowVO> page, @Param("devId") String deviceId);
TerminalDaliyFlowVO getFlowManageDetail(@Param("devId") String deviceId);
}

View File

@@ -788,7 +788,7 @@
INNER JOIN pq_device b ON vol.pid = b.id
INNER JOIN pq_line sub ON dev.pid = sub.id
INNER JOIN pq_line elc ON sub.pid = elc.id
LEFT JOIN cld_month_flow m ON b.id = m.Dev_Id
LEFT JOIN cld_month_flow m ON b.id = m.Line_Id
LEFT JOIN cld_dev_meal c ON b.id = c.line_id
LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id
LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id
@@ -826,7 +826,7 @@
INNER JOIN pq_device b ON vol.pid = b.id
INNER JOIN pq_line sub ON dev.pid = sub.id
INNER JOIN pq_line elc ON sub.pid = elc.id
LEFT JOIN cld_month_flow m ON b.id = m.Dev_Id
LEFT JOIN cld_month_flow m ON b.id = m.Line_Id
LEFT JOIN cld_dev_meal c ON b.id = c.line_id
LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id
LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id
@@ -855,7 +855,7 @@
ifnull(m.Actual_Value,0) statisValue
FROM pq_line a
INNER JOIN pq_device b ON a.id = b.id
LEFT JOIN cld_month_flow m ON b.id = m.Dev_Id
LEFT JOIN cld_month_flow m ON b.id = m.Line_Id
LEFT JOIN cld_dev_meal c ON b.id = c.line_id
LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id
LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id

View File

@@ -125,7 +125,14 @@ FROM
</select>
<select id="getFlowManageDetail" resultType="com.njcn.device.pq.pojo.vo.TerminalDaliyFlowVO">
SELECT
FROM
c.Line_Id devId,
IFNULL(d.flow, (select flow from cld_flow_meal where type = 0 and flag = 1)) baseFlow,
IFNULL(d1.flow, 0) extendFlow,
IFNULL(d.flow, (select flow from cld_flow_meal where type = 0 and flag = 1)) + IFNULL(d1.flow, 0) flowMeal
FROM cld_dev_meal c
LEFT JOIN cld_flow_meal d ON c.Base_Meal_Id = d.id
LEFT JOIN cld_flow_meal d1 ON c.Ream_Meal_Id = d1.id
WHERE c.Line_Id = #{devId} AND d.State =1 AND d1.State =1
</select>

View File

@@ -54,5 +54,5 @@ public interface TerminalMaintainService {
boolean updateFlowStrategy(TerminalParam terminalParam);
Page<TerminalDaliyFlowVO> getFlowManageDetail(TerminalMainQueryParam param);
List<TerminalDaliyFlowVO> getFlowManageDetail(TerminalMainQueryParam param);
}

View File

@@ -288,8 +288,7 @@ public class GeneralDeviceService {
*/
public List<GeneralDeviceDTO> getDeviceInfo(DeviceInfoParam deviceInfoParam,
List<Integer> runFlag,
List<Integer> devModel)
{
List<Integer> devModel) {
//定义待返回终端信息
List<GeneralDeviceDTO> deviceInfos = new ArrayList<>();
//初始化终端查询条件

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
@@ -12,26 +13,34 @@ import com.njcn.device.pq.pojo.dto.GeneralDeviceDTO;
import com.njcn.device.pq.pojo.param.DeviceInfoParam;
import com.njcn.device.pq.pojo.param.TerminalMainQueryParam;
import com.njcn.device.pq.pojo.param.TerminalParam;
import com.njcn.device.pq.pojo.po.Communicate;
import com.njcn.device.pq.pojo.po.DevMeal;
import com.njcn.device.pq.pojo.po.DevStrategy;
import com.njcn.device.pq.pojo.po.Device;
import com.njcn.device.pq.pojo.po.influxdb.DeviceDayFlow;
import com.njcn.device.pq.pojo.vo.TerminalDaliyFlowVO;
import com.njcn.device.pq.pojo.vo.TerminalMaintainVO;
import com.njcn.device.pq.service.IDevMealService;
import com.njcn.device.pq.service.IDevStrategyService;
import com.njcn.device.pq.service.IDeviceService;
import com.njcn.device.pq.service.TerminalMaintainService;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.system.pojo.enums.StatisticsEnum;
import com.njcn.user.api.DeptFeignClient;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* pqs
@@ -56,6 +65,8 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
private final DeptFeignClient deptFeignClient;
private final InfluxDbUtils influxDbUtils;
@Override
public List<TerminalMaintainVO> getTerminalMainList(TerminalMainQueryParam terminalMainQueryParam) {
List<TerminalMaintainVO> resList = new ArrayList<>();
@@ -155,9 +166,49 @@ public class TerminalMaintainServiceImpl implements TerminalMaintainService {
}
@Override
public Page<TerminalDaliyFlowVO> getFlowManageDetail (TerminalMainQueryParam param) {
Page page = terminalMaintainMapper.getFlowManageDetail(new Page(param.getPageNum(), param.getPageSize()), param.getDevId());
return page;
public List<TerminalDaliyFlowVO> getFlowManageDetail(TerminalMainQueryParam param) {
List<TerminalDaliyFlowVO> list = new ArrayList<>();
TerminalDaliyFlowVO flowManageDetail = terminalMaintainMapper.getFlowManageDetail(param.getDevId());
if (flowManageDetail == null) {
list.add(new TerminalDaliyFlowVO());
return list;
}
List<DeviceDayFlow> deviceDayFlowList = getFlowManageDetailFromInfluxDB(param);
float sum = (float) deviceDayFlowList.stream().mapToDouble(DeviceDayFlow::getDailyActualValue).sum();
flowManageDetail.setDeviceDayFlowsList(deviceDayFlowList);
flowManageDetail.setActualValue(sum);
list.add(flowManageDetail);
list.forEach(terminalDaliyFlowVO -> terminalDaliyFlowVO.setMonth(param.getSearchBeginTime().substring(6, 7) + ""));
return list;
}
private List<DeviceDayFlow> getFlowManageDetailFromInfluxDB (TerminalMainQueryParam param) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("time >= '").append(DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime()))).append("' and ").append("time <= '").append(DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))).append("' and ");
stringBuilder.append("dev_id ='").append(param.getDevId()).append("'");
String sql = "select * from " + InfluxDBPublicParam.PQS_ACTUAL_FLOW + " where " + stringBuilder.toString() + InfluxDBPublicParam.TIME_ZONE;
QueryResult result = influxDbUtils.query(sql);
InfluxDBResultMapper influxDBResultMapper = new InfluxDBResultMapper();
List<DeviceDayFlow> deviceDayFlow = influxDBResultMapper.toPOJO(result, DeviceDayFlow.class);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// Instant time = deviceDayFlow.get(0).getTime();
// System.out.println(time);
// Date from = Date.from(time);
// System.out.println(from);
deviceDayFlow.forEach(t-> t.setDate(formatter.format(Date.from(t.getTime()))));
Map<String, List<DeviceDayFlow>> dayFlowMap = deviceDayFlow.stream().collect(Collectors.groupingBy(DeviceDayFlow::getDate));
List<DeviceDayFlow> list = new ArrayList<>();
for (Map.Entry<String, List<DeviceDayFlow>> entry : dayFlowMap.entrySet()) {
DeviceDayFlow dayFlow = new DeviceDayFlow();
dayFlow.setDevId(entry.getValue().get(0).getDevId());
BigDecimal bigDecimal = new BigDecimal((float) entry.getValue().stream().mapToInt(DeviceDayFlow::getActualValue).sum() / (float)1024 /(float) 1024);
dayFlow.setDailyActualValue(bigDecimal.setScale(2, BigDecimal.ROUND_HALF_UP).floatValue());
dayFlow.setDate(entry.getKey());
list.add(dayFlow);
}
list = list.stream().sorted(Comparator.comparing(DeviceDayFlow::getDate)).collect(Collectors.toList());
return list;
}
private List<TerminalMaintainVO> getChildren(String id,List<TerminalMaintainVO> all){