AlarmDetailsController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. package com.huaxu.controller;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.core.metadata.OrderItem;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.huaxu.common.EasyExcelUtil;
  6. import com.huaxu.dto.AlarmDetailsDto;
  7. import com.huaxu.dto.AlarmDetailsHistoryDto;
  8. import com.huaxu.dto.AlarmDetailsRealTimeDto;
  9. import com.huaxu.entity.AlarmDetailsEntity;
  10. import com.huaxu.model.AjaxMessage;
  11. import com.huaxu.model.Pagination;
  12. import com.huaxu.model.ResultStatus;
  13. import com.huaxu.service.AlarmDetailsService;
  14. import com.huaxu.service.SceneService;
  15. import io.swagger.annotations.Api;
  16. import io.swagger.annotations.ApiOperation;
  17. import io.swagger.annotations.ApiParam;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.beans.factory.annotation.Value;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.text.ParseException;
  24. import java.text.SimpleDateFormat;
  25. import java.util.ArrayList;
  26. import java.util.Arrays;
  27. import java.util.Date;
  28. import java.util.List;
  29. /**
  30. * @description
  31. * @auto wangli
  32. * @data 2020-11-16 11:05
  33. */
  34. @RestController
  35. @RequestMapping("/AlarmDetails")
  36. @Api(tags = "报警详情信息管理")
  37. @Slf4j
  38. public class AlarmDetailsController {
  39. @Autowired
  40. private AlarmDetailsService alarmDetailsService;
  41. @Autowired
  42. private SceneService sceneService;
  43. @Value("${SMS.sys_excel_path}")
  44. private String baseDir;
  45. @RequestMapping(value="get" , method = RequestMethod.GET)
  46. @ApiOperation(value = "查询单个报警详情信息")
  47. public AjaxMessage<AlarmDetailsEntity> get( @ApiParam(value = "报警详情信息id") @RequestParam Integer id){
  48. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.selectById(id));
  49. }
  50. @RequestMapping(value="selectPage" , method = RequestMethod.GET)
  51. @ApiOperation(value = "分页查询报警详情信息")
  52. public AjaxMessage<Pagination<AlarmDetailsDto>> selectPage(
  53. @ApiParam(value = "查询:设备名称") @RequestParam(required = false) String condition,
  54. @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
  55. @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
  56. @ApiParam(value = "所属场景id") @RequestParam(required = false) Integer sceneId,
  57. @ApiParam(value = "查询:开始时间") @RequestParam(required = false) String startTime,
  58. @ApiParam(value = "查询:结束时间") @RequestParam(required = false) String endTime,
  59. @ApiParam(value = "数据类型:1 实时报警 0 历史报警") @RequestParam(required = false) Integer state,
  60. @ApiParam(value = "页数,非必传,默认第一页", defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
  61. @ApiParam(value = "条数,非必传,默认10条", defaultValue = "10") @RequestParam(required = false, defaultValue = "10") Integer pageSize
  62. ){
  63. AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
  64. alarmDetailsDto.setCondition(condition);
  65. alarmDetailsDto.setAlarmType(alarmType);
  66. alarmDetailsDto.setOpState(opState);
  67. alarmDetailsDto.setState(state);
  68. SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  69. try {
  70. if(StringUtils.isNotBlank(startTime)){
  71. alarmDetailsDto.setStartTime(f.parse(startTime));
  72. }
  73. if(StringUtils.isNotBlank(endTime)){
  74. alarmDetailsDto.setEndTime(f.parse(endTime));
  75. }
  76. }catch (ParseException e){
  77. log.error("报警信息查询时间转换错误,原数据:beginTime:{},endTime:{},异常信息:{}",startTime,endTime,e.getMessage());
  78. alarmDetailsDto.setStartTime(new Date());
  79. alarmDetailsDto.setEndTime(new Date());
  80. }
  81. IPage<AlarmDetailsDto> iPage = new Page<>(pageNum, pageSize);
  82. if(iPage.orders().size() == 0){
  83. OrderItem orderItem =new OrderItem();
  84. orderItem.setAsc(false);
  85. orderItem.setColumn("t.date_create");
  86. iPage.orders().add(orderItem);
  87. }
  88. if(sceneId != null && sceneId != 0) {
  89. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
  90. if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
  91. return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
  92. }
  93. }
  94. iPage = alarmDetailsService.selectPage(iPage,alarmDetailsDto);
  95. Pagination<AlarmDetailsDto> pages = new Pagination<>(iPage);
  96. return new AjaxMessage<>(ResultStatus.OK, pages);
  97. }
  98. @RequestMapping(value="add" , method = RequestMethod.POST)
  99. @ApiOperation(value = "新增报警详情信息")
  100. public AjaxMessage<Integer> add(@ApiParam(value = "报警详情信息") @RequestBody AlarmDetailsEntity alarmDetailsEntity){
  101. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.insert(alarmDetailsEntity));
  102. }
  103. @RequestMapping(value="edit" , method = RequestMethod.POST)
  104. @ApiOperation(value = "修改报警详情信息")
  105. public AjaxMessage<Integer> edit( @ApiParam(value = "报警详情信息") @RequestBody AlarmDetailsEntity alarmDetailsEntity){
  106. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.update(alarmDetailsEntity));
  107. }
  108. @RequestMapping(value="delete" , method = RequestMethod.DELETE)
  109. @ApiOperation(value = "单个删除报警详情信息")
  110. public AjaxMessage<Integer> delete( @ApiParam(value = "报警详情信息id") @RequestParam Integer id){
  111. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.deleteById(id));
  112. }
  113. @RequestMapping(value="suspendedById" , method = RequestMethod.POST)
  114. @ApiOperation(value = "挂起报警信息")
  115. public AjaxMessage<Integer> suspendedById( @ApiParam(value = "报警详情信息id") @RequestParam Integer id){
  116. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.suspendedById(id,0));
  117. }
  118. @RequestMapping(value="renewById" , method = RequestMethod.POST)
  119. @ApiOperation(value = "恢复挂起报警信息")
  120. public AjaxMessage<Integer> renewById( @ApiParam(value = "报警详情信息id") @RequestParam Integer id){
  121. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.suspendedById(id,1));
  122. }
  123. @RequestMapping(value="selectHistoryPage" , method = RequestMethod.GET)
  124. @ApiOperation(value = "分页查询报历史警详情信息")
  125. public AjaxMessage<Pagination<AlarmDetailsHistoryDto>> selectHistoryPage(
  126. @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
  127. @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
  128. @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
  129. @ApiParam(value = "所属场景id") @RequestParam(required = false) Integer sceneId,
  130. @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
  131. @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime,
  132. @ApiParam(value = "页数,非必传,默认第一页", defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
  133. @ApiParam(value = "条数,非必传,默认10条", defaultValue = "10") @RequestParam(required = false, defaultValue = "10") Integer pageSize
  134. ){
  135. AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
  136. alarmDetailsDto.setCondition(condition);
  137. alarmDetailsDto.setAlarmType(alarmType);
  138. alarmDetailsDto.setOpState(opState);
  139. SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  140. try {
  141. if(StringUtils.isNotBlank(startTime)){
  142. alarmDetailsDto.setStartTime(f.parse(startTime));
  143. }
  144. if(StringUtils.isNotBlank(endTime)){
  145. alarmDetailsDto.setEndTime(f.parse(endTime));
  146. }
  147. }catch (ParseException e){
  148. log.error("报警信息查询时间转换错误,原数据:beginTime:{},endTime:{},异常信息:{}",startTime,endTime,e.getMessage());
  149. alarmDetailsDto.setStartTime(new Date());
  150. alarmDetailsDto.setEndTime(new Date());
  151. }
  152. IPage<AlarmDetailsHistoryDto> iPage = new Page<>(pageNum, pageSize);
  153. if(iPage.orders().size() == 0){
  154. OrderItem orderItem =new OrderItem();
  155. orderItem.setAsc(false);
  156. orderItem.setColumn("a.ALARM_START_TIME");
  157. iPage.orders().add(orderItem);
  158. }
  159. if(sceneId != null && sceneId != 0) {
  160. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
  161. if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
  162. return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
  163. }
  164. }
  165. iPage = alarmDetailsService.selectHistoryPage(iPage,alarmDetailsDto);
  166. Pagination<AlarmDetailsHistoryDto> pages = new Pagination<>(iPage);
  167. return new AjaxMessage<>(ResultStatus.OK, pages);
  168. }
  169. @RequestMapping(value="exportHistory" , method = RequestMethod.GET)
  170. @ApiOperation(value = "导出历史报警信息")
  171. public AjaxMessage<String> exportHistory(
  172. @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
  173. @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
  174. @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
  175. @ApiParam(value = "所属场景id") @RequestParam(required = false) Integer sceneId,
  176. @ApiParam(value = "报警信息id") @RequestParam(required = false) List<Integer> ids,
  177. @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
  178. @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
  179. ){
  180. if(ids != null && ids.size()>0){
  181. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警记录",alarmDetailsService.selectHistoryByIds(ids) );
  182. return new AjaxMessage<>(ResultStatus.OK, filePath);
  183. }
  184. AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
  185. alarmDetailsDto.setCondition(condition);
  186. alarmDetailsDto.setAlarmType(alarmType);
  187. alarmDetailsDto.setOpState(opState);
  188. SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  189. try {
  190. if(StringUtils.isNotBlank(startTime)){
  191. alarmDetailsDto.setStartTime(f.parse(startTime));
  192. }
  193. if(StringUtils.isNotBlank(endTime)){
  194. alarmDetailsDto.setEndTime(f.parse(endTime));
  195. }
  196. }catch (ParseException e){
  197. log.error("报警信息查询时间转换错误,原数据:beginTime:{},endTime:{},异常信息:{}",startTime,endTime,e.getMessage());
  198. alarmDetailsDto.setStartTime(new Date());
  199. alarmDetailsDto.setEndTime(new Date());
  200. }
  201. if(sceneId != null && sceneId != 0) {
  202. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
  203. if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
  204. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
  205. return new AjaxMessage<>(ResultStatus.OK, filePath);
  206. }
  207. }
  208. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警记录", alarmDetailsService.selectHistoryList(alarmDetailsDto));
  209. return new AjaxMessage<>(ResultStatus.OK, filePath);
  210. }
  211. @RequestMapping(value="selectRealTimePage" , method = RequestMethod.GET)
  212. @ApiOperation(value = "分页查询实时报警详情信息")
  213. public AjaxMessage<Pagination<AlarmDetailsRealTimeDto>> selectRealTimePage(
  214. @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
  215. @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
  216. @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
  217. @ApiParam(value = "所属场景id") @RequestParam(required = false) Integer sceneId,
  218. @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
  219. @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime,
  220. @ApiParam(value = "页数,非必传,默认第一页", defaultValue = "1") @RequestParam(required = false, defaultValue = "1") Integer pageNum,
  221. @ApiParam(value = "条数,非必传,默认10条", defaultValue = "10") @RequestParam(required = false, defaultValue = "10") Integer pageSize
  222. ){
  223. AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
  224. alarmDetailsDto.setCondition(condition);
  225. alarmDetailsDto.setAlarmType(alarmType);
  226. alarmDetailsDto.setOpState(opState);
  227. SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  228. try {
  229. if(StringUtils.isNotBlank(startTime)){
  230. alarmDetailsDto.setStartTime(f.parse(startTime));
  231. }
  232. if(StringUtils.isNotBlank(endTime)){
  233. alarmDetailsDto.setEndTime(f.parse(endTime));
  234. }
  235. }catch (ParseException e){
  236. log.error("报警信息查询时间转换错误,原数据:beginTime:{},endTime:{},异常信息:{}",startTime,endTime,e.getMessage());
  237. alarmDetailsDto.setStartTime(new Date());
  238. alarmDetailsDto.setEndTime(new Date());
  239. }
  240. IPage<AlarmDetailsRealTimeDto> iPage = new Page<>(pageNum, pageSize);
  241. if(iPage.orders().size() == 0){
  242. OrderItem orderItem =new OrderItem();
  243. orderItem.setAsc(false);
  244. orderItem.setColumn("a.ALARM_START_TIME");
  245. iPage.orders().add(orderItem);
  246. }
  247. if(sceneId != null && sceneId != 0) {
  248. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
  249. if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
  250. return new AjaxMessage<>(ResultStatus.OK, new Pagination<>(iPage));
  251. }
  252. }
  253. iPage = alarmDetailsService.selectRealTimePage(iPage,alarmDetailsDto);
  254. Pagination<AlarmDetailsRealTimeDto> pages = new Pagination<>(iPage);
  255. return new AjaxMessage<>(ResultStatus.OK, pages);
  256. }
  257. @RequestMapping(value="exportRealTime" , method = RequestMethod.GET)
  258. @ApiOperation(value = "导出实时报警信息")
  259. public AjaxMessage<String> exportRealTime(
  260. @ApiParam(value = "查询:场景名称/设备名称") @RequestParam(required = false) String condition,
  261. @ApiParam(value = "报警类型") @RequestParam(required = false) String alarmType,
  262. @ApiParam(value = "处理状态") @RequestParam(required = false) Integer opState,
  263. @ApiParam(value = "所属场景id") @RequestParam(required = false) Integer sceneId,
  264. @ApiParam(value = "报警信息id") @RequestParam(required = false) List<Integer> ids,
  265. @ApiParam(value = "查询:开始时间yyyy-MM-dd") @RequestParam(required = false) String startTime,
  266. @ApiParam(value = "查询:结束时间yyyy-MM-dd") @RequestParam(required = false) String endTime
  267. ){
  268. if(ids != null && ids.size() >0){
  269. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsRealTimeDto.class, "实时报警记录",alarmDetailsService.selectRealTimeByIds(ids));
  270. return new AjaxMessage<>(ResultStatus.OK, filePath);
  271. }
  272. AlarmDetailsDto alarmDetailsDto = new AlarmDetailsDto();
  273. alarmDetailsDto.setCondition(condition);
  274. alarmDetailsDto.setAlarmType(alarmType);
  275. alarmDetailsDto.setOpState(opState);
  276. SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
  277. try {
  278. if(StringUtils.isNotBlank(startTime)){
  279. alarmDetailsDto.setStartTime(f.parse(startTime));
  280. }
  281. if(StringUtils.isNotBlank(endTime)){
  282. alarmDetailsDto.setEndTime(f.parse(endTime));
  283. }
  284. }catch (ParseException e){
  285. log.error("报警信息查询时间转换错误,原数据:beginTime:{},endTime:{},异常信息:{}",startTime,endTime,e.getMessage());
  286. alarmDetailsDto.setStartTime(new Date());
  287. alarmDetailsDto.setEndTime(new Date());
  288. }
  289. if(sceneId != null && sceneId != 0) {
  290. alarmDetailsDto.setSceneIds(sceneService.findByParentIdsLike(sceneId.longValue()));
  291. if(alarmDetailsDto.getSceneIds() == null || alarmDetailsDto.getSceneIds().size() == 0){
  292. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsHistoryDto.class, "历史报警记录", new ArrayList<>());
  293. return new AjaxMessage<>(ResultStatus.OK, filePath);
  294. }
  295. }
  296. String filePath = EasyExcelUtil.excelWrite(baseDir, AlarmDetailsRealTimeDto.class, "实时报警记录",alarmDetailsService.selectRealTimeList(alarmDetailsDto) );
  297. return new AjaxMessage<>(ResultStatus.OK, filePath);
  298. }
  299. @RequestMapping(value="batchDelete" , method = RequestMethod.DELETE)
  300. @ApiOperation(value = "批量删除")
  301. public AjaxMessage<Integer> batchDelete( @ApiParam(value = "报警信息ids") @RequestParam List<Integer> ids){
  302. return new AjaxMessage<>(ResultStatus.OK, alarmDetailsService.batchDelete(ids));
  303. }
  304. }