ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingOrderListVO.java
@@ -101,4 +101,6 @@ private Boolean authInfo = true; @ApiModelProperty(value = "充电曲线按钮权限 ") private Boolean authCurve = true; @ApiModelProperty(value = "计费策略名称") private String accountingStrategyName; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -47,10 +47,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -237,7 +234,7 @@ @PostMapping("/getParkingRecord") public R<TParkingRecord> getParkingRecord(@RequestBody GetParkingRecord query){ TParkingRecord one = parkingRecordService.getOne(new LambdaQueryWrapper<TParkingRecord>() .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).eq(TParkingRecord::getStatus, query.getStatus())); .eq(TParkingRecord::getLicensePlate, query.getLicensePlate()).orderByDesc(TParkingRecord::getCreateTime).last(" limit 0, 1")); return R.ok(one); } ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/CouponService.java
@@ -53,7 +53,6 @@ return null; } GetParkingRecord query = new GetParkingRecord(); query.setStatus(1); query.setLicensePlate(carNumber); TParkingRecord data = parkingRecordClient.getParkingRecord(query).getData(); if(null == data){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java
@@ -3,6 +3,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; @@ -85,9 +86,7 @@ private AccountingStrategyOrderService accountingStrategyOrderService; @Resource private TChargingOrderAccountingStrategyService tChargingOrderAccountingStrategyService; @Resource private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; @RequiresPermissions(value = {"/chargingPeriodStatistics"}, logical = Logical.OR) @@ -118,9 +117,9 @@ List<Site> data9 = siteClient.getSiteAll().getData(); List<TAppUser> data6 = appUserClient.getAllUser().getData(); List<Partner> data7 = siteClient.getAllPartner().getData(); List<AccountingStrategyOrder> listAll = accountingStrategyOrderService.lambdaQuery() .list(); List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(); // List<Long> collect = exportList.stream().map(ChargingOrderListVO::getId).collect(Collectors.toList()); // List<TChargingOrderAccountingStrategy> stageCostAll = tChargingOrderAccountingStrategyService.list(new QueryWrapper<TChargingOrderAccountingStrategy>() // .in("charging_order_id", collect)); List<TVip> data5 = vipClient.getAllVip().getData(); List<TAppUserCar> data8 = appUserCarClient.getAllCar().getData(); for (ChargingOrderListVO chargingOrderListVO : exportList) { @@ -145,13 +144,7 @@ tChargingOrderExport.setId(i); tChargingOrderExport.setCode(chargingOrderListVO.getCode()); tChargingOrderExport.setTerminalName(chargingOrderListVO.getTerminalName()); // 查询这笔订单的计费策略名称 List<AccountingStrategyOrder> list = listAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); if (!list.isEmpty()){ tChargingOrderExport.setName(list.get(0).getName()); } tChargingOrderExport.setName(chargingOrderListVO.getAccountingStrategyName()); tChargingOrderExport.setOrderClassification("1"); tChargingOrderExport.setStartType("扫码"); tChargingOrderExport.setOne("小程序"); @@ -201,35 +194,32 @@ tChargingOrderExport.setServiceCharge(chargingOrderListVO.getServiceCharge()+""); tChargingOrderExport.setTotal(chargingOrderListVO.getPaymentAmount()+""); tChargingOrderExport.setChargingCapacity(chargingOrderListVO.getElectricity()+""); List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); if (!stageCost.isEmpty()){ // 累加时段电费单价 取平均值 BigDecimal bigDecimal1 = new BigDecimal("0"); BigDecimal bigDecimal2 = new BigDecimal("0"); BigDecimal bigDecimal3 = new BigDecimal("0"); BigDecimal size = new BigDecimal(stageCost.size()); for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) { bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice()); bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice()); bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); } BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN); BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN); BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN); tChargingOrderExport.setElectrovalencePrice(divide1+""); tChargingOrderExport.setServiceChargePrice(divide2+""); tChargingOrderExport.setServiceChargePriceLook(divide3+""); } if (chargingOrderListVO.getStartTime()!=null && chargingOrderListVO.getEndTime()!=null){ LocalDateTime startTime = chargingOrderListVO.getStartTime(); LocalDateTime endTime = chargingOrderListVO.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); tChargingOrderExport.setCumulativeChargingTime((between*60)+""); } // List<TChargingOrderAccountingStrategy> stageCost = stageCostAll.stream().filter(e -> e.getChargingOrderId().equals(chargingOrderListVO.getId())).collect(Collectors.toList()); // if (!stageCost.isEmpty()){ // // 累加时段电费单价 取平均值 // BigDecimal bigDecimal1 = new BigDecimal("0"); // BigDecimal bigDecimal2 = new BigDecimal("0"); // BigDecimal bigDecimal3 = new BigDecimal("0"); // BigDecimal size = new BigDecimal(stageCost.size()); // // for (TChargingOrderAccountingStrategy tChargingOrderAccountingStrategy : stageCost) { // bigDecimal1 = bigDecimal1.add(tChargingOrderAccountingStrategy.getPeriodElectricPrice()); // bigDecimal2 = bigDecimal2.add(tChargingOrderAccountingStrategy.getPeriodServicePrice()); // bigDecimal3 = bigDecimal3.add(tChargingOrderAccountingStrategy.getPeriodOriginalServicePrice()); // } // BigDecimal divide1 = bigDecimal1.divide(size, 2, RoundingMode.HALF_DOWN); // BigDecimal divide2 = bigDecimal2.divide(size, 2, RoundingMode.HALF_DOWN); // BigDecimal divide3 = bigDecimal3.divide(size, 2, RoundingMode.HALF_DOWN); // tChargingOrderExport.setElectrovalencePrice(divide1+""); // tChargingOrderExport.setServiceChargePrice(divide2+""); // tChargingOrderExport.setServiceChargePriceLook(divide3+""); // } tChargingOrderExport.setElectrovalencePrice(""); tChargingOrderExport.setServiceChargePrice(""); tChargingOrderExport.setServiceChargePriceLook(""); tChargingOrderExport.setCumulativeChargingTime(chargingOrderListVO.getChargingSecond() + ""); tChargingOrderExport.setRechargeAmount(chargingOrderListVO.getRechargeAmount().toString()); tChargingOrderExport.setRefundAmount(chargingOrderListVO.getRefundAmount().toString()); tChargingOrderExport.setRefundAmount(null != chargingOrderListVO.getRefundAmount() ? chargingOrderListVO.getRefundAmount().toString() : ""); tChargingOrderExport.setStartSoc(chargingOrderListVO.getStartSoc()); tChargingOrderExport.setEndtSoc(chargingOrderListVO.getEndSoc()); tChargingOrderExport.setIsSoc("否"); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -82,7 +82,7 @@ List<Map<String, Object>> getYearData(@Param("start")LocalDateTime start,@Param("end")LocalDateTime end,@Param("siteIds")List<Integer> siteIds); List<ChargingOrderListVO> chargingList(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2); List<ChargingOrderListVO> chargingList(@Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2); List<Map<String, Object>> chargingList1(@Param("pageInfo")PageInfo<ChargingOrderListVO> pageInfo, @Param("req") ChargingListQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2, @Param("endTime1")String endTime1, @Param("endTime2")String endTime2); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -2183,13 +2183,16 @@ String endTime1 = null; String endTime2 = null; List<TChargingGun> allGun = chargingGunClient.getAllGun().getData(); List<TChargingPile> allPile = chargingGunClient.getAllPile().getData(); if (StringUtils.hasLength(dto.getStartTime())) { String[] split = dto.getStartTime().split(" - "); startTime1 = split[0]; startTime2 = split[1]; } if (StringUtils.hasLength(dto.getEndTime())) { String[] split = dto.getEndTime().split(" - "); endTime1 = split[0]; endTime2 = split[1]; } if (StringUtils.hasLength(dto.getPhone())) { List<Long> data = appUserClient.getUserIdsByPhone(dto.getPhone()).getData(); @@ -2255,32 +2258,7 @@ } } dto.setSiteIds(siteIds); List<Site> sites = siteClient.getSiteAll().getData(); // 不分页 PageInfo<ChargingOrderListVO> pageInfo1 = new PageInfo<>(1, 999999999); List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(pageInfo1, dto, startTime1, startTime2, endTime1, endTime2); for (ChargingOrderListVO chargingOrderListVO : list1) { List<Integer> integers = new ArrayList<>(); integers.add(chargingOrderListVO.getSiteId()); Site site = sites.stream().filter(e -> e.getId().equals(chargingOrderListVO.getSiteId())).findFirst().orElse(null); if (site != null) { chargingOrderListVO.setSiteName(site.getName()); } if (chargingOrderListVO.getStartTime() != null && chargingOrderListVO.getEndTime() != null) { LocalDateTime startTime = chargingOrderListVO.getStartTime(); LocalDateTime endTime = chargingOrderListVO.getEndTime(); // 计算时间差 单位秒 long between = ChronoUnit.SECONDS.between(startTime, endTime); chargingOrderListVO.setChargingSecond(between); } if (chargingOrderListVO.getChargingGunId() != null && chargingOrderListVO.getChargingPileId() != null) { TChargingGun data1 = allGun.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingGunId())).findFirst().orElse(null); TChargingPile data2 = allPile.stream().filter(e -> e.getId().equals(chargingOrderListVO.getChargingPileId())).findFirst().orElse(null); if (data2 != null && data1 != null) { chargingOrderListVO.setTerminalName(data2.getName() + "-" + data1.getName()); } } } List<ChargingOrderListVO> list1 = this.baseMapper.chargingList(dto, startTime1, startTime2, endTime1, endTime2); return list1; } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -983,55 +983,95 @@ </select> <select id="chargingList" resultType="com.ruoyi.order.api.vo.ChargingOrderListVO"> select t1.*, t1.current as chargingCapacity, t1.payment_amount as paymentAmount, t1.electricity as chargingCapacity, ifnull(t2.refund_amount, 0) as refundAmount from t_charging_order t1 left join t_charging_order_refund t2 on t1.id = t2.charging_order_id where t1.del_flag = 0 and t1.recharge_payment_status = 2 select a.id, b.`name` as siteName, a.`status`, a.recharge_payment_type as rechargePaymentType, a.recharge_payment_status as rechargePaymentStatus, a.site_id as siteId, a.charging_pile_id as chargingPileId, a.app_user_id as appUserId, a.app_user_car_id as appUserCarId, c.license_plate as plateNum, a.start_charge_seq as startChargeSeq, a.charging_gun_id as chargingGunId, a.order_source as orderSource, a.`code`, a.order_type as orderType, d.`name` as terminalName, UNIX_TIMESTAMP(a.end_time) - UNIX_TIMESTAMP(a.start_time) as chargingSecond, a.electricity as chargingCapacity, a.electricity as electricity, a.recharge_amount as rechargeAmount, a.payment_amount as orderAmount, a.vip_discount_amount as vipDiscountAmount, e.refund_amount as refundAmount, c.license_plate as licensePlate, f.phone, a.payment_amount as paymentAmount, e.refund_amount as residualAmount, h.electrovalence as electrovalence, CASE WHEN a.order_source = 1 THEN h.serviceCharge ELSE h.serviceCharge * 0.8 END as serviceCharge, 0 as commissionAmount, a.tripartite_platform_name as tripartitePlatformName, a.create_time as createTime, a.start_time as startTime, a.end_time as endTime, a.end_mode as endMode, a.pay_time as payTime, a.start_soc as startSoc, a.end_soc as endSoc, g.`name` as accountingStrategyName from charging_pile_order.t_charging_order a left join charging_pile_service.t_site b on (a.site_id = b.id) left join charging_pile_account.t_app_user_car c on (a.app_user_car_id = c.id) left join charging_pile_service.t_charging_gun d on (a.charging_gun_id = d.id) left join charging_pile_order.t_charging_order_refund e on (a.id = e.charging_order_id) left join charging_pile_account.t_app_user f on (a.app_user_id = f.id) left join charging_pile_order.t_accounting_strategy_order g on (a.id = g.charging_order_id) left join (select sum(period_electric_price) as electrovalence,sum(period_service_price) as serviceCharge,charging_order_id from charging_pile_order.t_charging_order_accounting_strategy group by charging_order_id) as h on (a.id = h.charging_order_id) where a.del_flag = 0 and a.recharge_payment_status = 2 <if test="null != req.code and req.code!=''"> and t1.code LIKE CONCAT('%',#{req.code},'%') and a.code LIKE CONCAT('%',#{req.code},'%') </if> <if test="null != req.carIds and req.carIds.size()>0"> and t1.app_user_car_id in and a.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 and a.app_user_id in <foreach collection="req.userIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="null != req.siteIds and req.siteIds.size()>0"> and t1.site_id in and a.site_id in <foreach collection="req.siteIds" item="item" index="index" separator="," open="(" close=")"> #{item} </foreach> </if> <if test="req.orderType != null "> and t1.order_type = #{req.orderType} and a.order_type = #{req.orderType} </if> <if test="req.status != null "> and t1.status = #{req.status} and a.status = #{req.status} </if> <if test="req.status != null "> and t1.status = #{req.status} and a.status = #{req.status} </if> <if test="req.siteId != null "> and t1.site_id = #{req.siteId} and a.site_id = #{req.siteId} </if> <if test="startTime1 != null and startTime1!=''"> and (t1.create_time between #{startTime1} and #{startTime2}) and (a.create_time between #{startTime1} and #{startTime2}) </if> <if test="endTime1 != null and endTime1!=''"> and (t1.end_time between #{endTime1} and #{endTime2}) and (a.end_time between #{endTime1} and #{endTime2}) </if> and t1.start_time IS NOT NULL order by t1.create_time desc and a.start_time IS NOT NULL order by a.create_time desc </select>