package com.ruoyi.aibrain.controller; import java.text.SimpleDateFormat; import java.util.*; import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; 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.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.aibrain.domain.AiAlarmInfo; import com.ruoyi.aibrain.service.IAiAlarmInfoService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 报警信息管理Controller * * @author wf * @date 2023-03-08 */ @RestController @RequestMapping("/aibrain/alarm") public class AiAlarmInfoController extends BaseController { @Autowired private IAiAlarmInfoService aiAlarmInfoService; /** * 查询报警信息管理列表 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:list')") @GetMapping("/list") public TableDataInfo list(AiAlarmInfo aiAlarmInfo) { startPage(); List list = aiAlarmInfoService.selectAiAlarmInfoList(aiAlarmInfo); return getDataTable(list); } /** * 导出报警信息管理列表 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:export')") @Log(title = "报警信息管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, AiAlarmInfo aiAlarmInfo) { List list = aiAlarmInfoService.selectAiAlarmInfoList(aiAlarmInfo); ExcelUtil util = new ExcelUtil(AiAlarmInfo.class); util.exportExcel(response, list, "报警信息管理数据"); } /** * 获取报警信息管理详细信息 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(aiAlarmInfoService.selectAiAlarmInfoById(id)); } /** * 新增报警信息管理 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:add')") @Log(title = "报警信息管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody AiAlarmInfo aiAlarmInfo) { return toAjax(aiAlarmInfoService.insertAiAlarmInfo(aiAlarmInfo)); } /** * 修改报警信息管理 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:edit')") @Log(title = "报警信息管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody AiAlarmInfo aiAlarmInfo) { return toAjax(aiAlarmInfoService.updateAiAlarmInfo(aiAlarmInfo)); } /** * 处理报警信息 */ @Log(title = "处理报警信息", businessType = BusinessType.UPDATE) @PostMapping("/handleAlarm") public AjaxResult handleAlarm(@RequestBody AiAlarmInfo aiAlarmInfo) { aiAlarmInfo.setHandler(SecurityUtils.getLoginUser().getUser().getNickName()); aiAlarmInfo.setTime(new Date()); aiAlarmInfo.setDealWith("1"); return toAjax(aiAlarmInfoService.updateAiAlarmInfo(aiAlarmInfo)); } /** * 删除报警信息管理 */ @PreAuthorize("@ss.hasPermi('aibrain:alarm:remove')") @Log(title = "报警信息管理", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(aiAlarmInfoService.deleteAiAlarmInfoByIds(ids)); } /** * 报警信息统计(三违、隐患、智能识别仪(所有设备)) */ @PostMapping("/alarmCount") public AjaxResult alarmCount(@RequestBody AiAlarmInfo aiAlarmInfo) { Map result = new HashMap<>(); int alarmSanWei = aiAlarmInfoService.countSanWeiAlarm(aiAlarmInfo);//三违 int alarmYinHuan = aiAlarmInfoService.countYinHuanAlarm(aiAlarmInfo);//隐患 int alarmAll = aiAlarmInfoService.countAllAlarm(aiAlarmInfo);//智能识别仪 result.put("alarmSanWei",alarmSanWei);//三违 result.put("alarmYinHuan",alarmYinHuan);//隐患 result.put("alarmAll",alarmAll);//智能识别仪 return AjaxResult.success(result); } /** * 报警分析统计 */ @PostMapping("/alarmAnalyse") public AjaxResult alarmAnalyse(@RequestBody AiAlarmInfo aiAlarmInfo) { Map alarmAnalyse = aiAlarmInfoService.countAlarmByTimeAndType(aiAlarmInfo);//报警分析 return AjaxResult.success(alarmAnalyse); } /** * 报警分析统计 */ @PostMapping("/alarmRegion") public AjaxResult alarmRegion() { List dictCache = DictUtils.getDictCache("sys_mine_region"); return AjaxResult.success(dictCache); } /** * 报警分析统计 */ @PostMapping("/indexAlarm") public AjaxResult indexAlarm() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); AiAlarmInfo aiAlarmInfo = new AiAlarmInfo(); Map params = aiAlarmInfo.getParams(); params.put("beginTime", format.format(DateUtils.getFistDayInYear(Calendar.getInstance().get(Calendar.YEAR)))); params.put("endTime",format.format(new Date())); aiAlarmInfo.setParams(params); int alarmSanWei = aiAlarmInfoService.countSanWeiAlarm(aiAlarmInfo);//三违 int alarmYinHuan = aiAlarmInfoService.countYinHuanAlarm(aiAlarmInfo);//隐患 int alarmAll = aiAlarmInfoService.countAllAlarm(aiAlarmInfo);//智能识别仪 int alarmYear = aiAlarmInfoService.countAlarmInYear();//年度报警 int alarmMonth = aiAlarmInfoService.countAlarmInMonth();//月度报警 List> alarmTop = aiAlarmInfoService.selectCountAlarmByRegion();//本年区域报警Top排序 List> alarmSmall = aiAlarmInfoService.selectCountAlarmBySmall();//本年报警类型统计 List aiAlarmInfos = aiAlarmInfoService.selectAlarmInfoNew();//实时报警:未处理的最新十条 Map indexJson = new HashMap<>(); indexJson.put("alarmSanWei",alarmSanWei); indexJson.put("alarmYinHuan",alarmYinHuan); indexJson.put("alarmAll",alarmAll); indexJson.put("alarmYear",alarmYear); indexJson.put("alarmMonth",alarmMonth); indexJson.put("alarmTop",alarmTop); indexJson.put("alarmSmall",alarmSmall); indexJson.put("aiAlarmInfos",aiAlarmInfos); return AjaxResult.success(indexJson); } }