Browse Source

设备告警改造

learshaw 4 tháng trước cách đây
mục cha
commit
40b0456b89

+ 14 - 14
ems/ems-application/ems-admin/src/main/java/com/ruoyi/web/controller/ems/AdmOpAlarmController.java

@@ -6,8 +6,8 @@ import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.ems.domain.AdmOpAlarm;
-import com.ruoyi.ems.service.IAdmOpAlarmService;
+import com.ruoyi.ems.domain.OpAlarm;
+import com.ruoyi.ems.service.IOpAlarmService;
 import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -35,16 +35,16 @@ import java.util.List;
 @Api(value = "AdmOpAlarmController", description = "能源设施告警")
 public class AdmOpAlarmController extends BaseController {
     @Autowired
-    private IAdmOpAlarmService opAlarmService;
+    private IOpAlarmService opAlarmService;
 
     /**
      * 查询能源设施告警列表
      */
     @PreAuthorize("@ss.hasPermi('ems:alarm-info:list')")
     @GetMapping("/list")
-    public TableDataInfo list(AdmOpAlarm admOpAlarm) {
+    public TableDataInfo list(OpAlarm admOpAlarm) {
         startPage();
-        List<AdmOpAlarm> list = opAlarmService.selectAdmOpAlarmList(admOpAlarm);
+        List<OpAlarm> list = opAlarmService.selectOpAlarmList(admOpAlarm);
         return getDataTable(list);
     }
 
@@ -54,9 +54,9 @@ public class AdmOpAlarmController extends BaseController {
     @PreAuthorize("@ss.hasPermi('ems:alarm-info:export')")
     @Log(title = "能源设施告警", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, AdmOpAlarm admOpAlarm) {
-        List<AdmOpAlarm> list = opAlarmService.selectAdmOpAlarmList(admOpAlarm);
-        ExcelUtil<AdmOpAlarm> util = new ExcelUtil<>(AdmOpAlarm.class);
+    public void export(HttpServletResponse response, OpAlarm admOpAlarm) {
+        List<OpAlarm> list = opAlarmService.selectOpAlarmList(admOpAlarm);
+        ExcelUtil<OpAlarm> util = new ExcelUtil<>(OpAlarm.class);
         util.exportExcel(response, list, "能源设施告警数据");
     }
 
@@ -66,7 +66,7 @@ public class AdmOpAlarmController extends BaseController {
     @PreAuthorize("@ss.hasPermi('ems:alarm-info:query')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
-        return success(opAlarmService.selectAdmOpAlarmById(id));
+        return success(opAlarmService.selectOpAlarmById(id));
     }
 
     /**
@@ -75,8 +75,8 @@ public class AdmOpAlarmController extends BaseController {
     @PreAuthorize("@ss.hasPermi('ems:alarm-info:add')")
     @Log(title = "能源设施告警", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody AdmOpAlarm admOpAlarm) {
-        return toAjax(opAlarmService.insertAdmOpAlarm(admOpAlarm));
+    public AjaxResult add(@RequestBody OpAlarm admOpAlarm) {
+        return toAjax(opAlarmService.insertOpAlarm(admOpAlarm));
     }
 
     /**
@@ -85,8 +85,8 @@ public class AdmOpAlarmController extends BaseController {
     @PreAuthorize("@ss.hasPermi('ems:alarm-info:edit')")
     @Log(title = "能源设施告警", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody AdmOpAlarm admOpAlarm) {
-        return toAjax(opAlarmService.updateAdmOpAlarm(admOpAlarm));
+    public AjaxResult edit(@RequestBody OpAlarm admOpAlarm) {
+        return toAjax(opAlarmService.updateOpAlarm(admOpAlarm));
     }
 
     /**
@@ -96,7 +96,7 @@ public class AdmOpAlarmController extends BaseController {
     @Log(title = "能源设施告警", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public AjaxResult remove(@PathVariable Long[] ids) {
-        return toAjax(opAlarmService.deleteAdmOpAlarmByIds(ids));
+        return toAjax(opAlarmService.deleteOpAlarmByIds(ids));
     }
 
     @GetMapping("/alarm/type/index")

+ 0 - 11
ems/ems-cloud/ems-server/src/main/java/com/ruoyi/ems/controller/DeviceController.java

@@ -192,17 +192,6 @@ public class DeviceController extends BaseController {
     }
 
     /**
-     * 设备-设备状态统计
-     *
-     * @param areaCode
-     * @return
-     */
-    @GetMapping(value = "/status/cnt")
-    public AjaxResult getDeviceStatusCnt(@RequestParam("areaCode") String areaCode) {
-        return success(deviceService.cntDeviceStatus(areaCode));
-    }
-
-    /**
      * 设备-类型在线率
      *
      * @param areaCode

+ 158 - 0
ems/ems-cloud/ems-server/src/main/java/com/ruoyi/ems/controller/OpAlarmController.java

@@ -0,0 +1,158 @@
+package com.ruoyi.ems.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletResponse;
+
+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.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.huashe.common.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.controller.BaseController;
+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.OpAlarm;
+import com.ruoyi.ems.service.IOpAlarmService;
+
+import io.swagger.annotations.Api;
+
+/**
+ * 能源设施告警Controller
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@RestController
+@RequestMapping("/alarm-info")
+@Api(value = "AdmOpAlarmController", description = "能源设施告警")
+public class OpAlarmController extends BaseController {
+    @Autowired
+    private IOpAlarmService opAlarmService;
+
+    /**
+     * 查询能源设施告警列表
+     */
+    @RequiresPermissions("ems:alarm-info:list")
+    @GetMapping("/list")
+    public TableDataInfo list(OpAlarm admOpAlarm) {
+        startPage();
+        List<OpAlarm> list = opAlarmService.selectOpAlarmList(admOpAlarm);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出能源设施告警列表
+     */
+    @RequiresPermissions("ems:alarm-info:export")
+    @Log(title = "能源设施告警", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, OpAlarm opAlarm) {
+        List<OpAlarm> list = opAlarmService.selectOpAlarmList(opAlarm);
+        ExcelUtil<OpAlarm> util = new ExcelUtil<OpAlarm>(OpAlarm.class);
+        util.exportExcel(response, list, "能源设施告警数据");
+    }
+
+    /**
+     * 获取能源设施告警详细信息
+     */
+    @RequiresPermissions("ems:alarm-info:query")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
+        return success(opAlarmService.selectOpAlarmById(id));
+    }
+
+    /**
+     * 新增能源设施告警
+     */
+    @RequiresPermissions("ems:alarm-info:add")
+    @Log(title = "能源设施告警", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody OpAlarm opAlarm) {
+        return toAjax(opAlarmService.insertOpAlarm(opAlarm));
+    }
+
+    /**
+     * 修改能源设施告警
+     */
+    @RequiresPermissions("ems:alarm-info:edit")
+    @Log(title = "能源设施告警", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody OpAlarm opAlarm) {
+        return toAjax(opAlarmService.updateOpAlarm(opAlarm));
+    }
+
+    /**
+     * 删除能源设施告警
+     */
+    @RequiresPermissions("ems:alarm-info:remove")
+    @Log(title = "能源设施告警", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(opAlarmService.deleteOpAlarmByIds(ids));
+    }
+
+    @GetMapping("/alarm/type/index")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qryAlarmTypeIndex(@RequestParam(name = "areaCode", required = false) String areaCode,
+        @RequestParam("startRecTime") String startTime, @RequestParam("endRecTime") String endTime) {
+        return success(opAlarmService.qryAlarmTypeIndex(areaCode, startTime, endTime));
+    }
+
+    @GetMapping("/alarm/type/index/day")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qryAlarmTypeIndexDay(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qryAlarmTypeIndexDay(areaCode));
+    }
+
+    @GetMapping("/alarm/type/index/month")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qryAlarmTypeIndexMonth(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qryAlarmTypeIndexMonth(areaCode));
+    }
+
+    @GetMapping("/alarm/type/index/year")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qryAlarmTypeIndexYear(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qryAlarmTypeIndexYear(areaCode));
+    }
+
+    @GetMapping("/subsys/index/day")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qrySubSysIndexDay(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qrySubSysIndexDay(areaCode));
+    }
+
+    @GetMapping("/subsys/index/month")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qrySubSysIndexMonth(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qrySubSysIndexMonth(areaCode));
+    }
+
+    @GetMapping("/subsys/index/year")
+    @RequiresPermissions("ems:alarm-info:query")
+    public AjaxResult qrySubSysIndexYear(@RequestParam(name = "areaCode", required = false) String areaCode) {
+        return success(opAlarmService.qrySubSysIndexYear(areaCode));
+    }
+
+    @GetMapping("/cnt/handled")
+    public AjaxResult cntHandledAlarmByDate(OpAlarm opAlarm) {
+        return success(opAlarmService.cntHandledAlarmByDate(opAlarm));
+    }
+
+    @GetMapping("/cnt/date/alarm/type")
+    public AjaxResult qryAlarmTypeIndexByDate(OpAlarm opAlarm) {
+        return success(opAlarmService.qryAlarmTypeIndexByDate(opAlarm));
+    }
+
+}

+ 232 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/domain/OpAlarm.java

@@ -0,0 +1,232 @@
+package com.ruoyi.ems.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.huashe.common.annotation.Excel;
+import com.huashe.common.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 能源设施告警对象 adm_op_alarm
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public class OpAlarm extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** 序号 */
+    private Long id;
+
+    /** 园区代码 */
+    private String areaCode;
+
+    @Excel(name = "园区名称")
+    private String areaName;
+
+    private String areaShortName;
+
+    /** 对象类型 */
+    @Excel(name = "对象类型")
+    private Integer objType;
+
+    @Excel(name = "子系统")
+    private String subSystemName;
+
+    private String systemCode;
+
+    /** 对象代码 */
+    @Excel(name = "对象代码")
+    private String objCode;
+
+    @Excel(name = "对象名称")
+    private String objName;
+
+    /** 告警日期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "告警日期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date alarmDate;
+
+    /** 告警时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "告警时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    private Date alarmTime;
+
+    /** 告警代码 */
+    @Excel(name = "告警代码")
+    private String alarmCode;
+
+    /** 告警描述 */
+    @Excel(name = "告警描述")
+    private String alarmMsg;
+
+    /** 告警类型 */
+    @Excel(name = "告警类型")
+    private Integer alarmType;
+
+    /** 告警状态 */
+    @Excel(name = "告警状态")
+    private Integer alarmState;
+
+    private List<Integer> alarmStateList;
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setAreaCode(String areaCode)
+    {
+        this.areaCode = areaCode;
+    }
+
+    public String getAreaCode()
+    {
+        return areaCode;
+    }
+
+    public String getAreaName() {
+        return areaName;
+    }
+
+    public void setAreaName(String areaName) {
+        this.areaName = areaName;
+    }
+
+    public String getAreaShortName() {
+        return areaShortName;
+    }
+
+    public void setAreaShortName(String areaShortName) {
+        this.areaShortName = areaShortName;
+    }
+
+    public void setObjType(Integer objType)
+    {
+        this.objType = objType;
+    }
+
+    public Integer getObjType()
+    {
+        return objType;
+    }
+    public void setObjCode(String objCode)
+    {
+        this.objCode = objCode;
+    }
+
+    public String getObjCode()
+    {
+        return objCode;
+    }
+    public void setAlarmDate(Date alarmDate)
+    {
+        this.alarmDate = alarmDate;
+    }
+
+    public Date getAlarmDate()
+    {
+        return alarmDate;
+    }
+    public void setAlarmTime(Date alarmTime)
+    {
+        this.alarmTime = alarmTime;
+    }
+
+    public Date getAlarmTime()
+    {
+        return alarmTime;
+    }
+    public void setAlarmCode(String alarmCode)
+    {
+        this.alarmCode = alarmCode;
+    }
+
+    public String getAlarmCode()
+    {
+        return alarmCode;
+    }
+    public void setAlarmMsg(String alarmMsg)
+    {
+        this.alarmMsg = alarmMsg;
+    }
+
+    public String getAlarmMsg()
+    {
+        return alarmMsg;
+    }
+    public void setAlarmType(Integer alarmType)
+    {
+        this.alarmType = alarmType;
+    }
+
+    public Integer getAlarmType()
+    {
+        return alarmType;
+    }
+    public void setAlarmState(Integer alarmState)
+    {
+        this.alarmState = alarmState;
+    }
+
+    public Integer getAlarmState()
+    {
+        return alarmState;
+    }
+
+    public String getSubSystemName() {
+        return subSystemName;
+    }
+
+    public void setSubSystemName(String subSystemName) {
+        this.subSystemName = subSystemName;
+    }
+
+    public String getSystemCode() {
+        return systemCode;
+    }
+
+    public void setSystemCode(String systemCode) {
+        this.systemCode = systemCode;
+    }
+
+    public List<Integer> getAlarmStateList() {
+        return alarmStateList;
+    }
+
+    public void setAlarmStateList(List<Integer> alarmStateList) {
+        this.alarmStateList = alarmStateList;
+    }
+
+    public String getObjName() {
+        return objName;
+    }
+
+    public void setObjName(String objName) {
+        this.objName = objName;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("areaCode", getAreaCode())
+            .append("objType", getObjType())
+            .append("objCode", getObjCode())
+            .append("alarmDate", getAlarmDate())
+            .append("alarmTime", getAlarmTime())
+            .append("alarmCode", getAlarmCode())
+            .append("alarmMsg", getAlarmMsg())
+            .append("alarmType", getAlarmType())
+            .append("alarmState", getAlarmState())
+            .toString();
+    }
+}

+ 0 - 2
ems/ems-core/src/main/java/com/ruoyi/ems/mapper/EmsDeviceMapper.java

@@ -122,8 +122,6 @@ public interface EmsDeviceMapper {
      */
     int deleteEmsDevice(@Param("modelCode") String modelCode, @Param("deviceCode") String deviceCode);
 
-    List<Map<String, Object>> cntDeviceStatus(@Param("areaCode") String areaCode);
-
     List<Map<String, Object>> calcDeviceOnlineSummary(@Param("areaCode") String areaCode);
 
     Map<String, Object> cntTotalDevice(@Param("areaCode") String areaCode);

+ 89 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/mapper/OpAlarmMapper.java

@@ -0,0 +1,89 @@
+package com.ruoyi.ems.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.ruoyi.ems.domain.OpAlarm;
+
+/**
+ * 能源设施告警Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public interface OpAlarmMapper {
+    /**
+     * 查询能源设施告警
+     *
+     * @param id 能源设施告警主键
+     * @return 能源设施告警
+     */
+    OpAlarm selectAdmOpAlarmById(Long id);
+
+    /**
+     * 查询能源设施告警列表
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 能源设施告警集合
+     */
+    List<OpAlarm> selectAdmOpAlarmList(OpAlarm admOpAlarm);
+
+    /**
+     * 新增能源设施告警
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 结果
+     */
+    int insertAdmOpAlarm(OpAlarm admOpAlarm);
+
+    /**
+     * 修改能源设施告警
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 结果
+     */
+    int updateAdmOpAlarm(OpAlarm admOpAlarm);
+
+    /**
+     * 删除能源设施告警
+     *
+     * @param id 能源设施告警主键
+     * @return 结果
+     */
+    int deleteAdmOpAlarmById(Long id);
+
+    /**
+     * 批量删除能源设施告警
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteAdmOpAlarmByIds(Long[] ids);
+
+    List<Map<String, Object>> qryAlarmTypeIndex(@Param("areaCode") String areaCode,
+        @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<Map<String, Object>> qryAlarmTypeIndexByDate(OpAlarm admOpAlarm);
+    List<Map<String, Object>> qryAlarmTypeIndexDay(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    List<Map<String, Object>> qryAlarmTypeIndexMonth(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    List<Map<String, Object>> qryAlarmTypeIndexYear(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexDay(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexMonth(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexYear(@Param("alarmDate") String alarmDate,
+        @Param("areaCode") String areaCode);
+
+    Map<String, Object> cntHandledAlarmByDate(OpAlarm admOpAlarm);
+
+}

+ 0 - 2
ems/ems-core/src/main/java/com/ruoyi/ems/service/IEmsDeviceService.java

@@ -117,8 +117,6 @@ public interface IEmsDeviceService {
      */
     int deleteDevice(String modelCode, String deviceCode);
 
-    List<Map<String, Object>> cntDeviceStatus(String areaCode);
-
     List<Map<String, Object>> calcDeviceOnlineSummary(String areaCode);
 
     Map<String, Object> cntTotalDevice(String areaCode);

+ 80 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/service/IOpAlarmService.java

@@ -0,0 +1,80 @@
+package com.ruoyi.ems.service;
+
+import com.ruoyi.ems.domain.OpAlarm;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 能源设施告警Service接口
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+public interface IOpAlarmService {
+    /**
+     * 查询能源设施告警
+     *
+     * @param id 能源设施告警主键
+     * @return 能源设施告警
+     */
+    OpAlarm selectOpAlarmById(Long id);
+
+    /**
+     * 查询能源设施告警列表
+     *
+     * @param opAlarm 能源设施告警
+     * @return 能源设施告警集合
+     */
+    List<OpAlarm> selectOpAlarmList(OpAlarm opAlarm);
+
+    /**
+     * 新增能源设施告警
+     *
+     * @param opAlarm 能源设施告警
+     * @return 结果
+     */
+    int insertOpAlarm(OpAlarm opAlarm);
+
+    /**
+     * 修改能源设施告警
+     *
+     * @param opAlarm 能源设施告警
+     * @return 结果
+     */
+    int updateOpAlarm(OpAlarm opAlarm);
+
+    /**
+     * 批量删除能源设施告警
+     *
+     * @param ids 需要删除的能源设施告警主键集合
+     * @return 结果
+     */
+    int deleteOpAlarmByIds(Long[] ids);
+
+    /**
+     * 删除能源设施告警信息
+     *
+     * @param id 能源设施告警主键
+     * @return 结果
+     */
+    int deleteOpAlarmById(Long id);
+
+    List<Map<String, Object>> qryAlarmTypeIndex(String areaCode, String startTime, String endTime);
+
+    List<Map<String, Object>> qryAlarmTypeIndexByDate(OpAlarm params);
+
+    List<Map<String, Object>> qryAlarmTypeIndexDay(String areaCode);
+
+    List<Map<String, Object>> qryAlarmTypeIndexMonth(String areaCode);
+
+    List<Map<String, Object>> qryAlarmTypeIndexYear(String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexDay(String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexMonth(String areaCode);
+
+    List<Map<String, Object>> qrySubSysIndexYear(String areaCode);
+
+    Map<String, Object> cntHandledAlarmByDate(OpAlarm admOpAlarm);
+}

+ 0 - 5
ems/ems-core/src/main/java/com/ruoyi/ems/service/impl/EmsDeviceServiceImpl.java

@@ -155,11 +155,6 @@ public class EmsDeviceServiceImpl implements IEmsDeviceService {
     }
 
     @Override
-    public List<Map<String, Object>> cntDeviceStatus(String areaCode) {
-        return emsDeviceMapper.cntDeviceStatus(areaCode);
-    }
-
-    @Override
     public List<Map<String, Object>> calcDeviceOnlineSummary(String areaCode) {
         return emsDeviceMapper.calcDeviceOnlineSummary(areaCode);
     }

+ 178 - 0
ems/ems-core/src/main/java/com/ruoyi/ems/service/impl/OpAlarmServiceImpl.java

@@ -0,0 +1,178 @@
+package com.ruoyi.ems.service.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.ruoyi.common.core.utils.DateTimeUtil;
+import com.ruoyi.ems.domain.OpAlarm;
+import com.ruoyi.ems.domain.Area;
+import com.ruoyi.ems.domain.EmsDevice;
+import com.ruoyi.ems.domain.EmsFacs;
+import com.ruoyi.ems.enums.AlarmObjType;
+import com.ruoyi.ems.mapper.OpAlarmMapper;
+import com.ruoyi.ems.mapper.AreaMapper;
+import com.ruoyi.ems.mapper.EmsDeviceMapper;
+import com.ruoyi.ems.mapper.EmsFacsMapper;
+import com.ruoyi.ems.service.IOpAlarmService;
+
+/**
+ * 能源设施告警Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-08-26
+ */
+@Service
+public class OpAlarmServiceImpl implements IOpAlarmService {
+    @Autowired
+    private OpAlarmMapper opAlarmMapper;
+
+    @Autowired
+    private AreaMapper areaMapper;
+
+    @Autowired
+    private EmsFacsMapper emsFacsMapper;
+
+    @Autowired
+    private EmsDeviceMapper emsDeviceMapper;
+
+    /**
+     * 查询能源设施告警
+     *
+     * @param id 能源设施告警主键
+     * @return 能源设施告警
+     */
+    @Override
+    public OpAlarm selectOpAlarmById(Long id) {
+        return opAlarmMapper.selectAdmOpAlarmById(id);
+    }
+
+    /**
+     * 查询能源设施告警列表
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 能源设施告警
+     */
+    @Override
+    public List<OpAlarm> selectOpAlarmList(OpAlarm admOpAlarm) {
+        return opAlarmMapper.selectAdmOpAlarmList(admOpAlarm);
+    }
+
+    /**
+     * 新增能源设施告警
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 结果
+     */
+    @Override
+    public int insertOpAlarm(OpAlarm admOpAlarm) {
+        admOpAlarm.setObjName(getObjInfo(admOpAlarm.getObjType(), admOpAlarm.getObjCode()));
+        return opAlarmMapper.insertAdmOpAlarm(admOpAlarm);
+    }
+
+    /**
+     * 修改能源设施告警
+     *
+     * @param admOpAlarm 能源设施告警
+     * @return 结果
+     */
+    @Override
+    public int updateOpAlarm(OpAlarm admOpAlarm) {
+        admOpAlarm.setObjName(getObjInfo(admOpAlarm.getObjType(), admOpAlarm.getObjCode()));
+        return opAlarmMapper.updateAdmOpAlarm(admOpAlarm);
+    }
+
+    /**
+     * 批量删除能源设施告警
+     *
+     * @param ids 需要删除的能源设施告警主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOpAlarmByIds(Long[] ids) {
+        return opAlarmMapper.deleteAdmOpAlarmByIds(ids);
+    }
+
+    /**
+     * 删除能源设施告警信息
+     *
+     * @param id 能源设施告警主键
+     * @return 结果
+     */
+    @Override
+    public int deleteOpAlarmById(Long id) {
+        return opAlarmMapper.deleteAdmOpAlarmById(id);
+    }
+
+    @Override
+    public List<Map<String, Object>> qryAlarmTypeIndex(String areaCode, String startTime, String endTime) {
+        return opAlarmMapper.qryAlarmTypeIndex(areaCode, startTime, endTime);
+    }
+
+    @Override
+    public List<Map<String, Object>> qryAlarmTypeIndexByDate(OpAlarm params) {
+        return opAlarmMapper.qryAlarmTypeIndexByDate(params);
+    }
+
+    @Override
+    public List<Map<String, Object>> qryAlarmTypeIndexDay(String areaCode) {
+        String dateTime = DateTimeUtil.currentDateTime(DateTimeUtil.DateFormatter.yyyy_MM_dd);
+        return opAlarmMapper.qryAlarmTypeIndexDay(dateTime, areaCode);
+    }
+
+    @Override
+    public List<Map<String, Object>> qryAlarmTypeIndexMonth(String areaCode) {
+        String firstDayOfRecentMonth = DateTimeUtil.getFirstDayOfRecentMonth();
+        return opAlarmMapper.qryAlarmTypeIndexMonth(firstDayOfRecentMonth, areaCode);
+    }
+
+    @Override
+    public List<Map<String, Object>> qryAlarmTypeIndexYear(String areaCode) {
+        String firstDayOfRecentYear = DateTimeUtil.getFirstDayOfRecentYear();
+        return opAlarmMapper.qryAlarmTypeIndexYear(firstDayOfRecentYear, areaCode);
+    }
+
+    @Override
+    public List<Map<String, Object>> qrySubSysIndexDay(String areaCode) {
+        String dateTime = DateTimeUtil.currentDateTime(DateTimeUtil.DateFormatter.yyyy_MM_dd);
+        return opAlarmMapper.qrySubSysIndexDay(dateTime, areaCode);
+    }
+
+    @Override
+    public List<Map<String, Object>> qrySubSysIndexMonth(String areaCode) {
+        String firstDayOfRecentMonth = DateTimeUtil.getFirstDayOfRecentMonth();
+        return opAlarmMapper.qrySubSysIndexMonth(firstDayOfRecentMonth, areaCode);
+    }
+
+    @Override
+    public List<Map<String, Object>> qrySubSysIndexYear(String areaCode) {
+        String firstDayOfRecentYear = DateTimeUtil.getFirstDayOfRecentYear();
+        return opAlarmMapper.qrySubSysIndexYear(firstDayOfRecentYear, areaCode);
+    }
+
+    @Override
+    public Map<String, Object> cntHandledAlarmByDate(OpAlarm admOpAlarm) {
+        return opAlarmMapper.cntHandledAlarmByDate(admOpAlarm);
+    }
+
+    private String getObjInfo(Integer objType, String objCode) {
+        if (AlarmObjType.AREA.getCode().equals(objType)) {
+            Area area = areaMapper.selectAreaByCode(objCode);
+            return ObjectUtils.isEmpty(area) ? StringUtils.EMPTY : area.getAreaName();
+        }
+        if (AlarmObjType.FACS.getCode().equals(objType)) {
+            EmsFacs emsFacs = emsFacsMapper.selectEmsFacsByCode(objCode);
+            return ObjectUtils.isEmpty(emsFacs) ? StringUtils.EMPTY : emsFacs.getFacsName();
+        }
+        if (AlarmObjType.DEVICE.getCode().equals(objType)) {
+            EmsDevice emsDevice = emsDeviceMapper.selectDeviceByCode(objCode);
+            return ObjectUtils.isEmpty(emsDevice) ? StringUtils.EMPTY : emsDevice.getDeviceName();
+        }
+
+        return StringUtils.EMPTY;
+    }
+}

+ 0 - 15
ems/ems-core/src/main/resources/mapper/ems/EmsDeviceMapper.xml

@@ -256,21 +256,6 @@
         delete from adm_ems_device where device_code = #{deviceCode} and device_model = #{modelCode}
     </delete>
 
-    <select id="cntDeviceStatus">
-        SELECT
-        device_status deviceStatus,
-        count( id ) cnt
-        FROM
-        adm_ems_device
-        <where>
-            <if test="areaCode !=null and areaCode!=''">
-                area_code = #{areaCode}
-            </if>
-        </where>
-        GROUP BY
-        device_status
-    </select>
-
     <select id="calcDeviceOnlineSummary">
         SELECT
         sc.`name` typeName,

+ 254 - 0
ems/ems-core/src/main/resources/mapper/ems/OpAlarmMapper.xml

@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.ems.mapper.OpAlarmMapper">
+
+    <resultMap type="com.ruoyi.ems.domain.OpAlarm" id="AdmOpAlarmResult">
+        <result property="id" column="id"/>
+        <result property="areaCode" column="area_code"/>
+        <result property="areaName" column="area_name"/>
+        <result property="areaShortName" column="area_short_name"/>
+        <result property="objType" column="obj_type"/>
+        <result property="objCode" column="obj_code"/>
+        <result property="alarmDate" column="alarm_date"/>
+        <result property="alarmTime" column="alarm_time"/>
+        <result property="alarmCode" column="alarm_code"/>
+        <result property="subSystemName" column="sub_system_name"/>
+        <result property="systemCode" column="system_code"/>
+        <result property="objName" column="obj_name"/>
+        <result property="alarmMsg" column="alarm_msg"/>
+        <result property="alarmType" column="alarm_type"/>
+        <result property="alarmState" column="alarm_state"/>
+    </resultMap>
+
+    <sql id="selectOpAlarmVo">
+        select
+            id, area_code, obj_type, obj_code, alarm_date, alarm_time, alarm_code, alarm_msg, alarm_type, alarm_state, obj_name, system_code
+        from
+            adm_op_alarm alarm
+    </sql>
+
+    <select id="selectAdmOpAlarmList" parameterType="com.ruoyi.ems.domain.OpAlarm" resultMap="AdmOpAlarmResult">
+        select
+            alarm.id, alarm.area_code, a.area_name, a.short_name as area_short_name, alarm.obj_type, alarm.obj_code, alarm.alarm_date, alarm.alarm_time, alarm.alarm_code, alarm.alarm_msg, alarm.alarm_type, alarm.alarm_state, alarm.obj_name, sub.system_name sub_system_name, alarm.system_code
+        from
+            adm_op_alarm alarm
+            left join adm_ems_subsystem sub on sub.system_code = alarm.system_code
+            left join adm_area a on alarm.area_code = a.area_code
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode != '-1'">and alarm.area_code = #{areaCode}</if>
+            <if test="objType != null ">and alarm.obj_type = #{objType}</if>
+            <if test="objCode != null  and objCode != ''">and alarm.obj_code = #{objCode}</if>
+            <if test="alarmCode != null  and alarmCode != ''">and alarm.alarm_code = #{alarmCode}</if>
+            <if test="objName !=null and objName!=''">and alarm.obj_name like concat('%', #{objName}, '%')</if>
+            <if test="systemCode !=null and systemCode != ''">and alarm.system_code = #{systemCode}</if>
+            <if test="alarmMsg != null  and alarmMsg != ''">and alarm.alarm_msg like concat('%', #{alarmMsg}, '%')</if>
+            <if test="alarmType != null ">and alarm.alarm_type = #{alarmType}</if>
+            <if test="alarmState != null ">and alarm.alarm_state = #{alarmState}</if>
+            <if test="startRecTime != null  and startRecTime != '' and endRecTime != null and endRecTime !=''">
+                and alarm.alarm_time &gt;= #{startRecTime} and alarm.alarm_time &lt;= #{endRecTime}
+            </if>
+            <if test="alarmStateList != null and alarmStateList.size() > 0">
+                and alarm.alarm_state in
+                <foreach collection="alarmStateList" item="alarmState" open="(" close=")" separator=",">
+                    #{alarmState}
+                </foreach>
+            </if>
+        </where>
+        order by alarm.alarm_time desc
+    </select>
+
+    <select id="selectAdmOpAlarmById" parameterType="Long" resultMap="AdmOpAlarmResult">
+        <include refid="selectOpAlarmVo"/>
+        where alarm.id = #{id}
+    </select>
+
+    <insert id="insertAdmOpAlarm" parameterType="com.ruoyi.ems.domain.OpAlarm" useGeneratedKeys="true"
+            keyProperty="id">
+        insert into adm_op_alarm
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="areaCode != null and areaCode != ''">area_code,</if>
+            <if test="objType != null">obj_type,</if>
+            <if test="objCode != null and objCode != ''">obj_code,</if>
+            <if test="objName != null and objName!=''">obj_name,</if>
+            <if test="alarmDate != null">alarm_date,</if>
+            <if test="alarmTime != null">alarm_time,</if>
+            <if test="systemCode !=null">system_code,</if>
+            <if test="alarmCode != null">alarm_code,</if>
+            <if test="alarmMsg != null">alarm_msg,</if>
+            <if test="alarmType != null">alarm_type,</if>
+            <if test="alarmState != null">alarm_state,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="areaCode != null and areaCode != ''">#{areaCode},</if>
+            <if test="objType != null">#{objType},</if>
+            <if test="objCode != null and objCode != ''">#{objCode},</if>
+            <if test="objName != null and objName!=''">#{objName},</if>
+            <if test="alarmDate != null">#{alarmDate},</if>
+            <if test="alarmTime != null">#{alarmTime},</if>
+            <if test="systemCode !=null">#{systemCode},</if>
+            <if test="alarmCode != null">#{alarmCode},</if>
+            <if test="alarmMsg != null">#{alarmMsg},</if>
+            <if test="alarmType != null">#{alarmType},</if>
+            <if test="alarmState != null">#{alarmState},</if>
+        </trim>
+    </insert>
+
+    <update id="updateAdmOpAlarm" parameterType="com.ruoyi.ems.domain.OpAlarm">
+        update adm_op_alarm
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="areaCode != null and areaCode != ''">area_code = #{areaCode},</if>
+            <if test="objType != null">obj_type = #{objType},</if>
+            <if test="objCode != null and objCode != ''">obj_code = #{objCode},</if>
+            <if test="objName != null and objName!=''">obj_name = #{objName},</if>
+            <if test="alarmDate != null">alarm_date = #{alarmDate},</if>
+            <if test="alarmTime != null">alarm_time = #{alarmTime},</if>
+            <if test="alarmCode != null">alarm_code = #{alarmCode},</if>
+            <if test="systemCode !=null">system_code = #{systemCode},</if>
+            <if test="alarmMsg != null">alarm_msg = #{alarmMsg},</if>
+            <if test="alarmType != null">alarm_type = #{alarmType},</if>
+            <if test="alarmState != null">alarm_state = #{alarmState},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteAdmOpAlarmById" parameterType="Long">
+        delete
+        from adm_op_alarm
+        where id = #{id}
+    </delete>
+
+    <delete id="deleteAdmOpAlarmByIds" parameterType="String">
+        delete from adm_op_alarm where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <select id="qryAlarmTypeIndex" resultType="java.util.Map">
+        SELECT count(*) cnt,
+        alarm_type alarmType
+        FROM adm_op_alarm
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="startTime != null  and startTime != '' and endTime != null and endTime !=''">
+                and alarm_time &gt;= #{startTime} and alarm_time &lt;= #{endTime}
+            </if>
+        </where>
+        GROUP BY alarm_type
+    </select>
+
+    <select id="qryAlarmTypeIndexByDate" parameterType="OpAlarm" resultType="java.util.Map">
+        SELECT count(*) cnt,
+        alarm_type alarmType
+        FROM adm_op_alarm
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="startRecTime != null and startRecTime != ''">
+                and alarm_date like CONCAT(#{startRecTime},'%')
+            </if>
+        </where>
+        GROUP BY alarm_type
+    </select>
+
+    <select id="qryAlarmTypeIndexDay" resultType="java.util.Map">
+        SELECT count(*)                         cnt,
+               alarm_type                       alarmType,
+               DATE_FORMAT(alarm_time, '%H:00') dateIndex
+        FROM adm_op_alarm
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date = #{alarmDate}</if>
+        </where>
+        GROUP BY DATE_FORMAT(alarm_time, '%H:00'), alarm_type
+        ORDER BY alarm_type, dateIndex
+    </select>
+
+    <select id="qryAlarmTypeIndexMonth" resultType="java.util.Map">
+        SELECT count(*)                               cnt,
+               alarm_type                             alarmType,
+               DATE_FORMAT(alarm_date, '%Y-%m-%d') AS dateIndex
+        FROM adm_op_alarm
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date &gt;= #{alarmDate}</if>
+        </where>
+        GROUP BY alarm_type, alarm_date
+        ORDER BY alarm_type, dateIndex
+    </select>
+
+    <select id="qryAlarmTypeIndexYear" resultType="java.util.Map">
+        SELECT count(*)                            cnt,
+               alarm_type                          alarmType,
+               DATE_FORMAT(alarm_date, '%Y-%m') AS dateIndex
+        FROM adm_op_alarm
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date &gt;= #{alarmDate}</if>
+        </where>
+        GROUP BY alarm_type, DATE_FORMAT(alarm_date, '%Y-%m')
+        ORDER BY alarm_type, dateIndex
+    </select>
+
+    <select id="qrySubSysIndexDay" resultType="java.util.Map">
+        SELECT count(*)                         cnt,
+               alarm.system_code                systemCode,
+               sub.system_name                  systemName,
+               DATE_FORMAT(alarm_time, '%H:00') dateIndex
+        FROM adm_op_alarm alarm
+                 left join adm_ems_subsystem sub
+                           on alarm.system_code = sub.system_code
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date = #{alarmDate}</if>
+        </where>
+        GROUP BY DATE_FORMAT(alarm_time, '%H:00'), alarm.system_code
+        ORDER BY alarm.system_code, dateIndex
+    </select>
+
+    <select id="qrySubSysIndexMonth" resultType="java.util.Map">
+        SELECT count(*)                               cnt,
+               alarm.system_code                      systemCode,
+               sub.system_name                        systemName,
+               DATE_FORMAT(alarm_date, '%Y-%m-%d') AS dateIndex
+        FROM adm_op_alarm alarm
+                 left join adm_ems_subsystem sub
+                           on alarm.system_code = sub.system_code
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date &gt;= #{alarmDate}</if>
+        </where>
+        GROUP BY alarm.system_code, alarm_date
+        ORDER BY alarm.system_code, dateIndex
+    </select>
+
+    <select id="qrySubSysIndexYear" resultType="java.util.Map">
+        SELECT count(*)                            cnt,
+               alarm.system_code                   systemCode,
+               sub.system_name                     systemName,
+               DATE_FORMAT(alarm_date, '%Y-%m') AS dateIndex
+        FROM adm_op_alarm alarm
+                 left join adm_ems_subsystem sub
+                           on alarm.system_code = sub.system_code
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="alarmDate != null and alarmDate != ''">and alarm_date &gt;= #{alarmDate}</if>
+        </where>
+        GROUP BY alarm.system_code,
+                 DATE_FORMAT(alarm_date, '%Y-%m')
+        ORDER BY alarm.system_code,
+                 dateIndex
+    </select>
+    <select id="cntHandledAlarmByDate" parameterType="OpAlarm"  resultType="java.util.Map">
+        SELECT
+        count(id) cnt,
+        sum( CASE WHEN aoa.alarm_state = 1 THEN 1 ELSE 0 END) handledCnt
+        from
+        adm_op_alarm aoa
+        <where>
+            <if test="areaCode != null and areaCode != '' and areaCode !='-1'">and area_code = #{areaCode}</if>
+            <if test="startRecTime != null and startRecTime != ''">and aoa.alarm_date like CONCAT(#{startRecTime}, '%')</if>
+        </where>
+    </select>
+</mapper>