AlertRuleController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. package com.gyee.alarm.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.gyee.alarm.model.auto.ProEconAlarmRule;
  6. import com.gyee.alarm.model.vo.AjaxResult;
  7. import com.gyee.alarm.model.vo.AjaxStatus;
  8. import com.gyee.alarm.model.vo.AlarmRuleVo;
  9. import com.gyee.alarm.service.AlarmRuleService;
  10. import com.gyee.alarm.util.ExcelUtils;
  11. import com.gyee.alarm.util.SnowflakeGenerator;
  12. import com.gyee.alarm.util.StringUtils;
  13. import com.gyee.common.util.DateUtils;
  14. import io.swagger.annotations.ApiOperation;
  15. import lombok.extern.slf4j.Slf4j;
  16. import org.codehaus.groovy.syntax.TokenUtil;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.*;
  19. import org.springframework.web.multipart.MultipartFile;
  20. import javax.servlet.http.HttpServletRequest;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.io.IOException;
  23. import java.io.InputStream;
  24. import java.util.*;
  25. @Slf4j
  26. @RestController
  27. @RequestMapping("/alertrule")
  28. @CrossOrigin
  29. public class AlertRuleController {
  30. @Autowired
  31. private AlarmRuleService alarmRuleService;
  32. @GetMapping(value = "/list")
  33. public List<AlarmRuleVo> queryTree() {
  34. List<AlarmRuleVo> alertrules = alarmRuleService.queryTree();
  35. return alertrules;
  36. }
  37. //@UserLoginToken
  38. @PostMapping(value = "/save")
  39. @ResponseBody
  40. public AjaxResult saveAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmRule alarmRule) throws Exception {
  41. int result = alarmRuleService.saveAndUpdateAlertrule(alarmRule);
  42. return AjaxResult.successData(AjaxStatus.success.code, result);
  43. }
  44. @PostMapping(value = "/update")
  45. @ResponseBody
  46. public AjaxResult updateAlertrule(HttpServletRequest request, @RequestBody ProEconAlarmRule alarmRule) throws Exception {
  47. int result = alarmRuleService.saveAndUpdateAlertrule(alarmRule);
  48. return AjaxResult.successData(AjaxStatus.success.code, result);
  49. }
  50. @DeleteMapping(value = "/delete")
  51. public int deleteAlertrule(ProEconAlarmRule alarmRule) {
  52. return alarmRuleService.deleteAlertrule(alarmRule);
  53. }
  54. //@UserLoginToken
  55. @GetMapping(value = "/page")
  56. public IPage<ProEconAlarmRule> queryByPage(HttpServletRequest request,
  57. @RequestParam(value = "pagenum") Integer pageNum,
  58. @RequestParam(value = "pagesize") Integer pageSize,
  59. @RequestParam(value = "name", required = false) String name,
  60. @RequestParam(value = "station", required = false) String station,
  61. @RequestParam(value = "modelId", required = false) String modelId,
  62. @RequestParam(value = "rank", required = false) String rank,
  63. @RequestParam(value = "category", required = false) String category,
  64. @RequestParam(value = "enabled",required = false) String enabled,
  65. @RequestParam(value = "relatedparts",required = false) String relatedparts
  66. ) {
  67. Page<ProEconAlarmRule> page = new Page(pageNum, pageSize);
  68. IPage<ProEconAlarmRule> pageResult = alarmRuleService.pageQueryAll(page, name,station,modelId,rank,category,enabled,relatedparts);
  69. return pageResult;
  70. }
  71. private AjaxResult dataCheck(ProEconAlarmRule alertrule) {
  72. String msg = "";
  73. boolean result = true;
  74. if (StringUtils.isBlank(alertrule.getName())) {
  75. msg = "报警名称不能为空";
  76. result = false;
  77. } else if (StringUtils.isBlank(alertrule.getDescription())) {
  78. msg = "规则描述不能为空";
  79. result = false;
  80. } else if (StringUtils.isBlank(alertrule.getExpression())) {
  81. msg = "报警规则不能为空";
  82. result = false;
  83. } else if (StringUtils.empty(alertrule.getRank())) {
  84. msg = "报警级别不能为空";
  85. result = false;
  86. }
  87. else if (StringUtils.isBlank(alertrule.getStationId())) {
  88. msg = "风场不能为空";
  89. result = false;
  90. } else if (StringUtils.isBlank(alertrule.getCategory())) {
  91. msg = "报警类别不能为空";
  92. result = false;
  93. }
  94. if (alertrule.getCategory().equals("1")) {
  95. if (StringUtils.isBlank(alertrule.getModelId())) {
  96. msg = "风机型号不能为空";
  97. result = false;
  98. }
  99. }
  100. if (result) {
  101. return AjaxResult.successData(AjaxStatus.success.code, result);
  102. } else {
  103. return AjaxResult.successData(AjaxStatus.error.code, result);
  104. }
  105. }
  106. //@UserLoginToken
  107. @PostMapping(value = "/save-batch")
  108. @ResponseBody
  109. public AjaxResult saveAlertruleBatch(HttpServletRequest request,@RequestBody List<ProEconAlarmRule> lst) throws Exception {
  110. boolean allCheck = true;
  111. for (ProEconAlarmRule alertrule : lst) {
  112. String msg = "";
  113. boolean result = true;
  114. if (StringUtils.isBlank(alertrule.getName())) {
  115. msg = "报警名称不能为空";
  116. result = false;
  117. } else if (StringUtils.isBlank(alertrule.getDescription())) {
  118. msg = "规则描述不能为空";
  119. result = false;
  120. } else if (StringUtils.isBlank(alertrule.getExpression())) {
  121. msg = "报警规则不能为空";
  122. result = false;
  123. } else if (StringUtils.empty(alertrule.getRank())) {
  124. msg = "报警级别不能为空";
  125. result = false;
  126. }
  127. else if (StringUtils.isBlank(alertrule.getStationId())) {
  128. msg = "风场不能为空";
  129. result = false;
  130. } else if (StringUtils.isBlank(alertrule.getCategory())) {
  131. msg = "报警类别不能为空";
  132. result = false;
  133. }
  134. if (alertrule.getCategory().equals("1")) {
  135. if (StringUtils.isBlank(alertrule.getModelId())) {
  136. msg = "风机型号不能为空";
  137. result = false;
  138. }
  139. }
  140. if ( result!= true) {
  141. allCheck = false;
  142. if (!result) {
  143. return AjaxResult.successData(AjaxStatus.error.code, msg);
  144. }
  145. }
  146. }
  147. if (allCheck) {
  148. for (ProEconAlarmRule alertRule : lst) {
  149. int result = alarmRuleService.saveAndUpdateAlertrule(alertRule);
  150. if (result <= 0) {
  151. return AjaxResult.successData(AjaxStatus.error.code, alertRule.getName() + ":" + "操作数据库失败");
  152. }
  153. }
  154. return AjaxResult.successData(AjaxStatus.success.code, "ok");
  155. } else {
  156. return AjaxResult.successData(AjaxStatus.success.code, "ok");
  157. }
  158. }
  159. @GetMapping("/get-import-template")
  160. @ApiOperation(value = "获得导入模板")
  161. public void importTemplate(HttpServletResponse response) throws IOException {
  162. // 手动创建导出 demo
  163. Date current = com.gyee.common.util.DateUtils.getCurrentDate();
  164. Calendar calendar = Calendar.getInstance();
  165. calendar.setTime(current);
  166. calendar.add(Calendar.DAY_OF_MONTH, -1);
  167. Date previousDay = calendar.getTime();
  168. List<ProEconAlarmRule> list = Arrays.asList(
  169. ProEconAlarmRule.builder().id("").name("单机变桨电池柜温度1温度传感器异常值").description("温度等于850度或者温度小于零下40度")
  170. .expression("AI242 == 850 || AI242 <-40").tag("").rank(4).modelId("TZ-2000")
  171. .category("1").range("0")
  172. .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
  173. .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
  174. .enable(true)
  175. .build(),
  176. ProEconAlarmRule.builder().id("").name("单机变桨电池柜温度2超限报警").description("温度等于850度或者温度小于零下40度")
  177. .expression("(AI243>=65 || AI243<-10)").tag("").rank(4).modelId("TZ-2000")
  178. .category("1").range("0")
  179. .stationId("ZK_FDC").projectId("ZK_FDC").lineId("ZK_FDC").deviceId("ZK_FDC")
  180. .electricalId("").relatedParts("BJ").createTime(DateUtils.truncate(previousDay))
  181. .enable(true)
  182. .build()
  183. );
  184. // 输出
  185. ExcelUtils.write(response, "导入模板.xls", "导入模板", ProEconAlarmRule.class, list);
  186. }
  187. @PostMapping("/import")
  188. @ApiOperation(value = "导入",notes = "导入")
  189. public AjaxResult importExcel(@RequestParam("file") MultipartFile file) throws Exception {
  190. List<ProEconAlarmRule> list = ExcelUtils.read(file, ProEconAlarmRule.class);
  191. if(com.gyee.common.model.StringUtils.notEmp(list) && !list.isEmpty())
  192. {
  193. boolean allCheck = true;
  194. for(ProEconAlarmRule alertrule:list)
  195. {
  196. String msg = "";
  197. boolean result = true;
  198. if (StringUtils.isBlank(alertrule.getName())) {
  199. msg = "报警名称不能为空";
  200. result = false;
  201. } else if (StringUtils.isBlank(alertrule.getDescription())) {
  202. msg = "规则描述不能为空";
  203. result = false;
  204. } else if (StringUtils.isBlank(alertrule.getExpression())) {
  205. msg = "报警规则不能为空";
  206. result = false;
  207. } else if (StringUtils.empty(alertrule.getRank())) {
  208. msg = "报警级别不能为空";
  209. result = false;
  210. }
  211. else if (StringUtils.isBlank(alertrule.getStationId())) {
  212. msg = "风场不能为空";
  213. result = false;
  214. } else if (StringUtils.isBlank(alertrule.getCategory())) {
  215. msg = "报警类别不能为空";
  216. result = false;
  217. }
  218. if (alertrule.getCategory().equals("1")) {
  219. if (StringUtils.isBlank(alertrule.getModelId())) {
  220. msg = "风机型号不能为空";
  221. result = false;
  222. }
  223. }
  224. if ( result!= true) {
  225. allCheck = false;
  226. if (!result) {
  227. return AjaxResult.successData(AjaxStatus.error.code, msg);
  228. }
  229. }
  230. if(allCheck)
  231. {
  232. alertrule.setId(String.valueOf(SnowflakeGenerator.generateId()));
  233. alertrule.setCreateTime(new Date());
  234. alarmRuleService.saveAndUpdateAlertrule(alertrule);
  235. }
  236. }
  237. }
  238. if (com.gyee.common.model.StringUtils.isNotNull(list)) {
  239. return AjaxResult.successData(AjaxStatus.success.code, list);
  240. } else {
  241. return AjaxResult.successData(AjaxStatus.error.code, "ok");
  242. }
  243. }
  244. }