|
@@ -0,0 +1,355 @@
|
|
|
+package com.huaxu.service.impl;
|
|
|
+
|
|
|
+import com.huaxu.client.UserCenterClient;
|
|
|
+import com.huaxu.dao.HomePageReportMapper;
|
|
|
+import com.huaxu.dao.MonitorDataReportMapper;
|
|
|
+import com.huaxu.dto.generalView.DeviceWaterDetail;
|
|
|
+import com.huaxu.dto.generalView.DeviceWaterSupply;
|
|
|
+import com.huaxu.dto.generalView.WaterSupplyChart;
|
|
|
+import com.huaxu.dto.generalView.WaterSupplyData;
|
|
|
+import com.huaxu.dto.homePage.CompanyCount;
|
|
|
+import com.huaxu.dto.homePage.CompanyProduce;
|
|
|
+import com.huaxu.dto.homePage.WaterQualityRate;
|
|
|
+import com.huaxu.dto.homePage.WaterQualityRateForScene;
|
|
|
+import com.huaxu.entity.MonitorDataEntity;
|
|
|
+import com.huaxu.entity.MonitorDataValueEntity;
|
|
|
+import com.huaxu.model.LoginUser;
|
|
|
+import com.huaxu.service.HomePageReportService;
|
|
|
+import com.huaxu.service.MonitorDataReportService;
|
|
|
+import com.huaxu.util.UserUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.temporal.TemporalAdjusters;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @description
|
|
|
+ * @auto wangli
|
|
|
+ * @data 2021/2/24 10:42
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class HomePageReportServiceImpl implements HomePageReportService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private HomePageReportMapper homePageReportMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private UserCenterClient userCenterClient;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private MonitorDataReportMapper monitorDataReportMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MonitorDataReportService MonitorDataReportService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DeviceWaterSupply> deviceWaterReportForSixMonth(Integer companyOrgId,String sceneType, Integer parmType) {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ String tenantId = loginUser.getTenantId();
|
|
|
+ List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getDeviceWaterForSixMonth(companyOrgId,sceneType,parmType ,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
+
|
|
|
+ for (int i = 0; i < 6; i++) {
|
|
|
+ LocalDate newLocalDate = localDate.plusMonths(-i - 1);
|
|
|
+ if (i == deviceWaterSupplies.size()
|
|
|
+ || newLocalDate.getMonthValue() != deviceWaterSupplies.get(i).getMonth().intValue()
|
|
|
+ || newLocalDate.getYear() != deviceWaterSupplies.get(i).getYear().intValue()) {
|
|
|
+
|
|
|
+ DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
|
|
|
+ deviceWaterSupply.setOrderNo(i + 1);
|
|
|
+ deviceWaterSupply.setAmount(BigDecimal.ZERO);
|
|
|
+ deviceWaterSupply.setYear(newLocalDate.getYear());
|
|
|
+ deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
|
|
|
+ deviceWaterSupply.setDate(newLocalDate);
|
|
|
+ deviceWaterSupply.setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
|
|
|
+ deviceWaterSupplies.add(i, deviceWaterSupply);
|
|
|
+ } else {
|
|
|
+ deviceWaterSupplies.get(i).setOrderNo(i + 1);
|
|
|
+ deviceWaterSupplies.get(i).setDate(newLocalDate);
|
|
|
+ deviceWaterSupplies.get(i).setDateLabel(newLocalDate.getYear()+"-"+newLocalDate.getMonthValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
|
|
|
+ return deviceWaterSupplies;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CompanyCount countSceneByType(Integer companyOrgId) {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ CompanyCount companyCount = homePageReportMapper.countSceneByType(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ Integer company = userCenterClient.countCompanyByUser();
|
|
|
+ companyCount.setCompany(company != null ? company:0);
|
|
|
+ return companyCount;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public CompanyProduce deviceWaterAmount(Integer companyOrgId) {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ String tenantId = loginUser.getTenantId();
|
|
|
+ Map<Integer, MonitorDataEntity> MonitorDataMap = MonitorDataReportService.getIntegerMonitorDataEntityMap(loginUser);
|
|
|
+
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
+
|
|
|
+ CompanyProduce companyProduce = homePageReportMapper.getWaterSalesDetails(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ if(companyProduce == null ){
|
|
|
+ companyProduce = new CompanyProduce();
|
|
|
+ }
|
|
|
+ BigDecimal waterSupplyAmountForDay = BigDecimal.ZERO;
|
|
|
+ BigDecimal waterIntakeAmountForDay = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ //3供水 4取水
|
|
|
+ List<DeviceWaterDetail> deviceSupplyWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(companyOrgId,"水厂", 3, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ List<DeviceWaterDetail> deviceIntakeWaterDetailsForDay = monitorDataReportMapper.getDeviceWaterDetailForDay(companyOrgId,"水源", 4, tenantId, localDate.plusDays(-1).getYear(), localDate.plusDays(-1).getMonthValue(), localDate.plusDays(-1).getDayOfMonth(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ //水厂获取实时流量并计算出当天流量
|
|
|
+ for (DeviceWaterDetail deviceWaterDetail : deviceSupplyWaterDetailsForDay) {
|
|
|
+ MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
|
|
|
+ if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
|
|
|
+ && deviceWaterDetail != null && deviceWaterDetail.getLatestValue() != null) {
|
|
|
+ for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
|
|
|
+ if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
|
|
|
+ //累计当天流量
|
|
|
+ waterSupplyAmountForDay = waterSupplyAmountForDay.add(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //水源获取实时流量并计算出当天流量
|
|
|
+ for (DeviceWaterDetail deviceWaterDetail : deviceIntakeWaterDetailsForDay) {
|
|
|
+ MonitorDataEntity monitorDataEntity = MonitorDataMap.get(deviceWaterDetail.getDeviceId());
|
|
|
+ if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0
|
|
|
+ && deviceWaterDetail != null && deviceWaterDetail.getLatestValue() != null) {
|
|
|
+ for (MonitorDataValueEntity monitorDataValueEntity : monitorDataEntity.getDataValues()) {
|
|
|
+ if (monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId())) {
|
|
|
+ //累计当天流量
|
|
|
+ waterIntakeAmountForDay = waterIntakeAmountForDay.add(new BigDecimal(monitorDataValueEntity.getDataValue()).subtract(deviceWaterDetail.getLatestValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal waterSupplyAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(companyOrgId,"水厂", 3, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ if (waterSupplyAmountForMonth == null) {
|
|
|
+ waterSupplyAmountForMonth = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ //水厂当月流量
|
|
|
+ companyProduce.setWaterSupply(
|
|
|
+ (waterSupplyAmountForMonth.add(waterSupplyAmountForDay)).divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ BigDecimal waterIntakeAmountForMonth = monitorDataReportMapper.getDeviceWaterDetailForMonth(companyOrgId,"水源", 4, tenantId, localDate.getYear(), localDate.getMonthValue(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ if (waterIntakeAmountForMonth == null) {
|
|
|
+ waterIntakeAmountForMonth = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ //水源当月流量
|
|
|
+ companyProduce.setWaterIntake(
|
|
|
+ (waterIntakeAmountForMonth.add(waterIntakeAmountForDay)).divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ return companyProduce;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public WaterQualityRate getWaterQualification(Integer companyOrgId) {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ WaterQualityRate waterQualityRate = new WaterQualityRate();
|
|
|
+ //管网水质
|
|
|
+ WaterQualityRate pipeNetworkQuality = homePageReportMapper.getPipeNetworkQualification(companyOrgId,loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //水源水质
|
|
|
+ WaterQualityRate waterSourceQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水源",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //水厂水质
|
|
|
+ WaterQualityRate waterFactoryQuality = homePageReportMapper.getWaterQualification(companyOrgId,"水厂",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //二供水质
|
|
|
+ WaterQualityRate pumpingStationQuality = homePageReportMapper.getWaterQualification(companyOrgId,"泵站",loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ if(pipeNetworkQuality != null){
|
|
|
+ waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+pipeNetworkQuality.getAbnormal());
|
|
|
+ waterQualityRate.setPipeNetworkQuality(pipeNetworkQuality.getAverageQuality());
|
|
|
+ waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(pipeNetworkQuality.getAverageQuality()));
|
|
|
+ }
|
|
|
+ if(waterSourceQuality != null){
|
|
|
+ waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+waterSourceQuality.getAbnormal());
|
|
|
+ waterQualityRate.setWaterSourceQuality(waterSourceQuality.getAverageQuality());
|
|
|
+ waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(waterSourceQuality.getAverageQuality()));
|
|
|
+ }
|
|
|
+ if(waterFactoryQuality != null){
|
|
|
+ waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+waterFactoryQuality.getAbnormal());
|
|
|
+ waterQualityRate.setWaterFactoryQuality(waterFactoryQuality.getAverageQuality());
|
|
|
+ waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(waterFactoryQuality.getAverageQuality()));
|
|
|
+ }
|
|
|
+ if(pumpingStationQuality != null){
|
|
|
+ waterQualityRate.setAbnormal(waterQualityRate.getAbnormal()+pumpingStationQuality.getAbnormal());
|
|
|
+ waterQualityRate.setPumpingStationQuality(pumpingStationQuality.getAverageQuality());
|
|
|
+ waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().add(pumpingStationQuality.getAverageQuality()));
|
|
|
+ }
|
|
|
+ waterQualityRate.setAverageQuality(waterQualityRate.getAverageQuality().divide(new BigDecimal("4"),3,BigDecimal.ROUND_HALF_UP));
|
|
|
+
|
|
|
+ return waterQualityRate;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 水厂 3 水源 4 水位 12
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<DeviceWaterSupply> monitorDataFifteenDays(Integer sceneId, String sceneType, Integer parmType) {
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+
|
|
|
+ List<DeviceWaterSupply> deviceWaterSupplies = homePageReportMapper.getMonitorDataFifteenDays( sceneId, sceneType, parmType,
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ LocalDate localDate = LocalDate.now();
|
|
|
+ for (int i = 0; i < 15; i++) {
|
|
|
+ LocalDate newLocalDate = localDate.plusDays(-i - 1);
|
|
|
+ if (i == deviceWaterSupplies.size()
|
|
|
+ || !newLocalDate.isEqual(LocalDate.of(deviceWaterSupplies.get(i).getYear(),
|
|
|
+ deviceWaterSupplies.get(i).getMonth(),
|
|
|
+ deviceWaterSupplies.get(i).getDay()))) {
|
|
|
+
|
|
|
+ DeviceWaterSupply deviceWaterSupply = new DeviceWaterSupply();
|
|
|
+ deviceWaterSupply.setOrderNo(i + 1);
|
|
|
+ deviceWaterSupply.setAmount(BigDecimal.ZERO);
|
|
|
+ deviceWaterSupply.setYear(newLocalDate.getYear());
|
|
|
+ deviceWaterSupply.setMonth(newLocalDate.getMonthValue());
|
|
|
+ deviceWaterSupply.setDay(newLocalDate.getDayOfMonth());
|
|
|
+ deviceWaterSupply.setDate(newLocalDate);
|
|
|
+ deviceWaterSupplies.add(i, deviceWaterSupply);
|
|
|
+ } else {
|
|
|
+ deviceWaterSupplies.get(i).setOrderNo(i + 1);
|
|
|
+ deviceWaterSupplies.get(i).setDate(newLocalDate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ deviceWaterSupplies.sort(Comparator.comparing(DeviceWaterSupply::getOrderNo).reversed());
|
|
|
+
|
|
|
+ return deviceWaterSupplies;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public WaterQualityRateForScene waterQualityRateForWaterSource(Integer sceneId) {
|
|
|
+
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ //余氯
|
|
|
+ BigDecimal chlorine = homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水源",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //浊度
|
|
|
+ BigDecimal turbidity = homePageReportMapper.getWaterQualificationForScene(9,sceneId,"水源",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //PH
|
|
|
+ BigDecimal ph = homePageReportMapper.getWaterQualificationForScene(7,sceneId,"水源",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //压力
|
|
|
+ BigDecimal pressure = homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水源",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
|
|
|
+ waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
|
|
|
+ return waterQualityRateForScene;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public WaterQualityRateForScene waterQualityRateForPumpingStation(Integer sceneId) {
|
|
|
+
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ //余氯
|
|
|
+ BigDecimal chlorine = homePageReportMapper.getWaterQualificationForScene(11,sceneId,"泵站",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //浊度
|
|
|
+ BigDecimal turbidity = homePageReportMapper.getWaterQualificationForScene(10,sceneId,"泵站",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //PH
|
|
|
+ BigDecimal ph = homePageReportMapper.getWaterQualificationForScene(8,sceneId,"泵站",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //压力
|
|
|
+ BigDecimal pressure = homePageReportMapper.getWaterQualificationForScene(13,sceneId,"泵站",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
|
|
|
+ waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
|
|
|
+ return waterQualityRateForScene;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public WaterQualityRateForScene waterQualityRateForWaterFactory(Integer sceneId) {
|
|
|
+
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ //余氯
|
|
|
+ BigDecimal chlorine = homePageReportMapper.getWaterQualificationForScene(11,sceneId,"水厂",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //浊度
|
|
|
+ BigDecimal turbidity = homePageReportMapper.getWaterQualificationForScene(10,sceneId,"水厂",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //PH
|
|
|
+ BigDecimal ph = homePageReportMapper.getWaterQualificationForScene(8,sceneId,"水厂",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ //压力
|
|
|
+ BigDecimal pressure = homePageReportMapper.getWaterQualificationForScene(13,sceneId,"水厂",
|
|
|
+ loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+
|
|
|
+ WaterQualityRateForScene waterQualityRateForScene = new WaterQualityRateForScene();
|
|
|
+ waterQualityRateForScene.setChlorine(chlorine!=null?chlorine:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setTurbidity(turbidity!=null?turbidity:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPh(ph!=null?ph:BigDecimal.ZERO);
|
|
|
+ waterQualityRateForScene.setPressure(pressure!=null?pressure:BigDecimal.ZERO);
|
|
|
+ return waterQualityRateForScene;
|
|
|
+ }
|
|
|
+ //水厂制水、药耗、电耗对比曲线
|
|
|
+ @Override
|
|
|
+ public List<WaterSupplyChart> waterEnergyConsumption( Integer sceneId,String sceneType) {
|
|
|
+
|
|
|
+ LoginUser loginUser = UserUtil.getCurrentUser();
|
|
|
+ String tenantId = loginUser.getTenantId();
|
|
|
+
|
|
|
+ List<WaterSupplyData> waterSupplyDatas = homePageReportMapper.getWaterSupplyData(sceneId,sceneType,tenantId,loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
|
|
|
+ List<WaterSupplyChart> waterSupplyCharts = new ArrayList<>();
|
|
|
+ waterSupplyDatas.stream()
|
|
|
+ .collect(Collectors.groupingBy(item -> item.getYear() + "-" + item.getMonth() + "-" + item.getDay()))
|
|
|
+ .forEach((key, value) -> {
|
|
|
+ WaterSupplyChart waterSupplyChart = new WaterSupplyChart();
|
|
|
+ waterSupplyChart.setDate(key);
|
|
|
+ value.stream().forEach(waterSupplyData -> {
|
|
|
+ waterSupplyChart.setSort(waterSupplyData.getDay());
|
|
|
+
|
|
|
+ if (waterSupplyData.getParmType() == 3) { //供水
|
|
|
+ waterSupplyChart.setWaterData(waterSupplyData.getAmount().divide(new BigDecimal("10000"),3,BigDecimal.ROUND_HALF_UP));
|
|
|
+ } else if (waterSupplyData.getParmType() == 5) {//电耗
|
|
|
+ waterSupplyChart.setPowerData(waterSupplyData.getAmount().divide(new BigDecimal("1000"),3,BigDecimal.ROUND_HALF_UP));
|
|
|
+ } else if (waterSupplyData.getParmType() == 6) {//药耗
|
|
|
+ waterSupplyChart.setDrugData(waterSupplyData.getAmount());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ waterSupplyCharts.add(waterSupplyChart);
|
|
|
+ });
|
|
|
+
|
|
|
+ waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort));
|
|
|
+
|
|
|
+ Integer maxDay = LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()).getDayOfMonth();
|
|
|
+ for(int i=0;i<maxDay;i++){
|
|
|
+
|
|
|
+ if(i == waterSupplyCharts.size() || !waterSupplyCharts.get(i).getSort().equals(i+1)){
|
|
|
+ waterSupplyCharts.add(i,new WaterSupplyChart(i+1, LocalDate.now().getYear()+"-"+LocalDate.now().getMonthValue()+"-"+(i+1)));
|
|
|
+ }
|
|
|
+ }
|
|
|
+// waterSupplyCharts.sort(Comparator.comparing(WaterSupplyChart::getSort).reversed());
|
|
|
+ return waterSupplyCharts;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|