diff --git a/bin/sh/app-prd.sh b/bin/sh/app-prd.sh new file mode 100644 index 000000000..79a9de8be --- /dev/null +++ b/bin/sh/app-prd.sh @@ -0,0 +1,92 @@ +#!/bin/bash +# 声明应用的名称和使用的端口号 +APP_NAME=jsowell-admin.jar +PORT=8080 # 假设应用绑定到这个端口 + +# 使用函数来显示脚本的使用方式,并退出脚本 +usage() { + echo "Usage: sh app.sh [start|stop|restart|status]" + exit 1 +} + +# 检查应用是否已经在运行 +is_exist(){ + # 使用 lsof 命令查找使用指定端口的进程ID,这里应该是 lsof 的拼写错误,应为 lsof 或 lsof 的替代品如 netstat、ss + pid=$(lsof -t -i :$PORT) + if [ -z "$pid" ]; then + # 如果 pid 为空,表示没有找到对应的进程,返回 1 + return 1 + else + # 如果找到了进程,返回 0 + return 0 + fi +} + +# 启动应用的函数 +start(){ + # 检查应用是否已经在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用已经在运行,则输出提示信息 + echo "${APP_NAME} is already running on port $PORT." + else + # 如果应用没有运行,则启动应用,并将输出重定向到 nobup.log 文件 + # 注意:nohup 应该是 nohup 的拼写错误 + nohup java -Xms12g -Xmx12g -XX:+UseG1GC -jar /opt/app/spring/jar/jsowell-admin.jar --spring.profiles.active=prd >/dev/null 2>&1 & + fi +} + +# 停止应用的函数 +stop(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则强制终止该进程 + kill -9 $pid + # 输出停止应用的提示信息 + echo "Stopped ${APP_NAME} running on port $PORT." + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is not running on port $PORT." + fi +} + +# 检查应用状态的函数 +status(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则输出应用的运行状态和进程ID + echo "${APP_NAME} is running on port $PORT. Pid is $pid" + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is NOT running on port $PORT." + fi +} + +# 重启应用的函数 +restart(){ + # 停止应用 + stop + # 启动应用 + start +} + +# 根据传入的参数执行相应的操作 +case "$1" in + "start") + start # 启动应用 + ;; + "stop") + stop # 停止应用 + ;; + "status") + status # 检查应用状态 + ;; + "restart") + restart # 重启应用 + ;; + *) + usage # 如果参数不正确,则显示使用方式 + ;; +esac \ No newline at end of file diff --git a/bin/sh/app-pre.sh b/bin/sh/app-pre.sh new file mode 100644 index 000000000..82c3afe98 --- /dev/null +++ b/bin/sh/app-pre.sh @@ -0,0 +1,92 @@ +#!/bin/bash +# 声明应用的名称和使用的端口号 +APP_NAME=jsowell-admin.jar +PORT=8080 # 假设应用绑定到这个端口 + +# 使用函数来显示脚本的使用方式,并退出脚本 +usage() { + echo "Usage: sh app.sh [start|stop|restart|status]" + exit 1 +} + +# 检查应用是否已经在运行 +is_exist(){ + # 使用 lsof 命令查找使用指定端口的进程ID,这里应该是 lsof 的拼写错误,应为 lsof 或 lsof 的替代品如 netstat、ss + pid=$(lsof -t -i :$PORT) + if [ -z "$pid" ]; then + # 如果 pid 为空,表示没有找到对应的进程,返回 1 + return 1 + else + # 如果找到了进程,返回 0 + return 0 + fi +} + +# 启动应用的函数 +start(){ + # 检查应用是否已经在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用已经在运行,则输出提示信息 + echo "${APP_NAME} is already running on port $PORT." + else + # 如果应用没有运行,则启动应用,并将输出重定向到 nobup.log 文件 + # 注意:nohup 应该是 nohup 的拼写错误 + nohup java -Xms512m -Xmx512m -XX:+UseG1GC -jar /opt/app/spring/jar/jsowell-admin.jar --spring.profiles.active=pre >/dev/null 2>&1 & + fi +} + +# 停止应用的函数 +stop(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则强制终止该进程 + kill -9 $pid + # 输出停止应用的提示信息 + echo "Stopped ${APP_NAME} running on port $PORT." + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is not running on port $PORT." + fi +} + +# 检查应用状态的函数 +status(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则输出应用的运行状态和进程ID + echo "${APP_NAME} is running on port $PORT. Pid is $pid" + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is NOT running on port $PORT." + fi +} + +# 重启应用的函数 +restart(){ + # 停止应用 + stop + # 启动应用 + start +} + +# 根据传入的参数执行相应的操作 +case "$1" in + "start") + start # 启动应用 + ;; + "stop") + stop # 停止应用 + ;; + "status") + status # 检查应用状态 + ;; + "restart") + restart # 重启应用 + ;; + *) + usage # 如果参数不正确,则显示使用方式 + ;; +esac \ No newline at end of file diff --git a/bin/sh/app-sit.sh b/bin/sh/app-sit.sh new file mode 100644 index 000000000..c5247bda5 --- /dev/null +++ b/bin/sh/app-sit.sh @@ -0,0 +1,92 @@ +#!/bin/bash +# 声明应用的名称和使用的端口号 +APP_NAME=jsowell-admin.jar +PORT=8080 # 假设应用绑定到这个端口 + +# 使用函数来显示脚本的使用方式,并退出脚本 +usage() { + echo "Usage: sh app.sh [start|stop|restart|status]" + exit 1 +} + +# 检查应用是否已经在运行 +is_exist(){ + # 使用 lsof 命令查找使用指定端口的进程ID,这里应该是 lsof 的拼写错误,应为 lsof 或 lsof 的替代品如 netstat、ss + pid=$(lsof -t -i :$PORT) + if [ -z "$pid" ]; then + # 如果 pid 为空,表示没有找到对应的进程,返回 1 + return 1 + else + # 如果找到了进程,返回 0 + return 0 + fi +} + +# 启动应用的函数 +start(){ + # 检查应用是否已经在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用已经在运行,则输出提示信息 + echo "${APP_NAME} is already running on port $PORT." + else + # 如果应用没有运行,则启动应用,并将输出重定向到 nobup.log 文件 + # 注意:nohup 应该是 nohup 的拼写错误 + nohup java -Xms512m -Xmx512m -XX:+UseG1GC -jar /opt/app/spring/jar/jsowell-admin.jar --spring.profiles.active=sit >/dev/null 2>&1 & + fi +} + +# 停止应用的函数 +stop(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则强制终止该进程 + kill -9 $pid + # 输出停止应用的提示信息 + echo "Stopped ${APP_NAME} running on port $PORT." + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is not running on port $PORT." + fi +} + +# 检查应用状态的函数 +status(){ + # 检查应用是否在运行 + is_exist + if [ $? -eq 0 ]; then + # 如果应用在运行,则输出应用的运行状态和进程ID + echo "${APP_NAME} is running on port $PORT. Pid is $pid" + else + # 如果应用没有运行,则输出提示信息 + echo "${APP_NAME} is NOT running on port $PORT." + fi +} + +# 重启应用的函数 +restart(){ + # 停止应用 + stop + # 启动应用 + start +} + +# 根据传入的参数执行相应的操作 +case "$1" in + "start") + start # 启动应用 + ;; + "stop") + stop # 停止应用 + ;; + "status") + status # 检查应用状态 + ;; + "restart") + restart # 重启应用 + ;; + *) + usage # 如果参数不正确,则显示使用方式 + ;; +esac \ No newline at end of file diff --git a/doc/运营小程序接口文档.md b/doc/运营小程序接口文档.md index 67814fdb0..35353936e 100644 --- a/doc/运营小程序接口文档.md +++ b/doc/运营小程序接口文档.md @@ -2,30 +2,46 @@ # 查询站点的数据统计 +```TEXT 接口地址: -请求方式: +请求方式:GET +``` -入参 +### 入参 -| 字段名 | 类型 | 是否必传 | 备注 | -| ------ | ---- | -------- | ---- | -| | | | | +| 字段名 | 类型 | 是否必传 | 备注 | +| ---------- | ------ | -------- | -------- | +| merchantId | String | N | 运营商id | +| startTime | String | N | 开始时间 | +| endTime | String | N | 结束时间 | -反参 +### 反参 -| 字段名 | 类型 | 是否必传 | 备注 | -| ------ | ---- | -------- | ------------------- | -| | | Y | 充电度数(度) | -| | | Y | 充电总额(元) | -| | | Y | 订单量(单) | -| | | Y | 充电枪可使用率(%) | -| | | Y | 充电中(设备数量) | -| | | Y | 空闲(设备数量) | -| | | Y | 占用(设备数量) | -| | | Y | 挂起(设备数量) | -| | | Y | 离线(设备数量) | -| | | Y | 故障(设备数量) | +| 字段名 | 类型 | 是否必传 | 备注 | +| ---------------------- | --------------------------- | -------- | ---------------- | +| stationStatisticsInfos | List | Y | 站点统计信息集合 | + +#### StationStatisticsInfo + +| 字段名 | 类型 | 是否必传 | 备注 | +| --------------------- | ---------- | -------- | ----------------------- | +| stationId | String | Y | 站点id | +| stationName | String | Y | 站点名称 | +| chargeDegree | BigDecimal | Y | 充电度数(度) | +| chargeAmount | BigDecimal | Y | 充电总金额(元) | +| orderQuantity | Integer | Y | 订单数量(单) | +| connectorAvailability | String | Y | ==充电枪可使用率(%)== | +| chargingConnectorNum | Integer | Y | 充电中(枪口数量) | +| freeConnectorNum | Integer | Y | 空闲(枪口数量) | +| occupiedConnectorNum | Integer | Y | 占用(枪口数量) | +| hangingConnectorNum | Integer | Y | 挂起(枪口数量) | +| offlineConnectorNum | Integer | Y | 离线(枪口数量) | +| faultConnectorNum | Integer | Y | 故障(枪口数量) | + + + +image-20240723100712169 # 站点经营分析统计图 @@ -223,3 +239,18 @@ | | | Y | 充电量(度) | | | | Y | 停止原因 | + + + + + + +1、预约充电结束时间不选择即为充满自停, + +2、充电中的数据下拉不刷新 + +3、预约充电显示预约状态(成功,预约中,失败) + +4、预约充电订单目前不显示实时充电数据 + +5、桩主需要能看到桩的实时状态 diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/PileBasicInfoController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessPileBasicInfoController.java similarity index 67% rename from jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/PileBasicInfoController.java rename to jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessPileBasicInfoController.java index 46ffaf59b..d2577a63e 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/PileBasicInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessPileBasicInfoController.java @@ -6,5 +6,6 @@ package com.jsowell.api.uniapp.business; * @author Lemon * @Date 2024/7/12 11:13:59 */ -public class PileBasicInfoController { +public class BusinessPileBasicInfoController { + } diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java new file mode 100644 index 000000000..1004783b0 --- /dev/null +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessStationInfoController.java @@ -0,0 +1,46 @@ +package com.jsowell.api.uniapp.business; + +import com.alibaba.fastjson2.JSONObject; +import com.google.common.collect.ImmutableMap; +import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.response.RestApiResponse; +import com.jsowell.pile.dto.StationStatisticsInfoDTO; +import com.jsowell.pile.service.PileStationInfoService; +import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 运营端小程序站点信息Controller + * + * @author Lemon + * @Date 2024/7/16 13:44:06 + */ +@RestController +@RequestMapping("/business/pile/station") +public class BusinessStationInfoController extends BaseController { + + @Autowired + private PileStationInfoService pileStationInfoService; + + /** + * 获取站点统计信息 + * @param dto + * @return + */ + @PostMapping("/getStationStatisticsInfos") + public RestApiResponse getStationStatisticsInfos(@RequestBody StationStatisticsInfoDTO dto) { + RestApiResponse response = null; + try { + List stationStatisticsInfos = pileStationInfoService.getStationStatisticsInfos(dto); + response = new RestApiResponse<>(ImmutableMap.of("stationStatisticsInfos", stationStatisticsInfos)); + } catch (Exception e) { + logger.error("获取站点统计信息 error", e); + response = new RestApiResponse<>(e); + } + logger.info("获取站点统计信息 params:{}, result:{}", JSONObject.toJSONString(dto), response); + return response; + } +} diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/AuthCardController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/AuthCardController.java index 826132741..7d9fd1e14 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/AuthCardController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/AuthCardController.java @@ -9,7 +9,7 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.PileAuthCardDTO; import com.jsowell.pile.service.PileAuthCardService; -import com.jsowell.pile.vo.uniapp.AuthCardVO; +import com.jsowell.pile.vo.uniapp.customer.AuthCardVO; import com.jsowell.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java index 3912069b2..fbde44880 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java @@ -17,8 +17,8 @@ import com.jsowell.pile.service.IThirdpartySnRelationService; import com.jsowell.pile.service.MemberGroupService; import com.jsowell.pile.service.PileBasicInfoService; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.GroundLockInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorVO; +import com.jsowell.pile.vo.uniapp.customer.GroundLockInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorVO; import com.jsowell.pile.vo.web.ThirdPartySnRelationVO; import com.jsowell.service.PileService; import com.jsowell.thirdparty.common.CommonService; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpXixiaoController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpXixiaoController.java index 2a30c1f8b..7106f6435 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpXixiaoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpXixiaoController.java @@ -10,8 +10,8 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.file.AliyunOssUploadUtils; import com.jsowell.common.util.file.FileUtils; import com.jsowell.pile.service.PileBasicInfoService; -import com.jsowell.pile.vo.uniapp.GroundLockInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorVO; +import com.jsowell.pile.vo.uniapp.customer.GroundLockInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorVO; import com.jsowell.service.PileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java index 566471cc6..ad11e1535 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java @@ -19,9 +19,9 @@ import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.MemberPlateNumberRelationService; import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.vo.base.MemberWalletVO; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.MemberWalletInfoVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberWalletInfoVO; import com.jsowell.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OccupyOrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OccupyOrderController.java index 73e78618a..cd913da96 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OccupyOrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OccupyOrderController.java @@ -11,7 +11,7 @@ import com.jsowell.common.util.StringUtils; import com.jsowell.pile.dto.QueryOccupyOrderDTO; import com.jsowell.pile.service.OrderPileOccupyService; import com.jsowell.pile.service.PileBillingTemplateService; -import com.jsowell.pile.vo.uniapp.OccupyOrderDetailVO; +import com.jsowell.pile.vo.uniapp.customer.OccupyOrderDetailVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OrderController.java index f0be54b3a..98443c8bb 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/OrderController.java @@ -13,9 +13,9 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.dto.*; import com.jsowell.pile.vo.base.StationInfoVO; -import com.jsowell.pile.vo.uniapp.OrderVO; -import com.jsowell.pile.vo.uniapp.UniAppOrderDetailVO; -import com.jsowell.pile.vo.uniapp.UniAppOrderVO; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.UniAppOrderDetailVO; +import com.jsowell.pile.vo.uniapp.customer.UniAppOrderVO; import com.jsowell.service.OrderService; import com.jsowell.wxpay.dto.WechatSendMsgDTO; import com.jsowell.wxpay.service.WxAppletRemoteService; @@ -50,7 +50,7 @@ public class OrderController extends BaseController { */ @PostMapping("/generateOrder") public RestApiResponse generateOrder(HttpServletRequest request, @RequestBody GenerateOrderDTO dto) { - logger.info("生成订单 param:{}", JSON.toJSONString(dto)); + // logger.info("生成订单 param:{}", JSON.toJSONString(dto)); RestApiResponse response; try { if ((StringUtils.isBlank(dto.getPileSn()) || StringUtils.isBlank(dto.getConnectorCode())) && StringUtils.isBlank(dto.getPileConnectorCode())) { @@ -80,7 +80,7 @@ public class OrderController extends BaseController { logger.error("生成订单 error, param:{}", JSON.toJSONString(dto), e); response = new RestApiResponse<>(ReturnCodeEnum.CODE_GENERATE_ORDER_ERROR); } - logger.info("生成订单 result:{}", JSON.toJSONString(response)); + logger.info("生成订单, param:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } @@ -137,7 +137,7 @@ public class OrderController extends BaseController { */ @PostMapping("/getOrderList") public RestApiResponse getOrderInfo(HttpServletRequest request, @RequestBody UniAppQueryOrderDTO dto) { - logger.info("查询订单信息 param:{}", JSON.toJSONString(dto)); + // logger.info("查询订单信息 param:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); @@ -154,7 +154,7 @@ public class OrderController extends BaseController { logger.error("查询订单信息 error", e); response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_ORDER_INFO_BY_MEMBER_ID_ERROR); } - logger.info("查询订单信息, result:{}", JSON.toJSONString(response)); + logger.info("查询订单信息, param:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } @@ -167,7 +167,7 @@ public class OrderController extends BaseController { */ @PostMapping("/getOrderDetail") public RestApiResponse getOrderDetail(HttpServletRequest request, @RequestBody UniAppQueryOrderDTO dto) { - logger.info("小程序获取订单详情 param:{}", JSON.toJSONString(dto)); + // logger.info("小程序获取订单详情 param:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); @@ -194,27 +194,27 @@ public class OrderController extends BaseController { * @param dto * @return */ - @PostMapping("/getOrderDetailV2") - public RestApiResponse getOrderDetailV2(HttpServletRequest request, @RequestBody UniAppQueryOrderDTO dto) { - logger.info("小程序获取订单详情V2 param:{}", JSON.toJSONString(dto)); - RestApiResponse response = null; - try { - String memberId = getMemberIdByAuthorization(request); - if (StringUtils.isBlank(memberId)) { - throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); - } - UniAppOrderDetailVO uniAppOrderDetail = orderService.getUniAppOrderDetailV2(dto.getOrderCode()); - response = new RestApiResponse<>(uniAppOrderDetail); - } catch (BusinessException e) { - logger.warn("小程序获取订单详情V2 warn", e); - response = new RestApiResponse<>(e.getCode(), e.getMessage()); - } catch (Exception e) { - logger.error("小程序获取订单详情V2 error", e); - response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_ORDER_DETAIL_ERROR); - } - logger.info("小程序获取订单详情V2, result:{}", JSON.toJSONString(response)); - return response; - } + // @PostMapping("/getOrderDetailV2") + // public RestApiResponse getOrderDetailV2(HttpServletRequest request, @RequestBody UniAppQueryOrderDTO dto) { + // logger.info("小程序获取订单详情V2 param:{}", JSON.toJSONString(dto)); + // RestApiResponse response = null; + // try { + // String memberId = getMemberIdByAuthorization(request); + // if (StringUtils.isBlank(memberId)) { + // throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + // } + // UniAppOrderDetailVO uniAppOrderDetail = orderService.getUniAppOrderDetailV2(dto.getOrderCode()); + // response = new RestApiResponse<>(uniAppOrderDetail); + // } catch (BusinessException e) { + // logger.warn("小程序获取订单详情V2 warn", e); + // response = new RestApiResponse<>(e.getCode(), e.getMessage()); + // } catch (Exception e) { + // logger.error("小程序获取订单详情V2 error", e); + // response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_ORDER_DETAIL_ERROR); + // } + // logger.info("小程序获取订单详情V2, result:{}", JSON.toJSONString(response)); + // return response; + // } /** * 根据订单号查询充电桩启动状态 @@ -268,7 +268,7 @@ public class OrderController extends BaseController { */ @PostMapping("/closeStartFailedOrder") public RestApiResponse closeStartFailedOrder(@RequestBody QueryOrderDTO dto) { - logger.info("关闭支付未启动的订单 param:{}", JSON.toJSONString(dto)); + // logger.info("关闭支付未启动的订单 param:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { orderService.closeStartFailedOrder(dto); @@ -277,7 +277,7 @@ public class OrderController extends BaseController { logger.error("关闭支付未启动的订单 error", e); response = new RestApiResponse<>("00300002", "关闭支付未启动的订单异常"); } - logger.info("关闭支付未启动的订单 result:{}", response); + logger.info("关闭支付未启动的订单, param:{}, result:{}", JSON.toJSONString(dto), response); return response; } @@ -305,6 +305,7 @@ public class OrderController extends BaseController { logger.error("查询未开发票订单 error", e); response = new RestApiResponse<>("00300003", "查询未开发票订单异常"); } + logger.info("查询未开发票订单 param:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } @@ -317,7 +318,7 @@ public class OrderController extends BaseController { */ @PostMapping("/queryUninvoicedStationList") public RestApiResponse queryUninvoicedStationList(HttpServletRequest request, @RequestBody QueryOrderDTO dto) { - logger.info("查询未开发票的站点list param:{}", JSON.toJSONString(dto)); + // logger.info("查询未开发票的站点list param:{}", JSON.toJSONString(dto)); RestApiResponse response; try { String memberId = getMemberIdByAuthorization(request); @@ -334,6 +335,7 @@ public class OrderController extends BaseController { logger.error("查询未开发票的站点list error", e); response = new RestApiResponse<>("00300004", "查询未开发票的站点list异常"); } + logger.info("查询未开发票的站点list param:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PayController.java index 7d28bec43..b1135c847 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PayController.java @@ -18,7 +18,7 @@ import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; -import com.jsowell.pile.vo.uniapp.PayModeVO; +import com.jsowell.pile.vo.uniapp.customer.PayModeVO; import com.jsowell.service.MemberService; import com.jsowell.service.OrderService; import com.jsowell.wxpay.response.WechatPayNotifyParameter; diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java index b226c8abf..1a35074de 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PersonPileController.java @@ -13,9 +13,11 @@ import com.jsowell.common.util.StringUtils; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.PileBasicInfoService; import com.jsowell.pile.service.PileMerchantInfoService; -import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; -import com.jsowell.pile.vo.uniapp.PersonPileRealTimeVO; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; +import com.jsowell.pile.service.PileReservationInfoService; +import com.jsowell.pile.vo.PileReservationInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileRealTimeVO; +import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; import com.jsowell.service.PileService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -43,6 +45,9 @@ public class PersonPileController extends BaseController { @Autowired private PileBasicInfoService pileBasicInfoService; + @Autowired + private PileReservationInfoService pileReservationInfoService; + /** * 用户绑定个人桩 @@ -117,7 +122,7 @@ public class PersonPileController extends BaseController { if (StringUtils.isNotBlank(appId)) { String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); if (StringUtils.isNotBlank(firstLevelMerchantId)) { - dto.setMerchantId(firstLevelMerchantId); + dto.setFirstLevelMerchantId(firstLevelMerchantId); } } String memberId = getMemberIdByAuthorization(request); @@ -136,6 +141,8 @@ public class PersonPileController extends BaseController { } + + /** * 通过memberId查个人桩列表 *

@@ -162,7 +169,6 @@ public class PersonPileController extends BaseController { /** * 获取枪口实时数据 - *

* http://localhost:8080/uniapp/personalPile/getConnectorRealTimeInfo * * @param request @@ -171,7 +177,7 @@ public class PersonPileController extends BaseController { */ @PostMapping("/getConnectorRealTimeInfo") public RestApiResponse getConnectorRealTimeInfo(HttpServletRequest request, @RequestBody QueryPersonPileDTO dto) { - logger.info("获取个人桩枪口实时数据 params:{}", JSON.toJSONString(dto)); + // logger.info("获取个人桩枪口实时数据 params:{}", JSON.toJSONString(dto)); RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); @@ -185,7 +191,7 @@ public class PersonPileController extends BaseController { logger.error("获取个人桩枪口实时数据 error", e); response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_PERSONAL_PILE_CONNECTOR_INFO_ERROR); } - logger.info("获取个人桩枪口实时数据 result:{}", response); + logger.info("获取个人桩枪口实时数据 params:{}, result:{}", JSON.toJSONString(dto), JSON.toJSONString(response)); return response; } @@ -248,7 +254,7 @@ public class PersonPileController extends BaseController { } /** - * 个人桩启动充电 + * 个人桩启动充电/个人桩一键启动 * http://localhost:8080/uniapp/personalPile/startPersonalPileCharging */ @PostMapping("/startPersonalPileCharging") @@ -268,13 +274,45 @@ public class PersonPileController extends BaseController { logger.error("个人桩启动充电error, params:{}", dto, e); } catch (Exception e) { logger.error("个人桩启动充电error, params:{}", dto, e); - response = new RestApiResponse<>(ReturnCodeEnum.CODE_CREATE_RESERVED_ERROR); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_START_PERSONAL_PILE_CHARGING_ERROR); } logger.info("个人桩启动充电params:{}, result:{}", dto, response); return response; } + /** + * 个人桩停止充电 + * http://localhost:8080/uniapp/personalPile/personPileStopCharging + * 管理员可以停自己启动的和别人启动的 + * 其他人员只能停止自己启动的 + */ + @PostMapping("/personPileStopCharging") + public RestApiResponse personPileStopCharging(HttpServletRequest request, @RequestBody PersonPileStopChargingDTO dto) { + RestApiResponse response = null; + try { + String appId = request.getHeader("appId"); + if (StringUtils.isNotBlank(appId)) { + String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByWxAppId(appId); + if (StringUtils.isNotBlank(firstLevelMerchantId)) { + dto.setFirstLevelMerchantId(firstLevelMerchantId); + } + } + String memberId = getMemberIdByAuthorization(request); + dto.setMemberId(memberId); + pileReservationInfoService.personPileStopCharging(dto); + response = new RestApiResponse<>(); + } catch (BusinessException e) { + logger.error("个人桩停止充电error", e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("个人桩停止充电error", e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_PERSON_PILE_STOP_CHARGING_ERROR); + } + return response; + } + + /** * 添加预约充电 * http://localhost:8080/uniapp/personalPile/createReserved @@ -286,7 +324,7 @@ public class PersonPileController extends BaseController { try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - int reservedId = pileService.createReserved(dto); + int reservedId = pileReservationInfoService.createReservation(dto); response = new RestApiResponse<>(ImmutableMap.of("reservedId", reservedId)); } catch (BusinessException e) { logger.error("添加预约充电error, params:{}", dto, e); @@ -310,7 +348,7 @@ public class PersonPileController extends BaseController { try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - PageResponse pageResponse = pileService.queryReservedList(dto); + PageResponse pageResponse = pileReservationInfoService.queryReservationList(dto); response = new RestApiResponse<>(pageResponse); } catch (BusinessException e) { logger.error("查询预约列表error, params:{}", dto, e); @@ -323,6 +361,30 @@ public class PersonPileController extends BaseController { return response; } + /** + * 修改预约充电 + * http://localhost:8080/uniapp/personalPile/updateReservation + */ + @PostMapping("/updateReservation") + public RestApiResponse updateReservation(HttpServletRequest request, @RequestBody PileReservationDTO dto) { + // logger.info("修改预约充电状态params:{}", dto); + RestApiResponse response = null; + try { + String memberId = getMemberIdByAuthorization(request); + dto.setMemberId(memberId); + pileReservationInfoService.updateReservation(dto); + response = new RestApiResponse<>(); + } catch (BusinessException e) { + logger.error("修改预约充电状态error, params:{}", dto, e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("修改预约充电状态error, params:{}", dto, e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_UPDATE_RESERVED_STATUS_ERROR); + } + logger.info("修改预约充电状态params:{}, result:{}", dto, response); + return response; + } + /** * 修改预约充电状态 * http://localhost:8080/uniapp/personalPile/updateReservedStatus @@ -334,7 +396,7 @@ public class PersonPileController extends BaseController { try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - pileService.updateReservedStatus(dto); + pileReservationInfoService.updateReservationStatus(dto); response = new RestApiResponse<>(); } catch (BusinessException e) { logger.error("修改预约充电状态error, params:{}", dto, e); @@ -358,7 +420,7 @@ public class PersonPileController extends BaseController { try { String memberId = getMemberIdByAuthorization(request); dto.setMemberId(memberId); - pileService.deleteReservation(dto); + pileReservationInfoService.deleteReservation(dto); response = new RestApiResponse<>(); } catch (BusinessException e) { logger.error("修改预约充电状态error, params:{}", dto, e); @@ -371,5 +433,27 @@ public class PersonPileController extends BaseController { return response; } - + /** + * 根据充电桩查询预约信息 + * http://localhost:8080/uniapp/personalPile/queryReservationInfo + */ + @PostMapping("/queryReservationInfo") + public RestApiResponse queryReservationInfo(HttpServletRequest request, @RequestBody PileReservationDTO dto) { + // logger.info("修改预约充电状态params:{}", dto); + RestApiResponse response = null; + try { + String memberId = getMemberIdByAuthorization(request); + dto.setMemberId(memberId); + PileReservationInfoVO vo = pileReservationInfoService.queryReservationInfo(dto); + response = new RestApiResponse<>(vo); + } catch (BusinessException e) { + logger.error("根据充电桩查询预约状态error, params:{}", dto, e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("根据充电桩查询预约状态error, params:{}", dto, e); + response = new RestApiResponse<>(ReturnCodeEnum.CODE_QUERY_RESERVATION_STATUS_ERROR); + } + logger.info("根据充电桩查询预约状态params:{}, result:{}", dto, response); + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PileController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PileController.java index 3c234ce06..68efa2b28 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PileController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/PileController.java @@ -12,7 +12,7 @@ import com.jsowell.pile.dto.QueryConnectorListDTO; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.RemoteGroundLockDTO; import com.jsowell.pile.service.*; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.ThirdPartySnRelationVO; import com.jsowell.web.controller.pile.PileConnectorInfoController; import com.jsowell.thirdparty.common.CommonService; 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 5028c16ed..4289206a5 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 @@ -20,7 +20,7 @@ import com.jsowell.pile.dto.SettleOrderReportDTO; import com.jsowell.pile.service.*; import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; -import com.jsowell.pile.vo.uniapp.MemberBalanceVO; +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; diff --git a/jsowell-admin/src/main/java/com/jsowell/service/CameraService.java b/jsowell-admin/src/main/java/com/jsowell/service/CameraService.java index 591ecb573..0dddb6e19 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/CameraService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/CameraService.java @@ -1,6 +1,5 @@ package com.jsowell.service; -import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.jsowell.common.constant.CacheConstants; @@ -23,8 +22,7 @@ import com.jsowell.pile.dto.camera.CameraIdentifyResultsDTO; import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.OrderPileOccupyService; import com.jsowell.pile.service.PileCameraInfoService; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.web.OccupyOrderVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -165,7 +163,7 @@ public class CameraService { .status(OccupyOrderStatusEnum.ORDER_HANG_UP.getCode()) // 2-订单挂起 .plateNumber(plateNumber) .build(); - List occupyList = orderPileOccupyService.getOrderPileOccupyList(occupy); + List occupyList = orderPileOccupyService.selectOrderPileOccupyList(occupy); // todo 如果有占桩订单,则先提醒“需支付占桩订单” if (CollectionUtils.isNotEmpty(occupyList)) { return "需支付占桩订单"; @@ -192,7 +190,7 @@ public class CameraService { OrderPileOccupy orderPileOccupy = OrderPileOccupy.builder() .plateNumber(plateNumber) .build(); - List orderPileOccupyList = orderPileOccupyService.getOrderPileOccupyList(orderPileOccupy); + List orderPileOccupyList = orderPileOccupyService.selectOrderPileOccupyList(orderPileOccupy); // TODO 如果有已挂起的占桩订单,则不予降锁,将“已存在有未支付的占桩订单”信息返回 if (CollectionUtils.isNotEmpty(orderPileOccupyList)) { return "已存在有未支付的占桩订单"; diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index 1a432bac3..a7fe95ed3 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -7,11 +7,7 @@ import com.alibaba.fastjson2.TypeReference; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.request.AlipaySystemOauthTokenRequest; -import com.alipay.api.request.AlipayUserInfoShareRequest; -import com.alipay.api.request.AlipayUserUserinfoShareRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; -import com.alipay.api.response.AlipayUserInfoShareResponse; -import com.alipay.api.response.AlipayUserUserinfoShareResponse; import com.alipay.easysdk.factory.Factory; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -49,10 +45,10 @@ import com.jsowell.pile.transaction.dto.MemberTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.vo.base.MemberWalletVO; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.MemberWalletInfoVO; -import com.jsowell.pile.vo.uniapp.MemberWalletLogVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberWalletInfoVO; +import com.jsowell.pile.vo.uniapp.customer.MemberWalletLogVO; import com.jsowell.wxpay.service.WxAppletRemoteService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.compress.utils.Lists; diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 7e47adc54..a7a2f25ff 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -27,7 +27,6 @@ import com.jsowell.common.enums.InvoiceRecordEnum; import com.jsowell.common.enums.MemberWalletEnum; import com.jsowell.common.enums.adapay.AdapayEventEnum; import com.jsowell.common.enums.adapay.AdapayPayChannelEnum; -import com.jsowell.common.enums.lianlian.PayChannelEnum; import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum; import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum; import com.jsowell.common.enums.ykc.*; @@ -45,8 +44,8 @@ import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.InvoiceRecordVO; -import com.jsowell.pile.vo.uniapp.*; +import com.jsowell.pile.vo.uniapp.customer.*; +import com.jsowell.pile.vo.uniapp.customer.InvoiceRecordVO; import com.jsowell.pile.vo.web.*; import com.jsowell.thirdparty.common.CommonService; import com.jsowell.wxpay.response.WechatPayNotifyParameter; @@ -59,6 +58,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.ParseException; import java.time.LocalDateTime; import java.util.*; @@ -557,12 +557,29 @@ public class OrderService { throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL); } + String pileSn = orderBasicInfo.getPileSn(); + String connectorCode = orderBasicInfo.getConnectorCode(); + + // 异步发送获取实时数据指令 + if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.IN_THE_CHARGING.getValue())) { + CompletableFuture.runAsync(() -> { + try { + pileRemoteService.getRealTimeMonitorData(pileSn, connectorCode); + } catch (Exception e) { + log.error("异步发送获取实时数据指令error", e); + } + }); + } + vo.setOrderCode(orderBasicInfo.getOrderCode()); - vo.setPileSn(orderBasicInfo.getPileSn()); - vo.setConnectorCode(orderBasicInfo.getConnectorCode()); - vo.setPileConnectorCode(orderBasicInfo.getPileSn() + orderBasicInfo.getConnectorCode()); + vo.setPileSn(pileSn); + vo.setConnectorCode(connectorCode); + vo.setPileConnectorCode(pileSn + connectorCode); String orderStatus = orderBasicInfo.getOrderStatus(); vo.setOrderStatus(orderStatus); + // 订单状态描述 + String orderStatusDescribe = orderBasicInfoService.transformOrderStatusDescribe(orderStatus, orderBasicInfo.getPayStatus()); + vo.setOrderStatusDescribe(orderStatusDescribe); if (Objects.nonNull(orderBasicInfo.getChargeStartTime())) { vo.setStartChargingTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, orderBasicInfo.getChargeStartTime())); } @@ -583,9 +600,6 @@ public class OrderService { if (StringUtils.isNotBlank(String.valueOf(stationInfo.getOccupyFee()))) { vo.setOccupyFee(stationInfo.getOccupyFee()); } - // 订单状态描述 - String orderStatusDescribe = orderBasicInfoService.transformOrderStatusDescribe(orderStatus, orderBasicInfo.getPayStatus()); - vo.setOrderStatusDescribe(orderStatusDescribe); // 获取充电桩枪口信息 PileConnectorDetailVO pileConnectorDetailVO = pileService.queryPileConnectorDetail(vo.getPileConnectorCode()); @@ -612,7 +626,7 @@ public class OrderService { String outputCurrent = monitorData.getOutputCurrent(); data.setOutputCurrent(outputCurrent); BigDecimal power = new BigDecimal(outputCurrent).multiply(new BigDecimal(outputVoltage)) - .divide(new BigDecimal("1000"), 2, BigDecimal.ROUND_HALF_UP); + .divide(new BigDecimal("1000"), 2, RoundingMode.HALF_UP); data.setPower(power.toString()); data.setSOC(monitorData.getSOC()); data.setBatteryMaxTemperature(monitorData.getBatteryMaxTemperature()); @@ -624,9 +638,9 @@ public class OrderService { vo.setOutputCurrent(data.getOutputCurrent()); vo.setOutputVoltage(data.getOutputVoltage()); vo.setSOC(data.getSOC()); - BigDecimal chargingAmount = new BigDecimal(monitorData.getChargingAmount()).setScale(4, BigDecimal.ROUND_HALF_UP); // 充电金额 + BigDecimal chargingAmount = new BigDecimal(monitorData.getChargingAmount()).setScale(4, RoundingMode.HALF_UP); // 充电金额 vo.setChargingAmount(chargingAmount.toString()); - BigDecimal chargingDegree = new BigDecimal(monitorData.getChargingDegree()).setScale(4, BigDecimal.ROUND_HALF_UP); // 充电度数 + BigDecimal chargingDegree = new BigDecimal(monitorData.getChargingDegree()).setScale(4, RoundingMode.HALF_UP); // 充电度数 vo.setChargingDegree(chargingDegree.toString()); vo.setSumChargingTime(monitorData.getSumChargingTime()); vo.setTimeRemaining(monitorData.getTimeRemaining()); @@ -661,19 +675,6 @@ public class OrderService { return vo; } - /** - * 小程序订单详情V2 - * - * @param orderCode - * @return - */ - public UniAppOrderDetailVO getUniAppOrderDetailV2(String orderCode) { - UniAppOrderDetailVO resultVO = new UniAppOrderDetailVO(); - - - return resultVO; - } - /** * 根据订单号查询充电桩启动状态 * diff --git a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java index e69278da0..96d879290 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/PileService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/PileService.java @@ -16,21 +16,18 @@ import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; -import com.jsowell.pile.service.programlogic.AbstractProgramLogic; -import com.jsowell.pile.service.programlogic.ProgramLogicFactory; import com.jsowell.pile.util.SnUtils; import com.jsowell.pile.service.*; import com.jsowell.pile.transaction.dto.PileTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; -import com.jsowell.pile.vo.PileReservedVO; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; -import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; -import com.jsowell.pile.vo.uniapp.PersonPileRealTimeVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; -import com.jsowell.pile.vo.uniapp.PileConnectorVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileRealTimeVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorVO; import com.jsowell.pile.vo.web.PileDetailVO; import com.jsowell.pile.vo.web.PileStationVO; import org.apache.commons.collections4.CollectionUtils; @@ -42,7 +39,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; -import java.sql.Time; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -341,7 +337,7 @@ public class PileService { */ public void adminIssuePile(PileMemberBindingDTO dto) { // 通过前端传的手机号查询是否有此用户 - MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(dto.getPhoneNumber(), dto.getMerchantId()); + MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(dto.getPhoneNumber(), dto.getFirstLevelMerchantId()); if (memberBasicInfo == null) { // 为空说明此用户未注册平台账号 throw new BusinessException(ReturnCodeEnum.CODE_USER_IS_NOT_REGISTER); @@ -379,7 +375,7 @@ public class PileService { PileMemberRelation info = new PileMemberRelation(); info.setPileSn(dto.getPileSn()); info.setMemberId(memberBasicInfo.getMemberId()); - info.setType("2"); + info.setType(Constants.TWO); pileMemberRelationService.insertPileMemberRelation(info); } } @@ -392,7 +388,7 @@ public class PileService { public PersonPileRealTimeVO getConnectorRealTimeInfo(QueryPersonPileDTO dto) { // 根据memberId查出该用户 正在充电、个人桩启动(白名单支付方式)的订单号 OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() - .memberId(dto.getMemberId()) + // .memberId(dto.getMemberId()) .orderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue()) .pileConnectorCode(dto.getPileConnectorCode()) .payMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue()) // 3- 白名单支付 @@ -401,7 +397,6 @@ public class PileService { if (basicInfo == null){ throw new BusinessException(ReturnCodeEnum.CODE_NO_CHARGING_ORDER_ERROR); } - String orderCode = basicInfo.getOrderCode(); // 根据订单号从redis中获取实时数据信息(默认时间倒叙排列,所以取第一条) List chargingRealTimeData = orderBasicInfoService.getChargingRealTimeData(basicInfo.getTransactionCode()); if (CollectionUtils.isEmpty(chargingRealTimeData)) { @@ -416,6 +411,8 @@ public class PileService { .instantCurrent(realTimeMonitorData.getOutputCurrent()) .instantVoltage(realTimeMonitorData.getOutputVoltage()) .instantPower(realTimeMonitorData.getOutputPower()) + .status(orderBasicInfo.getOrderStatus()) + .soc(realTimeMonitorData.getSOC()) .build(); return vo; } @@ -571,58 +568,6 @@ public class PileService { } } - public int createReserved(CreateReservedDTO dto) { - PileReservationInfo reservedInfo = new PileReservationInfo(); - reservedInfo.setMemberId(dto.getMemberId()); - reservedInfo.setPileSn(dto.getPileSn()); - reservedInfo.setPileConnectorCode(dto.getPileConnectorCode()); - reservedInfo.setStatus(Constants.ZERO); // 默认未生效 - // reservedInfo.setStartTime(DateUtils.parseDate(dto.getStartTime())); - reservedInfo.setStartTime(Time.valueOf(dto.getStartTime())); - // reservedInfo.setEndTime(DateUtils.parseDate(dto.getEndTime())); - reservedInfo.setEndTime(Time.valueOf(dto.getEndTime())); - if (StringUtils.isNotBlank(dto.getFreq())) { - reservedInfo.setReservationType("recurring"); - reservedInfo.setFreq(dto.getFreq()); - } else { - reservedInfo.setReservationType("single"); - reservedInfo.setFreq(null); - } - reservedInfo.setCreateBy(dto.getMemberId()); - pileReservationInfoService.insertSelective(reservedInfo); - return reservedInfo.getId(); - } - - public PageResponse queryReservedList(PileReservationDTO dto) { - int pageNo = dto.getPageNo() == null ? Constants.one : dto.getPageNo(); - int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); - PageHelper.startPage(pageNo, pageSize); - List list = pileReservationInfoService.getReservationsByMemberIdAndPileSn(dto.getMemberId(), dto.getPileSn()); - PageInfo pageInfo = new PageInfo<>(list); - - PageResponse pageResponse = new PageResponse(); - pageResponse.setPageNum(pageInfo.getPageNum()); - pageResponse.setPageSize(pageInfo.getPageSize()); - pageResponse.setPages(pageInfo.getPages()); - pageResponse.setTotal(pageInfo.getTotal()); - - List resultList = Lists.newArrayList(); - for (PileReservationInfo reservedInfo : pageInfo.getList()) { - resultList.add( - PileReservedVO.builder() - .reservedId(reservedInfo.getId() + "") - .pileSn(reservedInfo.getPileSn()) - .startTime(reservedInfo.getStartTime().toString()) - .endTime(reservedInfo.getEndTime().toString()) - .freq(reservedInfo.getFreq()) - .status(reservedInfo.getStatus()) - .build() - ); - } - pageResponse.setList(resultList); - return pageResponse; - } - public void deleteReservation(PileReservationDTO dto) { pileReservationInfoService.deleteReservation(dto); } @@ -656,4 +601,5 @@ public class PileService { // System.out.println(i); return String.valueOf(i); } + } diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberBasicInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberBasicInfoController.java index 5460dfb64..8c3eaf449 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberBasicInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberBasicInfoController.java @@ -24,11 +24,10 @@ import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.MemberPlateNumberRelationService; import com.jsowell.pile.service.MemberTransactionRecordService; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.base.LoginUserDetailVO; import com.jsowell.pile.vo.base.MerchantInfoVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.MemberWalletLogVO; -import com.jsowell.pile.vo.uniapp.MerchantVipVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberWalletLogVO; +import com.jsowell.pile.vo.uniapp.customer.MerchantVipVO; import com.jsowell.pile.vo.web.MemberTransactionVO; import com.jsowell.pile.vo.web.PlatformTesterVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderPileOccupyController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderPileOccupyController.java index 6b871ab15..437ea31b8 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderPileOccupyController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderPileOccupyController.java @@ -4,8 +4,8 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.jsowell.pile.dto.MakeOrderFreeDTO; +import com.jsowell.pile.dto.OrderPileOccupyDTO; import com.jsowell.pile.service.OrderPileOccupyService; -import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO; import com.jsowell.pile.vo.web.OccupyOrderVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -41,10 +41,10 @@ public class OrderPileOccupyController extends BaseController { */ @PreAuthorize("@ss.hasPermi('pile:occupy:list')") @GetMapping("/list") - public TableDataInfo list(OrderPileOccupy orderPileOccupy) { + public TableDataInfo list(OrderPileOccupyDTO dto) { startPage(); // List list = orderPileOccupyService.selectOrderPileOccupyList(orderPileOccupy); - List list = orderPileOccupyService.getOrderPileOccupyList(orderPileOccupy); + List list = orderPileOccupyService.getOrderPileOccupyListWithAuth(dto); return getDataTable(list); } @@ -111,4 +111,14 @@ public class OrderPileOccupyController extends BaseController { // { // return toAjax(orderPileOccupyService.deleteByPrimaryKey(ids)); // } + + /** + * 重新计算占桩金额 + * retryCalculateOccupyPileOrderAmount + */ + @PreAuthorize("@ss.hasPermi('pile:occupy:edit')") + @PostMapping("/retryCalculateOccupyPileOrderAmount") + public AjaxResult retryCalculateOccupyPileOrderAmount(@RequestBody MakeOrderFreeDTO dto) { + return toAjax(orderPileOccupyService.retryCalculateOccupyPileOrderAmount(dto.getOccupyCode())); + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBasicInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBasicInfoController.java index 03b6b27e6..b164a6fa2 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBasicInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBasicInfoController.java @@ -155,7 +155,7 @@ public class PileBasicInfoController extends BaseController { } /** - * 批量更新充电桩 + * 批量更新充电桩/批量修改充电桩 * 运营商 站点 */ @PostMapping("/batchUpdatePileList") @@ -194,6 +194,13 @@ public class PileBasicInfoController extends BaseController { pileFeedList = pileMsgRecordService.getPileFeedList(dto); } catch (Exception e) { logger.error("查询充电桩通讯日志error", e); + pileFeedList = PageResponse.builder() + .list(Lists.newArrayList()) + .pageNum(dto.getPageNum()) + .pageSize(dto.getPageSize()) + .total(0) + .pages(0) + .build(); } return AjaxResult.success(pileFeedList); } diff --git a/jsowell-admin/src/main/resources/application-dev.yml b/jsowell-admin/src/main/resources/application-dev.yml index 91cb329d5..9e16f48e4 100644 --- a/jsowell-admin/src/main/resources/application-dev.yml +++ b/jsowell-admin/src/main/resources/application-dev.yml @@ -9,7 +9,7 @@ spring: # redis 配置 redis: # 地址 - host: 192.168.2.2 + host: 192.168.2.46 # 端口,默认为6379 port: 6379 # 数据库索引 @@ -36,9 +36,9 @@ spring: druid: # 主库数据源 master: -# url: jdbc:mysql://192.168.2.2:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# url: jdbc:mysql://192.168.2.46:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: jsowell_dev - url: jdbc:mysql://192.168.2.2:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.2.46:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: jsowell_prd_copy password: 123456 # 从库数据源 diff --git a/jsowell-admin/src/main/resources/application-sit.yml b/jsowell-admin/src/main/resources/application-sit.yml index 9a04e490f..a679f1868 100644 --- a/jsowell-admin/src/main/resources/application-sit.yml +++ b/jsowell-admin/src/main/resources/application-sit.yml @@ -8,7 +8,7 @@ spring: # redis 配置 redis: # 地址 - host: 192.168.2.2 + host: 192.168.2.46 # 端口,默认为6379 port: 6379 # 数据库索引 @@ -35,9 +35,9 @@ spring: druid: # 主库数据源 master: -# url: jdbc:mysql://192.168.2.2:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# url: jdbc:mysql://192.168.2.46:3306/jsowell_dev?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: jsowell_dev - url: jdbc:mysql://192.168.2.2:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.2.46:3306/jsowell_prd_copy?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: jsowell_prd_copy password: 123456 # 从库数据源 diff --git a/jsowell-admin/src/main/resources/application.yml b/jsowell-admin/src/main/resources/application.yml index de9bc248c..a11aaecb3 100644 --- a/jsowell-admin/src/main/resources/application.yml +++ b/jsowell-admin/src/main/resources/application.yml @@ -106,6 +106,7 @@ weixin: sendMsg: startChargingTmpId: BGgZe98QHr0I1S1GrtGps0y3uhvURtQNkbMAzI2D8g8 stopChargingTmpId: UyBPbADlZfsCj89rh_xvfR2ZP1iwtmPcMFA0sUOJwog + startupResultTmpId: BGgZe98QHr0I1S1GrtGps-Av8-Y6WoD2Ny8DZWvdhoQ #Sim卡信息 xunzhong: diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index f5e788914..71a3f4076 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -63,10 +63,10 @@ import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.SnUtils; import com.jsowell.pile.vo.base.MemberWalletVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; -import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.MemberPlateNumberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; import com.jsowell.service.MemberService; import com.jsowell.service.OrderService; @@ -260,6 +260,17 @@ public class SpringBootTestController { @Autowired private PileReservationInfoService pileReservationInfoService; + @Test + public void personPileStopChargingTest() { + String memberId = "84085683"; + String pileConnectorCode = "8823000000141001"; + PersonPileStopChargingDTO dto = PersonPileStopChargingDTO.builder() + .memberId(memberId) + .pileConnectorCode(pileConnectorCode) + .build(); + pileReservationInfoService.personPileStopCharging(dto); + } + @Test public void selectMemberPlateNumberRelationTest() { String memberId = "25950857"; @@ -936,10 +947,17 @@ public class SpringBootTestController { // 需要重新分账的订单信息(针对未分账的订单) public JSONArray getPaymentList() { String jsonArrayString = "[" + - "{\"orderCode\":\"C44529020684\", \"settleAmount\":\"15.67\", \"paymentId\":\"002212024050317243010632400358265659392\"}" + - "{\"orderCode\":\"C63381134165\", \"settleAmount\":\"39.65\", \"paymentId\":\"002212024052518295510640389353916465152\"}" + - "{\"orderCode\":\"C44778282947\", \"settleAmount\":\"8.38\", \"paymentId\":\"002212023101608315910559788773415297024\"}" + - "{\"orderCode\":\"C44778282947\", \"settleAmount\":\"8.38\", \"paymentId\":\"002212023101608315910559788773415297024\"}" + + "{\"orderCode\":\"C67926008811\", \"settleAmount\":\"14.91\", \"paymentId\":\"002212024020312191210599708616768860160\"}" + + "{\"orderCode\":\"C42430351162\", \"settleAmount\":\"29.91\", \"paymentId\":\"002212024020417400510600151759191855104\"}" + + "{\"orderCode\":\"C46840673835\", \"settleAmount\":\"49.91\", \"paymentId\":\"002212024020508232410600374051907993600\"}" + + "{\"orderCode\":\"C80418255104\", \"settleAmount\":\"49.91\", \"paymentId\":\"002212024020519172410600538637863464960\"}" + + "{\"orderCode\":\"C27663220132\", \"settleAmount\":\"49.92\", \"paymentId\":\"002212024020615260710600842821125234688\"}" + + "{\"orderCode\":\"C46848081446\", \"settleAmount\":\"24.36\", \"paymentId\":\"002212024020708224510601098662578515968\"}" + + "{\"orderCode\":\"C61630340544\", \"settleAmount\":\"49.91\", \"paymentId\":\"002212024020813363810601540042416410624\"}" + + "{\"orderCode\":\"C80011863345\", \"settleAmount\":\"14.91\", \"paymentId\":\"002212024021416374510603759951855538176\"}" + + "{\"orderCode\":\"C25198228680\", \"settleAmount\":\"4.91\", \"paymentId\":\"002212024021513502010604080206798815232\"}" + + "{\"orderCode\":\"C29771066410\", \"settleAmount\":\"49.92\", \"paymentId\":\"002212024021719245910604889199513939968\"}" + + "{\"orderCode\":\"C29391457129\", \"settleAmount\":\"9.90\", \"paymentId\":\"002212024022016543010605938491023716352\"}" + "]"; return JSONArray.parseArray(jsonArrayString); } @@ -953,7 +971,7 @@ public class SpringBootTestController { // TODO 获取默认结算账户,如需分给对应商户就填写正确的汇付会员id // AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.getDefault(); AdapayMemberAccount adapayMemberAccount = new AdapayMemberAccount(); - adapayMemberAccount.setAdapayMemberId("ACM23489463"); + adapayMemberAccount.setAdapayMemberId("ACM21943395"); for (int i = 0; i < paymentList.size(); i++) { JSONObject jsonObject = (JSONObject) paymentList.get(i); BigDecimal confirmAmt = jsonObject.getBigDecimal("settleAmount"); // 确认金额就是结算金额 @@ -1132,902 +1150,122 @@ public class SpringBootTestController { private List getPaymentIdList1() { List list = Lists.newArrayList(); - list.add("002212024043018112310631324989830565888"); - list.add("002212024043019002610631337336032174080"); - list.add("002212024043021035710631368417672151040"); - list.add("002212024043021230110631373218474573824"); - list.add("002212024043021305910631375223113998336"); - list.add("002212024043021402410631377591256563712"); - list.add("002212024043022005310631382746325123072"); - list.add("002212024043022082310631384634188455936"); - list.add("002212024043022111010631385334689894400"); - list.add("002212024043022125710631385783424430080"); - list.add("002212024043023364910631406889031012352"); - list.add("002212024050100555210631426784438468608"); - list.add("002212024050101564310631442096641081344"); - list.add("002212024050109513110631561583485607936"); - list.add("002212024050112190310631598711951347712"); - list.add("002212024050112193910631598863063289856"); - list.add("002212024050116145010631658047457914880"); - list.add("002212024050116381510631663941580558336"); - list.add("002212024050117261310631676011171102720"); - list.add("002212024050118082310631686625478639616"); - list.add("002212024050119163710631703795541143552"); - list.add("002212024050120142010631718319982743552"); - list.add("002212024050121123810631732992296861696"); - list.add("002212024050121190010631734593200664576"); - list.add("002212024050121395610631739863741218816"); - list.add("002212024050122151310631748742705299456"); - list.add("002212024050122190110631749697821020160"); - list.add("002212024050201233710631796154388787200"); - list.add("002212024050210121710631929198479224832"); - list.add("002212024050211275210631948218580688896"); - list.add("002212024050211345610631949997461180416"); - list.add("002212024050212045410631957538310795264"); - list.add("002212024050216401010632026811084804096"); - list.add("002212024050219303410632069693445677056"); - list.add("002212024050221070210632093971698348032"); - list.add("002212024050221294510632099687985299456"); - list.add("002212024050221313510632100149706813440"); - list.add("002212024050221503210632104919943057408"); - list.add("002212024050222073410632109206990041088"); - list.add("002212024050222123210632110455720312832"); - list.add("002212024050223115310632125389015003136"); - list.add("002212024050223534410632135924106735616"); - list.add("002212024050302061810632169283891560448"); - list.add("002212024050302072110632169550497955840"); - list.add("002212024050302415410632178245208326144"); - list.add("002212024050312071010632320496773603328"); - list.add("002212024050313432710632344729483972608"); - list.add("002212024050314473210632360852854390784"); - list.add("002212024050316154610632383057880256512"); - list.add("002212024050317243010632400358265659392"); - list.add("002212024050317470810632406053448794112"); - list.add("002212024050318272710632416199975546880"); - list.add("002212024050318275010632416293608984576"); - list.add("002212024050319033210632425277456105472"); - list.add("002212024050319314610632432386620755968"); - list.add("002212024050319414010632434873963094016"); - list.add("002212024050320373710632448956266516480"); - list.add("002212024050321075110632456566520229888"); - list.add("002212024050321211410632459931930566656"); - list.add("002212024050321213210632460006643376128"); - list.add("002212024050323312510632492696384372736"); - list.add("002212024050400200810632504953702948864"); - list.add("002212024050403191310632550020869328896"); - list.add("002212024050413471410632708069460885504"); - list.add("002212024050414214210632716743376449536"); - list.add("002212024050416193910632746424515403776"); - list.add("002212024050416490310632753822120263680"); - list.add("002212024050416592210632756418746486784"); - list.add("002212024050417175710632761097847648256"); - list.add("002212024050417541510632770230666211328"); - list.add("002212024050418181310632776261999329280"); - list.add("002212024050419441110632797897335046144"); - list.add("002212024050419493610632799259694223360"); - list.add("002212024050421154710632820948601737216"); - list.add("002212024050421215810632822506197004288"); - list.add("002212024050421315810632825023175761920"); - list.add("002212024050421373710632826444136550400"); - list.add("002212024050422203810632837270660923392"); - list.add("002212024050423153310632851089944977408"); - list.add("002212024050423253310632853606979407872"); - list.add("002212024050500491810632874684050923520"); - list.add("002212024050502260910632899054019194880"); - list.add("002212024050510141610633016861190995968"); - list.add("002212024050511083110633030514432622592"); - list.add("002212024050511285110633035632103231488"); - list.add("002212024050512580610633058089286045696"); - list.add("002212024050513184810633063298911457280"); - list.add("002212024050513375610633068113898582016"); - list.add("002212024050514561510633087824426250240"); - list.add("002212024050517411110633129329901801472"); - list.add("002212024050519042110633150262651727872"); - list.add("002212024050519171210633153492810022912"); - list.add("002212024050520324910633172525882097664"); - list.add("002212024050521110110633182135436259328"); - list.add("002212024050521295510633186892345597952"); - list.add("002212024050521343710633188078005858304"); - list.add("002212024050522111810633197308627619840"); - list.add("002212024050522163210633198623946874880"); - list.add("002212024050523255910633216103881990144"); - list.add("002212024050600044010633225835969843200"); - list.add("002212024050600413310633235121563308032"); - list.add("002212024050600574510633239197708009472"); - list.add("002212024050602042310633255966548492288"); - list.add("002212024050610174310633380116189081600"); - list.add("002212024050611404710633401021852626944"); - list.add("002212024050612180110633410389482094592"); - list.add("002212024050612215910633411388790079488"); - list.add("002212024050617145610633485113948450816"); - list.add("002212024050617592210633496294620635136"); - list.add("002212024050618413810633506932037992448"); - list.add("002212024050618441610633507595954372608"); - list.add("002212024050618452610633507890003259392"); - list.add("002212024050619070210633513324855398400"); - list.add("002212024050619085110633513779423780864"); - list.add("002212024050619115510633514552592248832"); - list.add("002212024050619141710633515148804173824"); - list.add("002212024050619402010633521702214385664"); - list.add("002212024050620283910633533862569549824"); - list.add("002212024050620563510633540892392669184"); - list.add("002212024050621041010633542802911068160"); - list.add("002212024050622063810633558523614158848"); - list.add("002212024050622134710633560320352141312"); - list.add("002212024050622163310633561016875040768"); - list.add("002212024050622210810633562170247692288"); - list.add("002212024050700214210633592513776656384"); - list.add("002212024050701014410633602585344942080"); - list.add("002212024050701060110633603664052457472"); - list.add("002212024050711570310633767504186675200"); - list.add("002212024050712283510633775436918112256"); - list.add("002212024050713220710633788911921213440"); - list.add("002212024050715025010633814254922690560"); - list.add("002212024050718152410633862716628385792"); - list.add("002212024050718262610633865496176594944"); - list.add("002212024050718562510633873040333152256"); - list.add("002212024050719034110633874870468161536"); - list.add("002212024050719051310633875253998579712"); - list.add("002212024050719144710633877663755554816"); - list.add("002212024050719215410633879454685421568"); - list.add("002212024050719585410633888766323142656"); - list.add("002212024050720202310633894172544294912"); - list.add("002212024050802105510633982383785484288"); - list.add("002212024050802530910633993014453022720"); - list.add("002212024050810364610634109688287150080"); - list.add("002212024050813165210634149978856820736"); - list.add("002212024050814172610634165217385615360"); - list.add("002212024050814185910634165608915505152"); - list.add("002212024050816394910634201053066448896"); - list.add("002212024050816402610634201205059637248"); - list.add("002212024050817332010634214518833111040"); - list.add("002212024050817343410634214827848458240"); - list.add("002212024050817401010634216239643684864"); - list.add("002212024050817541310634219776404570112"); - list.add("002212024050818261110634227819848646656"); - list.add("002212024050818342810634229903568314368"); - list.add("002212024050818413510634231695948976128"); - list.add("002212024050819054510634237774701965312"); - list.add("002212024050819060710634237869035962368"); - list.add("002212024050819284510634243565804756992"); - list.add("002212024050819544810634250120373014528"); - list.add("002212024050820591810634266351047643136"); - list.add("002212024050821213710634271970180272128"); - list.add("002212024050821260010634273071914881024"); - list.add("002212024050822453110634293081292951552"); - list.add("002212024050823071610634298555054755840"); - list.add("002212024050823180410634301276052361216"); - list.add("002212024050823281310634303826645823488"); - list.add("002212024050900244710634318065068220416"); - list.add("002212024050902263210634348703960608768"); - list.add("002212024050908253710634439069299814400"); - list.add("002212024050910042110634463918403944448"); - list.add("002212024050911570910634492304546353152"); - list.add("002212024050914130310634526503970783232"); - list.add("002212024050915351010634547167421218816"); - list.add("002212024050915412810634548754596573184"); - list.add("002212024050916305810634561211611287552"); - list.add("002212024050917432110634579427283144704"); - list.add("002212024050918240510634589676605116416"); - list.add("002212024050918304610634591362385096704"); - list.add("002212024050918314910634591626735460352"); - list.add("002212024050918341210634592225761619968"); - list.add("002212024050919141910634602320656506880"); - list.add("002212024050919262310634605356662493184"); - list.add("002212024050920163310634617980360933376"); - list.add("002212024050920564210634628085824950272"); - list.add("002212024050921025810634629662570536960"); - list.add("002212024050921442610634640100335988736"); - list.add("002212024050923352410634668025982660608"); - list.add("002212024051003105610634722264415027200"); - list.add("002212024051013243510634876695873150976"); - list.add("002212024051015001510634900771555348480"); - list.add("002212024051018041010634947054739935232"); - list.add("002212024051018392810634955936848363520"); - list.add("002212024051018494510634958527208857600"); - list.add("002212024051019101910634963702788845568"); - list.add("002212024051019175610634965618213347328"); - list.add("002212024051019284910634968355786522624"); - list.add("002212024051019462010634972766938148864"); - list.add("002212024051020100410634978737210068992"); - list.add("002212024051020360510634985286108921856"); - list.add("002212024051020460110634987786758348800"); - list.add("002212024051023450110635032833252151296"); - list.add("002212024051023515610635034573236813824"); - list.add("002212024051102510010635079635871485952"); - list.add("002212024051112035410635218779569364992"); - list.add("002212024051112234910635223789487325184"); - list.add("002212024051112565910635232134962823168"); - list.add("002212024051114090410635250279269085184"); - list.add("002212024051116405910635288508762775552"); - list.add("002212024051117392010635303193458176000"); - list.add("002212024051117392710635303221834092544"); - list.add("002212024051118062410635310004772769792"); - list.add("002212024051118093710635310814188089344"); - list.add("002212024051118182210635313017281490944"); - list.add("002212024051118474010635320388932677632"); - list.add("002212024051119010110635323748307517440"); - list.add("002212024051119355210635332519585071104"); - list.add("002212024051120101610635341174348791808"); - list.add("002212024051120433110635349543726415872"); - list.add("002212024051121135110635357177799843840"); - list.add("002212024051121440210635364773455962112"); - list.add("002212024051122255910635375332370386944"); - list.add("002212024051122450610635380142090563584"); - list.add("002212024051210125610635553241452851200"); - list.add("002212024051210240510635556044862300160"); - list.add("002212024051211350010635573891182202880"); - list.add("002212024051212350710635589021471432704"); - list.add("002212024051212524510635593458303614976"); - list.add("002212024051213515910635608365324656640"); - list.add("002212024051213580410635609896170786816"); - list.add("002212024051213585010635610091466334208"); - list.add("002212024051216042810635641705114181632"); - list.add("002212024051216451310635651962559217664"); - list.add("002212024051217003810635655842823483392"); - list.add("002212024051218261910635677405813735424"); - list.add("002212024051218335010635679295864639488"); - list.add("002212024051219431510635696766083465216"); - list.add("002212024051219492810635698329485115392"); - list.add("002212024051220241010635707061549572096"); - list.add("002212024051220294310635708458271698944"); - list.add("002212024051220483310635713197804720128"); - list.add("002212024051221035410635717061037064192"); - list.add("002212024051221044710635717283834298368"); - list.add("002212024051221093810635718502717927424"); - list.add("002212024051221362710635725253777371136"); - list.add("002212024051221415210635726617612980224"); - list.add("002212024051223223710635751972546621440"); - list.add("002212024051223235210635752286223671296"); - list.add("002212024051300091510635763705009950720"); - list.add("002212024051301194310635781440261140480"); - list.add("002212024051312012210635942917038321664"); - list.add("002212024051314491510635985165327200256"); - list.add("002212024051317492110636030490036686848"); - list.add("002212024051318033010636034050730926080"); - list.add("002212024051318085810636035425441488896"); - list.add("002212024051318193110636038082438578176"); - list.add("002212024051318282210636040307239358464"); - list.add("002212024051318321010636041265365819392"); - list.add("002212024051318354710636042173725609984"); - list.add("002212024051319243410636054449779740672"); - list.add("002212024051319314310636056249295982592"); - list.add("002212024051320472410636075295044874240"); - list.add("002212024051321282610636085622743711744"); - list.add("002212024051322522710636106764881829888"); - list.add("002212024051323224310636114383465693184"); - list.add("002212024051401542110636152542163542016"); - list.add("002212024051411091510636292186676416512"); - list.add("002212024051414443210636346364786204672"); - list.add("002212024051414510710636348024971419648"); - list.add("002212024051417161410636384542022512640"); - list.add("002212024051417413410636390916517343232"); - list.add("002212024051418202210636400680914984960"); - list.add("002212024051418423910636406291358621696"); - list.add("002212024051418561210636409701818761216"); - list.add("002212024051419055210636412134401216512"); - list.add("002212024051419155810636414673872551936"); - list.add("002212024051419555610636424733535215616"); - list.add("002212024051420020010636426257679953920"); - list.add("002212024051420410810636436106005286912"); - list.add("002212024051421220410636446408754282496"); - list.add("002212024051421412310636451268228718592"); - list.add("002212024051422101110636458519020683264"); - list.add("002212024051500092210636488510603214848"); - list.add("002212024051500155610636490164587114496"); - list.add("002212024051501581410636515909745319936"); - list.add("002212024051508180010636611480052129792"); - list.add("002212024051511552010636666171949543424"); - list.add("002212024051512421210636677966578507776"); - list.add("002212024051515591910636727575826059264"); - list.add("002212024051518033910636758864609656833"); - list.add("002212024051518334910636766455300321280"); - list.add("002212024051518344210636766675961548800"); - list.add("002212024051518452110636769358835277824"); - list.add("002212024051518554110636771959643738112"); - list.add("002212024051519072210636774896817000448"); - list.add("002212024051519345510636781832790724608"); - list.add("002212024051519521010636786170780307456"); - list.add("002212024051520045510636789383330172928"); - list.add("002212024051521154710636807215506477056"); - list.add("002212024051521411810636813638372777984"); - list.add("002212024051522085510636820588257513472"); - list.add("002212024051523005010636833653856649216"); - list.add("002212024051523164210636837645020786688"); - list.add("002212024051600355910636857595633504256"); - list.add("002212024051601055410636865126402973696"); - list.add("002212024051611251710637020999640289280"); - list.add("002212024051613431910637055735263252480"); - list.add("002212024051614340110637068496550662144"); - list.add("002212024051615185110637079776639176704"); - list.add("002212024051615241910637081153550798848"); - list.add("002212024051615290410637082349153980416"); - list.add("002212024051617402710637115412177129472"); - list.add("002212024051617463510637116956434219008"); - list.add("002212024051617523810637118477021929473"); - list.add("002212024051618060110637121848978837504"); - list.add("002212024051618213710637125774361456640"); - list.add("002212024051618293510637127776744411136"); - list.add("002212024051618582710637135043843985408"); - list.add("002212024051620043210637151673637855232"); - list.add("002212024051620440210637161613820874752"); - list.add("002212024051621053910637167055186808832"); - list.add("002212024051621201610637170731393409024"); - list.add("002212024051621204610637170859204841472"); - list.add("002212024051621435610637176687159595008"); - list.add("002212024051622445210637192022625538048"); - list.add("002212024051623543510637209566863671296"); - list.add("002212024051700231310637216772490956800"); - list.add("002212024051701330510637234355477135360"); - list.add("002212024051714213410637427748827525120"); - list.add("002212024051714575110637436880934690816"); - list.add("002212024051718234110637488679633350656"); - list.add("002212024051718345110637491492878249984"); - list.add("002212024051718405010637492998047105024"); - list.add("002212024051718405710637493026242408448"); - list.add("002212024051719122210637500934191558656"); - list.add("002212024051719224810637503559191031808"); - list.add("002212024051719404510637508073681301504"); - list.add("002212024051720394910637522939224621056"); - list.add("002212024051721012210637528361750573056"); - list.add("002212024051721334110637536497319526400"); - list.add("002212024051721351210637536876035817472"); - list.add("002212024051723305610637566004730814464"); - list.add("002212024051723384010637567947406536704"); - list.add("002212024051800104710637576030505385984"); - list.add("002212024051804343710637642425875517440"); - list.add("002212024051807512510637691955573407744"); - list.add("002212024051810025410637725041519308800"); - list.add("002212024051812274710637761502457180160"); - list.add("002212024051813512210637782536765894656"); - list.add("002212024051816333610637823366838378496"); - list.add("002212024051818191310637849943775686656"); - list.add("002212024051818474210637857111851741184"); - list.add("002212024051819514210637873219349057536"); - list.add("002212024051820195710637880326874951680"); - list.add("002212024051820442710637886493369495552"); - list.add("002212024051820511010637888185779048448"); - list.add("002212024051821233410637896338357841920"); - list.add("002212024051821310010637898210528296960"); - list.add("002212024051821384410637900155900735488"); - list.add("002212024051823301810637928229633568768"); - list.add("002212024051823471310637932490649526272"); - list.add("002212024051823583510637935349289381888"); - list.add("002212024051900324710637943956640497664"); - list.add("002212024051901223310637956480751394816"); - list.add("002212024051901434010637961792305295360"); - list.add("002212024051908534810638070042186444800"); - list.add("002212024051909110510638074391202164736"); - list.add("002212024051910220310638092247880155136"); - list.add("002212024051913062410638133608688087040"); - list.add("002212024051914243010638153265296920576"); - list.add("002212024051916014710638177748041822208"); - list.add("002212024051916380010638186861697941504"); - list.add("002212024051916473310638189265253117952"); - list.add("002212024051917370010638201710251327488"); - list.add("002212024051917573510638206887311572992"); - list.add("002212024051918034810638208452334145536"); - list.add("002212024051918513110638220463191490560"); - list.add("002212024051918513410638220475464921088"); - list.add("002212024051919193410638227521867419648"); - list.add("002212024051920082410638239810385301504"); - list.add("002212024051921224210638258506205540352"); - list.add("002212024051921522810638265999373692928"); - list.add("002212024051921561110638266933482942464"); - list.add("002212024051923434010638293985118982144"); - list.add("002212024051923583710638297745058934784"); - list.add("002212024052000023710638298753347956736"); - list.add("002212024052000350310638306914740424704"); - list.add("002212024052009295410638441513661739008"); - list.add("002212024052010395910638459152374509568"); - list.add("002212024052012091110638481596937691136"); - list.add("002212024052012114710638482250908758016"); - list.add("002212024052016173910638544128993640448"); - list.add("002212024052016205410638544943821078528"); - list.add("002212024052016391110638549548109590528"); - list.add("002212024052017465910638566608788852736"); - list.add("002212024052018305010638577645677207552"); - list.add("002212024052018452910638581329465749504"); - list.add("002212024052019493410638597458114457600"); - list.add("002212024052019494310638597495903940608"); - list.add("002212024052019541110638598618402127872"); - list.add("002212024052020053310638601478271643648"); - list.add("002212024052020093110638602480346181632"); - list.add("002212024052020363910638609305646645248"); - list.add("002212024052020580410638614696162816000"); - list.add("002212024052021414710638625696770031616"); - list.add("002212024052022143310638633944575356928"); - list.add("002212024052022540710638643900676378624"); - list.add("002212024052023012910638645753926410240"); - list.add("002212024052023063510638647037726363648"); - list.add("002212024052101514210638688591886135296"); - list.add("002212024052102482210638702851313614848"); - list.add("002212024052109463010638808080072073216"); - list.add("002212024052111310210638834384029429760"); - list.add("002212024052111494210638839082504908800"); - list.add("002212024052112372710638851101086810112"); - list.add("002212024052115210010638892259763793920"); - list.add("002212024052115521410638900117358850048"); - list.add("002212024052116413510638912539323400192"); - list.add("002212024052118205410638937533553012736"); - list.add("002212024052118230710638938090345926656"); - list.add("002212024052118310110638940079452540928"); - list.add("002212024052118441610638943413191032832"); - list.add("002212024052118561710638946435939414016"); - list.add("002212024052118592410638947221626204160"); - list.add("002212024052119093010638949764176789504"); - list.add("002212024052119531610638960776527147008"); - list.add("002212024052119540710638960991243730944"); - list.add("002212024052120294610638969962212605952"); - list.add("002212024052121003310638977707817906176"); - list.add("002212024052121105810638980332102332416"); - list.add("002212024052122521510639005817547190272"); - list.add("002212024052123231010639013600189984768"); - list.add("002212024052123340510639016345031192576"); - list.add("002212024052200001410639022926672527360"); - list.add("002212024052200160410639026912002240512"); - list.add("002212024052201200010639043000430833664"); - list.add("002212024052210402710639184044417314816"); - list.add("002212024052212445510639215367360655360"); - list.add("002212024052217132010639282917262028800"); - list.add("002212024052217445010639290844809981952"); - list.add("002212024052218063010639296296892542976"); - list.add("002212024052218154210639298610751057920"); - list.add("002212024052218274310639301635115974656"); - list.add("002212024052218503610639307393467658240"); - list.add("002212024052218572410639309105399377920"); - list.add("002212024052219062210639311361612517376"); - list.add("002212024052219081210639311823813238784"); - list.add("002212024052219271310639316608681488384"); - list.add("002212024052219415510639320308406767616"); - list.add("002212024052221030010639340712080486400"); - list.add("002212024052221053010639341342659051520"); - list.add("002212024052221283610639347156902703104"); - list.add("002212024052221541610639353617282215936"); - list.add("002212024052222075410639357045141098496"); - list.add("002212024052222112310639357923119955968"); - list.add("002212024052222202610639360201800269824"); - list.add("002212024052222494910639367593069887488"); - list.add("002212024052223022010639370745487486976"); - list.add("002212024052223150510639373952158224384"); - list.add("002212024052223302310639377804064526336"); - list.add("002212024052223331710639378534060240896"); - list.add("002212024052312395110639576478608060416"); - list.add("002212024052313180310639586091978293248"); - list.add("002212024052314185110639601394513833984"); - list.add("002212024052315063810639613417021304832"); - list.add("002212024052315560210639625848828129280"); - list.add("002212024052316223710639632540005494784"); - list.add("002212024052317590210639656803389911040"); - list.add("002212024052318101010639659606966775808"); - list.add("002212024052318244610639663281071816704"); - list.add("002212024052318364510639666297571831808"); - list.add("002212024052319025510639672881111089152"); - list.add("002212024052319055910639673653578412032"); - list.add("002212024052319260410639678706244673536"); - list.add("002212024052321405210639712632353918976"); - list.add("002212024052323085410639734785623150592"); - list.add("002212024052323254610639739028991094784"); - list.add("002212024052401094910639765216491532288"); - list.add("002212024052401155010639766728842194944"); - list.add("002212024052411353810639922708458565632"); - list.add("002212024052412190510639933640580890624"); - list.add("002212024052413105310639946677096067072"); - list.add("002212024052416242310639995374876332032"); - list.add("002212024052417440310640015421829910528"); - list.add("002212024052418420510640030027263492096"); - list.add("002212024052419051010640035837305815040"); - list.add("002212024052419520610640047646782353408"); - list.add("002212024052420045910640050888439455744"); - list.add("002212024052420255610640056161993068544"); - list.add("002212024052420330310640057953969541120"); - list.add("002212024052420380410640059213395283968"); - list.add("002212024052420424510640060391637893120"); - list.add("002212024052421362310640073892609015808"); - list.add("002212024052421423910640075469052014592"); - list.add("002212024052422364510640089082365108224"); - list.add("002212024052422405910640090149112995840"); - list.add("002212024052423062410640096543868076032"); - list.add("002212024052423333810640103396406140928"); - list.add("002212024052500065110640111757081546752"); - list.add("002212024052501061810640126715827453952"); - list.add("002212024052502085210640142463731892224"); - list.add("002212024052503325110640163596476309504"); - list.add("002212024052507111210640218547004862464"); - list.add("002212024052508575910640245420086751232"); - list.add("002212024052511061110640277681974382592"); - list.add("002212024052512493910640303722588553216"); - list.add("002212024052512524310640304495188021248"); - list.add("002212024052513052710640307699478388736"); - list.add("002212024052513121410640309406330097664"); - list.add("002212024052513411910640316723898191872"); - list.add("002212024052515122210640339637215109120"); - list.add("002212024052515523710640349766601875456"); - list.add("002212024052517240510640372784232030208"); - list.add("002212024052517281010640373813960732672"); - list.add("002212024052518045610640383066092965888"); - list.add("002212024052518083010640383963792826368"); - list.add("002212024052518105710640384577744367616"); - list.add("002212024052518295510640389353916465152"); - list.add("002212024052518570610640396195268956160"); - list.add("002212024052519123810640400102167355392"); - list.add("002212024052519525310640410230835920896"); - list.add("002212024052522193410640447144601604096"); - list.add("002212024052522213610640447656563990528"); - list.add("002212024052522335510640450755378700288"); - list.add("002212024052600270910640479251163471872"); - list.add("002212024052601071710640489351803146240"); - list.add("002212024052603413510640528183376252928"); - list.add("002212024052604185110640537561013436416"); - list.add("002212024052604541310640546460817031168"); - list.add("002212024052608584210640607987523633152"); - list.add("002212024052609465310640620113133080576"); - list.add("002212024052610104910640626136103010304"); - list.add("002212024052610365710640632716088991744"); - list.add("002212024052611551210640652406221119488"); - list.add("002212024052612243010640659780141158400"); - list.add("002212024052614552810640697772581830656"); - list.add("002212024052616164710640718238285844480"); - list.add("002212024052616393810640723986623533056"); - list.add("002212024052616431610640724899572236288"); - list.add("002212024052617041710640730189583245312"); - list.add("002212024052617055210640730588757319680"); - list.add("002212024052618121210640747280405757952"); - list.add("002212024052618513810640757206609182720"); - list.add("002212024052618525610640757533429620736"); - list.add("002212024052618595810640759303547543552"); - list.add("002212024052619033310640760202974093312"); - list.add("002212024052619053410640760711095799808"); - list.add("002212024052619531110640772696042356736"); - list.add("002212024052620401210640784526541266944"); - list.add("002212024052621474010640801504633131008"); - list.add("002212024052621504410640802277971476480"); - list.add("002212024052621532610640802957428727808"); - list.add("002212024052622004910640804816911036416"); - list.add("002212024052700093910640837237465571328"); - list.add("002212024052700102410640837425556299776"); - list.add("002212024052708273810640962557188337664"); - list.add("002212024052710101510640988381051895808"); - list.add("002212024052712354410641024993289064448"); - list.add("002212024052712430910641026860149784576"); - list.add("002212024052714050110641047466063794176"); - list.add("002212024052717484610641103772497608704"); - list.add("002212024052718251810641112966796615680"); - list.add("002212024052718344410641115339836977152"); - list.add("002212024052718415110641117129592029184"); - list.add("002212024052718441110641117719363715072"); - list.add("002212024052718573410641121088452005888"); - list.add("002212024052719094110641124134654611456"); - list.add("002212024052719202110641126818882097152"); - list.add("002212024052719343210641130389065850880"); - list.add("002212024052720072710641138672747397120"); - list.add("002212024052722160510641171045482512384"); - list.add("002212024052722161110641171072126509056"); - list.add("002212024052722422010641177649357504512"); - list.add("002212024052723140810641185652054519808"); - list.add("002212024052723411010641192456769343488"); - list.add("002212024052800445410641208495057104896"); - list.add("002212024052812014310641378822007709696"); - list.add("002212024052812065410641380128689262592"); - list.add("002212024052817320810641461974408458240"); - list.add("002212024052817480410641465983407505408"); - list.add("002212024052818350310641477808075005952"); - list.add("002212024052818554510641483016985923584"); - list.add("002212024052819131010641487399594377216"); - list.add("002212024052819151610641487930871025664"); - list.add("002212024052819253310641490518100250624"); - list.add("002212024052819301810641491710871560192"); - list.add("002212024052819552310641498024760729600"); - list.add("002212024052821465510641526092010721280"); - list.add("002212024052821480610641526392294490112"); - list.add("002212024052821490310641526628583837696"); - list.add("002212024052822081610641531464850210816"); - list.add("002212024052822213810641534830741573632"); - list.add("002212024052822454910641540914918678528"); - list.add("002212024052823344910641553247676416000"); - list.add("002212024052823422410641555155823726592"); - list.add("002212024052900193510641564513321390080"); - list.add("002212024052900403010641569775665123328"); - list.add("002212024052901412310641585100208865280"); - list.add("002212024052913255810641762411144122368"); - list.add("002212024052916333110641809609151856640"); - list.add("002212024052917131510641819612138516480"); - list.add("002212024052917523410641829505509433344"); - list.add("002212024052918020110641831882572505088"); - list.add("002212024052918323410641839569103708160"); - list.add("002212024052918334710641839875261542400"); - list.add("002212024052918475110641843416680742912"); - list.add("002212024052920125310641864817807429632"); - list.add("002212024052921355810641885725264564224"); - list.add("002212024052921471010641888544789970944"); - list.add("002212024052921500610641889280507011072"); - list.add("002212024052922054210641893205857091584"); - list.add("002212024052922104110641894462678339584"); - list.add("002212024052922123610641894945913683968"); - list.add("002212024052922215610641897293401251840"); - list.add("002212024052922503910641904520267943936"); - list.add("002212024052922531010641905153305858048"); - list.add("002212024052923373910641916349713334272"); - list.add("002212024052923530710641920240082194432"); - list.add("002212024053000291410641929329194782720"); - list.add("002212024053004065310641984103257866240"); - list.add("002212024053008564410642057044157386752"); - list.add("002212024053012082610642105289063907328"); - list.add("002212024053012434510642114174968684544"); - list.add("002212024053014424810642144137180635136"); - list.add("002212024053016443010642174761172942848"); - list.add("002212024053018432710642204698525253632"); - list.add("002212024053019081610642210940880236544"); - list.add("002212024053019215610642214382977105920"); - list.add("002212024053019274510642215844769280000"); - list.add("002212024053021055210642240536005165056"); - list.add("002212024053021055210642240536936300544"); - list.add("002212024053021131810642242407645667328"); - list.add("002212024053021231310642244903307427840"); - list.add("002212024053023113310642272167870410752"); - list.add("002212024053023170210642273545724440576"); - list.add("002212024053023430110642280086702080000"); - list.add("002212024053100041110642285412860149760"); - list.add("002212024053107143010642393706322300928"); - list.add("002212024053111560710642464577909002240"); - list.add("002212024053112145910642469323146739712"); - list.add("002212024053112454110642477050264522752"); - list.add("002212024053115172610642515237973090304"); - list.add("002212024053116254010642532409659699200"); - list.add("002212024053118102510642558771585953792"); - list.add("002212024053118291410642563507174039552"); - list.add("002212024053119492410642583680556568576"); - list.add("002212024053120084110642588534245376000"); - list.add("002212024053120090610642588641829273600"); - list.add("002212024013008060410598195363803480064"); - list.add("002212024013008130010598197109908156416"); - list.add("002212024013019392410598369846177918976"); - list.add("002212024013108410410598566558256963584"); - list.add("002212024013108505610598569040739135488"); - list.add("002212024013110011810598586751293992960"); - list.add("002212024013112032710598617491298971648"); - list.add("002212024020108052910598919992595804160"); - list.add("002212024020108304410598926348483653632"); - list.add("002212024020108363910598927835231076352"); - list.add("002212024020111390410598973743414730752"); - list.add("002212024020114322110599017350088626176"); - list.add("002212024020114474410599021222320615424"); - list.add("002212024020115092510599026678041018368"); - list.add("002212024020119590210599099564427669504"); - list.add("002212024020207054910599267366398578688"); - list.add("002212024020208262510599287646486110208"); - list.add("002212024020214265010599378351836442624"); - list.add("002212024020215343210599395386694881280"); - list.add("002212024020307373210599637734226214912"); - list.add("002212024020316072110599766035400572928"); - list.add("002212024020322230010599860568206397440"); - list.add("002212024020408093410600008184035123200"); - list.add("002212024020409244810600027116138618880"); - list.add("002212024020508184010600372861536260096"); - list.add("002212024020514283510600465955553648640"); - list.add("002212024020517003910600504221174415360"); - list.add("002212024020521230310600570256004050944"); - list.add("002212024020608155210600734545404710912"); - list.add("002212024020608382510600740220346396672"); - list.add("002212024020608451110600741920730718208"); - list.add("002212024020609124110600748841333379072"); - list.add("002212024020614411210600831517739819008"); - list.add("002212024020708312310601100837498085376"); - list.add("002212024020714333610601191990266511360"); - list.add("002212024020808475610601467388114333696"); - list.add("002212024020810053710601486939065114624"); - list.add("002212024020811101310601503195798601728"); - list.add("002212024020813113610601533745412943872"); - list.add("002212024020908390010601827531082936320"); - list.add("002212024020910022910601848539790401536"); - list.add("002212024020910361810601857048976125952"); - list.add("002212024020914165310601912561811931136"); - list.add("002212024020914461510601919951398666240"); - list.add("002212024020918534910601982251957444608"); - list.add("002212024021120334410602732175872696320"); - list.add("002212024021122380810602763479644069888"); - list.add("002212024021214122510602998599363010560"); - list.add("002212024021315415910603383530189070336"); - list.add("002212024021400083110603511002905235456"); - list.add("002212024021416051710603751779179274240"); - list.add("002212024021423023410603856791162929152"); - list.add("002212024021511412210604047750442496000"); - list.add("002212024021514072810604084516702027776"); - list.add("002212024021515430710604108588191272960"); - list.add("002212024021523001310604218587504525312"); - list.add("002212024021608381110604364039677882368"); - list.add("002212024021623020310604581439817023488"); - list.add("002212024021722362610604937380427948032"); - list.add("002212024021808001010605079249543716864"); - list.add("002212024021808104810605081925655490560"); - list.add("002212024021808185910605083981192704000"); - list.add("002212024021810383210605119103427313664"); - list.add("002212024021908582810605456306802053120"); - list.add("002212024022109131310606184796175687680"); - list.add("002212024022119525210606345768395419648"); - list.add("002212024022218212410606685138835025920"); - list.add("002212024022307485310606888346055372800"); - list.add("002212024022308550410606905004268617728"); - list.add("002212024022408553910607267536671035392"); - list.add("002212024022517022910607752442171338752"); - list.add("002212024022521075910607814222629285888"); - list.add("002212024022609245810607999689369276416"); - list.add("002212024022708185910608345472558899200"); - list.add("002212024022808171110608707409136111616"); - list.add("002212024022808415410608713630598144000"); - list.add("002212024022908220310609071021906227200"); - list.add("002212024022908291710609072841400475648"); - list.add("002212024022908495410609078031603834880"); - list.add("002212024022908535210609079026622164992"); - list.add("002212024022920294410609254148826947584"); - list.add("002212024030108013710609428267015561216"); - list.add("002212024030108192710609432753644294144"); - list.add("002212024030109255810609449496542498816"); - list.add("002212024030110432610609468990032666624"); - list.add("002212024030114414110609528945117454336"); - list.add("002212024030200361910609678590595244032"); - list.add("002212024030300003710610031994312007680"); - list.add("002212024030408224710610520757550407680"); - list.add("002212024030408314410610523009898565632"); - list.add("002212024030422585110610741225040171008"); - list.add("002212024030508104110610880098894979072"); - list.add("002212024030508365710610886712358817792"); - list.add("002212024030508490010610889744259559424"); - list.add("002212024030521512910611086662637559808"); - list.add("002212024030608175710611244317067141120"); - list.add("002212024030708090510611604472871477248"); - list.add("002212024030708282910611609355581992960"); - list.add("002212024030708502610611614878784106496"); - list.add("002212024030709174810611621767196659712"); - list.add("002212024030719534010611781785478717440"); - list.add("002212024030807594010611964492124340224"); - list.add("002212024030822443910612187206556524544"); - list.add("002212024030906325510612305048975122432"); - list.add("002212024030907350010612320673259941888"); - list.add("002212024030915525410612445973697167360"); - list.add("002212024030916303810612455470245429248"); - list.add("002212024030921533110612536725873057792"); - list.add("002212024031017202310612830374738165760"); - list.add("002212024031020531910612883964449075200"); - list.add("002212024031023432510612926769309773824"); - list.add("002212024031108301510613059352027627520"); - list.add("002212024031109563110613081060800557056"); - list.add("002212024031114040910613143380055498752"); - list.add("002212024031208192510613419012528644096"); - list.add("002212024031208341810613422759090114560"); - list.add("002212024031208412810613424562076852224"); - list.add("002212024031308225010613782262091567104"); - list.add("002212024031308360610613785598963986432"); - list.add("002212024031308371210613785876779442176"); - list.add("002212024031308422110613787173562695680"); - list.add("002212024031408241810614145019098722304"); - list.add("002212024031508224410614507010081640448"); - list.add("002212024031508590910614516174918074368"); - list.add("002212024031509281210614523487750299648"); - list.add("002212024031510283910614538700956971008"); - list.add("002212024031515211110614612316401750016"); - list.add("002212024031520151910614686339450355712"); - list.add("002212024031609341910614887414428016640"); - list.add("002212024031718294510615384546949754880"); - list.add("002212024031808035610615589445707841536"); - list.add("002212024031808260710615595025820246016"); - list.add("002212024031815323210615702336330211328"); - list.add("002212024031815375110615703677041405952"); - list.add("002212024031911254310616002613799657472"); - list.add("002212024032008101710616315817846980608"); - list.add("002212024032011532310616371961915990016"); - list.add("002212024032108120110616678642146373632"); - list.add("002212024032108354410616684610730549248"); - list.add("002212024032108424510616686374340608000"); - list.add("002212024032114381810616775853463097344"); - list.add("002212024032208245610617044281046831104"); - list.add("002212024032208312010617045888861618176"); - list.add("002212024032208434810617049027454844928"); - list.add("002212024032323465610617638697148858368"); - list.add("002212024032402541210617685824652591104"); - list.add("002212024032508523610618138407486066688"); - list.add("002212024032520172810618310759024463872"); - list.add("002212024032608315810618495600729882624"); - list.add("002212024032608391310618497425932648448"); - list.add("002212024032608510410618500408262008832"); - list.add("002212024032708422710618860627711471616"); - list.add("002212024032714244610618946776453619712"); - list.add("002212024032808424210619223076450693120"); - list.add("002212024032814205310619308187015802880"); - list.add("002212024032907525410619572932763545600"); - list.add("002212024032908303010619582395874840576"); - list.add("002212024032908500610619587327303061504"); - list.add("002212024032911524710619633303216230400"); - list.add("002212024032923193810619806154641907712"); - list.add("002212024033016321410620066014643077120"); - list.add("002212024033016343310620066598362058752"); - list.add("002212024033020173810620122738665811968"); - list.add("002212024040108490910620674253468303360"); - list.add("002212024040109022110620677573939793920"); - list.add("002212024040208244810621030511414784000"); - list.add("002212024040308254910621393156197027840"); - list.add("002212024040308393710621396627855544320"); - list.add("002212024040308404410621396912069971968"); - list.add("002212024040309543710621415504291794944"); - list.add("002212024040311170810621436271049670656"); - list.add("002212024040323530210621626497573154816"); - list.add("002212024040402372510621667866323075072"); - list.add("002212024040408542210621762730175643648"); - list.add("002212024040415481010621866867580702720"); - list.add("002212024040512391510622181710707392512"); - list.add("002212024040516392110622242135366791168"); - list.add("002212024040614223510622570105679126528"); - list.add("002212024040623165710622704580477042688"); - list.add("002212024040809150910623217512072990720"); - list.add("002212024040811153710623247826547335168"); - list.add("002212024040908295510623568517415526400"); - list.add("002212024040908523110623574205092974592"); - list.add("002212024040911290310623613595104657408"); - list.add("002212024041009232810623944378227253248"); - list.add("002212024041107493210624283130019381248"); - list.add("002212024041108193110624290674609082368"); - list.add("002212024041208114810624651118629326848"); - list.add("002212024041208300810624655733583732736"); - list.add("002212024041209162410624667378518835200"); - list.add("002212024041210260110624684896674537472"); - list.add("002212024041214283110624745923243118592"); - list.add("002212024041420442210625565287085670400"); - list.add("002212024041507423510625730932126121984"); - list.add("002212024041508341410625743931251539968"); - list.add("002212024041521063510625933262427582464"); - list.add("002212024041609581110626127442457104384"); - list.add("002212024041707543510626458728699969536"); - list.add("002212024041708271210626466935588491264"); - list.add("002212024041708532810626473545384984576"); - list.add("002212024041808322310626830625628844032"); - list.add("002212024041808581710626837143647076352"); - list.add("002212024041810270010626859470992621568"); - list.add("002212024041810323510626860875480481792"); - list.add("002212024041816371210626952633348419584"); - list.add("002212024041820424210627014417214259200"); - list.add("002212024041908145410627188615932936192"); - list.add("002212024041908295410627192392017481728"); - list.add("002212024042012450810627619008926924800"); - list.add("002212024042012542310627621336262328320"); - list.add("002212024042023094310627776190762885120"); - list.add("002212024042109541010627938373800124416"); - list.add("002212024042207451110628268298934329344"); - list.add("002212024042220074210628455161424855040"); - list.add("002212024042307511610628632220004851712"); - list.add("002212024042308012110628634756814118912"); - list.add("002212024042308204710628639647745916928"); - list.add("002212024042309213010628654927362727936"); - list.add("002212024042407541510628995359758417920"); - list.add("002212024042419503110629175610779844608"); - list.add("002212024042507593310629359080569290752"); - list.add("002212024042508162210629363310436741120"); - list.add("002212024042508444810629370468299612160"); - list.add("002212024042510044010629390566508900352"); - list.add("002212024042608042610629722695250190336"); - list.add("002212024042608254110629728043720839168"); - list.add("002212024042608495310629734132524331008"); - list.add("002212024042613574610629811616614793216"); - list.add("002212024042808054110630447788521406464"); - list.add("002212024042809245110630467710966120448"); - list.add("002212024042823254410630679326345379840"); - list.add("002212024042907322310630801794375454720"); - list.add("002212024042913113810630887168829394944"); - list.add("002212024043008265210631177893526605824"); - list.add("002212024043008304710631178879007895552"); - list.add("002212024043008514610631184158888271872"); - list.add("002212024043008590110631185985480146944"); - list.add("002212024043009003010631186356933967872"); - list.add("002212024043010533110631214799365967872"); - list.add("002212024050107092310631520782677000192"); - list.add("002212024050107525610631531743152410624"); - list.add("002212024050416563310632755709779451904"); - list.add("002212024050515232310633094653215678464"); - list.add("002212024050520055610633165758466428928"); - list.add("002212024050520481310633176399665774592"); - list.add("002212024050607533110633343829061480448"); - list.add("002212024050607564510633344642827370496"); - list.add("002212024050608283810633352666908696576"); - list.add("002212024050608393610633355426893475840"); + + list.add("002212024020209484310599308359376400384"); + list.add("002212024020210271910599318075130855424"); + list.add("002212024020212541710599355059612233728"); + list.add("002212024020213102110599359102390714368"); + list.add("002212024020216131410599405125300551680"); + list.add("002212024020217093710599419315385958400"); + list.add("002212024020217473410599428865474797568"); + list.add("002212024020310524610599686864093933568"); + list.add("002212024020311461610599700328538521600"); + list.add("002212024020312191210599708616768860160"); + list.add("002212024020316231310599770024630005760"); + list.add("002212024020317284610599786522318110720"); + list.add("002212024020320430710599835430821130240"); + list.add("002212024020407435510600001726333087744"); + list.add("002212024020410182010600040588758065152"); + list.add("002212024020411534710600064609071640576"); + list.add("002212024020417400510600151759191855104"); + list.add("002212024020507172410600357444209025024"); + list.add("002212024020508232410600374051907993600"); + list.add("002212024020518441410600530289171918848"); + list.add("002212024020519172410600538637863464960"); + list.add("002212024020609570510600760018361991168"); + list.add("002212024020615260710600842821125234688"); + list.add("002212024020616351310600860210705182720"); + list.add("002212024020708224510601098662578515968"); + list.add("002212024020717081110601230892282519552"); + list.add("002212024020717535710601242409709817856"); + list.add("002212024020720104910601276856179843072"); + list.add("002212024020811091710601502961240539136"); + list.add("002212024020812204910601520965132042240"); + list.add("002212024020812433910601526711751221248"); + list.add("002212024020813215410601536336834174976"); + list.add("002212024020813363810601540042416410624"); + list.add("002212024020816530510601589483749486592"); + list.add("002212024020911345910601871817422499840"); + list.add("002212024020911450510601874358973591552"); + list.add("002212024020913082310601895323803398144"); + list.add("002212024020917285510601960885797601280"); + list.add("002212024020923321510602052324288184320"); + list.add("002212024021015493410602298273655889920"); + list.add("002212024021018355210602340125127766016"); + list.add("002212024021112433910602613873231818752"); + list.add("002212024021114122910602636230311387136"); + list.add("002212024021119502010602721250099175424"); + list.add("002212024021208045810602906128065474560"); + list.add("002212024021212582910602979995000197120"); + list.add("002212024021311431310603323439251013632"); + list.add("002212024021414124810603723473701003264"); + list.add("002212024021416374510603759951855538176"); + list.add("002212024021512373810604061909971976192"); + list.add("002212024021513502010604080206798815232"); + list.add("002212024021612390610604424667854565376"); + list.add("002212024021614382210604454682567995392"); + list.add("002212024021618161210604509502316036096"); + list.add("002212024021619055910604522029036945408"); + list.add("002212024021714081110604809473864318976"); + list.add("002212024021717341410604861328137609216"); + list.add("002212024021719245910604889199513939968"); + list.add("002212024021722055310604929693275873280"); + list.add("002212024021803175510605008216941998080"); + list.add("002212024021820155710605264413833666560"); + list.add("002212024021820565210605274710090215424"); + list.add("002212024022013144410605883186159243264"); + list.add("002212024022015500710605922290279325696"); + list.add("002212024022016461910605936431721140224"); + list.add("002212024022016543010605938491023716352"); + list.add("002212024022108493010606178825546194944"); + list.add("002212024022109065810606183221123031040"); + list.add("002212024022113324010606250086104989696"); + list.add("002212024022210211210606564292809359361"); + list.add("002212024022213031810606605083995381760"); + list.add("002212024022214024510606620047016292352"); + list.add("002212024022308440810606902252803698688"); + list.add("002212024022312132810606954931922223104"); + list.add("002212024022312402710606961722464624640"); + list.add("002212024022411491510607311227746832384"); + list.add("002212024022413485910607341357879222272"); + list.add("002212024022415144310607362932927844352"); + list.add("002212024022514535410607720081572339712"); + list.add("002212024022516074310607738658967334912"); + list.add("002212024022518273010607773838208716800"); + list.add("002212024022521492210607824639666380800"); + list.add("002212024022608485210607990606768402432"); + list.add("002212024022612165010608042943269646336"); + list.add("002212024022613560810608067933733871616"); + list.add("002212024022614550810608082781125435392"); + list.add("002212024022619595410608159475797643264"); + list.add("002212024022707371010608334950978772992"); + list.add("002212024022709081310608357864529403904"); + list.add("002212024022712154510608405058006364160"); + list.add("002212024022712392810608411027829477376"); + list.add("002212024022806403310608683092124008448"); + list.add("002212024022808034910608704044328509440"); + list.add("002212024022809225610608723956677173248"); + list.add("002212024022811132410608751753355546624"); + list.add("002212024022814331510608802048514699264"); + list.add("002212024022909583510609095314062401536"); + list.add("002212024022909590510609095441475489792"); + list.add("002212024022910250510609101983075561472"); + list.add("002212024022912330510609134197927157760"); + list.add("002212024022917224110609207074815569920"); + list.add("002212024030108482510609440044237148160"); + list.add("002212024030109285810609450248058269696"); + list.add("002212024030111440410609484246637305856"); + list.add("002212024030116454210609560155036897280"); + list.add("002212024030118321310609586961187037184"); + list.add("002212024030207504610609787924464230400"); + list.add("002212024030213181410609870333334548480"); + list.add("002212024030213314010609873716453998592"); + list.add("002212024030216253510609917482750660608"); + list.add("002212024030218075010609943216166612992"); + list.add("002212024030218462710609952931726209024"); + list.add("002212024030219175910609960867252908032"); + list.add("002212024030219320010609964395170324480"); + list.add("002212024030220365110609980716001165312"); return list; } @@ -2165,7 +1403,7 @@ public class SpringBootTestController { if (memberVO == null) { throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); } - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + BigDecimal totalAccountAmount = memberVO.getTotalBalance(); if (totalAccountAmount.compareTo(BigDecimal.ZERO) <= 0) { throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); } diff --git a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java index 74a7669dc..36948a661 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java +++ b/jsowell-common/src/main/java/com/jsowell/common/constant/Constants.java @@ -20,6 +20,8 @@ public class Constants { // 余额支付默认最大金额 public static final BigDecimal BALANCE_PAY_MAX_AMOUNT = new BigDecimal(Constants.TWO_HUNDRED); + public static final BigDecimal BALANCE_PAY_MAX_AMOUNT_NEW = new BigDecimal(Constants.FIVE_HUNDRED); + // 联联平台最大启动金额 public static final BigDecimal LIAN_LIAN_MAX_AMOUNT = new BigDecimal(Constants.THREE_HUNDRED_FIFTY); diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java index 8b67ff87c..81349b3fc 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/YKCFrameTypeCode.java @@ -71,8 +71,11 @@ public enum YKCFrameTypeCode { BILLING_TEMPLATE_SETTING_CODE(0x58, "计费模型设置"), BILLING_TEMPLATE_SETTING_ANSWER_CODE(0x57, "计费模型设置应答"), - RESERVE_CHARGING_CODE(0x60, "预约充电设置"), - RESERVE_CHARGING_ANSWER_CODE(0x59, "预约充电设置响应"), + RESERVATION_CHARGING_CODE(0x60, "预约充电设置"), + RESERVATION_CHARGING_ANSWER_CODE(0x59, "预约充电设置响应"), // RESERVATION + + RESERVATION_CHARGING_STARTUP_RESULT_ANSWER_CODE(0x64, "预约充电启动结果上传响应"), // 平台响应 + RESERVATION_CHARGING_STARTUP_RESULT_CODE(0x65, "预约充电启动结果上传"), // 桩 -> 平台 GROUND_LOCK_DATA_UPLOAD_CODE(0x61, "地锁数据上送"), REMOTE_CONTROL_GROUND_LOCK_LIFTING_CODE(0x62, "遥控地锁升降"), @@ -167,8 +170,12 @@ public enum YKCFrameTypeCode { // 交易记录 TRANSACTION_RECORDS(TRANSACTION_RECORDS_CODE.getCode(), TRANSACTION_RECORDS_CONFIRM_CODE.getCode()), // 远程账户更新 - REMOTE_ACCOUNT_BALANCE_UPDATE(REMOTE_ACCOUNT_BALANCE_UPDATE_CODE.getCode(), REMOTE_ACCOUNT_BALANCE_UPDATE_ANSWER_CODE.getCode()); + REMOTE_ACCOUNT_BALANCE_UPDATE(REMOTE_ACCOUNT_BALANCE_UPDATE_CODE.getCode(), REMOTE_ACCOUNT_BALANCE_UPDATE_ANSWER_CODE.getCode()), + // 预约充电启动结果 + RESERVATION_CHARGING_STARTUP_RESULT(RESERVATION_CHARGING_STARTUP_RESULT_CODE.getCode(), RESERVATION_CHARGING_STARTUP_RESULT_ANSWER_CODE.getCode()), + + ; // 请求帧类型 private int requestFrameType; diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java index 72c8b2676..96c0a0b91 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java @@ -179,6 +179,12 @@ public enum ReturnCodeEnum { CODE_RESERVATION_ALREADY_EXISTS_ERROR("00400017", "已经存在生效中的预约,请关闭后再试"), + CODE_PERSON_PILE_STOP_CHARGING_ERROR("00400018", "个人桩停止充电异常"), + + CODE_QUERY_RESERVATION_STATUS_ERROR("00400019", "根据充电桩查询预约状态异常"), + + CODE_START_PERSONAL_PILE_CHARGING_ERROR("00400020", "个人桩启动充电异常"), + /* 个人桩 end */ CODE_THIS_CARNO_HAS_BEEN_BINDING("00500001", "当前车牌号已经绑定,请检查!"), diff --git a/jsowell-framework/src/main/java/com/jsowell/framework/security/handle/AuthenticationEntryPointImpl.java b/jsowell-framework/src/main/java/com/jsowell/framework/security/handle/AuthenticationEntryPointImpl.java index 3b54a5593..0fd130d3e 100644 --- a/jsowell-framework/src/main/java/com/jsowell/framework/security/handle/AuthenticationEntryPointImpl.java +++ b/jsowell-framework/src/main/java/com/jsowell/framework/security/handle/AuthenticationEntryPointImpl.java @@ -32,7 +32,7 @@ public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint, S throws IOException { int code = HttpStatus.UNAUTHORIZED; String msg = StringUtils.format("请求访问:{},认证失败,无法访问系统资源", request.getRequestURI()); - logger.error("认证失败,无法访问系统资源error", e); + logger.error("认证失败,无法访问系统资源error:{}", e.getMessage()); ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.error(code, msg))); } } diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReadRealTimeMonitorDataHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReadRealTimeMonitorDataHandler.java index 029b8347e..434cc3eae 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReadRealTimeMonitorDataHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReadRealTimeMonitorDataHandler.java @@ -25,9 +25,6 @@ import org.springframework.stereotype.Component; public class ReadRealTimeMonitorDataHandler extends AbstractHandler{ private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.READ_REAL_TIME_MONITOR_DATA_CODE.getBytes()); - @Autowired - private YKCPushCommandServiceImpl ykcPushBusinessServiceImpl; - @Override public void afterPropertiesSet() throws Exception { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingHandler.java similarity index 83% rename from jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingHandler.java rename to jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingHandler.java index b77bcb6df..ea06e0a96 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingHandler.java @@ -12,9 +12,9 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class ReserveChargingHandler extends AbstractHandler{ +public class ReservationChargingHandler extends AbstractHandler{ - private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVE_CHARGING_CODE.getBytes()); + private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVATION_CHARGING_CODE.getBytes()); @Override public void afterPropertiesSet() throws Exception { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingResponseHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java similarity index 80% rename from jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingResponseHandler.java rename to jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java index 65d2600c2..4e18aef8f 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReserveChargingResponseHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingResponseHandler.java @@ -11,9 +11,9 @@ import org.springframework.stereotype.Component; */ @Slf4j @Component -public class ReserveChargingResponseHandler extends AbstractHandler{ +public class ReservationChargingResponseHandler extends AbstractHandler{ - private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVE_CHARGING_ANSWER_CODE.getBytes()); + private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVATION_CHARGING_ANSWER_CODE.getBytes()); @Override public void afterPropertiesSet() throws Exception { diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java new file mode 100644 index 000000000..ba3cd3944 --- /dev/null +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/ReservationChargingStartupResultHandler.java @@ -0,0 +1,105 @@ +package com.jsowell.netty.handler.yunkuaichong; + +import com.alibaba.fastjson2.JSON; +import com.google.common.primitives.Bytes; +import com.jsowell.common.constant.Constants; +import com.jsowell.common.core.domain.ykc.YKCDataProtocol; +import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; +import com.jsowell.common.util.BytesUtil; +import com.jsowell.common.util.YKCUtils; +import com.jsowell.netty.factory.YKCOperateFactory; +import com.jsowell.pile.dto.ReservationChargingStartupResult; +import com.jsowell.pile.service.PileBasicInfoService; +import io.netty.channel.Channel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 预约充电启动结果上送 + */ +@Slf4j +@Component +public class ReservationChargingStartupResultHandler extends AbstractHandler{ + + private final String type = YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVATION_CHARGING_STARTUP_RESULT_CODE.getBytes()); + + @Autowired + private PileBasicInfoService pileBasicInfoService; + + @Override + public void afterPropertiesSet() throws Exception { + YKCOperateFactory.register(type, this); + } + + @Override + public byte[] supplyProcess(YKCDataProtocol ykcDataProtocol, Channel channel) { + log.info("[===预约充电启动结果上送===] param:{}, channel:{}", JSON.toJSONString(ykcDataProtocol), channel.toString()); + // 消息体 + byte[] msgBody = ykcDataProtocol.getMsgBody(); + + int startIndex = 0; + int length = 16; + + // 交易流水号 + byte[] transactionCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String transactionCode = BytesUtil.bcd2Str(transactionCodeByteArr); + + // 桩编码 + startIndex += length; + length = 7; + byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String pileSn = BytesUtil.bcd2Str(pileSnByteArr); + + // 保存时间 + saveLastTimeAndCheckChannel(pileSn, channel); + + // 枪号 + startIndex += length; + length = 1; + byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr); + + // vin + startIndex += length; + length = 17; + byte[] vinCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String vinCode = BytesUtil.bcd2Str(vinCodeByteArr); + + // 启动结果 + startIndex += length; + length = 1; + byte[] startupResultByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String startupResult = BytesUtil.bcd2Str(startupResultByteArr); + + // 失败原因 + startIndex += length; + length = 1; + byte[] failReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String failReason = BytesUtil.bcd2Str(failReasonByteArr); + + log.info("[===预约充电启动结果上送===]交易流水号:{}, 桩编号:{}, 枪号:{}, vin:{}, 启动结果:{}, 失败原因:{}", + transactionCode, pileSn, connectorCode, vinCode, startupResult, failReason); + + + ReservationChargingStartupResult chargingStartupResult = ReservationChargingStartupResult.builder() + .transactionCode(transactionCode) + .pileSn(pileSn) + .connectorCode(connectorCode) + .vinCode(vinCode) + .startupResult(startupResult) + .failReason(failReason) + .build(); + pileBasicInfoService.startupResult(chargingStartupResult); + + + /* + 应答 + 确认结果 0x00 成功 0x01 失败 + */ + byte[] confirmResultBytes = Constants.zeroByteArray; + byte[] concatMsgBody = Bytes.concat(transactionCodeByteArr, pileSnByteArr, connectorCodeByteArr, confirmResultBytes); + + return getResult(ykcDataProtocol, concatMsgBody); + } +} diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java index 0d8a08e72..7bf8a722c 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java @@ -330,8 +330,8 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { int length = 16; // 交易流水号 - byte[] orderCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String transactionCode = BytesUtil.bcd2Str(orderCodeByteArr); + byte[] transactionCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + String transactionCode = BytesUtil.bcd2Str(transactionCodeByteArr); // 桩编码 startIndex += length; @@ -569,7 +569,7 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { processOrder(data); } } catch (Exception e) { - log.error("处理订单发生异常", e); + log.error("处理订单transactionCode:{}, 发生异常", transactionCode, e); } finally { if (uuid.equals(redisCache.getCacheObject(lockKey).toString())) { redisCache.unLock(lockKey); @@ -582,7 +582,7 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { 2022年12月15日11点28分发现返回 01非法账单,充电桩会持续上传交易记录,后面产生的交易记录被阻塞 */ byte[] confirmResultBytes = Constants.zeroByteArray; - byte[] concatMsgBody = Bytes.concat(orderCodeByteArr, confirmResultBytes); + byte[] concatMsgBody = Bytes.concat(transactionCodeByteArr, confirmResultBytes); return getResult(ykcDataProtocol, concatMsgBody); } @@ -597,7 +597,7 @@ public class TransactionRecordsRequestHandler extends AbstractHandler { PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(pileSn); if (StringUtils.equals(pileBasicInfo.getBusinessType(), Constants.TWO)) { personalChargingRecordService.processPersonalChargingRecord(data); - return; + // return; } String transactionCode = data.getTransactionCode(); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileReservationInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileReservationInfo.java index 2cc088337..a911a1a84 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileReservationInfo.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileReservationInfo.java @@ -3,6 +3,7 @@ package com.jsowell.pile.domain; import java.sql.Time; import java.util.Date; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -14,6 +15,7 @@ import lombok.experimental.SuperBuilder; @Data @Accessors(chain = true) @SuperBuilder +@Builder @AllArgsConstructor @NoArgsConstructor public class PileReservationInfo { @@ -47,6 +49,11 @@ public class PileReservationInfo { */ private String reservationType; + /** + * 验证身份(1-是; 0-否) + */ + private String verifyIdentity; + /** * 预约开始时间 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/ykcCommond/ReservationChargingCommand.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/ykcCommond/ReservationChargingCommand.java index 95bef6804..078557ede 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/ykcCommond/ReservationChargingCommand.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/ykcCommond/ReservationChargingCommand.java @@ -46,6 +46,11 @@ public class ReservationChargingCommand { */ private String reservationType; + /** + * 身份验证 + */ + private String verifyIdentity; + /** * vin1 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/CreateReservedDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/CreateReservedDTO.java index 64a96d440..d13ae5ec5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/CreateReservedDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/CreateReservedDTO.java @@ -40,6 +40,11 @@ public class CreateReservedDTO { */ private String freq; + /** + * 验证身份(1-是; 0-否) + */ + private String verifyIdentity; + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java index 22153c317..e41c0f646 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GenerateOrderDTO.java @@ -2,7 +2,7 @@ package com.jsowell.pile.dto; import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.domain.PileAuthCard; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/OrderPileOccupyDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/OrderPileOccupyDTO.java new file mode 100644 index 000000000..34d09e1ac --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/OrderPileOccupyDTO.java @@ -0,0 +1,125 @@ +package com.jsowell.pile.dto; + +import com.jsowell.common.core.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * TODO + * + * @author Lemon + * @Date 2024/7/15 13:37:04 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class OrderPileOccupyDTO extends BaseEntity { + + /** + * 主键 + */ + private Integer id; + + /** + * 占桩订单编号 + */ + private String occupyCode; + + /** + * 状态(0-占桩中;1-订单完成; 2-订单挂起) + */ + private String status; + + /** + * 会员id + */ + private String memberId; + + /** + * 充电站id + */ + private String stationId; + + /** + * 车牌号码 + */ + private String plateNumber; + + /** + * 订单号 + */ + private String orderCode; + + /** + * 交易流水号 + */ + private String transactionCode; + + /** + * 占桩开始时间 + */ + private Date startTime; + + /** + * 占桩结束时间 + */ + private Date endTime; + + /** + * 支付状态(0-未支付;1-支付完成;2-无需支付; 3-待补缴) + */ + private String payStatus; + + /** + * 占桩订单金额 + */ + private BigDecimal orderAmount; + + /** + * 充电桩编号 + */ + private String pileSn; + + /** + * 充电桩枪口号 + */ + private String connectorCode; + + /** + * 充电桩枪口编号 + */ + private String pileConnectorCode; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createBy; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 修改人 + */ + private String updateBy; + + /** + * 删除标识(0-否;1-是) + */ + private String delFlag; + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PersonPileStopChargingDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PersonPileStopChargingDTO.java new file mode 100644 index 000000000..8f275fa29 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PersonPileStopChargingDTO.java @@ -0,0 +1,24 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class PersonPileStopChargingDTO { + private String memberId; + private String firstLevelMerchantId; + + private String pileSn; + + private String ConnectorCode; + + /** + * 桩枪口号 + */ + private String pileConnectorCode; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileMemberBindingDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileMemberBindingDTO.java index 8bfa748f0..d3a5d1e5a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileMemberBindingDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileMemberBindingDTO.java @@ -38,5 +38,5 @@ public class PileMemberBindingDTO { /** * 一级运营商id */ - private String merchantId; + private String firstLevelMerchantId; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileReservationDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileReservationDTO.java index 056097d81..7e28dbab9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileReservationDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileReservationDTO.java @@ -23,11 +23,31 @@ public class PileReservationDTO { */ private String status; + /** + * 验证身份(1-是; 0-否) + */ + private String verifyIdentity; + /** * 桩编号 */ private String pileSn; + /** + * 充电桩枪口编号 + */ + private String pileConnectorCode; + + /** + * 开始时间 hh:mm:ss + */ + private String startTime; + + /** + * 结束时间 hh:mm:ss + */ + private String endTime; + private Integer pageNo; private Integer pageSize; @@ -38,6 +58,11 @@ public class PileReservationDTO { .append("memberId", memberId) .append("reservedId", reservedId) .append("status", status) + .append("pileSn", pileSn) + .append("startTime", startTime) + .append("endTime", endTime) + .append("pageNo", pageNo) + .append("pageSize", pageSize) .toString(); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/ReservationChargingStartupResult.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ReservationChargingStartupResult.java new file mode 100644 index 000000000..089788305 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/ReservationChargingStartupResult.java @@ -0,0 +1,42 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class ReservationChargingStartupResult { + /** + * 交易流水号 + */ + private String transactionCode; + + /** + * 桩编号 + */ + private String pileSn; + + /** + * 枪口号 + */ + private String connectorCode; + + /** + * vin + */ + private String vinCode; + + /** + * 启动结果 + */ + private String startupResult; + + /** + * 失败原因 + */ + private String failReason; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/StationStatisticsInfoDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/StationStatisticsInfoDTO.java new file mode 100644 index 000000000..76767bb8a --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/StationStatisticsInfoDTO.java @@ -0,0 +1,24 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * TODO + * + * @author Lemon + * @Date 2024/7/23 15:52:34 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class StationStatisticsInfoDTO { + private String merchantId; + + private String startTime; + + private String endTime; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberBasicInfoMapper.java index fe51f7522..ee7437dc7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberBasicInfoMapper.java @@ -3,8 +3,8 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.MemberBasicInfo; import com.jsowell.pile.dto.QueryMemberInfoDTO; import com.jsowell.pile.vo.base.MerchantInfoVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.MerchantVipVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MerchantVipVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java index 63bb3f2b4..dd64d6c13 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberGroupMapper.java @@ -3,7 +3,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.MemberGroup; import com.jsowell.pile.dto.MemberGroupDTO; import com.jsowell.pile.vo.base.MemberGroupStationVO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.web.MemberDiscountVO; import com.jsowell.pile.vo.web.MemberGroupVO; import org.apache.ibatis.annotations.Param; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberWalletLogMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberWalletLogMapper.java index eac5b4737..b326a25b4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberWalletLogMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberWalletLogMapper.java @@ -2,10 +2,9 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.MemberWalletLog; import com.jsowell.pile.dto.UniAppQueryMemberBalanceDTO; -import com.jsowell.pile.vo.uniapp.MemberBalanceVO; -import com.jsowell.pile.vo.uniapp.MemberWalletLogVO; +import com.jsowell.pile.vo.uniapp.customer.MemberBalanceVO; +import com.jsowell.pile.vo.uniapp.customer.MemberWalletLogVO; import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import java.util.List; 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 d4426e0bf..d99508514 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 @@ -9,9 +9,9 @@ import com.jsowell.pile.vo.SupStationStatsVO; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; -import com.jsowell.pile.vo.uniapp.OrderVO; -import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; -import com.jsowell.pile.vo.uniapp.SendMessageVO; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO; +import com.jsowell.pile.vo.uniapp.customer.SendMessageVO; import com.jsowell.pile.vo.web.*; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -366,4 +366,6 @@ public interface OrderBasicInfoMapper { * @return */ List queryOrderListByStationId(String stationId); + + List queryOrderByOccupyTime(QueryOrderDTO dto); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderPileOccupyMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderPileOccupyMapper.java index 9fa81104f..b2dc1a5c4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderPileOccupyMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderPileOccupyMapper.java @@ -1,9 +1,10 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.OrderPileOccupy; +import com.jsowell.pile.dto.OrderPileOccupyDTO; import com.jsowell.pile.dto.QueryOccupyOrderDTO; -import com.jsowell.pile.vo.uniapp.OccupyOrderDetailVO; -import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO; +import com.jsowell.pile.vo.uniapp.customer.OccupyOrderDetailVO; +import com.jsowell.pile.vo.uniapp.customer.OrderPileOccupyVO; import com.jsowell.pile.vo.web.OccupyOrderVO; import org.apache.ibatis.annotations.Param; @@ -127,10 +128,10 @@ public interface OrderPileOccupyMapper { /** * 查询占桩订单列表 * - * @param orderPileOccupy 占桩订单 + * @param dto 占桩订单 * @return 占桩订单集合 */ - public List getOrderPileOccupyList(OrderPileOccupy orderPileOccupy); + public List getOrderPileOccupyList(@Param("dto") OrderPileOccupyDTO dto); /** * 使该笔订单免费 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileAuthCardMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileAuthCardMapper.java index 6a9e84854..b4790aec0 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileAuthCardMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileAuthCardMapper.java @@ -2,7 +2,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.PileAuthCard; import com.jsowell.pile.dto.PileAuthCardDTO; -import com.jsowell.pile.vo.uniapp.AuthCardVO; +import com.jsowell.pile.vo.uniapp.customer.AuthCardVO; import com.jsowell.pile.vo.web.PileAuthCardVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileBasicInfoMapper.java index af028c09a..d114728c6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileBasicInfoMapper.java @@ -5,8 +5,8 @@ import com.jsowell.pile.dto.IndexQueryDTO; import com.jsowell.pile.dto.QueryPileDTO; import com.jsowell.pile.dto.ReplaceMerchantStationDTO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.IndexGeneralSituationVO; import com.jsowell.pile.vo.web.PileDetailVO; import org.apache.ibatis.annotations.Param; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileFirmwareInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileFirmwareInfoMapper.java index 3508b9324..a1a6d4b30 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileFirmwareInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileFirmwareInfoMapper.java @@ -1,6 +1,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.PileFirmwareInfo; +import org.springframework.stereotype.Repository; import java.util.List; @@ -10,6 +11,7 @@ import java.util.List; * @author jsowell * @date 2023-06-28 */ +@Repository public interface PileFirmwareInfoMapper { /** * 查询充电桩固件信息 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java index 2a66f5261..f3c08ea7a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileMemberRelationMapper.java @@ -2,7 +2,6 @@ package com.jsowell.pile.mapper; import java.util.List; import com.jsowell.pile.domain.PileMemberRelation; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; import org.springframework.stereotype.Repository; /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileReservationInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileReservationInfoMapper.java index da44e5ff2..fa7939072 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileReservationInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileReservationInfoMapper.java @@ -34,4 +34,6 @@ public interface PileReservationInfoMapper { List findByMemberIdAndPileSn(@Param("memberId") String memberId, @Param("pileSn") String pileSn); PileReservationInfo selectActiveReservationByPileConnectorCode(String pileConnectorCode); + + PileReservationInfo selectByPileConnectorCode(String pileConnectorCode); } \ No newline at end of file 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 6c92e1efa..646e51533 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 @@ -118,4 +118,6 @@ public interface PileStationInfoMapper { List NXJTQueryStationsInfo(@Param("dto") NXJTQueryStationInfoDTO dto); PileStationInfo queryInfoByDeptId(@Param("deptId") String deptId); + + List getStationInfosByMerchantIds(@Param("list") List merchantIds); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberBasicInfoService.java index 74c416089..0e6fd7f17 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberBasicInfoService.java @@ -5,7 +5,7 @@ import com.jsowell.pile.dto.CreateMerchantVipDTO; import com.jsowell.pile.dto.PlatformTesterDTO; import com.jsowell.pile.dto.QueryMemberInfoDTO; import com.jsowell.pile.dto.UniAppQueryMemberBalanceDTO; -import com.jsowell.pile.vo.uniapp.*; +import com.jsowell.pile.vo.uniapp.customer.*; import com.jsowell.pile.vo.web.PlatformTesterVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java index 492cae97f..214291596 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberGroupService.java @@ -4,7 +4,7 @@ import com.jsowell.pile.domain.MemberGroup; import com.jsowell.pile.dto.MemberGroupDTO; import com.jsowell.pile.vo.base.MemberGroupConsumptionVO; import com.jsowell.pile.vo.base.MemberGroupStationVO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.web.MemberDiscountVO; import com.jsowell.pile.vo.web.MemberGroupVO; import com.jsowell.pile.vo.web.OrderListVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberInvoiceTitleService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberInvoiceTitleService.java index 22b481b3d..e54bf0f54 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberInvoiceTitleService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberInvoiceTitleService.java @@ -1,7 +1,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.MemberInvoiceTitle; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import java.util.List; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java index a067995bc..7a93d002b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberPlateNumberRelationService.java @@ -1,7 +1,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.MemberPlateNumberRelation; -import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberPlateNumberVO; import java.util.List; 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 a779eb6cf..5aeecd75a 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 @@ -18,9 +18,9 @@ import com.jsowell.pile.vo.base.OrderAmountDetailVO; import com.jsowell.pile.vo.base.OrderPeriodAmountVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; -import com.jsowell.pile.vo.uniapp.OrderVO; -import com.jsowell.pile.vo.uniapp.PersonPileConnectorSumInfoVO; -import com.jsowell.pile.vo.uniapp.SendMessageVO; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO; +import com.jsowell.pile.vo.uniapp.customer.SendMessageVO; import com.jsowell.pile.vo.web.*; import com.jsowell.wxpay.response.WechatPayRefundResponse; @@ -453,4 +453,11 @@ public interface OrderBasicInfoService{ * @return */ List queryOrderListByStationId(String stationId); + + /** + * 按占用时间查询订单 + * @param dto + * @return + */ + List queryOrderByOccupyTime(QueryOrderDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java index 6520c2aa1..80d99d371 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderPileOccupyService.java @@ -3,8 +3,7 @@ package com.jsowell.pile.service; import com.jsowell.common.core.page.PageResponse; import com.jsowell.pile.domain.OrderPileOccupy; import com.jsowell.pile.dto.*; -import com.jsowell.pile.vo.uniapp.OccupyOrderDetailVO; -import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO; +import com.jsowell.pile.vo.uniapp.customer.OccupyOrderDetailVO; import com.jsowell.pile.vo.web.OccupyOrderVO; import java.util.List; @@ -49,7 +48,7 @@ public interface OrderPileOccupyService{ * @param orderPileOccupy 占桩订单 * @return 占桩订单集合 */ - List getOrderPileOccupyList(OrderPileOccupy orderPileOccupy); + // List getOrderPileOccupyList(OrderPileOccupy orderPileOccupy); List queryOccupyOrderList(QueryOccupyOrderDTO dto); @@ -67,6 +66,8 @@ public interface OrderPileOccupyService{ void stopOccupyPileOrder(OrderPileOccupy orderPileOccupy); + int retryCalculateOccupyPileOrderAmount(String occupyCode); + /** * 通过memberid查询挂起状态订单 * @param memberId @@ -120,4 +121,11 @@ public interface OrderPileOccupyService{ int updateOrderInfoForWeb(MakeOrderFreeDTO dto); void closeOccupyPileOrder(String pileSn, String connectorCode); + + /** + * 查询占桩订单列表(带权限校验) + * @param dto + * @return + */ + List getOrderPileOccupyListWithAuth(OrderPileOccupyDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java index 4d9653b0c..2c1e5a179 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PersonalChargingRecordService.java @@ -3,6 +3,7 @@ package com.jsowell.pile.service; import java.util.List; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; +import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.PersonalChargingRecord; public interface PersonalChargingRecordService{ @@ -35,4 +36,6 @@ public interface PersonalChargingRecordService{ * @param data */ void processPersonalChargingRecord(TransactionRecordsData data); + + void processPersonalChargingRecord(OrderBasicInfo orderBasicInfo); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileAuthCardService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileAuthCardService.java index f03f01814..56edf1aaa 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileAuthCardService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileAuthCardService.java @@ -2,7 +2,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.PileAuthCard; import com.jsowell.pile.dto.PileAuthCardDTO; -import com.jsowell.pile.vo.uniapp.AuthCardVO; +import com.jsowell.pile.vo.uniapp.customer.AuthCardVO; import com.jsowell.pile.vo.web.PileAuthCardVO; import java.util.List; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java index a0e1f733f..d0ff490df 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java @@ -2,18 +2,15 @@ package com.jsowell.pile.service; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.pile.domain.PileBasicInfo; -import com.jsowell.pile.dto.IndexQueryDTO; -import com.jsowell.pile.dto.QueryPileDTO; -import com.jsowell.pile.dto.ReplaceMerchantStationDTO; -import com.jsowell.pile.dto.StartPersonPileDTO; +import com.jsowell.pile.dto.*; import com.jsowell.pile.thirdparty.ConnectorInfo; import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.thirdparty.ZDLConnectorInfo; import com.jsowell.pile.thirdparty.ZDLEquipmentInfo; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.GroundLockInfoVO; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.GroundLockInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.IndexGeneralSituationVO; import com.jsowell.pile.vo.web.PileDetailVO; @@ -222,4 +219,6 @@ public interface PileBasicInfoService { List getConnectorListForZDL(String pileSn); String startPersonalPileCharging(StartPersonPileDTO dto); + + void startupResult(ReservationChargingStartupResult chargingStartupResult); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java index 33aec46d6..aa1c8e7c3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java @@ -5,8 +5,8 @@ import com.jsowell.pile.domain.PileBillingRelation; import com.jsowell.pile.domain.PileBillingTemplate; import com.jsowell.pile.dto.CreateOrUpdateBillingTemplateDTO; import com.jsowell.pile.dto.ImportBillingTemplateDTO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.BillingDetailVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.EchoBillingTemplateVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java index 193cad20b..f0393abdf 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileRemoteService.java @@ -72,7 +72,6 @@ public class PileRemoteService { .build(); ykcPushCommandService.pushGetRealTimeMonitorDataCommand(command); } - } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java index 516535ae4..6f04543cd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileReservationInfoService.java @@ -2,8 +2,12 @@ package com.jsowell.pile.service; import java.util.List; +import com.jsowell.common.core.page.PageResponse; +import com.jsowell.pile.dto.CreateReservedDTO; +import com.jsowell.pile.dto.PersonPileStopChargingDTO; import com.jsowell.pile.dto.PileReservationDTO; import com.jsowell.pile.domain.PileReservationInfo; +import com.jsowell.pile.vo.PileReservationInfoVO; public interface PileReservationInfoService { int deleteByPrimaryKey(Integer id); @@ -55,5 +59,17 @@ public interface PileReservationInfoService { void cancelOneTimeReservation(String pileConnectorCode); void deleteReservation(PileReservationDTO dto); + + int createReservation(CreateReservedDTO dto); + + PageResponse queryReservationList(PileReservationDTO dto); + + void updateReservationStatus(PileReservationDTO dto); + + void updateReservation(PileReservationDTO dto); + + void personPileStopCharging(PersonPileStopChargingDTO dto); + + PileReservationInfoVO queryReservationInfo(PileReservationDTO 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 c30dca4f5..0fd4880b4 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 @@ -5,11 +5,13 @@ import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.dto.FastCreateStationDTO; import com.jsowell.pile.dto.QueryStationDTO; import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.dto.StationStatisticsInfoDTO; import com.jsowell.pile.dto.amap.GetStationInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO; 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.uniapp.business.StationStatisticsInfosVO; import com.jsowell.pile.vo.web.PileStationVO; import java.util.List; @@ -146,4 +148,16 @@ public interface PileStationInfoService { PileStationInfo queryInfoByDeptId(String valueOf); + + + + //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 后管小程序 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ + + public List getStationInfosByMerchantIds(List merchantIds); + + /** + * 获取站点统计信息 + * @param dto + */ + List getStationStatisticsInfos(StationStatisticsInfoDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberBasicInfoServiceImpl.java index 01982ad6e..981f5f335 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberBasicInfoServiceImpl.java @@ -27,9 +27,8 @@ import com.jsowell.pile.mapper.MemberWalletLogMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.base.LoginUserDetailVO; import com.jsowell.pile.vo.base.MerchantInfoVO; -import com.jsowell.pile.vo.uniapp.*; +import com.jsowell.pile.vo.uniapp.customer.*; import com.jsowell.pile.vo.web.PlatformTesterVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; import lombok.extern.slf4j.Slf4j; @@ -456,7 +455,7 @@ public class MemberBasicInfoServiceImpl implements MemberBasicInfoService { vo.setRegistrationDays(days); vo.setPrincipalBalance(principalBalance); vo.setGiftBalance(giftBalance); - vo.setTotalAccountAmount(vo.getPrincipalBalance().add(vo.getGiftBalance())); + vo.setTotalBalance(vo.getPrincipalBalance().add(vo.getGiftBalance())); } catch (Exception e) { log.error("查询用户余额异常 memberId:{}, merchantId:{}", memberId, merchantId, e); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java index 32991cd56..d1f2aa20a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberGroupServiceImpl.java @@ -17,7 +17,7 @@ import com.jsowell.pile.mapper.MemberGroupMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MemberGroupConsumptionVO; import com.jsowell.pile.vo.base.MemberGroupStationVO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.MemberDiscountVO; import com.jsowell.pile.vo.web.MemberGroupVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberInvoiceTitleServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberInvoiceTitleServiceImpl.java index 99d8c6a9d..f9dea78f7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberInvoiceTitleServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberInvoiceTitleServiceImpl.java @@ -5,7 +5,7 @@ import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberInvoiceTitle; import com.jsowell.pile.mapper.MemberInvoiceTitleMapper; import com.jsowell.pile.service.MemberInvoiceTitleService; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java index 10e39a777..28acc6d67 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPlateNumberRelationServiceImpl.java @@ -7,7 +7,7 @@ import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberPlateNumberRelation; import com.jsowell.pile.mapper.MemberPlateNumberRelationMapper; import com.jsowell.pile.service.MemberPlateNumberRelationService; -import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberPlateNumberVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberWalletInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberWalletInfoServiceImpl.java index 883cc48af..b3f8debf7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberWalletInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberWalletInfoServiceImpl.java @@ -70,11 +70,19 @@ public class MemberWalletInfoServiceImpl implements MemberWalletInfoService { List list = memberWalletInfoMapper.selectByMemberWalletList(memberId); if (CollectionUtils.isNotEmpty(list)) { for (MemberWalletInfo memberWalletInfo : list) { + BigDecimal principalBalance = memberWalletInfo.getPrincipalBalance() == null + ? BigDecimal.ZERO + : memberWalletInfo.getPrincipalBalance(); + BigDecimal giftBalance = memberWalletInfo.getGiftBalance() == null + ? BigDecimal.ZERO + : memberWalletInfo.getGiftBalance(); MemberWalletVO memberWalletVO = MemberWalletVO.builder() .memberId(memberWalletInfo.getMemberId()) .merchantId(memberWalletInfo.getMerchantId()) .walletCode(memberWalletInfo.getWalletCode()) - .principalBalance(memberWalletInfo.getPrincipalBalance()) + .principalBalance(principalBalance) + .giftBalance(giftBalance) + .totalBalance(principalBalance.add(giftBalance)) .build(); // 获取运营商名称 PileMerchantInfo merchantInfo = pileMerchantInfoService.selectPileMerchantInfoById(memberWalletInfo.getMerchantId()); 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 a05127a49..d291404ad 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 @@ -14,7 +14,6 @@ import com.jsowell.adapay.response.*; import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.vo.OrderSettleResult; import com.jsowell.adapay.vo.PaymentInfo; -import com.jsowell.common.UserAgentUtils; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; @@ -31,7 +30,6 @@ import com.jsowell.common.enums.thirdparty.ThirdPartyOperatorIdEnum; import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; -import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; @@ -39,7 +37,6 @@ import com.jsowell.common.util.bean.BeanUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.pile.domain.*; -import com.jsowell.pile.domain.ykcCommond.ReservationChargingCommand; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; @@ -57,7 +54,7 @@ import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; -import com.jsowell.pile.vo.uniapp.*; +import com.jsowell.pile.vo.uniapp.customer.*; import com.jsowell.pile.vo.web.*; import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.dto.WechatSendMsgDTO; @@ -2421,12 +2418,12 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { if (memberVO == null) { throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); } - accountBalance = memberVO.getTotalAccountAmount(); + accountBalance = memberVO.getTotalBalance(); if (accountBalance.compareTo(BigDecimal.ZERO) <= 0) { logger.info("充电桩主动申请启动充电生成订单 余额不足, memberId:{}, MemberVO:{}", dto.getMemberId(), JSON.toJSONString(memberVO)); throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); } - BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT; + BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT_NEW; if (accountBalance.compareTo(defaultAmount) > 0) { accountBalance = defaultAmount; } @@ -3730,5 +3727,10 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return orderVOS; } + @Override + public List queryOrderByOccupyTime(QueryOrderDTO dto) { + return orderBasicInfoMapper.queryOrderByOccupyTime(dto); + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java index e3617920a..f8498c8f7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java @@ -11,7 +11,7 @@ import com.jsowell.pile.service.OrderInvoiceRecordService; import com.jsowell.pile.service.OrderBasicInfoService; import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.vo.base.OrderAmountDetailVO; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import com.jsowell.pile.vo.web.InvoiceRecordVO; import com.jsowell.pile.vo.web.OrderInvoiceRecordVO; import org.apache.commons.collections4.CollectionUtils; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java index 81da9d760..3dbd24fc4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderPileOccupyServiceImpl.java @@ -2,10 +2,12 @@ package com.jsowell.pile.service.impl; import com.alibaba.fastjson2.JSON; import com.github.pagehelper.PageInfo; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; +import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.DelFlagEnum; @@ -26,10 +28,11 @@ import com.jsowell.pile.domain.ykcCommond.RemoteControlGroundLockCommand; import com.jsowell.pile.dto.*; import com.jsowell.pile.mapper.OrderPileOccupyMapper; import com.jsowell.pile.service.*; +import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.OccupyOrderDetailVO; -import com.jsowell.pile.vo.uniapp.OrderPileOccupyVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.OccupyOrderDetailVO; +import com.jsowell.pile.vo.uniapp.customer.OrderPileOccupyVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.OccupyOrderVO; import com.jsowell.pile.vo.web.OrderListVO; @@ -152,9 +155,20 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService { return orderPileOccupyMapper.selectOrderPileOccupyList(orderPileOccupy); } - @Override - public List getOrderPileOccupyList(OrderPileOccupy orderPileOccupy) { - return orderPileOccupyMapper.getOrderPileOccupyList(orderPileOccupy); + /** + * 获取占桩订单列表 + * @param dto 占桩订单 + * @return + */ + public List getOrderPileOccupyListWithAuth(OrderPileOccupyDTO dto) { + AuthorizedDeptVO authorizedMap = UserUtils.getAuthorizedMap(); + if (authorizedMap == null) { + // 为空表示没有权限,返回空数组 + return Lists.newArrayList(); + } + dto.setStationDeptIds(authorizedMap.getStationDeptIds()); + dto.setMerchantDeptIds(authorizedMap.getMerchantDeptIds()); + return orderPileOccupyMapper.getOrderPileOccupyList(dto); } /** @@ -268,6 +282,26 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService { orderPileOccupyMapper.updateByPrimaryKeySelective(orderPileOccupy); } + @Override + public int retryCalculateOccupyPileOrderAmount(String occupyCode) { + OrderPileOccupy orderPileOccupy = queryByOccupyCode(occupyCode); + // 计算金额 + BigDecimal orderAmount = calculateOccupyPileOrderAmount(orderPileOccupy); + + if (orderAmount.compareTo(BigDecimal.ZERO) > 0) { + // 需要支付金额,订单挂起 + orderPileOccupy.setStatus(Constants.TWO); // 2-订单挂起 + } else { + // 订单金额为0 + orderPileOccupy.setPayStatus(Constants.TWO); // 2-无需支付 + orderPileOccupy.setStatus(Constants.ONE); // 1-订单完成 + } + orderPileOccupy.setOrderAmount(orderAmount); + // 更新数据库 + int i = orderPileOccupyMapper.updateByPrimaryKeySelective(orderPileOccupy); + return i; + } + /** * 计算占桩订单金额 * calculateTheAmountOfTheOccupancyOrder @@ -310,8 +344,9 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService { // 查询在占桩期间创建的订单 dto.setStartTime(DateUtils.formatDateTime(startTime)); dto.setEndTime(DateUtils.formatDateTime(endTime)); - List orderListVOS = orderBasicInfoService.selectOrderBasicInfoList(dto); - + List orderListVOS = orderBasicInfoService.queryOrderByOccupyTime(dto); + log.info("查询会员在占用时段内有没有充电订单, 占桩订单编号:{}, memberId:{}, stationId:{}, 占桩开始时间:{}, 占桩结束时间:{}, result:{}", + occupyCode, orderPileOccupy.getMemberId(), orderPileOccupy.getStationId(), DateUtils.formatDateTime(startTime), DateUtils.formatDateTime(endTime), JSON.toJSONString(orderListVOS)); /* 计算充电时长 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java index 757b753b9..cd8a45f8f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PersonalChargingRecordServiceImpl.java @@ -1,8 +1,9 @@ package com.jsowell.pile.service.impl; +import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; -import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil; import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.PileBasicInfo; import com.jsowell.pile.service.PileBasicInfoService; import org.springframework.beans.factory.annotation.Autowired; @@ -82,8 +83,7 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord } /** - * 处理个人桩充电记录 - * + * 收到交易记录时, 处理个人桩充电记录 * @param data */ @Override @@ -133,4 +133,48 @@ public class PersonalChargingRecordServiceImpl implements PersonalChargingRecord personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord); } + /** + * 一键启动时, 处理个人桩充电记录 + * @param orderBasicInfo + */ + @Override + public void processPersonalChargingRecord(OrderBasicInfo orderBasicInfo) { + // 根据交易流水号查询,如果数据库没有就入库 + PersonalChargingRecord chargingRecord = new PersonalChargingRecord(); + + // 处理数据 + chargingRecord.setTransactionCode(orderBasicInfo.getTransactionCode()); + chargingRecord.setStatus(Constants.ONE); + chargingRecord.setMemberId(orderBasicInfo.getMemberId()); + chargingRecord.setStationId(orderBasicInfo.getStationId()); + chargingRecord.setMerchantId(orderBasicInfo.getMerchantId()); + chargingRecord.setPileSn(orderBasicInfo.getPileSn()); + chargingRecord.setConnectorCode(orderBasicInfo.getConnectorCode()); + chargingRecord.setPileConnectorCode(orderBasicInfo.getPileConnectorCode()); + chargingRecord.setLogicCard(orderBasicInfo.getLogicCard()); + chargingRecord.setVinCode(orderBasicInfo.getVinCode()); + chargingRecord.setStartMode(orderBasicInfo.getStartMode()); + chargingRecord.setPlateNumber(orderBasicInfo.getPlateNumber()); + chargingRecord.setChargeStartTime(orderBasicInfo.getChargeStartTime()); + chargingRecord.setChargeEndTime(orderBasicInfo.getChargeEndTime()); + chargingRecord.setStartType(orderBasicInfo.getStartType()); + chargingRecord.setReservationStartTime(orderBasicInfo.getReservedStartTime()); + chargingRecord.setReservationEndTime(orderBasicInfo.getReservedEndTime()); + chargingRecord.setStartSoc(orderBasicInfo.getStartSoc()); + chargingRecord.setEndSoc(null); + // BigDecimal sharpUsedElectricity = new BigDecimal(data.getSharpUsedElectricity()); + // chargingRecord.setSharpUsedElectricity(sharpUsedElectricity); + // BigDecimal peakUsedElectricity = new BigDecimal(data.getPeakUsedElectricity()); + // chargingRecord.setPeakUsedElectricity(peakUsedElectricity); + // BigDecimal flatUsedElectricity = new BigDecimal(data.getFlatUsedElectricity()); + // chargingRecord.setFlatUsedElectricity(flatUsedElectricity); + // BigDecimal valleyUsedElectricity = new BigDecimal(data.getValleyUsedElectricity()); + // chargingRecord.setValleyUsedElectricity(valleyUsedElectricity); + // BigDecimal totalUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity); + // chargingRecord.setTotalUsedElectricity(totalUsedElectricity); + // chargingRecord.setReason(data.getStopReasonMsg()); + // 创建或更新 + personalChargingRecordMapper.insertOrUpdateSelective(chargingRecord); + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java index 64f40b591..0abce530c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java @@ -1,6 +1,5 @@ package com.jsowell.pile.service.impl; -import com.github.pagehelper.PageInfo; import com.jsowell.common.constant.Constants; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; @@ -8,22 +7,19 @@ import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberBasicInfo; import com.jsowell.pile.domain.PileAuthCard; -import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.PileAuthCardDTO; import com.jsowell.pile.mapper.PileAuthCardMapper; import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.service.PileAuthCardService; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.base.LoginUserDetailVO; import com.jsowell.pile.vo.base.MerchantInfoVO; -import com.jsowell.pile.vo.uniapp.AuthCardVO; +import com.jsowell.pile.vo.uniapp.customer.AuthCardVO; import com.jsowell.pile.vo.web.PileAuthCardVO; import org.apache.commons.lang3.RandomStringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.math.BigDecimal; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java index c3411598d..10a7f37fb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java @@ -11,20 +11,14 @@ import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.lianlian.LianLianPileStatusEnum; -import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; -import com.jsowell.common.enums.ykc.PileConnectorStatusEnum; -import com.jsowell.common.enums.ykc.PileStatusEnum; -import com.jsowell.common.enums.ykc.ReturnCodeEnum; +import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; import com.jsowell.pile.domain.PileBasicInfo; import com.jsowell.pile.domain.PileConnectorInfo; import com.jsowell.pile.domain.PileModelInfo; import com.jsowell.pile.domain.PileSimInfo; -import com.jsowell.pile.dto.IndexQueryDTO; -import com.jsowell.pile.dto.QueryPileDTO; -import com.jsowell.pile.dto.ReplaceMerchantStationDTO; -import com.jsowell.pile.dto.StartPersonPileDTO; +import com.jsowell.pile.dto.*; import com.jsowell.pile.mapper.PileBasicInfoMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.service.programlogic.AbstractProgramLogic; @@ -36,10 +30,11 @@ import com.jsowell.pile.thirdparty.ZDLEquipmentInfo; import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.GroundLockInfoVO; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.GroundLockInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; +import com.jsowell.wxpay.service.WxAppletRemoteService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.RandomStringUtils; @@ -92,6 +87,9 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { @Autowired private PileReservationInfoService pileReservationInfoService; + @Autowired + private WxAppletRemoteService wxAppletRemoteService; + /** * 查询设备管理 * @@ -379,6 +377,12 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { if (CollectionUtils.isNotEmpty(connectorInfoList)) { pileConnectorInfoService.batchInsertConnectorInfo(connectorInfoList); } + + // if (StringUtils.equals(BusinessTypeEnum.INDIVIDUAL_PILE.getValue(), dto.getChargerPileType())) { + // // 个人桩生成一个八位的密钥(字母加数字) + // String secretKey = RandomStringUtils.randomAlphanumeric(8).toUpperCase(Locale.ROOT); + // basicInfo.setSecretKey(secretKey); + // } } return num; } @@ -1208,4 +1212,13 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { String orderCode = orderLogic.startPersonalPileCharging(dto); return orderCode; } + + /** + * 预约充电启动结果 + */ + @Override + public void startupResult(ReservationChargingStartupResult chargingStartupResult) { + // 小程序通知 + wxAppletRemoteService.reservationStartupResultSendMsg(); + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java index b935aeae9..8b5b52435 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java @@ -24,8 +24,8 @@ import com.jsowell.pile.service.PileStationInfoService; import com.jsowell.pile.transaction.dto.BillingTemplateTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.BillingDetailVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.EchoBillingTemplateVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileFirmwareInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileFirmwareInfoServiceImpl.java index d49d6fcd6..4db17b410 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileFirmwareInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileFirmwareInfoServiceImpl.java @@ -51,9 +51,20 @@ public class PileFirmwareInfoServiceImpl implements PileFirmwareInfoService { @Override public int insertPileFirmwareInfo(PileFirmwareInfo pileFirmwareInfo) { // pileFirmwareInfo.setCreateTime(DateUtils.getNowDate()); + String filePath = pileFirmwareInfo.getFilePath(); + // 两个斜杠 留一个 + filePath = filePath.replaceAll("//", "/"); + pileFirmwareInfo.setFilePath(filePath); return pileFirmwareInfoMapper.insertPileFirmwareInfo(pileFirmwareInfo); } + public static void main(String[] args) { + String filePath = "//4G_06.bin"; + // 两个斜杠 留一个 + filePath = filePath.replaceAll("//", "/"); + System.out.println(filePath); + } + /** * 修改充电桩固件信息 * diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java index acee2f8a0..33f709e77 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMemberRelationServiceImpl.java @@ -1,6 +1,8 @@ package com.jsowell.pile.service.impl; +import com.google.common.collect.Lists; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.PileMemberRelation; import com.jsowell.pile.mapper.PileMemberRelationMapper; import com.jsowell.pile.service.PileConnectorInfoService; @@ -108,10 +110,12 @@ public class PileMemberRelationServiceImpl implements PileMemberRelationService @Override public List selectPileMemberRelationByPileSn(String pileSn) { + if (StringUtils.isBlank(pileSn)) { + return Lists.newArrayList(); + } PileMemberRelation pileMemberRelation = new PileMemberRelation(); pileMemberRelation.setPileSn(pileSn); return selectPileMemberRelationList(pileMemberRelation); } - } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java index c9c291fb7..4d72ec851 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileMsgRecordServiceImpl.java @@ -202,7 +202,7 @@ public class PileMsgRecordServiceImpl implements PileMsgRecordService { OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByTransactionCode(transactionCode); // 订单号 - String orderCode = orderBasicInfo.getOrderCode(); + String orderCode = orderBasicInfo != null ? orderBasicInfo.getOrderCode() : "无"; // 充电度数 String totalElectricity = jsonObject.getString("totalElectricity"); @@ -220,6 +220,7 @@ public class PileMsgRecordServiceImpl implements PileMsgRecordService { String pileConnectorCode = jsonObject.getString("pileSn") + jsonObject.getString("connectorCode"); return "订单号:" + orderCode + ", " + + "交易流水号:" + transactionCode + ", " + "枪口编号:" + pileConnectorCode + ", " + "充电度数:" + totalElectricity + ", " + "消费金额:" + consumptionAmount + ", " + diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java index 9c68eabdf..6b7250f78 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileReservationInfoServiceImpl.java @@ -1,35 +1,44 @@ package com.jsowell.pile.service.impl; +import com.alibaba.fastjson2.JSON; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; +import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; +import com.jsowell.common.core.page.PageResponse; +import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.StringUtils; +import com.jsowell.pile.domain.PileMemberRelation; import com.jsowell.pile.domain.ykcCommond.ReservationChargingCommand; +import com.jsowell.pile.dto.CreateReservedDTO; +import com.jsowell.pile.dto.PersonPileStopChargingDTO; import com.jsowell.pile.dto.PileReservationDTO; import com.jsowell.pile.dto.StartPersonPileDTO; -import com.jsowell.pile.service.MemberPlateNumberRelationService; -import com.jsowell.pile.service.PileBasicInfoService; -import com.jsowell.pile.service.PileRemoteService; -import com.jsowell.pile.vo.uniapp.MemberPlateNumberVO; +import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.PileReservationInfoVO; +import com.jsowell.pile.vo.uniapp.customer.MemberPlateNumberVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.sql.Date; import java.sql.Time; import java.time.LocalDateTime; import java.time.LocalTime; -import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; import com.jsowell.pile.mapper.PileReservationInfoMapper; import com.jsowell.pile.domain.PileReservationInfo; -import com.jsowell.pile.service.PileReservationInfoService; @Slf4j @Service @@ -47,6 +56,12 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic @Autowired private MemberPlateNumberRelationService memberPlateNumberRelationService; + @Autowired + private PileMemberRelationService pileMemberRelationService; + + @Autowired + private RedisCache redisCache; + @Override public int deleteByPrimaryKey(Integer id) { return pileReservationInfoMapper.deleteByPrimaryKey(id); @@ -64,6 +79,11 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic @Override public int insertOrUpdateSelective(PileReservationInfo record) { + if (record.getId() == null) { + record.setCreateTime(DateUtils.getNowDate()); + } else { + record.setUpdateTime(DateUtils.getNowDate()); + } return pileReservationInfoMapper.insertOrUpdateSelective(record); } @@ -107,6 +127,10 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic return pileReservationInfoMapper.findByMemberIdAndPileSn(memberId, pileSn); } + public PileReservationInfo selectByPileConnectorCode(String pileConnectorCode) { + return pileReservationInfoMapper.selectByPileConnectorCode(pileConnectorCode); + } + /** * 启用预约/开启预约/启动预约 */ @@ -152,6 +176,7 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic .connectorCode(pileReservationInfo.getPileConnectorCode().replace(pileReservationInfo.getPileSn(), "")) .operation("01") .reservationType(type) + .verifyIdentity(pileReservationInfo.getVerifyIdentity()) .vin1(vinCodes.get(0)) .vin2(vinCodes.get(1)) .vin3(vinCodes.get(2)) @@ -202,6 +227,7 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic .connectorCode(pileReservationInfo.getPileConnectorCode().replace(pileReservationInfo.getPileSn(), "")) .operation("02") .reservationType(type) + .verifyIdentity(pileReservationInfo.getVerifyIdentity()) .vin1(vinCodes.get(0)) .vin2(vinCodes.get(1)) .vin3(vinCodes.get(2)) @@ -292,5 +318,171 @@ public class PileReservationInfoServiceImpl implements PileReservationInfoServic pileReservationInfo.setDelFlag(DelFlagEnum.DELETE.getValue()); pileReservationInfoMapper.updateByPrimaryKey(pileReservationInfo); } + + @Override + public int createReservation(CreateReservedDTO dto) { + PileReservationInfo reservedInfo = selectByPileConnectorCode(dto.getPileConnectorCode()); + if (reservedInfo == null) { + reservedInfo = new PileReservationInfo(); + reservedInfo.setCreateBy(dto.getMemberId()); + } else { + reservedInfo.setUpdateBy(dto.getMemberId()); + } + reservedInfo.setMemberId(dto.getMemberId()); + reservedInfo.setPileSn(dto.getPileSn()); + reservedInfo.setPileConnectorCode(dto.getPileConnectorCode()); + reservedInfo.setStatus(Constants.ONE); // 默认生效 + // reservedInfo.setStartTime(DateUtils.parseDate(dto.getStartTime())); + reservedInfo.setStartTime(Time.valueOf(dto.getStartTime())); + // reservedInfo.setEndTime(DateUtils.parseDate(dto.getEndTime())); + if (StringUtils.isNotBlank(dto.getEndTime())) { + reservedInfo.setEndTime(Time.valueOf(dto.getEndTime())); + } + + // 2024年7月25日14点36分, 此段代码注释掉, 采用默认设置 + // if (StringUtils.isNotBlank(dto.getFreq())) { + // reservedInfo.setReservationType("recurring"); + // reservedInfo.setFreq(dto.getFreq()); + // } else { + // reservedInfo.setReservationType("single"); + // reservedInfo.setFreq(null); + // } + + // 默认每天 + reservedInfo.setReservationType("recurring"); + reservedInfo.setFreq("daily"); + + this.insertOrUpdateSelective(reservedInfo); + return reservedInfo.getId(); + } + + @Override + public PageResponse queryReservationList(PileReservationDTO dto) { + int pageNo = dto.getPageNo() == null ? Constants.one : dto.getPageNo(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + PageHelper.startPage(pageNo, pageSize); + List list = this.getReservationsByMemberIdAndPileSn(dto.getMemberId(), dto.getPileSn()); + PageInfo pageInfo = new PageInfo<>(list); + + PageResponse pageResponse = new PageResponse(); + pageResponse.setPageNum(pageInfo.getPageNum()); + pageResponse.setPageSize(pageInfo.getPageSize()); + pageResponse.setPages(pageInfo.getPages()); + pageResponse.setTotal(pageInfo.getTotal()); + + List resultList = Lists.newArrayList(); + for (PileReservationInfo reservedInfo : pageInfo.getList()) { + resultList.add( + PileReservationInfoVO.builder() + // .reservationId(reservedInfo.getId() + "") + .pileSn(reservedInfo.getPileSn()) + .startTime(reservedInfo.getStartTime().toString()) + .endTime(reservedInfo.getEndTime().toString()) + // .freq(reservedInfo.getFreq()) + .status(reservedInfo.getStatus()) + .build() + ); + } + pageResponse.setList(resultList); + return pageResponse; + } + + /** + * 修改预约状态 + * @param dto + */ + @Override + public void updateReservationStatus(PileReservationDTO dto) { + if (StringUtils.equals(dto.getStatus(), Constants.ZERO)) { + // 停用 + this.deactivateReserved(dto); + } else if (StringUtils.equals(dto.getStatus(), Constants.ONE)) { + // 启用 + this.activateReserved(dto); + } + } + + /** + * 修改预约充电信息 + * @param dto + */ + @Override + public void updateReservation(PileReservationDTO dto) { + PileReservationInfo pileReservationInfo = pileReservationInfoMapper.selectByPrimaryKey(Integer.valueOf(dto.getReservedId())); + if (pileReservationInfo == null) { + return; + } + if (!StringUtils.equals(dto.getMemberId(), pileReservationInfo.getMemberId())) { + return; + } + + if (StringUtils.isNotBlank(dto.getStartTime())) { + pileReservationInfo.setStartTime(Time.valueOf(dto.getStartTime())); + } + if (StringUtils.isNotBlank(dto.getEndTime())) { + pileReservationInfo.setEndTime(Time.valueOf(dto.getEndTime())); + } + if (StringUtils.isNotBlank(dto.getStatus())) { + pileReservationInfo.setStatus(dto.getStatus()); + } + if (StringUtils.isNotBlank(dto.getVerifyIdentity())) { + pileReservationInfo.setVerifyIdentity(dto.getVerifyIdentity()); + } + pileReservationInfo.setUpdateBy(dto.getMemberId()); + this.insertOrUpdateSelective(pileReservationInfo); + } + + /** + * 个人桩停止充电 + * @param dto + */ + @Override + public void personPileStopCharging(PersonPileStopChargingDTO dto) { + String pileConnectorCode = dto.getPileConnectorCode(); + String pileSn = StringUtils.substring(pileConnectorCode, 0, pileConnectorCode.length() - 2); + String connectorCode = StringUtils.substring(pileConnectorCode, pileConnectorCode.length() - 2, pileConnectorCode.length()); + // 查询个人桩信息 + List pileMemberRelations = pileMemberRelationService.selectPileMemberRelationByPileSn(pileSn); + Map> listMap = pileMemberRelations.stream() + .collect(Collectors.groupingBy(PileMemberRelation::getType, Collectors.mapping(PileMemberRelation::getMemberId, Collectors.toList()))); + log.info("个人桩:{}, 使用者信息:{}", pileConnectorCode, JSON.toJSONString(listMap)); + // 发送请求的用户有没有权限停止充电 + boolean stopFlag = false; + List pileManager = listMap.get("1"); + List pileUsers = listMap.get("2"); + + if (CollectionUtils.isNotEmpty(pileManager) && CollectionUtils.containsAny(pileManager, dto.getMemberId())) { + log.info("memberId:() 为管理员"); + stopFlag = true; + } + if (CollectionUtils.isNotEmpty(pileUsers) && CollectionUtils.containsAny(pileUsers, dto.getMemberId())) { + log.info("memberId:() 为用户"); + stopFlag = true; + } + + if (stopFlag) { + String pileIsChargingKey = CacheConstants.PILE_IS_CHARGING + pileSn + connectorCode; + String redisResult = redisCache.getCacheObject(pileIsChargingKey); + // 发送停止充电指令 + log.info("发送停止指令, pileSn:{}, connectorCode:{}, transactionCode:{}", pileSn, connectorCode, redisResult); + pileRemoteService.remoteStopCharging(pileSn, connectorCode, redisResult); + } + } + + @Override + public PileReservationInfoVO queryReservationInfo(PileReservationDTO dto) { + PileReservationInfo pileReservationInfo = pileReservationInfoMapper.selectByPileConnectorCode(dto.getPileConnectorCode()); + PileReservationInfoVO build = PileReservationInfoVO.builder() + .reservedId(pileReservationInfo.getId() + "") + .pileSn(pileReservationInfo.getPileSn()) + .pileConnectorCode(pileReservationInfo.getPileConnectorCode()) + .startTime(pileReservationInfo.getStartTime().toString()) + .endTime(pileReservationInfo.getEndTime().toString()) + .verifyIdentity(pileReservationInfo.getVerifyIdentity()) + // .freq(pileReservationInfo.getFreq()) + .status(pileReservationInfo.getStatus()) + .build(); + return build; + } } 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 179bec154..d1e1d4d84 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 @@ -1,6 +1,5 @@ package com.jsowell.pile.service.impl; -import cn.hutool.core.util.PageUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; @@ -11,29 +10,29 @@ import com.jsowell.common.core.domain.entity.SysUser; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; +import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum; +import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.enums.ykc.YKCPileFaultReasonEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; import com.jsowell.common.util.ip.AddressUtils; import com.jsowell.pile.domain.PileBasicInfo; import com.jsowell.pile.domain.PileStationInfo; +import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.domain.ThirdpartyParkingConfig; -import com.jsowell.pile.dto.FastCreateStationDTO; -import com.jsowell.pile.dto.QueryStationDTO; -import com.jsowell.pile.dto.QueryStationInfoDTO; +import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.amap.GetStationInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO; import com.jsowell.pile.mapper.PileStationInfoMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.base.MerchantInfoVO; -import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.base.StationInfoVO; -import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; +import com.jsowell.pile.vo.SupStationStatsVO; +import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; +import com.jsowell.pile.vo.web.MerchantOrderReportVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.system.service.SysDeptService; import com.jsowell.system.service.SysUserService; @@ -45,9 +44,13 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -89,6 +92,9 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { @Autowired private OrderBasicInfoService orderBasicInfoService; + @Autowired + private SettleOrderReportService settleOrderReportService; + /** * 查询充电站信息 @@ -624,5 +630,116 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { return pileStationInfoMapper.queryInfoByDeptId(deptId); } + @Override + public List getStationInfosByMerchantIds(List merchantIds){ + return pileStationInfoMapper.getStationInfosByMerchantIds(merchantIds); + } + + /** + * 获取站点统计信息 + * @param dto + */ + @Override + public List getStationStatisticsInfos(StationStatisticsInfoDTO dto) { + String merchantId = dto.getMerchantId(); + // 获取当前登录账号的运营商权限 + List merchantInfoVOList = UserUtils.getMerchantInfoVOList(); + List merchantIds = new ArrayList<>(); + List resultList = new ArrayList<>(); + if (StringUtils.isBlank(merchantId)) { + merchantIds = merchantInfoVOList.stream() + .map(MerchantInfoVO::getMerchantId) + .collect(Collectors.toList()); + }else { + merchantIds.add(merchantId); + } + // 根据运营商ids查出所有站点id + List pileStationInfos = getStationInfosByMerchantIds(merchantIds); + if (CollectionUtils.isEmpty(pileStationInfos)) { + // 未查到该运营商下的站点 + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + List stationIds = pileStationInfos.stream() + .map(x -> String.valueOf(x.getId())) + .collect(Collectors.toList()); + // 创建DecimalFormat对象并设置格式 + DecimalFormat df = new DecimalFormat("0.00%"); + // 根据站点ids查询站点营收报表 + List list = settleOrderReportService.queryOrderReport(stationIds, dto.getStartTime(), dto.getEndTime()); + if (CollectionUtils.isEmpty(list)) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + // 根据站点id分组,将充电度数、充电金额、充电次数进行累加 + Map collect = list.stream() + .sorted(Comparator.comparing(SettleOrderReport::getStationId)) + // .filter(vo -> vo.getChargingTime() != null && vo.getTotalPower() != null) + .collect(Collectors.toMap(SettleOrderReport::getStationId, Function.identity(), + (a, b) -> { + a.setUseElectricity(a.getUseElectricity().add(b.getUseElectricity())); + a.setTotalAmount(a.getTotalAmount().add(b.getTotalAmount())); + a.setChargeNum(String.valueOf(Integer.parseInt(a.getChargeNum()) + Integer.parseInt(b.getChargeNum()))); + return a; + })); + + + for (Map.Entry entry: collect.entrySet()) { + String stationId = entry.getKey(); + SettleOrderReport report = entry.getValue(); + + // 查询枪口列表 + List uniAppConnectorList = pileConnectorInfoService.getUniAppConnectorList(Long.parseLong(stationId)); + + int chargingConnectorNum = Constants.zero; // 充电中 + int freeConnectorNum = Constants.zero; // 空闲 + int occupiedConnectorNum = Constants.zero; // 占用 + int hangingConnectorNum = Constants.zero; // 挂起 + int offlineConnectorNum = Constants.zero; // 离线 + int faultConnectorNum = Constants.zero; // 故障 + + for (ConnectorInfoVO connectorInfoVO : uniAppConnectorList) { + String connectorStatus = connectorInfoVO.getConnectorStatus(); + if (StringUtils.equals(PileConnectorDataBaseStatusEnum.FREE.getValue(), connectorStatus)) { + // 空闲 + freeConnectorNum += 1; + }else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OCCUPIED_NOT_CHARGED.getValue(), connectorStatus)) { + // 占用(未充电) + occupiedConnectorNum += 1; + }else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OCCUPIED_CHARGING.getValue(), connectorStatus)) { + // 充电中 + chargingConnectorNum += 1; + }else if (StringUtils.equals(PileConnectorDataBaseStatusEnum.OFF_NETWORK.getValue(), connectorStatus)) { + // 离线 + offlineConnectorNum += 1; + }else if(StringUtils.equals(PileConnectorDataBaseStatusEnum.FAULT.getValue(), connectorStatus)) { + // 故障 + faultConnectorNum += 1; + } + } + // 计算枪口可使用率 + int totalConnectorNum = uniAppConnectorList.size(); + double connectorAvailability = (double) freeConnectorNum / totalConnectorNum; + String format = df.format(connectorAvailability); + + StationStatisticsInfosVO vo = StationStatisticsInfosVO.builder() + .stationId(stationId) + // .stationName(pileStationInfo.getStationName()) + .chargeDegree(report.getUseElectricity()) + .chargeAmount(report.getTotalAmount()) + .orderQuantity(Integer.parseInt(report.getChargeNum())) + .connectorAvailability(format) + .chargingConnectorNum(chargingConnectorNum) + .freeConnectorNum(freeConnectorNum) + .occupiedConnectorNum(occupiedConnectorNum) + .hangingConnectorNum(hangingConnectorNum) + .offlineConnectorNum(offlineConnectorNum) + .faultConnectorNum(faultConnectorNum) + .build(); + + resultList.add(vo); + } + + return resultList; + } + } 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 9a26bc84b..35610bbf5 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 @@ -20,7 +20,6 @@ import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelFutureListener; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -59,7 +58,7 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { YKCUtils.frameType2Str(YKCFrameTypeCode.REMOTE_RESTART_CODE.getBytes()), YKCUtils.frameType2Str(YKCFrameTypeCode.REMOTE_CONTROL_START_CODE.getBytes()), YKCUtils.frameType2Str(YKCFrameTypeCode.REMOTE_STOP_CHARGING_CODE.getBytes()), - YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVE_CHARGING_CODE.getBytes()) + YKCUtils.frameType2Str(YKCFrameTypeCode.RESERVATION_CHARGING_CODE.getBytes()) ); /** @@ -183,7 +182,7 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { } /** - * 发送停止ch + * 发送停止充电 * * @param command */ @@ -330,7 +329,7 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 额定功率 String ratedPower = pileModelInfoVO.getRatedPower(); - int i = Integer.parseInt(ratedPower); + // int i = Integer.parseInt(ratedPower); // byte[] ratedPowerByteArr = Base64.getDecoder().decode(ratedPower); byte[] ratedPowerByteArr = BytesUtil.ensureLength(Constants.zeroByteArray, 2); @@ -506,6 +505,10 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { String reservationType = command.getReservationType(); byte[] reservationTypeByteArr = BytesUtil.str2Bcd(reservationType); + // 身份验证 + String verifyIdentity = command.getVerifyIdentity(); + byte[] verifyIdentityByteArr = BytesUtil.str2Bcd(verifyIdentity); + // VIN1 String vin1 = command.getVin1(); byte[] vin1ByteArr = BytesUtil.str2Asc(vin1); @@ -533,12 +536,12 @@ public class YKCPushCommandServiceImpl implements YKCPushCommandService { // 拼装msg信息 byte[] msg = Bytes.concat(transactionCodeArr, pileSnByteArr, connectorCodeByteArr, operateByteArr, - reservationTypeByteArr, vin1ByteArr, vin2ByteArr, vin3ByteArr, + reservationTypeByteArr, verifyIdentityByteArr, vin1ByteArr, vin2ByteArr, vin3ByteArr, reservedStartTimeByteArr, reservedEndTimeByteArr, amountByteArr); - this.push(msg, pileSn, YKCFrameTypeCode.RESERVE_CHARGING_CODE); + this.push(msg, pileSn, YKCFrameTypeCode.RESERVATION_CHARGING_CODE); - log.info("=====平台下发指令=====: 预约充电指令, 交易流水号:{}, 桩编号:{}, 枪口号:{}, 操作:{}, 开始时间:{}, 结束时间:{}, 启动金额:{}", - transactionCode, pileSn, connectorCode, operation, DateUtils.formatDateTime(reservedStartTime), DateUtils.formatDateTime(reservedEndTime), amount); + log.info("=====平台下发指令=====: 预约充电指令, 交易流水号:{}, 桩编号:{}, 枪口号:{}, 操作:{}, 身份验证:{}, 开始时间:{}, 结束时间:{}, 启动金额:{}", + transactionCode, pileSn, connectorCode, operation, verifyIdentity, DateUtils.formatDateTime(reservedStartTime), DateUtils.formatDateTime(reservedEndTime), amount); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 47187d95f..a9ffca059 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -11,19 +11,16 @@ import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.ykc.*; -import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.StringUtils; -import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.*; import com.jsowell.pile.transaction.service.TransactionService; -import com.jsowell.pile.vo.uniapp.MemberVO; -import com.jsowell.pile.vo.uniapp.PersonalPileInfoVO; -import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.PersonalPileInfoVO; +import com.jsowell.pile.vo.uniapp.customer.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; -import com.jsowell.wxpay.dto.WechatSendMsgDTO; import com.jsowell.wxpay.service.WxAppletRemoteService; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; @@ -108,7 +105,10 @@ public abstract class AbstractProgramLogic implements InitializingBean { protected MemberGroupService memberGroupService; @Autowired - private PileStationWhitelistService pileStationWhitelistService; + protected PileStationWhitelistService pileStationWhitelistService; + + @Autowired + protected PersonalChargingRecordService personalChargingRecordService; @Autowired protected RedisCache redisCache; @@ -478,6 +478,10 @@ public abstract class AbstractProgramLogic implements InitializingBean { BigDecimal tempAmount = new BigDecimal(orderAmount.toString()); // 临时金额 for (OrderPayRecord record : payRecordList) { + if (!StringUtils.equals(record.getPayMode(), OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())) { + // 不是本金支付, 进行下一个循环 + continue; + } List paymentInfos = orderPayRecordService.parseDeductionRecord(record.getDeductionRecord()); for (PaymentInfo object : paymentInfos) { String paymentId = object.getPaymentId(); @@ -744,7 +748,7 @@ public abstract class AbstractProgramLogic implements InitializingBean { protected Map calculateTheAmount(MemberVO memberVO) { BigDecimal principalBalancePay; BigDecimal giftBalancePay; - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + BigDecimal totalAccountAmount = memberVO.getTotalBalance(); // 余额支付最大下发200 BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT; if (totalAccountAmount.compareTo(defaultAmount) < 0) { 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 67bbbccbe..de933a2b3 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 @@ -29,7 +29,7 @@ import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; @@ -253,7 +253,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 查询该会员的余额 在所属运营商的余额 MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId); // 总余额 - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + BigDecimal totalAccountAmount = memberVO.getTotalBalance(); if (totalAccountAmount.compareTo(chargeAmount) < 0) { // 总余额小于充电金额 throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); @@ -718,7 +718,8 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 查支付记录 List payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); // 根据payMode分组 - Map> payRecordMap = payRecordList.stream().collect(Collectors.groupingBy(OrderPayRecord::getPayMode)); + Map> payRecordMap = payRecordList.stream() + .collect(Collectors.groupingBy(OrderPayRecord::getPayMode)); // 获取本金支付的记录 List principalPayRecordList = payRecordMap.get(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()); BigDecimal principalPay = null; @@ -737,7 +738,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 计算需要退回的金额 Map returnAmountMap = calculateReturnAmount(principalPay, giftPay, orderAmount, discountAmount); logger.info("结算订单:{}, 剩余金额退回余额, 订单消费金额:{}, 本金支付金额:{}, 赠送支付金额:{}, 退回金额map:{}", - orderCode, orderAmount, principalPay, null, JSON.toJSONString(returnAmountMap)); + orderCode, orderAmount, principalPay, giftPay, JSON.toJSONString(returnAmountMap)); // 需要退回本金的金额 BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal"); @@ -843,7 +844,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { if (!b) { throw new BusinessException("00600006", "个人桩启动失败,无启动权限"); } - String orderCode; + // 生成订单 GenerateOrderDTO generateOrderDTO = new GenerateOrderDTO(); generateOrderDTO.setMemberId(dto.getMemberId()); @@ -852,18 +853,28 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { generateOrderDTO.setStartType(dto.getStartType()); generateOrderDTO.setPileSn(pileSn); generateOrderDTO.setConnectorCode(connectorCode); + + OrderBasicInfo orderBasicInfo; try { - OrderBasicInfo orderBasicInfo = generateOrder(generateOrderDTO); - orderCode = orderBasicInfo.getOrderCode(); + orderBasicInfo = generateOrder(generateOrderDTO); } catch (ParseException e) { throw new RuntimeException(e); } // 支付订单 PayOrderDTO payOrderDTO = new PayOrderDTO(); - payOrderDTO.setOrderCode(orderCode); + payOrderDTO.setOrderCode(orderBasicInfo.getOrderCode()); payOrderDTO.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue()); payOrderDTO.setMemberId(dto.getMemberId()); payOrder(payOrderDTO); - return orderCode; + + // 插入个人桩充电记录表 + try { + personalChargingRecordService.processPersonalChargingRecord(orderBasicInfo); + } catch (Exception e) { + logger.error("插入个人桩充电记录表error, orderCode:{}, transactionCode:{}", + orderBasicInfo.getOrderCode(), orderBasicInfo.getTransactionCode()); + } + + return orderBasicInfo.getOrderCode(); } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java index 6041af670..147db42fd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/NotDelayMerchantProgramLogic.java @@ -30,7 +30,7 @@ import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import com.jsowell.pile.vo.web.BalanceDeductionAmountVO; import com.jsowell.pile.vo.web.OrderDetailInfoVO; import com.jsowell.pile.vo.web.UpdateMemberBalanceDTO; @@ -237,7 +237,7 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { // 查询该会员的余额 在所属运营商的余额 MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(memberId, merchantId); // 总余额 - BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); + BigDecimal totalAccountAmount = memberVO.getTotalBalance(); if (totalAccountAmount.compareTo(chargeAmount) < 0) { // 总余额小于充电金额 throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); @@ -687,24 +687,35 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { // 查支付记录 List payRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); - Map payRecordMap = payRecordList.stream() - .collect(Collectors.toMap(OrderPayRecord::getPayMode, Function.identity(), (k1, k2) -> k1)); - // 取出本金支付金额 - BigDecimal principalPay = null; + // 根据payMode分组 + Map> payRecordMap = payRecordList.stream() + .collect(Collectors.groupingBy(OrderPayRecord::getPayMode)); // 获取本金支付的记录 - OrderPayRecord principalPayRecord = payRecordMap.get(Constants.ONE); - if (principalPayRecord != null) { - principalPay = principalPayRecord.getPayAmount(); + List principalPayRecordList = payRecordMap.get(OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue()); + BigDecimal principalPay = null; + if (CollectionUtils.isNotEmpty(principalPayRecordList)) { + principalPay = principalPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add); } + // 获取赠送金支付的记录 + List giftPayRecordList = payRecordMap.get(OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue()); + BigDecimal giftPay = null; + if (CollectionUtils.isNotEmpty(giftPayRecordList)) { + giftPay = giftPayRecordList.stream().map(OrderPayRecord::getPayAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + } + + BigDecimal discountAmount = orderBasicInfo.getDiscountAmount() == null ? BigDecimal.ZERO : orderBasicInfo.getDiscountAmount(); + // 计算需要退回的金额 - Map returnAmountMap = calculateReturnAmount(principalPay, null, orderAmount); + Map returnAmountMap = calculateReturnAmount(principalPay, giftPay, orderAmount, discountAmount); logger.info("结算订单:{}, 剩余金额退回余额, 订单消费金额:{}, 本金支付金额:{}, 赠送支付金额:{}, 退回金额map:{}", - orderCode, orderAmount, principalPay, null, JSON.toJSONString(returnAmountMap)); + orderCode, orderAmount, principalPay, giftPay, JSON.toJSONString(returnAmountMap)); // 需要退回本金的金额 BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal"); + // 需要退回赠送金的金额 + BigDecimal returnGift = returnAmountMap.get("returnGift"); // 更新会员钱包/余额退回到钱包 UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() @@ -712,6 +723,7 @@ public class NotDelayMerchantProgramLogic extends AbstractProgramLogic { .type(MemberWalletEnum.TYPE_IN.getValue()) // 进账 .subType(MemberWalletEnum.SUBTYPE_ORDER_SETTLEMENT_REFUND.getValue()) // 订单结算退款 .updatePrincipalBalance(returnPrincipal) + .updateGiftBalance(returnGift) .relatedOrderCode(orderCode) .build(); memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservedVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservationInfoVO.java similarity index 71% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservedVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservationInfoVO.java index 3e7387c15..4e32f9d39 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservedVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/PileReservationInfoVO.java @@ -7,7 +7,7 @@ import lombok.Setter; @Getter @Setter @Builder -public class PileReservedVO { +public class PileReservationInfoVO { private String reservedId; /** @@ -15,6 +15,11 @@ public class PileReservedVO { */ private String pileSn; + /** + * 充电桩枪口编号 + */ + private String pileConnectorCode; + /** * 预约开始时间 */ @@ -28,11 +33,16 @@ public class PileReservedVO { /** * 周期性预约的频率,对于单次预约,该字段可以为 NULL。可能的值包括 daily, weekly, monthly */ - private String freq; + // private String freq; /** * 状态(0-未生效;1-生效) */ private String status; + /** + * 验证身份(1-是; 0-否) + */ + private String verifyIdentity; + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java new file mode 100644 index 000000000..71bdfa25d --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationStatisticsInfosVO.java @@ -0,0 +1,81 @@ +package com.jsowell.pile.vo.uniapp.business; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 站点统计信息数据 + * + * @author Lemon + * @Date 2024/7/16 13:59:17 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class StationStatisticsInfosVO { + + /** + * 站点id + */ + private String stationId; + + /** + * 站点名称 + */ + private String stationName; + + /** + * 充电度数 + */ + private BigDecimal chargeDegree; + + /** + * 充电金额 + */ + private BigDecimal chargeAmount; + + /** + * 充电订单数量 + */ + private Integer orderQuantity; + + /** + * 充电枪可使用率(空闲中/总枪口数量) + */ + private String connectorAvailability; + + /** + * 充电中的设备数量 + */ + private Integer chargingConnectorNum; + + /** + * 空闲中的设备数量 + */ + private Integer freeConnectorNum; + + /** + * 占用中的设备数量 + */ + private Integer occupiedConnectorNum; + + /** + * 挂起中的设备数量 + */ + private Integer hangingConnectorNum; + + /** + * 离线设备数量 + */ + private Integer offlineConnectorNum; + + /** + * 故障桩数量 + */ + private Integer faultConnectorNum; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/AuthCardVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/AuthCardVO.java similarity index 93% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/AuthCardVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/AuthCardVO.java index 81c1234ae..a2f6b26f5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/AuthCardVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/AuthCardVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/BillingPriceVO.java similarity index 96% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/BillingPriceVO.java index f0f55fa9c..1bd4b2578 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/BillingPriceVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/BillingPriceVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.common.enums.ykc.BillingTimeTypeEnum; import lombok.AllArgsConstructor; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/CurrentTimePriceDetails.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/CurrentTimePriceDetails.java index da475d7f7..d27bdb386 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/CurrentTimePriceDetails.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/CurrentTimePriceDetails.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/GroundLockInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/GroundLockInfoVO.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/GroundLockInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/GroundLockInfoVO.java index 6d6708cc4..1c2ab497f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/GroundLockInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/GroundLockInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceRecordVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceRecordVO.java similarity index 92% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceRecordVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceRecordVO.java index 3e55fbf30..54a336530 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceRecordVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceRecordVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceTitleVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceTitleVO.java similarity index 94% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceTitleVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceTitleVO.java index 4213a376b..5e70cda59 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/InvoiceTitleVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/InvoiceTitleVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberBalanceVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberBalanceVO.java similarity index 80% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberBalanceVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberBalanceVO.java index 4d2dbe314..8cb159bd7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberBalanceVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberBalanceVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberPlateNumberVO.java similarity index 93% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberPlateNumberVO.java index dcd93b1ff..71414caa8 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberPlateNumberVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberPlateNumberVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.common.annotation.Excel; import lombok.AllArgsConstructor; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java similarity index 94% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java index 7aa401cb4..1ed1215a3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; @@ -63,7 +63,7 @@ public class MemberVO { /** * 总账户余额 */ - private BigDecimal totalAccountAmount; + private BigDecimal totalBalance; /** * 注册天数 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletInfoVO.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletInfoVO.java index f668d8954..bfeea06a7 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.common.core.page.PageResponse; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletLogVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletLogVO.java similarity index 96% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletLogVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletLogVO.java index b4027d98e..8ecf0f18a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MemberWalletLogVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MemberWalletLogVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MerchantVipVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MerchantVipVO.java similarity index 96% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MerchantVipVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MerchantVipVO.java index 2ff63b5e7..a61f0b478 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/MerchantVipVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/MerchantVipVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OccupyOrderDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OccupyOrderDetailVO.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OccupyOrderDetailVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OccupyOrderDetailVO.java index c1ca09612..38e5a8f4b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OccupyOrderDetailVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OccupyOrderDetailVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderPileOccupyVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderPileOccupyVO.java similarity index 94% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderPileOccupyVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderPileOccupyVO.java index 93fdd6216..3d8e70272 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderPileOccupyVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderPileOccupyVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java similarity index 97% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java index e51a04819..c335777a5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/OrderVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PayModeVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PayModeVO.java similarity index 89% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PayModeVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PayModeVO.java index ad9330f5f..c67215c14 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PayModeVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PayModeVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileConnectorSumInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java similarity index 93% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileConnectorSumInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java index 4e5f2662b..99458c970 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileConnectorSumInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileConnectorSumInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileRealTimeVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileRealTimeVO.java similarity index 81% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileRealTimeVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileRealTimeVO.java index 88c43f441..d0b081dd5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonPileRealTimeVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonPileRealTimeVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; @@ -45,4 +45,14 @@ public class PersonPileRealTimeVO { * 实时功率 */ private String instantPower; + + /** + * 枪口状态 + */ + private String status; + + /** + * soc + */ + private String soc; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonalPileInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonalPileInfoVO.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonalPileInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonalPileInfoVO.java index fa49589a1..1415ca3cf 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PersonalPileInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PersonalPileInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorDetailVO.java similarity index 95% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorDetailVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorDetailVO.java index cf51cd15f..1948e31f5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorDetailVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorDetailVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorVO.java similarity index 94% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorVO.java index 422fb151a..1111aba55 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileConnectorVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileConnectorVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileInfoVO.java similarity index 93% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileInfoVO.java index 4ef5e56ee..8c4ac346f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/PileInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/PileInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.web.BillingTemplateVO; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/SendMessageVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/SendMessageVO.java similarity index 96% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/SendMessageVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/SendMessageVO.java index 3b324a06e..0ee24d9ea 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/SendMessageVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/SendMessageVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderDetailVO.java similarity index 83% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderDetailVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderDetailVO.java index d5ac1819c..3a7e3b477 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderDetailVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderDetailVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java similarity index 98% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java index 474cd6bbd..4790a918d 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/UniAppOrderVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo.uniapp; +package com.jsowell.pile.vo.uniapp.customer; import com.jsowell.pile.vo.base.OrderAmountDetailVO; import lombok.AllArgsConstructor; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/InvoiceRecordVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/InvoiceRecordVO.java index 6c10d39a9..296ddac53 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/InvoiceRecordVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/InvoiceRecordVO.java @@ -1,7 +1,7 @@ package com.jsowell.pile.vo.web; import com.jsowell.pile.vo.base.OrderAmountDetailVO; -import com.jsowell.pile.vo.uniapp.InvoiceTitleVO; +import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java index 17b8af49e..c88a6bda9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java @@ -4,7 +4,7 @@ import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.pile.vo.base.OrderAmountDetailVO; import com.jsowell.pile.vo.base.OrderPeriodAmountVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.MemberVO; +import com.jsowell.pile.vo.uniapp.customer.MemberVO; import lombok.*; import java.util.List; diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java index 30fd3a86c..ee2f9f9e6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/service/WxAppletRemoteService.java @@ -17,8 +17,8 @@ import com.jsowell.pile.domain.MemberBasicInfo; import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.PileBillingTemplateService; import com.jsowell.pile.service.OrderBasicInfoService; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; -import com.jsowell.pile.vo.uniapp.SendMessageVO; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.SendMessageVO; import com.jsowell.wxpay.config.WeixinLoginProperties; import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO; import com.jsowell.wxpay.dto.WechatSendMsgDTO; @@ -72,19 +72,14 @@ public class WxAppletRemoteService { @Value("${weixin.sendMsg.stopChargingTmpId}") private String stopChargingTmpId; + @Value("${weixin.sendMsg.startupResultTmpId}") + private String startupResultTmpId; /** * 获取accessToken * * @return */ public String getAccessToken() { - // String appid = Constants.APP_ID; - // String secret = Constants.APP_SECRET; - - // 这里我是从配置文件中取得appid和appsecret - // appid = properties.getAppId(); - // secret = properties.getAppSecret(); - //查询token是否存在 String redisKey = CacheConstants.ACCESS_TOKEN + appid; // 使用缓存先查询AccessToken是否存在 @@ -236,7 +231,6 @@ public class WxAppletRemoteService { return uniAppSendMsg(msgInfo); } - /** * 停止充电发送消息 * @param dto @@ -281,7 +275,15 @@ public class WxAppletRemoteService { } /** - * 小程序发送消息方法 + * 预约充电结果小程序服务通知 + */ + public Map reservationStartupResultSendMsg() { + AppletTemplateMessageSendDTO msgInfo = new AppletTemplateMessageSendDTO(); + return uniAppSendMsg(msgInfo); + } + + /** + * 小程序发送消息方法/小程序通知/服务通知 * @param dto * @return */ diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberBasicInfoMapper.xml index 0197bb577..b7025ae99 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberBasicInfoMapper.xml @@ -127,7 +127,7 @@ - SELECT t1.member_id as memberId, t1.STATUS as status, @@ -185,7 +185,7 @@ and version = #{version,jdbcType=INTEGER} - SELECT t1.member_id as memberId, t1.STATUS as status, @@ -203,7 +203,7 @@ and t1.member_id = #{memberId,jdbcType=VARCHAR} - SELECT t1.merchant_id as merchantId, t3.merchant_name as merchantName, @@ -262,7 +262,7 @@ - select t1.member_id as memberId, t1.merchant_id as merchantId, @@ -287,7 +287,7 @@ and t2.member_id like '%${dto.memberId}%' - SELECT t2.member_id AS memberId, t2.merchant_id AS merchantId, diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml index 9aa9310a4..cccf2984e 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberGroupMapper.xml @@ -154,7 +154,7 @@ AND t2.member_id = #{memberId,jdbcType=VARCHAR} - SELECT t1.merchant_id as merchantId, t1.member_id as memberId, diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberWalletLogMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberWalletLogMapper.xml index 02d23891b..9d559012c 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/MemberWalletLogMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberWalletLogMapper.xml @@ -459,7 +459,7 @@ - SELECT t1.member_id as memberId, t1.type, t1.sub_type as subType, @@ -477,7 +477,7 @@ order by t1.create_time DESC - SELECT t1.member_id as memberId, t1.type, t1.sub_type as subType, @@ -498,7 +498,7 @@ order by t1.create_time desc - select member_id as memberId, principal_balance as principalAmount from member_wallet_info diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index c5167b05f..b4ce9442c 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -2377,7 +2377,7 @@ and order_code = #{orderCode,jdbcType=VARCHAR} - SELECT t1.id, t1.order_code as orderCode, t1.transaction_code as transactionCode, @@ -2490,7 +2490,7 @@ - SELECT t1.order_code as orderCode, t1.pile_sn as pileSn, t1.connector_code as connectorCode, @@ -2534,7 +2534,7 @@ limit 1 - SELECT t1.member_id as memberId, t1.pile_connector_code as pileConnectorCode, t1.pile_sn as pileSn, @@ -2551,7 +2551,7 @@ AND t1.del_flag = '0' - SELECT t1.order_code as orderCode, t1.order_status as orderStatus, t1.reason as reason, @@ -2788,7 +2788,7 @@ and t1.pay_mode = '4' - SELECT t1.charge_start_time AS startTime, t1.station_id AS stationId, @@ -2835,7 +2835,7 @@ and member_id =#{memberId,jdbcType=VARCHAR} - SELECT t1.merchant_id as mercahntId, t3.organization_code as organizationCode, @@ -2904,4 +2904,53 @@ AND t1.charge_start_time = ]]> DATE_SUB( CURDATE(), INTERVAL 1 DAY ) AND t1.charge_start_time CURDATE() + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderPileOccupyMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderPileOccupyMapper.xml index bc8d77532..e5dfc2605 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderPileOccupyMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderPileOccupyMapper.xml @@ -895,7 +895,7 @@ order by create_time DESC - SELECT t1.occupy_code AS occupyCode, t1.STATUS AS orderStatus, @@ -915,7 +915,7 @@ t1.occupy_code = #{occupyCode,jdbcType=VARCHAR} - select t1.occupy_code as occupyCode, t1.status, @@ -997,16 +997,30 @@ order_pile_occupy t1 JOIN pile_station_info t2 ON t1.station_id = t2.id AND t1.del_flag = '0' + JOIN pile_merchant_info t3 on t2.merchant_id = t3.id and t2.del_flag = '0' - and t1.occupy_code = #{occupyCode} - and t1.member_id = #{memberId} - and t1.station_id = #{stationId} - and t1.plate_number = #{plateNumber} - and t1.status = #{status} - and t1.start_time = #{startTime} - and t1.order_amount = #{orderAmount} - and t1.pile_sn = #{pileSn} - and t1.pile_connector_code = #{pileConnectorCode} + + + and t3.dept_id in + + #{merchantDeptId} + + + + and t2.dept_id in + + #{stationDeptId} + + + and t1.occupy_code = #{dto.occupyCode} + and t1.member_id = #{dto.memberId} + and t1.station_id = #{dto.stationId} + and t1.plate_number = #{dto.plateNumber} + and t1.status = #{dto.status} + and t1.start_time = #{dto.startTime} + and t1.order_amount = #{dto.orderAmount} + and t1.pile_sn = #{dto.pileSn} + and t1.pile_connector_code = #{dto.pileConnectorCode} order by t1.create_time desc diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileAuthCardMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileAuthCardMapper.xml index a68575a1a..8571710c6 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileAuthCardMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileAuthCardMapper.xml @@ -608,7 +608,7 @@ - SELECT t1.member_id AS memberId, t1.mobile_number AS phoneNumber, t2.logic_card AS logicCard, diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml index b5a2714e1..c41521271 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml @@ -231,7 +231,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" merchant_id = #{merchantId}, station_id = #{stationId}, - business_type = #{chargerPileType,jdbcType=VARCHAR}, + + business_type = #{chargerPileType,jdbcType=VARCHAR}, + + secret_key = null, + secret_key = substring(uuid(), 1, 8), model_id = #{modelId}, update_by = #{updateBy}, update_time = #{updateTime}, @@ -293,7 +297,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT t1.id AS pileId, t1.sn AS pileSn, @@ -311,7 +315,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" t2.pile_connector_code = #{pileConnectorCode,jdbcType=VARCHAR} - SELECT t1.pile_sn as pileSn, t1.member_id as memberId, diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileReservationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileReservationInfoMapper.xml index a29fb3c7e..3b2c93ed2 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileReservationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileReservationInfoMapper.xml @@ -10,6 +10,7 @@ + @@ -21,8 +22,8 @@ - id, member_id, pile_sn, pile_connector_code, `status`, reservation_type, start_time, - end_time, freq, create_by, create_time, update_by, update_time, del_flag + id, member_id, pile_sn, pile_connector_code, `status`, reservation_type, verify_identity, + start_time, end_time, freq, create_by, create_time, update_by, update_time, del_flag + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml index 4296bf5a9..c557f04f0 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileStationInfoMapper.xml @@ -597,4 +597,14 @@ where del_flag = '0' and dept_id = #{deptId,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/amap/service/impl/AMapServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/amap/service/impl/AMapServiceImpl.java index 69669065f..d1d69425d 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/amap/service/impl/AMapServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/amap/service/impl/AMapServiceImpl.java @@ -8,7 +8,6 @@ import com.google.common.collect.Maps; import com.jsowell.common.constant.Constants; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; -import com.jsowell.common.util.spring.SpringUtils; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.PileBasicInfo; import com.jsowell.pile.domain.PileStationInfo; @@ -16,7 +15,7 @@ import com.jsowell.pile.dto.amap.GetStationInfoDTO; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.PileInfoVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.BillingDetailVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.PileModelInfoVO; @@ -38,7 +37,6 @@ import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ScheduledExecutorService; import java.util.stream.Collectors; /** diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java index 90f9251a5..ebcad5745 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/NotificationService.java @@ -121,7 +121,7 @@ public class NotificationService { ThirdPartyPlatformService platformService = ThirdPartyPlatformFactory.getInvokeStrategy(secretInfoVO.getPlatformType()); platformService.notificationConnectorChargeStatus(orderCode, secretInfoVO); } catch (Exception e) { - logger.error("设备充电中状态变化推送error", e); + logger.error("设备充电中状态变化推送error:{}", e.getMessage()); } } } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java index d64b8c93f..0c666e9ed 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/HuaweiServiceV2.java @@ -17,18 +17,14 @@ import com.jsowell.common.enums.thirdparty.huawei.StartFailedReasonEnum; import com.jsowell.common.enums.thirdparty.huawei.StopFailedReasonEnum; import com.jsowell.common.enums.ykc.OrderStatusEnum; import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; -import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.StartModeEnum; -import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.Threads; -import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.*; import com.jsowell.pile.domain.huawei.HWStationInfo; import com.jsowell.pile.domain.huawei.HWStationStatusInfo; import com.jsowell.pile.dto.GenerateOrderDTO; -import com.jsowell.pile.dto.QueryStartChargeDTO; import com.jsowell.pile.dto.ThirdPartyCommonStartChargeDTO; import com.jsowell.pile.dto.huawei.*; import com.jsowell.pile.service.*; @@ -37,7 +33,7 @@ import com.jsowell.pile.service.programlogic.ProgramLogicFactory; import com.jsowell.pile.vo.huawei.QueryChargeStatusVO; import com.jsowell.pile.vo.huawei.QueryEquipAuthVO; import com.jsowell.pile.vo.huawei.QueryStartChargeVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.lianlian.common.CommonResult; import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java index fe6c37bd0..817bb378d 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/huawei/impl/HuaWeiServiceImpl.java @@ -16,7 +16,7 @@ import com.jsowell.pile.dto.huawei.ReceiveDeliverDTO; import com.jsowell.pile.dto.huawei.VinStartChargeDTO; import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.huawei.HuaWeiService; import com.jsowell.pile.thirdparty.CommonParamsDTO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java index 4c2011ea2..7e9e521e0 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/lianlian/service/impl/LianLianServiceImpl.java @@ -34,7 +34,7 @@ import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.lianlian.PushStationFeeVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.web.PileStationVO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java index f8673613a..7f74d66d3 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/nanrui/service/impl/NRServiceImpl.java @@ -27,7 +27,7 @@ import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.web.PileStationVO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java index 7848c2e17..c062b58a8 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/ningxiajiaotou/service/impl/NXJTServiceImpl.java @@ -13,7 +13,7 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.ningxiajiaotou.NXJTOrderVO; import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO; -import com.jsowell.pile.vo.uniapp.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.platform.util.Cryptos; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/HaiNanPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/HaiNanPlatformServiceImpl.java index d1d95f895..8ebdd1022 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/HaiNanPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/HaiNanPlatformServiceImpl.java @@ -27,7 +27,7 @@ import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.BillingTemplateVO; import com.jsowell.pile.vo.web.EchoBillingTemplateVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/JiangSuPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/JiangSuPlatformServiceImpl.java index bc210d724..03c29ad00 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/JiangSuPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/JiangSuPlatformServiceImpl.java @@ -28,7 +28,7 @@ import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; -import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; +import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.web.PileStationVO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java index 61cf0f913..5f53ba63b 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java @@ -32,7 +32,7 @@ import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.lianlian.PushStationFeeVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.lianlian.domain.*; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NeiMengGuPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NeiMengGuPlatformServiceImpl.java index f8ed182c9..36d5af8ee 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NeiMengGuPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NeiMengGuPlatformServiceImpl.java @@ -36,7 +36,7 @@ import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.lianlian.domain.ConnectorChargeStatusInfo; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java index 59459ee68..06809b520 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/NinaXiaPlatformServiceImpl.java @@ -9,7 +9,6 @@ import com.google.common.collect.Maps; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.enums.lianlian.StationPaymentEnum; -import com.jsowell.common.enums.thirdparty.BusinessInformationExchangeEnum; import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum; import com.jsowell.common.enums.ykc.BillingTimeTypeEnum; import com.jsowell.common.enums.ykc.OrderStatusEnum; @@ -33,8 +32,7 @@ import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; -import com.jsowell.pile.vo.uniapp.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.lianlian.domain.ConnectorChargeStatusInfo; @@ -54,7 +52,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.time.LocalDate; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/QingHaiPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/QingHaiPlatformServiceImpl.java index f3450801a..39adb17ba 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/QingHaiPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/QingHaiPlatformServiceImpl.java @@ -26,8 +26,8 @@ import com.jsowell.pile.thirdparty.ZDLEquipmentInfo; import com.jsowell.pile.thirdparty.ZDLStationInfo; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; -import com.jsowell.pile.vo.uniapp.OrderVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.OrderVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; import com.jsowell.pile.vo.web.PileMerchantInfoVO; import com.jsowell.pile.vo.zdl.EquipBusinessPolicyVO; diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java index 2eac38c8a..7bb0b43d6 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java @@ -15,7 +15,7 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.vo.base.MerchantInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; -import com.jsowell.pile.vo.uniapp.BillingPriceVO; +import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileModelInfoVO; import com.jsowell.pile.vo.zdl.EquipBusinessPolicyVO; import com.jsowell.thirdparty.common.CommonService; diff --git a/jsowell-ui/src/api/pile/occupy.js b/jsowell-ui/src/api/pile/occupy.js index 8348ce6c6..5a9654811 100644 --- a/jsowell-ui/src/api/pile/occupy.js +++ b/jsowell-ui/src/api/pile/occupy.js @@ -50,4 +50,13 @@ export function noNeedPay(data) { method: 'post', data: data }) -} \ No newline at end of file +} + +// 重新计算 +export function retryCalculateOccupyPileOrderAmount(data) { + return request({ + url: '/pile/occupy/retryCalculateOccupyPileOrderAmount', + method: 'post', + data: data + }) +} diff --git a/jsowell-ui/src/views/pile/basic/detail.vue b/jsowell-ui/src/views/pile/basic/detail.vue index 1c3c148ee..4c9ad79c1 100644 --- a/jsowell-ui/src/views/pile/basic/detail.vue +++ b/jsowell-ui/src/views/pile/basic/detail.vue @@ -487,10 +487,10 @@ export default { this.feedListLoading = true; this.queryParams.pileSn = this.pileSn; getPileFeedList(this.queryParams).then((response) => { + this.feedListLoading = false; console.log("查询充电桩通信日志", response); this.feedList = response.data.list; this.total = response.data.total; - this.feedListLoading = false; }); }, }, diff --git a/jsowell-ui/src/views/pile/basic/index.vue b/jsowell-ui/src/views/pile/basic/index.vue index ddef06709..28c23ac2a 100644 --- a/jsowell-ui/src/views/pile/basic/index.vue +++ b/jsowell-ui/src/views/pile/basic/index.vue @@ -140,6 +140,14 @@ /> + + + - + @@ -185,7 +185,7 @@ export default { // 非单个禁用 single: true, // 非多个禁用 - multiple: true, + multiple: false, // 显示搜索条件 showSearch: true, // 总条数 @@ -302,7 +302,7 @@ export default { handleSelectionChange(selection) { this.ids = selection.map(item => item.id) this.single = selection.length !== 1 - this.multiple = !selection.length + // this.multiple = !selection.length }, /** 新增按钮操作 */ handleAdd() { diff --git a/jsowell-ui/src/views/pile/occupy/index.vue b/jsowell-ui/src/views/pile/occupy/index.vue index 7abeecf62..c5b2f3f51 100644 --- a/jsowell-ui/src/views/pile/occupy/index.vue +++ b/jsowell-ui/src/views/pile/occupy/index.vue @@ -22,14 +22,14 @@ placeholder="请选择占桩开始时间"> - - - - - - + + + + + @@ -106,6 +106,9 @@ 无需支付 + 重新计算占桩订单金额 + @@ -177,7 +180,15 @@