BlackGasController.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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.enums.BusinessType;
  17. import com.ruoyi.common.utils.poi.ExcelUtil;
  18. import com.ruoyi.framework.config.ElasticSearchClient;
  19. import com.ruoyi.system.domain.ShipRecognition;
  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. @GetMapping("/list")
  51. @ApiOperation("列表数据")
  52. public TableDataInfo list(ShipRecognition shipRecognition) {
  53. // 传来的参数
  54. Map<String, Object> params = shipRecognition.getParams();
  55. Map<String, Object> equalsCondition = new HashMap<>();
  56. // 组装查询条件
  57. equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
  58. equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
  59. equalsCondition.put("monitorPointName", shipRecognition.getMonitorPointName());
  60. equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
  61. equalsCondition.put("rcgSoot", shipRecognition.getRcgSoots());
  62. equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
  63. equalsCondition.put("orgName", shipRecognition.getOrgName());
  64. if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
  65. equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
  66. }
  67. // 组装范围查询条件
  68. Map<String, Object> rangeCondition = new HashMap<>();
  69. if (ObjectUtil.isNotEmpty(params.get("beginTime"))) {
  70. params.put("beginTime", params.get("beginTime") + " 00:00:00");
  71. }
  72. if (ObjectUtil.isNotEmpty(params.get("endTime"))) {
  73. params.put("endTime", params.get("endTime") + " 23:59:59");
  74. }
  75. rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
  76. List<String> orderBy = new ArrayList<>();
  77. orderBy.add("-createTime");
  78. PageDomain pageDomain = TableSupport.buildPageRequest();
  79. Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  80. TableDataInfo rspData = new TableDataInfo();
  81. rspData.setCode(HttpStatus.SUCCESS);
  82. rspData.setMsg("查询成功");
  83. rspData.setRows(Convert.toList(ShipRecognition.class, maps.get("pageList")));
  84. rspData.setTotal(Convert.toLong(maps.get("totalNum")));
  85. return rspData;
  86. }
  87. @SneakyThrows
  88. @Log(title = "黑烟记录导出", businessType = BusinessType.EXPORT)
  89. // @PreAuthorize("@ss.hasPermi('system:black:export')")
  90. @GetMapping("/export")
  91. public void export(ShipRecognition shipRecognition, HttpServletRequest request, HttpServletResponse response) {
  92. // 传来的参数
  93. Map<String, Object> params = shipRecognition.getParams();
  94. Map<String, Object> equalsCondition = new HashMap<>();
  95. // 组装查询条件
  96. equalsCondition.put("mmsi", StrUtil.isBlank(shipRecognition.getMmsi()) ? null : StrUtil.concat(true, "*", shipRecognition.getMmsi(), "*"));
  97. equalsCondition.put("shipName", StrUtil.isBlank(shipRecognition.getShipName()) ? null : StrUtil.concat(true, "*", shipRecognition.getShipName(), "*"));
  98. equalsCondition.put("monitorPointName", StrUtil.isBlank(shipRecognition.getMonitorPointName()) ? null : StrUtil.concat(true, "*", shipRecognition.getMonitorPointName(), "*"));
  99. equalsCondition.put("shipRegionType", shipRecognition.getShipRegionType());
  100. equalsCondition.put("rcgSoot", shipRecognition.getRcgSoot());
  101. equalsCondition.put("illegalStatus", shipRecognition.getIllegalStatus());
  102. equalsCondition.put("orgName", shipRecognition.getOrgName());
  103. if (StrUtil.isNotBlank(shipRecognition.getFilterMmsi()) && StrUtil.isBlank(shipRecognition.getMmsi())) {
  104. equalsCondition.put("mmsi", shipRecognition.getFilterMmsi());
  105. }
  106. // 组装范围查询条件
  107. Map<String, Object> rangeCondition = new HashMap<>();
  108. if (ObjectUtil.isNotEmpty(params.get("beginTime"))) {
  109. params.put("beginTime", params.get("beginTime") + " 00:00:00");
  110. }
  111. if (ObjectUtil.isNotEmpty(params.get("endTime"))) {
  112. params.put("endTime", params.get("endTime") + " 23:59:59");
  113. }
  114. rangeCondition.put("createTime", StrUtil.concat(true, "[", Convert.toStr(params.get("beginTime")), ",", Convert.toStr(params.get("endTime")), "]"));
  115. List<String> orderBy = new ArrayList<>();
  116. orderBy.add("-createTime");
  117. PageDomain pageDomain = TableSupport.buildPageRequest();
  118. Map<String, Object> maps = client.searchDocument(equalsCondition, rangeCondition, orderBy, pageDomain.getPageNum(), pageDomain.getPageSize(), ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  119. ExcelUtil<ShipRecognition> util = new ExcelUtil<>(ShipRecognition.class);
  120. util.exportExcelByEasyPoi("黑烟违规数据_" + DateUtil.today(),
  121. "黑烟违规数据",
  122. "黑烟违规数据",
  123. ShipRecognition.class,
  124. Convert.toList(ShipRecognition.class, maps.get("pageList")),
  125. request, response);
  126. }
  127. @GetMapping("/snapPos/static")
  128. @ApiOperation("黑烟抓拍分布统计")
  129. public AjaxResult snapPosStatic(@RequestParam(required = false) String month) {
  130. String beginTime = "";
  131. String endTime = "";
  132. if (StrUtil.isBlank(month)) {
  133. beginTime = DateUtil.formatDate(DateUtil.beginOfMonth(new Date())) + " 00:00:00";
  134. endTime = DateUtil.formatDate(DateUtil.endOfMonth(new Date())) + " 23:59:59";
  135. } else {
  136. beginTime = month + "-01 00:00:00";
  137. endTime = DateUtil.formatDate(DateUtil.endOfMonth(DateUtil.parseDate(beginTime))) + " 23:59:59";
  138. }
  139. Map<String, Object> rangeCondition = new HashMap<>();
  140. rangeCondition.put("createTime", StrUtil.concat(true, "[", beginTime, ",", endTime, "]"));
  141. Map<Object, Object> aggs = client.aggs(AggsType.count, "monitorPointName", "id", null, rangeCondition, ElasticConstants.HEIYAN_SHIP_RECOGNITION);
  142. // 构造黑烟的数据
  143. List<SysDictData> heiyan_snap_pos = dictTypeService.selectDictDataByType("heiyan_snap_pos");
  144. Map<String, Object> result = new HashMap<>();
  145. for (SysDictData heiyan_snap_po : heiyan_snap_pos) {
  146. result.put(heiyan_snap_po.getDictLabel(), ObjectUtil.isEmpty(aggs.get(heiyan_snap_po.getDictLabel())) ? 0 : aggs.get(heiyan_snap_po.getDictLabel()));
  147. }
  148. return AjaxResult.success(result);
  149. }
  150. }