123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package com.ruoyi.web.controller.gas;
- import cn.hutool.core.convert.Convert;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.ObjectUtil;
- import cn.hutool.core.util.StrUtil;
- import com.ruoyi.common.annotation.Log;
- 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.enums.AggsType;
- import com.ruoyi.common.utils.poi.ExcelUtil;
- import com.ruoyi.framework.config.ElasticSearchClient;
- import com.ruoyi.system.domain.ShipRecognition;
- import com.ruoyi.system.service.IHeiYanService;
- import com.ruoyi.system.service.ISysDictTypeService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.SneakyThrows;
- 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 javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * @Description: 黑烟接口
- * @Author: huangcheng
- * @Date: 2021/8/24
- * @Version V1.0
- */
- @RestController
- @RequestMapping("/black")
- @Api(tags = "黑烟接口")
- public class BlackGasController extends BaseController {
- @Autowired
- private ElasticSearchClient client;
- @Autowired
- private ISysDictTypeService dictTypeService;
- @Autowired
- private IHeiYanService heiYanService;
- @GetMapping("/list")
- @ApiOperation("列表数据")
- // @Log(title = "黑烟列表查询")
- public TableDataInfo list(ShipRecognition shipRecognition) {
- // 传来的参数
- Map<String, Object> params = shipRecognition.getParams();
- Map<String, Object> equalsCondition = new HashMap<>();
- // 组装查询条件
- equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
- equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
- equalsCondition.put("monitorPointName", shipRecognition.getMonitorPointName());
- equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
- equalsCondition.put("rcgSoot", shipRecognition.getRcgSoots());
- equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
- equalsCondition.put("orgName", shipRecognition.getOrgName());
- if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
- equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
- }
- // 组装范围查询条件
- Map<String, Object> rangeCondition = new HashMap<>();
- 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");
- }
- rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
- List<String> orderBy = new ArrayList<>();
- orderBy.add("-createTime");
- PageDomain pageDomain = TableSupport.buildPageRequest();
- Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
- // 查询黑烟系统的设备信息
- Map<String, String> heiyanDevice = heiYanService.queryDeviceMap();
- TableDataInfo rspData = new TableDataInfo();
- rspData.setCode(HttpStatus.SUCCESS);
- rspData.setMsg("查询成功");
- List<ShipRecognition> pageList = Convert.toList(ShipRecognition.class, maps.get("pageList"));
- for (ShipRecognition recognition : pageList) {
- recognition.setDeviceName(heiyanDevice.get(recognition.getDeviceId()));
- // 配合内外网都能访问,使用相对地址
- recognition.setAllImgUrl(StrUtil.removeAll(recognition.getAllImgUrl(), "http://198.17.23.29:8091"));
- recognition.setSootImgUrl(StrUtil.removePrefix(recognition.getSootImgUrl(), "http://198.17.23.29:8091"));
- }
- rspData.setRows(pageList);
- rspData.setTotal(Convert.toLong(maps.get("totalNum")));
- return rspData;
- }
- @SneakyThrows
- // @Log(title = "黑烟记录导出", businessType = BusinessType.EXPORT)
- // @PreAuthorize("@ss.hasPermi('system:black:export')")
- @GetMapping("/export")
- public void export(ShipRecognition shipRecognition, HttpServletRequest request, HttpServletResponse response) {
- // 传来的参数
- Map<String, Object> params = shipRecognition.getParams();
- Map<String, Object> equalsCondition = new HashMap<>();
- // 组装查询条件
- equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
- equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
- equalsCondition.put("monitorPointName", StrUtil.isBlank(shipRecognition.getMonitorPointName()) ? null : StrUtil.concat(true, "*", shipRecognition.getMonitorPointName(), "*"));
- equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
- equalsCondition.put("rcgSoot", shipRecognition.getRcgSoot());
- equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
- equalsCondition.put("orgName", shipRecognition.getOrgName());
- if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
- equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
- }
- // 组装范围查询条件
- Map<String, Object> rangeCondition = new HashMap<>();
- 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");
- }
- rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
- List<String> orderBy = new ArrayList<>();
- orderBy.add("-createTime");
- PageDomain pageDomain = TableSupport.buildPageRequest();
- Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
- ExcelUtil<ShipRecognition> util = new ExcelUtil<>(ShipRecognition.class);
- util.exportExcelByEasyPoi("黑烟违规数据_" + DateUtil.today(),
- "黑烟违规数据",
- "黑烟违规数据",
- ShipRecognition.class,
- Convert.toList(ShipRecognition.class, maps.get("pageList")),
- request, response);
- }
- @GetMapping("/snapPos/static")
- @ApiOperation("黑烟抓拍分布统计")
- @Log(title = "黑烟抓拍分布统计")
- public AjaxResult snapPosStatic(@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> rangeCondition = new HashMap<>();
- rangeCondition.put("createTime", StrUtil.concat(true, "[", beginTime, ",", endTime, "]"));
- Map<Object, Object> aggs = client.aggs(AggsType.count, "monitorPointName", "id", null, rangeCondition, ElasticConstants.HEIYAN_SHIP_RECOGNITION);
- // 构造黑烟的数据
- List<SysDictData> heiyan_snap_pos = dictTypeService.selectDictDataByType("heiyan_snap_pos");
- Map<String, Object> result = new HashMap<>();
- for (SysDictData heiyan_snap_po : heiyan_snap_pos) {
- result.put(heiyan_snap_po.getDictLabel(), ObjectUtil.isEmpty(aggs.get(heiyan_snap_po.getDictLabel())) ? 0 : aggs.get(heiyan_snap_po.getDictLabel()));
- }
- return AjaxResult.success(result);
- }
- }
|