Browse Source

Merge remote-tracking branch 'origin/master' into 20210223

hym 4 years ago
parent
commit
02cfb2b851
20 changed files with 565 additions and 132 deletions
  1. 3 0
      operation_manager/src/main/java/com/huaxu/order/dto/WorkOrderManageByAlarmDto.java
  2. 1 0
      operation_manager/src/main/java/com/huaxu/process/service/impl/WorkFlowServiceImpl.java
  3. 10 13
      operation_manager/src/main/resources/application-prd.properties
  4. 1 1
      operation_manager/src/main/resources/mapper/ProcessDefinitionMapper.xml
  5. 1 0
      operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml
  6. 197 0
      sms_water/src/main/java/com/huaxu/config/RabbitConfig.java
  7. 1 1
      sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java
  8. 3 0
      sms_water/src/main/java/com/huaxu/dto/WorkOrderManageByAlarmDto.java
  9. 65 30
      sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java
  10. 49 3
      sms_water/src/main/java/com/huaxu/service/AlarmSettingService.java
  11. 76 28
      sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java
  12. 6 2
      sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java
  13. 44 28
      sms_water/src/main/resources/application-dev.properties
  14. 44 11
      sms_water/src/main/resources/application-prd.properties
  15. 40 7
      sms_water/src/main/resources/application-sit.properties
  16. 8 0
      sms_water/src/main/resources/mapper/AlarmDetailMapper.xml
  17. 9 1
      user_auth/src/main/resources/application-prd.properties
  18. 1 1
      user_auth/src/main/resources/application.properties
  19. 3 3
      user_center/src/main/resources/application-prd.properties
  20. 3 3
      user_center/src/main/resources/application-sit.properties

+ 3 - 0
operation_manager/src/main/java/com/huaxu/order/dto/WorkOrderManageByAlarmDto.java

@@ -51,4 +51,7 @@ public class WorkOrderManageByAlarmDto implements Serializable {
     @ApiModelProperty(value = "经纬度")
     @ApiModelProperty(value = "经纬度")
     private String geo;
     private String geo;
 
 
+    @ApiModelProperty(value = "0未接单、1进行中、2完成")
+    private Integer orderStatus;
+
 }
 }

+ 1 - 0
operation_manager/src/main/java/com/huaxu/process/service/impl/WorkFlowServiceImpl.java

@@ -174,6 +174,7 @@ public class WorkFlowServiceImpl implements WorkFlowService {
                 processDefinition.setStatus(1);
                 processDefinition.setStatus(1);
                 processDefinition.setCreateBy(UserUtil.getCurrentUser().getUsername());
                 processDefinition.setCreateBy(UserUtil.getCurrentUser().getUsername());
                 processDefinition.setDateCreate(new Date());
                 processDefinition.setDateCreate(new Date());
+                processDefinition.setId(null);
                 processDefinitionMapper.insert(processDefinition);
                 processDefinitionMapper.insert(processDefinition);
 
 
             }
             }

+ 10 - 13
operation_manager/src/main/resources/application-prd.properties

@@ -67,22 +67,19 @@ spring.activiti.database-schema-update=true
 spring.activiti.check-process-definitions=false
 spring.activiti.check-process-definitions=false
 spring.activiti.job-executor-activate=false
 spring.activiti.job-executor-activate=false
 spring.activiti.async-executor-enabled=false
 spring.activiti.async-executor-enabled=false
-
-
 #rabbit
 #rabbit
-spring.rabbitmq.addresses=114.135.61.188:55672
-spring.rabbitmq.username=zoniot
-spring.rabbitmq.password=zcxk100
+spring.rabbitmq.host=47.112.217.10
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=huaxu
+spring.rabbitmq.password=huaxu123
 spring.rabbitmq.virtual-host=/
 spring.rabbitmq.virtual-host=/
 spring.rabbitmq.connection-timeout=15000
 spring.rabbitmq.connection-timeout=15000
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.template.mandatory=true
 spring.rabbitmq.template.mandatory=true
-
-
-dispath.queue=dispathTest
 receive.exchange.name=messageExchangeTest
 receive.exchange.name=messageExchangeTest
 dispath.routing.key=dipathKeyTest
 dispath.routing.key=dipathKeyTest
+dispath.queue=dispathTest
 #nacos
 #nacos
 spring.cloud.nacos.discovery.server-addr=10.0.0.136:8848
 spring.cloud.nacos.discovery.server-addr=10.0.0.136:8848
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
 UMIS.sys_config_path=/UMIS_USER_IMAGES/
@@ -90,10 +87,10 @@ UMIS.sys_excel_path=/UMIS_USER_EXCEL/
 UMIS.sys_video_path=/UMIS_USER_VIDEOS/
 UMIS.sys_video_path=/UMIS_USER_VIDEOS/
 wf.svg.file.path=D:/test/
 wf.svg.file.path=D:/test/
 
 
-
-
-
-
-
+# 设置 feign 客户端超时时间(OpenFeign 默认支持 ribbon)
+# 值的是建立连接所用的时间,使用与网络状态正常的情况,两端连接所用的时间
+ribbon.ReadTimeout=5000
+# 指的是建立连接后从服务器读取到可用资源所用的时间
+ribbon.ConnectionTimeout=5000
 
 
 
 

+ 1 - 1
operation_manager/src/main/resources/mapper/ProcessDefinitionMapper.xml

@@ -326,6 +326,6 @@
         </where>
         </where>
     </select>
     </select>
     <select id="getBpmnContent" resultType="java.lang.String">
     <select id="getBpmnContent" resultType="java.lang.String">
-        select bpmn_content from sc_process_def where status = 1 and id = #{id}
+        select bpmn_content from sc_process_definition where status = 1 and id = #{id}
     </select>
     </select>
 </mapper>
 </mapper>

+ 1 - 0
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -554,6 +554,7 @@
     id
     id
     ,device_id as "deviceId"
     ,device_id as "deviceId"
     , task_desc as "taskDesc"
     , task_desc as "taskDesc"
+    , order_status as "orderStatus"
     from sc_work_order_manage
     from sc_work_order_manage
     where (order_status = 0 or order_status = 1)
     where (order_status = 0 or order_status = 1)
     and device_id in
     and device_id in

+ 197 - 0
sms_water/src/main/java/com/huaxu/config/RabbitConfig.java

@@ -0,0 +1,197 @@
+package com.huaxu.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitAdmin;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Scope;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,
+ Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
+ Queue:消息的载体,每个消息都会被投到一个或多个队列。
+ Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.
+ Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
+ vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。
+ Producer:消息生产者,就是投递消息的程序.
+ Consumer:消息消费者,就是接受消息的程序.
+ Channel:消息通道,在客户端的每个连接里,可建立多个channel.
+ */
+@Configuration
+public class RabbitConfig {
+
+    private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+    @Value("${message.spring.rabbitmq.host}")
+    private String messageHost;
+    @Value("${message.spring.rabbitmq.port}")
+    private int messagePort;
+    @Value("${message.spring.rabbitmq.username}")
+    private String messagePsername;
+    @Value("${message.spring.rabbitmq.password}")
+    private String messagePassword;
+    @Value("${message.spring.rabbitmq.virtual-host}")
+    private String messageVirtualHost;
+
+    @Value("${message.spring.rabbitmq.requested-heartbeat}")
+    private int messageRequestedHeartbeat;
+    @Value("${message.spring.rabbitmq.connection-timeout}")
+    private int messageConnectionTimeout;
+//    @Value("${message.spring.rabbitmq.publisher-confirm-type}")
+//    private CachingConnectionFactory.ConfirmType messagePublisherConfirms;
+
+    @Value("${message.spring.rabbitmq.publisher-confirms}")
+    private Boolean messagePublisherConfirms;
+    @Value("${message.spring.rabbitmq.publisher-returns}")
+    private Boolean messagePublisherReturns;
+
+    @Value("${message.spring.rabbitmq.listener.simple.acknowledge-mode}")
+    private AcknowledgeMode messageAcknowledgeMode;
+    @Value("${message.spring.rabbitmq.listener.simple.prefetch}")
+    private int messagePrefetch;
+
+    @Value("${receive.exchange.name}")
+    private  String receiveExchangeName;
+    @Value("${dispath.routing.key}")
+    private  String dispathRoutingKey;
+    @Value("${dispath.queue}")
+    private  String dispathQueue;
+
+    @Bean
+    @Primary
+    public ConnectionFactory MessageconnectionFactory() {
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(messageHost,messagePort);
+        connectionFactory.setUsername(messagePsername);
+        connectionFactory.setPassword(messagePassword);
+        connectionFactory.setVirtualHost(messageVirtualHost);
+        connectionFactory.setRequestedHeartBeat(messageRequestedHeartbeat);
+        connectionFactory.setConnectionTimeout(messageConnectionTimeout);
+//        connectionFactory.
+//        connectionFactory.setPublisherConfirmType(messagePublisherConfirms);
+        connectionFactory.setPublisherConfirms(messagePublisherConfirms);
+        connectionFactory.setPublisherReturns(messagePublisherReturns);
+        return connectionFactory;
+    }
+
+    @Bean(name = "messageRabbitTemplate")
+    @Primary
+    public RabbitTemplate MessageRabbitTemplate() {
+        RabbitTemplate template = new RabbitTemplate(MessageconnectionFactory());
+        return template;
+    }
+
+    //配置消费者监听的容器
+    @Bean(name = "messageContainerFactory")
+    @Primary
+    public SimpleRabbitListenerContainerFactory MessageRabbitListenerContainerFactory() {
+        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
+        factory.setConnectionFactory(MessageconnectionFactory());
+//        factory.setConcurrentConsumers(3);
+//        factory.setMaxConcurrentConsumers(10);
+        factory.setPrefetchCount(messagePrefetch);
+        factory.setAcknowledgeMode(messageAcknowledgeMode);//设置确认模式
+        return factory;
+    }
+    
+    @Bean(name = "messageRabbitAdmin")
+    @Primary
+    public RabbitAdmin RabbitAdmin() {
+        RabbitAdmin rabbitAdmin = new RabbitAdmin(MessageconnectionFactory());
+        rabbitAdmin.setAutoStartup(true);
+//        Map<String, Object> args = new HashMap<>();
+//        args.put("x-queue-type", "classic");
+        rabbitAdmin.declareQueue(QueueBuilder.nonDurable(dispathQueue).build());
+        rabbitAdmin.declareExchange(new TopicExchange(receiveExchangeName, false, false, null));
+        rabbitAdmin.declareBinding(
+                BindingBuilder
+                        .bind(QueueBuilder.nonDurable(dispathQueue).build())        //队列
+                        .to(new TopicExchange(receiveExchangeName, false, false, null))    //直接创建交换机 建立关联关系
+                        .with(dispathRoutingKey));    //指定路由Key
+    return rabbitAdmin;
+    }
+
+
+
+    @Value("${receiveData.spring.rabbitmq.host}")
+    private String dataHost;
+    @Value("${receiveData.spring.rabbitmq.port}")
+    private int dataPort;
+    @Value("${receiveData.spring.rabbitmq.username}")
+    private String dataUsername;
+    @Value("${receiveData.spring.rabbitmq.password}")
+    private String dataPassword;
+    @Value("${receiveData.spring.rabbitmq.virtual-host}")
+    private String dataVirtualHost;
+
+    @Value("${receiveData.spring.rabbitmq.requested-heartbeat}")
+    private int dataRequestedHeartbeat;
+    @Value("${receiveData.spring.rabbitmq.connection-timeout}")
+    private int dataConnectionTimeout;
+//    @Value("${receiveData.spring.rabbitmq.publisher-confirm-type}")
+//    private CachingConnectionFactory.ConfirmType dataPublisherConfirms;
+
+    @Value("${receiveData.spring.rabbitmq.publisher-confirms}")
+    private Boolean dataPublisherConfirms;
+
+    @Value("${receiveData.spring.rabbitmq.publisher-returns}")
+    private Boolean dataPublisherReturns;
+
+    @Value("${receiveData.spring.rabbitmq.listener.simple.acknowledge-mode}")
+    private AcknowledgeMode dataAcknowledgeMode;
+    @Value("${receiveData.spring.rabbitmq.listener.simple.prefetch}")
+    private int dataPrefetch;
+
+    @Bean
+    public ConnectionFactory ReceiveDataconnectionFactory() {
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(messageHost,messagePort);
+        connectionFactory.setUsername(messagePsername);
+        connectionFactory.setPassword(messagePassword);
+        connectionFactory.setVirtualHost(dataVirtualHost);
+        connectionFactory.setRequestedHeartBeat(dataRequestedHeartbeat);
+        connectionFactory.setConnectionTimeout(dataConnectionTimeout);
+//        connectionFactory.setPublisherConfirmType(dataPublisherConfirms);
+            connectionFactory.setPublisherConfirms(dataPublisherConfirms);
+        connectionFactory.setPublisherReturns(dataPublisherReturns);
+        return connectionFactory;
+    }
+
+    @Bean(name = "receiveDataRabbitTemplate")
+    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+    //必须是prototype类型
+    public RabbitTemplate ReceiveDatarabbitTemplate() {
+        RabbitTemplate template = new RabbitTemplate(ReceiveDataconnectionFactory());
+        return template;
+    }
+
+    //配置消费者监听的容器
+    @Bean(name = "receiveDataContainerFactory")
+    public SimpleRabbitListenerContainerFactory ReceiveDatarabbitListenerContainerFactory() {
+        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
+        factory.setConnectionFactory(ReceiveDataconnectionFactory());
+//        factory.setConcurrentConsumers(3);
+//        factory.setMaxConcurrentConsumers(10);
+        factory.setPrefetchCount(dataPrefetch);
+        factory.setAcknowledgeMode(dataAcknowledgeMode);//设置确认模式手工确认
+        return factory;
+    }
+
+
+
+
+
+
+
+
+}

+ 1 - 1
sms_water/src/main/java/com/huaxu/dao/AlarmDetailMapper.java

@@ -123,7 +123,7 @@ public interface AlarmDetailMapper {
      * 查询设备报警信息
      * 查询设备报警信息
      * @return
      * @return
      */
      */
-    List<AlarmDetailsDto> selectStateAlarm(@Param("deviceId") Integer deviceId, @Param("alarmType") String alarmType);
+    List<AlarmDetailsDto> selectStateAlarm(@Param("deviceId") Integer deviceId, @Param("alarmType") String alarmType,@Param("alarmSettingIds") List<Long> alarmSettingIds);
 
 
 
 
     Integer udpateLastUpdateTime(@Param("deviceId") Integer deviceId, @Param("lastUpdateTime") Date lastUpdateTime);
     Integer udpateLastUpdateTime(@Param("deviceId") Integer deviceId, @Param("lastUpdateTime") Date lastUpdateTime);

+ 3 - 0
sms_water/src/main/java/com/huaxu/dto/WorkOrderManageByAlarmDto.java

@@ -51,4 +51,7 @@ public class WorkOrderManageByAlarmDto implements Serializable {
     @ApiModelProperty(value = "经纬度")
     @ApiModelProperty(value = "经纬度")
     private String geo;
     private String geo;
 
 
+    @ApiModelProperty(value = "0未接单、1进行中、2完成")
+    private Integer orderStatus;
+
 }
 }

+ 65 - 30
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveData.java

@@ -14,12 +14,12 @@ import com.huaxu.common.StringUtils;
 import com.huaxu.dao.AlarmDetailMapper;
 import com.huaxu.dao.AlarmDetailMapper;
 import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.DeviceCheckAlarmDto;
 import com.huaxu.dto.DeviceCheckAlarmDto;
+import com.huaxu.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.entity.AlarmDetailsEntity;
 import com.huaxu.entity.AlarmDetailsEntity;
 import com.huaxu.entity.Message;
 import com.huaxu.entity.Message;
 import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.service.MonitorDataService;
 import com.huaxu.service.MonitorDataService;
-import com.huaxu.util.MessageSendUtil;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.springframework.amqp.core.AmqpTemplate;
 import org.springframework.amqp.core.AmqpTemplate;
@@ -31,9 +31,11 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.awt.*;
 import java.text.ParseException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.*;
+import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Component
 @Component
@@ -41,18 +43,19 @@ import java.util.stream.Collectors;
 public class ReceiveData {
 public class ReceiveData {
 
 
 
 
-    @Autowired
-    private AmqpTemplate rabbitTemplate;
+    @Resource(name = "messageRabbitTemplate")
+    private AmqpTemplate messageRabbitTemplate;
+
+    @Resource(name = "receiveDataRabbitTemplate")
+    private AmqpTemplate receiveDataRabbitTemplate;
 
 
     @Resource
     @Resource
     private AlarmDetailMapper alarmDetailMapper;
     private AlarmDetailMapper alarmDetailMapper;
 
 
     @Autowired
     @Autowired
     private UserCenterClient userCenterClient;
     private UserCenterClient userCenterClient;
-    @Autowired
-    private MessageSendUtil messageSendUtil;
 
 
-    @Value("${spring.rabbitmq.listener.queue}")
+    @Value("${receiveData.spring.rabbitmq.listener.queue}")
     private   String rabbitmqQueue;
     private   String rabbitmqQueue;
 
 
     @Autowired
     @Autowired
@@ -69,17 +72,28 @@ public class ReceiveData {
         return rabbitmqQueue;
         return rabbitmqQueue;
     }
     }
 
 
+    @Value("${receive.exchange.name}")
+    private  String receiveExchangeName;
+    @Value("${dispath.routing.key}")
+    private  String dispathRoutingKey;
+
+
+    private void send(Message message){
+        log.debug("消息发送 exchange={}  routingkey={} 用户id={}",receiveExchangeName,dispathRoutingKey,message.getUserId());
+        messageRabbitTemplate.convertAndSend(receiveExchangeName,dispathRoutingKey, JSONObject.toJSONString(message));
+    }
+
     @RabbitHandler
     @RabbitHandler
-    @RabbitListener(queues = "#{rabbitmqQueue}")
+    @RabbitListener(queues = "#{rabbitmqQueue}",containerFactory = "receiveDataContainerFactory")
     public void received(byte[] receivedData) {
     public void received(byte[] receivedData) {
 
 
         try {
         try {
-            log.info("rabbitMq接收消息:"+new String(receivedData));
+            log.debug("rabbitMq接收消息:"+new String(receivedData));
             receivedDataHandle(receivedData);
             receivedDataHandle(receivedData);
         } catch (Exception e) {
         } catch (Exception e) {
             log.error(ExceptionUtils.getStackTrace(e));
             log.error(ExceptionUtils.getStackTrace(e));
             // 发送异常时消息返回队列
             // 发送异常时消息返回队列
-            rabbitTemplate.convertAndSend(rabbitmqQueue, receivedData);
+//            receiveDataRabbitTemplate.convertAndSend(rabbitmqQueue, receivedData);
         }
         }
 
 
     }
     }
@@ -151,7 +165,7 @@ public class ReceiveData {
            if(deviceCheckAlarmDtos.size()>0 && StringUtils.isNotBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){
            if(deviceCheckAlarmDtos.size()>0 && StringUtils.isNotBlank(deviceCheckAlarmDtos.get(0).getIdentifiter())){
                Integer deviceId= deviceCheckAlarmDtos.get(0).getDeviceId();
                Integer deviceId= deviceCheckAlarmDtos.get(0).getDeviceId();
                //系统中已存在的报警信息
                //系统中已存在的报警信息
-               List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警");
+               List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(deviceId,"参数报警",null);
                //已存在的报警信息转为map方便匹配alarmSettingId
                //已存在的报警信息转为map方便匹配alarmSettingId
                Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
                Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
 
 
@@ -224,7 +238,7 @@ public class ReceiveData {
                                if(taskUsers!=null){
                                if(taskUsers!=null){
                                    taskUsers.forEach(id->{
                                    taskUsers.forEach(id->{
                                        message.setUserId(id);
                                        message.setUserId(id);
-                                       messageSendUtil.send(message);
+                                       this.send(message);
                                    });
                                    });
                                }
                                }
                            }catch(Exception e){
                            }catch(Exception e){
@@ -236,32 +250,53 @@ public class ReceiveData {
                        }
                        }
                    }
                    }
                 }
                 }
-               //处理完成后,剩下的标记为历史数据
-               for(AlarmDetailsDto alarmDetailsDto:alarmDetailsDtoMap.values()){
-                   alarmDetailsDto.setState(0);
-                   alarmDetailsDto.setAlarmEndTime(receiveDateTime);
-                   alarmDetailsDto.setDateUpdate(new Date());
-                   alarmDetailMapper.update(alarmDetailsDto);
-               }
+
                //批量插入新增报警
                //批量插入新增报警
                if(insert.size()>0){
                if(insert.size()>0){
                 alarmDetailMapper.batchInsert(insert);
                 alarmDetailMapper.batchInsert(insert);
                }
                }
 
 
+                if(alarmDetailsDtoMap.values().size() > 0){
+                   //处理完成后,剩下的标记为历史数据
+                   List<Long> deviceIds = new ArrayList<>();
+                   deviceIds.add(monitorDataEntity.getDeviceId().longValue());
+                   List<WorkOrderManageByAlarmDto> workOrders = operationManagerClient.findWorkOrderByDeviceIds(deviceIds);
+                   if(workOrders.size()>0){
+                       WorkOrderManageByAlarmDto orderManageByAlarmDto = workOrders.get(0);
+                       String taskDesc = orderManageByAlarmDto.getTaskDesc();
+                       //标记为历史数据 并 修改工单描述
+                       for(AlarmDetailsDto alarmDetailsDto : alarmDetailsDtoMap.values()){
+                           alarmDetailsDto.setState(0);
+                           alarmDetailsDto.setAlarmEndTime(receiveDateTime);
+                           alarmDetailsDto.setDateUpdate(new Date());
+                           alarmDetailMapper.update(alarmDetailsDto);
+
+                           taskDesc = taskDesc.replace(";"+alarmDetailsDto.getAlarmContent(),"")
+                                   .replace(alarmDetailsDto.getAlarmContent(),"");
+                       }
+                       orderManageByAlarmDto.setTaskDesc(taskDesc);
+                       if(orderManageByAlarmDto != null
+                               && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
+                               && StringUtils.isBlank(taskDesc)){
+                           //工单未派单且无报警信息,删除工单
+                           operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
+                       }else{
+                           //其他情况修改描述
+                           operationManagerClient.updateByAlarms(workOrders);
+                       }
+                   }
+                }
+
                //报警恢复的删除工单
                //报警恢复的删除工单
-               Map<Integer,AlarmDetailsEntity> AlarmDtoNewsMap =  insert.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
-               Map<Integer,AlarmDetailsEntity> AlarmDtoOldsMap =  update.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
-               Set<Long> deviceIds = alarmDetailsDtoMap.values().stream()
-                       .filter(a -> !(AlarmDtoNewsMap.containsKey(a.getDeviceId())||AlarmDtoOldsMap.containsKey(a.getDeviceId())))
-                       .map(a -> a.getDeviceId().longValue())
-                       .collect(Collectors.toSet());
-               if(deviceIds.size()>0){
-                operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
-               }
+//               Map<Integer,AlarmDetailsEntity> AlarmDtoOldsMap =  update.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
+//               Set<Long> deviceIds = alarmDetailsDtoMap.values().stream()
+//                       .filter(a -> !AlarmDtoOldsMap.containsKey(a.getDeviceId()))
+//                       .map(a -> a.getDeviceId().longValue())
+//                       .collect(Collectors.toSet());
+//               if(deviceIds.size()>0){
+//                operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
+//               }
            }
            }
-
         }
         }
-
     }
     }
-
 }
 }

+ 49 - 3
sms_water/src/main/java/com/huaxu/service/AlarmSettingService.java

@@ -4,15 +4,22 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huaxu.client.OperationManagerClient;
+import com.huaxu.common.StringUtils;
+import com.huaxu.dao.AlarmDetailMapper;
 import com.huaxu.dao.AlarmSettingMapper;
 import com.huaxu.dao.AlarmSettingMapper;
+import com.huaxu.dto.AlarmDetailsDto;
 import com.huaxu.dto.AlarmSettingDto;
 import com.huaxu.dto.AlarmSettingDto;
+import com.huaxu.dto.WorkOrderManageByAlarmDto;
 import com.huaxu.entity.AlarmSetting;
 import com.huaxu.entity.AlarmSetting;
-import org.apache.commons.lang3.StringUtils;
+import com.huaxu.model.LoginUser;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -25,6 +32,11 @@ import java.util.List;
 public class AlarmSettingService extends ServiceImpl<AlarmSettingMapper, AlarmSetting> {
 public class AlarmSettingService extends ServiceImpl<AlarmSettingMapper, AlarmSetting> {
     @Resource
     @Resource
     private AlarmSettingMapper alarmSettingMapper;
     private AlarmSettingMapper alarmSettingMapper;
+
+    @Resource
+    private AlarmDetailMapper alarmDetailMapper;
+    @Autowired
+    private OperationManagerClient operationManagerClient;
     /**
     /**
      * 删除数据
      * 删除数据
      *
      *
@@ -83,7 +95,41 @@ public class AlarmSettingService extends ServiceImpl<AlarmSettingMapper, AlarmSe
      * @param
      * @param
      * @return
      * @return
      */
      */
-    public Integer updateRealtimeAlarm(Long[] ids,String updateBy) {
-        return alarmSettingMapper.updateRealtimeAlarm(Arrays.asList(ids),updateBy);
+    public void updateRealtimeAlarm(Long[] ids,String updateBy) {
+        //系统中已存在的离线报警
+        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,null,Arrays.asList(ids));
+
+        if(alarmDetailsDtos.size() > 0){
+            //处理完成后,剩下的标记为历史数据
+            List<Long> deviceIds = new ArrayList<>();
+            deviceIds.add(alarmDetailsDtos.get(0).getDeviceId().longValue());
+            List<WorkOrderManageByAlarmDto> workOrders = operationManagerClient.findWorkOrderByDeviceIds(deviceIds);
+            if(workOrders.size()>0){
+                WorkOrderManageByAlarmDto orderManageByAlarmDto = workOrders.get(0);
+                String taskDesc = orderManageByAlarmDto.getTaskDesc();
+                //标记为历史数据 并 修改工单描述
+                for(AlarmDetailsDto alarmDetailsDto : alarmDetailsDtos){
+                    alarmDetailsDto.setState(0);
+                    alarmDetailsDto.setAlarmEndTime(new Date());
+                    alarmDetailsDto.setDateUpdate(new Date());
+                    alarmDetailsDto.setUpdateBy(updateBy);
+                    alarmDetailMapper.update(alarmDetailsDto);
+
+                    taskDesc = taskDesc.replace(";"+alarmDetailsDto.getAlarmContent(),"")
+                            .replace(alarmDetailsDto.getAlarmContent(),"");
+                }
+                orderManageByAlarmDto.setTaskDesc(taskDesc);
+                if(orderManageByAlarmDto != null
+                        && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
+                        && StringUtils.isBlank(taskDesc)){
+                    //工单未派单且无报警信息,删除工单
+                    operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
+                }else{
+                    //其他情况修改描述
+                    operationManagerClient.updateByAlarms(workOrders);
+                }
+            }
+        }
+//        return alarmSettingMapper.updateRealtimeAlarm(Arrays.asList(ids),updateBy);
     }
     }
 }
 }

+ 76 - 28
sms_water/src/main/java/com/huaxu/service/impl/AlarmDetailsServiceImpl.java

@@ -15,7 +15,9 @@ import com.huaxu.util.MessageSendUtil;
 import com.huaxu.util.UserUtil;
 import com.huaxu.util.UserUtil;
 import lombok.extern.log4j.Log4j2;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.amqp.core.AmqpTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -38,8 +40,20 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
     private OperationManagerClient operationManagerClient;
     private OperationManagerClient operationManagerClient;
     @Autowired
     @Autowired
     private UserCenterClient userCenterClient;
     private UserCenterClient userCenterClient;
-    @Autowired
-    private MessageSendUtil messageSendUtil;
+
+    @Resource(name = "messageRabbitTemplate")
+    private AmqpTemplate messageRabbitTemplate;
+
+    @Value("${receive.exchange.name}")
+    private  String receiveExchangeName;
+    @Value("${dispath.routing.key}")
+    private  String dispathRoutingKey;
+
+
+    private void send(Message message){
+        log.debug("消息发送 exchange={}  routingkey={} 用户id={}",receiveExchangeName,dispathRoutingKey,message.getUserId());
+        messageRabbitTemplate.convertAndSend(receiveExchangeName,dispathRoutingKey, JSONObject.toJSONString(message));
+    }
 
 
     @Override
     @Override
     public AlarmDetailsDto selectById(Integer id) {
     public AlarmDetailsDto selectById(Integer id) {
@@ -164,14 +178,15 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
         //根据设置筛选出离线设备
         //根据设置筛选出离线设备
         List<DeviceCheckAlarmDto>  alarmlist = deviceCheckAlarmDtos.stream().filter(deviceCheckAlarmDto -> deviceCheckAlarmDto.checkdeviceOffLine()).collect(Collectors.toList());
         List<DeviceCheckAlarmDto>  alarmlist = deviceCheckAlarmDtos.stream().filter(deviceCheckAlarmDto -> deviceCheckAlarmDto.checkdeviceOffLine()).collect(Collectors.toList());
         //系统中已存在的离线报警
         //系统中已存在的离线报警
-        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,"状态报警");
+        List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailMapper.selectStateAlarm(null,"状态报警",null);
         //已存在的报警信息转为map方便匹配
         //已存在的报警信息转为map方便匹配
         Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
         Map<Integer,AlarmDetailsDto> alarmDetailsDtoMap = alarmDetailsDtos.stream().collect(Collectors.toMap(AlarmDetailsDto::getAlarmSettingId, a -> a,(k1, k2)->k1));
         //需要新增的
         //需要新增的
         List<AlarmDetailsEntity>  deviceStateAlarmDtoNews =alarmlist.stream()
         List<AlarmDetailsEntity>  deviceStateAlarmDtoNews =alarmlist.stream()
                 .filter(deviceCheckAlarmDto -> !alarmDetailsDtoMap.containsKey(deviceCheckAlarmDto.getAlarmSettingId()))
                 .filter(deviceCheckAlarmDto -> !alarmDetailsDtoMap.containsKey(deviceCheckAlarmDto.getAlarmSettingId()))
                 .map(d ->{
                 .map(d ->{
-                    AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsEntity();
+
+                     AlarmDetailsEntity alarmDetailsEntity = new AlarmDetailsEntity();
                     alarmDetailsEntity.setDateUpdate(new Date());
                     alarmDetailsEntity.setDateUpdate(new Date());
                     alarmDetailsEntity.setDateCreate(new Date());
                     alarmDetailsEntity.setDateCreate(new Date());
                     alarmDetailsEntity.setStatus(1);
                     alarmDetailsEntity.setStatus(1);
@@ -214,12 +229,12 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                         if(taskUsers!=null){
                         if(taskUsers!=null){
                             taskUsers.forEach(id->{
                             taskUsers.forEach(id->{
                                 message.setUserId(id);
                                 message.setUserId(id);
-                                messageSendUtil.send(message);
+                                this.send(message);
                             });
                             });
                         }
                         }
                     }catch(Exception e){
                     }catch(Exception e){
                         e.printStackTrace();
                         e.printStackTrace();
-                        log.info("推送报警消息失败:{}"+e.getMessage());
+                        log.info("推送报警消息失败:{}",e.getMessage());
                     }
                     }
                     return alarmDetailsEntity;
                     return alarmDetailsEntity;
                 })
                 })
@@ -241,28 +256,61 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                     return alarmDetailsDto;
                     return alarmDetailsDto;
                 })
                 })
                 .collect(Collectors.toList());
                 .collect(Collectors.toList());
-        //集合中剩下未处理的需要修改状态
-        Long currentTime =System.currentTimeMillis();
-        for(AlarmDetailsDto alarmDetailsDto:alarmDetailsDtoMap.values()){
-            alarmDetailsDto.setDateUpdate(new Date());
-            //从对象中拿到时间
-            Long startTime = alarmDetailsDto.getAlarmStartTime().getTime();
-            Long diff=(currentTime-startTime)/1000/60;
-            alarmDetailsDto.setAlarmValue(diff.doubleValue());
-            alarmDetailsDto.setAlarmEndTime(new Date());
-            alarmDetailsDto.setState(0);
-            alarmDetailMapper.update(alarmDetailsDto);//直接更新
-        }
 
 
-        //报警恢复的删除工单
-        Map<Integer,AlarmDetailsEntity> AlarmDtoNewsMap =  deviceStateAlarmDtoNews.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
-        Map<Integer,AlarmDetailsEntity> AlarmDtoOldsMap =  deviceStateAlarmDtoOlds.stream().collect(Collectors.toMap(AlarmDetailsEntity::getDeviceId, a -> a,(k1, k2)->k1));
-        Set<Long> deviceIds = alarmDetailsDtoMap.values().stream()
-                .filter(a -> !(AlarmDtoNewsMap.containsKey(a.getDeviceId())||AlarmDtoOldsMap.containsKey(a.getDeviceId())))
-                .map(a -> a.getDeviceId().longValue())
-                .collect(Collectors.toSet());
-        if(deviceIds.size()>0){
-            operationManagerClient.batchDeleteByAlarms(new ArrayList<>(deviceIds));
+
+        //处理完成后,剩下的标记为历史数据
+        if(alarmDetailsDtoMap.values().size() > 0) {
+            //恢复正常的设备id
+            Set<Long> deviceIds = alarmDetailsDtoMap.values().stream()
+                    .map(a -> a.getDeviceId().longValue())
+                    .collect(Collectors.toSet());
+            //获取恢复正常的设备工单
+            List<WorkOrderManageByAlarmDto> workOrders = operationManagerClient.findWorkOrderByDeviceIds(new ArrayList<>(deviceIds));
+            //对报警信息分组
+            Map<Integer,List<AlarmDetailsDto>> deviceIdAlarmDetailsMap = alarmDetailsDtoMap.values().stream().collect(Collectors.groupingBy(AlarmDetailsDto::getDeviceId));
+            if (workOrders.size() > 0) {
+                //系统时间
+                Long currentTime =System.currentTimeMillis();
+                List<WorkOrderManageByAlarmDto> orderUpdate = new ArrayList<>();
+                List<Long> orderDelete = new ArrayList<>();
+
+                //处理工单
+                for(WorkOrderManageByAlarmDto orderManageByAlarmDto :workOrders){
+                    String taskDesc = orderManageByAlarmDto.getTaskDesc();
+                    List<AlarmDetailsDto> alarmDetailsDtoList = deviceIdAlarmDetailsMap.get(orderManageByAlarmDto.getDeviceId().intValue());
+                    //标记为历史数据 并 修改工单描述
+                    for (AlarmDetailsDto alarmDetailsDto : alarmDetailsDtoList) {
+                        alarmDetailsDto.setDateUpdate(new Date());
+                        //从对象中拿到时间
+                        Long startTime = alarmDetailsDto.getAlarmStartTime().getTime();
+                        Long diff=(currentTime-startTime)/1000/60;
+                        alarmDetailsDto.setAlarmValue(diff.doubleValue());
+                        alarmDetailsDto.setAlarmEndTime(new Date());
+                        alarmDetailsDto.setState(0);
+                        alarmDetailMapper.update(alarmDetailsDto);//直接更新
+                        taskDesc = taskDesc.replace(";" + alarmDetailsDto.getAlarmContent(), "")
+                                .replace(alarmDetailsDto.getAlarmContent(), "");
+                    }
+                    if (orderManageByAlarmDto != null
+                            && (orderManageByAlarmDto.getOrderStatus() == null || orderManageByAlarmDto.getOrderStatus() == 0)
+                            && StringUtils.isBlank(taskDesc)) {
+                        //工单未派单且无报警信息,删除工单
+                        orderDelete.add(orderManageByAlarmDto.getDeviceId());
+                    } else {
+                        //其他情况修改描述
+                        orderManageByAlarmDto.setTaskDesc(taskDesc);
+                        orderUpdate.add(orderManageByAlarmDto);
+                    }
+                }
+                //批量处理工单
+                if(orderDelete.size()>0){
+                    operationManagerClient.batchDeleteByAlarms(orderDelete);
+                }
+                if(orderUpdate.size()>0){
+                    operationManagerClient.updateByAlarms(orderUpdate);
+                }
+
+            }
         }
         }
     }
     }
 
 
@@ -326,7 +374,7 @@ public class AlarmDetailsServiceImpl implements AlarmDetailsService {
                    if(taskUsers!=null){
                    if(taskUsers!=null){
                        taskUsers.forEach(id->{
                        taskUsers.forEach(id->{
                            message.setUserId(id);
                            message.setUserId(id);
-                           messageSendUtil.send(message);
+                           this.send(message);
                        });
                        });
                    }
                    }
                    workOrderManageByAlarms.add(workOrderManageByAlarm);
                    workOrderManageByAlarms.add(workOrderManageByAlarm);

+ 6 - 2
sms_water/src/main/java/com/huaxu/service/impl/MonitorDataReportServiceImpl.java

@@ -775,9 +775,12 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
                         if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
                         if (monitorDataEntity != null && monitorDataEntity.getDataValues() != null && monitorDataEntity.getDataValues().size() > 0) {
                             monitorDataEntity.getDataValues().stream()
                             monitorDataEntity.getDataValues().stream()
                                     .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
                                     .filter(monitorDataValueEntity -> monitorDataValueEntity.getAttributeId().equals(deviceWaterDetail.getAttributeId()))
-                                    .forEach(monitorDataValueEntity ->
+                                    .forEach(monitorDataValueEntity -> {
                                             //累计当前压力
                                             //累计当前压力
-                                            sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(new BigDecimal(monitorDataValueEntity.getDataValue())))
+                                            if (monitorDataValueEntity.getDataValue() != null) {
+                                                sceneWaterAmount.setWaterAmount(sceneWaterAmount.getWaterAmount().add(new BigDecimal(monitorDataValueEntity.getDataValue())));
+                                            }
+                                        }
                                     );
                                     );
                         }
                         }
                     });
                     });
@@ -947,6 +950,7 @@ public class MonitorDataReportServiceImpl implements MonitorDataReportService {
 
 
         //查询设备编码
         //查询设备编码
         List<String> deviceCodes = monitorDataReportMapper.selectDeviceCode(loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
         List<String> deviceCodes = monitorDataReportMapper.selectDeviceCode(loginUser.getTenantId(),loginUser.getType(),loginUser.getPermissonType(),loginUser.getProgramItemList());
+        deviceCodes.add("300220070692");
         //根据编码获取redis中的实时数据
         //根据编码获取redis中的实时数据
         List<MonitorDataEntity> monitorDataEntities = new ArrayList<>();
         List<MonitorDataEntity> monitorDataEntities = new ArrayList<>();
         for (String deviceCode : deviceCodes) {
         for (String deviceCode : deviceCodes) {

+ 44 - 28
sms_water/src/main/resources/application-dev.properties

@@ -73,29 +73,7 @@ spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
 SMS.sys_config_path=/UMIS_SMS_IMAGES/
 SMS.sys_config_path=/UMIS_SMS_IMAGES/
 SMS.sys_excel_path=/UMIS_SMS_EXCEL/
 SMS.sys_excel_path=/UMIS_SMS_EXCEL/
 
 
-#请求处理的超时时间
-ribbon.ReadTimeout: 30000
-#请求连接的超时时间
-ribbon.ConnectTimeout: 30000
 
 
-##rabbitmq
-spring.rabbitmq.host=114.135.61.188
-spring.rabbitmq.port=55672
-#spring.rabbitmq.host=47.112.217.10
-#spring.rabbitmq.port=5672
-spring.rabbitmq.username=huaxu
-spring.rabbitmq.password=huaxu123
-spring.rabbitmq.virtual-host=/
-spring.rabbitmq.listener.queue=new_hx_queue
-spring.rabbitmq.listener.simple.acknowledge-mode = NONE
-
-#spring.rabbitmq.host=127.0.0.1
-#spring.rabbitmq.port=5672
-#spring.rabbitmq.username=guest
-#spring.rabbitmq.password=guest
-#spring.rabbitmq.virtual-host=/
-#spring.rabbitmq.listener.queue=new_test_queues
-#spring.rabbitmq.listener.simple.acknowledge-mode = NONE
 
 
 
 
 #http
 #http
@@ -128,13 +106,51 @@ spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThre
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
+
+
+
+
+
+# 设置 feign 客户端超时时间(OpenFeign 默认支持 ribbon)
+# 值的是建立连接所用的时间,使用与网络状态正常的情况,两端连接所用的时间
+ribbon.ReadTimeout=5000
+# 指的是建立连接后从服务器读取到可用资源所用的时间
+ribbon.ConnectionTimeout=5000
+
+##rabbitmq
+message.spring.rabbitmq.host=127.0.0.1
+message.spring.rabbitmq.port=5672
+message.spring.rabbitmq.username=guest
+message.spring.rabbitmq.password=guest
+message.spring.rabbitmq.virtual-host= /
+message.spring.rabbitmq.requested-heartbeat = 10
+message.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+message.spring.rabbitmq.listener.simple.prefetch = 20
+message.spring.rabbitmq.connection-timeout=15000
+message.spring.rabbitmq.publisher-confirm-type=correlated
+message.spring.rabbitmq.publisher-confirms=true
+message.spring.rabbitmq.publisher-returns=true
+
+dispath.queue=dispath
 receive.exchange.name=messageExchange
 receive.exchange.name=messageExchange
 dispath.routing.key=dipathKey
 dispath.routing.key=dipathKey
 
 
-#rabbit
 
 
-spring.rabbitmq.connection-timeout=15000
-spring.rabbitmq.publisher-confirm-type=correlated
-spring.rabbitmq.publisher-returns=true
-spring.rabbitmq.template.mandatory=true
-dispath.queue=dispath
+
+
+receiveData.spring.rabbitmq.host=127.0.0.1
+receiveData.spring.rabbitmq.port=5672
+receiveData.spring.rabbitmq.username=guest
+receiveData.spring.rabbitmq.password=guest
+receiveData.spring.rabbitmq.virtual-host=/
+receiveData.spring.rabbitmq.listener.queue=new_test_queues
+receiveData.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+receiveData.spring.rabbitmq.listener.simple.prefetch = 20
+
+receiveData.spring.rabbitmq.requested-heartbeat = 10
+receiveData.spring.rabbitmq.connection-timeout=15000
+receiveData.spring.rabbitmq.publisher-confirm-type=correlated
+receiveData.spring.rabbitmq.publisher-confirms=true
+receiveData.spring.rabbitmq.publisher-returns=true
+
+

+ 44 - 11
sms_water/src/main/resources/application-prd.properties

@@ -74,16 +74,7 @@ spring.cloud.nacos.discovery.server-addr=10.0.0.136:8848
 SMS.sys_config_path=/UMIS_SMS_IMAGES/
 SMS.sys_config_path=/UMIS_SMS_IMAGES/
 SMS.sys_excel_path=/UMIS_SMS_EXCEL/
 SMS.sys_excel_path=/UMIS_SMS_EXCEL/
 
 
-##rabbitmq
-#spring.rabbitmq.host=114.135.61.188
-#spring.rabbitmq.port=55672
-spring.rabbitmq.host=47.112.217.10
-spring.rabbitmq.port=5672
-spring.rabbitmq.username=huaxu
-spring.rabbitmq.password=huaxu123
-spring.rabbitmq.virtual-host=/
-spring.rabbitmq.listener.queue=new_hx_queue
-spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+
 #http
 #http
 http_pool.max_total=200
 http_pool.max_total=200
 http_pool.default_max_per_route=100
 http_pool.default_max_per_route=100
@@ -115,5 +106,47 @@ spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThre
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
+
+
+##rabbitmq
+#message.spring.rabbitmq.host=114.135.61.188
+#message.spring.rabbitmq.port=55672
+#message.spring.rabbitmq.username=zoniot
+#message.spring.rabbitmq.password=zcxk100
+message.spring.rabbitmq.host=47.112.217.10
+message.spring.rabbitmq.port=5672
+message.spring.rabbitmq.username=huaxu
+message.spring.rabbitmq.password=huaxu123
+message.spring.rabbitmq.virtual-host= /
+message.spring.rabbitmq.requested-heartbeat = 10
+message.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+message.spring.rabbitmq.listener.simple.prefetch = 20
+message.spring.rabbitmq.connection-timeout=15000
+message.spring.rabbitmq.publisher-confirm-type=correlated
+message.spring.rabbitmq.publisher-confirms=true
+message.spring.rabbitmq.publisher-returns=true
+
 receive.exchange.name=messageExchangeTest
 receive.exchange.name=messageExchangeTest
-dispath.routing.key=dipathKeyTest
+dispath.routing.key=dipathKeyTest
+dispath.queue=dispathTest
+
+
+
+
+receiveData.spring.rabbitmq.host=47.112.217.10
+receiveData.spring.rabbitmq.port=5672
+receiveData.spring.rabbitmq.username=huaxu
+receiveData.spring.rabbitmq.password=huaxu123
+receiveData.spring.rabbitmq.virtual-host=/
+receiveData.spring.rabbitmq.listener.queue=new_hx_queue
+receiveData.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+receiveData.spring.rabbitmq.listener.simple.prefetch = 20
+
+receiveData.spring.rabbitmq.requested-heartbeat = 10
+receiveData.spring.rabbitmq.connection-timeout=15000
+receiveData.spring.rabbitmq.publisher-confirm-type=correlated
+receiveData.spring.rabbitmq.publisher-confirms=true
+receiveData.spring.rabbitmq.publisher-returns=true
+
+
+

+ 40 - 7
sms_water/src/main/resources/application-sit.properties

@@ -77,13 +77,13 @@ SMS.sys_excel_path=/UMIS_SMS_EXCEL/
 ##rabbitmq
 ##rabbitmq
 #spring.rabbitmq.host=114.135.61.188
 #spring.rabbitmq.host=114.135.61.188
 #spring.rabbitmq.port=55672
 #spring.rabbitmq.port=55672
-spring.rabbitmq.host=47.112.217.10
-spring.rabbitmq.port=5672
-spring.rabbitmq.username=huaxu
-spring.rabbitmq.password=huaxu123
-spring.rabbitmq.virtual-host=/
-spring.rabbitmq.listener.queue=new_hx_queue
-spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+#spring.rabbitmq.host=47.112.217.10
+#spring.rabbitmq.port=5672
+#spring.rabbitmq.username=huaxu
+#spring.rabbitmq.password=huaxu123
+#spring.rabbitmq.virtual-host=/
+#spring.rabbitmq.listener.queue=new_hx_queue
+#spring.rabbitmq.listener.simple.acknowledge-mode = NONE
 #http
 #http
 http_pool.max_total=200
 http_pool.max_total=200
 http_pool.default_max_per_route=100
 http_pool.default_max_per_route=100
@@ -115,6 +115,39 @@ spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThre
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadCount=10
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadPriority=5
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
 spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
+
+
+##rabbitmq 报警消息和工单消息数据
+message.spring.rabbitmq.host=114.135.61.188
+message.spring.rabbitmq.port=55672
+message.spring.rabbitmq.username=zoniot
+message.spring.rabbitmq.password=zcxk100
+message.spring.rabbitmq.virtual-host= /
+message.spring.rabbitmq.requested-heartbeat = 10
+message.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+message.spring.rabbitmq.listener.simple.prefetch = 20
+message.spring.rabbitmq.connection-timeout=15000
+message.spring.rabbitmq.publisher-confirm-type=correlated
+message.spring.rabbitmq.publisher-confirms=true
+message.spring.rabbitmq.publisher-returns=true
 receive.exchange.name=messageExchangeTest
 receive.exchange.name=messageExchangeTest
 dispath.routing.key=dipathKeyTest1
 dispath.routing.key=dipathKeyTest1
+dispath.queue=dispathTest1
+
+#设备数据采集
+receiveData.spring.rabbitmq.host=47.112.217.10
+receiveData.spring.rabbitmq.port=5672
+receiveData.spring.rabbitmq.username=huaxu
+receiveData.spring.rabbitmq.password=huaxu123
+receiveData.spring.rabbitmq.virtual-host=/
+receiveData.spring.rabbitmq.listener.queue=new_hx_queue
+receiveData.spring.rabbitmq.listener.simple.acknowledge-mode = NONE
+receiveData.spring.rabbitmq.listener.simple.prefetch = 20
+
+receiveData.spring.rabbitmq.requested-heartbeat = 10
+receiveData.spring.rabbitmq.connection-timeout=15000
+receiveData.spring.rabbitmq.publisher-confirm-type=correlated
+receiveData.spring.rabbitmq.publisher-confirms=true
+receiveData.spring.rabbitmq.publisher-returns=true
+
 
 

+ 8 - 0
sms_water/src/main/resources/mapper/AlarmDetailMapper.xml

@@ -629,6 +629,7 @@
             left join sms_device_attribute da on da.id=a.ATTRIBUTE_ID
             left join sms_device_attribute da on da.id=a.ATTRIBUTE_ID
         </if>
         </if>
         where  a.ALARM_VALUE is not null and a.ALARM_CONDITION is not null and d.status = 1 and a.status = 1
         where  a.ALARM_VALUE is not null and a.ALARM_CONDITION is not null and d.status = 1 and a.status = 1
+        and a.status = 1
         <if test="deviceId != null">
         <if test="deviceId != null">
             and d.id=#{deviceId}
             and d.id=#{deviceId}
         </if>
         </if>
@@ -657,6 +658,13 @@
         <if test="deviceId != null">
         <if test="deviceId != null">
             and DEVICE_ID=#{deviceId}
             and DEVICE_ID=#{deviceId}
         </if>
         </if>
+        <if test="alarmSettingIds != null and alarmSettingIds.size() > 0">
+            and alarm_setting_id IN
+            <foreach collection="alarmSettingIds" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+
 
 
 
 
     </select>
     </select>

+ 9 - 1
user_auth/src/main/resources/application-prd.properties

@@ -7,7 +7,6 @@ spring.datasource.url=jdbc:mysql://10.0.0.137:3306/uims?characterEncoding=utf8&u
 spring.datasource.username=root
 spring.datasource.username=root
 spring.datasource.password=100Zone@123
 spring.datasource.password=100Zone@123
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
-
 mybatis-plus.mapper-locations=classpath:mapper/*.xml
 mybatis-plus.mapper-locations=classpath:mapper/*.xml
 mybatis-plus.type-aliases-package=com.huaxu.entity
 mybatis-plus.type-aliases-package=com.huaxu.entity
 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
 mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
@@ -66,6 +65,15 @@ getSendCodeMax=2
 receive.exchange.name=messageExchangeTest
 receive.exchange.name=messageExchangeTest
 dispath.routing.key=dipathKeyTest
 dispath.routing.key=dipathKeyTest
 dispath.queue=dispathTest
 dispath.queue=dispathTest
+spring.rabbitmq.host=47.112.217.10
+spring.rabbitmq.port=5672
+spring.rabbitmq.username=huaxu
+spring.rabbitmq.password=huaxu123
+spring.rabbitmq.virtual-host=/
+spring.rabbitmq.connection-timeout=15000
+spring.rabbitmq.publisher-confirm-type=correlated
+spring.rabbitmq.publisher-returns=true
+spring.rabbitmq.template.mandatory=true
 iot.url=http://114.135.61.188:58080
 iot.url=http://114.135.61.188:58080
 
 
 
 

+ 1 - 1
user_auth/src/main/resources/application.properties

@@ -1,2 +1,2 @@
 #开发环境:dev  测试环境:sit  线上环境:prd
 #开发环境:dev  测试环境:sit  线上环境:prd
-spring.profiles.active=sit
+spring.profiles.active=dev

+ 3 - 3
user_center/src/main/resources/application-prd.properties

@@ -77,6 +77,6 @@ spring.rabbitmq.connection-timeout=15000
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.template.mandatory=true
 spring.rabbitmq.template.mandatory=true
-dispath.queue=dispath
-receive.exchange.name=messageExchange
-dispath.routing.key=dipathKey
+receive.exchange.name=messageExchangeTest
+dispath.routing.key=dipathKeyTest
+dispath.queue=dispathTest

+ 3 - 3
user_center/src/main/resources/application-sit.properties

@@ -76,9 +76,9 @@ spring.rabbitmq.connection-timeout=15000
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-confirm-type=correlated
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.publisher-returns=true
 spring.rabbitmq.template.mandatory=true
 spring.rabbitmq.template.mandatory=true
-dispath.queue=dispath
-receive.exchange.name=messageExchange
-dispath.routing.key=dipathKey
+receive.exchange.name=messageExchangeTest
+dispath.routing.key=dipathKeyTest1
+dispath.queue=dispathTest1