ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -76,9 +76,7 @@ @ApiModelProperty(value = "状态(1=未使用,2=已使用)") @TableField("status") private Integer status; @ApiModelProperty(value = "订单id 后台发放的优惠券没有订单id") @TableField("orderId") private Long orderId; @ApiModelProperty(value = "当前领取优惠卷的json记录") @TableField("coupon_json") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -185,4 +185,5 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("pay_time") private LocalDateTime payTime; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillVO.java
New file @@ -0,0 +1,33 @@ package com.ruoyi.order.api.vo; import com.ruoyi.common.core.web.page.PageInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "ChargingBillVO对象",description = "充电算帐单") public class ChargingBillVO { @ApiModelProperty(value = "充电总度数") private BigDecimal chargingCapacity; @ApiModelProperty(value = "实收金额") private BigDecimal paymentAmount; @ApiModelProperty(value = "订单总金额") private BigDecimal orderAmount; @ApiModelProperty(value = "累计电费") private BigDecimal electrovalence; @ApiModelProperty(value = "累计服务费") private BigDecimal serviceCharge; @ApiModelProperty(value = "订单数量") private Integer orderCount; @ApiModelProperty(value = "平台手续费") private String commissionAmount; @ApiModelProperty(value = "三方平台分佣") private String sharingAmount; @ApiModelProperty(value = "优惠抵扣") private String discount; @ApiModelProperty(value = "列表数据") private PageInfo<ChargingOrderListVO> list; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderVO.java
@@ -30,10 +30,7 @@ @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "累计电费") private BigDecimal electrovalence; @ApiModelProperty(value = "累计服务费") private BigDecimal serviceCharge; @ApiModelProperty(value = "时段数") private Integer count; @ApiModelProperty(value = "1明星充电 2快电 3新电途") ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java
New file @@ -0,0 +1,91 @@ package com.ruoyi.order.controller; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.vo.ChargingBillVO; import com.ruoyi.order.api.vo.ChargingOrderTimeVO; import com.ruoyi.order.dto.ChargingBillQuery; import com.ruoyi.order.dto.ChargingListQuery; import com.ruoyi.order.service.*; import com.ruoyi.order.vo.ChargingOrderListInfoVO; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * <p> * 前端控制器 * </p> * * @author xiaochen * @since 2024-08-07 */ @Api(tags = "充电算帐单") @RestController @RequestMapping("/chargingBill") public class ChargingBillController { @Resource private TChargingOrderService chargingOrderService; @Autowired private TokenService tokenService; @Autowired private TOrderEvaluateService orderEvaluateService; @Resource private WxPaymentClient wxPaymentClient; @Resource private RedisService redisService; @Resource private AliPaymentClient aliPaymentClient; @Resource private TShoppingOrderService shoppingOrderService; @Resource private AppUserClient appUserClient; @Resource private TVipOrderService vipOrderService; @Resource private ParkingLotClient parkingLotClient; @Resource private TChargingOrderRefundService chargingOrderRefundService; @Resource private TShoppingOrderRefundService shoppingOrderRefundService; @Resource private TVipOrderRefundService vipOrderRefundService; @Resource private SiteClient siteClient; @Resource private ChargingPileClient chargingPileClient; @Resource private ChargingGunClient chargingGunClient; @Resource private AppUserCarClient appUserCarClient; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @ResponseBody @PostMapping(value = "/chargingList") @ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"}) public AjaxResult<ChargingBillVO> chargingList(@RequestBody ChargingListQuery dto) { return AjaxResult.success(null); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -84,6 +84,7 @@ public R manageFeedback(@RequestBody ManageFeedbackDto manageFeedbackDto) { TOrderAppeal byId = orderAppealService.getById(manageFeedbackDto.getId()); byId.setFeedback(manageFeedbackDto.getFeedback()); byId.setStatus(2); orderAppealService.updateById(byId); return R.ok(); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingBillQuery.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.order.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class ChargingBillQuery extends BasePage { @ApiModelProperty("订单编号") private String code; @ApiModelProperty("电站id") private Integer siteId; @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)") private Integer status; @ApiModelProperty("手机号") private String phone; @ApiModelProperty("车牌号") private String licensePlate; @ApiModelProperty("订单类型(1=充电订单(小程序),2=充电订单(刷卡))") private Integer orderType; @ApiModelProperty("开始时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") private String startTime; @ApiModelProperty("结束时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") private String endTime; @ApiModelProperty("用户ids 前端忽略") private List<Long> userIds; @ApiModelProperty("车辆ids 前端忽略") private List<Long> carIds; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingListQuery.java
@@ -1,6 +1,7 @@ package com.ruoyi.order.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,31 +9,12 @@ import java.util.List; @Data @ApiModel(value = "充电账单列表查询参数") public class ChargingListQuery extends BasePage { @ApiModelProperty("订单编号") private String code; @ApiModelProperty("电站id") private Integer siteId; @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)") private Integer status; @ApiModelProperty("手机号") private String phone; @ApiModelProperty("车牌号") private String licensePlate; @ApiModelProperty("订单类型(1=充电订单(小程序),2=充电订单(刷卡))") private Integer orderType; @ApiModelProperty("开始时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") @ApiModelProperty("订单分类 1全站 2各个站点") private String category; @ApiModelProperty("账单周期2020-01-01 - 2020-01-01") private String startTime; @ApiModelProperty("结束时间 2020-01-01 12:00:00 - 2020-01-01 23:00:00") private String endTime; @ApiModelProperty("用户ids 前端忽略") private List<Long> userIds; @ApiModelProperty("车辆ids 前端忽略") private List<Long> carIds; @ApiModelProperty("1已出账 2未出账") private Integer state; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
@@ -1,11 +1,13 @@ package com.ruoyi.order.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @ApiModel("支付订单返回Dto") public class PayOrderDto { private String id; @ApiModelProperty("1充电订单2购物订单3vip订单4停车订单") ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderQueryDto.java
@@ -1,12 +1,15 @@ package com.ruoyi.order.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @ApiModel("支付订单查询dto") public class PayOrderQueryDto extends BasePage { @ApiModelProperty("订单编号") private String code; @@ -18,8 +21,10 @@ private Integer isRefund; @ApiModelProperty("下单时间1") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime1; @ApiModelProperty("下单时间2") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime2; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -27,6 +27,7 @@ import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.integration.api.feignClient.ChargingHandshakeClient; import com.ruoyi.integration.api.feignClient.PlatformStartChargingReplyClient; import com.ruoyi.integration.api.feignClient.SendMessageClient; @@ -51,12 +52,16 @@ import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TGoods; import com.ruoyi.order.vo.ChargingOrderListInfoVO; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.model.RefundReq; import com.ruoyi.payment.api.model.RefundResp; import com.ruoyi.payment.api.model.WxPaymentRefundModel; import com.ruoyi.payment.api.vo.*; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.seata.spring.annotation.GlobalTransactional; import io.swagger.annotations.ApiModelProperty; import org.springframework.beans.factory.annotation.Autowired; @@ -881,8 +886,15 @@ public List<Map<String, BigDecimal>> getYearData(List<Long> chargingOrderIds) { return this.baseMapper.getYearData(chargingOrderIds); } @Resource private IPartnerService partnerService; @Resource private SysUserClient sysUserClient; @Resource private UserSiteClient userSiteClient; @Resource private RoleSiteClient roleSiteClient; @Override public ChargingOrderTimeVO chargingList(ChargingListQuery dto) { String startTime1 = null; @@ -895,13 +907,7 @@ startTime1 = split[0]; startTime2 = split[1]; } if (StringUtils.hasLength(dto.getEndTime())){ String[] split = dto.getEndTime().split(" - "); endTime1 = split[0]; endTime2 = split[1]; } ChargingOrderTimeVO chargingOrderTimeVO = new ChargingOrderTimeVO(); PageInfo<ChargingOrderListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2); @@ -1080,31 +1086,36 @@ } chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode()); // todo 周一完善 // chargingOrderListInfoVO.setStartSoc(); // chargingOrderListInfoVO.setEndSoc(); // chargingOrderListInfoVO.setChargingCapacity(); // chargingOrderListInfoVO.setSiteId(); // chargingOrderListInfoVO.setChargingPileId(); // chargingOrderListInfoVO.setAppUserId(); // chargingOrderListInfoVO.setAppUserCarId(); // chargingOrderListInfoVO.setChargingGunId(); // chargingOrderListInfoVO.setOrderType(); // chargingOrderListInfoVO.setChargingSecond(); // chargingOrderListInfoVO.setLicensePlate(); // chargingOrderListInfoVO.setPhone(); // chargingOrderListInfoVO.setPaymentAmount(); // chargingOrderListInfoVO.setElectrovalence(); // chargingOrderListInfoVO.setServiceCharge(); // chargingOrderListInfoVO.setStartTime(); // chargingOrderListInfoVO.setEndTime(); // chargingOrderListInfoVO.setId(); // chargingOrderListInfoVO.setUid(); // chargingOrderListInfoVO.setList(); // 获取开始SOC 结束soc List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); if (!data6.isEmpty()){ // 第一条数据soc为开始 最后一条数据soc为结束soc chargingOrderListInfoVO.setStartSoc(data6.get(0).getSoc().toString()); chargingOrderListInfoVO.setEndSoc(data6.get(data6.size()-1).getSoc().toString()); chargingOrderListInfoVO.setChargingCapacity(data6.get(data6.size()-1).getCharging_degree()); chargingOrderListInfoVO.setChargingSecond(data6.get(data6.size()-1).getCumulative_charging_time()*60+""); return null; } if (chargingOrder.getAppUserCarId()!=null){ List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(chargingOrder.getAppUserCarId())).getData(); if (!data3.isEmpty())chargingOrderListInfoVO.setLicensePlate(data3.get(0).getLicensePlate()); } chargingOrderListInfoVO.setStartTime(chargingOrder.getStartTime()); chargingOrderListInfoVO.setEndTime(chargingOrder.getEndTime()); chargingOrderListInfoVO.setId(chargingOrder.getId()); chargingOrderListInfoVO.setUid(chargingOrder.getId().toString()); chargingOrderListInfoVO.setList(data6); chargingOrderListInfoVO.setCouponDiscountAmount(chargingOrder.getCouponDiscountAmount()); chargingOrderListInfoVO.setVipDiscountAmount(chargingOrder.getVipDiscountAmount()); chargingOrderListInfoVO.setSharingAmount(chargingOrder.getSharingAmount()); chargingOrderListInfoVO.setCommissionAmount(chargingOrder.getCommissionAmount()); // 查询费用明细列表 List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery() .eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()) .list(); chargingOrderListInfoVO.setList1(list); return chargingOrderListInfoVO; } /** * 处理充电订单实时监控数据相关的业务逻辑 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -44,7 +45,7 @@ @ApiModelProperty(value = "订单类型(1=充电订单(小程序),2=充电订单(刷卡))") private String orderType; @ApiModelProperty(value = "充电时间 秒") private Long chargingSecond; private String chargingSecond; @ApiModelProperty(value = "车牌号") private String licensePlate; @ApiModelProperty(value = "客户手机号") @@ -65,6 +66,16 @@ private Long id; @ApiModelProperty(value = "订单uid") private String uid; @ApiModelProperty(value = "费用明细-优惠券优惠金额") private BigDecimal couponDiscountAmount; @ApiModelProperty(value = "费用明细-会员优惠金额") private BigDecimal vipDiscountAmount; @ApiModelProperty(value = "费用明细-平台分佣") private BigDecimal sharingAmount; @ApiModelProperty(value = "费用明细-手续费") private BigDecimal commissionAmount; @ApiModelProperty(value = "充电信息") List<UploadRealTimeMonitoringData> list; @ApiModelProperty(value = "费用明细-费用列表") List<TChargingOrderAccountingStrategy> list1; } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -115,7 +115,10 @@ payment_amount , create_time, end_time, pay_time pay_time, refund_status, (payment_amount-refund_amount) as final_amount, del_flag FROM charging_pile_order.t_charging_order UNION ALL SELECT @@ -129,7 +132,10 @@ payment_amount , create_time, receiving_time as end_time, pay_time pay_time, refund_status, (payment_amount-refund_amount) as final_amount, del_flag FROM charging_pile_order.t_shopping_order UNION ALL SELECT @@ -143,7 +149,10 @@ payment_amount , create_time, create_time as end_time, pay_time pay_time, refund_status, (payment_amount-refund_amount) as final_amount, del_flag FROM charging_pile_order.t_vip_order UNION ALL SELECT @@ -157,10 +166,14 @@ order_amount as payment_amount, create_time, out_parking_time as end_time, out_parking_time as pay_time out_parking_time as pay_time, null as refund_status, 0 as final_amount, 0 as del_flag FROM charging_pile_service.t_parking_record ) o <where> o.del_flag = 0 <if test="data.code != null and data.code != ''"> AND o.code LIKE CONCAT('%',#{data.code},'%') </if> @@ -170,9 +183,6 @@ <if test="data.type != null"> AND o.type = #{data.type} </if> <if test="data.status != null"> AND o.status = #{data.status} </if> <if test="data.createTime1 != null"> AND o.create_time >= #{data.createTime1} </if> @@ -180,7 +190,7 @@ AND o.create_time <= #{data.createTime2} </if> </where> ORDER BY o.create_time desc </select> <select id="getRefundList" resultType="com.ruoyi.order.api.model.TChargingOrderRefund">