Przeglądaj źródła

短信上行获取

liubo 3 lat temu
rodzic
commit
8fe8dc2883

+ 3 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/RemoteStockService.java

@@ -27,4 +27,7 @@ public interface RemoteStockService {
 
 
     @PostMapping("/hxpChemical/indicatorMonitoring")
     @PostMapping("/hxpChemical/indicatorMonitoring")
     public void indicatorMonitoring();
     public void indicatorMonitoring();
+
+    @GetMapping(value = "/hxpUserecord/queryUplink")
+    public void queryUplinkResult();
 }
 }

+ 5 - 0
zd-api/zd-api-system/src/main/java/com/zd/system/api/chemical/factory/RemoteStockFallbackFactory.java

@@ -40,6 +40,11 @@ public class RemoteStockFallbackFactory implements FallbackFactory<RemoteStockSe
             public void indicatorMonitoring() {
             public void indicatorMonitoring() {
                 logger.error("定时监测实验室化学品存放风险指标:{}" , throwable.getMessage());
                 logger.error("定时监测实验室化学品存放风险指标:{}" , throwable.getMessage());
             }
             }
+
+            @Override
+            public void queryUplinkResult() {
+                logger.error("定时监测四医大短信上行结果异常:{}" , throwable.getMessage());
+            }
         };
         };
     }
     }
 }
 }

+ 11 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/controller/HxpUserecordController.java

@@ -3,6 +3,7 @@ package com.zd.chemical.controller;
 import com.zd.chemical.domain.HxpUserecord;
 import com.zd.chemical.domain.HxpUserecord;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.domain.vo.*;
 import com.zd.chemical.service.IHxpUserecordService;
 import com.zd.chemical.service.IHxpUserecordService;
+import com.zd.chemical.util.SmsSydUtil;
 import com.zd.common.core.domain.R;
 import com.zd.common.core.domain.R;
 import com.zd.common.core.domain.per.PerFun;
 import com.zd.common.core.domain.per.PerFun;
 import com.zd.common.core.domain.per.PerPrefix;
 import com.zd.common.core.domain.per.PerPrefix;
@@ -38,9 +39,10 @@ import java.util.List;
 public class HxpUserecordController extends BaseController {
 public class HxpUserecordController extends BaseController {
     @Autowired
     @Autowired
     private IHxpUserecordService hxpUserecordService;
     private IHxpUserecordService hxpUserecordService;
-
     @Autowired
     @Autowired
     private TokenService tokenService;
     private TokenService tokenService;
+    @Autowired
+    private SmsSydUtil smsSydUtil;
 
 
     /**
     /**
      * 查询化学品使用记录列表
      * 查询化学品使用记录列表
@@ -120,4 +122,12 @@ public class HxpUserecordController extends BaseController {
     public void checkOvertime() {
     public void checkOvertime() {
         hxpUserecordService.checkOvertime();
         hxpUserecordService.checkOvertime();
     }
     }
+
+    /**
+     * 检测领用超时
+     */
+    @GetMapping(value = "/queryUplink")
+    public void queryUplinkResult() {
+        smsSydUtil.queryUplinkResult();
+    }
 }
 }

+ 1 - 1
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/SydSmsLog.java

@@ -63,7 +63,7 @@ public class SydSmsLog extends BaseEntity {
     @ApiModelProperty(value = "回复内容")
     @ApiModelProperty(value = "回复内容")
     private String replyContent;
     private String replyContent;
 
 
-    @ApiModelProperty(value = "用途:1 告警,2 登录,3 开锁")
+    @ApiModelProperty(value = "用途:1 化学品告警,2 登录,3 开锁,4 气瓶告警,5 预案告警")
     private Integer purpose;
     private Integer purpose;
 
 
     @ApiModelProperty(value = "开门申请id")
     @ApiModelProperty(value = "开门申请id")

+ 63 - 21
zd-modules/zd-chemical/src/main/java/com/zd/chemical/util/SmsSydUtil.java

@@ -1,6 +1,6 @@
 package com.zd.chemical.util;
 package com.zd.chemical.util;
 
 
-import cn.hutool.core.util.IdUtil;
+import cn.hutool.json.JSONUtil;
 import com.esms.MOMsg;
 import com.esms.MOMsg;
 import com.esms.MessageData;
 import com.esms.MessageData;
 import com.esms.PostMsg;
 import com.esms.PostMsg;
@@ -9,16 +9,16 @@ import com.esms.common.entity.GsmsResponse;
 import com.esms.common.entity.MTPack;
 import com.esms.common.entity.MTPack;
 import com.zd.chemical.domain.SydSmsLog;
 import com.zd.chemical.domain.SydSmsLog;
 import com.zd.chemical.service.ISydSmsLogService;
 import com.zd.chemical.service.ISydSmsLogService;
-import com.zd.common.core.constant.Constants;
 import com.zd.common.core.domain.R;
 import com.zd.common.core.domain.R;
 import com.zd.common.core.utils.DateUtils;
 import com.zd.common.core.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 @Slf4j
 @Slf4j
 @Component
 @Component
@@ -73,7 +73,7 @@ public class SmsSydUtil {
     /**
     /**
      * 四医大平台发送短信
      * 四医大平台发送短信
      * @param content 发送内容
      * @param content 发送内容
-     * @param purpose 短信用途 1 告警,2 登录,3 开锁
+     * @param purpose 短信用途 1 化学品告警,2 登录,3 开锁,4 气瓶告警,5 预案告警
      * @param phones  手机号
      * @param phones  手机号
      * @return 发送结果
      * @return 发送结果
      */
      */
@@ -81,19 +81,31 @@ public class SmsSydUtil {
         UUID uuid = UUID.randomUUID();
         UUID uuid = UUID.randomUUID();
         R r = singleTicketMsgId(content, uuid, phones);
         R r = singleTicketMsgId(content, uuid, phones);
 
 
-        SydSmsLog sydSmsLog = new SydSmsLog();
-        sydSmsLog.setContent(content);
-        sydSmsLog.setPhone(phones.toString());
-        sydSmsLog.setPurpose(purpose);
-        sydSmsLog.setStatus(Integer.parseInt(r.getData() + ""));
-        sydSmsLog.setCreateTime(DateUtils.getNowDate());
-        sydSmsLog.setUuid(uuid.toString());
-        sydSmsLog.setLockApplyId(lockApplyId);
-
-        sydSmsLogService.insertSydSmsLog(sydSmsLog);
+        for (String phone : phones) {
+            SydSmsLog sydSmsLog = new SydSmsLog();
+            sydSmsLog.setContent(content);
+            sydSmsLog.setPhone(phone);
+            sydSmsLog.setPurpose(purpose);
+            sydSmsLog.setStatus(Integer.parseInt(r.getData() + ""));
+            sydSmsLog.setCreateTime(DateUtils.getNowDate());
+            sydSmsLog.setUuid(uuid.toString());
+            sydSmsLog.setLockApplyId(lockApplyId);
+            sydSmsLog.setReply(0);
+
+            sydSmsLogService.insertSydSmsLog(sydSmsLog);
+        }
+
         return r;
         return r;
     }
     }
 
 
+    public void queryUplinkResult(){
+        try {
+            doGetMos();
+        } catch (Exception e) {
+            log.error("定时获取上行数据发生异常!");
+        }
+    }
+
 
 
     /**
     /**
      * 短信下发范例 每个话单,一个扩展码
      * 短信下发范例 每个话单,一个扩展码
@@ -126,13 +138,43 @@ public class SmsSydUtil {
      * 获取上行信息
      * 获取上行信息
      *
      *
      */
      */
-    private static void doGetMos() throws Exception {
-        MOMsg[] mos;
-        mos = UP_PM.getMOMsgs(account, 10);
+    private void doGetMos() throws Exception {
+        SydSmsLog sydSmsLog = new SydSmsLog();
+
+        sydSmsLog.setStatus(0);
+        sydSmsLog.setReply(0);
+        List<SydSmsLog> list = sydSmsLogService.selectSydSmsLogList(sydSmsLog);
+
+        if(list.size() == 0){
+            return;
+        }
+
+        MOMsg[] mos = UP_PM.getMOMsgs(account, 10);
+
         if (mos != null) {
         if (mos != null) {
-            for (MOMsg mo : mos) {
-                log.info("四医大短信上行查询结果:" + mo.toString());
+
+            List<MOMsg> mosList = Stream.of(mos).collect(Collectors.toList());
+            log.info("四医大短信上行查询结果:" + JSONUtil.toJsonStr(mosList));
+
+            Date now = DateUtils.getNowDate();
+            for (SydSmsLog smsLog : list) {
+                for (int i = 0; i < mosList.size(); i++) {
+                    if(smsLog.getPhone().equals(mosList.get(i).getPhone())){
+
+                        smsLog.setReply(1);
+                        smsLog.setUpdateTime(now);
+                        smsLog.setReplyContent(mosList.get(i).getContent());
+                        sydSmsLogService.updateSydSmsLog(smsLog);
+                        mosList.remove(i);
+                        break;
+                    }
+                }
+            }
+
+            if(mosList.size() > 0){
+                log.info("四医大短信上行查询遗漏数据:" + JSONUtil.toJsonStr(mosList));
             }
             }
+
         }
         }
     }
     }
 
 

+ 1 - 0
zd-modules/zd-chemical/src/main/resources/mapper/chemical/SydSmsLogMapper.xml

@@ -57,6 +57,7 @@
             <if test="reply != null ">and reply = #{reply}</if>
             <if test="reply != null ">and reply = #{reply}</if>
             <if test="replyContent != null  and replyContent != ''">and reply_content = #{replyContent}</if>
             <if test="replyContent != null  and replyContent != ''">and reply_content = #{replyContent}</if>
         </where>
         </where>
+        order by create_time desc
     </select>
     </select>
 
 
     <select id="getListByIds" resultMap="SydSmsLogResult">
     <select id="getListByIds" resultMap="SydSmsLogResult">

+ 7 - 0
zd-modules/zd-modules-job/src/main/java/com/zd/job/task/ChemicalTask.java

@@ -31,4 +31,11 @@ public class ChemicalTask {
     public void indicatorMonitoring() {
     public void indicatorMonitoring() {
         remoteStockService.indicatorMonitoring();
         remoteStockService.indicatorMonitoring();
     }
     }
+
+    /**
+     * 定时监测四医大短信上行结果
+     */
+    public void queryUplinkResult(){
+        remoteStockService.queryUplinkResult();
+    }
 }
 }