|
|
@@ -1,15 +1,19 @@
|
|
|
package com.zd.alg.alarm.controller;
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.zd.alg.alarm.service.IAlarmLogService;
|
|
|
import com.zd.alg.alarm.utils.AlarmUtil;
|
|
|
+import com.zd.algorithm.api.alarm.domain.UserPhoneInfo;
|
|
|
import com.zd.algorithm.api.alarm.entity.AlarmEntrty;
|
|
|
import com.zd.algorithm.api.alarm.entity.AlarmLog;
|
|
|
import com.zd.algorithm.api.alarm.entity.SendTypes;
|
|
|
+import com.zd.base.api.feign.RemoteMessageService;
|
|
|
import com.zd.common.core.annotation.PreAuthorize;
|
|
|
import com.zd.common.core.utils.DateUtils;
|
|
|
import com.zd.common.core.web.controller.BaseController;
|
|
|
-import com.zd.model.domain.AjaxResult;
|
|
|
+import com.zd.model.constant.HttpStatus;
|
|
|
+import com.zd.model.domain.ResultData;
|
|
|
import com.zd.model.domain.per.PerFun;
|
|
|
import com.zd.model.domain.per.PerPrefix;
|
|
|
import com.zd.model.page.TableDataInfo;
|
|
|
@@ -17,8 +21,8 @@ import io.swagger.annotations.ApiOperation;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/alarm")
|
|
|
@@ -30,6 +34,9 @@ public class AlarmController extends BaseController {
|
|
|
@Autowired
|
|
|
private IAlarmLogService alarmLogService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RemoteMessageService remoteMessageService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询算法结果列表
|
|
|
* @return
|
|
|
@@ -44,48 +51,162 @@ public class AlarmController extends BaseController {
|
|
|
}
|
|
|
|
|
|
@PostMapping("/send")
|
|
|
- public AjaxResult queryOption(@RequestBody AlarmEntrty alarmEntrty) {
|
|
|
- Map<String, String> map = alarmUtil.sendPost(alarmEntrty);
|
|
|
-
|
|
|
- String data = map.get("Reply");
|
|
|
- if((SendTypes.Call + "").equals(alarmEntrty.getType()) || (SendTypes.All + "").equals(alarmEntrty.getType())){
|
|
|
- if("OK".equals(data)) {
|
|
|
- String[] phones = alarmEntrty.getTo();
|
|
|
- for (String phone : phones) {
|
|
|
- AlarmLog alarmLog = new AlarmLog();
|
|
|
- alarmLog.setIsBack(1);
|
|
|
- alarmLog.setPhone(phone);
|
|
|
- alarmLog.setNotice(alarmEntrty.getText());
|
|
|
- alarmLog.setMethod("电话");
|
|
|
- alarmLog.setStatus("成功");
|
|
|
- alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
- alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ public ResultData queryOption(@RequestBody AlarmEntrty alarmEntrty) {
|
|
|
+ if (alarmEntrty.getTo() == null || alarmEntrty.getTo().length == 0) {
|
|
|
+ logger.info("打电话发短信电话号码为空!");
|
|
|
+ return ResultData.fail("打电话发短信电话号码为空!");
|
|
|
+ }
|
|
|
+ //处理数据 短信拼装
|
|
|
+ String sendType = alarmEntrty.getType();
|
|
|
+ if((SendTypes.All.toString()).equals(sendType) || (SendTypes.Call.toString()).equals(sendType)){
|
|
|
+ //打电话
|
|
|
+ alarmEntrty.setType(SendTypes.Call.toString());
|
|
|
+ sendCall(alarmEntrty);
|
|
|
+ }
|
|
|
+ if((SendTypes.All.toString()).equals(sendType) || (SendTypes.SMS.toString()).equals(sendType) ){
|
|
|
+ //发短信
|
|
|
+ alarmEntrty.setType(SendTypes.SMS.toString());
|
|
|
+ sendSMS(alarmEntrty);
|
|
|
+ }
|
|
|
+ return ResultData.success("拨打电话发送短信完成!");
|
|
|
+// Map<String, String> map = alarmUtil.sendPost(alarmEntrty);
|
|
|
+// String data = map.get("Reply");
|
|
|
+// if((SendTypes.Call + "").equals(alarmEntrty.getType()) || (SendTypes.All + "").equals(alarmEntrty.getType())){
|
|
|
+// if("OK".equals(data)) {
|
|
|
+// String[] phones = alarmEntrty.getTo();
|
|
|
+// for (String phone : phones) {
|
|
|
+// AlarmLog alarmLog = new AlarmLog();
|
|
|
+// alarmLog.setKeyId(alarmLog.getKeyId());
|
|
|
+// alarmLog.setNickName();
|
|
|
+// alarmLog.setRoleName();
|
|
|
+// alarmLog.setIsBack(1);
|
|
|
+// alarmLog.setPhone(phone);
|
|
|
+// alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+// alarmLog.setMethod("电话");
|
|
|
+// alarmLog.setStatus("成功");
|
|
|
+// alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+// alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
+//
|
|
|
+// alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+// }
|
|
|
+// return AjaxResult.success();
|
|
|
+// }else {
|
|
|
+// String[] phones = alarmEntrty.getTo();
|
|
|
+// for (String phone : phones) {
|
|
|
+// AlarmLog alarmLog = new AlarmLog();
|
|
|
+// alarmLog.setIsBack(1);
|
|
|
+// alarmLog.setPhone(phone);
|
|
|
+// alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+// alarmLog.setMethod("电话");
|
|
|
+// alarmLog.setStatus("失败");
|
|
|
+// alarmLog.setRemark(data);
|
|
|
+// alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+// alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
+//
|
|
|
+// alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+// }
|
|
|
+// return AjaxResult.error(data);
|
|
|
+// }
|
|
|
+// }else if((SendTypes.SMS + "").equals(alarmEntrty.getType())) {
|
|
|
+// if ("OK".equals(data)) {
|
|
|
+// return AjaxResult.success();
|
|
|
+// }
|
|
|
+// }
|
|
|
+ }
|
|
|
|
|
|
- alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+ private void sendCall(AlarmEntrty alarmEntrty) {
|
|
|
+ Map map = alarmUtil.sendPost(alarmEntrty);
|
|
|
+ String data = (String) map.get("Reply");
|
|
|
+ List<UserPhoneInfo> userPhoneInfoList = alarmEntrty.getUserPhoneInfo();
|
|
|
+ LinkedHashMap<String, List<UserPhoneInfo>> userPhoneInfoMap = Optional.ofNullable(userPhoneInfoList).orElseGet(Collections::emptyList).stream().collect(Collectors.groupingBy(UserPhoneInfo::getPhone, LinkedHashMap::new, Collectors.toList()));
|
|
|
+ if ("OK".equals(data)) {
|
|
|
+ for (String phone : alarmEntrty.getTo()) {
|
|
|
+ AlarmLog alarmLog = new AlarmLog();
|
|
|
+ if (userPhoneInfoMap.size() > 0) {
|
|
|
+ List<UserPhoneInfo> userPhoneInfos = userPhoneInfoMap.get(phone);
|
|
|
+ alarmLog.setNickName(userPhoneInfos.get(0).getNickName());
|
|
|
+ alarmLog.setRoleName(userPhoneInfos.get(0).getRole());
|
|
|
}
|
|
|
- return AjaxResult.success();
|
|
|
- }else {
|
|
|
- String[] phones = alarmEntrty.getTo();
|
|
|
- for (String phone : phones) {
|
|
|
- AlarmLog alarmLog = new AlarmLog();
|
|
|
- alarmLog.setIsBack(1);
|
|
|
- alarmLog.setPhone(phone);
|
|
|
- alarmLog.setNotice(alarmEntrty.getText());
|
|
|
- alarmLog.setMethod("电话");
|
|
|
- alarmLog.setStatus("失败");
|
|
|
- alarmLog.setRemark(data);
|
|
|
- alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
- alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
-
|
|
|
- alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+ alarmLog.setIsBack(0);
|
|
|
+ alarmLog.setMethod("电话");
|
|
|
+ alarmLog.setStatus("成功");
|
|
|
+ alarmLog.setPhone(phone);
|
|
|
+ alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+ alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setKeyId(alarmEntrty.getLogId());
|
|
|
+ alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+ }
|
|
|
+ logger.info("电话预警通知用户成功!===>>>{}", JSON.toJSONString(alarmEntrty.getTo()));
|
|
|
+ }else {
|
|
|
+ String[] phones = alarmEntrty.getTo();
|
|
|
+ for (String phone : phones) {
|
|
|
+ AlarmLog alarmLog = new AlarmLog();
|
|
|
+ if (userPhoneInfoMap.size() > 0) {
|
|
|
+ List<UserPhoneInfo> userPhoneInfos = userPhoneInfoMap.get(phone);
|
|
|
+ alarmLog.setNickName(userPhoneInfos.get(0).getNickName());
|
|
|
+ alarmLog.setRoleName(userPhoneInfos.get(0).getRole());
|
|
|
}
|
|
|
- return AjaxResult.error(data);
|
|
|
+ alarmLog.setIsBack(0);
|
|
|
+ alarmLog.setPhone(phone);
|
|
|
+ alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+ alarmLog.setMethod("电话");
|
|
|
+ alarmLog.setStatus("失败");
|
|
|
+ alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setKeyId(alarmEntrty.getLogId());
|
|
|
+ alarmLogService.insertAlarmLog(alarmLog);
|
|
|
}
|
|
|
- }else if((SendTypes.SMS + "").equals(alarmEntrty.getType())) {
|
|
|
+ logger.info("电话预警通知用户失败!===>>>{}", JSON.toJSONString(alarmEntrty.getTo()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void sendSMS(AlarmEntrty alarmEntrty) {
|
|
|
+ List<UserPhoneInfo> userPhoneInfoList = alarmEntrty.getUserPhoneInfo();
|
|
|
+ LinkedHashMap<String, List<UserPhoneInfo>> userPhoneInfoMap = Optional.ofNullable(userPhoneInfoList).orElseGet(Collections::emptyList).stream().collect(Collectors.groupingBy(UserPhoneInfo::getPhone, LinkedHashMap::new, Collectors.toList()));
|
|
|
+ for (String phone : alarmEntrty.getTo()) {
|
|
|
+ ResultData urlScheme = remoteMessageService.getUrlScheme(alarmEntrty.getLogId());
|
|
|
+ if (urlScheme.getCode() != HttpStatus.SUCCESS) {
|
|
|
+ logger.error("获取urlScheme失败!");
|
|
|
+ }
|
|
|
+ String text = alarmEntrty.getText();
|
|
|
+ text = text + "https://lab.zjznai.com/labAppTest/earlyWarning/index.html?id=?id=" + alarmEntrty.getLogId() + "&urlScheme=" + urlScheme.getData();
|
|
|
+ alarmEntrty.setText(text);
|
|
|
+ alarmEntrty.setTo(new String[]{phone});
|
|
|
+ logger.info("发送给用户===>>>{},短信内容===>>>{}",phone,text);
|
|
|
+ //发送短信
|
|
|
+ Map map = alarmUtil.sendPost(alarmEntrty);
|
|
|
+ String data = (String) map.get("Reply");
|
|
|
+ AlarmLog alarmLog = new AlarmLog();
|
|
|
if ("OK".equals(data)) {
|
|
|
- return AjaxResult.success();
|
|
|
+ if (userPhoneInfoMap.size() > 0) {
|
|
|
+ List<UserPhoneInfo> userPhoneInfos = userPhoneInfoMap.get(phone);
|
|
|
+ alarmLog.setNickName(userPhoneInfos.get(0).getNickName());
|
|
|
+ alarmLog.setRoleName(userPhoneInfos.get(0).getRole());
|
|
|
+ }
|
|
|
+ alarmLog.setIsBack(0);
|
|
|
+ alarmLog.setMethod("电话");
|
|
|
+ alarmLog.setStatus("成功");
|
|
|
+ alarmLog.setPhone(phone);
|
|
|
+ alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+ alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setKeyId(alarmEntrty.getLogId());
|
|
|
+ alarmLogService.insertAlarmLog(alarmLog);
|
|
|
+ } else {
|
|
|
+ if (userPhoneInfoMap.size() > 0) {
|
|
|
+ List<UserPhoneInfo> userPhoneInfos = userPhoneInfoMap.get(phone);
|
|
|
+ alarmLog.setNickName(userPhoneInfos.get(0).getNickName());
|
|
|
+ alarmLog.setRoleName(userPhoneInfos.get(0).getRole());
|
|
|
+ }
|
|
|
+ alarmLog.setIsBack(0);
|
|
|
+ alarmLog.setPhone(phone);
|
|
|
+ alarmLog.setNotice(alarmEntrty.getText());
|
|
|
+ alarmLog.setMethod("电话");
|
|
|
+ alarmLog.setStatus("失败");
|
|
|
+ alarmLog.setCreateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ alarmLog.setKeyId(alarmEntrty.getLogId());
|
|
|
+ alarmLogService.insertAlarmLog(alarmLog);
|
|
|
}
|
|
|
}
|
|
|
- return AjaxResult.error("报警发送错误:" + data);
|
|
|
}
|
|
|
}
|