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 index 7cbee4356..59a2cd9ac 100644 --- 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 @@ -6,8 +6,9 @@ import com.jsowell.common.core.controller.BaseController; import com.jsowell.common.response.RestApiResponse; import com.jsowell.pile.dto.StationBusinessAnalyzeInfoDTO; import com.jsowell.pile.dto.StationStatisticsInfoDTO; +import com.jsowell.pile.service.OrderBasicInfoService; import com.jsowell.pile.service.PileStationInfoService; -import com.jsowell.pile.vo.StationBusinessAnalyzeInfoVO; +import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO; import com.jsowell.pile.vo.uniapp.business.StationStatisticsInfosVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -27,6 +28,9 @@ public class BusinessStationInfoController extends BaseController { @Autowired private PileStationInfoService pileStationInfoService; + @Autowired + private OrderBasicInfoService orderBasicInfoService; + /** * 获取站点统计信息 * @param dto @@ -85,4 +89,22 @@ public class BusinessStationInfoController extends BaseController { logger.info("获取站点运营分析信息 params:{}, result:{}", JSONObject.toJSONString(dto), response); return response; } + + /** + * 查询订单数量趋势信息 + * @return + */ + @PostMapping("/getStationOrderQuantityInfo") + public RestApiResponse getStationOrderQuantityInfo(@RequestBody StationBusinessAnalyzeInfoDTO dto) { + RestApiResponse response = null; + try { + StationBusinessAnalyzeInfoVO vo = pileStationInfoService.getStationOrderQuantityInfo(dto); + response = new RestApiResponse<>(ImmutableMap.of("stationBusinessAnalyzeInfoVO", vo)); + } 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-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 21f41b9b1..18f8927fc 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 @@ -5,7 +5,7 @@ import com.jsowell.pile.domain.OrderDetail; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; -import com.jsowell.pile.vo.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; import com.jsowell.pile.vo.SupStationStatsVO; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; 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 c2098d399..fcfbea000 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 @@ -12,7 +12,7 @@ import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; -import com.jsowell.pile.vo.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; import com.jsowell.pile.vo.SupStationStatsVO; import com.jsowell.pile.vo.base.MerchantOrderInfoVO; import com.jsowell.pile.vo.base.OrderAmountDetailVO; 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 214495812..601b22401 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 @@ -6,7 +6,7 @@ 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.vo.StationBusinessAnalyzeInfoVO; +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.StationStatisticsInfosVO; @@ -178,4 +178,11 @@ public interface PileStationInfoService { * @param dto */ StationBusinessAnalyzeInfoVO getStationMonthlyBusinessAnalyzeInfo(StationBusinessAnalyzeInfoDTO dto); + + /** + * 查询订单数量趋势信息 + * @param dto + * @return + */ + StationBusinessAnalyzeInfoVO getStationOrderQuantityInfo(StationBusinessAnalyzeInfoDTO 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 9cb9ba0d5..03d75867c 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 @@ -49,7 +49,7 @@ import com.jsowell.pile.transaction.dto.ClearingBillTransactionDTO; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.UserUtils; -import com.jsowell.pile.vo.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; import com.jsowell.pile.vo.SupStationStatsVO; import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.base.*; 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 9336043cb..240fa2618 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 @@ -10,7 +10,6 @@ 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.exception.BusinessException; @@ -27,14 +26,13 @@ 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.BusinessOrderDetailInfoVO; -import com.jsowell.pile.vo.StationBusinessAnalyzeInfoVO; -import com.jsowell.pile.vo.SupStationStatsVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.StationBusinessAnalyzeInfoVO; import com.jsowell.pile.vo.base.*; import com.jsowell.pile.vo.ningxiajiaotou.NXJTStationInfoVO; +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.MerchantOrderReportVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.system.service.SysDeptService; import com.jsowell.system.service.SysUserService; @@ -1035,4 +1033,73 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { return vo; } + + + /** + * 查询订单数量趋势信息 + * @param dto + * @return + */ + @Override + public StationBusinessAnalyzeInfoVO getStationOrderQuantityInfo(StationBusinessAnalyzeInfoDTO dto) { + StationBusinessAnalyzeInfoVO vo = new StationBusinessAnalyzeInfoVO(); + List stationIds = dto.getStationIds(); + String type = dto.getType(); + String startTime = ""; + String endTime = ""; + if (StringUtils.equals(Constants.ONE, type)) { + // 7天 + startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.addDays(new Date(), -7)); + endTime = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD); + } else if (StringUtils.equals(Constants.TWO, type)) { + // 30天 + startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.addDays(new Date(), -30)); + endTime = DateUtils.dateTimeNow(DateUtils.YYYY_MM_DD); + }else if (StringUtils.equals(Constants.THREE, type)) { + // 一年 + startTime = DateUtils.getFirstDayOfLastYearMonth(); + endTime = DateUtils.getLastDayOfCurrentMonth(); + } + // 根据站点id、开始时间、结束时间查询订单日报表 + List settleOrderReports = settleOrderReportService.queryOrderReport(stationIds, startTime, endTime); + if (CollectionUtils.isEmpty(settleOrderReports)) { + return vo; + } + // 根据交易日期汇总订单数量(充电次数) + // key: 交易日期 value: SettleOrderReport + Map collect = new LinkedHashMap<>(); + if (StringUtils.equals(Constants.ONE, type) || StringUtils.equals(Constants.TWO, type)) { + collect = settleOrderReports.stream() + .sorted(Comparator.comparing(SettleOrderReport::getTradeDate)) + .collect(Collectors.toMap(SettleOrderReport::getTradeDate, Function.identity(), + (a, b) -> { + a.setChargeNum(String.valueOf(new BigDecimal(a.getChargeNum()).add(new BigDecimal(b.getChargeNum())))); + return a; + })); + }else { + collect = settleOrderReports.stream() + .peek(report -> { + LocalDate date = LocalDate.parse(report.getTradeDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + String formattedDate = date.format(DateTimeFormatter.ofPattern("yyyy-MM")); + report.setTradeDate(formattedDate); + }) + .collect(Collectors.toMap(SettleOrderReport::getTradeDate, Function.identity(), + (a, b) -> { + a.setChargeNum(String.valueOf(new BigDecimal(a.getChargeNum()).add(new BigDecimal(b.getChargeNum())))); + return a; + })); + } + TreeMap map = new TreeMap<>(collect); + List list = new ArrayList<>(); + for (SettleOrderReport settleOrderReport : map.values()) { + StationOrderQuantityInfoVO orderQuantityInfoVO = new StationOrderQuantityInfoVO(); + orderQuantityInfoVO.setTradeDate(settleOrderReport.getTradeDate()); + orderQuantityInfoVO.setOrderNumber(Integer.parseInt(settleOrderReport.getChargeNum())); + + list.add(orderQuantityInfoVO); + } + + vo.setStationOrderQuantityInfoList(list); + return vo; + } } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/BusinessOrderDetailInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderDetailInfoVO.java similarity index 97% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/BusinessOrderDetailInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderDetailInfoVO.java index c6f60d845..ad48763c5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/BusinessOrderDetailInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderDetailInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo; +package com.jsowell.pile.vo.uniapp.business; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/StationBusinessAnalyzeInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationBusinessAnalyzeInfoVO.java similarity index 83% rename from jsowell-pile/src/main/java/com/jsowell/pile/vo/StationBusinessAnalyzeInfoVO.java rename to jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationBusinessAnalyzeInfoVO.java index 46f9147d9..9a4cdcbce 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/StationBusinessAnalyzeInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationBusinessAnalyzeInfoVO.java @@ -1,4 +1,4 @@ -package com.jsowell.pile.vo; +package com.jsowell.pile.vo.uniapp.business; import com.jsowell.pile.domain.SettleOrderReport; import lombok.AllArgsConstructor; @@ -44,4 +44,9 @@ public class StationBusinessAnalyzeInfoVO { * 结算订单报表 */ private List settleOrderReportList; + + /** + * 站点订单数量趋势 + */ + private List stationOrderQuantityInfoList; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationOrderQuantityInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationOrderQuantityInfoVO.java new file mode 100644 index 000000000..ab2c4d2a8 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/StationOrderQuantityInfoVO.java @@ -0,0 +1,33 @@ +package com.jsowell.pile.vo.uniapp.business; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 站点订单数量趋势信息VO + * + * @author Lemon + * @Date 2024/8/7 15:56:44 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class StationOrderQuantityInfoVO { + /** + * 站点id + */ + // private String stationId; + + /** + * 交易日期 + */ + private String tradeDate; + + /** + * 订单数量 + */ + private int orderNumber; +} diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index c691a056f..4e10f5b83 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -2954,7 +2954,7 @@ and `t1`.`charge_end_time` = ]]> #{startTime,jdbcType=VARCHAR} - SELECT DATE_FORMAT( t1.create_time, '%Y-%m-%d' ) AS tradeDate,