diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessOrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessOrderController.java index 07b584cf0..f44b0d5bb 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessOrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/business/BusinessOrderController.java @@ -1,18 +1,19 @@ 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.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; +import com.jsowell.pile.dto.business.QueryBusinessOrderDTO; import com.jsowell.pile.service.OrderBasicInfoService; import com.jsowell.pile.vo.uniapp.business.BusinessConnectorInfoVO; import com.jsowell.pile.vo.uniapp.business.BusinessOrderBillingInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderQueryResultVO; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; -import javax.xml.ws.soap.Addressing; +import java.util.List; import java.util.List; /** @@ -65,4 +66,27 @@ public class BusinessOrderController extends BaseController { logger.info("通过订单编号查询订单各时段计费明细 orderCode:{}, result:{}", orderCode, response); return response; } + + + /** + * 运营端小程序查询订单 + * @param dto 查询条件 + * @return 订单查询结果 + */ + @PostMapping("/queryBusinessOrder") + public RestApiResponse queryBusinessOrder(@RequestBody QueryBusinessOrderDTO dto) { + RestApiResponse response = null; + try { + BusinessOrderQueryResultVO result = orderBasicInfoService.queryBusinessOrder(dto); + response = new RestApiResponse<>(result); + } catch (BusinessException e) { + logger.warn("运营端小程序查询订单 warn", e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } 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/dto/business/QueryBusinessOrderDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/QueryBusinessOrderDTO.java new file mode 100644 index 000000000..bf029612d --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/business/QueryBusinessOrderDTO.java @@ -0,0 +1,50 @@ +package com.jsowell.pile.dto.business; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 运营端小程序查询订单DTO + * + * @author Auto + * @Date 2024/12/19 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class QueryBusinessOrderDTO { + /** + * 站点名称(可选,支持模糊查询) + */ + private String stationName; + + /** + * 创建时间(可选,格式:yyyy-MM-dd HH:mm:ss) + */ + private String createTime; + + /** + * 结束时间(可选,格式:yyyy-MM-dd HH:mm:ss) + */ + private String endTime; + + /** + * 订单状态 + * 0-未启动;1-充电中;2-待结算;3-待补缴;4-异常;5-可疑;6-订单完成;7-超时关闭 + */ + private String orderStatus; + + /** + * 页码(默认1) + */ + private Integer pageNum; + + /** + * 每页条数(默认10) + */ + private Integer pageSize; +} + 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 a76301982..3ac0875bb 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 @@ -19,6 +19,7 @@ import org.springframework.stereotype.Repository; import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Set; @Repository @@ -345,6 +346,14 @@ public interface OrderBasicInfoMapper { List getOrderInfoByNXJT(NXJTQueryOrdersInfoDTO dto); OrderTotalDataVO getOrderTotalData(QueryOrderDTO dto); + + /** + * 统计订单数量和总金额 + * @param dto 查询条件 + * @return 统计结果 + */ + com.jsowell.pile.vo.web.OrderStatisticsVO countBusinessOrderStatistics(QueryOrderDTO dto); + List queryRepayOrder(String memberId); 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 480adba37..8d84b1e6d 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 @@ -19,8 +19,10 @@ 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.dto.business.QueryBusinessOrderDTO; import com.jsowell.pile.vo.uniapp.business.BusinessOrderBillingInfoVO; import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderQueryResultVO; import com.jsowell.pile.vo.uniapp.customer.OrderVO; import com.jsowell.pile.vo.uniapp.customer.PersonPileConnectorSumInfoVO; import com.jsowell.pile.vo.uniapp.customer.SendMessageVO; @@ -544,6 +546,13 @@ public interface OrderBasicInfoService{ BusinessOrderDetailInfoVO getBusinessOrderDetail(String orderCode); + /** + * 运营端小程序查询订单 + * @param dto 查询条件 + * @return 订单查询结果 + */ + BusinessOrderQueryResultVO queryBusinessOrder(QueryBusinessOrderDTO dto); + /** * 根据枪口编号和状态查询订单 * @param pileConnectorCode 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 2407a4a23..d38211e1e 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 @@ -2,6 +2,8 @@ package com.jsowell.pile.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; @@ -22,6 +24,7 @@ import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.vo.AuthorizedDeptVO; import com.jsowell.common.core.domain.ykc.RealTimeMonitorData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; +import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.AcquirerEnum; import com.jsowell.common.enums.DelFlagEnum; @@ -40,6 +43,7 @@ import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.common.util.spring.SpringUtils; import com.jsowell.pile.domain.*; import com.jsowell.pile.dto.*; +import com.jsowell.pile.dto.business.QueryBusinessOrderDTO; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; import com.jsowell.pile.mapper.OrderBasicInfoMapper; @@ -59,8 +63,11 @@ import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.nanrui.JiangSuOrderInfoVO; import com.jsowell.pile.vo.uniapp.business.BusinessOrderBillingInfoVO; import com.jsowell.pile.vo.uniapp.business.BusinessOrderDetailInfoVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderListVO; +import com.jsowell.pile.vo.uniapp.business.BusinessOrderQueryResultVO; import com.jsowell.pile.vo.uniapp.customer.*; import com.jsowell.pile.vo.web.*; +import com.jsowell.pile.vo.web.OrderStatisticsVO; import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.response.WechatPayRefundRequest; import com.jsowell.wxpay.response.WechatPayRefundResponse; @@ -6165,6 +6172,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { return orderBasicInfoMapper.getPlatformProfit(dto); } + @Override public OrderCountByTimeVO queryOrderInsuranceAmountByTime(QueryOrderDTO dto) { if (dto == null) { dto = new QueryOrderDTO(); @@ -6245,5 +6253,104 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { public List getInsuranceAmount(IndexQueryDTO dto) { return orderBasicInfoMapper.getInsuranceAmount(dto); } + + /** + * 运营端小程序查询订单 + * @param dto 查询条件 + * @return 订单查询结果 + */ + @Override + public BusinessOrderQueryResultVO queryBusinessOrder(QueryBusinessOrderDTO dto) { + // 获取当前登录账号的运营商权限 + List merchantInfoVOList = UserUtils.getMerchantInfoVOList(); + if (CollectionUtils.isEmpty(merchantInfoVOList)) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + List merchantIds = merchantInfoVOList.stream() + .map(MerchantInfoVO::getMerchantId) + .collect(Collectors.toList()); + + // 根据权限查询站点列表 + List allStations = pileStationInfoService.getStationInfosByMerchantIds(merchantIds); + if (CollectionUtils.isEmpty(allStations)) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + + // 根据站点名称过滤 + List stationIdList = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getStationName())) { + List filteredStations = allStations.stream() + .filter(s -> s.getStationName() != null && s.getStationName().contains(dto.getStationName())) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(filteredStations)) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + stationIdList = filteredStations.stream() + .map(s -> String.valueOf(s.getId())) + .collect(Collectors.toList()); + } else { + stationIdList = allStations.stream() + .map(s -> String.valueOf(s.getId())) + .collect(Collectors.toList()); + } + + // 构建QueryOrderDTO + QueryOrderDTO queryOrderDTO = QueryOrderDTO.builder() + .stationIdList(stationIdList) + .startTime(dto.getCreateTime()) + .endTime(dto.getEndTime()) + .orderStatus(dto.getOrderStatus()) + .build(); + + // 分页参数处理 + int pageNum = dto.getPageNum() == null || dto.getPageNum() <= 0 ? 1 : dto.getPageNum(); + int pageSize = dto.getPageSize() == null || dto.getPageSize() <= 0 ? 10 : dto.getPageSize(); + + // 使用聚合 SQL 统计订单数量和总金额 + OrderStatisticsVO statistics = orderBasicInfoMapper.countBusinessOrderStatistics(queryOrderDTO); + + // 订单数量和总金额的为空判断 + long orderCount = statistics != null && statistics.getOrderCount() != null + ? statistics.getOrderCount() : 0L; + BigDecimal totalOrderAmount = statistics != null && statistics.getOrderAmount() != null + ? statistics.getOrderAmount() : BigDecimal.ZERO; + + // 分页查询订单列表 + PageHelper.startPage(pageNum, pageSize); + List orderListVOS = selectOrderBasicInfoList(queryOrderDTO); + PageInfo pageInfo = new PageInfo<>(orderListVOS); + + // 转换为BusinessOrderListVO( + List businessOrderList = orderListVOS.stream() + .map(order -> BusinessOrderListVO.builder() + .createTime(order.getCreateTime()) + .startMode(order.getStartMode()) + .orderAmount(StringUtils.isNotBlank(order.getOrderAmount()) + ? new BigDecimal(order.getOrderAmount()) : BigDecimal.ZERO) + .chargingDegree(StringUtils.isNotBlank(order.getChargingDegree()) + ? new BigDecimal(order.getChargingDegree()) : BigDecimal.ZERO) + .orderStatus(order.getOrderStatus()) + .build()) + .collect(Collectors.toList()); + + // 构建分页响应 + com.jsowell.common.core.page.PageResponse pageResponse = com.jsowell.common.core.page.PageResponse.builder() + .pageNum(pageNum) + .pageSize(pageSize) + .total(pageInfo.getTotal()) + .pages(pageInfo.getPages()) + .list(businessOrderList) + .build(); + + // 构建返回结果 + return BusinessOrderQueryResultVO.builder() + .orderCount(orderCount) + .orderAmount(totalOrderAmount) + .pageResponse(pageResponse) + .orderList(businessOrderList) + .build(); + } + + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderListVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderListVO.java new file mode 100644 index 000000000..0a9310f69 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderListVO.java @@ -0,0 +1,48 @@ +package com.jsowell.pile.vo.uniapp.business; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 运营端小程序订单列表VO + * + * @author Auto + * @Date 2024/12/19 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class BusinessOrderListVO { + /** + * 创建时间 + */ + private String createTime; + + /** + * 订单启动方式 + * 0-后管启动;1-用户app启动;2-卡启动;3-离线卡启动; 4-第三方平台启动; 5-车辆vin码启动; 6-个人桩预约启动 + */ + private String startMode; + + /** + * 充电金额(订单金额) + */ + private BigDecimal orderAmount; + + /** + * 充电量(度) + */ + private BigDecimal chargingDegree; + + /** + * 订单状态 + * 0-未启动;1-充电中;2-待结算;3-待补缴;4-异常;5-可疑;6-订单完成;7-超时关闭 + */ + private String orderStatus; +} + diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderQueryResultVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderQueryResultVO.java new file mode 100644 index 000000000..bb8a2eed3 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/business/BusinessOrderQueryResultVO.java @@ -0,0 +1,43 @@ +package com.jsowell.pile.vo.uniapp.business; + +import com.jsowell.common.core.page.PageResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 运营端小程序订单查询结果VO + * + * @author Auto + * @Date 2024/12/19 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class BusinessOrderQueryResultVO { + /** + * 订单量(笔) + */ + private Long orderCount; + + /** + * 订单金额(元) + */ + private BigDecimal orderAmount; + + /** + * 分页信息 + */ + private PageResponse pageResponse; + + /** + * 订单列表 + */ + private List orderList; +} + diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderStatisticsVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderStatisticsVO.java new file mode 100644 index 000000000..7d9f4678b --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderStatisticsVO.java @@ -0,0 +1,31 @@ +package com.jsowell.pile.vo.web; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 订单统计VO + * + * @author Auto + * @Date 2025/01/20 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class OrderStatisticsVO { + /** + * 订单数量 + */ + private Long orderCount; + + /** + * 订单总金额 + */ + private BigDecimal orderAmount; +} + diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 090eadf1d..13d27e4fd 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -2066,6 +2066,38 @@ order by t1.create_time desc + +