浏览代码

1. 修改 取消消息,生成的 orderhis bug
2. 增加 工单取消 时,短信通知

lilt085163@126.com 3 年之前
父节点
当前提交
81679810f9

+ 6 - 1
src/main/java/com/care/bms/service/BmsEventOrderService.java

@@ -604,7 +604,12 @@ public class BmsEventOrderService {
         if (contactStatus!=null){
             CareEventOrder order = this.careEventOrderService.getById(contactStatus.getOrderId());
             CareHouse house = this.careHouseService.getById(contactStatus.getHouseId());
-            boolean smsResult = smsSendService.sendSmsToLianxiren(order.getOrderType(),contactStatus.getContactPhone(),house.getName());
+            boolean smsResult = false;
+            if (OrderTypeEnum.JIU_ZHI.getValue().equals(order.getOrderType())){
+                 smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.JIU_ZHI,contactStatus.getContactPhone(),house.getName());
+            }else if(OrderTypeEnum.DIE_DAO.getValue().equals(order.getOrderType())){
+                 smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.DIE_DAO,contactStatus.getContactPhone(),house.getName());
+            }
             if (smsResult){
                 CareEventOrderHandleHis his = new CareEventOrderHandleHis();
                 his.setOrgId(contactStatus.getOrgId());

+ 3 - 3
src/main/java/com/care/common/enums/OrderTypeEnum.java

@@ -12,7 +12,7 @@ public enum OrderTypeEnum {
     /**
      *
      */
-    DI_EDAO("21","跌倒"),
+    DIE_DAO("21","跌倒"),
     JIU_ZHI("22","久滞"),
     ZHUI_CHUANG("23","坠床"),
     ZHU_DONG_HU_JIAO("31","主动呼叫"),
@@ -31,8 +31,8 @@ public enum OrderTypeEnum {
         if (StrUtil.isEmpty(code)){
             return null;
         }
-        if (DI_EDAO.getValue().equals(code)){
-            return  DI_EDAO.name;
+        if (DIE_DAO.getValue().equals(code)){
+            return  DIE_DAO.name;
         }else if (JIU_ZHI.getValue().equals(code)){
             return JIU_ZHI.name;
         }else if (ZHUI_CHUANG.getValue().equals(code)){

+ 44 - 0
src/main/java/com/care/common/enums/SmsTemplateTypeEnum.java

@@ -0,0 +1,44 @@
+package com.care.common.enums;
+
+
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * @Author:java
+ * @Date: 2021/05/27
+ */
+public enum SmsTemplateTypeEnum {
+
+    /**
+     *
+     */
+    DIE_DAO("DIE_DAO","跌倒"),
+    JIU_ZHI("JIU_ZHI","久滞"),
+    CANCEL_DIEDAO("CANCEL_DIEDAO","取消跌倒"),
+    CANCEL_JIUZHI("CANCEL_JIUZHI","取消久滞");
+    private String value;
+    private String name;
+    SmsTemplateTypeEnum(String value, String name) {
+        this.value = value;
+        this.name = name;
+    }
+    public String getValue() {
+        return value;
+    }
+
+    public static String getCodeToName(String code){
+        if (StrUtil.isEmpty(code)){
+            return null;
+        }
+        if (DIE_DAO.getValue().equals(code)){
+            return  DIE_DAO.name;
+        }else if (JIU_ZHI.getValue().equals(code)){
+            return JIU_ZHI.name;
+        }else if (CANCEL_DIEDAO.getValue().equals(code)){
+            return CANCEL_DIEDAO.name;
+        }else if (CANCEL_JIUZHI.getValue().equals(code)){
+            return CANCEL_JIUZHI.name;
+        }
+        return null;
+    }
+}

+ 8 - 1
src/main/java/com/care/common/service/CareEventOrderService.java

@@ -19,7 +19,14 @@ public interface CareEventOrderService extends IService<CareEventOrder> {
      */
     EventStaVO statOrder(Long orgId, Long stationId);
 
-    boolean saveHisOrder(CareEventOrder order,CareEventOrder orderDb);
+    boolean saveHisOrder(CareEventOrder order,CareEventOrder orderDb,boolean isCancel);
 
     boolean saveOrder(CareEventOrder order);
+
+    /**
+     * 自动取消工单
+     * @param order
+     * @return
+     */
+    boolean autoCancelOrder(CareEventOrder order);
 }

+ 3 - 1
src/main/java/com/care/common/service/SmsSendService.java

@@ -1,6 +1,8 @@
 package com.care.common.service;
 
 
+import com.care.common.enums.SmsTemplateTypeEnum;
+
 /**
  * 编码类型表(SysDimType)表服务接口
  *
@@ -45,5 +47,5 @@ public interface SmsSendService  {
      * @param params
      * @return
      */
-    boolean sendSmsToLianxiren(String orderType ,String phone, String params);
+    boolean sendSmsToLianxiren(SmsTemplateTypeEnum template , String phone, String params);
 }

+ 117 - 5
src/main/java/com/care/common/service/impl/CareEventOrderServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
@@ -17,6 +18,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -74,7 +76,7 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean saveHisOrder(CareEventOrder order,CareEventOrder orderDb){
+    public boolean saveHisOrder(CareEventOrder order,CareEventOrder orderDb,boolean isCancel){
 //        orderDb.setOrderType(order.getOrderType());
 //        this.updateById(orderDb);//更新
         order.setId(orderDb.getId());
@@ -95,7 +97,11 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
             his.setLogType(LogTypeEnum.DEV_EVENT.getValue());
             his.setLogObjectId(order.getDevId());
             his.setLogObjectName(order.getDevName());
-            his.setLogResult("发生"+OrderTypeEnum.getCodeToName(order.getOrderType()));
+            if (isCancel){
+                his.setLogResult(OrderTypeEnum.getCodeToName(order.getOrderType())+"取消");
+            }else{
+                his.setLogResult("发生"+OrderTypeEnum.getCodeToName(order.getOrderType()));
+            }
             his.setRelationTypeDesc(RelationTypeEnum.HOUSE.getName());
         }
         his.setCreateTime(order.getCreateTime());
@@ -149,9 +155,13 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
                 //给联系人发送短信
                 CareHouse house = this.careHouseService.getById(order.getHouseId());
                 if (CollUtil.isNotEmpty(contacts)){
-
                     contacts.forEach(item ->{
-                        boolean smsResult = smsSendService.sendSmsToLianxiren(order.getOrderType(),item.getContactPhone(),house.getName());
+                        boolean smsResult = false;
+                        if (OrderTypeEnum.JIU_ZHI.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.JIU_ZHI,item.getContactPhone(),house.getName());
+                        }else if(OrderTypeEnum.DIE_DAO.getValue().equals(order.getOrderType())){
+                             smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.DIE_DAO,item.getContactPhone(),house.getName());
+                        }
                         if (smsResult){
                             CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
                             his2.setOrgId(item.getOrgId());
@@ -171,7 +181,12 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
                 //给管家发短信
                 if (CollUtil.isNotEmpty(chambList)){
                     chambList.forEach(item ->{
-                        boolean smsResult = smsSendService.sendSmsToLianxiren(order.getOrderType(),item.getPhone(),house.getName());
+                        boolean smsResult = false;
+                        if (OrderTypeEnum.JIU_ZHI.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.JIU_ZHI,item.getPhone(),house.getName());
+                        }else if(OrderTypeEnum.DIE_DAO.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.DIE_DAO,item.getPhone(),house.getName());
+                        }
                         if (smsResult){
                             CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
                             his2.setOrgId(item.getOrgId());
@@ -284,4 +299,101 @@ public class CareEventOrderServiceImpl extends ServiceImpl<CareEventOrderMapper,
         }
         return orderContactList;
     }
+
+    /**
+     * 自动取消工单
+     *
+     * @param order
+     * @return
+     */
+    @Override
+    public boolean autoCancelOrder(CareEventOrder order) {
+        UpdateWrapper<CareEventOrder> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(CareEventOrder::getStatus,OrderStatusEnum.CANCEL.getValue()).eq(CareEventOrder::getId,order.getId());
+        order.setStatus(OrderStatusEnum.CANCEL.getValue());
+        this.update(updateWrapper);
+        //管家工单标记为取消
+        CareEventOrderChamb careEventOrderChamb = this.careEventOrderChambService.getChambOrderByOrderId(order.getId());
+        UpdateWrapper<CareEventOrderChamb> updateWrapperChamb = new UpdateWrapper<>();
+        updateWrapperChamb.lambda().set(CareEventOrderChamb::getStatus,ChambOrderStatusEnum.CANCEL.getValue()).eq(CareEventOrderChamb::getId,careEventOrderChamb.getId());
+        this.careEventOrderChambService.update(updateWrapperChamb);
+        //记录一条取消his
+        CareEventOrder  orderDb =  new CareEventOrder();
+        orderDb.setId(order.getId());
+        this.saveHisOrder(order, orderDb,true);
+        cancelEventSMSNotic(order);
+        return true;
+    }
+
+    /**
+     * 取消事件,短信通知
+     * @param order
+     */
+    private void cancelEventSMSNotic(CareEventOrder order){
+        try{
+            Object switchSms = redisUtil.get(RedisKeyConstant.SWITCH_SMS);
+            if (switchSms != null){
+                List<CareEventOrderChamb> chambList = new ArrayList<>();
+                CareEventOrderChamb chamb =  this.careEventOrderChambService.getChambOrderByOrderId(order.getId());
+                chambList.add(chamb);
+                QueryWrapper<CareEventOrderContactStatus> queryWrapper = new QueryWrapper<>();
+                queryWrapper.lambda().eq(CareEventOrderContactStatus::getOrderId,order.getId());
+                List<CareEventOrderContactStatus> contacts = this.careEventOrderContactStatusService.list(queryWrapper);
+
+                //给联系人发送短信
+                CareHouse house = this.careHouseService.getById(order.getHouseId());
+                if (CollUtil.isNotEmpty(contacts)){
+                    contacts.forEach(item ->{
+                        boolean smsResult = false;
+                        if (OrderTypeEnum.JIU_ZHI.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.CANCEL_JIUZHI,item.getContactPhone(),house.getName());
+                        }else if(OrderTypeEnum.DIE_DAO.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.CANCEL_DIEDAO,item.getContactPhone(),house.getName());
+                        }
+                        if (smsResult){
+                            CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
+                            his2.setOrgId(item.getOrgId());
+                            his2.setStationId(item.getStationId());
+                            his2.setOrderId(item.getOrderId());
+                            his2.setLogType(LogTypeEnum.SMS.getValue());
+                            his2.setLogObjectId(item.getContactId());
+                            his2.setLogObjectName(item.getContactName());
+                            his2.setLogResult("事件取消短信通知");
+                            his2.setOpUserRole(UserRoleEnum.SEAT.getValue());
+                            his2.setCreateTime(DateUtil.date());
+                            his2.setRelationTypeDesc(item.getRelationTypeDesc());
+                            this.careEventOrderHandleHisService.save(his2);
+                        }
+                    });
+                }
+                //给管家发短信
+                if (CollUtil.isNotEmpty(chambList)){
+                    chambList.forEach(item ->{
+                        boolean smsResult = false;
+                        if (OrderTypeEnum.JIU_ZHI.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.CANCEL_JIUZHI,item.getPhone(),house.getName());
+                        }else if(OrderTypeEnum.DIE_DAO.getValue().equals(order.getOrderType())){
+                            smsResult = smsSendService.sendSmsToLianxiren(SmsTemplateTypeEnum.CANCEL_DIEDAO,item.getPhone(),house.getName());
+                        }
+                        if (smsResult){
+                            CareEventOrderHandleHis his2 = new CareEventOrderHandleHis();
+                            his2.setOrgId(item.getOrgId());
+                            his2.setStationId(item.getStationId());
+                            his2.setOrderId(item.getOrderId());
+                            his2.setLogType(LogTypeEnum.SMS.getValue());
+                            his2.setLogObjectId(item.getChambId());
+                            his2.setLogObjectName(item.getChambName());
+                            his2.setLogResult("事件取消短信通知");
+                            his2.setOpUserRole(UserRoleEnum.SEAT.getValue());
+                            his2.setCreateTime(DateUtil.date());
+                            his2.setRelationTypeDesc("管家");
+                            this.careEventOrderHandleHisService.save(his2);
+                        }
+                    });
+                }
+            }
+        }catch (Exception e){
+            log.error("发送短信通知失败",e);
+        }
+    }
 }

+ 15 - 6
src/main/java/com/care/common/service/impl/SmsSendServiceImpl.java

@@ -1,15 +1,13 @@
 package com.care.common.service.impl;
 
 import cn.hutool.core.util.StrUtil;
-import com.care.common.enums.OrderTypeEnum;
+import com.care.common.enums.SmsTemplateTypeEnum;
 import com.care.common.service.SmsSendService;
 import com.care.common.util.SmsUtil;
 import com.tencentcloudapi.sms.v20210111.models.SendStatus;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import java.util.Random;
-
 /**
  * @Author: lilt
  * @Date: 2021/6/5
@@ -42,6 +40,12 @@ public class SmsSendServiceImpl implements SmsSendService {
     @Value("${sms.notice.templateid.jiuzhi:#{null}}")
     private String noticeTemplateId4jiuzhi;
 
+    @Value("${sms.notic.templateid.cancel.jiuzhi:#{null}}")
+    private String noticTemplateId4CancelJiuzhi;
+
+    @Value("${sms.notic.templateid.cancel.diedao:#{null}}")
+    private String noticTemplateId4CancelDiedao;
+
     @Value("${sms.notice.templateid.diedao:#{null}}")
     private String noticeTemplateId4diedao;
 
@@ -137,13 +141,17 @@ public class SmsSendServiceImpl implements SmsSendService {
     }*/
 
     @Override
-    public boolean sendSmsToLianxiren(String orderType, String phone, String params) {
+    public boolean sendSmsToLianxiren(SmsTemplateTypeEnum template, String phone, String params) {
         String[] _p = {params};
         String _noticeTemplateId =  "";
-        if (OrderTypeEnum.DI_EDAO.getValue().equals(orderType)){
+        if (SmsTemplateTypeEnum.DIE_DAO.equals(template)){
             _noticeTemplateId = noticeTemplateId4diedao;
-        }else if(OrderTypeEnum.JIU_ZHI.getValue().equals(orderType)){
+        }else if(SmsTemplateTypeEnum.JIU_ZHI.equals(template)){
             _noticeTemplateId = noticeTemplateId4jiuzhi;
+        }else if(SmsTemplateTypeEnum.CANCEL_DIEDAO.equals(template)){
+            _noticeTemplateId = noticTemplateId4CancelDiedao;
+        }else if(SmsTemplateTypeEnum.CANCEL_JIUZHI.equals(template)){
+            _noticeTemplateId = noticTemplateId4CancelJiuzhi;
         }
         if (StrUtil.isNotEmpty(_noticeTemplateId)){
             SendStatus sendStatus =  SmsUtil.sendSms(noticeEndpoint,
@@ -163,4 +171,5 @@ public class SmsSendServiceImpl implements SmsSendService {
             return  false;
         }
     }
+
 }

+ 2 - 2
src/main/java/com/care/mqtt/service/MqttMsgRedisService.java

@@ -165,7 +165,7 @@ public class MqttMsgRedisService {
           order.setModifyTime(careMqttMsg.getCreateTime());
           order.setStatus(OrderStatusEnum.TODO.getValue());
           if ("FallDown".equals(careMqttMsg.getType())) { //跌到
-              order.setOrderType(OrderTypeEnum.DI_EDAO.getValue());
+              order.setOrderType(OrderTypeEnum.DIE_DAO.getValue());
           } else if("StayTooLong".equals(careMqttMsg.getType())){ //久滞
               order.setOrderType(OrderTypeEnum.JIU_ZHI.getValue());
           }
@@ -178,7 +178,7 @@ public class MqttMsgRedisService {
 
           CareEventOrder orderDb = careEventOrderService.getOne(queryWrapper2);
           if(orderDb != null) { //有未完成的告警事件,不再生成新的告警工单,只作为子事件插入到当前工单的历史记录中。
-              careEventOrderService.saveHisOrder(order,orderDb);
+              careEventOrderService.saveHisOrder(order,orderDb,false);
               //通知页面
               this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"orderUpdate");
               this.bigScreenService.pushRtEventFlag(order.getStationId().toString(),order.getId().toString(),"bigscreenRefresh");

+ 5 - 12
src/main/java/com/care/mqtt/service/MqttMsgService.java

@@ -161,7 +161,7 @@ public class MqttMsgService {
                 }
 
                 if ("FallDown".equals(type)) { //跌到
-                    order.setOrderType(OrderTypeEnum.DI_EDAO.getValue());
+                    order.setOrderType(OrderTypeEnum.DIE_DAO.getValue());
                 } else if ("StayTooLong".equals(type)) {
                     order.setOrderType(OrderTypeEnum.JIU_ZHI.getValue());
                 }
@@ -178,7 +178,7 @@ public class MqttMsgService {
                         careMqttMsg.setStatus(MqttMsgStatusEnum.HANDLED.getValue());
                         this.careMqttMsgService.save(careMqttMsg);
 
-                        careEventOrderService.saveHisOrder(order, orderDb);
+                        careEventOrderService.saveHisOrder(order, orderDb,false);
                         //通知页面
                         this.bigScreenService.pushRtEventFlag(order.getStationId().toString(), order.getId().toString(), "orderUpdate");
                         this.bigScreenService.pushRtEventFlag(order.getStationId().toString(), order.getId().toString(), "bigscreenRefresh");
@@ -188,21 +188,14 @@ public class MqttMsgService {
 
                         if (orderDb.getOrderType().equals(order.getOrderType())) {//看取消的类型,和当前一致,则 更新当前的工单状态为取消,记录一条取消his,管家工单标记为取消
                             //更新当前的工单状态为取消
-                            orderDb.setStatus(OrderStatusEnum.CANCEL.getValue());
-                            this.careEventOrderService.updateById(orderDb);
-
-                            //管家工单标记为取消
-                            CareEventOrderChamb careEventOrderChamb = this.careEventOrderChambService.getChambOrderByOrderId(orderDb.getId());
-                            careEventOrderChamb.setStatus(ChambOrderStatusEnum.CANCEL.getValue());
-                            this.careEventOrderChambService.updateById(careEventOrderChamb);
-                            //记录一条取消his
-                            careEventOrderService.saveHisOrder(order, orderDb);
+                            order.setId(orderDb.getId());
+                            this.careEventOrderService.autoCancelOrder(order);
                             //通知页面
                             this.bigScreenService.pushRtEventFlag(order.getStationId().toString(), order.getId().toString(), "orderUpdate");
                             this.bigScreenService.pushRtEventFlag(order.getStationId().toString(), order.getId().toString(), "bigscreenRefresh");
                         } else { // 不一致,则只记录一条取消his
                             //记录一条取消his
-                            careEventOrderService.saveHisOrder(order, orderDb);
+                            careEventOrderService.saveHisOrder(order, orderDb,true);
                         }
 
                     }

+ 2 - 0
src/main/resources/application.properties

@@ -78,6 +78,8 @@ sms.notice.templateid.diedao=1097262
 sms.notice.templateid.modify.phone=1041851
 sms.notice.templateid.register.phone=1041847
 sms.notice.templateid.modify.password=1041838
+sms.notic.templateid.cancel.jiuzhi=1156954
+sms.notic.templateid.cancel.diedao=1156955