BlackGasController.java 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package com.ruoyi.web.controller.gas;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.date.DateUtil;
  4. import cn.hutool.core.util.ObjectUtil;
  5. import cn.hutool.core.util.StrUtil;
  6. import com.ruoyi.common.annotation.Log;
  7. import com.ruoyi.common.constant.ElasticConstants;
  8. import com.ruoyi.common.constant.HttpStatus;
  9. import com.ruoyi.common.core.controller.BaseController;
  10. import com.ruoyi.common.core.domain.AjaxResult;
  11. import com.ruoyi.common.core.domain.entity.SysDictData;
  12. import com.ruoyi.common.core.page.PageDomain;
  13. import com.ruoyi.common.core.page.TableDataInfo;
  14. import com.ruoyi.common.core.page.TableSupport;
  15. import com.ruoyi.common.enums.AggsType;
  16. import com.ruoyi.common.utils.poi.ExcelUtil;
  17. import com.ruoyi.framework.config.ElasticSearchClient;
  18. import com.ruoyi.system.domain.ShipRecognition;
  19. import com.ruoyi.system.service.IHeiYanService;
  20. import com.ruoyi.system.service.ISysDictTypeService;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import lombok.SneakyThrows;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.GetMapping;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.servlet.http.HttpServletResponse;
  31. import java.util.ArrayList;
  32. import java.util.Date;
  33. import java.util.HashMap;
  34. import java.util.List;
  35. import java.util.Map;
  36. /**
  37. * @Description: 黑烟接口
  38. * @Author: huangcheng
  39. * @Date: 2021/8/24
  40. * @Version V1.0
  41. */
  42. @RestController
  43. @RequestMapping("/black")
  44. @Api(tags = "黑烟接口")
  45. public class BlackGasController extends BaseController {
  46. @Autowired
  47. private ElasticSearchClient client;
  48. @Autowired
  49. private ISysDictTypeService dictTypeService;
  50. @Autowired
  51. private IHeiYanService heiYanService;
  52. @GetMapping("/list")
  53. @ApiOperation("列表数据")
  54. // @Log(title = "黑烟列表查询")
  55. public TableDataInfo list(ShipRecognition shipRecognition) {
  56. // 传来的参数
  57. Map<String, Object> params = shipRecognition.getParams();
  58. Map<String, Object> equalsCondition = new HashMap<>();
  59. // 组装查询条件
  60. equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
  61. equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
  62. equalsCondition.put("monitorPointName", shipRecognition.getMonitorPointName());
  63. equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
  64. equalsCondition.put("rcgSoot", shipRecognition.getRcgSoots());
  65. equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
  66. equalsCondition.put("orgName", shipRecognition.getOrgName());
  67. if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
  68. equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
  69. }
  70. // 组装范围查询条件
  71. Map<String, Object> rangeCondition = new HashMap<>();
  72. if (ObjectUtil.isNotEmpty(params.get("beginTime"))) {
  73. params.put("beginTime", params.get("beginTime") + " 00:00:00");
  74. }
  75. if (ObjectUtil.isNotEmpty(params.get("endTime"))) {
  76. params.put("endTime", params.get("endTime") + " 23:59:59");
  77. }
  78. rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
  79. List<String> orderBy = new ArrayList<>();
  80. orderBy.add("-createTime");
  81. PageDomain pageDomain = TableSupport.buildPageRequest();
  82. Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  83. // 查询黑烟系统的设备信息
  84. Map<String, String> heiyanDevice = heiYanService.queryDeviceMap();
  85. TableDataInfo rspData = new TableDataInfo();
  86. rspData.setCode(HttpStatus.SUCCESS);
  87. rspData.setMsg("查询成功");
  88. List<ShipRecognition> pageList = Convert.toList(ShipRecognition.class, maps.get("pageList"));
  89. for (ShipRecognition recognition : pageList) {
  90. recognition.setDeviceName(heiyanDevice.get(recognition.getDeviceId()));
  91. // 配合内外网都能访问,使用相对地址
  92. recognition.setAllImgUrl(StrUtil.removeAll(recognition.getAllImgUrl(), "http://198.17.23.29:8091"));
  93. recognition.setSootImgUrl(StrUtil.removePrefix(recognition.getSootImgUrl(), "http://198.17.23.29:8091"));
  94. }
  95. rspData.setRows(pageList);
  96. rspData.setTotal(Convert.toLong(maps.get("totalNum")));
  97. return rspData;
  98. }
  99. @SneakyThrows
  100. // @Log(title = "黑烟记录导出", businessType = BusinessType.EXPORT)
  101. // @PreAuthorize("@ss.hasPermi('system:black:export')")
  102. @GetMapping("/export")
  103. public void export(ShipRecognition shipRecognition, HttpServletRequest request, HttpServletResponse response) {
  104. // 传来的参数
  105. Map<String, Object> params = shipRecognition.getParams();
  106. Map<String, Object> equalsCondition = new HashMap<>();
  107. // 组装查询条件
  108. equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
  109. equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
  110. equalsCondition.put("monitorPointName", StrUtil.isBlank(shipRecognition.getMonitorPointName()) ? null : StrUtil.concat(true, "*", shipRecognition.getMonitorPointName(), "*"));
  111. equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
  112. equalsCondition.put("rcgSoot", shipRecognition.getRcgSoot());
  113. equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
  114. equalsCondition.put("orgName", shipRecognition.getOrgName());
  115. if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
  116. equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
  117. }
  118. // 组装范围查询条件
  119. Map<String, Object> rangeCondition = new HashMap<>();
  120. if (ObjectUtil.isNotEmpty(params.get("beginTime"))) {
  121. params.put("beginTime", params.get("beginTime") + " 00:00:00");
  122. }
  123. if (ObjectUtil.isNotEmpty(params.get("endTime"))) {
  124. params.put("endTime", params.get("endTime") + " 23:59:59");
  125. }
  126. rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
  127. List<String> orderBy = new ArrayList<>();
  128. orderBy.add("-createTime");
  129. PageDomain pageDomain = TableSupport.buildPageRequest();
  130. Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  131. ExcelUtil<ShipRecognition> util = new ExcelUtil<>(ShipRecognition.class);
  132. util.exportExcelByEasyPoi("黑烟违规数据_" + DateUtil.today(),
  133. "黑烟违规数据",
  134. "黑烟违规数据",
  135. ShipRecognition.class,
  136. Convert.toList(ShipRecognition.class, maps.get("pageList")),
  137. request, response);
  138. }
  139. @GetMapping("/snapPos/static")
  140. @ApiOperation("黑烟抓拍分布统计")
  141. @Log(title = "黑烟抓拍分布统计")
  142. public AjaxResult snapPosStatic(@RequestParam(required = false) String month) {
  143. String beginTime = "";
  144. String endTime = "";
  145. if (StrUtil.isBlank(month)) {
  146. beginTime = DateUtil.formatDate(DateUtil.beginOfMonth(new Date())) + " 00:00:00";
  147. endTime = DateUtil.formatDate(DateUtil.endOfMonth(new Date())) + " 23:59:59";
  148. } else {
  149. beginTime = month + "-01 00:00:00";
  150. endTime = DateUtil.formatDate(DateUtil.endOfMonth(DateUtil.parseDate(beginTime))) + " 23:59:59";
  151. }
  152. Map<String, Object> rangeCondition = new HashMap<>();
  153. rangeCondition.put("createTime", StrUtil.concat(true, "[", beginTime, ",", endTime, "]"));
  154. Map<Object, Object> aggs = client.aggs(AggsType.count, "monitorPointName", "id", null, rangeCondition, ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  155. // 构造黑烟的数据
  156. List<SysDictData> heiyan_snap_pos = dictTypeService.selectDictDataByType("heiyan_snap_pos");
  157. Map<String, Object> result = new HashMap<>();
  158. for (SysDictData heiyan_snap_po : heiyan_snap_pos) {
  159. result.put(heiyan_snap_po.getDictLabel(), ObjectUtil.isEmpty(aggs.get(heiyan_snap_po.getDictLabel())) ? 0 : aggs.get(heiyan_snap_po.getDictLabel()));
  160. }
  161. return AjaxResult.success(result);
  162. }
  163. }