From 6ff86d171b7621b4200d2e25176e08c171bd3809 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期六, 07 九月 2024 17:51:22 +0800
Subject: [PATCH] 代码提交
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 186 +++++++++++++++++++++++++
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java | 8 +
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java | 7
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java | 21 +++
ruoyi-service/ruoyi-chargingPile/src/main/resources/template/运营商名称1-充电桩名称1-结算对账单明细-结算月份1.xlsx | 0
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java | 2
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 6
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TSettlementConfirm.java | 24 ++
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 7
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 11 +
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java | 20 ++
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml | 11 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 35 +++++
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 4
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java | 15 +
ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java | 9 +
ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java | 3
17 files changed, 346 insertions(+), 23 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
index 2b00996..d33b267 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/SiteFallbackFactory.java
@@ -4,6 +4,7 @@
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.TChargingPile;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -26,7 +27,12 @@
public SiteClient create(Throwable throwable) {
log.error("站点调用失败:{}", throwable.getMessage());
return new SiteClient() {
-
+
+ @Override
+ public R<List<TChargingPile>> getPileListBySiteId(Integer siteId) {
+ return R.fail("根据站点id 查询所有充电桩:" + throwable.getMessage());
+ }
+
@Override
public R<List<Site>> getSiteByIds(List<Integer> ids) {
return R.fail("根据id集合获取站点数据调用失败:" + throwable.getMessage());
diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
index a1aea08..c311954 100644
--- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
+++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/SiteClient.java
@@ -4,6 +4,7 @@
import com.ruoyi.chargingPile.api.factory.SiteFallbackFactory;
import com.ruoyi.chargingPile.api.model.Partner;
import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.model.TChargingPile;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import org.springframework.cloud.openfeign.FeignClient;
@@ -17,6 +18,8 @@
*/
@FeignClient(contextId = "SiteClient", value = ServiceNameConstants.CHARGINGPILE_SERVICE, fallbackFactory = SiteFallbackFactory.class)
public interface SiteClient {
+ @GetMapping("/site/getPileListBySiteId/{siteId}")
+ public R<List<TChargingPile>> getPileListBySiteId(@PathVariable("siteId")Integer siteId);
/**
* 根据id集合获取数据
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
index 2586a69..d39a68e 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/factory/UploadRealTimeMonitoringDataFallbackFactory.java
@@ -31,7 +31,12 @@
public R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId) {
return R.fail("查询充电桩实时监测数据失败:" + throwable.getMessage());
}
-
+
+ @Override
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(String orderId) {
+ return R.fail("根据订单编号s获取所有监测数据失败:" + throwable.getMessage());
+ }
+
@Override
public R<List<UploadRealTimeMonitoringData>> getDataByOrderCode(String code) {
return R.fail("根据订单编号获取所有监测数据失败:" + throwable.getMessage());
diff --git a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
index 902dff5..5ceab1f 100644
--- a/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
+++ b/ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/feignClient/UploadRealTimeMonitoringDataClient.java
@@ -25,7 +25,14 @@
*/
@PostMapping("/uploadRealTimeMonitoringData/getOrderInfoByCode")
R<UploadRealTimeMonitoringData> chargingOrderInfo(String orderId);
-
+
+ /**
+ * 批量查询
+ * @param orderId
+ * @return
+ */
+ @PostMapping(value = "/uploadRealTimeMonitoringData/getOrderInfoByCodes")
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId);
/**
* 根据订单编号获取所有监测数据
* @param code
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
index f43eb6e..960f451 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -11,6 +11,7 @@
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.ChargingBillVO;
import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@@ -102,6 +103,11 @@
public R<TSettlementConfirm> downloadSettlement(String uid) {
return R.fail("通过id查询结算确认失败:" + throwable.getMessage());
}
+
+ @Override
+ public R<SettlementTotalVO> settlementTotalR(String time) {
+ return R.fail("查询结算汇总表导出列表失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
index 5979a05..80529c0 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -11,6 +11,7 @@
import com.ruoyi.order.api.query.TChargingCountQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
import com.ruoyi.order.api.vo.ChargingBillVO;
+import com.ruoyi.order.api.vo.SettlementTotalVO;
import io.swagger.annotations.ApiOperation;
import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
import org.springframework.cloud.openfeign.FeignClient;
@@ -114,4 +115,7 @@
*/
@GetMapping(value = "/financial/settlement/downloadSettlement/{uid}")
public R<TSettlementConfirm> downloadSettlement(@PathVariable("uid") String uid);
+
+ @GetMapping(value = "/financial/settlement/settlementTotalR")
+ public R<SettlementTotalVO> settlementTotalR(String time);
}
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 354868a..796d4a9 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
@@ -58,8 +58,9 @@
@TableField("loss_electronic")
private BigDecimal lossElectronic;
@ApiModelProperty(value = "收入合计")
- @TableField("income")
+ @TableField("收入合计")
private BigDecimal income;
+
@ApiModelProperty(value = "场地费")
@TableField("venue")
private BigDecimal venue;
@@ -72,9 +73,12 @@
@ApiModelProperty(value = "日常维护费")
@TableField("maintain")
private BigDecimal maintain;
- @ApiModelProperty(value = "成本(可分配合计)")
+ @ApiModelProperty(value = "成本")
@TableField("cost")
private BigDecimal cost;
+ @ApiModelProperty(value = "合计可分配金额")
+ @TableField("distribution")
+ private BigDecimal distribution;
@ApiModelProperty(value = "利润")
@TableField("profit_money")
private BigDecimal profitMoney;
@@ -173,14 +177,24 @@
@ApiModelProperty(value = "uid")
@TableField(exist = false)
private String uid;
- @ApiModelProperty(value = "合计可分配金额")
- @TableField(exist = false)
- private BigDecimal distribution;
+
@ApiModelProperty(value = "结账日期 2024年09月06日17:10:06至2024年09月06日17:10:06")
@TableField(exist = false)
private String time;
@ApiModelProperty(value = "充电记录明细")
@TableField(exist = false)
private List<TChargingOrder> list;
+ @ApiModelProperty(value = "收入合计涨幅/跌幅 正数为涨幅负数为跌幅 字段为空 说明没有上月记录 不展示涨幅跌幅")
+ @TableField(exist = false)
+ private String incomePercentage;
+ @ApiModelProperty(value = "总利润涨幅/跌幅 正数为涨幅负数为跌幅 字段为空 说明没有上月记录 不展示涨幅跌幅")
+ @TableField(exist = false)
+ private String totalPercentage;
+ @ApiModelProperty(value = "利用率")
+ @TableField(exist = false)
+ private String rate;
+ @ApiModelProperty(value = "参与电力市场交易退补电费")
+ @TableField(exist = false)
+ private Integer electronicRefund;
}
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java
new file mode 100644
index 0000000..bbe3edf
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/SettlementTotalVO.java
@@ -0,0 +1,21 @@
+package com.ruoyi.order.api.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy;
+import com.ruoyi.order.api.model.TSettlementConfirm;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+@ApiModel(value = "SettlementTotalVO对象",description = "结算汇总表列表VO")
+public class SettlementTotalVO {
+ @ApiModelProperty(value = "列表数据")
+ List<TSettlementConfirm> list1;
+ @ApiModelProperty(value = "合计数据")
+ List<TSettlementConfirm> list2;
+}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 1db4d7c..fc48e33 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -82,6 +82,17 @@
@Resource
private ChargingOrderClient chargingOrderClient;
+
+ /**
+ * 根据站点id 查询所有充电桩
+ * @param siteId
+ * @return
+ */
+ @GetMapping("/getPileListBySiteId/{siteId}")
+ public R<List<TChargingPile>> getPileListBySiteId(@PathVariable("siteId")Integer siteId){
+
+ return R.ok(chargingPileService.lambdaQuery().eq(TChargingPile::getSiteId, siteId).list());
+ }
/**
* 小程序扫一扫
* @param number
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 22b010c..c1e071b 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
@@ -42,6 +42,7 @@
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 io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.CharEncoding;
import org.springframework.beans.BeanUtils;
@@ -281,7 +282,41 @@
}
return R.ok();
}
+ @ApiOperation(value = "导出", tags = {"管理后台-结算汇总表"})
+ @GetMapping("/downloadSettlementTotal")
+ public R downloadSettlementTotal(String time,HttpServletResponse response)
+ {
+ SettlementTotalVO data = chargingOrderClient.settlementTotalR(time).getData();
+
+ try {
+ response.setCharacterEncoding(Constants.UTF8);
+ response.setContentType("application/vnd.ms-excel");
+ response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
+ response.setHeader("Content-Disposition", "attachment;filename=" +
+ URLEncoder.encode("结算确认单", CharEncoding.UTF_8) + ".xlsx");
+ } catch (UnsupportedEncodingException e) {
+ return R.fail("excel导出失败!");
+ }
+ try {
+ // excel模板封装
+ ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
+ InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"运营商名称1-充电桩名称1-结算对账单明细-结算月份1" + ".xlsx");
+ // 自动释放资源
+ try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
+ FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.VERTICAL).build();
+ excelWriter.fill(new FillWrapper("data1", data.getList1()), fillConfig, writeSheet);
+ excelWriter.fill(new FillWrapper("data2", data.getList2()), fillConfig, writeSheet);
+ excelWriter.finish();
+ } catch (Exception e) {
+ return R.fail("excel导出失败!");
+ }
+ } catch (IOException e) {
+ return R.fail("excel导出失败!");
+ }
+ return R.ok();
+ }
@ApiOperation(value = "下载", tags = {"管理后台-结算表记录"})
@GetMapping("/downloadSettlement")
public R downloadSettlement(String uid,HttpServletResponse response)
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 c0043ee..807ae43 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-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
index aedff15..b3b1995 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/controller/UploadRealTimeMonitoringDataController.java
@@ -9,6 +9,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -40,6 +41,25 @@
}
return R.ok();
}
+
+ /**
+ * 批量查询
+ * @param orderId
+ * @return
+ */
+ @PostMapping(value = "/getOrderInfoByCodes")
+ public R<List<UploadRealTimeMonitoringData>> getOrderInfoByCodes(@RequestParam("orderId") String orderId){
+ List<UploadRealTimeMonitoringData> res = new ArrayList<>();
+ for (String s : orderId.split(",")) {
+ List<UploadRealTimeMonitoringData> dataByOrderCode = uploadRealTimeMonitoringDataService.getDataByOrderCode(s);
+ if(dataByOrderCode.size() > 0){
+ UploadRealTimeMonitoringData uploadRealTimeMonitoringData = dataByOrderCode.get(dataByOrderCode.size() - 1);
+ res.add(uploadRealTimeMonitoringData);
+ }
+
+ }
+ return R.ok(res);
+ }
/**
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 b272feb..92990e1 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
@@ -16,6 +16,7 @@
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.vo.SettlementTotalVO;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
import com.ruoyi.order.api.model.ChargingListQuery;
@@ -63,10 +64,16 @@
}
@GetMapping(value = "/settlementTotal")
- @ApiOperation(value = "结算确认表-列表查询", tags = {"管理后台-财务结算"})
- @ApiParam(name = "time", value = "汇报时间yyyy-MM")
- public AjaxResult<ChargingOrderListInfoVO> settlementTotal(String time) {
- return AjaxResult.success(null);
+ @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"})
+ @ApiParam(name = "time", value = "汇报时间2024-01-01 00:00:00")
+ public AjaxResult<SettlementTotalVO> settlementTotal(String time) {
+ SettlementTotalVO res = chargingOrderService.settlementTotal(time);
+ return AjaxResult.success(res);
+ }
+ @GetMapping(value = "/settlementTotalR")
+ public R<SettlementTotalVO> settlementTotalR( String time) {
+ SettlementTotalVO res = chargingOrderService.settlementTotal(time);
+ return R.ok(res);
}
@PostMapping(value = "/settlementAdd")
@ApiOperation(value = "结算确认表-生成/保存结算确认表", tags = {"管理后台-财务结算"})
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
index 6c711c0..260ee56 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TSettlementConfirmMapper.java
@@ -28,4 +28,6 @@
List<TSettlementConfirm> settlementList(@Param("pageInfo") PageInfo<TSettlementConfirm> pageInfo, @Param("req") SettlementListQuery dto);
+
+ List<TSettlementConfirm> settlementTotal(@Param("time") String time);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 00a91aa..d62aa72 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -14,10 +14,7 @@
import com.ruoyi.order.api.query.ChargingOrderQuery;
import com.ruoyi.order.api.query.SettlementListQuery;
import com.ruoyi.order.api.query.UploadRealTimeMonitoringDataQuery;
-import com.ruoyi.order.api.vo.ChargingOrderTimeVO;
-import com.ruoyi.order.api.vo.ChargingOrderVO;
-import com.ruoyi.order.api.vo.GetChargingOrderByLicensePlate;
-import com.ruoyi.order.api.vo.TCharingOrderVO;
+import com.ruoyi.order.api.vo.*;
import com.ruoyi.order.dto.*;
import com.ruoyi.order.vo.ChargingOrderListInfoVO;
import org.springframework.web.bind.annotation.RequestBody;
@@ -172,4 +169,6 @@
TSettlementConfirm settlementAdd(SettlementConfirmAdd dto);
PageInfo<TSettlementConfirm> settlementList(SettlementListQuery dto);
+
+ SettlementTotalVO settlementTotal(String time);
}
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 27599e1..dd605fc 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
@@ -62,6 +62,7 @@
import com.ruoyi.payment.api.model.WxPaymentRefundModel;
import com.ruoyi.payment.api.vo.*;
import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.sun.org.apache.bcel.internal.generic.NEW;
import io.seata.spring.annotation.GlobalTransactional;
import io.swagger.annotations.ApiModelProperty;
import org.slf4j.Logger;
@@ -1354,7 +1355,6 @@
chargingOrderListInfoVO.setTerminalName(data2.getName()+data1.getName());
}
chargingOrderListInfoVO.setEndMode(chargingOrder.getEndMode());
- // todo 周一完善
// 获取开始SOC 结束soc
List<UploadRealTimeMonitoringData> data6 = uploadRealTimeMonitoringDataClient.getDataByOrderCode(chargingOrder.getCode()).getData();
if (!data6.isEmpty()){
@@ -1734,7 +1734,7 @@
tSettlementConfirm.setMetering(dto.getData().getMetering());
tSettlementConfirm.setClean(dto.getData().getClean());
tSettlementConfirm.setMaintain(dto.getData().getMaintain());
- tSettlementConfirm.setCost(dto.getData().getCost());
+ tSettlementConfirm.setCost(dto.getData().getVenue().add(dto.getData().getClean()).add(dto.getData().getMaintain()));
tSettlementConfirm.setProfitMoney(new BigDecimal("0"));
tSettlementConfirm.setNewMoney(new BigDecimal("0"));
tSettlementConfirm.setNewSettlement(new BigDecimal("0"));
@@ -1751,6 +1751,8 @@
tSettlementConfirm.setServiceMoney(dto.getData().getServiceMoney());
tSettlementConfirm.setTotalService(dto.getData().getTotalService());
tSettlementConfirm.setServiceRemark(dto.getData().getServiceRemark());
+ tSettlementConfirm.setDistribution(dto.getData().getDistribution());
+ tSettlementConfirm.setIncome(dto.getData().getElectrovalence().add(dto.getData().getServiceCharge()));
if (dto.getState() == 2){
tSettlementConfirmMapper.insert(tSettlementConfirm);
}
@@ -1781,9 +1783,183 @@
return null;
}
+ @Override
+ public SettlementTotalVO settlementTotal(String time) {
+ SettlementTotalVO res = new SettlementTotalVO();
+ List<TSettlementConfirm> list1 = tSettlementConfirmMapper.settlementTotal(time);
+ LocalDateTime parse = LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+ // 减少一个月
+ LocalDateTime minus = parse.minusMonths(1);
+ List<TSettlementConfirm> list2 = tSettlementConfirmMapper.settlementTotal(time);
+ // 合计
+ List<TSettlementConfirm> total = new ArrayList<>();
+
+ TSettlementConfirm tSettlementConfirm1 = new TSettlementConfirm();
+ BigDecimal meteringElectronic = new BigDecimal("0");
+ BigDecimal chargingElectronic = new BigDecimal("0");
+ BigDecimal lossElectronic = new BigDecimal("0");
+ BigDecimal income = new BigDecimal("0");
+ BigDecimal venue = new BigDecimal("0");
+ BigDecimal metering = new BigDecimal("0");
+ BigDecimal clean = new BigDecimal("0");
+ BigDecimal maintain = new BigDecimal("0");
+ BigDecimal cost = new BigDecimal("0");
+ BigDecimal profitMoney = new BigDecimal("0");
+ BigDecimal newMoney = new BigDecimal("0");
+ BigDecimal newSettlement = new BigDecimal("0");
+ BigDecimal supplyElectronic = new BigDecimal("0");
+ BigDecimal proportionPartner = new BigDecimal("0");
+ BigDecimal proportionMoney = new BigDecimal("0");
+ BigDecimal totalElectronic = new BigDecimal("0");
+ BigDecimal totalService = new BigDecimal("0");
+ BigDecimal servicePartner = new BigDecimal("0");
+ BigDecimal serviceMoney = new BigDecimal("0");
+ BigDecimal sharingAmount = new BigDecimal("0");
+ BigDecimal commissionAmount = new BigDecimal("0");
+ BigDecimal electrovalence = new BigDecimal("0");
+ BigDecimal serviceCharge = new BigDecimal("0");
+ BigDecimal orderCommission = new BigDecimal("0");
+ BigDecimal vipDiscount = new BigDecimal("0");
+ BigDecimal couponDiscount = new BigDecimal("0");
+// tSettlementConfirm1.setIncomePercentage();
+// tSettlementConfirm1.setTotalPercentage();
+ tSettlementConfirm1.setElectronicRefund(0);
+// 上月成本合计
+ BigDecimal beforeCost= new BigDecimal("0");
+ // 上月利润合计
+ BigDecimal beforeIncome= new BigDecimal("0");
+ for (TSettlementConfirm tSettlementConfirm : list1) {
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(tSettlementConfirm.getSiteId())).getData();
+ if (!data1.isEmpty()){
+ tSettlementConfirm.setSiteName(data1.get(0).getName());
+ }
+ meteringElectronic = meteringElectronic.add(tSettlementConfirm.getMeteringElectronic());
+ chargingElectronic = chargingElectronic.add(tSettlementConfirm.getChargingElectronic());
+ lossElectronic = lossElectronic.add(tSettlementConfirm.getLossElectronic());
+ income = income.add(tSettlementConfirm.getIncome());
+ venue = venue.add(tSettlementConfirm.getVenue());
+ metering = metering.add(tSettlementConfirm.getMetering());
+ clean = clean.add(tSettlementConfirm.getClean());
+ maintain = maintain.add(tSettlementConfirm.getMaintain());
+ cost = cost.add(tSettlementConfirm.getCost());
+ profitMoney = profitMoney.add(tSettlementConfirm.getProfitMoney());
+ newMoney = newMoney.add(tSettlementConfirm.getNewMoney());
+ newSettlement = newSettlement.add(tSettlementConfirm.getNewSettlement());
+ supplyElectronic = supplyElectronic.add(tSettlementConfirm.getSupplyElectronic());
+ proportionPartner = proportionPartner.add(tSettlementConfirm.getProportionPartner());
+ proportionMoney = proportionMoney.add(tSettlementConfirm.getProportionMoney());
+ totalElectronic = totalElectronic.add(tSettlementConfirm.getTotalElectronic());
+ totalService = totalService.add(tSettlementConfirm.getTotalService());
+ servicePartner = servicePartner.add(tSettlementConfirm.getServicePartner());
+ serviceMoney = serviceMoney.add(tSettlementConfirm.getServiceMoney());
+ sharingAmount = sharingAmount.add(tSettlementConfirm.getSharingAmount());
+ commissionAmount = commissionAmount.add(tSettlementConfirm.getCommissionAmount());
+ electrovalence = electrovalence.add(tSettlementConfirm.getElectrovalence());
+ serviceCharge = serviceCharge.add(tSettlementConfirm.getServiceCharge());
+ orderCommission = orderCommission.add(tSettlementConfirm.getOrderCommission());
+ vipDiscount = vipDiscount.add(tSettlementConfirm.getVipDiscount());
+ couponDiscount = couponDiscount.add(tSettlementConfirm.getCouponDiscount());
+
+ // 查询结算确认单开始时间和结束时间的单子
+ QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
+ .eq("site_id", tSettlementConfirm.getSiteId())
+ .eq("recharge_payment_status",2);
+ switch (tSettlementConfirm.getType()){
+ case 1:
+ eq.between("start_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
+ break;
+ case 2:
+ eq.between("end_time", tSettlementConfirm.getStartTime(), tSettlementConfirm.getEndTime());
+ break;
+ }
+ List<TChargingOrder> tChargingOrders = this.baseMapper.selectList(eq);
+ Map<String,TChargingOrder> map = new HashMap<>();
+ 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();
+ }
+ List<TChargingPile> data = siteClient.getPileListBySiteId(tSettlementConfirm.getSiteId()).getData();
+ // 计算充电桩的功率平均值
+ BigDecimal bigDecimal = new BigDecimal("0");
+ for (TChargingPile datum : data) {
+ bigDecimal = bigDecimal.add(datum.getRatedPower());
+ }
+ BigDecimal bigDecimal1 = bigDecimal.divide(new BigDecimal(data.size())).setScale(2, RoundingMode.HALF_DOWN);
+
+ tSettlementConfirm.setIncome(tSettlementConfirm.getElectrovalence().add(tSettlementConfirm.getServiceCharge()));
+ // todo 计算利用率 该电站充电桩本月利用率:
+ //利用率=充电量/(桩数量*功率*时间)
+
+ for (TSettlementConfirm settlementConfirm : list2) {
+ settlementConfirm.setIncome(settlementConfirm.getElectrovalence().add(settlementConfirm.getServiceCharge()));
+ if (tSettlementConfirm.getSiteId().equals(settlementConfirm.getSiteId())){
+ // 电站相同比较收入涨幅跌幅
+ BigDecimal subtract = tSettlementConfirm.getIncome().subtract(settlementConfirm.getIncome()).divide(tSettlementConfirm.getIncome()).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ // 比较总利润 收入合计-成本合计
+ BigDecimal subtract1 = tSettlementConfirm.getIncome().subtract(tSettlementConfirm.getCost());
+ BigDecimal subtract2 = settlementConfirm.getIncome().subtract(settlementConfirm.getCost());
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ }
+ beforeCost = beforeCost.add(settlementConfirm.getCost());
+ beforeIncome = beforeIncome.add(settlementConfirm.getIncome());
+
+
+ }
+ }
+ TSettlementConfirm tSettlementConfirm = new TSettlementConfirm();
+ tSettlementConfirm.setMeteringElectronic(meteringElectronic);
+ tSettlementConfirm.setChargingElectronic(chargingElectronic);
+ tSettlementConfirm.setLossElectronic(lossElectronic);
+ tSettlementConfirm.setIncome(income);
+ tSettlementConfirm.setVenue(venue);
+ tSettlementConfirm.setMetering(metering);
+ tSettlementConfirm.setClean(clean);
+ tSettlementConfirm.setMaintain(maintain);
+ tSettlementConfirm.setCost(cost);
+ tSettlementConfirm.setProfitMoney(profitMoney);
+ tSettlementConfirm.setNewMoney(newMoney);
+ tSettlementConfirm.setNewSettlement(newSettlement);
+ tSettlementConfirm.setSupplyElectronic(supplyElectronic);
+ tSettlementConfirm.setProportionPartner(proportionPartner);
+ tSettlementConfirm.setProportionMoney(proportionMoney);
+ tSettlementConfirm.setTotalElectronic(totalElectronic);
+ tSettlementConfirm.setTotalService(totalService);
+ tSettlementConfirm.setServicePartner(servicePartner);
+ tSettlementConfirm.setServiceMoney(serviceMoney);
+ tSettlementConfirm.setSharingAmount(sharingAmount);
+ tSettlementConfirm.setCommissionAmount(commissionAmount);
+ tSettlementConfirm.setElectrovalence(electrovalence);
+ tSettlementConfirm.setServiceCharge(serviceCharge);
+ tSettlementConfirm.setOrderCommission(orderCommission);
+ tSettlementConfirm.setVipDiscount(vipDiscount);
+ tSettlementConfirm.setCouponDiscount(couponDiscount);
+ // 本月
+ BigDecimal subtract = income.subtract(beforeIncome).divide(beforeIncome).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"));
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ // 比较总利润 收入合计-成本合计
+ BigDecimal subtract1 = income.subtract(cost);
+ BigDecimal subtract2 = beforeIncome.subtract(beforeCost);
+ tSettlementConfirm.setTotalPercentage(subtract1.subtract(subtract2).divide(subtract2).setScale(2, RoundingMode.HALF_DOWN).multiply(new BigDecimal("100"))+"%");
+ tSettlementConfirm.setIncomePercentage(subtract+"%");
+ tSettlementConfirm.setElectronicRefund(0);
+ // 查询上次汇报数据 进行比对涨幅跌幅
+ total.add(tSettlementConfirm);
+ res.setList1(list1);
+ res.setList2(total);
+ return res;
+ }
+
public static void main(String[] args) {
- String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
- String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
- System.err.println(format+"至"+format1);
+// String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+// String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss"));
+// System.err.println(format+"至"+format1);
+// LocalDateTime parse = LocalDateTime.parse("2024-01-12 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+// System.err.println(parse.format(DateTimeFormatter.ofPattern("yyyy-dd")));
}
}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
index 4b8223a..00179ec 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TSettlementConfirmMapper.xml
@@ -1,8 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.order.mapper.TSettlementConfirmMapper">
-
- <select id="pageList" resultType="com.ruoyi.order.api.model.TSettlementConfirm">
+ <select id="settlementTotal" resultType="com.ruoyi.order.api.model.TSettlementConfirm">
+ select t1.* from
+ t_settlement_confirm t1
+ where 1=1
+ <if test="time != null and time!='' ">
+ AND DATE_FORMAT(t1.start_time, '%Y-%m') = DATE_FORMAT(#{time}, '%Y-%m')
+ </if>
+ </select>
+ <select id="settlementList" resultType="com.ruoyi.order.api.model.TSettlementConfirm">
select t1.* from
t_settlement_confirm t1
where 1=1
--
Gitblit v1.7.1