diff --git a/xhpc-modules/xhpc-order/pom.xml b/xhpc-modules/xhpc-order/pom.xml index 593ce9a1..073fa95f 100644 --- a/xhpc-modules/xhpc-order/pom.xml +++ b/xhpc-modules/xhpc-order/pom.xml @@ -84,6 +84,17 @@ 5.7.5 compile + + + javax.websocket + javax.websocket-api + 1.1 + provided + + + org.springframework.boot + spring-boot-starter-websocket + diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/WebSocketConfig.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/WebSocketConfig.java new file mode 100644 index 00000000..2501ff76 --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/WebSocketConfig.java @@ -0,0 +1,20 @@ +package com.xhpc.order.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +/** + * @author yuyang + * @date 2021/8/9 17:13 + */ + +@Component +public class WebSocketConfig { + + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } + +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/WebSocketController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/WebSocketController.java new file mode 100644 index 00000000..d2b277e4 --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/WebSocketController.java @@ -0,0 +1,122 @@ +package com.xhpc.order.controller; + +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.concurrent.CopyOnWriteArraySet; +import javax.websocket.OnClose; +import javax.websocket.OnError; +import javax.websocket.OnMessage; +import javax.websocket.OnOpen; +import javax.websocket.Session; +import javax.websocket.server.PathParam; +import javax.websocket.server.ServerEndpoint; +/** + * @author yuyang + * @date 2021/8/9 14:33 + */ +@Component +@ServerEndpoint(value="/websocket/{userId}") +public class WebSocketController { + + //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。 + private static int onlineCount = 0; + + //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识 + private static CopyOnWriteArraySet webSocketSet = new CopyOnWriteArraySet(); + + //与某个客户端的连接会话,需要通过它来给客户端发送数据 + private Session session; + //连接用户id + private String userId; + /** + * 连接建立成功调用的方法 + * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据 + */ + @OnOpen + public void onOpen(@PathParam("userId") String userId,Session session){ + this.userId =userId; + this.session = session; + webSocketSet.add(this); //加入set中 + addOnlineCount(); //在线数加1 + System.out.println("有新连接加入!当前在线人数为" + getOnlineCount()); + } + + /** + * 连接关闭调用的方法 + */ + @OnClose + public void onClose(){ + webSocketSet.remove(this); //从set中删除 + subOnlineCount(); //在线数减1 + System.out.println("有一连接关闭!当前在线人数为" + getOnlineCount()); + } + + /** + * 收到客户端消息后调用的方法 + * @param message 客户端发送过来的消息 + * @param session 可选的参数 + */ + @OnMessage + public void onMessage(String message, Session session) { + System.out.println("收到:" + this.userId+"的消息"); + System.out.println("来自客户端的消息:" + message); + try { + message ="{\n" + + " \"msg\": \"操作成功\",\n" + + " \"code\": 200,\n" + + " \"data\": {\n" + + " \"amountCharged\": 50.0,\n" + + " \"gunNumber\": \"1\",\n" + + " \"balance\": 10.00,\n" + + " \"chargingOrderId\": 3,\n" + + " \"soc\": \"12\",\n" + + " \"chargingTime\": \"21\",\n" + + " \"realTimeOrderId\": 8,\n" + + " \"electricCurrent\": 1.0,\n" + + " \"power\": null,\n" + + " \"chargingDegree\": 10.25,\n" + + " \"voltage\": 45.0,\n" + + " \"remainingTime\": \"45\"\n" + + " }\n" + + "}"; + this.session.getBasicRemote().sendText(message); + + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 发生错误时调用 + * @param session + * @param error + */ + @OnError + public void onError(Session session, Throwable error){ + System.out.println("发生错误"); + error.printStackTrace(); + } + + /** + * 这个方法与上面几个方法不一样。没有用注解,是根据自己需要添加的方法。 + * @param message + * @throws IOException + */ + public void sendMessage(String message) throws IOException{ + this.session.getBasicRemote().sendText(message); + //this.session.getAsyncRemote().sendText(message); + } + + public static synchronized int getOnlineCount() { + return onlineCount; + } + + public static synchronized void addOnlineCount() { + WebSocketController.onlineCount++; + } + + public static synchronized void subOnlineCount() { + WebSocketController.onlineCount--; + } +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderCurrent.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderCurrent.java new file mode 100644 index 00000000..9c7d6386 --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderCurrent.java @@ -0,0 +1,84 @@ +package com.xhpc.order.domain; + +import com.xhpc.common.core.web.domain.BaseEntity; + +/** + * @author yuyang + * @date 2021/8/9 16:01 + */ +public class XhpcChargeOrderCurrent extends BaseEntity { + + /** + * 订单电流实时数据 + */ + private Long chargeOrderCurrentId; + /** + * 订单id + */ + private Long chargeOrderId; + /** + * 电流实时走向 + */ + private String current; + + /** + * (状态) + */ + private Integer status; + + /** + * 0代表存在 1代表删除 + */ + private Integer delFlag; + + public Long getChargeOrderCurrentId() { + + return chargeOrderCurrentId; + } + + public void setChargeOrderCurrentId(Long chargeOrderCurrentId) { + + this.chargeOrderCurrentId = chargeOrderCurrentId; + } + + public Long getChargeOrderId() { + + return chargeOrderId; + } + + public void setChargeOrderId(Long chargeOrderId) { + + this.chargeOrderId = chargeOrderId; + } + + public String getCurrent() { + + return current; + } + + public void setCurrent(String current) { + + this.current = current; + } + + public Integer getStatus() { + + return status; + } + + public void setStatus(Integer status) { + + this.status = status; + } + + public Integer getDelFlag() { + + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + + this.delFlag = delFlag; + } + +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderSoc.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderSoc.java new file mode 100644 index 00000000..590669ec --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderSoc.java @@ -0,0 +1,86 @@ +package com.xhpc.order.domain; + +import com.xhpc.common.core.web.domain.BaseEntity; + +/** + * @author yuyang + * @date 2021/8/9 15:56 + */ +public class XhpcChargeOrderSoc extends BaseEntity { + + + /** + * 订单SOC实时数据 + */ + private Long chargeOrderSocId; + /** + * 订单id + */ + private Long chargeOrderId; + /** + * soc 实时走向 + */ + private String soc; + + /** + * (状态) + */ + private Integer status; + + /** + * 0代表存在 1代表删除 + */ + private Integer delFlag; + + + public Long getChargeOrderSocId() { + + return chargeOrderSocId; + } + + public void setChargeOrderSocId(Long chargeOrderSocId) { + + this.chargeOrderSocId = chargeOrderSocId; + } + + public Long getChargeOrderId() { + + return chargeOrderId; + } + + public void setChargeOrderId(Long chargeOrderId) { + + this.chargeOrderId = chargeOrderId; + } + + public String getSoc() { + + return soc; + } + + public void setSoc(String soc) { + + this.soc = soc; + } + + public Integer getStatus() { + + return status; + } + + public void setStatus(Integer status) { + + this.status = status; + } + + public Integer getDelFlag() { + + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + + this.delFlag = delFlag; + } + +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderVoltage.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderVoltage.java new file mode 100644 index 00000000..be1cdd1d --- /dev/null +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargeOrderVoltage.java @@ -0,0 +1,84 @@ +package com.xhpc.order.domain; + +import com.xhpc.common.core.web.domain.BaseEntity; + +/** + * @author yuyang + * @date 2021/8/9 16:02 + */ +public class XhpcChargeOrderVoltage extends BaseEntity { + + /** + * 订单电压实时数据 + */ + private Long chargeOrderVoltageId; + /** + * 订单id + */ + private Long chargeOrderId; + /** + * 电压实时走向 + */ + private String voltage; + + /** + * (状态) + */ + private Integer status; + + /** + * 0代表存在 1代表删除 + */ + private Integer delFlag; + + public Long getChargeOrderVoltageId() { + + return chargeOrderVoltageId; + } + + public void setChargeOrderVoltageId(Long chargeOrderVoltageId) { + + this.chargeOrderVoltageId = chargeOrderVoltageId; + } + + public Long getChargeOrderId() { + + return chargeOrderId; + } + + public void setChargeOrderId(Long chargeOrderId) { + + this.chargeOrderId = chargeOrderId; + } + + public String getVoltage() { + + return voltage; + } + + public void setVoltage(String voltage) { + + this.voltage = voltage; + } + + public Integer getStatus() { + + return status; + } + + public void setStatus(Integer status) { + + this.status = status; + } + + public Integer getDelFlag() { + + return delFlag; + } + + public void setDelFlag(Integer delFlag) { + + this.delFlag = delFlag; + } + +} diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java index d89b8c51..0794f640 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcRealTimeOrderMapper.java @@ -1,5 +1,6 @@ package com.xhpc.order.mapper; +import com.xhpc.order.domain.XhpcChargeOrderSoc; import com.xhpc.order.domain.XhpcRealTimeOrder; /** @@ -14,4 +15,14 @@ public interface XhpcRealTimeOrderMapper { * @return */ int addXhpcRealTimeOrder(XhpcRealTimeOrder xhpcRealTimeOrder); + + + /** + * 添加订单实时SOC + * @param xhpcChargeOrderSoc + * @return + */ + int addSOC(XhpcChargeOrderSoc xhpcChargeOrderSoc); + + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java index 8cfe2122..af7fd192 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcRealTimeOrderServiceImpl.java @@ -24,6 +24,8 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService { public void addXhpcRealTimeOrder(String orderNo, Integer status) { + //获取redis 数据 + //记录电流、电压、soc实时记录