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