AlarmController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.ylx.web.controller.massage;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.ylx.common.annotation.Log;
  5. import com.ylx.common.core.domain.R;
  6. import com.ylx.common.enums.BusinessType;
  7. import com.ylx.common.exception.ServiceException;
  8. import com.ylx.common.utils.SecurityUtils;
  9. import com.ylx.common.utils.StringUtils;
  10. import com.ylx.massage.domain.Alarm;
  11. import com.ylx.massage.service.AlarmService;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.web.bind.annotation.*;
  16. import javax.annotation.Resource;
  17. import java.util.Date;
  18. /**
  19. * 告警工单表控制层
  20. *
  21. * @author makejava
  22. * @since 2024-04-28 09:19:04
  23. */
  24. @RestController
  25. @RequestMapping("alarm")
  26. @Api(tags = {"告警工单"})
  27. public class AlarmController {
  28. /**
  29. * 服务对象
  30. */
  31. @Resource
  32. private AlarmService alarmService;
  33. /**
  34. * 分页查询告警记录
  35. *
  36. * @param page 分页对象
  37. * @param alarm 筛选条件
  38. * @return R 查询结果
  39. */
  40. @GetMapping("getAlarmList")
  41. @ApiOperation("分页查询告警记录")
  42. public R queryByPage(Page<Alarm> page, Alarm alarm) {
  43. try {
  44. LambdaQueryWrapper<Alarm> alarmLambdaQueryWrapper = buildAlarmQueryWrapper(alarm);
  45. Page<Alarm> pageSelect = alarmService.page(page, alarmLambdaQueryWrapper);
  46. return R.ok(pageSelect);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. throw new RuntimeException(e);
  50. }
  51. }
  52. /**
  53. * 构建告警记录查询条件
  54. * @param alarm
  55. * @return LambdaQueryWrapper<Alarm>
  56. */
  57. private LambdaQueryWrapper<Alarm> buildAlarmQueryWrapper(Alarm alarm) {
  58. LambdaQueryWrapper<Alarm> wrapper = new LambdaQueryWrapper<>();
  59. wrapper.eq(null != alarm.getAlarmStatus(), Alarm::getAlarmStatus, alarm.getAlarmStatus())
  60. .like(StringUtils.isNotBlank(alarm.getMerchantName()), Alarm::getMerchantName, alarm.getMerchantName())
  61. .like(StringUtils.isNotBlank(alarm.getMerchantNickName()), Alarm::getMerchantNickName, alarm.getMerchantNickName())
  62. .eq(null != alarm.getMerchantSex(), Alarm::getMerchantSex, alarm.getMerchantSex())
  63. .like(StringUtils.isNotBlank(alarm.getMerchantPhone()), Alarm::getMerchantPhone, alarm.getMerchantPhone())
  64. .ge(StringUtils.isNotBlank(alarm.getBeginTime()), Alarm::getCreateTime, normalizeBeginTime(alarm.getBeginTime()))
  65. .le(StringUtils.isNotBlank(alarm.getEndTime()), Alarm::getCreateTime, normalizeEndTime(alarm.getEndTime()))
  66. .orderByDesc(Alarm::getCreateTime);
  67. return wrapper;
  68. }
  69. /**
  70. * 格式化开始时间
  71. * @param beginTime
  72. * @return String 格式化后的开始时间
  73. */
  74. private String normalizeBeginTime(String beginTime) {
  75. if (StringUtils.isBlank(beginTime)) {
  76. return null;
  77. }
  78. String value = beginTime.trim();
  79. return value.length() == 10 ? value + " 00:00:00" : value;
  80. }
  81. /**
  82. * 格式化结束时间
  83. * @param endTime
  84. * @return String 格式化后的结束时间
  85. */
  86. private String normalizeEndTime(String endTime) {
  87. if (StringUtils.isBlank(endTime)) {
  88. return null;
  89. }
  90. String value = endTime.trim();
  91. return value.length() == 10 ? value + " 23:59:59" : value;
  92. }
  93. /**
  94. * 通过主键查询单条数据
  95. *
  96. * @param id 主键
  97. * @return 单条数据
  98. */
  99. @GetMapping("{id}")
  100. public ResponseEntity<Alarm> queryById(@PathVariable("id") String id) {
  101. return ResponseEntity.ok(this.alarmService.queryById(id));
  102. }
  103. /**
  104. * 处理告警工单
  105. * @param alarm
  106. * @return R
  107. */
  108. @PostMapping("/handleAlarm")
  109. @ApiOperation("已处理")
  110. @Log(title = "处理告警工单", businessType = BusinessType.UPDATE)
  111. public R handleAlarm(@RequestBody Alarm alarm) {
  112. try {
  113. if (StringUtils.isBlank(alarm.getId())) {
  114. throw new ServiceException("id不能为空");
  115. }
  116. if (StringUtils.isBlank(alarm.getNote())) {
  117. throw new ServiceException("处理过程及结果不能为空");
  118. }
  119. String handleResult = alarm.getNote().trim();
  120. if (handleResult.length() > 128) {
  121. throw new ServiceException("处理过程及结果不能超过128个字符");
  122. }
  123. Alarm existAlarm = alarmService.getById(alarm.getId());
  124. if (existAlarm == null) {
  125. throw new ServiceException("告警工单不存在");
  126. }
  127. if (Integer.valueOf(1).equals(existAlarm.getAlarmStatus())) {
  128. throw new ServiceException("告警工单已处理,请勿重复处理");
  129. }
  130. Alarm updateAlarm = new Alarm()
  131. .setId(alarm.getId())
  132. .setAlarmStatus(1)
  133. .setNote(handleResult)
  134. .setUpdateBy(SecurityUtils.getUsername())
  135. .setUpdateTime(new Date());
  136. boolean updateResult = alarmService.updateById(updateAlarm);
  137. if (!updateResult) {
  138. throw new ServiceException("处理告警工单失败");
  139. }
  140. return R.ok();
  141. } catch (ServiceException e) {
  142. e.printStackTrace();
  143. throw new RuntimeException(e);
  144. }
  145. }
  146. }