aijinhui
2023-10-12 87a2fe3e6f1472a7e87e02d3fd956eee17b85352
ard-work/src/main/java/com/ruoyi/statistical/controller/StatisticalController.java
@@ -2,14 +2,18 @@
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.security.access.prepost.PreAuthorize;
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;
/**
@@ -73,6 +77,9 @@
        }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));
@@ -86,4 +93,163 @@
        return Results.succeed();
    }
    /**
     * 报警数量分析月
     */
    @ApiOperation("报警数量分析月")
    @GetMapping("alarm/month")
    public Results alarmMonth(Integer month,String type){
        LocalDate today = LocalDate.now();
        int year = today.getYear();
        int day =  getDaysInMonth(month);
        ESParam esParam = new ESParam();
        esParam.setStart(year+"-"+month+"-01");
        esParam.setEnd(year+"-"+month+"-"+day);
        esParam.setMonth(month);
        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) {
        Calendar calendar = Calendar.getInstance();
        switch (month) {
            case 1: case 3: case 5: case 7: case 8: case 10: case 12:
                return 31;
            case 4: case 6: case 9: case 11:
                return 30;
            case 2:
                if (calendar.get(Calendar.YEAR) % 4 == 0 && (calendar.get(Calendar.YEAR) % 100 != 0 || calendar.get(Calendar.YEAR) % 400 == 0)) {
                    return 29;
                } else {
                    return 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> 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());
    }
    /**
     * 抽油机运行状态
     */
    @ApiOperation("抽油机运行状态")
    @GetMapping("alarm/pump")
    public Results pump(){
        return Results.succeed(statisticalService.pump());
    }
    /**
     * 数据处理
     */
    @ApiOperation("数据处理")
    @GetMapping("data")
    public void data(String msg){
        statisticalService.data(msg);
    }
}