mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
Merge branch 'dev' into dev-g
This commit is contained in:
@@ -405,4 +405,13 @@ public interface OrderBasicInfoMapper {
|
||||
List<OrderVO> selectThirdPartyOrderList(@Param("dto") QueryStartChargeDTO dto);
|
||||
|
||||
LocalDateTime queryOrderCreateTimeByStationId(String id);
|
||||
|
||||
/**
|
||||
* 根据参数查询订单基本信息
|
||||
* @param stationIds
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
List<OrderBasicInfo> getOrderBasicInfoByTimeInterval(@Param("stationIds") List<String> stationIds, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
|
||||
import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.pile.vo.web.StationSelectVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@@ -111,7 +112,7 @@ public interface PileStationInfoMapper {
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<PileStationVO> getStationSelectList(@Param("dto") QueryStationDTO dto);
|
||||
List<StationSelectVO> getStationSelectList(@Param("dto") QueryStationDTO dto);
|
||||
|
||||
/**
|
||||
* 宁夏交投查询充电站信息
|
||||
|
||||
@@ -231,6 +231,8 @@ public interface OrderBasicInfoService{
|
||||
|
||||
OrderSplitResult verifyOrderConfirmAmount(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException;
|
||||
|
||||
OrderSplitResult verifyOrderConfirmAmountWithCancelSplit(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException;
|
||||
|
||||
/**
|
||||
* 批量查询订单
|
||||
* @param orderCodeList
|
||||
@@ -573,4 +575,6 @@ public interface OrderBasicInfoService{
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> verifyMergeChargeOrder(VerifyMergeChargeOrderDTO dto) throws Exception;
|
||||
|
||||
List<OrderBasicInfo> getOrderBasicInfoByTimeInterval(List<String> stationIds, String startTime, String endTime);
|
||||
}
|
||||
|
||||
@@ -2,18 +2,20 @@ package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.common.core.page.PageResponse;
|
||||
import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.domain.UserFrequentedStationInfo;
|
||||
import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.pile.dto.FastCreateStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationDTO;
|
||||
import com.jsowell.pile.dto.QueryStationInfoDTO;
|
||||
import com.jsowell.pile.dto.amap.GetStationInfoDTO;
|
||||
import com.jsowell.pile.dto.business.StationBusinessAnalyzeInfoDTO;
|
||||
import com.jsowell.pile.dto.business.StationStatisticsInfoDTO;
|
||||
import com.jsowell.pile.dto.lutongyunting.BindParkingPlatformDTO;
|
||||
import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||
import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO;
|
||||
import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO;
|
||||
import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.pile.vo.web.StationSelectVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -155,7 +157,7 @@ public interface PileStationInfoService {
|
||||
/**
|
||||
* 查询充电站下拉列表
|
||||
*/
|
||||
List<PileStationVO> getStationSelectList(QueryStationDTO dto);
|
||||
List<StationSelectVO> getStationSelectList(QueryStationDTO dto);
|
||||
|
||||
/**
|
||||
* 宁夏交投查询站点信息
|
||||
|
||||
@@ -2439,6 +2439,75 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验订单分账金额(其他部分与上面方法一致,此方法仅加了撤销分账部分,只给临时接口用)
|
||||
*
|
||||
* @param paymentIds 支付id集合
|
||||
* @param orderCode 订单编号
|
||||
* @param settleAmount 结算金额
|
||||
*/
|
||||
@Override
|
||||
public OrderSplitResult verifyOrderConfirmAmountWithCancelSplit(List<String> paymentIds, String orderCode, BigDecimal settleAmount, String wechatAppId) throws BaseAdaPayException {
|
||||
// 分账金额
|
||||
BigDecimal totalConfirmAmt = BigDecimal.ZERO;
|
||||
// 手续费
|
||||
BigDecimal feeAmt = BigDecimal.ZERO;
|
||||
// 通过支付id查询分账情况
|
||||
for (String paymentId : paymentIds) {
|
||||
QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO();
|
||||
dto.setPaymentId(paymentId);
|
||||
dto.setWechatAppId(wechatAppId);
|
||||
QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto);
|
||||
if (response != null) {
|
||||
List<PaymentConfirmInfo> confirms = response.getPaymentConfirms();
|
||||
if (CollectionUtils.isNotEmpty(confirms)) {
|
||||
for (PaymentConfirmInfo confirm : confirms) {
|
||||
// 校验分账是否撤销
|
||||
if (queryConfirmReverseStatus(confirm.getId(), wechatAppId)) {
|
||||
logger.info("支付确认id:" + confirm.getId() + "撤销了。。。");
|
||||
continue;
|
||||
}
|
||||
// 如果没有撤销,先撤销分账,再重新进行分账
|
||||
adapayService.createConfirmReverse(confirm.getId(), wechatAppId);
|
||||
|
||||
JSONObject jsonObject = JSON.parseObject(confirm.getDescription());
|
||||
if (StringUtils.equals(jsonObject.getString("orderCode"), orderCode)) {
|
||||
// 订单号对的上,累计分账金额
|
||||
BigDecimal confirmAmt = new BigDecimal(confirm.getConfirmAmt());
|
||||
BigDecimal confirmedAmt = new BigDecimal(confirm.getConfirmedAmt());
|
||||
BigDecimal orderConfirmedAmt = confirmedAmt.compareTo(BigDecimal.ZERO) == 0
|
||||
? confirmedAmt
|
||||
: confirmAmt;
|
||||
totalConfirmAmt = totalConfirmAmt.add(orderConfirmedAmt);
|
||||
feeAmt = feeAmt.add(new BigDecimal(confirm.getFeeAmt()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
OrderSplitResult result = new OrderSplitResult();
|
||||
result.setOrderCode(orderCode);
|
||||
result.setSettleAmt(settleAmount.toString());
|
||||
result.setConfirmAmt(totalConfirmAmt.toString());
|
||||
if (totalConfirmAmt.compareTo(BigDecimal.ZERO) == 0) {
|
||||
feeAmt = BigDecimal.ZERO;
|
||||
}
|
||||
result.setFeeAmt(feeAmt.toString());
|
||||
String status;
|
||||
// 如果确认金额和结算金额相等,返回succeeded,其他情况返回PENDING
|
||||
if (settleAmount.compareTo(totalConfirmAmt) == 0) {
|
||||
// 返回succeeded 标识该笔订单已经完成了分账,不要再次执行分账
|
||||
status = AdapayStatusEnum.SUCCEEDED.getValue();
|
||||
} else {
|
||||
status = AdapayStatusEnum.PENDING.getValue();
|
||||
}
|
||||
result.setStatus(status);
|
||||
logger.info("校验订单分账金额-orderCode:{}, 分账结果:{}", orderCode, JSON.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询分账撤销状态
|
||||
*/
|
||||
@@ -5240,5 +5309,10 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrderBasicInfo> getOrderBasicInfoByTimeInterval(List<String> stationIds, String startTime, String endTime) {
|
||||
return orderBasicInfoMapper.getOrderBasicInfoByTimeInterval(stationIds, startTime, endTime);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.jsowell.pile.vo.uniapp.business.StationOrderQuantityInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO;
|
||||
import com.jsowell.pile.vo.uniapp.customer.CurrentTimePriceDetails;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.pile.vo.web.StationSelectVO;
|
||||
import com.jsowell.system.service.SysDeptService;
|
||||
import com.jsowell.system.service.SysUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -424,15 +425,18 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
|
||||
}
|
||||
|
||||
// 2024年8月16日14点15分 天地图坐标转高德坐标
|
||||
String stationLng = pileStationInfo.getStationLng();
|
||||
String stationLat = pileStationInfo.getStationLat();
|
||||
if (StringUtils.isNotBlank(stationLng) && StringUtils.isNotBlank(stationLat)) {
|
||||
// 获取经纬度
|
||||
CoordinateUtil.Coordinate coordinate = CoordinateUtil.wgs84ToGcj02(Double.parseDouble(stationLng), Double.parseDouble(stationLat));
|
||||
pileStationInfo.setStationLng(String.format("%.6f", coordinate.getLng()));
|
||||
pileStationInfo.setStationLat(String.format("%.6f", coordinate.getLat()));
|
||||
log.info("天地图坐标:{}, 转高德坐标:{}", stationLng + ", " + stationLat, pileStationInfo.getStationLng() + ", " + pileStationInfo.getStationLat());
|
||||
}
|
||||
// String stationLng = pileStationInfo.getStationLng();
|
||||
// String stationLat = pileStationInfo.getStationLat();
|
||||
|
||||
// 2025-07-01 存到数据库的经纬度数据不再进行转换,直接入库
|
||||
|
||||
// if (StringUtils.isNotBlank(stationLng) && StringUtils.isNotBlank(stationLat)) {
|
||||
// // 获取经纬度
|
||||
// CoordinateUtil.Coordinate coordinate = CoordinateUtil.wgs84ToGcj02(Double.parseDouble(stationLng), Double.parseDouble(stationLat));
|
||||
// pileStationInfo.setStationLng(String.format("%.6f", coordinate.getLng()));
|
||||
// pileStationInfo.setStationLat(String.format("%.6f", coordinate.getLat()));
|
||||
// log.info("天地图坐标:{}, 转高德坐标:{}", stationLng + ", " + stationLat, pileStationInfo.getStationLng() + ", " + pileStationInfo.getStationLat());
|
||||
// }
|
||||
|
||||
pileStationInfo.setUpdateBy(SecurityUtils.getUsername());
|
||||
pileStationInfo.setUpdateTime(DateUtils.getNowDate());
|
||||
@@ -837,7 +841,7 @@ public class PileStationInfoServiceImpl implements PileStationInfoService {
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<PileStationVO> getStationSelectList(QueryStationDTO dto) {
|
||||
public List<StationSelectVO> getStationSelectList(QueryStationDTO dto) {
|
||||
AuthorizedDeptVO authorizedMap = UserUtils.getAuthorizedMap();
|
||||
if (authorizedMap == null) {
|
||||
// 为空表示没有权限,返回空数组
|
||||
|
||||
@@ -556,21 +556,26 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
||||
dto.setOrderDetail(orderDetail);
|
||||
transactionService.doUpdateOrder(dto);
|
||||
|
||||
// 组装after参数
|
||||
AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder()
|
||||
.orderCode(orderBasicInfo.getOrderCode())
|
||||
.merchantId(orderBasicInfo.getMerchantId())
|
||||
.stationId(orderBasicInfo.getStationId())
|
||||
.orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额
|
||||
.orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额
|
||||
.orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额
|
||||
.orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额
|
||||
.orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额
|
||||
.orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额
|
||||
.orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额
|
||||
.orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额
|
||||
.build();
|
||||
rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO);
|
||||
try {
|
||||
// 组装after参数
|
||||
AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder()
|
||||
.orderCode(orderBasicInfo.getOrderCode())
|
||||
.merchantId(orderBasicInfo.getMerchantId())
|
||||
.stationId(orderBasicInfo.getStationId())
|
||||
.orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额
|
||||
.orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额
|
||||
.orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额
|
||||
.orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额
|
||||
.orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额
|
||||
.orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额
|
||||
.orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额
|
||||
.orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额
|
||||
.build();
|
||||
// 发送到rabbitMQ
|
||||
rabbitTemplate.convertAndSend(RabbitConstants.YKC_EXCHANGE_NAME, RabbitConstants.QUEUE_CHARGE_ORDER_DATA, afterSettleOrderDTO);
|
||||
} catch (Exception e) {
|
||||
logger.error("【{}】-结算订单V2, 发送到rabbitMQ异常", this.getClass().getSimpleName(), e);
|
||||
}
|
||||
|
||||
// 将卡/vin状态解锁
|
||||
if (!StringUtils.equals("0000000000000000", data.getLogicCard())) {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.jsowell.pile.vo.web;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 站点管理列表反参
|
||||
*
|
||||
* @author JS-ZZA
|
||||
* @date 2022/9/1 13:28
|
||||
*/
|
||||
@Builder
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class StationSelectVO {
|
||||
/**
|
||||
* 站点id
|
||||
*/
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 站点名称
|
||||
*/
|
||||
private String stationName;
|
||||
}
|
||||
Reference in New Issue
Block a user