From 03deb4ea628c7a971d372e2b6bc0e477e9037f4c Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Tue, 1 Jul 2025 14:42:17 +0800 Subject: [PATCH 01/17] update --- .../src/main/resources/application-pre.yml | 24 +++++++++---------- .../impl/ChangZhouPlatformServiceImpl.java | 14 +++++++++-- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 690bbf530..90f0eed99 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -8,17 +8,17 @@ spring: # redis 配置 redis: # 地址 - host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com -# host: 106.14.94.149 +# host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com + host: 106.14.94.149 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 账号 - username: jsowell - # 密码 - password: js@160829 -# password: js160829 +# username: jsowell +# # 密码 +# password: js@160829 + password: js160829 # 连接超时时间 timeout: 10s lettuce: @@ -38,12 +38,12 @@ spring: druid: # 主库数据源 master: - url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: jsowell - password: js@160829 -# url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: jsowell_pre -# password: Js@160829 +# url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: jsowell +# password: js@160829 + url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: jsowell_pre + password: Js@160829 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java index 04bf08ac4..296fab613 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/ChangZhouPlatformServiceImpl.java @@ -57,6 +57,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.CompletableFuture; @Service @Slf4j @@ -878,10 +879,19 @@ public class ChangZhouPlatformServiceImpl implements ThirdPartyPlatformService { OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); if (orderBasicInfo == null) { SuccStat = 1; + }else { + //调用推送订单信息 + CompletableFuture.runAsync(() -> { + try { + Thread.sleep(500); + notificationChargeOrderInfo(orderCode , thirdPartySecretInfoVO); + } catch (Exception e) { + log.error("订单:{} 推送error, ", orderCode, e); + } + }); + } map.put("SuccStat", SuccStat); - //调用推送订单信息 - notificationChargeOrderInfo(orderCode, thirdPartySecretInfoVO); return ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO); From efda1848ec7afe4ce8abfc399a60283f53101eaa Mon Sep 17 00:00:00 2001 From: Lemon Date: Tue, 1 Jul 2025 15:09:20 +0800 Subject: [PATCH 02/17] =?UTF-8?q?update=20=20=E5=90=8E=E7=AE=A1=E5=A1=AB?= =?UTF-8?q?=E5=85=A5=E7=AB=99=E7=82=B9=E7=BB=8F=E7=BA=AC=E5=BA=A6=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=86=8D=E8=BF=9B=E8=A1=8C=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/PileStationInfoServiceImpl.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index 6c2b1e563..15f7d80d1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -424,15 +424,18 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { } // 2024年8月16日14点15分 天地图坐标转高德坐标 - String stationLng = pileStationInfo.getStationLng(); - String stationLat = pileStationInfo.getStationLat(); - if (StringUtils.isNotBlank(stationLng) && StringUtils.isNotBlank(stationLat)) { - // 获取经纬度 - CoordinateUtil.Coordinate coordinate = CoordinateUtil.wgs84ToGcj02(Double.parseDouble(stationLng), Double.parseDouble(stationLat)); - pileStationInfo.setStationLng(String.format("%.6f", coordinate.getLng())); - pileStationInfo.setStationLat(String.format("%.6f", coordinate.getLat())); - log.info("天地图坐标:{}, 转高德坐标:{}", stationLng + ", " + stationLat, pileStationInfo.getStationLng() + ", " + pileStationInfo.getStationLat()); - } + // String stationLng = pileStationInfo.getStationLng(); + // String stationLat = pileStationInfo.getStationLat(); + + // 2025-07-01 存到数据库的经纬度数据不再进行转换,直接入库 + + // if (StringUtils.isNotBlank(stationLng) && StringUtils.isNotBlank(stationLat)) { + // // 获取经纬度 + // CoordinateUtil.Coordinate coordinate = CoordinateUtil.wgs84ToGcj02(Double.parseDouble(stationLng), Double.parseDouble(stationLat)); + // pileStationInfo.setStationLng(String.format("%.6f", coordinate.getLng())); + // pileStationInfo.setStationLat(String.format("%.6f", coordinate.getLat())); + // log.info("天地图坐标:{}, 转高德坐标:{}", stationLng + ", " + stationLat, pileStationInfo.getStationLng() + ", " + pileStationInfo.getStationLat()); + // } pileStationInfo.setUpdateBy(SecurityUtils.getUsername()); pileStationInfo.setUpdateTime(DateUtils.getNowDate()); From d6804e880b3da83e885fcc04314f6c27d9696493 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 09:10:46 +0800 Subject: [PATCH 03/17] =?UTF-8?q?0x05=E6=94=B9=E4=B8=BA=E4=B8=8E=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E4=B8=8D=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunkuaichong/BillingTemplateValidateRequestHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java index 7279b79e9..caa11e0cc 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java @@ -60,7 +60,7 @@ public class BillingTemplateValidateRequestHandler extends AbstractYkcHandler { String billingTemplateCode = BytesUtil.binary(billingTemplateCodeByte, 16); // byte[] flag = Constants.oneByteArray; 0x00 桩计费模型与平台一致 0x01桩计费模型与平台不一致 - byte[] flag = Constants.zeroByteArray; + byte[] flag = Constants.oneByteArray; // 消息体 byte[] messageBody = Bytes.concat(pileSnByte, billingTemplateCodeByte, flag); From 5776bf2505d13015cb8777188ac139b072efba7f Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 09:18:56 +0800 Subject: [PATCH 04/17] update --- .../yunkuaichong/BillingTemplateValidateRequestHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java index caa11e0cc..7279b79e9 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/BillingTemplateValidateRequestHandler.java @@ -60,7 +60,7 @@ public class BillingTemplateValidateRequestHandler extends AbstractYkcHandler { String billingTemplateCode = BytesUtil.binary(billingTemplateCodeByte, 16); // byte[] flag = Constants.oneByteArray; 0x00 桩计费模型与平台一致 0x01桩计费模型与平台不一致 - byte[] flag = Constants.oneByteArray; + byte[] flag = Constants.zeroByteArray; // 消息体 byte[] messageBody = Bytes.concat(pileSnByte, billingTemplateCodeByte, flag); From 2e01881a74f8d2504803b5bff52802a056866773 Mon Sep 17 00:00:00 2001 From: "YAS\\29473" <2947326429@qq.com> Date: Wed, 2 Jul 2025 09:45:03 +0800 Subject: [PATCH 05/17] update --- .../service/impl/WeiWangKuaiDianPlatformServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/WeiWangKuaiDianPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/WeiWangKuaiDianPlatformServiceImpl.java index 2a303be5c..6085178a3 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/WeiWangKuaiDianPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/WeiWangKuaiDianPlatformServiceImpl.java @@ -832,9 +832,9 @@ public class WeiWangKuaiDianPlatformServiceImpl implements ThirdPartyPlatformSer .startChargeSeqStat(Integer.parseInt(orderInfo.getOrderStatus())) // 订单状态 .connectorID(orderInfo.getPileConnectorCode()) // 枪口编码 .connectorStatus(info.getStatus()) // 枪口状态 - .currentA(info.getCurrent()) // 电流 - .voltageA(info.getVoltage()) // 电压 - .soc(new BigDecimal(info.getSOC())) + .currentA(current) // 电流 + .voltageA(voltage) // 电压 + .soc(new BigDecimal(soc)) .startTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, orderInfo.getChargeStartTime())) // 开始时间 .endTime(DateUtils.getDateTime()) // 本次采样时间 .totalPower(info.getChargingDegree()) // 累计充电量 From a951e079b718c991a2b27407bb7c77fafee4b567 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 10:12:56 +0800 Subject: [PATCH 06/17] update --- .../common/enums/ykc/PileChannelEntity.java | 6 ++++ .../com/jsowell/common/util/YKCUtils.java | 2 ++ .../yunkuaichong/NettyServerHandler.java | 9 ++++-- .../impl/YKCBusinessServiceImpl.java | 2 +- .../impl/YKCPushCommandServiceImpl.java | 32 +++++++++---------- 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/PileChannelEntity.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/PileChannelEntity.java index d51604c02..b0d7924bf 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/PileChannelEntity.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/PileChannelEntity.java @@ -114,6 +114,12 @@ public class PileChannelEntity { return null; } + // public static String getPileSnByCtx(ChannelHandlerContext ctx) { + // for (HashMap.Entry entry : manager.entrySet()) { + // + // } + // } + /** * 打印 */ diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java index c1515f446..f9df62675 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java @@ -213,6 +213,8 @@ public class YKCUtils { // 保存桩号和channel的关系 PileChannelEntity.checkChannel(pileSn, ctx); + + PileChannelEntity.checkChannelV2(pileSn, ctx); } /** diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java index ce1bd6964..a259fba02 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java @@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.net.InetSocketAddress; +import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -149,8 +150,10 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { // 响应客户端 ByteBuf buffer = ctx.alloc().buffer().writeBytes(response); this.channelWrite(channel.id(), buffer); + // 获取桩号 + String pileSn = PileChannelEntity.getPileSnByChannelId(ctx.channel().id().asLongText()); // 批量响应客户端 - // this.channelWriteBatch(ctx, buffer); + this.channelWriteBatch(pileSn, buffer); if (!CollectionUtils.containsAny(notPrintFrameTypeList, frameType)) { // 应答帧类型 byte[] responseFrameTypeBytes = YKCFrameTypeCode.PlatformAnswersRelation.getResponseFrameTypeBytes(frameTypeBytes); @@ -172,7 +175,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { * @param ctx * @param msg */ - private void channelWriteBatch(String pileSn, ChannelHandlerContext ctx, Object msg) { + private void channelWriteBatch(String pileSn, Object msg) { // 获取该桩下的所有channel List list = PileChannelEntity.pileMap.get(pileSn); if(CollectionUtils.isEmpty(list)) { @@ -304,7 +307,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { } log.error("【{}】发生了错误, pileSn:【{}】此连接被关闭, 此时连通数量: {}", channelId, pileSn, CHANNEL_MAP.size()); // 删除连接 - // PileChannelEntity.deleteChannel(pileSn, ctx); + PileChannelEntity.deleteChannel(pileSn, ctx); ctx.channel().close(); } } finally { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java index 6dc28ffec..c5be569bf 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java @@ -88,7 +88,7 @@ public class YKCBusinessServiceImpl implements YKCBusinessService { pileMsgRecordService.save(pileSn, pileSn, type, jsonMsg, ""); // 删除连接 - // PileChannelEntity.deleteChannel(pileSn, ctx); + PileChannelEntity.deleteChannel(pileSn, ctx); // 删除桩编号和channel的关系 // PileChannelEntity.removeByPileSn(pileSn); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java index 24aa11377..3787221f1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java @@ -126,14 +126,14 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { log.error("push发送命令失败, pileSn:{}", pileSn, cause); // 异步删除Map中的保存关系(带关闭连接) - // CompletableFuture.runAsync(() -> { - // try { - // // 删除Map中的保存关系 - // PileChannelEntity.deleteChannel(pileSn, ctx); - // } catch (Exception e) { - // log.error("异步删除、关闭连接 error", e); - // } - // }, executor); + CompletableFuture.runAsync(() -> { + try { + // 删除Map中的保存关系 + PileChannelEntity.deleteChannel(pileSn, ctx); + } catch (Exception e) { + log.error("异步删除、关闭连接 error", e); + } + }, executor); } }); @@ -231,14 +231,14 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { log.error("push发送命令失败, pileSn:{}", pileSn, cause); // 异步删除Map中的保存关系(带关闭连接) - // CompletableFuture.runAsync(() -> { - // try { - // // 删除Map中的保存关系 - // PileChannelEntity.deleteChannel(pileSn, ctx); - // } catch (Exception e) { - // log.error("异步删除、关闭连接 error", e); - // } - // }, executor); + CompletableFuture.runAsync(() -> { + try { + // 删除Map中的保存关系 + PileChannelEntity.deleteChannel(pileSn, ctx); + } catch (Exception e) { + log.error("异步删除、关闭连接 error", e); + } + }, executor); } }); From 883ebe7022833922d954f4737fd8225fd8384ab5 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 10:34:37 +0800 Subject: [PATCH 07/17] update --- .../jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java index 514244d2d..bce97a1b4 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java @@ -69,6 +69,8 @@ public abstract class AbstractYkcHandler implements InitializingBean { // 保存桩号和channel的关系 PileChannelEntity.checkChannel(pileSn, ctx); + + PileChannelEntity.checkChannelV2(pileSn, ctx); } /** From ba40605af78670b80987630ededea5f5bb32044b Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 11:54:57 +0800 Subject: [PATCH 08/17] update --- .../com/jsowell/common/util/YKCUtils.java | 2 +- .../yunkuaichong/AbstractYkcHandler.java | 2 +- .../yunkuaichong/NettyServerHandler.java | 2 +- .../impl/YKCBusinessServiceImpl.java | 2 +- .../impl/YKCPushCommandServiceImpl.java | 32 +++++++++---------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java index f9df62675..0f3b94334 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java @@ -214,7 +214,7 @@ public class YKCUtils { // 保存桩号和channel的关系 PileChannelEntity.checkChannel(pileSn, ctx); - PileChannelEntity.checkChannelV2(pileSn, ctx); + // PileChannelEntity.checkChannelV2(pileSn, ctx); } /** diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java index bce97a1b4..c949ad9a7 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/AbstractYkcHandler.java @@ -70,7 +70,7 @@ public abstract class AbstractYkcHandler implements InitializingBean { // 保存桩号和channel的关系 PileChannelEntity.checkChannel(pileSn, ctx); - PileChannelEntity.checkChannelV2(pileSn, ctx); + // PileChannelEntity.checkChannelV2(pileSn, ctx); } /** diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java index a259fba02..52ebf0297 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java @@ -307,7 +307,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { } log.error("【{}】发生了错误, pileSn:【{}】此连接被关闭, 此时连通数量: {}", channelId, pileSn, CHANNEL_MAP.size()); // 删除连接 - PileChannelEntity.deleteChannel(pileSn, ctx); + // PileChannelEntity.deleteChannel(pileSn, ctx); ctx.channel().close(); } } finally { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java index c5be569bf..6dc28ffec 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java @@ -88,7 +88,7 @@ public class YKCBusinessServiceImpl implements YKCBusinessService { pileMsgRecordService.save(pileSn, pileSn, type, jsonMsg, ""); // 删除连接 - PileChannelEntity.deleteChannel(pileSn, ctx); + // PileChannelEntity.deleteChannel(pileSn, ctx); // 删除桩编号和channel的关系 // PileChannelEntity.removeByPileSn(pileSn); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java index 3787221f1..24aa11377 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/YKCPushCommandServiceImpl.java @@ -126,14 +126,14 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { log.error("push发送命令失败, pileSn:{}", pileSn, cause); // 异步删除Map中的保存关系(带关闭连接) - CompletableFuture.runAsync(() -> { - try { - // 删除Map中的保存关系 - PileChannelEntity.deleteChannel(pileSn, ctx); - } catch (Exception e) { - log.error("异步删除、关闭连接 error", e); - } - }, executor); + // CompletableFuture.runAsync(() -> { + // try { + // // 删除Map中的保存关系 + // PileChannelEntity.deleteChannel(pileSn, ctx); + // } catch (Exception e) { + // log.error("异步删除、关闭连接 error", e); + // } + // }, executor); } }); @@ -231,14 +231,14 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { log.error("push发送命令失败, pileSn:{}", pileSn, cause); // 异步删除Map中的保存关系(带关闭连接) - CompletableFuture.runAsync(() -> { - try { - // 删除Map中的保存关系 - PileChannelEntity.deleteChannel(pileSn, ctx); - } catch (Exception e) { - log.error("异步删除、关闭连接 error", e); - } - }, executor); + // CompletableFuture.runAsync(() -> { + // try { + // // 删除Map中的保存关系 + // PileChannelEntity.deleteChannel(pileSn, ctx); + // } catch (Exception e) { + // log.error("异步删除、关闭连接 error", e); + // } + // }, executor); } }); From db90f94fe8326872a5740ce66ad95f1e6009ca70 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 13:00:20 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E6=89=93=E5=BC=80=E5=BF=83=E8=B7=B3?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsowell/netty/server/yunkuaichong/NettyServerHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java index 52ebf0297..72f0339bf 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/yunkuaichong/NettyServerHandler.java @@ -41,7 +41,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter { */ private static final ConcurrentHashMap CHANNEL_MAP = new ConcurrentHashMap<>(); - private final List notPrintFrameTypeList = Lists.newArrayList("0x03"); // "0x03" + private final List notPrintFrameTypeList = Lists.newArrayList(""); // "0x03" /** * 有客户端连接服务器会触发此函数 From 0a2f1bcfefff8bd8245f4795e057507b430e1f40 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 2 Jul 2025 13:21:13 +0800 Subject: [PATCH 10/17] =?UTF-8?q?update=20=E4=BF=AE=E6=94=B9=E7=BC=93?= =?UTF-8?q?=E5=86=B2=E5=8C=BA=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/netty/server/NettyServerManager.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index 6da634de2..fda52acae 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -57,10 +57,10 @@ public class NettyServerManager implements CommandLineRunner { .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 // .option(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.SO_KEEPALIVE, true) // 保持连接 - // .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 - .childOption(ChannelOption.SO_RCVBUF, 1024 * 1024) // 接收缓冲区 - // .childOption(ChannelOption.SO_SNDBUF, 64 * 1024) // 发送缓冲区 - .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024) // 发送缓冲区 + .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 + // .childOption(ChannelOption.SO_RCVBUF, 1024 * 1024) // 接收缓冲区 + .childOption(ChannelOption.SO_SNDBUF, 64 * 1024) // 发送缓冲区 + // .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024) // 发送缓冲区 .childOption(ChannelOption.TCP_NODELAY, true) // 禁用 Nagle 算法 .childOption(ChannelOption.WRITE_BUFFER_WATER_MARK, new WriteBufferWaterMark(32 * 1024, 64 * 1024)) // 写缓冲水位 .childOption(ChannelOption.SO_REUSEADDR, true) From ebcb66d220a6449d518efdc0db02a6169badf3d6 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 2 Jul 2025 13:33:58 +0800 Subject: [PATCH 11/17] =?UTF-8?q?update=20=E4=BF=AE=E6=94=B9=E7=BC=93?= =?UTF-8?q?=E5=86=B2=E5=8C=BA=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/jsowell/netty/server/NettyServerManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java index fda52acae..4192eb946 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/server/NettyServerManager.java @@ -55,9 +55,10 @@ public class NettyServerManager implements CommandLineRunner { // .option(ChannelOption.SO_BACKLOG, 128) // 默认128 .option(ChannelOption.SO_BACKLOG, 1024) .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) // 启用池化内存分配器 + .option(ChannelOption.SO_RCVBUF, 64 * 1024) // .option(ChannelOption.SO_REUSEADDR, true) .childOption(ChannelOption.SO_KEEPALIVE, true) // 保持连接 - .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 + // .childOption(ChannelOption.SO_RCVBUF, 64 * 1024) // 接收缓冲区 // .childOption(ChannelOption.SO_RCVBUF, 1024 * 1024) // 接收缓冲区 .childOption(ChannelOption.SO_SNDBUF, 64 * 1024) // 发送缓冲区 // .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024) // 发送缓冲区 From 5361a2759cf32b08264916f2d89f49ce063242d4 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Wed, 2 Jul 2025 14:09:10 +0800 Subject: [PATCH 12/17] =?UTF-8?q?update=20=E6=9F=A5=E8=AF=A2=E6=A1=A9?= =?UTF-8?q?=E4=BF=A1=E6=81=AFmapper=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/pile/PileBasicInfoMapper.xml | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml index 357de38fc..47c4d8298 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -40,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + select from pile_basic_info - where sn = #{pileSn,jdbcType=VARCHAR} + where del_flag = '0' + and sn = #{pileSn,jdbcType=VARCHAR} - + insert into pile_basic_info @@ -145,7 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from pile_basic_info where id in + delete from pile_basic_info where id in #{id} @@ -280,9 +281,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t1.del_flag = '0' and t1.id = #{id} - + - \ No newline at end of file + From dfbb25dbb5e3a323831be659edd9eca53d35f801 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 16:07:06 +0800 Subject: [PATCH 13/17] =?UTF-8?q?update=20pre=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=AD=A3=E5=BC=8F=E7=8E=AF=E5=A2=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-pre.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 90f0eed99..38898f3b7 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -8,8 +8,8 @@ spring: # redis 配置 redis: # 地址 -# host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com - host: 106.14.94.149 + host: r-uf6k0uet7mihr5z78f.redis.rds.aliyuncs.com +# host: 106.14.94.149 # 端口,默认为6379 port: 6379 # 数据库索引 @@ -38,12 +38,12 @@ spring: druid: # 主库数据源 master: -# url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: jsowell -# password: js@160829 - url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: jsowell_pre - password: Js@160829 + url: jdbc:mysql://rm-uf6ra51u33dc3798l.mysql.rds.aliyuncs.com:3306/jsowell_prd?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: jsowell + password: js@160829 +# url: jdbc:mysql://106.14.94.149:3306/jsowell_pre?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: jsowell_pre +# password: Js@160829 # 从库数据源 slave: # 从数据源开关/默认关闭 From 37ae4edc40ac4a63ddeefd3672160c52fa9f8615 Mon Sep 17 00:00:00 2001 From: Lemon Date: Wed, 2 Jul 2025 16:12:07 +0800 Subject: [PATCH 14/17] =?UTF-8?q?update=20pre=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=AD=A3=E5=BC=8F=E7=8E=AF=E5=A2=83=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jsowell-admin/src/main/resources/application-pre.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jsowell-admin/src/main/resources/application-pre.yml b/jsowell-admin/src/main/resources/application-pre.yml index 38898f3b7..690bbf530 100644 --- a/jsowell-admin/src/main/resources/application-pre.yml +++ b/jsowell-admin/src/main/resources/application-pre.yml @@ -15,10 +15,10 @@ spring: # 数据库索引 database: 0 # 账号 -# username: jsowell -# # 密码 -# password: js@160829 - password: js160829 + username: jsowell + # 密码 + password: js@160829 +# password: js160829 # 连接超时时间 timeout: 10s lettuce: From e5db467b5dd5fe09db16c67f1d72f3a3f9b7a6d3 Mon Sep 17 00:00:00 2001 From: Lemon Date: Thu, 3 Jul 2025 08:41:21 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E9=87=8D=E5=8F=91?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E8=AE=A2=E5=8D=95=E4=BF=A1=E6=81=AF=E5=88=B0?= =?UTF-8?q?mq?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniapp/customer/TempController.java | 13 ++++++++++ .../java/com/jsowell/service/TempService.java | 25 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java index 615aa880b..806a71c43 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java @@ -877,4 +877,17 @@ public class TempController extends BaseController { } return response; } + + @PostMapping("/retrySendOrderData2Mq") + public RestApiResponse retrySendOrderData2Mq(@RequestBody QueryOrderDTO dto) { + RestApiResponse response; + try { + tempService.sendOrderData2Mq(dto.getOrderCode()); + response = new RestApiResponse<>(); + } catch (Exception e) { + logger.error("重试分账接口error,", e); + response = new RestApiResponse<>(e); + } + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java index 64a1ef1a4..91ff8786b 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -1187,5 +1187,30 @@ public class TempService { logger.info("debugOrder结束, resultMap:{}", JSONObject.toJSONString(resultMap)); return resultMap; } + + public void sendOrderData2Mq(String orderCode) { + // 通过订单编号查询订单信息 + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + if (orderBasicInfo == null || orderDetail == null) { + return; + } + // 发送消息 + AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder() + .orderCode(orderBasicInfo.getOrderCode()) + .merchantId(orderBasicInfo.getMerchantId()) + .stationId(orderBasicInfo.getStationId()) + .orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额 + .orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额 + .orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额 + .orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额 + .orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额 + .orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额 + .orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额 + .orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额 + .build(); + + rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO); + } } From bc4c59360e13cf6f33e796303eace7289a63dd1b Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Thu, 3 Jul 2025 14:05:01 +0800 Subject: [PATCH 16/17] =?UTF-8?q?update=20=E7=AB=99=E7=82=B9=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E8=BF=94=E5=8F=82=E7=AE=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pile/PileStationInfoController.java | 6 ++-- .../pile/mapper/PileStationInfoMapper.java | 3 +- .../pile/service/PileStationInfoService.java | 10 +++--- .../impl/PileStationInfoServiceImpl.java | 3 +- .../DelayMerchantProgramLogic.java | 35 +++++++++++-------- .../jsowell/pile/vo/web/StationSelectVO.java | 28 +++++++++++++++ .../mapper/pile/PileStationInfoMapper.xml | 2 +- 7 files changed, 61 insertions(+), 26 deletions(-) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/vo/web/StationSelectVO.java diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileStationInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileStationInfoController.java index b2ff53216..474cef698 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileStationInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileStationInfoController.java @@ -7,7 +7,6 @@ import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.core.domain.AjaxResult; import com.jsowell.common.core.page.TableDataInfo; import com.jsowell.common.enums.BusinessType; -import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; @@ -16,7 +15,6 @@ import com.jsowell.common.util.poi.ExcelUtil; import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.ThirdpartyParkingConfig; import com.jsowell.pile.dto.FastCreateStationDTO; -import com.jsowell.pile.dto.PushStationInfoDTO; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.ThirdPartyStationRelationDTO; import com.jsowell.pile.dto.amap.EditAmapFlagDTO; @@ -27,6 +25,7 @@ import com.jsowell.pile.service.ThirdPartySettingInfoService; import com.jsowell.pile.service.ThirdPartyStationRelationService; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.web.PileStationVO; +import com.jsowell.pile.vo.web.StationSelectVO; import com.jsowell.service.PileService; import com.jsowell.thirdparty.amap.service.AMapService; import com.jsowell.thirdparty.common.CommonService; @@ -36,7 +35,6 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; -import java.util.stream.Collectors; /** * 充电站信息Controller @@ -89,7 +87,7 @@ public class PileStationInfoController extends BaseController { public TableDataInfo getStationSelectList(QueryStationDTO dto) { logger.info("dto:{}", JSON.toJSONString(dto)); startPage(); - List list = pileStationInfoService.getStationSelectList(dto); + List list = pileStationInfoService.getStationSelectList(dto); return getDataTable(list); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java index 52bcc3997..390b0a1bc 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileStationInfoMapper.java @@ -9,6 +9,7 @@ import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO; import com.jsowell.pile.vo.web.PileStationVO; +import com.jsowell.pile.vo.web.StationSelectVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -111,7 +112,7 @@ public interface PileStationInfoMapper { * @param dto * @return */ - List getStationSelectList(@Param("dto") QueryStationDTO dto); + List getStationSelectList(@Param("dto") QueryStationDTO dto); /** * 宁夏交投查询充电站信息 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java index a86adf2ad..d14a31e52 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java @@ -2,18 +2,20 @@ package com.jsowell.pile.service; import com.jsowell.common.core.page.PageResponse; import com.jsowell.pile.domain.PileStationInfo; -import com.jsowell.pile.domain.UserFrequentedStationInfo; -import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.FastCreateStationDTO; +import com.jsowell.pile.dto.QueryStationDTO; +import com.jsowell.pile.dto.QueryStationInfoDTO; import com.jsowell.pile.dto.amap.GetStationInfoDTO; import com.jsowell.pile.dto.business.StationBusinessAnalyzeInfoDTO; import com.jsowell.pile.dto.business.StationStatisticsInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; -import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO; +import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO; import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO; import com.jsowell.pile.vo.web.PileStationVO; +import com.jsowell.pile.vo.web.StationSelectVO; import java.util.List; @@ -155,7 +157,7 @@ public interface PileStationInfoService { /** * 查询充电站下拉列表 */ - List getStationSelectList(QueryStationDTO dto); + List getStationSelectList(QueryStationDTO dto); /** * 宁夏交投查询站点信息 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index 15f7d80d1..47cc2b637 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -37,6 +37,7 @@ import com.jsowell.pile.vo.uniapp.business.StationOrderQuantityInfoVO; import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO; import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.PileStationVO; +import com.jsowell.pile.vo.web.StationSelectVO; import com.jsowell.system.service.SysDeptService; import com.jsowell.system.service.SysUserService; import lombok.extern.slf4j.Slf4j; @@ -840,7 +841,7 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { * @return */ @Override - public List getStationSelectList(QueryStationDTO dto) { + public List getStationSelectList(QueryStationDTO dto) { AuthorizedDeptVO authorizedMap = UserUtils.getAuthorizedMap(); if (authorizedMap == null) { // 为空表示没有权限,返回空数组 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index dabefb71b..3ec6236ee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -556,21 +556,26 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { dto.setOrderDetail(orderDetail); transactionService.doUpdateOrder(dto); - // 组装after参数 - AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder() - .orderCode(orderBasicInfo.getOrderCode()) - .merchantId(orderBasicInfo.getMerchantId()) - .stationId(orderBasicInfo.getStationId()) - .orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额 - .orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额 - .orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额 - .orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额 - .orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额 - .orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额 - .orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额 - .orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额 - .build(); - rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO); + try { + // 组装after参数 + AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder() + .orderCode(orderBasicInfo.getOrderCode()) + .merchantId(orderBasicInfo.getMerchantId()) + .stationId(orderBasicInfo.getStationId()) + .orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额 + .orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额 + .orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额 + .orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额 + .orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额 + .orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额 + .orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额 + .orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额 + .build(); + // 发送到rabbitMQ + rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO); + } catch (Exception e) { + logger.error("【{}】-结算订单V2, 发送到rabbitMQ异常", this.getClass().getSimpleName(), e); + } // 将卡/vin状态解锁 if (!StringUtils.equals("0000000000000000", data.getLogicCard())) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/StationSelectVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/StationSelectVO.java new file mode 100644 index 000000000..8806d9088 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/StationSelectVO.java @@ -0,0 +1,28 @@ +package com.jsowell.pile.vo.web; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 站点管理列表反参 + * + * @author JS-ZZA + * @date 2022/9/1 13:28 + */ +@Builder +@Data +@NoArgsConstructor +@AllArgsConstructor +public class StationSelectVO { + /** + * 站点id + */ + private String id; + + /** + * 站点名称 + */ + private String stationName; +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml index 2988c1731..4d2e7ac5f 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml @@ -649,7 +649,7 @@ id = #{stationId,jdbcType=VARCHAR} - select t1.id, t1.station_name as stationName From 9b966b43aeb3dc75130791fd98a67946eb21ec19 Mon Sep 17 00:00:00 2001 From: Lemon Date: Fri, 4 Jul 2025 13:55:17 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E7=AC=AC=E4=B8=89=E6=96=B9=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/uniapp/customer/TempController.java | 19 +++++ .../java/com/jsowell/service/TempService.java | 41 ++++++++++ .../pile/mapper/OrderBasicInfoMapper.java | 9 +++ .../pile/service/OrderBasicInfoService.java | 4 + .../impl/OrderBasicInfoServiceImpl.java | 74 +++++++++++++++++++ .../mapper/pile/OrderBasicInfoMapper.xml | 11 +++ .../thirdparty/platform/dto/PushOrderDTO.java | 26 +++++++ 7 files changed, 184 insertions(+) create mode 100644 jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/PushOrderDTO.java diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java index 806a71c43..f8d840cda 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/TempController.java @@ -25,6 +25,7 @@ import com.jsowell.pile.vo.uniapp.customer.MemberBalanceVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.service.OrderService; import com.jsowell.service.TempService; +import com.jsowell.thirdparty.platform.dto.PushOrderDTO; import org.apache.commons.collections4.CollectionUtils; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; @@ -890,4 +891,22 @@ public class TempController extends BaseController { } return response; } + + /** + * 根据时间区间批量推送订单 + * @param dto + * @return + */ + @PostMapping("/pushOrderInfoBatch") + public RestApiResponse pushOrderInfoBatch(@RequestBody PushOrderDTO dto) { + RestApiResponse response = null; + try { + tempService.pushOrderInfoBatch(dto); + response = new RestApiResponse<>(); + } catch (Exception e) { + logger.error("青海平台推送订单信息 error", e); + } + logger.info("青海平台推送订单信息 result:{}", response); + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java index 91ff8786b..e6f79d192 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/TempService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/TempService.java @@ -22,6 +22,7 @@ import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.adapay.AdapayStatusEnum; import com.jsowell.common.enums.adapay.MerchantDelayModeEnum; +import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; @@ -34,7 +35,13 @@ import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; +import com.jsowell.pile.vo.ThirdPartySecretInfoVO; +import com.jsowell.pile.vo.base.StationInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; import com.jsowell.pile.vo.web.*; +import com.jsowell.thirdparty.common.CommonService; +import com.jsowell.thirdparty.platform.dto.PushOrderDTO; +import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -117,6 +124,15 @@ public class TempService { @Autowired private OrderUnsplitRecordService orderUnsplitRecordService; + @Autowired + private ThirdpartySecretInfoService thirdpartySecretInfoService; + + @Autowired + private ThirdPartyStationRelationService thirdPartyStationRelationService; + + @Autowired + private CommonService commonService; + /** * 计算订单耗电量 * 内蒙古站点 @@ -1212,5 +1228,30 @@ public class TempService { rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO); } + + /** + * 根据时间区间批量推送订单 + * @param dto + * @return + */ + public void pushOrderInfoBatch(PushOrderDTO dto) { + // 根据type查出对接的stationIds + List stationInfoVOS = thirdPartyStationRelationService.selectStationList(dto.getThirdPartyType()); + + List stationIds = stationInfoVOS.stream() + .map(StationInfoVO::getStationId) + .collect(Collectors.toList()); + + // 批量查询需要推送的订单 + List orderInfos = orderBasicInfoService.getOrderBasicInfoByTimeInterval(stationIds, dto.getStartTime(), dto.getEndTime()); + + if (CollectionUtils.isEmpty(orderInfos)) { + return; + } + orderInfos.forEach(orderBasicInfo -> { + // 推送第三方平台 + commonService.commonPushOrderInfoV2(orderBasicInfo); + }); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index ffe3dc643..09ae7ba91 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -405,4 +405,13 @@ public interface OrderBasicInfoMapper { List selectThirdPartyOrderList(@Param("dto") QueryStartChargeDTO dto); LocalDateTime queryOrderCreateTimeByStationId(String id); + + /** + * 根据参数查询订单基本信息 + * @param stationIds + * @param startTime + * @param endTime + * @return + */ + List getOrderBasicInfoByTimeInterval(@Param("stationIds") List stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index ae7f93b07..3f03c2afb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -231,6 +231,8 @@ public interface OrderBasicInfoService{ OrderSplitResult verifyOrderConfirmAmount(List paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException; + OrderSplitResult verifyOrderConfirmAmountWithCancelSplit(List paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException; + /** * 批量查询订单 * @param orderCodeList @@ -573,4 +575,6 @@ public interface OrderBasicInfoService{ * @return */ Map verifyMergeChargeOrder(VerifyMergeChargeOrderDTO dto) throws Exception; + + List getOrderBasicInfoByTimeInterval(List stationIds, String startTime, String endTime); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 89dfdc78d..fe14725b5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -2439,6 +2439,75 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return result; } + /** + * 校验订单分账金额(其他部分与上面方法一致,此方法仅加了撤销分账部分,只给临时接口用) + * + * @param paymentIds 支付id集合 + * @param orderCode 订单编号 + * @param settleAmount 结算金额 + */ + @Override + public OrderSplitResult verifyOrderConfirmAmountWithCancelSplit(List paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException { + // 分账金额 + BigDecimal totalConfirmAmt = BigDecimal.ZERO; + // 手续费 + BigDecimal feeAmt = BigDecimal.ZERO; + // 通过支付id查询分账情况 + for (String paymentId : paymentIds) { + QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); + dto.setPaymentId(paymentId); + dto.setWechatAppId(wechatAppId); + QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto); + if (response != null) { + List confirms = response.getPaymentConfirms(); + if (CollectionUtils.isNotEmpty(confirms)) { + for (PaymentConfirmInfo confirm : confirms) { + // 校验分账是否撤销 + if (queryConfirmReverseStatus(confirm.getId(), wechatAppId)) { + logger.info("支付确认id:" + confirm.getId() + "撤销了。。。"); + continue; + } + // 如果没有撤销,先撤销分账,再重新进行分账 + adapayService.createConfirmReverse(confirm.getId(), wechatAppId); + + JSONObject jsonObject = JSON.parseObject(confirm.getDescription()); + if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) { + // 订单号对的上,累计分账金额 + BigDecimal confirmAmt = new BigDecimal(confirm.getConfirmAmt()); + BigDecimal confirmedAmt = new BigDecimal(confirm.getConfirmedAmt()); + BigDecimal orderConfirmedAmt = confirmedAmt.compareTo(BigDecimal.ZERO) == 0 + ? confirmedAmt + : confirmAmt; + totalConfirmAmt = totalConfirmAmt.add(orderConfirmedAmt); + feeAmt = feeAmt.add(new BigDecimal(confirm.getFeeAmt())); + } + } + } + } + } + + OrderSplitResult result = new OrderSplitResult(); + result.setOrderCode(orderCode); + result.setSettleAmt(settleAmount.toString()); + result.setConfirmAmt(totalConfirmAmt.toString()); + if (totalConfirmAmt.compareTo(BigDecimal.ZERO) == 0) { + feeAmt = BigDecimal.ZERO; + } + result.setFeeAmt(feeAmt.toString()); + String status; + // 如果确认金额和结算金额相等,返回succeeded,其他情况返回PENDING + if (settleAmount.compareTo(totalConfirmAmt) == 0) { + // 返回succeeded 标识该笔订单已经完成了分账,不要再次执行分账 + status = AdapayStatusEnum.SUCCEEDED.getValue(); + } else { + status = AdapayStatusEnum.PENDING.getValue(); + } + result.setStatus(status); + logger.info("校验订单分账金额-orderCode:{}, 分账结果:{}", orderCode, JSON.toJSONString(result)); + return result; + } + + /** * 查询分账撤销状态 */ @@ -5240,5 +5309,10 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return map; } + + @Override + public List getOrderBasicInfoByTimeInterval(List stationIds, String startTime, String endTime) { + return orderBasicInfoMapper.getOrderBasicInfoByTimeInterval(stationIds, startTime, endTime); + } } diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index ba628b96c..4a677e0ee 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -3291,4 +3291,15 @@ LIMIT 1; + diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/PushOrderDTO.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/PushOrderDTO.java new file mode 100644 index 000000000..235406240 --- /dev/null +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/dto/PushOrderDTO.java @@ -0,0 +1,26 @@ +package com.jsowell.thirdparty.platform.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 推送订单DTO + * + * @author Lemon + * @Date 2025/7/4 13:31:28 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class PushOrderDTO { + private String thirdPartyType; + + private String orderCodeList; + + private String startTime; + + private String endTime; +}