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:
@@ -16,6 +16,8 @@ import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryStationInfoDTO;
|
||||
import com.jsowell.pile.service.ThirdPartyPlatformConfigService;
|
||||
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||
import com.jsowell.thirdparty.lianlian.common.CommonResult;
|
||||
import com.jsowell.thirdparty.platform.dto.PushOrderDTO;
|
||||
import com.jsowell.thirdparty.platform.dto.QueryOrderDTO;
|
||||
import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService;
|
||||
import com.jsowell.thirdparty.platform.util.Cryptos;
|
||||
import com.jsowell.thirdparty.platform.util.Encodes;
|
||||
@@ -189,17 +191,38 @@ public class QingHaiController extends ThirdPartyBaseController {
|
||||
* @param orderCode
|
||||
* @return
|
||||
*/
|
||||
// @GetMapping("/pushOrderInfo/{orderCode}")
|
||||
// public RestApiResponse<?> pushOrderInfo(@PathVariable("orderCode") String orderCode) {
|
||||
// RestApiResponse<?> response = null;
|
||||
// try {
|
||||
// String result = qingHaiPlatformServiceImpl.notificationChargeOrderInfo(orderCode);
|
||||
// response = new RestApiResponse<>(result);
|
||||
// }catch (Exception e) {
|
||||
// logger.error("青海平台推送订单信息 error", e);
|
||||
// }
|
||||
// logger.info("青海平台推送订单信息 result:{}", response);
|
||||
// return response;
|
||||
// }
|
||||
@GetMapping("/pushOrderInfo/{orderCode}")
|
||||
public RestApiResponse<?> pushOrderInfo(@PathVariable("orderCode") String orderCode) {
|
||||
logger.info("青海平台推送订单信息 params:{}", orderCode);
|
||||
RestApiResponse<?> response = null;
|
||||
try {
|
||||
String result = platformLogic.notificationChargeOrderInfo(orderCode);
|
||||
response = new RestApiResponse<>(result);
|
||||
}catch (Exception e) {
|
||||
logger.error("青海平台推送订单信息 error", e);
|
||||
}
|
||||
logger.info("青海平台推送订单信息 result:{}", response);
|
||||
return response;
|
||||
}
|
||||
|
||||
@PostMapping("/pushOrdersInfo")
|
||||
public RestApiResponse<?> pushOrdersInfo(@RequestBody PushOrderDTO dto) {
|
||||
RestApiResponse<?> response = null;
|
||||
try {
|
||||
List<String> orderCodeList = dto.getOrderCodeList();
|
||||
orderCodeList.forEach(orderCode -> {
|
||||
try {
|
||||
platformLogic.notificationChargeOrderInfo(orderCode);
|
||||
} catch (Exception e) {
|
||||
logger.error("青海平台推送订单信息 error", e);
|
||||
}
|
||||
});
|
||||
response = new RestApiResponse<>();
|
||||
}catch (Exception e) {
|
||||
logger.error("青海平台推送订单信息 error", e);
|
||||
}
|
||||
logger.info("青海平台推送订单信息 result:{}", response);
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.jsowell.common.annotation.Anonymous;
|
||||
import com.jsowell.common.enums.thirdparty.ThirdPartyReturnCodeEnum;
|
||||
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||
import com.jsowell.common.response.RestApiResponse;
|
||||
import com.jsowell.pile.dto.*;
|
||||
import com.jsowell.pile.thirdparty.CommonParamsDTO;
|
||||
import com.jsowell.thirdparty.lianlian.common.CommonResult;
|
||||
@@ -209,9 +210,27 @@ public class SiChuanController extends ThirdPartyBaseController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 推送
|
||||
* 推送充换电站用能统计信息
|
||||
* @param stationId
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/v1/notificationOperationStatsInfo/{stationId}")
|
||||
public RestApiResponse<?> notificationOperationStatsInfo(@PathVariable("stationId") String stationId) {
|
||||
RestApiResponse<?> response = null;
|
||||
String result = null;
|
||||
try {
|
||||
result = platformLogic.notificationOperationStatsInfo(stationId);
|
||||
response = new RestApiResponse<>(result);
|
||||
} catch (Exception e) {
|
||||
logger.error("{}-推送充换电站用能统计信息 error", platformName, e);
|
||||
return new RestApiResponse<>(e);
|
||||
}
|
||||
logger.info("{}-平台推送充换电站用能统计信息 result:{}",platformName, result);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ 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.customer.MemberBalanceVO;
|
||||
import com.jsowell.pile.vo.web.OrderCountByTimeVO;
|
||||
import com.jsowell.pile.vo.web.PileStationVO;
|
||||
import com.jsowell.service.OrderService;
|
||||
import com.jsowell.service.TempService;
|
||||
@@ -909,4 +910,22 @@ public class TempController extends BaseController {
|
||||
logger.info("青海平台推送订单信息 result:{}", response);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 时间区间查询订单统计
|
||||
*/
|
||||
@PostMapping("/queryOrderCountByTime")
|
||||
public RestApiResponse<?> queryOrderCountByTime(@RequestBody QueryOrderDTO dto) {
|
||||
RestApiResponse<?> response = null;
|
||||
try {
|
||||
//stationId ,merchantIdList,stationIdList,merchantId,startTime,endTime
|
||||
List<OrderCountByTimeVO> result = tempService.queryOrderCountByTime(dto);
|
||||
response = new RestApiResponse<>(result);
|
||||
} catch (Exception e) {
|
||||
logger.error("时间区间查询订单统计 error", e);
|
||||
}
|
||||
logger.info("时间区间查询订单统计 result:{}", response);
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -736,8 +736,12 @@ public class OrderService {
|
||||
|
||||
String pileSn = orderBasicInfo.getPileSn();
|
||||
|
||||
// 发送停止充电指令
|
||||
pileRemoteService.remoteStopCharging(pileSn, orderBasicInfo.getConnectorCode(), orderBasicInfo.getTransactionCode());
|
||||
try {
|
||||
// 发送停止充电指令
|
||||
pileRemoteService.remoteStopCharging(pileSn, orderBasicInfo.getConnectorCode(), orderBasicInfo.getTransactionCode());
|
||||
}catch (Exception e) {
|
||||
log.error("人工结算订单-发送停止充电指令 error, ", e);
|
||||
}
|
||||
|
||||
List<String> stationDeptIds = authorizedMap.getStationDeptIds();
|
||||
if (CollectionUtils.isEmpty(stationDeptIds)) {
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.jsowell.common.core.domain.ykc.TransactionRecordsData;
|
||||
import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||
import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
|
||||
import com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum;
|
||||
import com.jsowell.common.enums.ykc.*;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
@@ -35,11 +34,10 @@ import com.jsowell.pile.service.programlogic.AbstractProgramLogic;
|
||||
import com.jsowell.pile.service.programlogic.ProgramLogicFactory;
|
||||
import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
|
||||
import com.jsowell.pile.transaction.service.TransactionService;
|
||||
import com.jsowell.pile.vo.ThirdPartySecretInfoVO;
|
||||
import com.jsowell.pile.vo.base.StationInfoVO;
|
||||
import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO;
|
||||
import com.jsowell.pile.vo.web.*;
|
||||
import com.jsowell.thirdparty.common.CommonService;
|
||||
import com.jsowell.thirdparty.common.NotificationDTO;
|
||||
import com.jsowell.thirdparty.common.NotificationService;
|
||||
import com.jsowell.thirdparty.platform.dto.PushOrderDTO;
|
||||
import com.jsowell.thirdparty.service.ThirdpartySecretInfoService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -53,11 +51,11 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.MessageFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -131,7 +129,7 @@ public class TempService {
|
||||
private ThirdPartyStationRelationService thirdPartyStationRelationService;
|
||||
|
||||
@Autowired
|
||||
private CommonService commonService;
|
||||
private NotificationService notificationService;
|
||||
|
||||
/**
|
||||
* 计算订单耗电量
|
||||
@@ -1248,10 +1246,90 @@ public class TempService {
|
||||
if (CollectionUtils.isEmpty(orderInfos)) {
|
||||
return;
|
||||
}
|
||||
NotificationDTO notificationDTO = new NotificationDTO();
|
||||
orderInfos.forEach(orderBasicInfo -> {
|
||||
// 推送第三方平台
|
||||
commonService.commonPushOrderInfoV2(orderBasicInfo);
|
||||
notificationDTO.setOrderCode(orderBasicInfo.getOrderCode());
|
||||
notificationDTO.setStationId(orderBasicInfo.getStationId());
|
||||
notificationDTO.setPlatformType(dto.getThirdPartyType());
|
||||
|
||||
notificationService.notificationChargeOrderInfoHistory(notificationDTO);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据时间区间批量查询订单数量
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
public List<OrderCountByTimeVO> queryOrderCountByTime(QueryOrderDTO dto) {
|
||||
// 处理时间默认值
|
||||
if (dto == null) {
|
||||
dto = new QueryOrderDTO();
|
||||
}
|
||||
|
||||
// 如果开始时间为空,则默认为当天开始时间
|
||||
if (dto.getStartTime() == null || dto.getStartTime().isEmpty()) {
|
||||
LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
|
||||
dto.setStartTime(todayStart.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
}
|
||||
|
||||
// 如果结束时间为空,则默认为当前时间
|
||||
if (dto.getEndTime() == null || dto.getEndTime().isEmpty()) {
|
||||
dto.setEndTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
}
|
||||
|
||||
//条件查询订单
|
||||
List<OrderListVO> orderListVOS = orderBasicInfoMapper.selectOrderBasicInfoList(dto);
|
||||
|
||||
//统计订单
|
||||
List<OrderCountByTimeVO> result = new ArrayList<>();
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS);
|
||||
try {
|
||||
// 将开始时间和结束时间转换为LocalDateTime类型
|
||||
LocalDateTime queryStartTime = LocalDateTime.parse(dto.getStartTime(), dateTimeFormatter);
|
||||
LocalDateTime queryEndTime = LocalDateTime.parse(dto.getEndTime(), dateTimeFormatter);
|
||||
|
||||
|
||||
// 按小时分组订单
|
||||
Map<LocalDateTime, List<OrderListVO>> ordersByHour = orderListVOS.stream()
|
||||
.collect(Collectors.groupingBy(order -> {
|
||||
LocalDateTime createTime;
|
||||
// 如果订单创建时间为空,则默认为当前时间
|
||||
if (order.getCreateTime() != null) {
|
||||
createTime = LocalDateTime.parse((String) order.getCreateTime(), dateTimeFormatter);
|
||||
} else {
|
||||
logger.warn("订单创建时间为空,订单号:{}", order.getOrderCode());
|
||||
return LocalDateTime.now();
|
||||
}
|
||||
// 将订单创建时间按小时分组
|
||||
return createTime.withMinute(0).withSecond(0).withNano(0);
|
||||
}));
|
||||
|
||||
|
||||
// 从开始时间开始,按小时统计订单数量
|
||||
LocalDateTime currentHour = queryStartTime.withMinute(0).withSecond(0).withNano(0);
|
||||
while (currentHour.isBefore(queryEndTime)) {
|
||||
// 查询当前小时订单数量
|
||||
LocalDateTime nextHour = currentHour.plusHours(1);
|
||||
int count = ordersByHour.getOrDefault(currentHour, Collections.emptyList()).size();
|
||||
|
||||
OrderCountByTimeVO vo = new OrderCountByTimeVO();
|
||||
vo.setStartTime(currentHour.format(dateTimeFormatter));
|
||||
vo.setEndTime(nextHour.format(dateTimeFormatter));
|
||||
vo.setCount(count);
|
||||
result.add(vo);
|
||||
|
||||
currentHour = nextHour;
|
||||
}
|
||||
|
||||
// 按开始时间排序
|
||||
result.sort(Comparator.comparing(OrderCountByTimeVO::getStartTime));
|
||||
} catch (Exception e) {
|
||||
logger.error("统计订单数量失败", e);
|
||||
}
|
||||
logger.info("查询订单数量结果:{}", JSONObject.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||
import com.huifu.adapay.model.Payment;
|
||||
import com.huifu.adapay.model.PaymentReverse;
|
||||
import com.huifu.adapay.model.Refund;
|
||||
import com.jsowell.JsowellApplication;
|
||||
@@ -44,10 +45,7 @@ import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
@@ -823,4 +821,14 @@ public class PaymentTestController {
|
||||
logger.info("无结算账户运营商:{}", targetList);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void closeOrder() throws BaseAdaPayException {
|
||||
String paymentId = "002212025070811225010788498509816119296";
|
||||
Map<String, Object> map = new LinkedHashMap<>();
|
||||
map.put("payment_id", paymentId);
|
||||
Map<String, Object> close = Payment.close(map, wechatAppId1);
|
||||
logger.info("关单接口调用结果:{}", close);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user