Răsfoiți Sursa

计量设备完善

lv.wenbin 11 luni în urmă
părinte
comite
7b35574c5c
18 a modificat fișierele cu 352 adăugiri și 107 ștergeri
  1. 42 36
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AreaBuildingController.java
  2. 39 18
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AreaController.java
  3. 1 1
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/DeviceController.java
  4. 27 0
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/MeterDevice.java
  5. 46 0
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/common/MeterObjSubType.java
  6. 5 4
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/common/MeterObjType.java
  7. 8 0
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/mapper/EmsFacsMapper.java
  8. 2 2
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IAreaBuildingService.java
  9. 10 3
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IAreaService.java
  10. 7 0
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IEmsFacsService.java
  11. 46 11
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/AreaServiceImpl.java
  12. 12 10
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/EmsDeviceServiceImpl.java
  13. 13 0
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/EmsFacsServiceImpl.java
  14. 61 6
      ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/MeterDeviceServiceImpl.java
  15. 6 1
      ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/EmsFacsMapper.xml
  16. 17 6
      ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/MeterDeviceMapper.xml
  17. 9 7
      ems-cloud/sql/ems_server.sql
  18. 1 2
      ems-cloud/sql/ems_sys.sql

+ 42 - 36
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AreaBuildingController.java

@@ -1,61 +1,71 @@
 package com.ruoyi.ems.controller;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+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.AreaBuilding;
 import com.ruoyi.ems.service.IAreaBuildingService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
-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.AreaBuilding;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.web.page.TableDataInfo;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 建筑基本信息Controller
- * 
+ *
  * @author ruoyi
  * @date 2024-07-09
  */
 @RestController
 @RequestMapping("/basecfg/area/building")
-public class AreaBuildingController extends BaseController
-{
+public class AreaBuildingController extends BaseController {
     @Autowired
-    private IAreaBuildingService areaBuildingService;
+    private IAreaBuildingService buildingService;
 
     /**
      * 查询建筑基本信息列表
      */
     @RequiresPermissions("basecfg:building:list")
     @GetMapping("/list")
-    public TableDataInfo list(AreaBuilding areaBuilding)
-    {
+    public TableDataInfo list(AreaBuilding areaBuilding) {
         startPage();
-        List<AreaBuilding> list = areaBuildingService.selectAreaBuildingList(areaBuilding);
+        List<AreaBuilding> list = buildingService.selectAreaBuildingList(areaBuilding);
         return getDataTable(list);
     }
 
     /**
+     * 查询建筑基本信息列表
+     */
+    @RequiresPermissions("basecfg:building:list")
+    @GetMapping("/listByArea")
+    public AjaxResult listByArea(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        AreaBuilding param = new AreaBuilding();
+        param.setAreaCode(areaCode);
+        List<AreaBuilding> list = buildingService.selectAreaBuildingList(param);
+        return success(list);
+    }
+
+    /**
      * 导出建筑基本信息列表
      */
     @RequiresPermissions("basecfg:building:export")
     @Log(title = "建筑基本信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, AreaBuilding areaBuilding)
-    {
-        List<AreaBuilding> list = areaBuildingService.selectAreaBuildingList(areaBuilding);
+    public void export(HttpServletResponse response, AreaBuilding areaBuilding) {
+        List<AreaBuilding> list = buildingService.selectAreaBuildingList(areaBuilding);
         ExcelUtil<AreaBuilding> util = new ExcelUtil<AreaBuilding>(AreaBuilding.class);
         util.exportExcel(response, list, "建筑基本信息数据");
     }
@@ -65,9 +75,8 @@ public class AreaBuildingController extends BaseController
      */
     @RequiresPermissions("basecfg:building:query")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
-        return success(areaBuildingService.selectAreaBuildingById(id));
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(buildingService.selectAreaBuildingById(id));
     }
 
     /**
@@ -76,9 +85,8 @@ public class AreaBuildingController extends BaseController
     @RequiresPermissions("basecfg:building:add")
     @Log(title = "建筑基本信息", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody AreaBuilding areaBuilding)
-    {
-        return toAjax(areaBuildingService.insertAreaBuilding(areaBuilding));
+    public AjaxResult add(@RequestBody AreaBuilding areaBuilding) {
+        return toAjax(buildingService.insertAreaBuilding(areaBuilding));
     }
 
     /**
@@ -87,9 +95,8 @@ public class AreaBuildingController extends BaseController
     @RequiresPermissions("basecfg:building:edit")
     @Log(title = "建筑基本信息", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody AreaBuilding areaBuilding)
-    {
-        return toAjax(areaBuildingService.updateAreaBuilding(areaBuilding));
+    public AjaxResult edit(@RequestBody AreaBuilding areaBuilding) {
+        return toAjax(buildingService.updateAreaBuilding(areaBuilding));
     }
 
     /**
@@ -97,9 +104,8 @@ public class AreaBuildingController extends BaseController
      */
     @RequiresPermissions("basecfg:building:remove")
     @Log(title = "建筑基本信息", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
-        return toAjax(areaBuildingService.deleteAreaBuildingByIds(ids));
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(buildingService.deleteAreaBuildingByIds(ids));
     }
 }

+ 39 - 18
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/AreaController.java

@@ -1,27 +1,27 @@
 package com.ruoyi.ems.controller;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+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.Area;
+import com.ruoyi.ems.service.IAreaService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
-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.Area;
-import com.ruoyi.ems.service.IAreaService;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.web.page.TableDataInfo;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 /**
  * 服务区Controller
@@ -47,6 +47,16 @@ public class AreaController extends BaseController {
     }
 
     /**
+     * 查询建筑基本信息列表
+     */
+    @RequiresPermissions("basecfg:area:list")
+    @GetMapping("/listTotal")
+    public AjaxResult listTotal() {
+        List<Area> list = areaService.selectAreaList(new Area());
+        return success(list);
+    }
+
+    /**
      * 导出服务区列表
      */
     @RequiresPermissions("basecfg:area:export")
@@ -71,13 +81,24 @@ public class AreaController extends BaseController {
      * 获取服务区树
      *
      * @param tier 层级 Area、Building、Zoning
-     * @param name 名称
      * @return 区域位置树
      */
     @GetMapping(value = "/areaTree")
-    public AjaxResult getAreaTree(@RequestParam(name = "tier") String tier,
-        @RequestParam(name = "name", required = false) String name) {
-        return success(areaService.selectAreaTreeList(tier, name));
+    public AjaxResult getAreaTree(@RequestParam(name = "tier") String tier) {
+        return success(areaService.selectAreaTreeList(tier));
+    }
+
+    /**
+     * 获取服务区树
+     *
+     * @param tier 层级 Area、Building、Zoning
+     * @param code 代码
+     * @return 区域位置树
+     */
+    @GetMapping(value = "/areaTreeByCode")
+    public AjaxResult getAreaTreeByCode(@RequestParam(name = "tier") String tier,
+        @RequestParam(name = "code") String code) {
+        return success(areaService.selectAreaTreeList(tier, code));
     }
 
     /**

+ 1 - 1
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/controller/DeviceController.java

@@ -109,7 +109,7 @@ public class DeviceController extends BaseController {
     @RequiresPermissions("basecfg:device:list")
     @GetMapping("/getTreeByFacs")
     public AjaxResult getTreeByFacs(@RequestParam(value = "areaCode", required = false) String areaCode) {
-        return success(deviceService.getTreeByFacs(null));
+        return success(deviceService.getTreeByFacs(areaCode));
     }
 
     /**

+ 27 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/MeterDevice.java

@@ -18,12 +18,23 @@ public class MeterDevice extends BaseEntity
     /** 设备代码 */
     private String deviceCode;
 
+    /** 服务区代码 */
+    private String areaCode;
+
     /** 计量类别 */
     private Long meterCls;
 
     /** 计量对象类型 1-区块 2-设备 */
     private Long objType;
 
+    /**
+     * 计量对象类型
+     * obj_type=1
+     *  - 1: 园区  2: 建筑  3:区块
+     *
+     */
+    private Long objSubType;
+
     /** 计量对象编码 */
     private String objCode;
 
@@ -54,6 +65,14 @@ public class MeterDevice extends BaseEntity
         this.deviceCode = deviceCode;
     }
 
+    public String getAreaCode() {
+        return areaCode;
+    }
+
+    public void setAreaCode(String areaCode) {
+        this.areaCode = areaCode;
+    }
+
     public Long getMeterCls() {
         return meterCls;
     }
@@ -70,6 +89,14 @@ public class MeterDevice extends BaseEntity
         this.objType = objType;
     }
 
+    public Long getObjSubType() {
+        return objSubType;
+    }
+
+    public void setObjSubType(Long objSubType) {
+        this.objSubType = objSubType;
+    }
+
     public String getObjCode() {
         return objCode;
     }

+ 46 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/common/MeterObjSubType.java

@@ -0,0 +1,46 @@
+/*
+ * 文 件 名:  MeterObjSubType
+ * 版    权:  浩鲸云计算科技股份有限公司
+ * 描    述:  <描述>
+ * 修 改 人:  lvwenbin
+ * 修改时间:  2024/8/14
+ * 跟踪单号:  <跟踪单号>
+ * 修改单号:  <修改单号>
+ * 修改内容:  <修改内容>
+ */
+package com.ruoyi.ems.domain.common;
+
+/**
+ * 计量对象子
+ * <功能详细描述>
+ *
+ * @author lvwenbin
+ * @version [版本号, 2024/8/14]
+ * @see [相关类/方法]
+ * @since [产品/模块版本]
+ */
+public enum MeterObjSubType {
+    METER_AREA(1),
+
+    METER_BUILDING(2),
+
+    METER_ZONING(3),
+
+    METER_FACS(1),
+
+    METER_DEVICE(2);
+
+    private int type;
+
+    MeterObjSubType(int type) {
+        this.type = type;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+}

+ 5 - 4
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/domain/common/MeterObjType.java

@@ -21,13 +21,14 @@ package com.ruoyi.ems.domain.common;
  */
 public enum MeterObjType {
     /**
-     * 计量对象类型
+     * 区域-建筑-区块
      */
-    METER_ZONING(1),
+    METER_ABZ(1),
+
     /**
-     * 计量对象类型
+     * 设备
      */
-    METER_DEV(2);
+    METER_FD(2);
 
     private int type;
 

+ 8 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/mapper/EmsFacsMapper.java

@@ -20,6 +20,14 @@ public interface EmsFacsMapper {
     EmsFacs selectEmsFacsById(Long id);
 
     /**
+     * 查询能源设施/系统
+     *
+     * @param code 能源设施/系统主键
+     * @return 能源设施/系统
+     */
+    EmsFacs selectEmsFacsByCode(String code);
+
+    /**
      * 查询能源设施/系统列表
      *
      * @param emsFacs 能源设施/系统

+ 2 - 2
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IAreaBuildingService.java

@@ -1,9 +1,9 @@
 package com.ruoyi.ems.service;
 
-import java.util.List;
-
 import com.ruoyi.ems.domain.AreaBuilding;
 
+import java.util.List;
+
 /**
  * 建筑基本信息Service接口
  *

+ 10 - 3
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IAreaService.java

@@ -38,10 +38,17 @@ public interface IAreaService {
     /**
      * 查询区域位置树
      * @param tier 层级
-     * @param name 名称
-     * @return 区域区域位置树
+     * @return 区域位置树
      */
-    List<TreeEntity> selectAreaTreeList(String tier, String name);
+    List<TreeEntity> selectAreaTreeList(String tier);
+
+    /**
+     * 查询区域位置树
+     * @param tier 层级
+     * @param code 编码
+     * @return 区域位置树
+     */
+    List<TreeEntity> selectAreaTreeList(String tier, String code);
 
     /**
      * 新增服务区

+ 7 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/IEmsFacsService.java

@@ -19,6 +19,13 @@ public interface IEmsFacsService {
     EmsFacs selectEmsFacsById(Long id);
 
     /**
+     * 查询能源设施/系统
+     * @param code 能源设施/系统编码
+     * @return 能源设施/系统
+     */
+    EmsFacs selectEmsFacsByCode(String code);
+
+    /**
      * 查询区域下的设施列表
      *
      * @param areaCode 区域代码

+ 46 - 11
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/AreaServiceImpl.java

@@ -13,6 +13,7 @@ import com.ruoyi.ems.service.IAreaService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -116,26 +117,24 @@ public class AreaServiceImpl implements IAreaService {
     }
 
     @Override
-    public List<TreeEntity> selectAreaTreeList(String tier, String name) {
+    public List<TreeEntity> selectAreaTreeList(String tier) {
         List<TreeEntity> entities = null;
 
         if (StringUtils.equals(AreaTier.Area.name(), tier)) {
-            Area param = new Area();
-            param.setAreaName(name);
-            List<Area> areas = areaMapper.selectAreaList(param);
+            List<Area> areas = areaMapper.selectAreaList(new Area());
             entities = areas.stream().map(TreeEntity::new).collect(Collectors.toList());
         }
         else if (StringUtils.equals(AreaTier.Building.name(), tier)) {
             List<Area> areas = areaMapper.selectAreaList(new Area());
             entities = areas.stream().map(TreeEntity::new).collect(Collectors.toList());
-            entities.forEach(area -> area.setChildren(getAreaBuilding(area.getId(), name)));
+            entities.forEach(area -> area.setChildren(getAreaBuilding(area.getId())));
         }
         else if (StringUtils.equals(AreaTier.Zoning.name(), tier)) {
             List<Area> areas = areaMapper.selectAreaList(new Area());
             entities = areas.stream().map(TreeEntity::new).collect(Collectors.toList());
             entities.forEach(area -> {
-                List<TreeEntity> buildings = getAreaBuilding(area.getId(), null);
-                buildings.forEach(building -> building.setChildren(getBuildingZoning(building.getId(), name)));
+                List<TreeEntity> buildings = getAreaBuilding(area.getId());
+                buildings.forEach(building -> building.setChildren(getBuildingZoning(building.getId())));
                 area.setChildren(buildings);
             });
         }
@@ -143,6 +142,44 @@ public class AreaServiceImpl implements IAreaService {
         return entities;
     }
 
+    @Override
+    public List<TreeEntity> selectAreaTreeList(String tier, String code) {
+        List<TreeEntity> retList = new ArrayList<>();
+
+        if (StringUtils.equals(AreaTier.Area.name(), tier)) {
+            Area area = areaMapper.selectAreaByCode(code);
+
+            if (null != area) {
+                TreeEntity entity = new TreeEntity(area);
+                entity.setChildren(getAreaBuilding(code));
+                entity.getChildren().forEach(building -> {
+                    building.setChildren(getBuildingZoning(building.getId()));
+                });
+
+                retList.add(entity);
+            }
+        }
+        else if (StringUtils.equals(AreaTier.Building.name(), tier)) {
+            AreaBuilding building = buildingService.selectAreaBuildingByCode(code);
+
+            if (null != building) {
+                TreeEntity entity = new TreeEntity(building);
+                entity.setChildren(getBuildingZoning(building.getBldgCode()));
+                retList.add(entity);
+            }
+        }
+        else if (StringUtils.equals(AreaTier.Zoning.name(), tier)) {
+            AreaBuildingZoning zoning = zoningService.selectAreaBuildingZoningByCode(code);
+
+            if (null != zoning) {
+                TreeEntity entity = new TreeEntity(zoning);
+                retList.add(entity);
+            }
+        }
+
+        return retList;
+    }
+
     private void deleteRel(long id) {
         Area area = areaMapper.selectAreaById(id);
 
@@ -158,18 +195,16 @@ public class AreaServiceImpl implements IAreaService {
         }
     }
 
-    private List<TreeEntity> getAreaBuilding(String areaCode, String name) {
+    private List<TreeEntity> getAreaBuilding(String areaCode) {
         AreaBuilding param = new AreaBuilding();
         param.setAreaCode(areaCode);
-        param.setBldgName(name);
         List<AreaBuilding> areaBuildings = buildingService.selectAreaBuildingList(param);
         return areaBuildings.stream().map(TreeEntity::new).collect(Collectors.toList());
     }
 
-    private List<TreeEntity> getBuildingZoning(String buildingCode, String name) {
+    private List<TreeEntity> getBuildingZoning(String buildingCode) {
         AreaBuildingZoning param = new AreaBuildingZoning();
         param.setBldgCode(buildingCode);
-        param.setZoningName(name);
         List<AreaBuildingZoning> zonings = zoningService.selectAreaBuildingZoningList(param);
         return zonings.stream().map(TreeEntity::new).collect(Collectors.toList());
     }

+ 12 - 10
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/EmsDeviceServiceImpl.java

@@ -134,7 +134,7 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
                     List<EmsFacs> facsList = facsService.selectFacsByArea(area.getAreaCode());
 
                     TreeEntity entity = new TreeEntity();
-                    entity.setId("-1");
+                    entity.setId(area.getAreaCode());
                     entity.setLabel(area.getAreaName());
                     entity.setChildren(buildFacsDevSub(facsList, areas, buildings, zonings));
                     entity.setTier("Area");
@@ -149,7 +149,7 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
                 List<EmsFacs> facsList = facsService.selectFacsByArea(area.getAreaCode());
 
                 TreeEntity entity = new TreeEntity();
-                entity.setId("-1");
+                entity.setId(area.getAreaCode());
                 entity.setLabel(area.getAreaName());
                 entity.setChildren(buildFacsDevSub(facsList, areas, buildings, zonings));
                 entity.setTier("Area");
@@ -181,17 +181,20 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
                 hasSub = true;
                 String namePrefix = "";
                 if (StringUtils.equals(AreaTier.Area.name(), device.getAreaType())) {
-                    namePrefix = areaMap.get(device.getRefArea()).getAreaName() + " ";
+                    namePrefix = areaMap.get(device.getRefArea()).getShortName();
                 }
                 else if (StringUtils.equals(AreaTier.Building.name(), device.getAreaType())) {
-                    namePrefix = buildingMap.get(device.getRefArea()).getBldgName() + " ";
+                    namePrefix = buildingMap.get(device.getRefArea()).getBldgName();
                 }
                 else if (StringUtils.equals(AreaTier.Zoning.name(), device.getAreaType())) {
-                    namePrefix = zoningMap.get(device.getRefArea()).getZoningName() + " ";
+                    AreaBuildingZoning zoning = zoningMap.get(device.getRefArea());
+                    AreaBuilding building = zoning != null ? buildingMap.get(zoning.getBldgCode()) : null;
+                    namePrefix = (building != null ? building.getBldgName() : "") + "/" + (zoning != null ?
+                        zoning.getZoningName() : "");
                 }
 
                 String label = StringUtils.isNotBlank(namePrefix) ?
-                    namePrefix + device.getDeviceName() :
+                    namePrefix + " - " + device.getDeviceName() :
                     device.getDeviceName();
 
                 TreeEntity entity = new TreeEntity();
@@ -202,7 +205,7 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
             }
 
             TreeEntity entity = new TreeEntity();
-            entity.setId("-1");
+            entity.setId(facs.getFacsCode());
             entity.setLabel(facs.getFacsName());
             entity.setTier("Facs");
             entity.setChildren(subList);
@@ -261,14 +264,13 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
         return emsDeviceMapper.deleteEmsDeviceById(id);
     }
 
-    private void fillAreaName(EmsDevice emsDevice) {
+    public void fillAreaName(EmsDevice emsDevice) {
         if (StringUtils.equals(emsDevice.getAreaType(), AreaTier.Area.name())) {
             Area area = areaService.selectAreaByCode(emsDevice.getRefArea());
 
             if (null != area) {
                 emsDevice.setRefAreaName(area.getAreaName());
-                emsDevice.setAreaPath(
-                    null != area.getShortName() ? area.getShortName() : area.getAreaName());
+                emsDevice.setAreaPath(null != area.getShortName() ? area.getShortName() : area.getAreaName());
             }
             else {
                 emsDevice.setRefAreaName("未知");

+ 13 - 0
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/EmsFacsServiceImpl.java

@@ -46,6 +46,19 @@ public class EmsFacsServiceImpl implements IEmsFacsService {
     }
 
     @Override
+    public EmsFacs selectEmsFacsByCode(String code) {
+        // 查询设施对象
+        EmsFacs emsFacs = emsFacsMapper.selectEmsFacsByCode(code);
+
+        // 查询扩展属性
+        if (null != emsFacs) {
+            emsFacs.setFacsAttrs(getFacsAttrs(emsFacs));
+        }
+
+        return emsFacs;
+    }
+
+    @Override
     public List<EmsFacs> selectFacsByArea(String areaCode) {
         EmsFacs param = new EmsFacs();
         param.setRefArea(areaCode);

+ 61 - 6
ems-cloud/ems-modules/ems-server/src/main/java/com/ruoyi/ems/service/impl/MeterDeviceServiceImpl.java

@@ -4,12 +4,17 @@ import com.ruoyi.ems.domain.Area;
 import com.ruoyi.ems.domain.AreaBuilding;
 import com.ruoyi.ems.domain.AreaBuildingZoning;
 import com.ruoyi.ems.domain.EmsDevice;
+import com.ruoyi.ems.domain.EmsFacs;
 import com.ruoyi.ems.domain.MeterDevice;
 import com.ruoyi.ems.domain.common.AreaTier;
+import com.ruoyi.ems.domain.common.MeterObjSubType;
 import com.ruoyi.ems.domain.common.MeterObjType;
 import com.ruoyi.ems.mapper.MeterDeviceMapper;
+import com.ruoyi.ems.service.IAreaBuildingService;
 import com.ruoyi.ems.service.IAreaBuildingZoningService;
+import com.ruoyi.ems.service.IAreaService;
 import com.ruoyi.ems.service.IEmsDeviceService;
+import com.ruoyi.ems.service.IEmsFacsService;
 import com.ruoyi.ems.service.IMeterDeviceService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,11 +34,20 @@ public class MeterDeviceServiceImpl implements IMeterDeviceService {
     private MeterDeviceMapper meterDeviceMapper;
 
     @Autowired
+    private IAreaService areaService;
+
+    @Autowired
+    private IAreaBuildingService buildingService;
+
+    @Autowired
     private IAreaBuildingZoningService zoningService;
 
     @Autowired
     private IEmsDeviceService deviceService;
 
+    @Autowired
+    private IEmsFacsService facsService;
+
     /**
      * 查询计量设备
      *
@@ -109,13 +123,54 @@ public class MeterDeviceServiceImpl implements IMeterDeviceService {
     }
 
     private void fillObjName(MeterDevice meterDevice) {
-        if (MeterObjType.METER_ZONING.getType() == meterDevice.getObjType()) {
-            AreaBuildingZoning zoning = zoningService.selectAreaBuildingZoningByCode(meterDevice.getObjCode());
-            meterDevice.setObjName(zoning != null ? zoning.getZoningName() : "未知");
+        // 计量区块
+        if (MeterObjType.METER_ABZ.getType() == meterDevice.getObjType()) {
+            if (MeterObjSubType.METER_AREA.getType() == meterDevice.getObjSubType()) {
+                Area area = areaService.selectAreaByCode(meterDevice.getObjCode());
+                meterDevice.setObjName(area != null ? area.getShortName() : "未知");
+            }
+            else if (MeterObjSubType.METER_BUILDING.getType() == meterDevice.getObjSubType()) {
+                AreaBuilding building = buildingService.selectAreaBuildingByCode(meterDevice.getObjCode());
+                meterDevice.setObjName(
+                    building != null ? building.getAreaShortName() + "/" + building.getBldgName() : "未知");
+            }
+            else if (MeterObjSubType.METER_ZONING.getType() == meterDevice.getObjSubType()) {
+                AreaBuildingZoning zoning = zoningService.selectAreaBuildingZoningByCode(meterDevice.getObjCode());
+
+                if (null != zoning) {
+                    AreaBuilding building = buildingService.selectAreaBuildingByCode(zoning.getBldgCode());
+                    meterDevice.setObjName(building != null ?
+                        building.getAreaShortName() + "/" + building.getBldgName() + "/" + zoning.getZoningName() :
+                        "未知");
+                }
+                else {
+                    meterDevice.setObjName("未知");
+                }
+            }
         }
-        else if (MeterObjType.METER_DEV.getType() == meterDevice.getObjType()) {
-            EmsDevice device = deviceService.selectByCode(meterDevice.getObjCode());
-            meterDevice.setObjName(device != null ? device.getDeviceName() : "未知");
+        // 计量设备设施
+        else if (MeterObjType.METER_FD.getType() == meterDevice.getObjType()) {
+            if (MeterObjSubType.METER_FACS.getType() == meterDevice.getObjSubType()) {
+                EmsFacs facs = facsService.selectEmsFacsByCode(meterDevice.getObjCode());
+
+                if (facs != null) {
+                    Area area = areaService.selectAreaByCode(facs.getRefArea());
+                    meterDevice.setObjName(
+                        area != null ? area.getShortName() + "/" + facs.getFacsName() : facs.getFacsName());
+                }
+                else {
+                    meterDevice.setObjName("未知");
+                }
+            }
+            else if (MeterObjSubType.METER_DEVICE.getType() == meterDevice.getObjSubType()) {
+                EmsDevice device = deviceService.selectByCode(meterDevice.getObjCode());
+                if (device != null) {
+                    meterDevice.setObjName(device.getAreaPath() + "/" + device.getDeviceName());
+                }
+                else {
+                    meterDevice.setObjName("未知");
+                }
+            }
         }
     }
 }

+ 6 - 1
ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/EmsFacsMapper.xml

@@ -41,7 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectEmsFacsVo"/>
         where f.`id` = #{id}
     </select>
-        
+
+    <select id="selectEmsFacsByCode" parameterType="java.lang.String" resultMap="EmsFacsResult">
+        <include refid="selectEmsFacsVo"/>
+        where f.`facs_code` = #{code}
+    </select>
+
     <insert id="insertEmsFacs" parameterType="com.ruoyi.ems.domain.EmsFacs" useGeneratedKeys="true" keyProperty="id">
         insert into adm_ems_facs
         <trim prefix="(" suffix=")" suffixOverrides=",">

+ 17 - 6
ems-cloud/ems-modules/ems-server/src/main/resources/mapper/ems/MeterDeviceMapper.xml

@@ -6,31 +6,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <resultMap type="com.ruoyi.ems.domain.MeterDevice" id="meterDeviceResult">
         <result property="id"    column="id"    />
-        <result property="deviceCode"    column="device_code"    />
+        <result property="deviceCode"  column="device_code"    />
+        <result property="areaCode"    column="area_code"    />
         <result property="meterCls"    column="meter_cls"    />
-        <result property="objType"    column="obj_type"    />
-        <result property="objCode"    column="obj_code"    />
-        <result property="objName"    column="obj_name"    />
+        <result property="objType"     column="obj_type"    />
+        <result property="objSubType"  column="obj_sub_type"    />
+        <result property="objCode"     column="obj_code"    />
+        <result property="objName"     column="obj_name"    />
         <result property="colCycle"    column="col_cycle"    />
-        <result property="colMode"    column="col_mode"    />
+        <result property="colMode"     column="col_mode"    />
         <result property="specDesc"    column="spec_desc"    />
     </resultMap>
 
     <sql id="selectMeterDeviceVo">
-        select id, device_code, meter_cls, obj_type, obj_code, col_cycle, col_mode, spec_desc from adm_meter_device
+        select id, device_code, area_code, meter_cls, obj_type, obj_sub_type, obj_code, col_cycle, col_mode, spec_desc from adm_meter_device
     </sql>
 
     <select id="selectMeterDeviceList" parameterType="com.ruoyi.ems.domain.MeterDevice" resultMap="meterDeviceResult">
         <include refid="selectMeterDeviceVo"/>
         <where>  
             <if test="deviceCode != null  and deviceCode != ''"> and device_code = #{deviceCode}</if>
+            <if test="areaCode != null  and areaCode != ''"> and area_code = #{areaCode}</if>
             <if test="meterCls != null  and meterCls != ''"> and meter_cls = #{meterCls}</if>
             <if test="objType != null "> and obj_type = #{objType}</if>
+            <if test="objSubType != null "> and obj_sub_type = #{objSubType}</if>
             <if test="objCode != null  and objCode != ''"> and obj_code = #{objCode}</if>
             <if test="colCycle != null "> and col_cycle = #{colCycle}</if>
             <if test="colMode != null "> and col_mode = #{colMode}</if>
             <if test="specDesc != null  and specDesc != ''"> and spec_desc = #{specDesc}</if>
         </where>
+        ORDER BY obj_type, obj_sub_type
     </select>
     
     <select id="selectMeterDeviceById" parameterType="Long" resultMap="meterDeviceResult">
@@ -42,8 +47,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         insert into adm_meter_device
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="deviceCode != null and deviceCode != ''">device_code,</if>
+            <if test="areaCode != null and areaCode != ''">area_code,</if>
             <if test="meterCls != null and meterCls != ''">meter_cls,</if>
             <if test="objType != null">obj_type,</if>
+            <if test="objSubType != null ">obj_sub_type,</if>
             <if test="objCode != null and objCode != ''">obj_code,</if>
             <if test="colCycle != null">col_cycle,</if>
             <if test="colMode != null">col_mode,</if>
@@ -51,8 +58,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="deviceCode != null and deviceCode != ''">#{deviceCode},</if>
+            <if test="areaCode != null and areaCode != ''">#{areaCode},</if>
             <if test="meterCls != null and meterCls != ''">#{meterCls},</if>
             <if test="objType != null">#{objType},</if>
+            <if test="objSubType != null">#{objSubType},</if>
             <if test="objCode != null and objCode != ''">#{objCode},</if>
             <if test="colCycle != null">#{colCycle},</if>
             <if test="colMode != null">#{colMode},</if>
@@ -64,8 +73,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update adm_meter_device
         <trim prefix="SET" suffixOverrides=",">
             <if test="deviceCode != null and deviceCode != ''">device_code = #{deviceCode},</if>
+            <if test="areaCode != null and areaCode != ''">area_code = #{areaCode},</if>
             <if test="meterCls != null and meterCls != ''">meter_cls = #{meterCls},</if>
             <if test="objType != null">obj_type = #{objType},</if>
+            <if test="objSubType != null">obj_sub_type = #{objSubType},</if>
             <if test="objCode != null and objCode != ''">obj_code = #{objCode},</if>
             <if test="colCycle != null">col_cycle = #{colCycle},</if>
             <if test="colMode != null">col_mode = #{colMode},</if>

+ 9 - 7
ems-cloud/sql/ems_server.sql

@@ -411,14 +411,14 @@ INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_f
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300103', '维修间&货车之家', '北区东侧', 2, 0, null, 300, '提供车辆维修服务', '321283124S3001');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300104', '加油站', '北区西南角', 1, 0, null, 200, '提供加油服务', '321283124S3001');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300105', '警务站', '北区东北角', 1, 0, null, 50000, '警务办公场地', '321283124S3001');
-INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300106', '北区车位', '北区广场', 1, 0, null, 50000, '车位', '321283124S3001');
+INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300106', '停车场', '北区广场', 1, 0, null, 50000, '车位', '321283124S3001');
 
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300201', '综合楼', '南区中部', 2, 1, 14.2, 4788.2, '一层提供商业、餐饮、卫生间、开水服务,二层为员工餐厅、展厅', '321283124S3002');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300202', '配电泵房', '南区东南角', 1, 0, null, 300, '配电设施,水泵设施工作区', '321283124S3002');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300203', '维修间&货车之家', '南区西侧', 2, 0, null, 300, '提供车辆维修服务', '321283124S3002');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300204', '加油站', '南区东北角', 1, 0, null, 200, '提供加油服务', '321283124S3002');
 INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300205', '宿舍楼', '南区西南角', 2, 0, null, 920, '提供员工住宿服务', '321283124S3002');
-INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300206', '南区车位', '南区广场', 1, 0, null, 50000, '车位', '321283124S3002');
+INSERT INTO `adm_area_building` (`bldg_code`, `bldg_name`, `address`, `up_bldg_floor`, `down_bldg_floor`, `bldg_height`, `floor_area`, `bldg_usage`, `area_code`) VALUES ('321283124S300206', '停车场', '南区广场', 1, 0, null, 50000, '车位', '321283124S3002');
 
 
 -- ----------------------------
@@ -580,12 +580,14 @@ create table adm_ems_device  (
 drop table if exists adm_meter_device;
 create table adm_meter_device  (
   `id`              bigint(20)      not null auto_increment      comment '序号',
-  `device_code`     varchar(16)     not null                     comment '设备代码',
+  `device_code`     varchar(32)     not null                     comment '设备代码',
+  `area_code`       varchar(16)     default null                 comment '区域代码',
   `meter_cls`       int             not null                     comment '计量类别25-天然气 45-电 70-水',
-  `obj_type`        int             not null                     comment '计量对象类型 1-区块 2-设备',
+  `obj_type`        int             not null                     comment '计量对象类型 1-区域 2-设备',
+  `obj_sub_type`    int             not null                     comment '计量对象子类型',
   `obj_code`        varchar(32)     not null                     comment '计量对象编码',
-  `col_cycle`       int             not null                     comment '采集周期',
-  `col_mode`        int             not null                     comment '采集方式',
+  `col_cycle`       int             default null                 comment '采集周期',
+  `col_mode`        int             default null                 comment '采集方式',
   `spec_desc`       varchar(128)    default null                 comment '规格描述',
   primary key (`id`),
   unique key ux_meter_device(`device_code`)
@@ -836,7 +838,7 @@ create table sys_electrovalency_strategy_hour (
   primary key (`id`)
 ) engine=innodb auto_increment=1 comment = '电价策略小时表';
 
-INSERT INTO sys_electrovalency_strategy_hour (`strategy_code`, `start_time`, `end_time`, `type`) VALUES (1, '-1', '00:00:00', '23:59:59', 0);
+INSERT INTO sys_electrovalency_strategy_hour (`strategy_code`, `start_time`, `end_time`, `type`) VALUES ('-1', '00:00:00', '23:59:59', 0);
 
 -- ----------------------------
 -- 电网供应计量表

+ 1 - 2
ems-cloud/sql/ems_sys.sql

@@ -187,11 +187,10 @@ insert into sys_menu values ('111',  '数据报表',       '3',    '6',  'analys
 insert into sys_menu values ('112',  '碳排计量',       '4',    '1',  'ca-emission',        'ca/emission',            '', 1, 0, 'C', '0', '0',   'ca-analysis:emission',   'caemission',     'admin', sysdate(), '', null, '碳排分析');
 insert into sys_menu values ('113',  '碳汇测算',       '4',    '2',  'ca-sink',            'ca/sink',                '', 1, 0, 'C', '0', '0',   'ca-analysis:sink',       'casink',         'admin', sysdate(), '', null, '碳汇分析');
 
-insert into sys_menu values ('114',  '设备列表',       '5',    '1',  'device-list',        'device/list',            '', 1, 0, 'C', '0', '0',   'device:status',          'devicestatus',   'admin', sysdate(), '', null, '设备状态');
+insert into sys_menu values ('114',  '设备状态',       '5',    '1',  'device-list',        'device/list',            '', 1, 0, 'C', '0', '0',   'device:status',          'devicestatus',   'admin', sysdate(), '', null, '设备状态');
 insert into sys_menu values ('115',  '设备台账',       '5',    '2',  'device-el',          'device/el',              '', 1, 0, 'C', '0', '0',   'device:el',              'excel',       'admin', sysdate(), '', null, '设备台账');
 insert into sys_menu values ('116',  '设备告警',       '5',    '3',  'analysis-warn',      'analysis/device/warn',   '', 1, 0, 'C', '0', '0',   'analysis:device',        'deviceanalyze',  'admin', sysdate(), '', null, '设备分析');
 
-
 insert into sys_menu values ('117',  '告警策略',       '6',    '1',  'warn-strategy',      'warn/strategy',          '', 1, 0, 'C', '0', '0',   'warn:strategy',          'warnstrategy',   'admin', sysdate(), '', null, '告警策略');
 insert into sys_menu values ('118',  '告警列表',       '6',    '2',  'warn-list',          'warn/list',              '', 1, 0, 'C', '0', '0',   'warn:list',              'warnmsg',        'admin', sysdate(), '', null, '告警策略');
 insert into sys_menu values ('119',  '巡检任务',       '6',    '3',  'oper-task',          'oper-mgr/task',          '', 1, 0, 'C', '0', '0',   'oper-mgr:task',          'task',           'admin', sysdate(), '', null, '巡检任务');