浏览代码

用能报表

learshaw 4 周之前
父节点
当前提交
c344676aad

+ 46 - 5
ems/ems-cloud/ems-server/src/main/java/com/ruoyi/ems/controller/ElecMeterHController.java

@@ -2,14 +2,17 @@ package com.ruoyi.ems.controller;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.huashe.common.domain.AjaxResult;
+import com.huashe.common.utils.ListUtils;
 import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.page.PageDomain;
 import com.ruoyi.common.core.web.page.TableDataInfo;
+import com.ruoyi.common.core.web.page.TableSupport;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.enums.BusinessType;
 import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.ems.domain.EnergyMeter;
 import com.ruoyi.ems.domain.ElecMeterH;
+import com.ruoyi.ems.domain.EnergyMeter;
 import com.ruoyi.ems.model.QueryMeter;
 import com.ruoyi.ems.service.IBoundaryObjService;
 import com.ruoyi.ems.service.IElecMeterHService;
@@ -128,9 +131,28 @@ public class ElecMeterHController extends BaseController {
      */
     @GetMapping("/hour/listFacsMeter")
     public TableDataInfo listFacsMeter(QueryMeter queryMeter) {
-        startPage();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
         List<ElecMeterH> list = boundaryObjService.getMeterByFacsCategory(queryMeter);
-        return getDataTable(list);
+        int total = list.size();
+        list = ListUtils.subList(list, (pageNum - 1) * pageSize, pageNum * pageSize -1);
+
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(200);
+        rspData.setRows(list);
+        rspData.setMsg("查询成功");
+        rspData.setTotal(total);
+
+        return rspData;
+    }
+
+    @Log(title = "设施用能-小时", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportFacsMeter")
+    public void exportFacsMeter(HttpServletResponse response, QueryMeter queryMeter) {
+        List<ElecMeterH> list = boundaryObjService.getMeterByFacsCategory(queryMeter);
+        ExcelUtil<ElecMeterH> util = new ExcelUtil<>(ElecMeterH.class);
+        util.exportExcel(response, list, "设施用能-小时数据");
     }
 
     /**
@@ -141,9 +163,28 @@ public class ElecMeterHController extends BaseController {
      */
     @GetMapping("/hour/listAreaMeter")
     public TableDataInfo listAreaMeter(QueryMeter queryMeter) {
-        startPage();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
         List<ElecMeterH> list = boundaryObjService.getMeterByArea(queryMeter);
-        return getDataTable(list);
+        int total = list.size();
+        list = ListUtils.subList(list, (pageNum - 1) * pageSize, pageNum * pageSize -1);
+
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(200);
+        rspData.setRows(list);
+        rspData.setMsg("查询成功");
+        rspData.setTotal(total);
+
+        return rspData;
+    }
+
+    @Log(title = "区域用能-小时", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportAreaMeter")
+    public void exportAreaMeter(HttpServletResponse response, QueryMeter queryMeter) {
+        List<ElecMeterH> list = boundaryObjService.getMeterByArea(queryMeter);
+        ExcelUtil<ElecMeterH> util = new ExcelUtil<>(ElecMeterH.class);
+        util.exportExcel(response, list, "区域用能-小时数据");
     }
 
     /**

+ 0 - 4
ems/ems-core/src/main/java/com/ruoyi/ems/domain/ElecMeterH.java

@@ -25,7 +25,6 @@ public class ElecMeterH extends BaseEntity
     private String areaCode;
 
     /** 计量设备 */
-    @Excel(name = "表计编号")
     private String deviceCode;
 
     @Excel(name = "表计名称")
@@ -58,11 +57,9 @@ public class ElecMeterH extends BaseEntity
     private Integer meterType;
 
     /** 计量类型 -1:低谷电 0:平峰电 1:高峰电 2:尖峰电 */
-    @Excel(name = "计量类型")
     private String meterTypeName;
 
     /** 单位电价(1度电) */
-    @Excel(name = "单位电价")
     private Double meterUnitPrice;
 
     /** 小时电费 */
@@ -70,7 +67,6 @@ public class ElecMeterH extends BaseEntity
     private Double useElecCost;
 
     /** 抄表读数 */
-    @Excel(name = "抄表读数")
     private Double meterReading;
 
     public Long getId() {

+ 1 - 3
ems/ems-core/src/main/java/com/ruoyi/ems/model/QueryMeter.java

@@ -24,9 +24,7 @@ import java.util.Set;
  * @see [相关类/方法]
  * @since [产品/模块版本]
  */
-public class QueryMeter extends BaseEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
+public class QueryMeter extends BaseEntity  {
     /**
      * 服务区代码
      */

+ 41 - 34
ems/ems-core/src/main/java/com/ruoyi/ems/service/impl/BoundaryObjServiceImpl.java

@@ -12,18 +12,14 @@ package com.ruoyi.ems.service.impl;
 
 import com.huashe.common.exception.Assert;
 import com.huashe.common.exception.BusinessException;
-import com.ruoyi.ems.core.BaseCache;
 import com.ruoyi.ems.domain.Area;
+import com.ruoyi.ems.domain.ElecMeterH;
 import com.ruoyi.ems.domain.EmsFacs;
 import com.ruoyi.ems.domain.EnergyMeter;
-import com.ruoyi.ems.domain.ElecMeterH;
-import com.ruoyi.ems.domain.FacsCategory;
-import com.ruoyi.ems.domain.FacsSubCategory;
 import com.ruoyi.ems.domain.MeterBoundaryRel;
 import com.ruoyi.ems.enums.MeterObjType;
 import com.ruoyi.ems.model.BoundaryObj;
 import com.ruoyi.ems.model.QueryMeter;
-import com.ruoyi.ems.model.TreeEntity;
 import com.ruoyi.ems.service.IAreaService;
 import com.ruoyi.ems.service.IBoundaryObjService;
 import com.ruoyi.ems.service.IElecMeterHService;
@@ -35,7 +31,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -59,10 +54,6 @@ import java.util.stream.Collectors;
 public class BoundaryObjServiceImpl implements IBoundaryObjService {
     private static final Logger log = LoggerFactory.getLogger(BoundaryObjServiceImpl.class);
 
-    @Qualifier("emsCommonCache")
-    @Autowired
-    private BaseCache emsCommonCache;
-
     // 注入区域服务
     @Autowired
     private IAreaService areaService;
@@ -151,32 +142,48 @@ public class BoundaryObjServiceImpl implements IBoundaryObjService {
     @Override
     public List<ElecMeterH> getMeterByFacsCategory(QueryMeter queryMeter) {
         List<ElecMeterH> result = new ArrayList<>();
-        List<BoundaryObj> bObjs = facsService.getFacsWithMeterDev(queryMeter.getAreaCode(),
-            queryMeter.getFacsCategory(), queryMeter.getFacsSubCategory());
+        List<BoundaryObj> bObjs = null;
+        String objCode = null;
+        String objName = null;
+        Set<String> devCodes = new HashSet<>();
 
-        if (CollectionUtils.isNotEmpty(bObjs)) {
-            Set<String> devCodes = new HashSet<>();
+        if (!StringUtils.equals(queryMeter.getObjCode(), queryMeter.getAreaCode()) && StringUtils.isNotEmpty(
+            queryMeter.getObjCode())) {
+            objCode = queryMeter.getObjCode();
+            EmsFacs emsFacs = facsService.selectEmsFacsByCode(objCode);
+            objName = emsFacs.getFacsName();
 
-            for (BoundaryObj bObj : bObjs) {
-                if (CollectionUtils.isNotEmpty(bObj.getBindElecMeterDevs())) {
-                    devCodes.addAll(bObj.getBindElecMeterDevs());
+            List<MeterBoundaryRel> relList = boundaryRelService.selectRelByObj(queryMeter.getObjCode(),
+                MeterObjType.METER_FACS.getType(), 45);
+
+            if (CollectionUtils.isNotEmpty(relList)) {
+                for (MeterBoundaryRel bObj : relList) {
+                    devCodes.add(bObj.getMeterDevice());
                 }
             }
-
-            String objCode = null;
-            String objName = null;
-
-            if (StringUtils.isNotEmpty(queryMeter.getFacsSubCategory())) {
-                objCode = queryMeter.getFacsSubCategory();
-                FacsSubCategory facsSubCategory = emsCommonCache.getSubCategory(objCode);
-                objName = null != facsSubCategory ? facsSubCategory.getName() : "未知";
+        }
+        else {
+            if (StringUtils.equals("-1", queryMeter.getAreaCode())) {
+                objCode = "-1";
+                objName = "全部设施";
             }
             else {
-                objCode = queryMeter.getFacsCategory();
-                FacsCategory facsCategory = emsCommonCache.getCategory(objCode);
-                objName = null != facsCategory ? facsCategory.getName() : "未知";
+                Area area = areaService.selectAreaByCode(queryMeter.getAreaCode());
+                objCode = queryMeter.getAreaCode();
+                objName = area.getAreaName();
+            }
+
+            bObjs = facsService.getFacsWithMeterDev(queryMeter.getAreaCode(), queryMeter.getFacsCategory(),
+                queryMeter.getFacsSubCategory());
+
+            for (BoundaryObj bObj : bObjs) {
+                if (CollectionUtils.isNotEmpty(bObj.getBindElecMeterDevs())) {
+                    devCodes.addAll(bObj.getBindElecMeterDevs());
+                }
             }
+        }
 
+        if (CollectionUtils.isNotEmpty(devCodes)) {
             QueryMeter condition = new QueryMeter();
             condition.setAreaCode(queryMeter.getAreaCode());
             condition.setObjType(MeterObjType.METER_FACS.getType());
@@ -208,7 +215,7 @@ public class BoundaryObjServiceImpl implements IBoundaryObjService {
 
             // 查询设施列表
             EmsFacs facsParam = new EmsFacs();
-            facsParam.setFacsCategory("Z");
+            facsParam.setFacsCategory(queryMeter.getFacsCategory());
             List<EmsFacs> facsList = facsService.selectEmsFacsList(facsParam);
             Set<String> facsAreaCodes = facsList.stream().map(EmsFacs::getRefArea).collect(Collectors.toSet());
 
@@ -231,7 +238,7 @@ public class BoundaryObjServiceImpl implements IBoundaryObjService {
 
                 Set<String> bdDevs = relList.stream().map(MeterBoundaryRel::getMeterDevice).collect(Collectors.toSet());
 
-                result = getAreaMeterQuery(queryMeter.getAreaCode(), rootArea, bdDevs, queryMeter.getStartRecTime(),
+                result = getAreaMeterQuery(queryMeter, rootArea, bdDevs, queryMeter.getStartRecTime(),
                     queryMeter.getEndRecTime());
             }
         }
@@ -243,7 +250,7 @@ public class BoundaryObjServiceImpl implements IBoundaryObjService {
             if (null != area && CollectionUtils.isNotEmpty(relList)) {
                 Set<String> bdDevs = relList.stream().map(MeterBoundaryRel::getMeterDevice).collect(Collectors.toSet());
 
-                result = getAreaMeterQuery(queryMeter.getAreaCode(), area, bdDevs, queryMeter.getStartRecTime(),
+                result = getAreaMeterQuery(queryMeter, area, bdDevs, queryMeter.getStartRecTime(),
                     queryMeter.getEndRecTime());
             }
         }
@@ -251,11 +258,11 @@ public class BoundaryObjServiceImpl implements IBoundaryObjService {
         return result;
     }
 
-    private List<ElecMeterH> getAreaMeterQuery(String rootArea, Area area, Set<String> bdDevs, String startTime,
+    private List<ElecMeterH> getAreaMeterQuery(QueryMeter queryMeter, Area area, Set<String> bdDevs, String startTime,
         String endTime) {
         QueryMeter condition = new QueryMeter();
-        condition.setAreaCode(rootArea);
-        condition.setObjCode(area.getAreaCode());
+        condition.setAreaCode(queryMeter.getAreaCode());
+        condition.setObjCode(queryMeter.getObjCode());
         condition.setObjName(area.getAreaName());
         condition.setStartRecTime(startTime);
         condition.setEndRecTime(endTime);