package com.ruoyi.statistical.controller; import com.ruoyi.statistical.param.ESParam; import com.ruoyi.statistical.service.StatisticalService; import com.ruoyi.statistical.vo.NumVo; import com.ruoyi.statistical.vo.TenVo; import com.ruoyi.utils.result.Results; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDate; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.Map; /** * @author Administrator */ @RestController @RequestMapping("statistical") @Api(tags = "数据统计") public class StatisticalController { @Resource private StatisticalService statisticalService; /** * 厂区介绍存储 */ @ApiOperation("厂区介绍存储") @PostMapping("factory/save") public Results factorySave(@RequestBody Map map){ return statisticalService.factorySave(map); } /** * 厂区介绍查询 */ @ApiOperation("厂区介绍查询") @GetMapping("factory/select") public Results factorySelect(){ return statisticalService.factorySelect(); } /** * 报警数量分析年 */ @ApiOperation("报警数量分析年") @GetMapping("alarm/year") public Results alarmYear(String type){ LocalDate today = LocalDate.now(); int year = today.getYear(); ESParam esParam = new ESParam(); esParam.setStart(year+"-01-01"); esParam.setEnd(year+"-12-31"); if("1001".equals(type)){ //盗电报警 return Results.succeed(statisticalService.stealelecYear(esParam)); }else if("1002".equals(type)){ //通用光电 return Results.succeed(statisticalService.cameraYear(esParam)); }else if("1003".equals(type)){ //雷达报警 return Results.succeed(statisticalService.moveYear(esParam)); }else if("1004".equals(type)){ //防火报警 return Results.succeed(statisticalService.fireYear(esParam)); }else if("1005".equals(type)){ //外联报警 return Results.succeed(statisticalService.externalYear(esParam)); }else if("1006".equals(type)){ //门禁报警 return Results.succeed(statisticalService.accessYear(esParam)); }else if("1007".equals(type)){ //移动终端 return Results.succeed(statisticalService.apponekeyYear(esParam)); }else if("1008".equals(type)){ //移动终端 return Results.succeed(statisticalService.pumpYear(esParam)); }else if("1010".equals(type)){ //电子围栏 return Results.succeed(statisticalService.wallYear(esParam)); }else if("1012".equals(type)){ //预警告警 return Results.succeed(statisticalService.digitizationYear(esParam)); }else if("1014".equals(type)){ //管线泄漏 return Results.succeed(statisticalService.tubeYear(esParam)); } return Results.succeed(); } /** * 报警数量分析月 */ @ApiOperation("报警数量分析月") @GetMapping("alarm/month") public Results alarmMonth(String month,String type){ LocalDate today = LocalDate.now(); int year = today.getYear(); int day = getDaysInMonth(Integer.valueOf(month),year); ESParam esParam = new ESParam(); esParam.setStart(year+"-"+month+"-01"); esParam.setEnd(year+"-"+month+"-"+day); if("1001".equals(type)){ //盗电报警 return Results.succeed(statisticalService.stealelecMonth(esParam)); }else if("1002".equals(type)){ //通用光电 return Results.succeed(statisticalService.cameraMonth(esParam)); }else if("1003".equals(type)){ //雷达报警 return Results.succeed(statisticalService.moveMonth(esParam)); }else if("1004".equals(type)){ //防火报警 return Results.succeed(statisticalService.fireMonth(esParam)); }else if("1005".equals(type)){ //外联报警 return Results.succeed(statisticalService.externalMonth(esParam)); }else if("1006".equals(type)){ //门禁报警 return Results.succeed(statisticalService.accessMonth(esParam)); }else if("1007".equals(type)){ //移动终端 return Results.succeed(statisticalService.apponekeyMonth(esParam)); }else if("1008".equals(type)){ //雷达停机 return Results.succeed(statisticalService.pumpMonth(esParam)); }else if("1010".equals(type)){ //电子围栏 return Results.succeed(statisticalService.wallMonth(esParam)); }else if("1012".equals(type)){ //预警告警 return Results.succeed(statisticalService.digitizationMonth(esParam)); }else if("1014".equals(type)){ //管线泄漏 return Results.succeed(statisticalService.tubeMonth(esParam)); } return Results.succeed(); } //返回每月天数 public int getDaysInMonth(int month, int year) { switch (month) { case Calendar.JANUARY: case Calendar.MARCH: case Calendar.MAY: case Calendar.JULY: case Calendar.AUGUST: case Calendar.OCTOBER: case Calendar.DECEMBER: return 31; case Calendar.APRIL: case Calendar.JUNE: case Calendar.SEPTEMBER: case Calendar.NOVEMBER: return 30; case Calendar.FEBRUARY: return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ? 29 : 28; default: throw new IllegalArgumentException("Invalid Month"); } } /** * 在线设备数 */ @ApiOperation("在线设备数") @GetMapping("unit") public Results unit(){ return Results.succeed(statisticalService.unit()); } /** * 报警数量 */ @ApiOperation("报警数量") @GetMapping("alarm/num") public Results num(){ List tenVo = new ArrayList<>(); TenVo stealelec = new TenVo(); stealelec.setName("盗电报警"); stealelec.setValue(statisticalService.stealelecNum()); tenVo.add(stealelec); TenVo camera = new TenVo(); camera.setName("通用光电"); camera.setValue(statisticalService.cameraNum()); tenVo.add(camera); TenVo move = new TenVo(); move.setName("雷达移动"); move.setValue(statisticalService.moveNum()); tenVo.add(move); TenVo fire = new TenVo(); fire.setName("雷达防火"); fire.setValue(statisticalService.fireNum()); tenVo.add(fire); TenVo external = new TenVo(); external.setName("外联报警"); external.setValue(statisticalService.externalNum()); tenVo.add(external); TenVo access = new TenVo(); access.setName("门禁报警"); access.setValue(statisticalService.accessNum()); tenVo.add(access); TenVo apponekey = new TenVo(); apponekey.setName("移动终端"); apponekey.setValue(statisticalService.apponekeyNum()); tenVo.add(apponekey); TenVo pump = new TenVo(); pump.setName("雷达停机"); pump.setValue(statisticalService.pumpNum()); tenVo.add(pump); TenVo wall = new TenVo(); wall.setName("电子围栏"); wall.setValue(statisticalService.wallNum()); tenVo.add(wall); TenVo digitization = new TenVo(); digitization.setName("预警报警"); digitization.setValue(statisticalService.digitizationNum()); tenVo.add(digitization); TenVo tube = new TenVo(); tube.setName("管线泄露"); tube.setValue(statisticalService.tubeNum()); tenVo.add(tube); return Results.succeed(tenVo); } /** * 24小时报警兴趣点前十 */ @ApiOperation("24小时报警兴趣点前十") @GetMapping("alarm/ten") public Results ten(){ return Results.succeed(statisticalService.ten()); } }