Sfoglia il codice sorgente

四医大短信通知终止方案修改

liubo 3 anni fa
parent
commit
7efc11e17f

+ 10 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/domain/HxpAlarmRecord.java

@@ -106,6 +106,8 @@ public class HxpAlarmRecord extends BaseEntity {
     @ApiModelProperty(value = "使用记录ID")
     private Long userecordId;
 
+    private Long parentId;
+
     public void setId(Long id) {
         this.id = id;
     }
@@ -225,4 +227,12 @@ public class HxpAlarmRecord extends BaseEntity {
     public void setUserecordId(Long userecordId) {
         this.userecordId = userecordId;
     }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
 }

+ 2 - 0
zd-modules/zd-chemical/src/main/java/com/zd/chemical/mapper/HxpAlarmRecordMapper.java

@@ -72,4 +72,6 @@ public interface HxpAlarmRecordMapper
     int updateByReturnUserecord(Long userecordId);
 
     List<HxpAlarmRecord> queryListByNOValid(HxpAlarmRecord alarmRecord);
+
+    int updateOtherByParentId(Long parentId);
 }

+ 15 - 3
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpAlarmRecordServiceImpl.java

@@ -88,7 +88,13 @@ public class HxpAlarmRecordServiceImpl implements IHxpAlarmRecordService {
         }
         hxpAlarmRecord.setHandlingTime(DateUtils.getNowDate());
         hxpAlarmRecord.setHandlingUserId(SecurityUtils.getUserId());
-        return hxpAlarmRecordMapper.updateHxpAlarmRecord(hxpAlarmRecord);
+        int count = hxpAlarmRecordMapper.updateHxpAlarmRecord(hxpAlarmRecord);
+
+        if(hxpAlarmRecord.getHandlingStatus() == 2){
+            hxpAlarmRecordMapper.updateOtherByParentId(hxpAlarmRecord.getId());
+        }
+
+        return count;
     }
 
     /**
@@ -137,7 +143,13 @@ public class HxpAlarmRecordServiceImpl implements IHxpAlarmRecordService {
         }
         hxpAlarmRecord.setHandlingTime(DateUtils.getNowDate());
         hxpAlarmRecord.setHandlingUserId(SecurityUtils.getUserId());
-        return hxpAlarmRecordMapper.updateHxpAlarmRecord(hxpAlarmRecord);
+
+        int count = hxpAlarmRecordMapper.updateHxpAlarmRecord(hxpAlarmRecord);
+
+        if(hxpAlarmRecord.getHandlingStatus() == 2){
+            hxpAlarmRecordMapper.updateOtherByParentId(hxpAlarmRecord.getId());
+        }
+        return count;
     }
 
     @Override
@@ -160,7 +172,7 @@ public class HxpAlarmRecordServiceImpl implements IHxpAlarmRecordService {
                 subName = subInfo.get("name")==null?"":String.valueOf(subInfo.get("name"));
                 content = "【实验室安全系统】" + subName + "-实验人员未领用即携带化学品离开房间,发生时间:"
                         + DateUtil.format(DateUtil.date(), DateUtils.YYYY_MM_DD_HH_MM_SS)
-                        + ",请尽快确认。短信回复“CL”确认已处理。";
+                        + ",请尽快确认。";// 短信回复“CL”确认已处理。
                 try {
                     smsSydUtil.sendSydSms(content, 1, null, new String[]{hxpAlarmRecord.getLiableUserIds()});
                 } catch (Exception e) {

+ 57 - 33
zd-modules/zd-chemical/src/main/java/com/zd/chemical/service/impl/HxpStockServiceImpl.java

@@ -394,7 +394,7 @@ public class HxpStockServiceImpl implements IHxpStockService {
             }
 
             // 报警通知演示临时通知给实验室管理员  phones
-            sendPhoneAlarm(hxpStock.getSubId(), subName, hxpStock.getChemicalName(), subInfo.get("phones") + "");
+            Long recordId = sendPhoneAlarm(hxpStock.getId(),hxpStock.getSubId(), subName, hxpStock.getChemicalName(), subInfo.get("phones") + "");
 
             cacheMap.put(rfidCode, DateUtils.getNowDate());
 
@@ -420,51 +420,72 @@ public class HxpStockServiceImpl implements IHxpStockService {
                 remoteMessageContentService.addDynamicMessage(msgData);
             }
 
-            // 1.查询标签所属实验室院系报警配置流程处理
-            List<HxpAlarmConfig> hxpAlarmConfigList = hxpAlarmConfigMapper.selectBySubId(3, hxpStock.getSubId());
-            // 2.最多五个步骤分别执行
-            if(CollectionUtils.isNotEmpty(hxpAlarmConfigList)){
-                logger.error("实验室【"+subName+"】ID" + hxpStock.getSubId() +"执行用户短信通知!");
-
-                Date date = DateUtil.offsetMinute(DateUtils.getNowDate(), Optional.ofNullable(dealTime).orElse(1));
-
-                for (HxpAlarmConfig hxpAlarmConfig : hxpAlarmConfigList) {
-                    hxpAlarmRecord = new HxpAlarmRecord();
-                    hxpAlarmRecord.setAlarmContent("未领用即携带化学品离开实验室【"+subName+"】," + "化学品("+hxpStock.getChemicalName()+"),请尽快确认!");
-                    hxpAlarmRecord.setAlarmType(2);
-                    hxpAlarmRecord.setAlarmMode(3);
-                    hxpAlarmRecord.setHasValid(0);
-                    hxpAlarmRecord.setAlarmTime(date);
-                    hxpAlarmRecord.setSubId(hxpStock.getSubId());
-                    //hxpAlarmRecord.setTerminalNum();
-                    hxpAlarmRecord.setHandlingStatus(1);
-                    hxpAlarmRecord.setLiableUserIds(hxpAlarmConfig.getAlarmPhone());
-
-                    //执行时间 - 报警时间计算
-                    date = DateUtil.offsetMinute(date, Optional.ofNullable(hxpAlarmConfig.getTimeInterval()).orElse(1));
-                    // TODO 短信阶梯通知触发流程控制
-                    hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
+            // 需求变动内容:未领用即携带化学品离开房间报警时,如实验室安全责任人通过化学品终端或PC管理后台操作处理,状态更改为已处理,报警流程终止
+            // 保证逻辑严谨,数据必须进行强关联
+            if(recordId != null){
+                // 1.查询标签所属实验室院系报警配置流程处理
+                List<HxpAlarmConfig> hxpAlarmConfigList = hxpAlarmConfigMapper.selectBySubId(3, hxpStock.getSubId());
+                // 2.最多五个步骤分别执行
+                if(CollectionUtils.isNotEmpty(hxpAlarmConfigList)){
+                    logger.error("实验室【"+subName+"】ID" + hxpStock.getSubId() +"执行用户短信通知!");
+
+                    Date date = DateUtil.offsetMinute(DateUtils.getNowDate(), Optional.ofNullable(dealTime).orElse(1));
+
+                    for (HxpAlarmConfig hxpAlarmConfig : hxpAlarmConfigList) {
+                        hxpAlarmRecord = new HxpAlarmRecord();
+                        hxpAlarmRecord.setAlarmContent("未领用即携带化学品离开实验室【"+subName+"】," + "化学品("+hxpStock.getChemicalName()+"),请尽快确认!");
+                        hxpAlarmRecord.setAlarmType(2);
+                        hxpAlarmRecord.setAlarmMode(3);
+                        hxpAlarmRecord.setHasValid(0);
+                        hxpAlarmRecord.setAlarmTime(date);
+                        hxpAlarmRecord.setSubId(hxpStock.getSubId());
+                        hxpAlarmRecord.setStockId(hxpStock.getId());
+                        hxpAlarmRecord.setParentId(recordId);
+                        //hxpAlarmRecord.setTerminalNum();
+                        hxpAlarmRecord.setHandlingStatus(1);
+                        hxpAlarmRecord.setLiableUserIds(hxpAlarmConfig.getAlarmPhone());
+
+                        //执行时间 - 报警时间计算
+                        date = DateUtil.offsetMinute(date, Optional.ofNullable(hxpAlarmConfig.getTimeInterval()).orElse(1));
+                        // TODO 短信阶梯通知触发流程控制
+                        hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
+                    }
                 }
+            }else {
+                logger.error("");
             }
+
             return true;
         }
     }
 
-    private void sendPhoneAlarm(Long subId, String subName, String chemicalName, String phones) {
+    private Long sendPhoneAlarm(Long stockId, Long subId, String subName, String chemicalName, String phones) {
 
         try {
             String[] to = phones.split(",");
             if(to == null && to.length == 0){
                 logger.error("RFID触发电话报警失败:实验室【"+subName+"】管理员未配置手机号!");
-                return;
+                return null;
             }
             to = Arrays.stream(to).distinct().toArray(String[]::new);
 
+            HxpAlarmRecord hxpAlarmRecord = new HxpAlarmRecord();
+            hxpAlarmRecord.setAlarmContent("未领用即携带化学品离开实验室【"+subName+"】," + "化学品("+chemicalName+"),请尽快确认!");
+            hxpAlarmRecord.setAlarmType(2);
+            hxpAlarmRecord.setAlarmMode(3);
+            hxpAlarmRecord.setHasValid(1);
+            hxpAlarmRecord.setAlarmTime(DateUtils.getNowDate());
+            hxpAlarmRecord.setSubId(subId);
+            hxpAlarmRecord.setHandlingStatus(1);
+            hxpAlarmRecord.setLiableUserIds(phones);
+            hxpAlarmRecord.setStockId(stockId);
+
+            hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
 
             // 判断四医大还是其他学校短信方案
             String content;
             if(phoneMode == 0){
-                HxpAlarmRecord hxpAlarmRecord = new HxpAlarmRecord();
+                /*HxpAlarmRecord hxpAlarmRecord = new HxpAlarmRecord();
                 hxpAlarmRecord.setAlarmContent("未领用即携带化学品离开实验室【"+subName+"】," + "化学品("+chemicalName+"),请尽快确认!");
                 hxpAlarmRecord.setAlarmType(2);
                 hxpAlarmRecord.setAlarmMode(3);
@@ -474,7 +495,7 @@ public class HxpStockServiceImpl implements IHxpStockService {
                 hxpAlarmRecord.setHandlingStatus(1);
                 hxpAlarmRecord.setLiableUserIds(phones);
 
-                hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
+                hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);*/
 
                 content = "电话报警:" + subName + "的化学品" + chemicalName + "违规带离实验室,请尽快确认!";
                 AlarmEntrty alarmEntrty = new AlarmEntrty(Routes.NoticePush, to, content);
@@ -482,7 +503,7 @@ public class HxpStockServiceImpl implements IHxpStockService {
 
                 logger.error(JSONUtil.toJsonStr(result));
             }else if(phoneMode == 1){
-                for (String s : to) {
+                /*for (String s : to) {
                     HxpAlarmRecord hxpAlarmRecord = new HxpAlarmRecord();
                     hxpAlarmRecord.setAlarmContent("未领用即携带化学品离开实验室【"+subName+"】," + "化学品("+chemicalName+"),请尽快确认!");
                     hxpAlarmRecord.setAlarmType(2);
@@ -494,11 +515,11 @@ public class HxpStockServiceImpl implements IHxpStockService {
                     hxpAlarmRecord.setLiableUserIds(s);
 
                     hxpAlarmRecordMapper.insertHxpAlarmRecord(hxpAlarmRecord);
-                }
+                }*/
 
                 content = "【实验室安全系统】" + subName + "-实验人员未领用即携带化学品离开房间,发生时间:"
                         + DateUtil.format(DateUtil.date(), DateUtils.YYYY_MM_DD_HH_MM_SS)
-                        + ",请尽快确认。短信回复“CL”确认已处理。";
+                        + ",请尽快确认。";//短信回复“CL”确认已处理。
                 try {
                     smsSydUtil.sendSydSms(content, 1, null, to);
                 } catch (Exception e) {
@@ -506,11 +527,14 @@ public class HxpStockServiceImpl implements IHxpStockService {
                 }
             }
 
-
+            return hxpAlarmRecord.getId();
         }catch (Exception e){
             e.printStackTrace();
             logger.error("【"+subName+"】RFID触发报警器进行电话通知失败:" + e.getMessage());
+            return null;
         }
+
+
     }
 
     @Override

+ 6 - 0
zd-modules/zd-chemical/src/main/resources/mapper/chemical/HxpAlarmRecordMapper.xml

@@ -198,6 +198,8 @@
 
             <if test="userecordId != null">userecord_id,</if>
 
+            <if test="parentId != null">parent_id,</if>
+
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="alarmContent != null">#{alarmContent},</if>
@@ -215,6 +217,7 @@
 
             <if test="stockId != null">#{stockId},</if>
             <if test="userecordId != null">#{userecordId},</if>
+            <if test="parentId != null">#{parentId},</if>
         </trim>
     </insert>
 
@@ -244,6 +247,9 @@
     <update id="updateByReturnUserecord">
         update hxp_alarm_record set handling_status = 2 where handling_status = 1 and userecord_id = #{userecordId}
     </update>
+    <update id="updateOtherByParentId">
+        update hxp_alarm_record set handling_status = 2 where has_valid = 0 and handling_status = 1 and parent_id = #{parentId}
+    </update>
 
     <delete id="deleteHxpAlarmRecordById" parameterType="Long">
         delete