From 68cdd1ca0cf5dbc1f61cdc2a633b36473eccad2d Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期一, 28 十月 2024 11:05:02 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TParkingRecordServiceImpl.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 56 +++++- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java | 24 +- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java | 12 + ruoyi-service/ruoyi-chargingPile/src/main/resources/template/运营商名称1-充电桩名称1-结算对账单明细-结算月份1.xlsx | 0 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java | 107 +++++++++++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 14 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 205 ++++++++++++++++++++++++- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 4 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java | 4 ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 2 12 files changed, 395 insertions(+), 39 deletions(-) diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java index 1416c44..7057e39 100644 --- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java +++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/PageChargingOrderAndUploadRealTimeMonitoringDataDto.java @@ -17,7 +17,7 @@ public class PageChargingOrderAndUploadRealTimeMonitoringDataDto extends BaseModel { private List<ChargingOrderAndUploadRealTimeMonitoringDataDto> records; - private Long count; + private Long total; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java index c029cb1..5c6b7a4 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java @@ -31,6 +31,9 @@ @ApiModelProperty(value = "主键") @TableId(value = "id", type = IdType.NONE) private Long id; + @ApiModelProperty(value = "序号") + @TableField(exist = false) + private Integer xuhao; @ApiModelProperty(value = "订单编号") @TableField("code") @@ -69,6 +72,7 @@ @TableField("site_id") private Integer siteId; + @ApiModelProperty(value = "停车场id") @TableField("parking_lot_id") private Integer parkingLotId; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java index 06c7c6e..ba76c18 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java @@ -47,6 +47,9 @@ @ApiModelProperty(value = "结算服务费备注") @TableField("service_remark") private String serviceRemark; + @ApiModelProperty(value = "电费结算方编码") + @TableField("confirm_code") + private String confirmCode; @ApiModelProperty(value = "计量电量(电量合计)") @TableField("metering_electronic") @@ -107,6 +110,12 @@ @ApiModelProperty(value = "合作商充电服务费根据合同约定分成比例") @TableField("service_partner") private BigDecimal servicePartner; + @ApiModelProperty(value = "合作商充电服务费根据合同约定分成比例") + @TableField(exist = false) + private String servicePartnerString; + @ApiModelProperty(value = "平台充电服务费根据合同约定分成比例") + @TableField(exist = false) + private String platformString; @ApiModelProperty(value = "合作商充电服务费根据合同约定分成金额") @TableField("service_money") private BigDecimal serviceMoney; @@ -147,6 +156,9 @@ @ApiModelProperty(value = "站点名称") @TableField(exist = false) private String siteName; + @ApiModelProperty(value = "服务费:合计可分配金额") + @TableField(exist = false) + private String serviceChargeTotal; @ApiModelProperty(value = "合作商名称") @TableField(exist = false) private String partnerName; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java new file mode 100644 index 0000000..bcf7852 --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementExportVO.java @@ -0,0 +1,107 @@ +package com.ruoyi.order.api.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.order.api.model.TChargingOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "SettlementExportVO对象", description = "结算下载导出信息") +public class SettlementExportVO extends TChargingOrder { + + @ApiModelProperty(value = "站点编号") + private String siteCode; + @ApiModelProperty(value = "站点名称") + private String siteName; + @ApiModelProperty(value = "终端名称") + private String name; + @ApiModelProperty(value = "所属城市") + private String city; + @ApiModelProperty(value = "所属市区") + private String districts; + @ApiModelProperty(value = "所属合作商") + private String partnerName; + @ApiModelProperty(value = "电站类型") + private String siteType; + @ApiModelProperty(value = "售电模式") + private String electronicType; + @ApiModelProperty(value = "站点状态") + private String siteStatus; + @ApiModelProperty(value = "运营类型") + private String businessCategory; + @ApiModelProperty(value = "计费策略") + private String accountingStrategy; + @ApiModelProperty(value = "收款方式") + private String payTypeName; + @ApiModelProperty(value = "订单创建时间") + private String createTime1; + @ApiModelProperty(value = "充电开始时间") + private String startTime1; + @ApiModelProperty(value = "充电结束时间") + private String endTime1; + @ApiModelProperty(value = "订单状态") + private String statusName; + @ApiModelProperty(value = "订单类型") + private String orderTypeName; + @ApiModelProperty(value = "充电形式") + private String chargingType; + @ApiModelProperty(value = "充电结束账号") + private String phone; + @ApiModelProperty(value = "是否免费订单") + private String isFree; + @ApiModelProperty(value = "平均电费单价") + private String averageElectronic; + @ApiModelProperty(value = "平均服务费实际单价") + private String averageServiceChargeReal; + @ApiModelProperty(value = "平均服务费挂牌单价") + private String averageServiceCharge; + + @ApiModelProperty(value = "充电时长(分钟)") + private String chargingSecond; + @ApiModelProperty(value = "充电前soc") + private String startSoc; + @ApiModelProperty(value = "充电后soc") + private String endSoc; + @ApiModelProperty(value = "是否限制SOC") + private String isSoc; + @ApiModelProperty(value = "限制SOC方式") + private String socType; + @ApiModelProperty(value = "限制Soc值") + private String socValue; + @ApiModelProperty(value = "客户类型") + private String userType; + @ApiModelProperty(value = "会员类型") + private String vipType; + @ApiModelProperty(value = "是否PLUS订单") + private String isPlus; + @ApiModelProperty(value = "客户编号") + private String userCode; + @ApiModelProperty(value = "真实姓名") + private String realName; + @ApiModelProperty(value = "设备号") + private String deviceCode; + @ApiModelProperty(value = "手机号") + private String userPhone; + @ApiModelProperty(value = "车牌号") + private String licensePlate; + @ApiModelProperty(value = "选择车型") + private String vehicleModel; + @ApiModelProperty(value = "车辆品牌") + private String vehicleBrand; + + @ApiModelProperty(value = "电费结算方编码") + private String confirmCode; + @ApiModelProperty(value = "电费结算方法名称(管理公司)") + private String companyName; + @ApiModelProperty(value = "计费方式") + private String moneyType; + @ApiModelProperty(value = "设备接入方式") + private String deviceType; + @ApiModelProperty(value = "预支付类型") + private String beforePayType; + @ApiModelProperty(value = "是否安全防护订单") + private String isSafe; +} diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java index 4170703..8c10da3 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java @@ -2,18 +2,25 @@ import java.time.LocalDateTime; import java.math.BigDecimal; +import com.ruoyi.account.api.feignClient.AppUserCarClient; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.model.Site; +import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.common.core.utils.WebUtils; import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; +import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.ExportUidDto; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TSettlementConfirm; -import com.ruoyi.order.api.vo.AccountListVO; -import com.ruoyi.order.api.vo.ChargingBillListVO; +import com.ruoyi.order.api.vo.*; import com.alibaba.excel.EasyExcel; @@ -45,8 +52,8 @@ import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.ChargingListQuery; -import com.ruoyi.order.api.vo.ChargingBillVO; -import com.ruoyi.order.api.vo.SettlementTotalVO; +import com.ruoyi.other.api.feignClient.OtherClient; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.apache.commons.codec.CharEncoding; import org.springframework.beans.BeanUtils; @@ -61,11 +68,10 @@ import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; +import java.time.format.DateTimeFormatter; +import java.util.*; import java.util.regex.Pattern; +import java.util.stream.Collectors; /** * <p> @@ -88,6 +94,12 @@ private OrderClient orderClient; @Resource private SiteClient siteClient; + @Resource + private ChargingGunClient chargingGunClient; + @Resource + private AppUserClient appUserClient; + @Resource + private AppUserCarClient appUserCarClient; @Autowired public TApplyChargingPileController(TApplyChargingPileService applyChargingPileService, TokenService tokenService, RedisService redisService) { @@ -366,12 +378,186 @@ } return R.ok(); } + @Resource + private OtherClient otherClient; + @Resource + private UploadRealTimeMonitoringDataClient uploadRealTimeMonitoringDataClient; @ApiOperation(value = "下载", tags = {"管理后台-结算表记录"}) @PutMapping("/downloadSettlement") @Log(title = "【结算表记录】下载结算表", businessType = BusinessType.EXPORT) public R downloadSettlement(@RequestBody ExportUidDto uid,HttpServletResponse response) { TSettlementConfirm data = chargingOrderClient.downloadSettlement(uid.getUid()).getData(); + for (TChargingOrder chargingOrder : data.getList()) { + SettlementExportVO settlementExportVO = new SettlementExportVO(); + + BeanUtils.copyProperties(data, settlementExportVO); + List<Site> data3 = siteClient.getSiteByIds(Arrays.asList(data.getSiteId())).getData(); + if (data3!=null && (!data3.isEmpty())){ + TAppUser data4 = appUserClient.getUserById(chargingOrder.getAppUserId()).getData(); + if (data4.getVipId()== null ){ + settlementExportVO.setVipType("非会员"); + }else{ + List<Integer> vipIds = new ArrayList<>(); + //获取会员map + R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds); + settlementExportVO.setVipType(vipMap.getData().get(data4.getVipId())); + } + settlementExportVO.setPhone(data4.getPhone()); + settlementExportVO.setRealName(data4.getName()); + if (chargingOrder.getAppUserCarId()!=null){ + List<TAppUserCar> data5 = appUserCarClient.getCarByIds(Arrays.asList(chargingOrder.getAppUserCarId())).getData(); + if (!data5.isEmpty()){ + settlementExportVO.setLicensePlate(data5.get(0).getLicensePlate()); + settlementExportVO.setVehicleModel(data5.get(0).getVehicleModel()); + settlementExportVO.setVehicleBrand(data5.get(0).getVehicleBrand()); + } + + } + settlementExportVO.setSiteCode(data3.get(0).getCode()); + settlementExportVO.setSiteName(data3.get(0).getName()); + settlementExportVO.setCity(data3.get(0).getCity()); + settlementExportVO.setDistricts(data3.get(0).getDistricts()); + Partner data1 = siteClient.getPartnerR(data3.get(0).getPartnerId()).getData(); + if (data1!=null){ + settlementExportVO.setPartnerName(data1.getName()); + } + switch (data3.get(0).getSiteType()){ + case 0: + settlementExportVO.setSiteType("其他"); + break; + case 1: + settlementExportVO.setSiteType("公共"); + break; + case 2: + settlementExportVO.setSiteType("个人"); + break; + case 3: + settlementExportVO.setSiteType("公交(专业)"); + break; + case 4: + settlementExportVO.setSiteType("环卫(专用)"); + break; + case 5: + settlementExportVO.setSiteType("物流(专用)"); + break; + case 6: + settlementExportVO.setSiteType("出租车(专用)"); + break; + } + switch (data3.get(0).getStatus()){ + case 1: + settlementExportVO.setSiteStatus("正常使用"); + break; + case 2: + settlementExportVO.setSiteStatus("维修中"); + break; + case 3: + settlementExportVO.setSiteStatus("关闭下线"); + break; + } + switch (data3.get(0).getBusinessCategory()){ + case 1: + settlementExportVO.setBusinessCategory("直营"); + break; + case 2: + settlementExportVO.setBusinessCategory("非直营"); + break; + } + // todo 查询站点计费策略名称 +// settlementExportVO.setAccountingStrategy(); + + + } + TChargingGun data4 = chargingGunClient.getChargingGunById(settlementExportVO.getChargingGunId()) + .getData(); + if (data4!=null){ + settlementExportVO.setName(data4.getName()); + settlementExportVO.setDeviceCode(data4.getCode()); + } + + settlementExportVO.setElectronicType("转售"); + settlementExportVO.setPayTypeName("线上结算"); + LocalDateTime createTime = settlementExportVO.getCreateTime(); + LocalDateTime startTime = settlementExportVO.getStartTime(); + LocalDateTime endTime = settlementExportVO.getEndTime(); + settlementExportVO.setCreateTime1(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + settlementExportVO.setStartTime1(startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + settlementExportVO.setEndTime1(endTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + switch (settlementExportVO.getStatus()){ + case 0: + settlementExportVO.setStatusName("未知"); + break; + case 1: + settlementExportVO.setStatusName("等待中/已插枪"); + break; + case 2: + settlementExportVO.setStatusName("启动中"); + break; + case 3: + settlementExportVO.setStatusName("充电中"); + break; + case 4: + settlementExportVO.setStatusName("停止中"); + break; + case 5: + settlementExportVO.setStatusName("已结束"); + break; + + } + settlementExportVO.setOrderTypeName("充电订单"); + settlementExportVO.setChargingType("单桩双充"); + settlementExportVO.setIsFree("否"); + settlementExportVO.setAverageElectronic(""); + settlementExportVO.setAverageServiceChargeReal(""); + settlementExportVO.setAverageServiceCharge(""); + // 获取充电时间 + UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(chargingOrder.getCode()).getData(); + if (data5!=null){ + if (data5.getCumulative_charging_time()!=null){ + settlementExportVO.setChargingSecond(data5.getCumulative_charging_time()+""); + + } + } + // 获取开始SOC 结束soc + if (chargingOrder.getCode()!=null){ + List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData(); + if (data6!=null && !data6.isEmpty()){ + // 第一条数据soc为开始 最后一条数据soc为结束soc + settlementExportVO.setStartSoc(data6.get(0).getSoc()+"%"); + settlementExportVO.setEndSoc(data6.get(data6.size()-1).getSoc()+"%"); + } + } + settlementExportVO.setIsSoc("否"); + settlementExportVO.setSocType(""); + settlementExportVO.setSocValue(""); + settlementExportVO.setUserType("普通个人用户"); + + if (chargingOrder.getVipDiscountAmount()!=null && chargingOrder.getVipDiscountAmount().compareTo(BigDecimal.ZERO)>0){ + settlementExportVO.setIsPlus("是"); + + }else { + settlementExportVO.setIsPlus("否"); + + } + settlementExportVO.setUserCode(""); + + + settlementExportVO.setConfirmCode(data.getConfirmCode()); + settlementExportVO.setCompanyName("四川明星新能源有限科技公司"); + settlementExportVO.setMoneyType("线上计费"); + settlementExportVO.setDeviceType("设备直连(自由集控)"); + settlementExportVO.setBeforePayType("先付后退"); + settlementExportVO.setIsSafe("是"); + // 顶部合计数据 + data.setServiceChargeTotal(data.getServiceCharge().add(data.getVenue()) + .add(data.getVenue()).add(data.getMaintain()).add(data.getClean())+""); + + data.setServicePartnerString(data.getServicePartner()+"%"); + BigDecimal bigDecimal = new BigDecimal("100"); + data.setPlatformString(bigDecimal.subtract(data.getServicePartner())+"%"); + } + List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(data.getSiteId())).getData(); if (!data1.isEmpty()){ data.setSiteName(data1.get(0).getName()); @@ -400,10 +586,11 @@ WriteSheet writeSheet = EasyExcel.writerSheet().build(); WriteSheet writeSheet2 = EasyExcel.writerSheet().build(); WriteSheet writeSheet3 = EasyExcel.writerSheet().build(); - FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build(); + FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build(); excelWriter.fill(new FillWrapper("data1", chargingBillVOS), fillConfig, writeSheet); excelWriter.fill(new FillWrapper("data2", chargingBillVOS), fillConfig, writeSheet2); excelWriter.fill(new FillWrapper("data3", data.getList()), fillConfig, writeSheet3); + excelWriter.fill(new FillWrapper("data4", data.getList()), fillConfig, writeSheet3); excelWriter.finish(); } catch (Exception e) { return R.fail("excel导出失败!"); 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 7048099..1f67215 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 @@ -59,7 +59,9 @@ .eq(TParkingLot::getSiteId, site.getId())); List<Integer> lotIds = tParkingLots.stream().map(TParkingLot::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty(lotIds)){ - return new TParkingRecordPageInfoVO(); + TParkingRecordPageInfoVO tParkingRecordPageInfoVO = new TParkingRecordPageInfoVO(); + tParkingRecordPageInfoVO.setParkingRecordVOS(new PageInfo<TParkingRecordVO>()); + return tParkingRecordPageInfoVO; } query.setLotIds(lotIds); } diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx" index 807ae43..52f3fb9 100644 --- "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx" +++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\350\277\220\350\220\245\345\225\206\345\220\215\347\247\2601-\345\205\205\347\224\265\346\241\251\345\220\215\347\247\2601-\347\273\223\347\256\227\345\257\271\350\264\246\345\215\225\346\230\216\347\273\206-\347\273\223\347\256\227\346\234\210\344\273\2751.xlsx" Binary files differ 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 05cf05f..a89d01e 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 @@ -291,10 +291,8 @@ int i =1; for (TChargingOrder tChargingOrder : tChargingOrders) { // 账单信息 - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); - if (tChargingOrder.getRefundStatus()!=null && tChargingOrder.getRefundStatus()==2){ - refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); - } + paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount()); + // 退款信息 ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport(); ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport(); @@ -314,12 +312,16 @@ chargingBillPayExport.setPlatformPay("支付宝小程序支付"); } - List<TChargingOrderRefund> one1 = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list(); + List<TChargingOrderRefund> one1 = tChargingOrderRefundService.lambdaQuery() + .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()) + .eq(TChargingOrderRefund::getRefundStatus, 2) + .list(); for (TChargingOrderRefund one : one1) { + refundAmount= refundAmount.add(one.getRefundAmount()); chargingBillRefundExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber()); chargingBillRefundExport.setCode(tChargingOrder.getCode()); chargingBillRefundExport.setPayTime(tChargingOrder.getCreateTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getCreateTime())):""); - if (tChargingOrder.getRefundTime()!=null){ + if (one.getRefundTime()!=null){ chargingBillRefundExport.setRefundTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(one.getRefundTime()))); } chargingBillRefundExport.setRefundMoney(one.getRefundAmount().toString()); 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 b5f7dd1..dba6fe2 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 @@ -248,6 +248,10 @@ .between(TChargingOrder::getStartTime, byId.getStartTime(), byId.getEndTime()) .eq(TChargingOrder::getStatus, 5) .eq(TChargingOrder::getRechargePaymentStatus, 2).list(); + int i = 1; + for (TChargingOrder chargingOrder : list) { + + } byId.setList(list); String format = byId.getStartTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); String format1 = byId.getEndTime().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 2118771..4046d55 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -833,7 +833,7 @@ } PageChargingOrderAndUploadRealTimeMonitoringDataDto page = new PageChargingOrderAndUploadRealTimeMonitoringDataDto(); - page.setCount(data1.getCount()); + page.setTotal(data1.getCount()); page.setRecords(dtos); return R.ok(page); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java index 06f5be7..22f1e35 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java @@ -13,6 +13,7 @@ import com.ruoyi.integration.api.feignClient.UploadRealTimeMonitoringDataClient; import com.ruoyi.integration.api.model.UploadRealTimeMonitoringData; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.vo.ChargingBillListVO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -23,6 +24,7 @@ import com.ruoyi.order.mapper.TChargingBillMapper; import com.ruoyi.order.mapper.TChargingOrderMapper; import com.ruoyi.order.service.TChargingBillService; +import com.ruoyi.order.service.TChargingOrderRefundService; import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import org.omg.CORBA.PRIVATE_MEMBER; import org.springframework.stereotype.Service; @@ -63,6 +65,8 @@ private AppUserClient appUserClient; @Resource private AppUserCarClient appUserCarClient; + @Resource + private TChargingOrderRefundService chargingOrderRefundService; @Override public ChargingBillVO chargingBillList1(ChargingListQuery dto) { if (dto.getState()!=null){ @@ -244,9 +248,9 @@ } } if (data3!=null)tChargingOrder.setUserName(data3.getName()); - // 累加实收金额 支付金额减去退款金额 - if (tChargingOrder.getPaymentAmount()!=null){ - paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()); + // 累加实收金额 + if (tChargingOrder.getOrderAmount()!=null){ + paymentAmount = paymentAmount.add(tChargingOrder.getOrderAmount()); } // 累加订单金额 if (tChargingOrder.getOrderAmount()!=null){ @@ -256,8 +260,10 @@ if (tChargingOrder.getElectrovalence()!=null){ electrovalence = electrovalence.add(tChargingOrder.getElectrovalence()); } - if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus()!=null && tChargingOrder.getRefundStatus()== 2){ - refundAmount = refundAmount.add(tChargingOrder.getRefundAmount()); + List<TChargingOrderRefund> list2 = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getRefundStatus, 2) + .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId()).list(); + for (TChargingOrderRefund tChargingOrderRefund : list2) { + refundAmount = refundAmount.add(tChargingOrderRefund.getRefundAmount()); } // 累加累计服务费 if (tChargingOrder.getServiceCharge()!=null){ @@ -265,8 +271,7 @@ } // 累加平台手续费 if (tChargingOrder.getOrderAmount()!=null){ - commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006)) - .setScale(2,RoundingMode.HALF_DOWN)); + commissionAmount = commissionAmount.add(tChargingOrder.getOrderAmount().multiply(BigDecimal.valueOf(0.006))); } // 累加平台分佣 if (tChargingOrder.getSharingAmount()!=null){ @@ -499,7 +504,6 @@ BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal chargingCapacity = new BigDecimal("0"); - orderCount+=tChargingOrders.size(); chargingBillVO.setCategory(""); chargingBillListVO.setOrderCount(tChargingOrders.size()); chargingBillVO.setExportList(tChargingOrders); @@ -702,7 +706,7 @@ eq.eq("site_id", chargingBillListVO.getSiteId()); } List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq); - int chargingSecond = 0; + orderCount+=tChargingOrders.size(); BigDecimal paymentAmount = new BigDecimal("0"); BigDecimal orderAmount = new BigDecimal("0"); BigDecimal electrovalence = new BigDecimal("0"); @@ -710,7 +714,7 @@ BigDecimal commissionAmount = new BigDecimal("0"); BigDecimal sharingAmount = new BigDecimal("0"); BigDecimal chargingCapacity = new BigDecimal("0"); - orderCount+=tChargingOrders.size(); + chargingBillListVO.setOrderCount(tChargingOrders.size()); for (TChargingOrder tChargingOrder : tChargingOrders) { // 累加实收金额 支付金额减去退款金额 if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){ 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 a5b335c..e7152ca 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 @@ -2321,6 +2321,7 @@ // 根据站点id和开始时间和结束时间和归属日期 查询充电订单列表 QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() .eq("site_id", dto.getSiteId()) + .eq("status", 5) .eq("recharge_payment_status",2); switch (dto.getType()){ case 1: @@ -2388,21 +2389,17 @@ // 三方交易手续费 三方收费*0.6% commissionAmount = sharingAmount.multiply(new BigDecimal("0.006")); // 订单手续费 订单支付金额 - 退款金额*0.6% - orderCommission = paymentAmount.multiply(new BigDecimal("0.006")); + orderCommission = paymentAmount.multiply(new BigDecimal("0.006").setScale(2,RoundingMode.HALF_DOWN)); tSettlementConfirm.setSharingAmount(sharingAmount.setScale(2, RoundingMode.HALF_DOWN)); tSettlementConfirm.setCommissionAmount(commissionAmount.setScale(2, RoundingMode.HALF_DOWN)); - tSettlementConfirm.setElectrovalence(electrovalence); - // 服务费=总服务费-三费收费-交易手续费-交易手续费-服务费会员抵扣-服务费优惠券抵扣 - tSettlementConfirm.setServiceCharge(serviceCharge.subtract(commissionAmount).subtract(sharingAmount).subtract(orderCommission).subtract(vipDiscount).subtract(couponDiscount)); + tSettlementConfirm.setElectrovalence(electrovalence.setScale(2, RoundingMode.HALF_DOWN)); + tSettlementConfirm.setServiceCharge(serviceCharge.setScale(2, RoundingMode.HALF_DOWN)); tSettlementConfirm.setOrderCommission(orderCommission); tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); tSettlementConfirm.setSiteId(dto.getSiteId()); tSettlementConfirm.setChargingElectronic(chargingElectronic); tSettlementConfirm.setIncome(chargingElectronic.add(serviceCharge)); - tSettlementConfirm.setProfitMoney(new BigDecimal("0")); - tSettlementConfirm.setNewMoney(new BigDecimal("0")); - tSettlementConfirm.setNewSettlement(new BigDecimal("0")); tSettlementConfirm.setVipDiscount(vipDiscount); tSettlementConfirm.setCouponDiscount(couponDiscount); tSettlementConfirm.setType(dto.getType()); @@ -2423,11 +2420,23 @@ tSettlementConfirm.setRemark(dto.getRemark()); tSettlementConfirm.setServicePartner(dto.getServicePartner()); tSettlementConfirm.setServiceMoney(dto.getServiceMoney()); + BigDecimal subtract = new BigDecimal("1").subtract(dto.getProportionPartner()); + // 总电损费用 + BigDecimal divide = tSettlementConfirm.getProportionMoney().divide(subtract, 2, RoundingMode.HALF_DOWN); + // 平台承担电损 + BigDecimal subtract1 = divide.subtract(tSettlementConfirm.getProportionMoney()); + BigDecimal multiply = dto.getServiceMoney().multiply(subtract); + BigDecimal subtract2 = multiply.subtract(subtract1); + tSettlementConfirm.setNewMoney(subtract2); + tSettlementConfirm.setTotalService(dto.getTotalService()); tSettlementConfirm.setServiceRemark(dto.getServiceRemark()); tSettlementConfirm.setDistribution(dto.getDistribution()); tSettlementConfirm.setIncome(dto.getElectrovalence().add(dto.getServiceCharge())); - tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain())); + tSettlementConfirm.setCost(dto.getVenue().add(dto.getClean()).add(dto.getMaintain()).add(dto.getMetering())); + tSettlementConfirm.setProfitMoney(chargingElectronic.add(serviceCharge).subtract(tSettlementConfirm.getCost())); + tSettlementConfirm.setNewSettlement(subtract2.subtract(tSettlementConfirm.getCost())); + tSettlementConfirmMapper.insert(tSettlementConfirm); } return tSettlementConfirm; @@ -2511,11 +2520,12 @@ // tSettlementConfirm1.setIncomePercentage(); // tSettlementConfirm1.setTotalPercentage(); tSettlementConfirm1.setElectronicRefund(0); -// 上月成本合计 + // 上月成本合计 BigDecimal beforeCost= new BigDecimal("0"); // 上月利润合计 BigDecimal beforeIncome= new BigDecimal("0"); for (TSettlementConfirm tSettlementConfirm : list1) { + tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData(); if (!data1.isEmpty()){ tSettlementConfirm.setSiteName(data1.get(0).getName()); @@ -2568,11 +2578,14 @@ StringBuilder stringBuilder = new StringBuilder(); for (TChargingOrder tChargingOrder : tChargingOrders) { stringBuilder.append(tChargingOrder.getCode()).append(","); + } + // 充电总时长 + Long temp = 0L; if (StringUtils.hasLength(stringBuilder.toString())){ List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getOrderInfoByCodes(stringBuilder.substring(0,stringBuilder.length()-1)).getData(); - temp+=data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum(); + temp+=(data6.stream().mapToLong(UploadRealTimeMonitoringData::getCumulative_charging_time).sum()*60); } List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData(); // 计算充电桩的功率平均值 @@ -2583,11 +2596,32 @@ tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge())); - // todo 计算利用率 该电站充电桩本月利用率: //利用率=充电量/(桩数量*功率*时间) + List<TChargingPile> data2 = chargingPileClient.getChargingPileBySiteId(tSettlementConfirm.getSiteId()).getData(); + BigDecimal bigDecimal2 = new BigDecimal("0"); + + if (data2!=null && (!data2.isEmpty())){ + for (TChargingPile tChargingPile : data2) { + bigDecimal2 = bigDecimal2.add(tChargingPile.getRatedPower()); + } + BigDecimal bigDecimal1 = new BigDecimal(data2.size()+""); + // 平均功率 + BigDecimal divide = bigDecimal2.divide(bigDecimal1, 2, RoundingMode.HALF_DOWN); + // 充电量 + BigDecimal chargingElectronic1 = tSettlementConfirm.getChargingElectronic(); + // 桩数量 + BigDecimal bigDecimal3 = new BigDecimal(data2.size()); + BigDecimal multiply = chargingElectronic1.multiply(new BigDecimal("24")); + BigDecimal multiply1 = bigDecimal3.multiply(divide).multiply(new BigDecimal(temp)); + tSettlementConfirm.setRate(chargingElectronic1.divide(multiply1,2,RoundingMode.HALF_DOWN)+""); + }else{ + tSettlementConfirm.setRate(""); + } + for (TSettlementConfirm settlementConfirm : list2) { settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge())); + tSettlementConfirm.setMetering(tSettlementConfirm.getSupplyElectronic()); if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){ // 电站相同比较收入涨幅跌幅 if (tSettlementConfirm.getIncome().compareTo(BigDecimal.ZERO)>0){ -- Gitblit v1.7.1