Commit 8cbed39d by 李小惠

添加设备监控消息队列

parent 68c1dacb
......@@ -237,3 +237,4 @@ Thumbs.db
/app-log/log_error.log.orig
/app-log/log_total.log.orig
/app-log/total/log-total-2024-01-31.0.log.orig
/lxh/
<<<<<<< HEAD
/jyzb-process/target
/jyzb-api/target/
/jyzb-biz/target/
##ignore this file##
/target/
.classpath
.project
/.settings/
##filter databfile、sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class
*.dll
*.exe
*.o
*.so
# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.via
*.tmp
*.err
# OS generated files #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
/*/target/*
=======
/jyzb-boot/target
>>>>>>> develop
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.junmp.jyzb.config.rabbitMQ;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.context.annotation.Bean;
......@@ -12,11 +13,14 @@ public class largeSrceenRabbitConfig {
private static final String EXCHANGE_NAME = "largeScreen_exchange";
@Bean
public FanoutExchange fanoutExchange() {
return new FanoutExchange(EXCHANGE_NAME);
}
@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
......@@ -24,4 +28,5 @@ public class largeSrceenRabbitConfig {
return rabbitAdmin;
}
}
......@@ -303,7 +303,9 @@ public class InventoryController {
@PostMapping(path = "/EqsByState",name = "查询状态满足的装备#enable")
@ApiOperation("查询状态满足的装备")
public ApiRes<PageResult<InventoryDto>> EqsByState(@RequestBody InventoryReq req){
return ApiRes.success(inventoryService.EqsByState(req));
}
//将装备根据质保期,维保期上产日期进行分类汇总并且返回
......
......@@ -46,6 +46,9 @@ import com.junmp.v2.message.api.bean.req.MessageSendReq;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -90,6 +93,12 @@ public class PublicController {
private MsgRedisCache redisCache;
@Resource
private RabbitTemplate rabbitTemplate;
@Resource
private RabbitAdmin rabbitAdmin;
@Resource
private OutInRecordRedisCache outInRecordRedisCache;
private final static String DB_URL_TEMPLATE = "jdbc:mysql://{}:{}/{}?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT&nullCatalogMeansCurrent=true";
......@@ -155,8 +164,13 @@ public class PublicController {
}
@PostMapping("/bbb")
public ApiRes<Date> bbb(){
return ApiRes.success(DateTimeUtil.DateByDays());
public ApiRes<Boolean> bbb(){
// TopicExchange exchange = new TopicExchange("DevMonitorMsg");
// String exchangeName="DevMonitorMsg";
// rabbitAdmin.declareExchange(exchange);
// rabbitTemplate.convertAndSend(exchangeName, "1369509498032811869", "设备下线");
return ApiRes.success(true);
}
......
......@@ -195,7 +195,7 @@ public class StocktakeServiceImpl extends ServiceImpl<StocktakeMapper, Stocktake
one=list.get(0);
}
//设置num的数量
if (ObjectUtil.isNull(one)){
if (one != null){
orderNum.setNum(1);
orderNumService.save(orderNum);
return orderNum;
......
......@@ -34,6 +34,9 @@ import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
......@@ -59,6 +62,12 @@ public class WarehouseWebSocketServer implements WebSocketServerListener {
@Resource
private DeviceRedisCache redisCache;
@Resource
private RabbitTemplate rabbitTemplate;
@Resource
private RabbitAdmin rabbitAdmin;
@Override
public String uri() {
return "/device/ws";
......@@ -89,7 +98,11 @@ public class WarehouseWebSocketServer implements WebSocketServerListener {
redisCache.put(orgId, jsonData);
redisCache.put(channel, orgId);
}
//推送消息到对应组织机构
TopicExchange exchange = new TopicExchange("DevMonitorMsg");
rabbitAdmin.declareExchange(exchange);
String exchangeName="DevMonitorMsg";
rabbitTemplate.convertAndSend(exchangeName, orgId, "设备上线");
protocol.response("true");
}
catch (Exception e)
......@@ -104,7 +117,11 @@ public class WarehouseWebSocketServer implements WebSocketServerListener {
String orgId= redisCache.get(channel);
redisCache.remove(channel);
redisCache.remove(orgId);
//将消息推到对应组织机构
TopicExchange exchange = new TopicExchange("DevMonitorMsg");
String exchangeName="DevMonitorMsg";
rabbitAdmin.declareExchange(exchange);
rabbitTemplate.convertAndSend(exchangeName, orgId, "设备下线");
WebSocketServerListener.super.onClose(protocol);
}
......
package com.junmp.jyzb.websocket;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.junmp.iot.server.ws.WebSocketServerListener;
import com.junmp.iot.server.ws.impl.DefaultWebSocketServerProtocol;
import com.junmp.junmpProcess.redis.FlowRedisCache;
import com.junmp.jyzb.api.util.WsCabinetReq;
import com.junmp.jyzb.api.util.WsWarehouseReq;
import com.junmp.jyzb.cache.DeviceRedisCache;
import com.junmp.jyzb.cache.OnlineRedisCache;
import com.junmp.jyzb.entity.Cabinet;
import com.junmp.jyzb.entity.CabinetBox;
import com.junmp.jyzb.entity.Temp.OnlineState;
import com.junmp.jyzb.service.CabinetService;
import com.junmp.jyzb.utils.DateTimeUtil;
import com.junmp.v2.ws.api.enums.ClientMsgType;
import com.junmp.v2.ws.api.enums.ServerMsgType;
import com.junmp.v2.ws.api.enums.SysMsgTypeEnum;
import com.junmp.v2.ws.api.message.WsCallbackApi;
import com.junmp.v2.ws.api.session.bean.WsSession;
import com.junmp.v2.ws.bean.WsMsgDto;
import com.junmp.v2.ws.channel.WsSessionContainer;
import com.junmp.v2.ws.message.WsMessageHandle;
import com.junmp.v2.ws.session.WsSessionHandle;
import io.jsonwebtoken.JwtException;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
@Component
@Slf4j
public class WarehouseWebSocketServer implements WebSocketServerListener {
// private static final Logger log = LoggerFactory.getLogger(com.junmp.v2.ws.server.ScreenWebSocketServer.class);
@Resource
public CabinetService cabinetService;
@Resource
private DeviceRedisCache redisCache;
@Override
public String uri() {
return "/device/ws";
}
@SneakyThrows
@Override
public void onText(DefaultWebSocketServerProtocol protocol) {
try {
String text = protocol.readText();
ObjectMapper objectMapper = new ObjectMapper();
WsWarehouseReq deviceData = objectMapper.readValue(text, WsWarehouseReq.class);
String orgId = deviceData.getOrgId();
deviceData.getOrgId();
if(redisExist!=null)//已有存在数据
{
String jsonData = objectMapper.writeValueAsString(deviceData);
if(redisExist!=null)//已有存在数据
{
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(orgId, jsonData);
}
else
{
String channel = protocol.requestMessage().getChannelId();
String jsonData = objectMapper.writeValueAsString(deviceData);
redisCache.put(orgId, jsonData);
redisCache.put(channel, orgId);
}
protocol.response("true");
}
catch (Exception e)
{
protocol.response("false");
}
}
@Override
public void onClose(DefaultWebSocketServerProtocol protocol) {
String channel= protocol.requestMessage().getChannelId();
String orgId= redisCache.get(channel);
redisCache.remove(channel);
redisCache.remove(orgId);
WebSocketServerListener.super.onClose(protocol);
}
@Override
public void onBinary(DefaultWebSocketServerProtocol protocol) {
WebSocketServerListener.super.onBinary(protocol);
}
}
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论