Browse Source

硫超标分布统计接口

459242451@qq.com 3 years ago
parent
commit
d26bca3902

+ 37 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/gas/So2Controller.java

@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.gas;
 
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -9,10 +10,12 @@ import com.ruoyi.common.constant.ElasticConstants;
 import com.ruoyi.common.constant.HttpStatus;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.page.PageDomain;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.page.TableSupport;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.enums.AggsType;
 import com.ruoyi.framework.config.ElasticSearchClient;
 import com.ruoyi.system.domain.GuapAlert;
 import com.ruoyi.system.domain.GuapMonitorPoint;
@@ -22,14 +25,17 @@ import com.ruoyi.system.domain.XiuTanSemInstrument;
 import com.ruoyi.system.service.IAisDatabase;
 import com.ruoyi.system.service.IHeiYanService;
 import com.ruoyi.system.service.ISo2Service;
+import com.ruoyi.system.service.ISysDictTypeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -55,6 +61,8 @@ public class So2Controller extends BaseController {
     private IHeiYanService heiYanService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
 
     @GetMapping("/guangpu/list")
     @ApiOperation("光谱-硫嫌疑船舶列表数据")
@@ -184,4 +192,33 @@ public class So2Controller extends BaseController {
         return AjaxResult.success(result);
     }
 
+    @GetMapping("/snapPos/static")
+    @ApiOperation("硫含量超标船舶分布统计")
+    public AjaxResult so2SnapPosStatic(@RequestParam(required = false) String month) {
+        String beginTime = "";
+        String endTime = "";
+        if (StrUtil.isBlank(month)) {
+            beginTime = DateUtil.formatDate(DateUtil.beginOfMonth(new Date())) + " 00:00:00";
+            endTime = DateUtil.formatDate(DateUtil.endOfMonth(new Date())) + " 23:59:59";
+        } else {
+            beginTime = month + "-01 00:00:00";
+            endTime = DateUtil.formatDate(DateUtil.endOfMonth(DateUtil.parseDate(beginTime))) + " 23:59:59";
+        }
+        Map<String, Object> aisRangeCondition = new HashMap<>();
+        aisRangeCondition.put("peakTime", StrUtil.concat(true, "[", beginTime, ",", endTime, "]"));
+        Map<Object, Object> aisAggs = client.aggs(ElasticConstants.AIS_ILLEGAL_SHIP, AggsType.count, "monitorPointName", "id", null, aisRangeCondition);
+        Map<String, Object> so2RangeCondition = new HashMap<>();
+        so2RangeCondition.put("createTime", StrUtil.concat(true, "[", beginTime, ",", endTime, "]"));
+        Map<Object, Object> so2Aggs = client.aggs(ElasticConstants.SO2_ALERT, AggsType.count, "monitorPointName", "id", null, so2RangeCondition);
+        // 构造硫的数据
+        List<SysDictData> so2_snap_pos = dictTypeService.selectDictDataByType("so2_snap_pos");
+        Map<String, Object> result = new HashMap<>();
+        for (SysDictData so2_snap_po : so2_snap_pos) {
+            result.put(so2_snap_po.getDictLabel(),
+                    (ObjectUtil.isEmpty(aisAggs.get(so2_snap_po.getDictLabel())) ? 0 : Convert.toInt(aisAggs.get(so2_snap_po.getDictLabel())))
+                            + (ObjectUtil.isEmpty(so2Aggs.get(so2_snap_po.getDictLabel())) ? 0 : Convert.toInt(so2Aggs.get(so2_snap_po.getDictLabel()))));
+        }
+        return AjaxResult.success(result);
+    }
+
 }