Procházet zdrojové kódy

策略中心调测

learshaw před 4 měsíci
rodič
revize
1ba70ec97a

+ 13 - 0
ems/ems-cloud/ems-server/src/main/java/com/ruoyi/ems/controller/OpEnergyStrategyController.java

@@ -93,6 +93,14 @@ public class OpEnergyStrategyController extends BaseController {
     }
 
     /**
+     * 获取能源策略详细信息
+     */
+    @GetMapping(value = "/code/{strategyCode}")
+    public AjaxResult getByCode(@PathVariable("strategyCode") String strategyCode) {
+        return success(strategyService.selectStrategyByCode(strategyCode));
+    }
+
+    /**
      * 新增能源策略
      */
     @RequiresPermissions("power-mgr:strategy:add")
@@ -136,6 +144,11 @@ public class OpEnergyStrategyController extends BaseController {
         return toAjax(strategyService.updateStrategy(strategy));
     }
 
+    @GetMapping("/sceneCount")
+    public AjaxResult getSceneTypeCount(@RequestParam(required = false) String areaCode) {
+        return success(strategyService.getSceneTypeCount(areaCode));
+    }
+
     // ==================== 策略参数管理 ====================
 
     /**

+ 8 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/mapper/OpEnergyStrategyMapper.java

@@ -4,6 +4,7 @@ import com.ruoyi.ems.domain.OpEnergyStrategy;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 能源策略Mapper接口
@@ -66,4 +67,11 @@ public interface OpEnergyStrategyMapper {
      * @return 策略列表
      */
     List<OpEnergyStrategy> selectScheduledStrategies();
+
+    /**
+     * 按场景类型统计策略数量(带区块过滤)
+     * @param areaCode 区块代码(可选)
+     * @return 场景类型及对应数量列表
+     */
+    List<Map<String, Object>> selectSceneTypeCountByArea(@Param("areaCode") String areaCode);
 }

+ 8 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/service/IOpEnergyStrategyService.java

@@ -3,6 +3,7 @@ package com.ruoyi.ems.service;
 import com.ruoyi.ems.domain.OpEnergyStrategy;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 能源策略Service接口
@@ -65,4 +66,11 @@ public interface IOpEnergyStrategyService {
      * @return 策略列表
      */
     List<OpEnergyStrategy> selectScheduledStrategies();
+
+    /**
+     * 获取场景类型统计(带区块过滤)
+     * @param areaCode 区块代码
+     * @return 场景类型统计Map
+     */
+    Map<String, Long> getSceneTypeCount(String areaCode);
 }

+ 39 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/service/impl/OpEnergyStrategyServiceImpl.java

@@ -3,10 +3,14 @@ package com.ruoyi.ems.service.impl;
 import com.ruoyi.ems.domain.OpEnergyStrategy;
 import com.ruoyi.ems.mapper.OpEnergyStrategyMapper;
 import com.ruoyi.ems.service.IOpEnergyStrategyService;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 能源策略Service业务层处理
@@ -58,4 +62,39 @@ public class OpEnergyStrategyServiceImpl implements IOpEnergyStrategyService {
     public List<OpEnergyStrategy> selectScheduledStrategies() {
         return strategyMapper.selectScheduledStrategies();
     }
+
+    /**
+     * 获取场景类型统计(带区块过滤)
+     * @param areaCode 区块代码
+     * @return 场景类型统计Map
+     */
+    public Map<String, Long> getSceneTypeCount(String areaCode) {
+        List<Map<String, Object>>  list = strategyMapper.selectSceneTypeCountByArea(areaCode);;
+
+        Map<String, Long> result = new LinkedHashMap<>();
+        long total = 0L;
+
+        // 初始化所有场景类型为0
+        result.put("PV_ESS", 0L);
+        result.put("DEMAND_RESP", 0L);
+        result.put("PEAK_VALLEY", 0L);
+        result.put("EMERGENCY", 0L);
+        result.put("ENERGY_SAVE", 0L);
+
+        // 填充实际统计数据
+        for (Map<String, Object> item : list) {
+            String sceneType = (String) item.get("sceneType");
+            Long count = ((Number) item.get("count")).longValue();
+
+            if (StringUtils.isNotBlank(sceneType) && !"UNKNOWN".equals(sceneType)) {
+                result.put(sceneType, count);
+            }
+            total += count;
+        }
+
+        // 添加总数
+        result.put("ALL", total);
+
+        return result;
+    }
 }

+ 14 - 0
ems/ems-core/src/main/resources/mapper/ems/OpEnergyStrategyMapper.xml

@@ -168,4 +168,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <!-- 按场景类型统计数量(带区块过滤) -->
+    <select id="selectSceneTypeCountByArea" resultType="java.util.Map">
+        SELECT
+        IFNULL(scene_type, 'UNKNOWN') AS sceneType,
+        COUNT(*) AS count
+        FROM adm_op_energy_strategy
+        <where>
+            <if test="areaCode != null and areaCode != ''">
+                AND area_code = #{areaCode}
+            </if>
+        </where>
+        GROUP BY scene_type
+    </select>
 </mapper>

+ 3 - 5
ems/sql/ems_sys_data.sql

@@ -80,11 +80,9 @@ insert into sys_menu values ('178',  '日志管理',       '7',   '9',  'log',
 insert into sys_menu values ('179',  '在线用户',       '7',   '10', 'online',             'monitor/online/index',   '', 1, 0, 'C', '0', '0',   'monitor:online:list',    'online',         'admin', sysdate(), '', null, '在线用户菜单');
 INSERT INTO sys_menu VALUES ('180',  '任务调度',       '7',   '10', 'task/job',           'monitor/job/index',      '', 1, 0, 'C', '0', '0',   'monitor:job',            'date-range',     'admin', sysdate(), '', NULL, '任务调度');
 
-insert into sys_menu values ('1170',  '策略中心',       '117',   '1',  'strategy-index',     'mgr/strategy/index',       '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',       'admin', sysdate(), '', null, '能耗监测');
-insert into sys_menu values ('1171',  '策略编排',       '117',   '2',  'strategy-editor',    'mgr/strategy/editor',      '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:edit',     'system',        'admin', sysdate(), '', null, '智慧照明');
-insert into sys_menu values ('1172',  '策略模板',       '117',   '3',  'strategy-template',  'mgr/strategy/template',    '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',        'admin', sysdate(), '', null, '智慧照明');
-insert into sys_menu values ('1173',  '策略日志',       '117',   '4',  'strategy-log',       'mgr/strategy/log',          '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',        'admin', sysdate(), '', null, '智慧照明');
-
+insert into sys_menu values ('1170',  '策略中心',       '117',   '1',  'strategy-index',     'mgr/strategy/index',       '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',       'admin', sysdate(), '', null, '策略中心');
+insert into sys_menu values ('1171',  '策略模板',       '117',   '2',  'strategy-template',  'mgr/strategy/template',    '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',        'admin', sysdate(), '', null, '策略模板');
+insert into sys_menu values ('1172',  '策略日志',       '117',   '3',  'strategy-log',       'mgr/strategy/log',          '', 1, 0, 'C', '0', '0',   'power-mgr:strategy:list',     'system',        'admin', sysdate(), '', null, '策略日志');
 
 insert into sys_menu values ('1550',  '楼控能耗',       '155',   '1',  'adapter-nhjc',       'adapter/nhjc/index',    '', 1, 0, 'C', '0', '0',   'adapter:devc:list',     'system',       'admin', sysdate(), '', null, '能耗监测');
 insert into sys_menu values ('1551',  '智慧照明',       '155',   '2',  'adapter-zm',         'adapter/zm/index',      '', 1, 0, 'C', '0', '0',   'adapter:devc:list',     'system',        'admin', sysdate(), '', null, '智慧照明');