From 4377939cb7aefbae03ef3e931c9e751032e19602 Mon Sep 17 00:00:00 2001
From: yuyang <2265829957@qq.com>
Date: Thu, 12 Aug 2021 15:54:28 +0800
Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?=E3=80=81=E5=90=AF=E5=8A=A8=E5=85=85=E7=94=B5=E6=B5=81=E7=A8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
xhpc-modules/pom.xml | 1 +
.../service/XhpcChargingPileServiceImpl.java | 2 +-
.../config/ApplicationContextRegister.java | 30 ---
.../controller/HxpcChargeOrderController.java | 10 +-
.../order/controller/WebSocketController.java | 152 -------------
.../order/mapper/HxpcChargeOrderMapper.java | 30 ++-
.../order/mapper/XhpcRealTimeOrderMapper.java | 16 ++
.../service/IHxpcChargeOrderService.java | 11 +
.../service/IXhpcHistoryOrderService.java | 9 +
.../impl/HxpcChargeOrderServiceImpl.java | 204 ++++++++++++------
.../impl/XhpcHistoryOrderServiceImpl.java | 6 +
.../mapper/XhpcChargeOrderMapper.xml | 70 +++---
.../mapper/XhpcRealTimeOrderMapper.xml | 58 +++++
xhpc-modules/xhpc-wxma/pom.xml | 131 +++++++++++
.../main/java/com/xhpc/WxmaApplication.java | 32 +++
.../xhpc/wxma}/config/WebSocketConfig.java | 11 +-
.../OrderNotificationWebSocketController.java | 22 ++
.../com/xhpc/wxma/domain/WebSocketClient.java | 37 ++++
.../xhpc/wxma/rabbitm/RabbitmConsumer.java | 52 +++++
.../socket/OrderNotificationWebSocket.java | 85 ++++++++
.../xhpc-wxma/src/main/resources/banner.txt | 9 +
.../src/main/resources/bootstrap.yml | 27 +++
.../xhpc-wxma/src/main/resources/logback.xml | 74 +++++++
23 files changed, 794 insertions(+), 285 deletions(-)
delete mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/ApplicationContextRegister.java
delete mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/WebSocketController.java
create mode 100644 xhpc-modules/xhpc-wxma/pom.xml
create mode 100644 xhpc-modules/xhpc-wxma/src/main/java/com/xhpc/WxmaApplication.java
rename xhpc-modules/{xhpc-order/src/main/java/com/xhpc/order => xhpc-wxma/src/main/java/com/xhpc/wxma}/config/WebSocketConfig.java (70%)
create mode 100644 xhpc-modules/xhpc-wxma/src/main/java/com/xhpc/wxma/controller/OrderNotificationWebSocketController.java
create mode 100644 xhpc-modules/xhpc-wxma/src/main/java/com/xhpc/wxma/domain/WebSocketClient.java
create mode 100644 xhpc-modules/xhpc-wxma/src/main/java/com/xhpc/wxma/rabbitm/RabbitmConsumer.java
create mode 100644 xhpc-modules/xhpc-wxma/src/main/java/com/xhpc/wxma/socket/OrderNotificationWebSocket.java
create mode 100644 xhpc-modules/xhpc-wxma/src/main/resources/banner.txt
create mode 100644 xhpc-modules/xhpc-wxma/src/main/resources/bootstrap.yml
create mode 100644 xhpc-modules/xhpc-wxma/src/main/resources/logback.xml
diff --git a/xhpc-modules/pom.xml b/xhpc-modules/pom.xml
index 70ae1acf..50a08d65 100644
--- a/xhpc-modules/pom.xml
+++ b/xhpc-modules/pom.xml
@@ -16,6 +16,7 @@
xhpc-user
xhpc-payment
xhpc-order
+ xhpc-wxma
xhpc-modules
diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingPileServiceImpl.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingPileServiceImpl.java
index 76fd7353..1a634e41 100644
--- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingPileServiceImpl.java
+++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingPileServiceImpl.java
@@ -69,7 +69,7 @@ public class XhpcChargingPileServiceImpl implements IXhpcChargingPileService {
Long chargingPileId = xhpcChargingPile.getChargingPileId();
if (xhpcChargingPile.getGunNumber() > 0) {
- for (int i = 0; i < xhpcChargingPile.getGunNumber(); i++) {
+ for (int i = 1; i <= xhpcChargingPile.getGunNumber(); i++) {
XhpcTerminal xhpcTerminal = new XhpcTerminal();
xhpcTerminal.setChargingStationId(chargingStationId);
xhpcTerminal.setChargingPileId(chargingPileId);
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/ApplicationContextRegister.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/ApplicationContextRegister.java
deleted file mode 100644
index b37b93fb..00000000
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/config/ApplicationContextRegister.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.xhpc.order.config;
-
-import org.springframework.beans.BeansException;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.annotation.Lazy;
-import org.springframework.stereotype.Component;
-
-/**
- * @author yuyang
- * @date 2021/8/9 20:31
- */
-@Component
-@Lazy(false)
-public class ApplicationContextRegister implements ApplicationContextAware {
-
- private static ApplicationContext APPLICATION_CONTEXT;
-
- /**
- * 设置spring上下文 * * @param applicationContext spring上下文 * @throws BeansException
- */
- @Override
- public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
- APPLICATION_CONTEXT = applicationContext;
- }
-
- public static ApplicationContext getApplicationContext() {
- return APPLICATION_CONTEXT;
- }
-}
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/HxpcChargeOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/HxpcChargeOrderController.java
index bb0dbf99..b17e28e9 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/HxpcChargeOrderController.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/HxpcChargeOrderController.java
@@ -73,5 +73,13 @@ public class HxpcChargeOrderController extends BaseController {
return iHxpcChargeOrderService.stopUp(userId, serialNumber,chargingOrderId);
}
-
+ /**
+ * 桩回调接口
+ * @return
+ */
+ @GetMapping("/pileStatus")
+ public AjaxResult pileStatus(String orderNo,Integer status,String remark){
+ iHxpcChargeOrderService.pileStatus(orderNo, status,remark);
+ return null;
+ }
}
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
deleted file mode 100644
index 5ce7866c..00000000
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/WebSocketController.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package com.xhpc.order.controller;
-
-import com.xhpc.common.core.web.domain.AjaxResult;
-import com.xhpc.common.redis.service.RedisService;
-import com.xhpc.order.config.ApplicationContextRegister;
-import com.xhpc.order.service.IHxpcChargeOrderService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.ApplicationContext;
-import org.springframework.stereotype.Component;
-import org.springframework.web.socket.server.standard.SpringConfigurator;
-
-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 Long userId;
-
-
- /**
- * 连接建立成功调用的方法
- *
- * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据
- */
- @OnOpen
- public void onOpen(@PathParam("userId") Long userId, Session session) {
-
- this.userId = userId;
- this.session = session;
- System.out.println("userId:" + userId);
- System.out.println("session:" + session);
- webSocketSet.add(this); //加入set中
- addOnlineCount(); //在线数加1
- System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());
- try {
- this.session.getBasicRemote().sendText("推送消息");
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-
-
- /**
- * 连接关闭调用的方法
- */
- @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" +
- "}";
- //终端编号、订单信息需要获取
- ApplicationContext act = ApplicationContextRegister.getApplicationContext();
- RedisService redisService = act.getBean(RedisService.class);
- Object cacheObject = redisService.getCacheObject("gun:1472583698524602.seqdec");
- System.out.println("cacheObject:" + cacheObject);
-
- 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();
- }
-
- 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/mapper/HxpcChargeOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java
index 20f336d7..7c7405af 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/HxpcChargeOrderMapper.java
@@ -13,6 +13,8 @@ import java.util.Map;
*/
public interface HxpcChargeOrderMapper {
+
+
/**
* 实时订单
* @param userId
@@ -20,6 +22,8 @@ public interface HxpcChargeOrderMapper {
*/
int getHistotyChargeOrderMessage(@Param("userId") Long userId);
+
+ Map getMessage(@Param("userId") Long userId);
/**
* 异常订单
* @param userId
@@ -54,12 +58,34 @@ public interface HxpcChargeOrderMapper {
* @param hxpcChargeOrder
* @return
*/
- int addXhpcTerminalSerial(HxpcChargeOrder hxpcChargeOrder);
+ int addXhpcChargeOrder(HxpcChargeOrder hxpcChargeOrder);
/**
* 修改充电订单
* @param hxpcChargeOrder
* @return
*/
- int updateXhpcTerminalSerial(HxpcChargeOrder hxpcChargeOrder);
+ int updateXhpcChargeOrder(HxpcChargeOrder hxpcChargeOrder);
+
+ /**
+ * 获取充电订单数据
+ * @param serialNumber 订单编号
+ * @return
+ */
+ HxpcChargeOrder getSerialNumberMessage(@Param("serialNumber") String serialNumber);
+
+ /**
+ * 判断用户是第几次充电
+ * @param userId
+ * @return
+ */
+ int getCount(@Param("userId") Long userId);
+
+ /**
+ * 活动
+ * @return
+ */
+ Map getPromotion();
+
+
}
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 cf9efbb6..db1bf831 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,6 +1,8 @@
package com.xhpc.order.mapper;
+import com.xhpc.order.domain.XhpcChargeOrderCurrent;
import com.xhpc.order.domain.XhpcChargeOrderSoc;
+import com.xhpc.order.domain.XhpcChargeOrderVoltage;
import com.xhpc.order.domain.XhpcRealTimeOrder;
import org.apache.ibatis.annotations.Param;
@@ -29,6 +31,20 @@ public interface XhpcRealTimeOrderMapper {
*/
int addSOC(XhpcChargeOrderSoc xhpcChargeOrderSoc);
+ /**
+ * 添加订单实时电流
+ * @param XhpcChargeOrderCurrent
+ * @return
+ */
+ int addCurrent(XhpcChargeOrderCurrent XhpcChargeOrderCurrent);
+
+ /**
+ * 添加订单实时电流
+ * @param XhpcChargeOrderVoltage
+ * @return
+ */
+ int addVoltage(XhpcChargeOrderVoltage xhpcChargeOrderVoltage);
+
/**
* 实时订单接口
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java
index 0f0dceb0..32b8b2ff 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IHxpcChargeOrderService.java
@@ -40,4 +40,15 @@ public interface IHxpcChargeOrderService {
* @return
*/
AjaxResult stopUp(Long userId,String serialNumber,Long chargingOrderId);
+
+
+ /**
+ * 桩回调接口
+ * @param orderNo 订单编号
+ * @param status 订单状态 (启动状态 1成功 2失败 实时订单状态 3充电中 4 桩充电完成 5 用户停止充电 6桩异常停止充电 )
+ * @param remark 失败的备注
+ */
+ void pileStatus(String orderNo,Integer status,String remark);
+
+
}
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java
index 78cbb9ed..b53f9df0 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java
@@ -1,6 +1,7 @@
package com.xhpc.order.service;
import com.xhpc.common.core.web.domain.AjaxResult;
+import com.xhpc.order.domain.XhpcHistoryOrder;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@@ -27,4 +28,12 @@ public interface IXhpcHistoryOrderService {
* @return
*/
AjaxResult gethistotyOrderMessage(Long userId,Long historyOrderId,Integer type,Long chargingOrderId);
+
+ /**
+ * 新增 历史订单信息
+ *
+ * @param xhpcHistoryOrder 历史订单信息
+ * @return 结果
+ */
+ void insert(XhpcHistoryOrder xhpcHistoryOrder);
}
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java
index 980eeb3a..456c13b4 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/HxpcChargeOrderServiceImpl.java
@@ -1,6 +1,8 @@
package com.xhpc.order.service.impl;
import cn.hutool.core.date.DateUtil;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
import com.xhpc.common.api.PowerPileService;
import com.xhpc.common.core.domain.R;
import com.xhpc.common.core.web.domain.AjaxResult;
@@ -9,10 +11,14 @@ import com.xhpc.common.data.redis.SeqUtil;
import com.xhpc.common.domain.XhpcTerminal;
import com.xhpc.common.redis.service.RedisService;
import com.xhpc.order.domain.HxpcChargeOrder;
+import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.mapper.HxpcChargeOrderMapper;
import com.xhpc.order.service.IHxpcChargeOrderService;
+import com.xhpc.order.service.IXhpcHistoryOrderService;
+import com.xhpc.order.util.ConnectionRabbitMQUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
@@ -35,9 +41,14 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
@Autowired
private HxpcChargeOrderMapper hxpcChargeOrderMapper;
@Autowired
+ private IXhpcHistoryOrderService xhpcHistoryOrderService;
+ @Autowired
private PowerPileService powerPileService;
@Autowired
private RedisService redisService;
+ //队列名称
+ private final static String NAME = "webSocket";
+
@PostConstruct
public void init(){
REDIS =redisService;
@@ -50,6 +61,7 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
return AjaxResult.success();
}
return AjaxResult.error(1201,"无实时数据");
+ //return AjaxResult.success(hxpcChargeOrderMapper.getMessage(userId));
}
@Override
@@ -58,6 +70,7 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
}
@Override
+ @Transactional
public AjaxResult startUp(Long userId, String serialNumber,Integer type) {
String pattern = "^([0-9]{16})";
Pattern compile = Pattern.compile(pattern);
@@ -87,10 +100,21 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
}
//终端状态是否空闲
//是否插枪
-// R r = powerPileService.terminalStatus(serialNumber);
-// if(r.getCode() !=200){
-// return AjaxResult.error(r.getMsg());
-// }
+ Map cacheMap = REDIS.getCacheMap("gun:" + serialNumber);
+ if(cacheMap==null){
+ return AjaxResult.error(1105, "未注册的终端,请选择其他终端充电");
+ }else{
+ if(cacheMap.get("status") ==null){
+ return AjaxResult.error(1106, "未知的终端状态,请选择其他终端充电");
+ }else{
+ String status = cacheMap.get("status").toString();
+ //不同的状态
+ if("离线".equals(status)||"故障".equals(status) ||"充电".equals(status)){
+ return AjaxResult.error(1107, "此终端"+status+"中,请选择其他终端充电");
+ }
+ }
+ }
+
//终端信息
XhpcTerminal xhpcTerminal = hxpcChargeOrderMapper.getXhpcTerminalSerialNumber(serialNumber);
if (xhpcTerminal == null || xhpcTerminal.getTerminalId() == null || xhpcTerminal.getChargingPileId() == null || xhpcTerminal.getPileSerialNumber() == null) {
@@ -104,12 +128,8 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
Date date = new Date();
String format = DateUtil.format(date, "yyMMddHHmmss");
//自增
- String number = "number:" + serialNumber;
- String cacheObject = REDIS.getCacheObject(number);
- String gunSerialNumber=serialNumber+format;
- gunSerialNumber = getString(number, cacheObject, gunSerialNumber);
+ String orderNo = serialNumber + format + SeqUtil.seqDec("gun:" + serialNumber + ".seqdec");
- String orderNo = SeqUtil.seqDec("gun:" + gunSerialNumber + ".seqdec");
startChargingData.setOrderNo(orderNo);
startChargingData.setPileNo(xhpcTerminal.getPileSerialNumber());
startChargingData.setGunId(xhpcTerminal.getSerialNumber());
@@ -119,15 +139,14 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
if(r1.getCode() !=200){
return AjaxResult.error(r1.getMsg());
}
-
//创建充电订单(充电启动soc初始值,结束是获取,并修改状态)
HxpcChargeOrder hxpcChargeOrder = new HxpcChargeOrder();
hxpcChargeOrder.setChargingStationId(xhpcTerminal.getChargingStationId());
hxpcChargeOrder.setUserId(userId);
hxpcChargeOrder.setTerminalId(xhpcTerminal.getTerminalId());
- hxpcChargeOrder.setSerialNumber(gunSerialNumber);
+ hxpcChargeOrder.setSerialNumber(orderNo);
hxpcChargeOrder.setSource(0);
- hxpcChargeOrder.setStatus(0);
+ hxpcChargeOrder.setStatus(-1);
hxpcChargeOrder.setRateModelId(xhpcTerminal.getRateModelId());
if(type ==1){
hxpcChargeOrder.setChargingMode("小华充电微信");
@@ -135,58 +154,11 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
hxpcChargeOrder.setChargingMode("小华充电支付宝");
}
hxpcChargeOrder.setStartTime(date);
- hxpcChargeOrderMapper.addXhpcTerminalSerial(hxpcChargeOrder);
+ hxpcChargeOrderMapper.addXhpcChargeOrder(hxpcChargeOrder);
return AjaxResult.success();
}
- private String getString(String number, String cacheObject, String gunSerialNumber) {
-
- if(cacheObject !=null){
- if(cacheObject.length()==4){
- if("9999".equals(cacheObject)){
- REDIS.setCacheObject(number,1,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +"0001";
- }else{
- int value = Integer.parseInt(cacheObject)+1;
- REDIS.setCacheObject(number,value,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +value;
- }
- }else if(cacheObject.length()==3){
- if("999".equals(cacheObject)){
- REDIS.setCacheObject(number,1000,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +"1000";
- }else{
- int value = Integer.parseInt(cacheObject)+1;
- REDIS.setCacheObject(number,value,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +value;
- }
- }else if(cacheObject.length()==2){
- if("99".equals(cacheObject)){
- REDIS.setCacheObject(number,100,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +"100";
- }else{
- int value = Integer.parseInt(cacheObject)+1;
- REDIS.setCacheObject(number,value,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +value;
- }
- }else{
- if("9".equals(cacheObject)){
- REDIS.setCacheObject(number,10,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +"10";
- }else{
- int value = Integer.parseInt(cacheObject)+1;
- REDIS.setCacheObject(number,value,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +value;
- }
- }
- }else{
- REDIS.setCacheObject(number,1,24L, TimeUnit.HOURS);
- gunSerialNumber = gunSerialNumber +"0001";
- }
- return gunSerialNumber;
- }
-
@Override
public AjaxResult stopUp(Long userId, String serialNumber,Long chargingOrderId) {
@@ -208,4 +180,116 @@ public class HxpcChargeOrderServiceImpl implements IHxpcChargeOrderService {
return AjaxResult.success();
}
+ /**
+ * 桩回调接口
+ * @param orderNo 订单编号
+ * @param status 订单状态 (启动状态 1成功 2失败 实时订单状态 3充电中 4 桩充电完成 5 用户停止充电 6桩异常停止充电 )
+ * @param remark 失败的备注
+ */
+ @Override
+ public void pileStatus(String orderNo, Integer status,String remark) {
+ //解析订单编号
+ String s = orderNo.split("\\.")[0];
+ String s1 = s.split(":")[1];
+ if(status ==1){
+ update(orderNo,0, 0,null, s1,0);
+ }else if(status ==2){
+ update(orderNo,-1, 1,remark, s1,0);
+ }else{
+ if(status == 3){
+ //发送实时数据
+ }
+ if(status == 4 || status==5){
+ //发送实时订单结束状态,并修改订单状态,生成一条历史订单
+ update(orderNo,1, 0,null, s1,status);
+ }
+ if(status ==6){
+ //订单异常,修改订单状态
+ update(orderNo,2, 0,remark, s1,status);
+ }
+ }
+ //消息对了内容
+ String message="";
+
+ rabbimt(message);
+ }
+
+ private void update(String orderNo,Integer status,Integer delFlag, String remark, String serialNumber,Integer type) {
+ HxpcChargeOrder hxpcChargeOrder = hxpcChargeOrderMapper.getSerialNumberMessage(serialNumber);
+ hxpcChargeOrder.setStatus(status);
+ hxpcChargeOrder.setDelFlag(delFlag);
+ hxpcChargeOrder.setRemark(remark);
+
+ Long userId = hxpcChargeOrder.getUserId();
+ if(type==4 ||type ==5){
+ Date date = new Date();
+ //获取实时订单
+ REDIS.getCacheObject(orderNo);
+
+ //用户第几次充电
+ int count = hxpcChargeOrderMapper.getCount(userId);
+ String state ="";
+ String discount ="";
+ if(count==0){
+ //活动折扣
+ Map promotion = hxpcChargeOrderMapper.getPromotion();
+ if(promotion !=null){
+ //state 1.总金额 2.金额 3.服务费 discount 折扣率
+ state = promotion.get("state").toString();
+ discount = promotion.get("discount").toString();
+ }
+ }
+
+ //生成一条历史订单
+ XhpcHistoryOrder xhpcHistoryOrder =new XhpcHistoryOrder();
+ xhpcHistoryOrder.setChargeOrderId(hxpcChargeOrder.getChargeOrderId());
+ xhpcHistoryOrder.setChargingStationId(hxpcChargeOrder.getChargingStationId());
+ xhpcHistoryOrder.setUserId(userId);
+ xhpcHistoryOrder.setTerminalId(hxpcChargeOrder.getTerminalId());
+ xhpcHistoryOrder.setSerialNumber(hxpcChargeOrder.getSerialNumber());
+ xhpcHistoryOrder.setStartSoc(hxpcChargeOrder.getStartSoc());
+ xhpcHistoryOrder.setReconciliationStatus(0);
+ xhpcHistoryOrder.setSortingStatus(0);
+ xhpcHistoryOrder.setType(1);
+ xhpcHistoryOrder.setStatus(0);
+ xhpcHistoryOrder.setDelFlag(0);
+ xhpcHistoryOrder.setCreateTime(date);
+ //订单总价---运维服务费抽成
+ //结束时soc
+ xhpcHistoryOrderService.insert(xhpcHistoryOrder);
+
+ //充电订单 --结束soc、充电时长、充电度数
+ hxpcChargeOrder.setEndTime(date);
+ if(type ==4){
+ hxpcChargeOrder.setType(0);
+ }else{
+ hxpcChargeOrder.setType(2);
+ }
+
+ //实时数据存入MYsql、soc、电流、电压
+
+
+
+ }
+ hxpcChargeOrderMapper.updateXhpcChargeOrder(hxpcChargeOrder);
+ }
+
+ private void rabbimt(String message) {
+ //发送消息队列
+ try{
+ // 1、获取到连接
+ Connection connection = ConnectionRabbitMQUtil.getConnection();
+ // 2、从连接中创建通道,使用通道才能完成消息相关的操作
+ Channel channel = connection.createChannel();
+ // 3、声明(创建)队列
+ channel.queueDeclare(NAME, false, false, false, null);
+ // 4、消息内容
+ channel.basicPublish("", NAME, null, message.getBytes());
+ channel.close();
+ connection.close();
+ }catch (Exception e){
+
+ }
+ }
+
}
diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java
index 42af38a6..40254d52 100644
--- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java
+++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java
@@ -1,6 +1,7 @@
package com.xhpc.order.service.impl;
import com.xhpc.common.core.web.domain.AjaxResult;
+import com.xhpc.order.domain.XhpcHistoryOrder;
import com.xhpc.order.mapper.XhpcHistoryOrderMapper;
import com.xhpc.order.service.IXhpcHistoryOrderService;
import org.apache.poi.ss.formula.functions.T;
@@ -29,4 +30,9 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService {
return AjaxResult.success(xhpcHistoryOrderMapper.gethistotyOrderMessage(userId,historyOrderId,type,chargingOrderId));
}
+ @Override
+ public void insert(XhpcHistoryOrder xhpcHistoryOrder) {
+ xhpcHistoryOrderMapper.insert(xhpcHistoryOrder);
+ }
+
}
diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml
index 47c36964..fc31d028 100644
--- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml
+++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml
@@ -56,27 +56,27 @@
where user_id = #{userId} and status=0 and del_flag =0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
insert into xhpc_charge_order
@@ -203,11 +197,12 @@
-
+
update xhpc_charge_order
- end_soc = #{chargingStationId},
+ end_soc = #{endSoc},
status = #{status},
+ remark = #{remark},
end_time = #{endTime},
charging_time = #{chargingTime},
charging_degree = #{chargingDegree},
@@ -236,4 +231,15 @@
order by cor.update_time desc
+
+
+
+
+
\ No newline at end of file
diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml
index 74024d9e..25c3291a 100644
--- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml
+++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml
@@ -199,6 +199,64 @@
+
+ insert into xhpc_charge_order_soc
+
+
+ charge_order_id,
+
+
+ soc,
+
+
+ status,
+
+
+ create_time,
+
+
+ create_by,
+
+
+ update_time,
+
+
+ update_by,
+
+
+ remark
+
+
+
+
+ #{chargeOrderId},
+
+
+ #{soc},
+
+
+ #{status},
+
+
+ #{createTime},
+
+
+ #{createBy},
+
+
+ #{updateTime},
+
+
+ #{updateBy},
+
+
+ #{remark}
+
+
+
+
+