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 9dd507bff..8384257e6 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -23,6 +23,8 @@ import com.jsowell.common.enums.AcquirerEnum; import com.jsowell.common.enums.InvoiceRecordEnum; import com.jsowell.common.enums.MemberWalletEnum; import com.jsowell.common.enums.adapay.AdapayEventEnum; +import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum; +import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; @@ -1074,6 +1076,15 @@ public class OrderService { dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue()); dto.setUpdatePrincipalBalance(amount); memberBasicInfoService.updateMemberBalance(dto); + } else if (StringUtils.equals(type, ScenarioEnum.OCCUPY.getValue())) { // 占桩订单 + // 通过订单号查询出占桩订单信息 + OrderPileOccupy orderPileOccupy = orderPileOccupyService.queryByOccupyCode(orderCode); + // 订单状态改为 1-订单完成 + orderPileOccupy.setStatus(OccupyOrderStatusEnum.ORDER_COMPLETE.getCode()); + // 支付状态改为 1-支付完成 + orderPileOccupy.setPayStatus(OccupyOrderPayStatusEnum.PAYMENT_COMPLETION.getCode()); + + orderPileOccupyService.updateByPrimaryKey(orderPileOccupy); } } diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/SettleOrderReportController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/SettleOrderReportController.java index dff339fe9..73d02b495 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/SettleOrderReportController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/SettleOrderReportController.java @@ -103,6 +103,17 @@ public class SettleOrderReportController extends BaseController { return AjaxResult.success(settleOrderReportService.getMerchantOrderReport(dto)); } + /** + * 查询运营商订单报表V2 + * @param dto + * @return + */ + // @PreAuthorize("@ss.hasPermi('pile:merchant:query')") + @PostMapping("/getMerchantOrderReportV2") + public AjaxResult getMerchantOrderReportV2(@RequestBody MerchantOrderReportDTO dto) { + return AjaxResult.success(settleOrderReportService.getMerchantOrderReportV2(dto)); + } + /** * 查询站点订单日报详情 * http://localhost:8080/order/report/getStationOrderReportDetail diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index c02a1c4b4..9bc314666 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -431,6 +431,18 @@ public class SpringBootTestController { System.out.println(JSON.toJSONString(resultList)); } + @Test + public void testGeneratePileSn() { + // String key = CacheConstants.PILE_SN_GENERATE_KEY + "88"; + // redisCache.setCacheObject(key, null); + // Long pileNum = redisCache.getCacheLong(key); + // System.out.println(pileNum); + + snUtils.getPileSn("88"); + // List list = snUtils.generateSN(2); + // System.out.println(list); + } + @Test public void testGenerateOccupyPileOrder() { String memberId = "67569684"; diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java b/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java index 8f135f55d..2a4aa935e 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/redis/RedisCache.java @@ -168,6 +168,9 @@ public class RedisCache { public Long getCacheLong(final String key) { Long l = null; Object cacheObject = getCacheObject(key); + if (Objects.isNull(cacheObject)) { + return null; + } if (cacheObject instanceof Integer) { l = ((Integer) cacheObject).longValue(); } else if (cacheObject instanceof Long) { diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java index 9d7dfe828..b48688512 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ScenarioEnum.java @@ -7,6 +7,8 @@ public enum ScenarioEnum { ORDER("order", "支付订单"), BALANCE("balance", "支付余额"), + + OCCUPY("occupy", "占桩订单"), ; private String value; diff --git a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java index 514f0e9f4..f91da87ee 100644 --- a/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java +++ b/jsowell-pile/src/main/java/com/jsowell/adapay/service/AdapayService.java @@ -23,7 +23,6 @@ import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.adapay.AdapayStatusEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; -import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.AdapayUtil; import com.jsowell.common.util.StringUtils; @@ -115,7 +114,7 @@ public class AdapayService { createAdaPaymentParam.setGoods_title(dto.getGoodsTitle()); createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名 Map map = Maps.newHashMap(); - map.put("type", ScenarioEnum.ORDER.getValue()); + map.put("type", dto.getType()); map.put("orderCode", dto.getOrderCode()); map.put("payMode", payMode); map.put("memberId", dto.getMemberId()); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileStationInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileStationInfo.java index 29b410490..8ce3d2935 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileStationInfo.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileStationInfo.java @@ -255,16 +255,19 @@ public class PileStationInfo extends BaseEntity { /** * 是否对外开放 (0-否;1-是) */ + @Excel(name = "是否对外开放 (0-否;1-是)") private String publicFlag; /** * 是否营业中(0-否;1-是) */ + @Excel(name = "是否营业中(0-否;1-是)") private String openFlag; /** * 是否对接高德(0-否;1-是) */ + @Excel(name = "是否对接高德(0-否;1-是)") private String aMapFlag; /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/GetClearingBillDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GetClearingBillDTO.java new file mode 100644 index 000000000..811dfef1e --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/GetClearingBillDTO.java @@ -0,0 +1,29 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 查询清分账单DTO + * + * @author Lemon + * @Date 2023/8/28 13:47 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class GetClearingBillDTO { + + private Integer pageNum; + + private Integer pageSize; + + private String merchantId; + + private String startTime; + + private String endTime; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java index ed132d61b..0f8974048 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PayOrderDTO.java @@ -1,5 +1,6 @@ package com.jsowell.pile.dto; +import com.jsowell.common.enums.ykc.ScenarioEnum; import lombok.Data; import java.math.BigDecimal; @@ -30,6 +31,12 @@ public class PayOrderDTO { */ private BigDecimal payAmount; + /** + * @see ScenarioEnum + * 支付场景 + */ + private String type; + /** * 微信支付需要用的code */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java index 8d1f579e1..65cc572fd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SettleOrderReportDTO.java @@ -11,6 +11,11 @@ public class SettleOrderReportDTO { */ private String stationId; + /** + * 运营商id + */ + private String merchantId; + /** * 交易日期 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java index ceacec818..adbe40874 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/ClearingBillInfoMapper.java @@ -1,6 +1,9 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.ClearingBillInfo; +import com.jsowell.pile.dto.GetClearingBillDTO; +import com.jsowell.pile.vo.web.ClearingBillVO; +import com.jsowell.pile.vo.web.MerchantClearingBillVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -57,4 +60,11 @@ public interface ClearingBillInfoMapper { List selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus); void updateStatus(@Param("clearingBillIds") List clearingBillIds, @Param("billStatus") String billStatus); + + /** + * 后管用 查询运营商账单列表 + * @param dto + * @return + */ + List getMerchantClearingBillList(GetClearingBillDTO dto); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java index e2b5ed225..529a4a6d6 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/ClearingBillInfoService.java @@ -1,6 +1,8 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.ClearingBillInfo; +import com.jsowell.pile.dto.GetClearingBillDTO; +import com.jsowell.pile.vo.web.MerchantClearingBillVO; import java.util.List; @@ -22,4 +24,11 @@ public interface ClearingBillInfoService{ List selectByMerchantId(String merchantId, String billStatus); void updateStatus(List clearingBillIds, String billStatus); + + /** + * 后管用 查询运营商账单列表 + * @param dto + * @return + */ + List getMerchantClearingBillList(GetClearingBillDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/ISettleOrderReportService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/ISettleOrderReportService.java index 168e7cf13..be44d52d2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/ISettleOrderReportService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/ISettleOrderReportService.java @@ -2,11 +2,13 @@ package com.jsowell.pile.service; import com.jsowell.common.core.page.PageResponse; import com.jsowell.pile.domain.SettleOrderReport; +import com.jsowell.pile.dto.GetClearingBillDTO; import com.jsowell.pile.dto.MerchantOrderReportDTO; import com.jsowell.pile.dto.SettleOrderReportDTO; import com.jsowell.pile.vo.web.MerchantOrderReportVO; import java.util.List; +import java.util.Map; /** * 结算订单报Service接口 @@ -76,6 +78,8 @@ public interface ISettleOrderReportService { */ MerchantOrderReportVO getMerchantOrderReport(MerchantOrderReportDTO dto); + MerchantOrderReportVO getMerchantOrderReportV2(MerchantOrderReportDTO dto); + int deleteByPrimaryKey(Integer id); int insert(SettleOrderReport record); @@ -107,4 +111,14 @@ public interface ISettleOrderReportService { * @param tradeDate 交易日期 */ void generateDailyOrderReports(String stationId, String tradeDate); + Map queryUndividedOrder(SettleOrderReportDTO dto); + + /** + * 获取运营商清分账单列表 + * @param dto + * @return + */ + public PageResponse getMerchantClearingBillList(GetClearingBillDTO dto); + + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java index 377ce9d0f..1c9d3bb1b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/ClearingBillInfoServiceImpl.java @@ -2,8 +2,10 @@ package com.jsowell.pile.service.impl; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.ClearingBillInfo; +import com.jsowell.pile.dto.GetClearingBillDTO; import com.jsowell.pile.mapper.ClearingBillInfoMapper; import com.jsowell.pile.service.ClearingBillInfoService; +import com.jsowell.pile.vo.web.MerchantClearingBillVO; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; @@ -59,4 +61,14 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService{ clearingBillInfoMapper.updateStatus(clearingBillIds, billStatus); } + /** + * 后管用 查询运营商账单列表 + * @param dto + * @return + */ + @Override + public List getMerchantClearingBillList(GetClearingBillDTO dto) { + return clearingBillInfoMapper.getMerchantClearingBillList(dto); + } + } 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 f12774f21..d681be8af 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 @@ -2828,6 +2828,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { // 2023-07-11 全部改为汇付支付 dto.setGoodsTitle("充电费用"); dto.setGoodsDesc("充电桩预付款金额"); + dto.setType(ScenarioEnum.ORDER.getValue()); Map weixinMap = adapayService.createPayment(dto); // 返回微信支付参数 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 144f2c315..93bbe799c 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 @@ -11,6 +11,7 @@ import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum; import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum; import com.jsowell.common.enums.ykc.OrderPayModeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; +import com.jsowell.common.enums.ykc.ScenarioEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; @@ -443,6 +444,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService { // 返回支付参数 dto.setGoodsTitle("占桩费用"); dto.setGoodsDesc("占桩订单金额"); + dto.setType(ScenarioEnum.OCCUPY.getValue()); Map weixinMap = adapayService.createPayment(dto); resultMap.put("weixinMap", weixinMap); } else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java index 7b14b8794..a71b2b7bd 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java @@ -13,7 +13,11 @@ import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.id.IdUtils; +import com.jsowell.pile.domain.ClearingBillInfo; +import com.jsowell.pile.domain.PileBasicInfo; +import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.SettleOrderReport; +import com.jsowell.pile.dto.GetClearingBillDTO; import com.jsowell.pile.dto.MerchantOrderReportDTO; import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.SettleOrderReportDTO; @@ -27,6 +31,8 @@ import com.jsowell.pile.service.ISettleOrderReportService; import com.jsowell.pile.vo.base.SplitSettleAmountVO; import com.jsowell.pile.vo.web.*; import lombok.extern.slf4j.Slf4j; +import com.jsowell.pile.service.*; +import com.jsowell.pile.vo.web.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -38,6 +44,7 @@ import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -70,6 +77,12 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { @Autowired private ClearingWithdrawInfoService clearingWithdrawInfoService; + @Autowired + private ClearingBillInfoService clearingBillInfoService; + + @Autowired + private IPileStationInfoService pileStationInfoService; + /** * 查询结算订单报 * @@ -97,30 +110,23 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { */ @Override public PageResponse selectSettleOrderReportDetail(SettleOrderReportDTO dto) { - SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate()); - if (orderReport == null) { - return new PageResponse(); - } - String orderCodes = orderReport.getOrderCodes(); - if (StringUtils.isBlank(orderCodes)) { - return new PageResponse(); - } + List orderCodes = getOrderCodes(dto); - List orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ",")); // 查询订单支付信息 分页 int pageNum = dto.getPageNum() != null ? dto.getPageNum() : 1; int pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10; PageHelper.startPage(pageNum, pageSize); - List clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodeList); + List clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodes); PageInfo pageInfo = new PageInfo<>(clearingBillVOList); // 封装结果集 List resultList = Lists.newArrayList(); OrderSettleDetailVO vo = null; - String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderReport.getMerchantId()); + String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(dto.getMerchantId()); for (ClearingBillVO clearingBillVO : pageInfo.getList()) { vo = new OrderSettleDetailVO(); vo.setOrderCode(clearingBillVO.getOrderCode()); + vo.setSettleAmount(clearingBillVO.getSettleAmount()); String paymentId = clearingBillVO.getPaymentId(); QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder() .wechatAppId(wechatAppId) @@ -158,6 +164,51 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { return pageResponse; } + /** + * 根据 merchantId 或 stationId 以及交易日期获取订单号 + * @param dto + * @return + */ + private List getOrderCodes(SettleOrderReportDTO dto) { + List orderCodeList = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getMerchantId())) { + List stationIdInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId())); + // 收集出站点id + List stationIds = stationIdInfos.stream() + .map(PileStationInfo::getId) + .collect(Collectors.toList()) + .stream() + .map(String::valueOf) + .collect(Collectors.toList()); + List list = queryOrderReport(stationIds, dto.getTradeDate(), dto.getTradeDate()); + if (CollectionUtils.isEmpty(list)) { + return new ArrayList<>(); + } + List orderCodes = list.stream().map(SettleOrderReport::getOrderCodes) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(orderCodes)) { + return new ArrayList<>(); + } + for (String orderCode : orderCodes) { + orderCodeList = Lists.newArrayList(StringUtils.split(orderCode, ",")); + } + } else if (StringUtils.isNotBlank(dto.getStationId())){ + SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate()); + + if (orderReport == null) { + return new ArrayList<>(); + } + String orderCodes = orderReport.getOrderCodes(); + if (StringUtils.isBlank(orderCodes)) { + return new ArrayList<>(); + } + orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ",")); + dto.setMerchantId(orderReport.getMerchantId()); + } + return orderCodeList; + } + @Override public List selectByMerchantIdAndDate(String merchantId, String date) { return settleOrderReportMapper.selectByMerchantIdAndDate(merchantId, date); @@ -280,6 +331,88 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { return vo; } + /** + * 根据运营商id查询订单报表V2 + * + * @param dto + * @return + */ + @Override + public MerchantOrderReportVO getMerchantOrderReportV2(MerchantOrderReportDTO dto) { + int pageNum = dto.getPageNum() == null ? 1 : dto.getPageNum(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + if (StringUtils.isBlank(dto.getStartTime())) { + dto.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.addDays(new Date(), -7))); + } + if (StringUtils.isBlank(dto.getEndTime())) { + dto.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date())); + } + MerchantOrderReportVO vo = new MerchantOrderReportVO(); + MerchantOrderReportVO.MerchantOrderReport report = new MerchantOrderReportVO.MerchantOrderReport(); + PageUtils.startPage(pageNum, pageSize); + GetClearingBillDTO clearingBillDTO = GetClearingBillDTO.builder() + .merchantId(dto.getMerchantId()) + .startTime(dto.getStartTime()) + .endTime(dto.getEndTime()) + .pageNum(dto.getPageNum()) + .pageSize(dto.getPageSize()) + .build(); + PageResponse pageResponse = getMerchantClearingBillList(clearingBillDTO); + vo.setPageResponse(pageResponse); + + vo.setMerchantId(dto.getMerchantId()); + // 进行数据汇总 + List list = settleOrderReportMapper.getMerchantOrderReport(dto); + // 用电度数 + report.setUseElectricity(list.stream().map(SettleOrderReportVO::getUseElectricity).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 充电次数 + report.setChargeNum(list.stream().map(SettleOrderReport -> new BigDecimal(SettleOrderReport.getChargeNum())).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 充电时长 + report.setChargeTime(list.stream().map(SettleOrderReport -> new BigDecimal(SettleOrderReport.getChargeTime())).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 电费金额 + report.setElectricityAmount(list.stream().map(SettleOrderReportVO::getElectricityAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 服务费金额 + report.setServiceAmount(list.stream().map(SettleOrderReportVO::getServiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 收入金额 + report.setTotalAmount(list.stream().map(SettleOrderReportVO::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 虚拟金额 + report.setVirtualAmount(list.stream().map(SettleOrderReportVO::getVirtualAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 交易金额 + report.setTradeAmount(list.stream().map(SettleOrderReportVO::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + // 交易手续费 + report.setTradeFee(list.stream().map(SettleOrderReportVO::getTradeFee).reduce(BigDecimal.ZERO, BigDecimal::add)); + + vo.setMerchantOrderReport(report); + return vo; + } + + /** + * 获取运营商清分账单列表 + * @param dto + * @return + */ + @Override + public PageResponse getMerchantClearingBillList(GetClearingBillDTO dto) { + List resultList; + int pageNum = dto.getPageNum() == null ? 1 : dto.getPageNum(); + int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize(); + // 分页 + PageUtils.startPage(pageNum, pageSize); + resultList = clearingBillInfoService.getMerchantClearingBillList(dto); + if (CollectionUtils.isEmpty(resultList)) { + return null; + } + PageInfo pageInfo = new PageInfo<>(resultList); + PageResponse response = PageResponse.builder() + .pageNum(pageInfo.getPageNum()) + .pageSize(pageInfo.getPageSize()) + .list(pageInfo.getList()) + .total(pageInfo.getTotal()) + .pages(pageInfo.getPages()) + .build(); + return response; + } + @Override public int deleteByPrimaryKey(Integer id) { return settleOrderReportMapper.deleteByPrimaryKey(id); @@ -340,6 +473,11 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService { return settleOrderReportMapper.queryOrderReport(stationIdList, startTime, endTime); } + @Override + public Map queryUndividedOrder(SettleOrderReportDTO dto) { + return null; + } + /** * 计算站点订单报表 * diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/util/SnUtils.java b/jsowell-pile/src/main/java/com/jsowell/pile/util/SnUtils.java index f1d3eb788..b496c0be4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/util/SnUtils.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/util/SnUtils.java @@ -36,20 +36,23 @@ public class SnUtils { * @param prefix 生成序列号的前缀 * @return */ - private String getPileSn(String prefix) { + public String getPileSn(String prefix) { //序列号前缀加特定标识,如系统模块名之类的 防止重复 String key = CacheConstants.PILE_SN_GENERATE_KEY + prefix; String increResult = null; try { - String pileNum = redisCache.getCacheObject(key); - if (StringUtils.isBlank(pileNum)) { + // 取缓存 + Integer pileNum = redisCache.getCacheObject(key); + if (pileNum == null) { // 缓存中没有,从数据库中取 PileBasicInfo pileInfo = pileBasicInfoService.getMaxNumPileInfo(); String pileSn = pileInfo.getSn(); // 将前四位截取,并将后面转为long - long pileSnNum = Long.parseLong(StringUtils.substring(pileSn, 4, pileSn.length())); + Long pileSnNum = Long.parseLong(StringUtils.substring(pileSn, 4, pileSn.length())); + // String pileSnNum = StringUtils.substring(pileSn, 4, pileSn.length()); // 再将该值存入数据库 - redisCache.setCacheObject(key, pileSnNum); + redisCache.setCacheObject(key, pileSnNum.intValue()); + } Long increNum = redisCache.increment(key, 1); // 年份 @@ -63,11 +66,13 @@ public class SnUtils { } public static void main(String[] args) { - String pileSn = "88230000002060"; - String substring = StringUtils.substring(pileSn, 4, pileSn.length()); - long l = Long.parseLong(substring); - System.out.println(substring); - System.out.println(l); + // String pileSn = "88230000002060"; + // String substring = StringUtils.substring(pileSn, 4, pileSn.length()); + // long l = Long.parseLong(substring); + // System.out.println(substring); + // System.out.println(l); + + Long a = 3147483647L; } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java index 51bb68311..874cb4f24 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ClearingBillVO.java @@ -3,6 +3,8 @@ package com.jsowell.pile.vo.web; import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse; import lombok.Data; +import java.math.BigDecimal; + @Data public class ClearingBillVO { /** @@ -10,6 +12,11 @@ public class ClearingBillVO { */ private String orderCode; + /** + * 结算金额 + */ + private BigDecimal settleAmount; + /** * 支付id */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantClearingBillVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantClearingBillVO.java new file mode 100644 index 000000000..759be6d48 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantClearingBillVO.java @@ -0,0 +1,49 @@ +package com.jsowell.pile.vo.web; + +import lombok.Data; + +/** + * 运营商清分账单VO + * + * @author Lemon + * @Date 2023/8/28 13:30 + */ +@Data +public class MerchantClearingBillVO { + + // 交易日期 + private String tradeDate; + + // 账单状态 + private String billStatus; + + // 清分账单编号 + private String clearingBillCode; + + // 清分时间 + private String clearingTime; + + // 运营商id + private String merchantId; + + // 运营商名称 + private String merchantName; + + // 应收金额 + private String receivableAmount; + + // 应清分金额 + private String shouldClearingAmount; + + // 实际清分金额 + private String actualClearingAmount; + + // 手续费 + private String feeAmount; + + // 可提现金额 + private String withdrawAbleAmount; + + // 提现单号 + private String withdrawCode; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantOrderReportVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantOrderReportVO.java index a0763c8f8..f02fc712a 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantOrderReportVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/MerchantOrderReportVO.java @@ -45,5 +45,8 @@ public class MerchantOrderReportVO { // 虚拟金额 private BigDecimal virtualAmount; + + // 白名单支付次数 + private BigDecimal whitelistPaymentsNum; } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java index 06dfd68aa..d8155128f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderSettleDetailVO.java @@ -2,6 +2,8 @@ package com.jsowell.pile.vo.web; import lombok.*; +import java.math.BigDecimal; + /** * 订单结算详情 */ @@ -19,7 +21,7 @@ public class OrderSettleDetailVO { /** * 结算金额 */ - private String settleAmount; + private BigDecimal settleAmount; /** * 清分状态 @@ -34,7 +36,7 @@ public class OrderSettleDetailVO { /** * 提现状态 - * 0-未提现;1-体现中;2-提现到账 + * 0-未提现;1-提现中;2-提现到账 */ private String withdrawStatus; diff --git a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml index 439664219..1e144ee59 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/ClearingBillInfoMapper.xml @@ -268,4 +268,24 @@ #{item,jdbcType=INTEGER} + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml index 9703ee2f7..4073807da 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/ClearingWithdrawInfoMapper.xml @@ -453,6 +453,7 @@ select t1.clearing_bill_code as clearingBillCode, t2.order_code as orderCode, + t5.settle_amount as settleAmount, t3.withdraw_code as withdrawCode, t3.withdraw_status as withdrawStatus, t4.payment_id as paymentId @@ -460,6 +461,7 @@ left join clearing_bill_detail t2 on t2.clearing_bill_code = t1.clearing_bill_code and t2.del_flag = '0' left join clearing_withdraw_info t3 on t3.withdraw_code = t1.withdraw_code and t3.del_flag = '0' left join adapay_callback_record t4 on t4.order_code = t2.order_code and t4.del_flag = '0' + left join order_basic_info t5 on t5.order_code = t2.order_code and t5.del_flag = '0' where t1.del_flag = '0' and t2.order_code in diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml index 1087f3bad..3d1f595f5 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileBasicInfoMapper.xml @@ -402,9 +402,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" \ No newline at end of file diff --git a/jsowell-ui/src/views/pile/merchant/components/walletSummary.vue b/jsowell-ui/src/views/pile/merchant/components/walletSummary.vue index b8a22e926..20f94f700 100644 --- a/jsowell-ui/src/views/pile/merchant/components/walletSummary.vue +++ b/jsowell-ui/src/views/pile/merchant/components/walletSummary.vue @@ -3,30 +3,35 @@

账户余额(元)

-

{{adapayMember.acctBalance}}

-

注: +

{{ adapayMember.acctBalance }}

+

+ 注: 账户余额 = 可用余额 + 冻结余额

可用余额(元)

-

{{adapayMember.avlBalance}}

- 提现申请 -

注: - 该余额大于{{withdrawalFee}}元时,才可发起取现 +

{{ adapayMember.avlBalance }}

+ 提现申请 +

+ 注: + 该余额大于{{ withdrawalFee }}元时,才可发起取现

冻结金额(元)

-

{{adapayMember.frzBalance}}

-

注: +

{{ adapayMember.frzBalance }}

+

+ 注: 当配置了自动结算功能,在每日发起结算时会将可用余额转为冻结金额。该部分金额不允许取现。

昨日日终余额(元)

-

{{adapayMember.lastAvlBalance}}

-

注: +

{{ adapayMember.lastAvlBalance }}

+

+ 注:

@@ -110,37 +115,38 @@ 订单流水 --> - + 温馨提示 -
+

1.提现将在3个工作日内审核到账,节假日审核顺延

2.部分流量方的充电订单存在账期,需要一定周期后才开始执行清分

3.提现为银行自动付款,根据银行要求会收取手续费,请知悉

-

4.订单收入包含了第三方的分成收入金额,已自动扣除万车充分成金额

-

可提现(元): - {{adapayMember.avlBalance}} +

+ 可提现(元): + {{ adapayMember.avlBalance }}

-

手续费(元): - {{withdrawalFee.toFixed(2)}} +

+ 手续费(元): + {{ withdrawalFee.toFixed(2) }}

-

实际到账(元): - {{adapayMember.avlBalance -withdrawalFee}} +

+ 实际到账(元): + {{ adapayMember.avlBalance - withdrawalFee }}

- 取 消 - 提交 + 取 消 + 提交 +