package com.ruoyi.web.controller.gas; import cn.hutool.core.convert.Convert; import com.ruoyi.common.constant.ElasticConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.framework.config.ElasticSearchClient; import com.ruoyi.system.domain.DeviceBo; import com.ruoyi.system.domain.IllegalInfo; import com.ruoyi.system.domain.SyncPost; import com.ruoyi.system.service.IAisDatabase; import com.ruoyi.system.service.IHeiYanService; import com.ruoyi.system.service.ISo2Service; import com.ruoyi.web.service.IGasCommonService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; 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 java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @Description: 公共提出接口 * @Author: huangcheng * @Date: 2021/8/30 * @Version V1.0 */ @RestController @RequestMapping("/gas/common") @Api(tags = "公共接口") public class GasCommonController { @Autowired private IGasCommonService gasCommonService; @Autowired private ElasticSearchClient client; @Autowired private ISo2Service so2Service; @Autowired private IAisDatabase aisDatabase; @Autowired private IHeiYanService heiYanService; @PreAuthorize("@ss.hasPermi('system:gas:sync')") @PostMapping("/sync") @ApiOperation("第三方表数据同步ES") public AjaxResult sync(@RequestBody SyncPost syncPost) { gasCommonService.sync(syncPost); return AjaxResult.success("同步中..."); } @GetMapping("/illegalShipStatic") @ApiOperation("获取硫、黑烟超标数量统计") public AjaxResult illegalShipStatic() { // Map params = baseEntity.getParams(); // if (ObjectUtil.isNotEmpty(params.get("beginTime"))) { // params.put("beginTime", params.get("beginTime") + " 00:00:00"); // } // if (ObjectUtil.isNotEmpty(params.get("endTime"))) { // params.put("endTime", params.get("endTime") + " 23:59:59"); // } // Map so2RangeCondition = new HashMap<>(); // so2RangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]")); // so2RangeCondition.put("peakTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]")); long so2Count = client.count(null, null, ElasticConstants.SO2_ALERT, ElasticConstants.AIS_ILLEGAL_SHIP); long blackCount = client.count(null, null, ElasticConstants.HEIYAN_SHIP_RECOGNITION); Map result = new HashMap<>(); result.put("so2Count", so2Count); result.put("blackCount", blackCount); return AjaxResult.success(result); } @GetMapping("/queryIllegalInfoList") @ApiOperation("获取嫌疑或违规船舶信息") public AjaxResult queryIllegalInfoList(@RequestParam String illegalStatus, @RequestParam(required = false, defaultValue = "20") Integer size) { Map equalsCondition = new HashMap<>(); equalsCondition.put("illegalStatus", illegalStatus); List orderBy = new ArrayList<>(); orderBy.add("-createTime"); Map stringObjectMap = client.searchDocument(equalsCondition, null, orderBy, 1, size, ElasticConstants.AIS_ILLEGAL_SHIP, ElasticConstants.SO2_ALERT, ElasticConstants.HEIYAN_SHIP_RECOGNITION); return AjaxResult.success(Convert.toList(IllegalInfo.class, stringObjectMap.get("pageList"))); } @GetMapping("/queryDeviceList") @ApiOperation("获取所有设备数据") public AjaxResult queryDeviceList(@RequestParam(required = false) String monitor) { List njsanq = new ArrayList<>(); List njsiq = new ArrayList<>(); List ry = new ArrayList<>(); List tz = new ArrayList<>(); List jy = new ArrayList<>(); List st = new ArrayList<>(); Map data = new HashMap<>(); List so2 = so2Service.queryDeviceList(monitor); List ais = aisDatabase.queryDeviceList(monitor); List heiyan = heiYanService.queryDeviceList(monitor); for (DeviceBo deviceBo : so2) { deviceBo.setOrgName(orgMap.get(deviceBo.getMonitorName())); switch (deviceBo.getMonitorName()) { case "南京三桥": njsanq.add(deviceBo); case "南京四桥": njsiq.add(deviceBo); case "润扬大桥": ry.add(deviceBo); case "泰州大桥": tz.add(deviceBo); case "江阴大桥": jy.add(deviceBo); case "苏通大桥": st.add(deviceBo); } } for (DeviceBo deviceBo : ais) { deviceBo.setOrgName(orgMap.get(deviceBo.getMonitorName())); switch (deviceBo.getMonitorName()) { case "南京三桥": njsanq.add(deviceBo); case "南京四桥": njsiq.add(deviceBo); case "润扬大桥": ry.add(deviceBo); case "泰州大桥": tz.add(deviceBo); case "江阴大桥": jy.add(deviceBo); case "苏通大桥": st.add(deviceBo); } } for (DeviceBo deviceBo : heiyan) { switch (deviceBo.getMonitorName()) { case "南京三桥": njsanq.add(deviceBo); case "南京四桥": njsiq.add(deviceBo); case "润扬大桥": ry.add(deviceBo); case "泰州大桥": tz.add(deviceBo); case "江阴大桥": jy.add(deviceBo); case "苏通大桥": st.add(deviceBo); } } data.put("南京三桥", njsanq); data.put("南京四桥", njsiq); data.put("润扬大桥", ry); data.put("泰州大桥", tz); data.put("江阴大桥", jy); data.put("苏通大桥", st); return AjaxResult.success(data); } public final static Map orgMap = new HashMap() {{ put("南京三桥", "南京海事局"); put("南京四桥", "南京海事局"); put("润扬大桥", "扬州海事局"); put("泰州大桥", "泰州海事局"); put("江阴大桥", "江阴海事局"); put("苏通大桥", "常熟海事局"); }}; }