diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EnergyBaseParam.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EnergyBaseParam.java new file mode 100644 index 0000000..bc710e7 --- /dev/null +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/param/EnergyBaseParam.java @@ -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; + + +} diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EnergyTemplateVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EnergyTemplateVO.java index d5f1ce6..900c64c 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EnergyTemplateVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/EnergyTemplateVO.java @@ -43,4 +43,11 @@ public class EnergyTemplateVO { @ApiModelProperty("数据") private Double dataValue; + + @ApiModelProperty("最大值") + private Double maxValue; + + @ApiModelProperty("最小值") + private Double minValue; + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java index cb8097e..b95c9a5 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/controller/equipment/CsGroupController.java @@ -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.response.HttpResult; 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.DataGroupTemplateVO; import com.njcn.csdevice.service.ICsGroupService; @@ -17,10 +18,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -66,5 +64,15 @@ public class CsGroupController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/deviceHistoryData") + @ApiOperation("装置分组历史数据") + @ApiImplicitParam(name = "energyBaseParam",required = true) + public HttpResult> getDeviceHistoryData(@RequestBody EnergyBaseParam energyBaseParam){ + String methodDescribe = getMethodDescribe("getDeviceHistoryData"); + IPage list = csGroupService.getDeviceHistoryData(energyBaseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); + } + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java index 00061ae..57a8e6e 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/ICsGroupService.java @@ -2,6 +2,7 @@ package com.njcn.csdevice.service; import com.baomidou.mybatisplus.core.metadata.IPage; 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.vo.CsGroupVO; import com.njcn.csdevice.pojo.vo.DataGroupTemplateVO; @@ -30,4 +31,10 @@ public interface ICsGroupService extends IService { */ IPage getDeviceRtData(String id, Integer pageNum, Integer pageSize, String lineId); + /** + * 获取装置时间范围内的历史数据 + * @return + */ + IPage getDeviceHistoryData(EnergyBaseParam energyBaseParam); + } diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java index 2d6ea65..bcf0ac3 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/service/impl/CsGroupServiceImpl.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.csdevice.mapper.CsDataArrayMapper; 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.CsGroArr; import com.njcn.csdevice.pojo.po.CsGroup; @@ -25,6 +26,8 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -89,7 +92,7 @@ public class CsGroupServiceImpl extends ServiceImpl impl StatisticalDataDTO statisticalDataDTO = commonService.getLineRtData(lineId,eleEpdPqd.getClassId(),item.getName(),item.getPhase(),item.getStatMethod()); if (!Objects.isNull(statisticalDataDTO)){ vo.setTime(statisticalDataDTO.getTime()); - vo.setDataValue(statisticalDataDTO.getValue()); + vo.setDataValue(BigDecimal.valueOf(statisticalDataDTO.getValue()).setScale(4, RoundingMode.UP).doubleValue()); } else { vo.setDataValue(3.1415926); } @@ -113,6 +116,49 @@ public class CsGroupServiceImpl extends ServiceImpl impl return pageTurn; } + @Override + public IPage getDeviceHistoryData(EnergyBaseParam energyBaseParam) { + IPage pageTurn = new Page<>(); + List arrayList = new ArrayList<>(); + IPage pageRes = csGroupMapper.getGroupDataList(new Page<>(energyBaseParam.getPageNum(), energyBaseParam.getPageSize()), energyBaseParam.getId()); + if (pageRes.getTotal() != 0) { + List groupList = pageRes.getRecords(); + List group = groupList.stream().map(DataGroupTemplateVO::getId).collect(Collectors.toList()); + //获取当前组的所有指标项 + List 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 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 getChildren(String tabId, List all) { return all.stream().filter(item -> item.getPid().equals(tabId)).collect(Collectors.toList()); }