yangjunfeng 9 months ago
parent
commit
bd6d1011b1
19 changed files with 225 additions and 76 deletions
  1. 1 1
      lysw-dc/src/main/resources/bootstrap.yml
  2. 40 29
      lysw-gis/src/main/java/com/tofly/xrtygis/custom/controller/TheOnlineCheckController.java
  3. 3 0
      lysw-gis/src/main/java/com/tofly/xrtygis/custom/entity/dto/ScadaDataDto.java
  4. 5 0
      lysw-gis/src/main/java/com/tofly/xrtygis/custom/entity/dto/WisdomDisplayDto.java
  5. 34 20
      lysw-gis/src/main/java/com/tofly/xrtygis/custom/service/dma/impl/CustomDmaScadaServiceImpl.java
  6. 2 0
      lysw-gis/src/main/java/com/tofly/xrtygis/custom/service/impl/CustomDisplayServiceImpl.java
  7. 6 0
      lysw-gis/src/main/java/com/tofly/xrtygis/entity/DmaStatistical.java
  8. 56 7
      lysw-gis/src/main/java/com/tofly/xrtygis/service/impl/IndicatorCorrectionServiceImpl.java
  9. 1 1
      lysw-gis/src/main/resources/bootstrap.yml
  10. 2 0
      lysw-gis/src/main/resources/mapper/common/DmaStatisticalMapper.xml
  11. 1 1
      lysw-gis/src/main/resources/mapper/common/DmaregionMapper.xml
  12. 21 10
      lysw-gis/src/main/resources/mapper/custom/CustomDisplayMapper.xml
  13. 3 0
      lysw-gis/src/main/resources/mapper/custom/CustomDmaScadaMapper.xml
  14. 12 4
      lysw-scada/src/main/java/com/tofly/water/controller/OverviewController.java
  15. 2 0
      lysw-scada/src/main/java/com/tofly/water/mapper/OverviewMapper.java
  16. 2 0
      lysw-scada/src/main/java/com/tofly/water/service/OverviewService.java
  17. 20 2
      lysw-scada/src/main/java/com/tofly/water/service/impl/OverviewServiceImpl.java
  18. 1 1
      lysw-scada/src/main/resources/bootstrap.yml
  19. 13 0
      lysw-scada/src/main/resources/mapper/water/OverviewMapper.xml

+ 1 - 1
lysw-dc/src/main/resources/bootstrap.yml

@@ -1,3 +1,3 @@
 spring:
   profiles:
-    active: gs
+    active: loc

+ 40 - 29
lysw-gis/src/main/java/com/tofly/xrtygis/custom/controller/TheOnlineCheckController.java

@@ -1,11 +1,8 @@
 package com.tofly.xrtygis.custom.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.tofly.common.core.entity.ResultRespone;
-import com.tofly.common.core.util.StringUtil;
-import com.tofly.common.oauth.exception.ToflyDeniedException;
 import com.tofly.xrtygis.commons.Constant;
 import com.tofly.xrtygis.custom.entity.dto.TablelinkUserDto;
 import com.tofly.xrtygis.custom.entity.dto.TablelinkpipeDto;
@@ -17,7 +14,6 @@ import com.tofly.xrtygis.entity.Watermeter;
 import com.tofly.xrtygis.entity.vo.ChargeDetailInfoVo;
 import com.tofly.xrtygis.entity.vo.ChargeUserInfoVo;
 import com.tofly.xrtygis.entity.vo.ResultUserWaterMeterInfoVo;
-import com.tofly.xrtygis.entity.vo.UserWaterMeterInfoVo;
 import com.tofly.xrtygis.service.DmaWaterService;
 import com.tofly.xrtygis.service.DmaregionService;
 import com.tofly.xrtygis.service.WatermeterService;
@@ -27,7 +23,6 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.apache.commons.lang.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -75,36 +70,52 @@ public class TheOnlineCheckController {
             @ApiImplicitParam(name = "dmaId", value = "分区id", required = true, dataType = "Long")
     })
     public ResultRespone tableDmaBind(String tableIds, Long dmaId) {
+        List<Long> dmaIds = new ArrayList<>();
+        dmaIds.add(dmaId);
         Dmaregion dmaregion = dmaregionService.getOne(new QueryWrapper<Dmaregion>().lambda().eq(Dmaregion::getId,dmaId));
-        if(dmaregion.getPartitionLevel() == null || dmaregion.getPartitionLevel() == 0){
-            throw new ToflyDeniedException("此分区的分区级别为空或为0");
+        if (dmaregion.getPid() != 0L) {
+            getTopDmaIdList(dmaregion.getPid(), dmaIds);
         }
-        Integer dmaLevel = dmaregion.getPartitionLevel();
-        List<Long> tableIdList = Arrays.stream(tableIds.split(Constant.CSV)).map(s -> Long.parseLong(s.trim())).distinct().collect(Collectors.toList());
-        //判断总表是否在同一分区级别已经绑定其他分区
-        tableIdList.forEach(info -> {
-            List<Integer> dmaLevelList = theOnlineCheckService.getDmaLevelListByTableId(info,dmaId);
-            if(dmaLevelList != null && dmaLevelList.size() != 0){
-                for (Integer one : dmaLevelList) {
-                    if(one.equals(dmaLevel)){
-                        Watermeter watermeter = watermeterService.getOne(new QueryWrapper<Watermeter>().lambda().eq(Watermeter::getId,info));
-                        throw new ToflyDeniedException("编号为" + watermeter.getSid() + "的总表在同一分区级别下已绑定其他分区");
-                    }
-                }
-            }
-        });
-        //解绑
-        dmaWaterService.remove(new QueryWrapper<DmaWater>().lambda().eq(DmaWater::getDmaId, dmaId));
-        //绑定总表
-        tableIdList.forEach(info -> {
-            DmaWater dmaWater = new DmaWater();
-            dmaWater.setDmaId(dmaId);
-            dmaWater.setWaterMeterId(info);
-            dmaWaterService.save(dmaWater);
+        dmaIds.forEach(id -> {
+//            Dmaregion dmaregionFinal = dmaregionService.getOne(new QueryWrapper<Dmaregion>().lambda().eq(Dmaregion::getId,id));
+//            Integer dmaLevel = dmaregionFinal.getPartitionLevel();
+            List<Long> tableIdList = Arrays.stream(tableIds.split(Constant.CSV)).map(s -> Long.parseLong(s.trim())).distinct().collect(Collectors.toList());
+            //判断总表是否在同一分区级别已经绑定其他分区
+//            tableIdList.forEach(info -> {
+//                List<Integer> dmaLevelList = theOnlineCheckService.getDmaLevelListByTableId(info,id);
+//                if(dmaLevelList != null && dmaLevelList.size() != 0){
+//                    for (Integer one : dmaLevelList) {
+//                        if(one.equals(dmaLevel)){
+//                            Watermeter watermeter = watermeterService.getOne(new QueryWrapper<Watermeter>().lambda().eq(Watermeter::getId,info));
+//                            throw new ToflyDeniedException("编号为" + watermeter.getSid() + "的总表在同一分区级别下已绑定其他分区");
+//                        }
+//                    }
+//                }
+//            });
+            //解绑
+            dmaWaterService.remove(new QueryWrapper<DmaWater>().lambda().in(DmaWater::getWaterMeterId, tableIdList));
+            dmaWaterService.remove(new QueryWrapper<DmaWater>().lambda().eq(DmaWater::getDmaId, id));
+            //绑定总表
+            tableIdList.forEach(info -> {
+                DmaWater dmaWater = new DmaWater();
+                dmaWater.setDmaId(id);
+                dmaWater.setWaterMeterId(info);
+                dmaWaterService.save(dmaWater);
+            });
         });
         return ResultRespone.success();
     }
 
+    private void getTopDmaIdList(Long dmaId, List<Long> dmaIdList) {
+        Dmaregion dmaregion = dmaregionService.getById(dmaId);
+        if (dmaregion != null) {
+            dmaIdList.add(dmaregion.getId());
+            if (dmaregion.getPid() != 0L) {
+                getTopDmaIdList(dmaregion.getPid(), dmaIdList);
+            }
+        }
+    }
+
     @GetMapping("/getTableDmaBindList")
     @ApiOperation("查询总表关联/未关联Dma分区信息")
     @ApiImplicitParams({

+ 3 - 0
lysw-gis/src/main/java/com/tofly/xrtygis/custom/entity/dto/ScadaDataDto.java

@@ -21,6 +21,9 @@ public class ScadaDataDto implements Serializable {
     @ApiModelProperty("结束时间(yyyy-MM-dd HH:mm:ss)")
     private String endDate;
 
+    @ApiModelProperty("查询时间(yyyy-MM)")
+    private String queryMonth;
+
     @ApiModelProperty("统计类型(0小时统计;1天统计;2月统计;3年统计)")
     private Integer statisticsType;
 

+ 5 - 0
lysw-gis/src/main/java/com/tofly/xrtygis/custom/entity/dto/WisdomDisplayDto.java

@@ -81,6 +81,8 @@ public class WisdomDisplayDto implements Serializable {
 
     private String censusHour;
 
+    private String dmaIds;
+
     private List<Long> dmaId;
 
     private Long dmaIdOne;
@@ -94,5 +96,8 @@ public class WisdomDisplayDto implements Serializable {
 
     //统计类型,yyyy-MM-dd,yyyy-MM,yyyy-q,yyyy
     private  String fomatterDate;
+    private  Integer queryDateType;
+    private  String leakageStatus;
+    private  String nrwStatus;
 
 }

+ 34 - 20
lysw-gis/src/main/java/com/tofly/xrtygis/custom/service/dma/impl/CustomDmaScadaServiceImpl.java

@@ -457,6 +457,17 @@ public class CustomDmaScadaServiceImpl implements CustomDmaScadaService {
             }
         }
 
+        res.setHandleRate(75.11f);
+        res.setWarnMessageNum(32);
+        res.setLastMonthLeakWater(BigDecimal.valueOf(32211.71));
+        res.setYesterdayLeakRate(15.01f);
+        res.setYesterdayLeakWater(BigDecimal.valueOf(66.754));
+        res.setLastYearYesterdayLeakWater(BigDecimal.valueOf(56.14));
+        res.setLastMonthLeakRate(11.08f);
+        res.setLastYearLastMonthLeakWater(BigDecimal.valueOf(30178.71));
+        res.setLastMonthNrwWater(BigDecimal.valueOf(52.312));
+        res.setLastMonthNrw(14.42f);
+        res.setLastYearLastMonthNrwWater(BigDecimal.valueOf(42167.33));
         return res;
     }
 
@@ -585,9 +596,6 @@ public class CustomDmaScadaServiceImpl implements CustomDmaScadaService {
                         .filter(e -> e.getDeviceId() != null && e.getScadaTime() != null
                                 && deviceListIn.contains(Long.parseLong(String.valueOf(e.getDeviceId()))) && finalDateQuery.equals(String.valueOf(e.getScadaTime())))
                         .collect(Collectors.toList());
-                if (CollUtil.isEmpty(listFinalOut) || CollUtil.isEmpty(listFinalIn)) {
-                    continue;
-                }
                 DmaLeakageVo dmaLeakageVo = new DmaLeakageVo();
                 dmaLeakageVo.setDmaId(info.getId());
                 dmaLeakageVo.setDmaName(info.getDmaName());
@@ -601,23 +609,25 @@ public class CustomDmaScadaServiceImpl implements CustomDmaScadaService {
                 dmaLeakageVo.setLeakUp(info.getLeakUp());
                 dmaLeakageVo.setType(info.getType());
                 dmaLeakageVo.setScadaTime(dateQuery);
-                dmaLeakageVo.setOutWaterMeterInfos(listFinalOut);
-                dmaLeakageVo.setInWaterMeterInfos(listFinalIn);
-                dmaLeakageVo.setOutWaterMeterValue(BigDecimal.valueOf(listFinalOut.stream().mapToDouble(e -> Double.parseDouble(String.valueOf(e.getTableUsage()))).sum()));
-                dmaLeakageVo.setInWaterMeterValue(BigDecimal.valueOf(listFinalIn.stream().mapToDouble(e -> Double.parseDouble(String.valueOf(e.getTableUsage()))).sum()));
-                BigDecimal diff = dmaLeakageVo.getInWaterMeterValue().subtract(dmaLeakageVo.getOutWaterMeterValue());
-                dmaLeakageVo.setDiffValue(diff);
-
-                float leakageRate = 0.0f;
-                if (dmaLeakageVo.getInWaterMeterValue().compareTo(BigDecimal.ZERO) != 0) {
-                    leakageRate = diff.divide(dmaLeakageVo.getInWaterMeterValue(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).floatValue();
-                }
-                dmaLeakageVo.setLeakageRate(leakageRate);
-
                 dmaLeakageVo.setIsLeakageWarn("0");
-                if (leakageRate < info.getLeakDown() || leakageRate > info.getLeakUp()) {
-                    dmaLeakageVo.setIsLeakageWarn("1");
+                dmaLeakageVo.setLeakageRate(0.0f);
+                if (CollUtil.isNotEmpty(listFinalOut) && CollUtil.isNotEmpty(listFinalIn)) {
+                    dmaLeakageVo.setOutWaterMeterInfos(listFinalOut);
+                    dmaLeakageVo.setInWaterMeterInfos(listFinalIn);
+                    dmaLeakageVo.setOutWaterMeterValue(BigDecimal.valueOf(listFinalOut.stream().mapToDouble(e -> Double.parseDouble(String.valueOf(e.getTableUsage()))).sum()));
+                    dmaLeakageVo.setInWaterMeterValue(BigDecimal.valueOf(listFinalIn.stream().mapToDouble(e -> Double.parseDouble(String.valueOf(e.getTableUsage()))).sum()));
+                    BigDecimal diff = dmaLeakageVo.getInWaterMeterValue().subtract(dmaLeakageVo.getOutWaterMeterValue());
+                    dmaLeakageVo.setDiffValue(diff);
+                    float leakageRate = 0.0f;
+                    if (dmaLeakageVo.getInWaterMeterValue().compareTo(BigDecimal.ZERO) != 0) {
+                        leakageRate = diff.divide(dmaLeakageVo.getInWaterMeterValue(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).floatValue();
+                    }
+                    dmaLeakageVo.setLeakageRate(leakageRate);
+                    if (leakageRate < info.getLeakDown() || leakageRate > info.getLeakUp()) {
+                        dmaLeakageVo.setIsLeakageWarn("1");
+                    }
                 }
+
                 if (StringUtils.isNotEmpty(isLeakageWarn) && !isLeakageWarn.equals(dmaLeakageVo.getIsLeakageWarn())) {
                     continue;
                 }
@@ -648,7 +658,7 @@ public class CustomDmaScadaServiceImpl implements CustomDmaScadaService {
                         List<Map<String, Object>> minVals = minNightFlowListGroup.get(k);
                         final BigDecimal[] minVal = {BigDecimal.ZERO};
                         minVals.forEach(minNightFlow -> minVal[0] = minVal[0].add(new BigDecimal(String.valueOf(minNightFlow.get("minVal")))));
-                        if (minValF[0] == null || minValF[0].compareTo(minVal[0]) > 0) {
+                        if (minValF[0].compareTo(BigDecimal.ZERO) == 0 || minValF[0].compareTo(minVal[0]) > 0) {
                             minValF[0] = minVal[0];
                         }
                     });
@@ -666,7 +676,11 @@ public class CustomDmaScadaServiceImpl implements CustomDmaScadaService {
                 res.add(dmaLeakageVo);
             }
         });
-        return res.stream().sorted(Comparator.comparing(DmaLeakageVo::getLeakageRate).reversed()).collect(Collectors.toList());
+        if (CollUtil.isNotEmpty(res)) {
+            return res.stream().sorted(Comparator.comparing(DmaLeakageVo::getLeakageRate).reversed()).collect(Collectors.toList());
+        } else {
+            return null;
+        }
     }
 
     @Override

+ 2 - 0
lysw-gis/src/main/java/com/tofly/xrtygis/custom/service/impl/CustomDisplayServiceImpl.java

@@ -873,6 +873,7 @@ public class CustomDisplayServiceImpl implements CustomDisplayService {
         if(StringUtils.isBlank(type)){
             throw new ToflyDeniedException("类型不能为空");
         }
+        wisdomDisplayDto.setQueryDateType(1);
         switch (type) {
             case "1":
                 wisdomDisplayDto.setFomatterDate("yyyy");
@@ -884,6 +885,7 @@ public class CustomDisplayServiceImpl implements CustomDisplayService {
                 break;
             case "3":
                 wisdomDisplayDto.setFomatterDate("yyyy-mm");
+                wisdomDisplayDto.setQueryDateType(2);
                 // reportFormList = customDisplayMapper.getMonthReportForm(page, wisdomDisplayDto).getRecords();
                 break;
             case "4":

+ 6 - 0
lysw-gis/src/main/java/com/tofly/xrtygis/entity/DmaStatistical.java

@@ -164,4 +164,10 @@ public class DmaStatistical extends Model<DmaStatistical> {
 
     @ApiModelProperty(value = "免费用水量")
     private BigDecimal freeUseVolume;
+
+    @ApiModelProperty(value = "漏损率状态(0正常 1超标)")
+    private String leakageStatus;
+
+    @ApiModelProperty(value = "产销差状态(0正常 1超标)")
+    private String nrwStatus;
 }

+ 56 - 7
lysw-gis/src/main/java/com/tofly/xrtygis/service/impl/IndicatorCorrectionServiceImpl.java

@@ -5,14 +5,16 @@
 package com.tofly.xrtygis.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
-import com.tofly.common.core.util.StringUtil;
-import com.tofly.common.oauth.util.SecurityUtils;
+import com.tofly.xrtygis.custom.entity.dto.ScadaDataDto;
+import com.tofly.xrtygis.custom.entity.vo.DmaSalesAmountVo;
+import com.tofly.xrtygis.custom.entity.vo.ScadaIndexVo;
+import com.tofly.xrtygis.custom.mapper.LscreenMapper;
+import com.tofly.xrtygis.custom.mapper.dma.CustomDmaScadaMapper;
 import com.tofly.xrtygis.custom.util.DateTimeUtil;
 import com.tofly.xrtygis.em.Constant;
+import com.tofly.xrtygis.em.IndexTypeEnum;
 import com.tofly.xrtygis.entity.*;
 import com.tofly.xrtygis.entity.dto.CustomizeDto;
 import com.tofly.xrtygis.entity.vo.DmaCalculatePramVo;
@@ -23,10 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
@@ -51,6 +50,12 @@ public class IndicatorCorrectionServiceImpl extends ServiceImpl<IndicatorCorrect
     private TotalStatisticalService totalStatisticalService;
     @Autowired
     private CustomizeService customizeService;
+    @Autowired
+    private LscreenMapper lscreenMapper;
+    @Autowired
+    private CustomDmaScadaMapper customDmaScadaMapper;
+    @Autowired
+    private DmaandobserService dmaandobserService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -92,6 +97,8 @@ public class IndicatorCorrectionServiceImpl extends ServiceImpl<IndicatorCorrect
         // 巡检效率相关统计
         BigDecimal totalPlanPipeLength = baseMapper.getTotalPlanPipeLength(startDate, endDate);
         BigDecimal planTotalDistanceLength = baseMapper.getPlanTotalDistanceLength(startDate, endDate);
+        List<Dmaandobser> dmaandobserList = dmaandobserService.list(new QueryWrapper<Dmaandobser>().lambda().eq(Dmaandobser::getIsout, "0"));
+        List<Dmaregion> dmaregionList = dmaregionService.list();
         dmaIdList.forEach(dmaId -> {
             DmaStatistical vo = new DmaStatistical();
             // 计算修正前漏损率
@@ -126,10 +133,25 @@ public class IndicatorCorrectionServiceImpl extends ServiceImpl<IndicatorCorrect
             // 产销差(%)=【(总供水量-计费计量用水量-计费未计量用水量)/总供水量】×100
             BigDecimal poorProductionRate = BigDecimal.ZERO;
             BigDecimal leakageRate = BigDecimal.ZERO;
+            vo.setLeakageStatus("0");
+            vo.setNrwStatus("0");
             if (BigDecimal.ZERO.compareTo(gsl) != 0) {
                 leakageRate = gsl.subtract(zcysl).divide(gsl, 4, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
 
                 poorProductionRate = gsl.subtract(userWater).subtract(notMeasureVolume).divide(gsl, 4, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100));
+                Dmaregion dmaregion = dmaregionList.stream().filter(e -> e.getId().equals(dmaId)).collect(Collectors.toList()).get(0);
+                if (dmaregion.getLeakUp() != null
+                        && dmaregion.getLeakDown() != null
+                        && (dmaregion.getLeakUp().compareTo(leakageRate.floatValue()) < 0
+                        || dmaregion.getLeakDown().compareTo(leakageRate.floatValue()) > 0)) {
+                    vo.setLeakageStatus("1");
+                }
+                if (dmaregion.getMaxDiff() != null
+                        && dmaregion.getMinDiff() != null
+                        && (dmaregion.getMaxDiff().compareTo(poorProductionRate.floatValue()) < 0
+                        || dmaregion.getMinDiff().compareTo(poorProductionRate.floatValue()) > 0)) {
+                    vo.setNrwStatus("1");
+                }
             }
             // DMA分区的 DN75(含)以上管道长度 总长 km
             BigDecimal dnLengthVal = dnLengthMap.get(dmaId) == null ? BigDecimal.ZERO : dnLengthMap.get(dmaId);
@@ -167,6 +189,33 @@ public class IndicatorCorrectionServiceImpl extends ServiceImpl<IndicatorCorrect
             vo.setLeakageVal(leakageVal);
             vo.setDnLengthVal(dnLengthVal);
             vo.setYearPressureVal(yearPressureVal);
+
+            List<DmaSalesAmountVo> dmaSalesAmountVoList = lscreenMapper.getDmaSalesAmountReport(dmaId, yearMonth, yearMonth);
+            if (CollUtil.isNotEmpty(dmaSalesAmountVoList)) {
+                vo.setCitizenUseVolume(dmaSalesAmountVoList.get(0).getAmountJm());
+                vo.setBusinessUseVolume(dmaSalesAmountVoList.get(0).getAmountFj());
+                vo.setSpecialUseVolume(dmaSalesAmountVoList.get(0).getAmountTs());
+            }
+            // 计算年取水栓消防栓用水量(m³)
+            ScadaDataDto dto = new ScadaDataDto();
+            List<String> deviceTypeList = new ArrayList<>();
+            deviceTypeList.add("6");
+            deviceTypeList.add("7");
+            dto.setDeviceTypeList(deviceTypeList);
+            dto.setTableType(2);
+            dto.setTableName("STATISTICS_SCADA");
+            dto.setStatisticsType(1);
+            dto.setIndexType(IndexTypeEnum.CUM_NET_FLOW.getIndexType());
+            dto.setQueryMonth(yearMonth);
+            List<Dmaandobser> dmaandobserListFinal = dmaandobserList.stream().filter(e -> e.getDmaId().equals(dmaId)).collect(Collectors.toList());
+            if (CollUtil.isNotEmpty(dmaandobserListFinal)) {
+                dto.setDeviceIdList(dmaandobserListFinal.stream().map(Dmaandobser::getTableId).collect(Collectors.toList()));
+                List<ScadaIndexVo> waterFireScadaList = customDmaScadaMapper.viewScadaDataGroupTime(dto);
+                if (CollUtil.isNotEmpty(waterFireScadaList)) {
+                    vo.setFreeUseVolume(BigDecimal.valueOf(waterFireScadaList.stream().mapToDouble(s -> Double.parseDouble(s.getIndexValue())).sum()));
+                }
+            }
+
             dmaStatisticalMap.put(dmaId, vo);
         });
         // 对应DMA分区 统计时间 相同 则更新 其余为新增

+ 1 - 1
lysw-gis/src/main/resources/bootstrap.yml

@@ -1,3 +1,3 @@
 spring:
   profiles:
-    active: loc
+    active: gs

+ 2 - 0
lysw-gis/src/main/resources/mapper/common/DmaStatisticalMapper.xml

@@ -37,6 +37,8 @@
         <result property="businessUseVolume" column="BUSINESS_USE_VOLUME"/>
         <result property="specialUseVolume" column="SPECIAL_USE_VOLUME"/>
         <result property="freeUseVolume" column="FREE_USE_VOLUME"/>
+        <result property="leakageStatus" column="LEAKAGE_STATUS"/>
+        <result property="nrwStatus" column="NRW_STATUS"/>
     </resultMap>
 
 

+ 1 - 1
lysw-gis/src/main/resources/mapper/common/DmaregionMapper.xml

@@ -98,7 +98,7 @@
         FROM TF_DMA_STATISTICAL
         WHERE
             DMA_ID = #{id}
-            AND TO_CHAR(STATISTICAL_DATE, 'yyyy-MM') = TO_CHAR(SYSDATE, 'yyyy-MM')
+            AND TO_CHAR(STATISTICAL_DATE, 'YYYY-MM') = TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM')
     </select>
 
     <select id="getDmaregionother" resultType="com.tofly.xrtygis.entity.TfYwpnDmaregionotherW">

+ 21 - 10
lysw-gis/src/main/resources/mapper/custom/CustomDisplayMapper.xml

@@ -658,8 +658,6 @@
         ORDER BY to_char(a.STATISTICAL_DATE, 'yyyy') DESC
     </select>
 
-
-
     <select id="getReportFormComm" resultType="map">
         select  to_char(a.STATISTICAL_DATE,'${dto.fomatterDate}') STATISTICAL_DATE,
                 a.DMA_ID,
@@ -671,6 +669,12 @@
                 (select LEAK_UP from TF_YWPN_DMAREGION_W where ID = a.DMA_ID) LEAK_UP,
                 SUM( a.WATER_SUPPLY ) WATER_SUPPLY,
                 SUM(a.BILLING_WATER_VOLUME) BILLING_WATER_VOLUME,
+                <choose>
+                    <when test="dto.queryDateType == 2">
+                        case WHEN(NVL(COUNT(*), 0)) != 0 THEN round(SUM( a.LEAKAGE_STATUS ) / COUNT(*),2) ELSE 0 END LEAKAGE_STATUS,
+                        case WHEN(NVL(COUNT(*), 0)) != 0 THEN round(SUM( a.NRW_STATUS ) / COUNT(*),2) ELSE 0 END NRW_STATUS,
+                    </when>
+                </choose>
                 (SUM(a.WATER_SUPPLY)- SUM(a.BILLING_WATER_VOLUME)) POOR_PRODUCTION_WATER,
                 case WHEN(NVL(COUNT(*), 0)) != 0 THEN round(SUM( a.POOR_PRODUCTION_RATE ) / COUNT(*),2) ELSE 0 END POOR_PRODUCTION_RATE,
                 (SUM(a.BILLING_WATER_VOLUME)+SUM(a.FREE_WATER_VOLUME)) USER_REGISTER_WATER,
@@ -683,22 +687,22 @@
                 SUM( a.BUSINESS_USE_VOLUME ) BUSINESS_USE_VOLUME,
                 SUM( a.SPECIAL_USE_VOLUME ) SPECIAL_USE_VOLUME,
                 SUM( a.FREE_USE_VOLUME ) FREE_USE_VOLUME,
+                SUM( a.LEAKAGE_OVER_VAL ) LEAKAGE_OVER_VAL,
+                SUM( a.LEAKAGE_VAL ) LEAKAGE_VAL,
                 case WHEN(NVL(COUNT(*), 0)) != 0 THEN round(SUM( (c.JMCB_XZZ+c.DWGS_XZZ+c.NPJYL_XZZ+c.ZDDTSD_XZZ) ) / COUNT(*),2) ELSE 0 END revised,
                 case WHEN(NVL(COUNT(*), 0)) != 0 THEN round(SUM( a.LEAKAGE_RATE-(c.JMCB_XZZ+c.DWGS_XZZ+c.NPJYL_XZZ+c.ZDDTSD_XZZ) ) / COUNT(*),2) ELSE 0 END PRACTICAL_LEAKAGE_RATE,
-                SUM( a.LEAKAGE_OVER_VAL ) LEAKAGE_OVER_VAL,
                 CASE WHEN NVL( COUNT( * ), 0 ) != 0 AND NVL( SUM( a.LEAKAGE_VAL ), 0 ) != 0 THEN round( (SUM( a.LEAKAGE_OVER_VAL ) / SUM( a.LEAKAGE_VAL ) * 100 ) / COUNT( * ), 2 ) ELSE 0 END HANDLE_LEAK_EFF
         from TF_DMA_STATISTICAL a
         LEFT JOIN TF_YWPN_DMAREGION_W b ON a.DMA_ID = b.ID
         LEFT JOIN TF_YWPN_INDICATOR_CORRECTION_W c on a.DMA_ID = c.DMA_ID
         WHERE
-        1 = 1
-        <!--        <if test="dto.ids != null">-->
-        <!--            AND a.ID in-->
-        <!--            <foreach item="item" index="index" collection="dto.ids" separator="," open="(" close=")">-->
-        <!--                #{item}-->
-        <!--            </foreach>-->
-        <!--        </if>-->
+            1 = 1
+        <if test="dto.dmaId != null">
+            AND a.DMA_ID in
+            <foreach item="item" index="index" collection="dto.dmaId" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         <if test="dto.dmaLevel != null">
             AND b.PARTITION_LEVEL in
             <foreach item="item" index="index" collection="dto.dmaLevel" separator="," open="(" close=")">
@@ -711,6 +715,12 @@
         <if test="dto.dmaName != null and dto.dmaName.trim() != ''">
             AND b.DMA_NAME like '%'||#{dto.dmaName}||'%'
         </if>
+        <if test="dto.leakageStatus != null and dto.leakageStatus.trim() != ''">
+            AND a.LEAKAGE_STATUS = #{dto.leakageStatus}
+        </if>
+        <if test="dto.nrwStatus != null and dto.nrwStatus.trim() != ''">
+            AND a.NRW_STATUS = #{dto.nrwStatus}
+        </if>
         <if test="dto.startDate != null and dto.endDate != null">
             AND to_char(a.STATISTICAL_DATE,'${dto.fomatterDate}') between #{dto.startDate} and #{dto.endDate}
         </if>

+ 3 - 0
lysw-gis/src/main/resources/mapper/custom/CustomDmaScadaMapper.xml

@@ -131,6 +131,9 @@
         <if test="startDate != null and endDate != null">
             AND TO_CHAR(a.START_TIME, 'yyyy-mm-dd hh24:mi:ss') BETWEEN #{startDate} AND #{endDate}
         </if>
+        <if test="queryMonth != null">
+            AND TO_CHAR(a.START_TIME, 'yyyy-mm') = #{queryMonth}
+        </if>
         <if test="tableType == 2 and statisticsType != null">
             AND a.STATISTICS_TYPE = #{statisticsType}
         </if>

+ 12 - 4
lysw-scada/src/main/java/com/tofly/water/controller/OverviewController.java

@@ -9,9 +9,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.haiqiu.tools.common.utils.DateUtils;
 import com.tofly.common.core.entity.ResultRespone;
-import com.tofly.common.core.util.Date8Util;
-import com.tofly.common.core.util.DateUtil;
-import com.tofly.common.core.util.StringUtil;
 import com.tofly.common.log.annotation.ToFlyAppLog;
 import com.tofly.scada.service.ScadaService;
 import com.tofly.water.config.CodeSetting;
@@ -33,7 +30,6 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
@@ -402,4 +398,16 @@ public class OverviewController {
         return ResultRespone.success(JSONObject.toJSON(codeSetting));
     }
 
+    @ApiOperation(value = "污水厂进水出水报表-月")
+    @GetMapping("/waterSupplyWsReport")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "startMonth",value = "开始月份yyyyMM",required = false,dataType = "String"),
+            @ApiImplicitParam(name = "endMonth",value = "结束月份yyyyMM",required = false,dataType = "String"),
+    })
+    public ResultRespone waterSupplyWsReport(String startMonth,String endMonth) {
+
+        Object o = overviewService.waterSupplyWsReport(startMonth, endMonth,null,null);
+        return ResultRespone.success(o);
+    }
+
 }

+ 2 - 0
lysw-scada/src/main/java/com/tofly/water/mapper/OverviewMapper.java

@@ -88,4 +88,6 @@ public interface OverviewMapper {
     List<Allocation> selectPumpByIndex(@Param("ids") List<Long> ids,@Param("typeQuery") Integer type);
 
     List<Map<String,String>> waterSupplyOneMonth(@Param("yearAndMonth")String yearAndMonth,@Param("codes")List<String> codes);
+
+    Map<String,Object> waterSupplyCommReport(@Param("yearAndMonth")String yearAndMonth,@Param("formatterStr")String formatterStr,@Param("dateType")Integer dateType, @Param("waterSupplyJin")String waterSupplyJin,@Param("waterSupplyChu")String waterSupplyChu);
 }

+ 2 - 0
lysw-scada/src/main/java/com/tofly/water/service/OverviewService.java

@@ -95,4 +95,6 @@ public interface OverviewService {
 
     List<PupmSupplyVo> pumpSupplyYear();
 
+    Object waterSupplyWsReport(String startDate, String endDate,String waterSupplyJin,String waterSupplyChu);
+
 }

+ 20 - 2
lysw-scada/src/main/java/com/tofly/water/service/impl/OverviewServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.haiqiu.tools.excel.utils.ExcelUtils;
+import com.tofly.common.constant.CalendarHelper;
 import com.tofly.scada.entity.Allocation;
 import com.tofly.scada.entity.Scada;
 import com.tofly.scada.entity.ScadaReport;
@@ -25,7 +26,6 @@ import com.tofly.water.service.BasePumpGroupService;
 import com.tofly.water.service.BasePumpService;
 import com.tofly.water.service.DeviceBusinessService;
 import com.tofly.water.service.OverviewService;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -35,7 +35,6 @@ import org.springframework.util.StringUtils;
 import javax.annotation.Resource;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -630,6 +629,25 @@ public class OverviewServiceImpl implements OverviewService {
         return overviewMapper.pumpSupplyYear();
     }
 
+    @Override
+    public Object waterSupplyWsReport(String startDate, String endDate, String waterSupplyJin, String waterSupplyChu) {
+        String simpleDateFormat="yyyyMM";
+        List<String> listDate= CalendarHelper.getMonthBetweenDate(startDate,endDate,simpleDateFormat);
+        List<Map<String,Object>> list=new ArrayList<>();
+        listDate.forEach(yearAndMonth->{
+            Map<String,Object> map=overviewMapper.waterSupplyCommReport(yearAndMonth,simpleDateFormat,2,waterSupplyJin,waterSupplyChu);
+
+            if(map==null){
+                map=new HashMap<>();
+                map.put("waterChuTotal",0);
+                map.put("waterJinTotal",0);
+            }
+            map.put("month",yearAndMonth);
+            list.add(map);
+        });
+        return list;
+    }
+
     private Collection<? extends StatisticsPumpRealVo> getDataSharding(List<StatisticsPumpRealVo> value, Integer count) {
         List<List<StatisticsPumpRealVo>> lists = subListByCount(value, count);
         List<StatisticsPumpRealVo> finalList = new ArrayList<>();

+ 1 - 1
lysw-scada/src/main/resources/bootstrap.yml

@@ -1,3 +1,3 @@
 spring:
   profiles:
-    active: loc
+    active: gs

+ 13 - 0
lysw-scada/src/main/resources/mapper/water/OverviewMapper.xml

@@ -649,4 +649,17 @@
         group by w.NAME
 
     </select>
+
+    <select id="waterSupplyCommReport" resultType="Map">
+        select  t1.fold as water_Jin_Total, t2.fold as water_Chu_total from
+        (select sum(fold) as fold from STATISTICS_SCADA t1
+        where
+        t1.statistics_type=#{dateType}
+        and to_char(t1.start_time,'${formatterStr}')=#{yearAndMonth}
+        ) t1, (select sum(fold) as fold from STATISTICS_SCADA t1
+        where
+        t1.statistics_type=#{dateType}
+        and to_char(t1.start_time,'${formatterStr}')=#{yearAndMonth}
+        ) t2
+    </select>
 </mapper>