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