设备历史数据

This commit is contained in:
2023-06-20 10:15:39 +08:00
parent 6dc27f2eda
commit f7640d202c
5 changed files with 118 additions and 5 deletions

View File

@@ -0,0 +1,45 @@
package com.njcn.csdevice.pojo.param;
import com.njcn.web.constant.ValidMessage;
import com.njcn.web.pojo.annotation.DateTimeStrValid;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 类的介绍:
*
* @author xuyang
* @version 1.0.0
* @createTime 2023/6/20
*/
@Data
public class EnergyBaseParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id")
@NotBlank(message = ValidMessage.ID_NOT_BLANK)
private String id;
@ApiModelProperty("lineId")
@NotBlank(message = ValidMessage.ID_NOT_BLANK)
private String lineId;
@ApiModelProperty("pageNum")
private Integer pageNum;
@ApiModelProperty("pageSize")
private Integer pageSize;
@ApiModelProperty("startTime")
@DateTimeStrValid
private String startTime;
@ApiModelProperty("endTime")
@DateTimeStrValid
private String endTime;
}

View File

@@ -43,4 +43,11 @@ public class EnergyTemplateVO {
@ApiModelProperty("数据") @ApiModelProperty("数据")
private Double dataValue; private Double dataValue;
@ApiModelProperty("最大值")
private Double maxValue;
@ApiModelProperty("最小值")
private Double minValue;
} }

View File

@@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil; import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.param.EnergyBaseParam;
import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.CsGroupVO;
import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO;
import com.njcn.csdevice.service.ICsGroupService; import com.njcn.csdevice.service.ICsGroupService;
@@ -17,10 +18,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
@@ -66,5 +64,15 @@ public class CsGroupController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
} }
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/deviceHistoryData")
@ApiOperation("装置分组历史数据")
@ApiImplicitParam(name = "energyBaseParam",required = true)
public HttpResult<IPage<DataGroupTemplateVO>> getDeviceHistoryData(@RequestBody EnergyBaseParam energyBaseParam){
String methodDescribe = getMethodDescribe("getDeviceHistoryData");
IPage<DataGroupTemplateVO> list = csGroupService.getDeviceHistoryData(energyBaseParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
} }

View File

@@ -2,6 +2,7 @@ package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.param.EnergyBaseParam;
import com.njcn.csdevice.pojo.po.CsGroup; import com.njcn.csdevice.pojo.po.CsGroup;
import com.njcn.csdevice.pojo.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.CsGroupVO;
import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO;
@@ -30,4 +31,10 @@ public interface ICsGroupService extends IService<CsGroup> {
*/ */
IPage<DataGroupTemplateVO> getDeviceRtData(String id, Integer pageNum, Integer pageSize, String lineId); IPage<DataGroupTemplateVO> getDeviceRtData(String id, Integer pageNum, Integer pageSize, String lineId);
/**
* 获取装置时间范围内的历史数据
* @return
*/
IPage<DataGroupTemplateVO> getDeviceHistoryData(EnergyBaseParam energyBaseParam);
} }

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.CsDataArrayMapper; import com.njcn.csdevice.mapper.CsDataArrayMapper;
import com.njcn.csdevice.mapper.CsGroupMapper; import com.njcn.csdevice.mapper.CsGroupMapper;
import com.njcn.csdevice.pojo.param.EnergyBaseParam;
import com.njcn.csdevice.pojo.po.CsDataArray; import com.njcn.csdevice.pojo.po.CsDataArray;
import com.njcn.csdevice.pojo.po.CsGroArr; import com.njcn.csdevice.pojo.po.CsGroArr;
import com.njcn.csdevice.pojo.po.CsGroup; import com.njcn.csdevice.pojo.po.CsGroup;
@@ -25,6 +26,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -89,7 +92,7 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,eleEpdPqd.getClassId(),item.getName(),item.getPhase(),item.getStatMethod()); StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,eleEpdPqd.getClassId(),item.getName(),item.getPhase(),item.getStatMethod());
if (!Objects.isNull(statisticalDataDTO)){ if (!Objects.isNull(statisticalDataDTO)){
vo.setTime(statisticalDataDTO.getTime()); vo.setTime(statisticalDataDTO.getTime());
vo.setDataValue(statisticalDataDTO.getValue()); vo.setDataValue(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue());
} else { } else {
vo.setDataValue(3.1415926); vo.setDataValue(3.1415926);
} }
@@ -113,6 +116,49 @@ public class CsGroupServiceImpl extends ServiceImpl<CsGroupMapper, CsGroup> impl
return pageTurn; return pageTurn;
} }
@Override
public IPage<DataGroupTemplateVO> getDeviceHistoryData(EnergyBaseParam energyBaseParam) {
IPage<DataGroupTemplateVO> pageTurn = new Page<>();
List<EnergyTemplateVO> arrayList = new ArrayList<>();
IPage<DataGroupTemplateVO> pageRes = csGroupMapper.getGroupDataList(new Page<>(energyBaseParam.getPageNum(), energyBaseParam.getPageSize()), energyBaseParam.getId());
if (pageRes.getTotal() != 0) {
List<DataGroupTemplateVO> groupList = pageRes.getRecords();
List<String> group = groupList.stream().map(DataGroupTemplateVO::getId).collect(Collectors.toList());
//获取当前组的所有指标项
List<EnergyTemplateVO> list = csDataArrayMapper.getArrayByGroup(group);
list.forEach(item->{
EnergyTemplateVO vo = new EnergyTemplateVO();
BeanUtils.copyProperties(item,vo);
EleEpdPqd eleEpdPqd = epdFeignClient.selectById(item.getDataId()).getData();
vo.setClassId(eleEpdPqd.getClassId());
StatisticalDataDTO statisticalDataDTO = commonService.getLineHistoryData(energyBaseParam.getLineId(),eleEpdPqd.getClassId(),item.getName(),energyBaseParam.getStartTime(),energyBaseParam.getEndTime());
if (!Objects.isNull(statisticalDataDTO)){
vo.setMaxValue(BigDecimal.valueOf(statisticalDataDTO.getMaxValue()).setScale(4, RoundingMode.UP).doubleValue());
vo.setMinValue(BigDecimal.valueOf(statisticalDataDTO.getMinValue()).setScale(4, RoundingMode.UP).doubleValue());
} else {
vo.setMaxValue(3.1415956);
vo.setMinValue(3.1415956);
}
arrayList.add(vo);
});
if (CollectionUtil.isNotEmpty(arrayList)){
List<DataGroupTemplateVO> grList = groupList.stream().peek((item) -> {item.setChildren(getChildren(item.getId(), arrayList));}).collect(Collectors.toList());
pageTurn.setRecords(grList);
pageTurn.setTotal(pageRes.getTotal());
pageTurn.setSize(pageRes.getSize());
pageTurn.setCurrent(pageRes.getCurrent());
pageTurn.setPages(pageRes.getPages());
}
} else {
pageTurn.setRecords(new ArrayList<>());
pageTurn.setTotal(pageRes.getTotal());
pageTurn.setSize(pageRes.getSize());
pageTurn.setCurrent(pageRes.getCurrent());
pageTurn.setPages(pageRes.getPages());
}
return pageTurn;
}
private List<EnergyTemplateVO> getChildren(String tabId, List<EnergyTemplateVO> all) { private List<EnergyTemplateVO> getChildren(String tabId, List<EnergyTemplateVO> all) {
return all.stream().filter(item -> item.getPid().equals(tabId)).collect(Collectors.toList()); return all.stream().filter(item -> item.getPid().equals(tabId)).collect(Collectors.toList());
} }