|
@@ -21,11 +21,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.DateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.Executors;
|
|
|
|
|
|
-import static com.tokheim.sgs.v3.socket.ServerHandler.ENV;
|
|
|
-import static com.tokheim.sgs.v3.socket.ServerHandler.prevPump;
|
|
|
+import static com.tokheim.sgs.v3.socket.ServerHandler.*;
|
|
|
|
|
|
/**
|
|
|
* @author xgm
|
|
@@ -98,6 +98,8 @@ public class CloudInfoHandler {
|
|
|
// String pump = ServerHandler.pumpMap.get(stationIp, gunNo_);
|
|
|
String pump = ServerHandler.pumpMap.get(stationIp, gunNo_,activeNozzle.get(gunNo_));
|
|
|
|
|
|
+ //记录卡号,用于收到订单信息时判断
|
|
|
+ FuelMsgCardNoHandler.setCacheCardNums(stationIp,gunNo_,realTimeMsg.get(DataConfig.RealTimeConfig.cardNo));
|
|
|
if (pump == null) {
|
|
|
orderNo = SeqKit.genPayOrderId();
|
|
|
ServerHandler.orderNoMap.set(stationIp, gunNo_, orderNo);
|
|
@@ -180,9 +182,26 @@ public class CloudInfoHandler {
|
|
|
String stationIp = getStationIp(msg, oilHeaderPackageCard);
|
|
|
String gunNo_ = String.valueOf(ByteUtils.hexToDecimal(fuelMsg.get(DataConfig.OrderConfig.gunNo)) - ByteUtils.hexToDecimal("20"));
|
|
|
|
|
|
+ //出现过订单数据中卡号信息错误而实时数据卡号正确,因此对比实时数据中的卡号信息
|
|
|
+ String cardNum = FuelMsgCardNoHandler.getCacheCardNums(stationIp, gunNo_);
|
|
|
+ if (cardNum != null && !cardNum.isEmpty() && !fuelMsg.get(DataConfig.OrderConfig.cardNo).equals(cardNum)) {
|
|
|
+ //null: 初始化;empty:实时记录没有卡号;实时记录的卡号 == 当前订单数据的卡号
|
|
|
+ log.info("订单数据错误,实时数据卡号" + cardNum + "订单数据:" + fuelMsg);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //记录订单时间是否大于上一笔订单的时间,不是则为旧单或同一单,不上传
|
|
|
String orderTime = fuelMsg.get(DataConfig.OrderConfig.date) + " " + fuelMsg.get(DataConfig.OrderConfig.time);
|
|
|
String perOrderTime = FuelMsgCardNoHandler.getPerOrderTime(stationIp, gunNo_);
|
|
|
- if (orderTime.equals(perOrderTime)) return; //表示同一单
|
|
|
+ Date orderTimeDate = DateTimeUtils.parse(orderTime);
|
|
|
+ Date perOrderTimeDate = DateTimeUtils.parse(perOrderTime);
|
|
|
+ if (orderTimeDate != null && perOrderTimeDate != null) {
|
|
|
+ int intervalSeconds = DateTimeUtils.getIntervalSeconds(perOrderTimeDate,orderTimeDate);
|
|
|
+ if (intervalSeconds <= 0) return; //表示同一单或者是旧单
|
|
|
+ } else {
|
|
|
+ if (orderTime.equals(perOrderTime)) return; //表示同一单
|
|
|
+ }
|
|
|
+
|
|
|
//记录订单时间
|
|
|
FuelMsgCardNoHandler.setPerOrderTime(stationIp,gunNo_,orderTime);
|
|
|
|
|
@@ -230,58 +249,60 @@ public class CloudInfoHandler {
|
|
|
if (!(addValBigDecimalValue == Double.valueOf(fuelMsg.get(DataConfig.OrderConfig.pump)))){
|
|
|
log.info("油机ip地址--【" + stationIp + "】--漏单时间--addValBigDecimalValue--"+addValBigDecimalValue+"--" + DateTimeUtils.getFormatCurrentTime() + "--当前泵码【" + fuelMsg.get(DataConfig.OrderConfig.pump) + "】--上一个泵码【" + prevPump + "】--差值【" + v + "】--" + msg);
|
|
|
}
|
|
|
- log.info("加油记录包头(含卡号)--当前泵码【" + fuelMsg.get(DataConfig.OrderConfig.pump) + "】--上一个泵码【" + prevPump + "】--差值【" + v + "】--" + msg);
|
|
|
- //System.err.println("油机ip地址--【" + stationIp + "】--云平台数据(交易数据-含卡号):" + jsonString);
|
|
|
- log.info("油机ip地址--【" + stationIp + "】--云平台数据(交易数据-含卡号):" + jsonString);
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(jsonString);
|
|
|
- //记录上传泵码
|
|
|
- ServerHandler.prevPump = fuelMsg.get(DataConfig.OrderConfig.pump);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("加油记录包头(含卡号)--当前泵码【" + fuelMsg.get(DataConfig.OrderConfig.pump) + "】--上一个泵码【" + prevPump + "】" + msg);
|
|
|
+ //System.err.println("油机ip地址--【" + stationIp + "】--云平台数据(交易数据-含卡号):" + jsonString);
|
|
|
+ log.info("油机ip地址--【" + stationIp + "】--云平台数据(交易数据-含卡号):" + jsonString);
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(jsonString);
|
|
|
+ //记录上传泵码
|
|
|
+ ServerHandler.prevPump = fuelMsg.get(DataConfig.OrderConfig.pump);
|
|
|
// ServerHandler.pumpMap.set(stationIp, gunNo_, ServerHandler.prevPump);
|
|
|
- ServerHandler.pumpMap.set(stationIp, gunNo_, activeNozzle.get(gunNo_),ServerHandler.prevPump);
|
|
|
- //log.info("上一个泵码--" + prevPump + ",当前泵码---" + fuelMsg.get(DataConfig.OrderConfig.pump));
|
|
|
+ ServerHandler.pumpMap.set(stationIp, gunNo_, activeNozzle.get(gunNo_),ServerHandler.prevPump);
|
|
|
+ //log.info("上一个泵码--" + prevPump + ",当前泵码---" + fuelMsg.get(DataConfig.OrderConfig.pump));
|
|
|
|
|
|
|
|
|
- String orderNo2 = SeqKit.genPayOrderId();
|
|
|
- ServerHandler.orderNoMap.set(stationIp, gunNo_, orderNo2);
|
|
|
- //nextOrderNoMap.set(stationIp, gunNo_, orderNo2);
|
|
|
- OrderMapper orderMapper = SpringUtils.getBean("orderMapper");
|
|
|
+ String orderNo2 = SeqKit.genPayOrderId();
|
|
|
+ ServerHandler.orderNoMap.set(stationIp, gunNo_, orderNo2);
|
|
|
+ //nextOrderNoMap.set(stationIp, gunNo_, orderNo2);
|
|
|
+ OrderMapper orderMapper = SpringUtils.getBean("orderMapper");
|
|
|
/*if (ServerHandler.ENV.equals("test")){
|
|
|
target.put("id", SeqKit.genPayOrderId()); //开发环境生成订单号,生成环境在实时数据中生成
|
|
|
}*/
|
|
|
- String json = JSONObject.toJSONString(target, SerializerFeature.WriteNullStringAsEmpty);
|
|
|
- Order order = JSONObject.parseObject(json, Order.class);
|
|
|
- log.info("保存订单"+json);
|
|
|
- orderMapper.insertSelective(order);
|
|
|
-
|
|
|
- if (ServerHandler.ENV.equals("prod")) { //dev prod test http://47.107.51.26:8086/oilmachine/postOilData
|
|
|
- try {
|
|
|
- //OrderMapper orderMapper = SpringUtils.getBean("orderMapper");
|
|
|
- ////target.put("id",SeqKit.genPayOrderId());
|
|
|
- ////String json = JSONObject.toJSONString(target, SerializerFeature.WriteNullStringAsEmpty);
|
|
|
- //Order order = JSONObject.parseObject(jsonString, Order.class);
|
|
|
- //orderMapper.insertSelective(order);
|
|
|
-
|
|
|
- ThreadUtil.execAsync(new Runnable() { //异步执行
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- //System.out.println("异步请求---" + Thread.currentThread().getName());
|
|
|
- String resp = HttpUtils.sendPost3(data.getUrl(), jsonObject); //url
|
|
|
- if (resp != null) {
|
|
|
- //System.err.println("响应数据:" + resp);
|
|
|
- log.info("响应数据:" + resp);
|
|
|
- orderMapper.deleteByPrimaryKey(order);
|
|
|
- }
|
|
|
+ String json = JSONObject.toJSONString(target, SerializerFeature.WriteNullStringAsEmpty);
|
|
|
+ Order order = JSONObject.parseObject(json, Order.class);
|
|
|
+ log.info("保存订单"+json);
|
|
|
+ orderMapper.insertSelective(order);
|
|
|
+
|
|
|
+ if (ServerHandler.ENV.equals("prod")) { //dev prod test http://47.107.51.26:8086/oilmachine/postOilData
|
|
|
+ try {
|
|
|
+ //OrderMapper orderMapper = SpringUtils.getBean("orderMapper");
|
|
|
+ ////target.put("id",SeqKit.genPayOrderId());
|
|
|
+ ////String json = JSONObject.toJSONString(target, SerializerFeature.WriteNullStringAsEmpty);
|
|
|
+ //Order order = JSONObject.parseObject(jsonString, Order.class);
|
|
|
+ //orderMapper.insertSelective(order);
|
|
|
+
|
|
|
+ ThreadUtil.execAsync(new Runnable() { //异步执行
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ //System.out.println("异步请求---" + Thread.currentThread().getName());
|
|
|
+ String resp = HttpUtils.sendPost3(data.getUrl(), jsonObject); //url
|
|
|
+ if (resp != null) {
|
|
|
+ //System.err.println("响应数据:" + resp);
|
|
|
+ log.info("响应数据:" + resp);
|
|
|
+ orderMapper.deleteByPrimaryKey(order);
|
|
|
}
|
|
|
- });
|
|
|
- } catch (Exception e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (Exception e) {
|
|
|
// ServerHandler.pumpMap.set(stationIp, gunNo_, ServerHandler.prevPump);
|
|
|
- ServerHandler.pumpMap.set(stationIp, gunNo_,activeNozzle.get(gunNo_), ServerHandler.prevPump);
|
|
|
- //String orderNo = ID.get().next().toString();
|
|
|
- String orderNo = SeqKit.genPayOrderId();
|
|
|
- ServerHandler.orderNoMap.set(stationIp, gunNo_, orderNo);
|
|
|
- e.printStackTrace();
|
|
|
- log.error("threadPoolExecutor(order)--发送订单json数据【" + jsonString + "】--" + e);
|
|
|
- }
|
|
|
+ ServerHandler.pumpMap.set(stationIp, gunNo_,activeNozzle.get(gunNo_), ServerHandler.prevPump);
|
|
|
+ //String orderNo = ID.get().next().toString();
|
|
|
+ String orderNo = SeqKit.genPayOrderId();
|
|
|
+ ServerHandler.orderNoMap.set(stationIp, gunNo_, orderNo);
|
|
|
+ e.printStackTrace();
|
|
|
+ log.error("threadPoolExecutor(order)--发送订单json数据【" + jsonString + "】--" + e);
|
|
|
}
|
|
|
}
|
|
|
}
|