From eb5aadd8ea2ce7151459a708d49eb0aedd3c8316 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期二, 10 九月 2024 09:40:43 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java | 85 ++++++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 1 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml | 55 +++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 9 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 5 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java | 39 +++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java | 36 +++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java | 10 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java | 21 ++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java | 29 ++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 55 +++++ ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 75 +++++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java | 159 +++++++++++++++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java | 5 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java | 9 17 files changed, 582 insertions(+), 15 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java index 38121cc..224a867 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/query/ParkingRecordQuery.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel(value = "停车缴费订单Query") public class ParkingRecordQuery extends TimeRangePageQuery { @@ -18,4 +20,7 @@ @ApiModelProperty(value = "车牌号") private String licensePlate; + @ApiModelProperty(value = "停车场id集合 前端忽略") + private List<Integer> lotIds; + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java index 10e711c..4b32bce 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/ChargingListQuery.java @@ -9,14 +9,38 @@ import java.util.List; @Data -@ApiModel(value = "充电账单列表查询参数") +@ApiModel("充电时段统计DTO") public class ChargingListQuery extends BasePage { - @ApiModelProperty("订单分类 1全站 2各个站点") - private String type; - @ApiModelProperty("账单周期2020-01-01 00:00:00 - 2020-01-01 23:59:59") - private String startTime; - @ApiModelProperty("1已出账 2未出账") + @ApiModelProperty("订单编号") + private String code; + + @ApiModelProperty("电站id") + private Integer siteId; + @ApiModelProperty("状态(0=未知,1=等待中,2=启动中,3=充电中,4=停止中,5=已结束)") + private Integer status; + @ApiModelProperty("订单分类(1全站 2各个站点)") + private Integer type; + @ApiModelProperty("状态(1未出账 2已出账)") private Integer state; @ApiModelProperty("uid 前端忽略") private String uid; + + @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; + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java new file mode 100644 index 0000000..c6d4056 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountListVO.java @@ -0,0 +1,29 @@ +package com.ruoyi.order.api.vo; + +import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.order.api.model.TChargingBill; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "ChargingBillListVO对象",description = "充电算帐单列表VO") +public class AccountListVO{ + @ApiModelProperty(value = "账单数量") + private String billCount; + @ApiModelProperty(value = "总入账金额") + private BigDecimal totalAmount; + @ApiModelProperty(value = "总支付结算金额") + private BigDecimal paymentAmount; + @ApiModelProperty(value = "总退款结算金额") + private BigDecimal orderAmount; + @ApiModelProperty(value = "平台手续费") + private BigDecimal commissionAmount; + @ApiModelProperty(value = "列表数据") + private PageInfo<ChargingBillListVO> list; + +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java new file mode 100644 index 0000000..c03dc79 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/AccountVO.java @@ -0,0 +1,85 @@ +package com.ruoyi.order.api.vo; + +import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.order.api.model.TChargingOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "ChargingBillVO对象",description = "充电算帐单") +public class AccountVO { + @ApiModelProperty(value = "账单编号") + private String code; + @ApiModelProperty(value = "账户类型") + private String accountType; + @ApiModelProperty(value = "账单类型") + private String orderType; + @ApiModelProperty(value = "账单分类") + private String type; +// @ApiModelProperty(value = "账单周期") +// private String accountType; +// @ApiModelProperty(value = "站点名称") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// @ApiModelProperty(value = "账户类型") +// private String accountType; +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// @ApiModelProperty(value = "订单总金额") +// private BigDecimal orderAmount; +// @ApiModelProperty(value = "累计电费") +// private BigDecimal electrovalence; +// @ApiModelProperty(value = "累计服务费") +// private BigDecimal serviceCharge; +// @ApiModelProperty(value = "订单数量") +// private Integer orderCount; +// @ApiModelProperty(value = "平台手续费") +// private BigDecimal commissionAmount; +// @ApiModelProperty(value = "三方平台分佣") +// private BigDecimal sharingAmount; +// @ApiModelProperty(value = "优惠抵扣") +// private BigDecimal discount; +// @ApiModelProperty(value = "账单分类 1全站 2各个站点 前端忽略") +// private String category; +// @ApiModelProperty(value = "账单类型 月结 前端忽略") +// private String type; +// @ApiModelProperty(value = "站点名称 前端忽略") +// private String siteName; +// @ApiModelProperty(value = "账单周期 前端忽略") +// private String billWeek; +// @ApiModelProperty(value = "账单生成日期 前端忽略") +// private String createTime; +// @ApiModelProperty(value = "账单编号 前端忽略") +// private String code; +// @ApiModelProperty(value = "充电时长 前端忽略") +// private String chargingTime; + +} diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java index 47c25c5..9576bec 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java @@ -20,8 +20,12 @@ private Integer orderCount; @ApiModelProperty(value = "站点名称") private String siteName; - @ApiModelProperty(value = "实收金额") + @ApiModelProperty(value = "实收金额(支付结算金额)") private BigDecimal paymentAmount; + @ApiModelProperty(value = "退款结算金额") + private BigDecimal refundAmount; + @ApiModelProperty(value = "平台分佣") + private BigDecimal sharingAmount; @ApiModelProperty(value = "总金额") private BigDecimal orderAmount; @ApiModelProperty(value = "累计电费") @@ -30,8 +34,7 @@ private BigDecimal serviceCharge; @ApiModelProperty(value = "平台手续费") private BigDecimal commissionAmount; - @ApiModelProperty(value = "平台分佣") - private BigDecimal sharingAmount; + @ApiModelProperty(value = "充电电流 度") private BigDecimal chargingCapacity; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java index eef3f64..02a5021 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderTimeVO.java @@ -31,4 +31,6 @@ private String electronicProportion; @ApiModelProperty(value = "列表数据") private PageInfo<ChargingOrderListVO> list; + @ApiModelProperty(value = "导出列表数据") + private List<ChargingOrderListVO> exportList; } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java index b34c051..9718c4c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java @@ -55,9 +55,8 @@ @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "停车缴费订单列表") @PostMapping(value = "/pageList") - public R<PageInfo<TParkingRecordPageInfoVO>> pageList(@RequestBody ParkingRecordQuery query) { - - return R.ok(); + public R<TParkingRecordPageInfoVO> pageList(@RequestBody ParkingRecordQuery query) { + return R.ok(parkingRecordService.pageList(query)); } @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "详情") diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java index 0b4fa13..9a7ab8d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java @@ -8,6 +8,7 @@ import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.common.core.web.page.PageInfo; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,6 +18,7 @@ * @author zhibing.pu * @Date 2024/8/7 19:49 */ +@Mapper public interface SiteMapper extends BaseMapper<Site> { diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java index 248c63f..d0b6ced 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/TParkingRecordMapper.java @@ -2,10 +2,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.chargingPile.api.model.TParkingRecord; +import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; +import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO; +import com.ruoyi.chargingPile.api.vo.TParkingRecordVO; +import com.ruoyi.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; /** * <p> @@ -18,4 +23,20 @@ public interface TParkingRecordMapper extends BaseMapper<TParkingRecord> { BigDecimal getSum(@Param("sixBefore") LocalDate sixBefore); + + /** + * 停车缴费订单列表 + * @param query + * @param pageInfo + * @return + */ + List<TParkingRecordVO> pageList(@Param("query") ParkingRecordQuery query, @Param("pageInfo")PageInfo<TParkingRecordVO> pageInfo); + + /** + * 统计 + * @param query + * @return + */ + TParkingRecordPageInfoVO getParkingRecordCount(@Param("query")ParkingRecordQuery query); + } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java index 2af1069..9479008 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/TParkingRecordService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.chargingPile.api.model.TParkingRecord; +import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; +import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO; +import com.ruoyi.common.core.web.page.PageInfo; import java.math.BigDecimal; import java.time.LocalDate; @@ -17,4 +20,11 @@ public interface TParkingRecordService extends IService<TParkingRecord> { BigDecimal getSum(LocalDate sixBefore); + + /** + * 停车缴费订单列表 + * @param query + * @return + */ + TParkingRecordPageInfoVO pageList(ParkingRecordQuery query); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java index 73fccbb..8e6f6e9 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java @@ -1,13 +1,28 @@ package com.ruoyi.chargingPile.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; +import com.ruoyi.chargingPile.api.query.ParkingRecordQuery; +import com.ruoyi.chargingPile.api.vo.TParkingLotVO; +import com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO; +import com.ruoyi.chargingPile.api.vo.TParkingRecordVO; +import com.ruoyi.chargingPile.domain.SiteMenu; +import com.ruoyi.chargingPile.mapper.SiteMapper; +import com.ruoyi.chargingPile.mapper.TParkingLotMapper; import com.ruoyi.chargingPile.mapper.TParkingRecordMapper; import com.ruoyi.chargingPile.service.TParkingRecordService; +import com.ruoyi.common.core.web.page.PageInfo; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -20,8 +35,32 @@ @Service public class TParkingRecordServiceImpl extends ServiceImpl<TParkingRecordMapper, TParkingRecord> implements TParkingRecordService { + @Autowired + private SiteMapper siteMapper; + @Autowired + private TParkingLotMapper parkingLotMapper; + @Override public BigDecimal getSum(LocalDate sixBefore) { return this.baseMapper.getSum(sixBefore); } + + @Override + public TParkingRecordPageInfoVO pageList(ParkingRecordQuery query) { + // 查询站点的停车场id + if(Objects.nonNull(query.getSiteId())){ + Site site = siteMapper.selectById(query.getSiteId()); + List<TParkingLot> tParkingLots = parkingLotMapper.selectList(Wrappers.lambdaQuery(TParkingLot.class) + .eq(TParkingLot::getSiteId, site.getId())); + List<Integer> lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList()); + query.setLotIds(lotIds); + } + PageInfo<TParkingRecordVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); + List<TParkingRecordVO> list = this.baseMapper.pageList(query,pageInfo); + pageInfo.setRecords(list); + // 查询总数 + TParkingRecordPageInfoVO infoVO = this.baseMapper.getParkingRecordCount(query); + infoVO.setParkingRecordVOS(pageInfo); + return infoVO; + } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml index defbedf..3bc729d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml @@ -17,6 +17,7 @@ <result column="status" property="status" /> <result column="out_parking_type" property="outParkingType" /> <result column="create_time" property="createTime" /> + <result column="code" property="code" /> </resultMap> <!-- 通用查询结果列 --> @@ -26,5 +27,59 @@ <select id="getSum" resultType="java.math.BigDecimal"> select sum(timeout_amount) from t_parking_record where in_parking_time >= #{sixBefore} </select> + <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TParkingRecordVO"> + select + tpr.id, tpr.app_user_id, tpr.license_plate, tpr.vehicle_color, tpr.charging_order_id, tpr.parking_lot_id, tpr.in_parking_time, tpr.out_parking_time, + tpr.parking_duration, tpr.order_amount, tpr.status, tpr.out_parking_type, tpr.create_time,(tpr.order_amount - tpr.timeout_amount) as parkingFee, + (tpr.parking_duration - tpr.free_duration) as feeDuration,ts.name as siteName + from t_parking_record tpr + left join t_parking_lot tpl on tpr.parking_lot_id = tpl.id + left join t_site ts on tpl.site_id = ts.id + <where> + <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> + AND tpr.create_time BETWEEN #{query.startTime} AND #{query.endTime} + </if> + <if test="query.code != null and query.code != ''"> + AND tpr.code LIKE concat('%',#{query.code},'%') + </if> + <if test="query.licensePlate != null and query.licensePlate != ''"> + AND tpr.licensePlate LIKE concat('%',#{query.licensePlate},'%') + </if> + <if test="query.lotIds != null and query.lotIds.size()>0"> + AND tpr.parking_lot_id IN + <foreach collection="query.lotIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + AND tpr.status = 3 + </where> + ORDER BY tpr.create_time DESC + </select> + <select id="getParkingRecordCount" resultType="com.ruoyi.chargingPile.api.vo.TParkingRecordPageInfoVO"> + SELECT count(id) as orderCount, + sum(timeout_amount) as timeoutAmountSum, + sum(parking_duration - free_duration) as feeDurationSum, + sum(parking_duration) as parkingDurationSum + from t_parking_record + <where> + <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> + AND create_time BETWEEN #{query.startTime} AND #{query.endTime} + </if> + <if test="query.code != null and query.code != ''"> + AND code LIKE concat('%',#{query.code},'%') + </if> + <if test="query.licensePlate != null and query.licensePlate != ''"> + AND licensePlate LIKE concat('%',#{query.licensePlate},'%') + </if> + <if test="query.lotIds != null and query.lotIds.size()>0"> + AND parking_lot_id IN + <foreach collection="query.lotIds" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + AND status = 3 + </where> + ORDER BY create_time DESC + </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java index d219870..ecba608 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java @@ -18,6 +18,7 @@ import com.ruoyi.order.api.model.TChargingBill; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.query.TOrderInvoiceQuery; +import com.ruoyi.order.api.vo.AccountListVO; import com.ruoyi.order.api.vo.ChargingBillListVO; import com.ruoyi.order.api.vo.ChargingBillVO; import com.ruoyi.order.api.model.ChargingListQuery; @@ -66,7 +67,13 @@ @Resource private TChargingOrderService chargingOrderService; - + @PostMapping(value = "/accountBillList") + @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"}) + public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) { + AccountListVO accountListVO = new AccountListVO(); + ChargingBillVO res = chargingBillService.chargingBillList(dto); + return R.ok(accountListVO); + } @PostMapping(value = "/chargingBillList") @ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"}) public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) { diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java index 92990e1..569f7f2 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java @@ -1,6 +1,8 @@ package com.ruoyi.order.controller; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; @@ -8,29 +10,45 @@ import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.DateUtils; +import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.dto.SettlementConfirmAdd; +import com.ruoyi.order.api.model.ChargingListQuery; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TSettlementConfirm; import com.ruoyi.order.api.query.SettlementListQuery; +import com.ruoyi.order.api.query.TOrderInvoiceQuery; +import com.ruoyi.order.api.vo.ChargingOrderListVO; import com.ruoyi.order.api.vo.SettlementTotalVO; +import com.ruoyi.order.api.vo.TOrderInvoiceVO; +import com.ruoyi.order.export.OrderInvoiceExport; +import com.ruoyi.order.export.TChargingOrderExport; import com.ruoyi.order.vo.ChargingOrderListInfoVO; import com.ruoyi.order.api.vo.ChargingOrderTimeVO; -import com.ruoyi.order.api.model.ChargingListQuery; import com.ruoyi.order.service.*; 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 io.swagger.annotations.ApiParam; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; /** @@ -62,7 +80,42 @@ ChargingOrderListInfoVO res = chargingOrderService.chargingInfo(uid); return AjaxResult.success(res); } + @ApiOperation(value = "充电时段统计-导出", tags = {"管理后台-财务结算"}) + @PostMapping("/export") + public void export(@RequestBody ChargingListQuery dto) + { + ChargingOrderTimeVO res = chargingOrderService.chargingList(dto); + List<TChargingOrderExport> tChargingOrderExports = new ArrayList<>(); + List<ChargingOrderListVO> exportList = res.getExportList(); + for (ChargingOrderListVO chargingOrderListVO : exportList) { + TChargingOrderExport tChargingOrderExport = new TChargingOrderExport(); + BeanUtils.copyProperties(chargingOrderListVO,tChargingOrderExport); + tChargingOrderExports.add(tChargingOrderExport); + } + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingOrderExport.class, tChargingOrderExports); + HttpServletResponse response = WebUtils.response(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + ServletOutputStream outputStream = null; + try { + String fileName = URLEncoder.encode("充电时段统计导出.xls", "utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + outputStream = response.getOutputStream(); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } @GetMapping(value = "/settlementTotal") @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"}) @ApiParam(name = "time", value = "汇报时间2024-01-01 00:00:00") diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java new file mode 100644 index 0000000..08c1165 --- /dev/null +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/export/TChargingOrderExport.java @@ -0,0 +1,159 @@ +package com.ruoyi.order.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "充电时段统计-导出") +public class TChargingOrderExport implements Serializable { + @Excel(name = "序号",width = 30) + private Integer id; + @Excel(name = "订单编号",width = 30) + private String code; + @Excel(name = "电站编号",width = 30) + private String siteCode; + @Excel(name = "电站名称",width = 30) + private String siteName; + @Excel(name = "终端名称",width = 30) + private String terminalName; + @Excel(name = "所属城市",width = 30) + private String city; + @Excel(name = "市区名称",width = 30) + private String cityName; + @Excel(name = "所属合作商",width = 30) + private String partner; + @Excel(name = "电站类型",width = 30,replace = {"其他_0","公共_1","个人_2","公交_3","环卫_4","物流_5","出租车_6"}) + private Integer siteType; + @Excel(name = "售电模式",width = 30,replace = {"正常使用_1","维修中_2","关闭下线_3"}) + private String saleType; + @Excel(name = "运营类型",width = 30,replace = {"直营_1","非直营_2"}) + private String businessCategory; + @Excel(name = "计费模板",width = 30) + private String name; + @Excel(name = "收款方式",width = 30,replace = {"线上_1","线下_2"}) + private String orderClassification; + @Excel(name = "充电启动方式",width = 30) + private String startType; + @Excel(name = "一级来源",width = 30) + private String one; + @Excel(name = "二级来源",width = 30) + private String two; + @Excel(name = "订单创建时间",width = 30) + private String createTime; + @Excel(name = "充电开始时间",width = 30) + private String startTime; + @Excel(name = "充电结束时间",width = 30) + private String endTime; + @Excel(name = "订单状态",width = 30,replace = {"待支付_1","已支付_2"}) + private String rechargePaymentStatus; + @Excel(name = "订单类型",width = 30) + private String type; + @Excel(name = "充电形式",width = 30) + private String chargingType; + @Excel(name = "判定结束原因",width = 30,replace = {"异常终止_0","主动终止_1","满电终止_2","费用不足终止_3"}) + private String endmode; + @Excel(name = "充电结束账号",width = 30) + private String chargingEndAccount; + @Excel(name = "是否是免费订单",width = 30) + private String isFree; + @Excel(name = "充电电费(元)",width = 30) + private String electrovalence; + @Excel(name = "充电服务费(元)",width = 30) + private String serviceCharge; + @Excel(name = "充电费用(元)",width = 30) + private String total; + @Excel(name = "充电电量(度)",width = 30) + private String chargingCapacity; + @Excel(name = "平均电费单价(元)",width = 30) + private String electrovalencePrice; + @Excel(name = "平均服务费实际单价(元)",width = 30) + private String serviceChargePrice; + @Excel(name = "平均服务费挂牌单价(元)",width = 30) + private String serviceChargePriceLook; + @Excel(name = "充电时长(分钟)",width = 30) + private String cumulativeChargingTime; + @Excel(name = "充电前面soc",width = 30) + private String startSoc; + @Excel(name = "充电后soc",width = 30) + private String endtSoc; + @Excel(name = "是否限制soc",width = 30) + private String isSoc; + @Excel(name = "限制soc方式",width = 30) + private String isSocType; + @Excel(name = "限制soc值",width = 30) + private String isSocNum; + @Excel(name = "客户类型",width = 30) + private String userType; + @Excel(name = "会员类型",width = 30) + private String vipType; + @Excel(name = "是否PLUS订单",width = 30) + private String isPlus; + @Excel(name = "客户编号",width = 30) + private String userCode; + @Excel(name = "真实姓名",width = 30) + private String realName; + @Excel(name = "设备号",width = 30) + private String deviceCode; + @Excel(name = "手机号",width = 30) + private String phone; + @Excel(name = "昵称",width = 30) + private String nickName; + @Excel(name = "企业编号",width = 30) + private String companyCode; + @Excel(name = "企业名称",width = 30) + private String companyName; + @Excel(name = "扣费账户类型",width = 30) + private String accountType; + @Excel(name = "使用人",width = 30) + private String useUser; + @Excel(name = "卡号",width = 30) + private String bankCard; + @Excel(name = "代充使用人",width = 30) + private String replaceUser; + @Excel(name = "车架号",width = 30) + private String carSiteName; + @Excel(name = "车架号来源",width = 30) + private String carSiteSource; + @Excel(name = "车牌号",width = 30) + private String carNumber; + @Excel(name = "发动机号",width = 30) + private String carEngineNumber; + @Excel(name = "车辆自编号",width = 30) + private String carNumberCode; + @Excel(name = "第三方商户订单",width = 30) + private String orderCode; + @Excel(name = "判定车牌号",width = 30) + private String carNumberSource; + @Excel(name = "是否单枪",width = 30) + private String isSingle; + @Excel(name = "选择车型",width = 30) + private String carType; + @Excel(name = "车辆品牌",width = 30) + private String carBrand; + @Excel(name = "判定车系",width = 30) + private String carSeries; + @Excel(name = "判定车系来源",width = 30) + private String carSeriesSource; + @Excel(name = "收款时间",width = 30) + private String payTime; + @Excel(name = "电费结算方编码",width = 30) + private String electrovalenceSiteCode; + @Excel(name = "电费结算方名称",width = 30) + private String electrovalenceSiteName; + @Excel(name = "管理公司",width = 30) + private String companyNameAdmin; + @Excel(name = "计费方式",width = 30) + private String moneyType; + @Excel(name = "设备接入方式",width = 30) + private String deviceType; + @Excel(name = "核算公司",width = 30) + private String settlementCompanyName; + @Excel(name = "预支付类型",width = 30) + private String prePaymentType; + @Excel(name = "是否安全防护订单",width = 30) + private String isSecurity; +} diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index af8b9bf..9378d51 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -1245,6 +1245,7 @@ } // 不分页 List<ChargingOrderListVO> list1 = this.baseMapper.chargingList1(dto,startTime1,startTime2,endTime1,endTime2); + chargingOrderTimeVO.setExportList(list1); chargingOrderTimeVO.setOrderCount(list1.size()); // 计算充电总度数 BigDecimal electronic = new BigDecimal("0"); diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index a320601..fa7da27 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -443,5 +443,78 @@ </select> - + <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> + select t1.* from t_charging_order t1 + where 1=1 + <if test="null != req.code and req.code!=''"> + and t1.code LIKE CONCAT('%',#{req.code},'%') + </if> + <if test="null != req.carIds and req.carIds.size()>0" > + and t1.app_user_car_id in + <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="null != req.userIds and req.userIds.size()>0" > + and t1.app_user_id in + <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="req.orderType != null "> + and t1.order_type = #{req.orderType} + </if> + <if test="req.status != null "> + and t1.status = #{status} + </if> + <if test="req.status != null "> + and t1.status = #{req.status} + </if> + <if test="req.siteId != null "> + and t1.site_id = #{req.siteId} + </if> + <if test="startTime1 != null and startTime1!=''"> + and (t1.start_time between #{startTime1} and #{startTime2}) + </if> + <if test="endTime1 != null and endTime1!=''"> + and (t1.end_time between #{endTime1} and #{endTime2}) + </if> + </select> + <select id="chargingList1" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> + select t1.* from t_charging_order t1 + where 1=1 + <if test="null != req.code and req.code!=''"> + and t1.code LIKE CONCAT('%',#{req.code},'%') + </if> + <if test="null != req.carIds and req.carIds.size()>0" > + and t1.app_user_car_id in + <foreach collection="req.carIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="null != req.userIds and req.userIds.size()>0" > + and t1.app_user_id in + <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> + #{item} + </foreach> + </if> + <if test="req.orderType != null "> + and t1.order_type = #{req.orderType} + </if> + <if test="req.status != null "> + and t1.status = #{status} + </if> + <if test="req.status != null "> + and t1.status = #{req.status} + </if> + <if test="req.siteId != null "> + and t1.site_id = #{req.siteId} + </if> + <if test="startTime1 != null and startTime1!=''"> + and (t1.start_time between #{startTime1} and #{startTime2}) + </if> + <if test="endTime1 != null and endTime1!=''"> + and (t1.end_time between #{endTime1} and #{endTime2}) + </if> + </select> </mapper> -- Gitblit v1.7.1