From 5a1e5f522d854c1c7c4050da6f1972ef266ad5d4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 10 九月 2024 18:18:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java                |   16 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java                     |   14 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingBillServiceImpl.java                 |  270 +++++++++++++++++++++++++++++++++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java                     |   79 +++++++++
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml                                  |    3 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java                           |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/resources/template/结算汇总.xlsx                                             |    0 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java                          |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java                            |    5 
 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java                            |    5 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/FinancialSettlementController.java              |    6 
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java                               |    6 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml                                  |   18 ++
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java                             |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java                          |    1 
 16 files changed, 429 insertions(+), 8 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
index 8116db2..2a3ecf5 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingBill.java
@@ -55,6 +55,12 @@
     @ApiModelProperty(value = "1未出账2已出账")
     @TableField("status")
     private Integer status;
+    @ApiModelProperty(value = "1日结2月结")
+    @TableField("orderState")
+    private Integer orderState;
+    @ApiModelProperty(value = "账户类型 1微信商户 2支付宝商户")
+    @TableField("payType")
+    private Integer payType;
 
     @ApiModelProperty(value = "uid")
     @TableField(exist = false)
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java
index f1bad4a..d12f20b 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TOrderInvoiceQuery.java
@@ -25,6 +25,8 @@
 
     @ApiModelProperty(value = "开票方式(1=人工,2=自动)")
     private Integer invoicingMethod;
+    @ApiModelProperty(value = "状态(1=待开票,2=开票中,3=已开票)")
+    private Integer status;
 
     @ApiModelProperty(value = "申请人电话")
     private String userPhone;
@@ -32,7 +34,7 @@
     @ApiModelProperty(value = "申请人姓名")
     private String nickName;
 
-    @ApiModelProperty(value = "公司名称")
+    @ApiModelProperty(value = "公司名称(抬头)")
     private String name;
 
     @ApiModelProperty(value = "用户id 前端忽略")
diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
index 78139c6..c97801a 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/ChargingBillListVO.java
@@ -14,6 +14,7 @@
 public class ChargingBillListVO extends TChargingBill {
     @ApiModelProperty(value = "账单周期")
     private String billWeek;
+
     @ApiModelProperty(value = "充电时间 秒")
     private Integer chargingSecond;
     @ApiModelProperty(value = "订单数量")
@@ -36,4 +37,6 @@
     private BigDecimal commissionAmount;
     @ApiModelProperty(value = "充电电流 度")
     private BigDecimal chargingCapacity;
+    @ApiModelProperty(value = "入账金额")
+    private BigDecimal billMoney;
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
index b5179bc..ee866d2 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -5,12 +5,14 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.TCompany;
 import com.ruoyi.other.api.domain.TCoupon;
+import com.ruoyi.other.api.domain.TInvoiceType;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.dto.TagListQueryDto;
 import com.ruoyi.other.api.dto.UnitListQueryDto;
 import com.ruoyi.other.api.factory.OtherFallbackFactory;
 import com.ruoyi.other.api.vo.CouponListVOVO;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -24,8 +26,9 @@
  */
 @FeignClient(contextId = "UnitClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = OtherFallbackFactory.class)
 public interface OtherClient {
+
     //单位分页
-    @PostMapping(value = "/t-company/unit/page")
+    @PostMapping(value = "/t-invoice-type/t-company/unit/page")
     R<Page<TCompany>> queryUnitPage(@RequestBody UnitListQueryDto unitListQueryDto);
     //单位添加修改
     @PostMapping(value = "/t-company/unit/addOrUpdate")
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 24c8ea8..328a1fb 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
@@ -340,7 +340,7 @@
         try {
             // excel模板封装
             ExcelWriterBuilder excelWriterBuilder = EasyExcelFactory.write(response.getOutputStream());
-            InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"运营商名称1-充电桩名称1-结算对账单明细-结算月份1" + ".xlsx");
+            InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("template/" +"结算汇总" + ".xlsx");
             // 自动释放资源
             try (ExcelWriter excelWriter = excelWriterBuilder.withTemplate(stream).build()) {
                 WriteSheet writeSheet = EasyExcel.writerSheet().build();
diff --git "a/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\347\273\223\347\256\227\346\261\207\346\200\273.xlsx" "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\347\273\223\347\256\227\346\261\207\346\200\273.xlsx"
new file mode 100644
index 0000000..738da66
--- /dev/null
+++ "b/ruoyi-service/ruoyi-chargingPile/src/main/resources/template/\347\273\223\347\256\227\346\261\207\346\200\273.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 d491088..d9b3c8d 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
@@ -72,12 +72,15 @@
     @ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
     public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
         AccountListVO accountListVO = new AccountListVO();
-        ChargingBillVO res = chargingBillService.chargingBillList(dto);
+        ChargingBillVO res = chargingBillService.chargingBillList1(dto);
 
-        ChargingBillVO res1 = chargingBillService.chargingBillList(dto);
+        ChargingBillVO res1 = chargingBillService.chargingBillList1(dto);
         List<ChargingBillListVO> records = res1.getList().getRecords();
         accountListVO.setBillCount(records.size());
-        accountListVO.setTotalAmount(res1.getPaymentAmount().subtract(res1.getRefundAmount()).subtract(res1.getCommissionAmount()).subtract(res1.getSharingAmount()));
+        accountListVO.setTotalAmount(
+                res1.getPaymentAmount().subtract(res1.getRefundAmount()==null?BigDecimal.ZERO:res1.getRefundAmount())
+                        .subtract(res1.getCommissionAmount()==null?BigDecimal.ZERO:res1.getCommissionAmount())
+                        .subtract(res1.getSharingAmount()==null?BigDecimal.ZERO:res1.getSharingAmount()));
         accountListVO.setPaymentAmount(res1.getPaymentAmount());
         accountListVO.setRefundAmount(res1.getRefundAmount());
         accountListVO.setCommissionAmount(res1.getCommissionAmount());
@@ -163,6 +166,76 @@
             }
         }
     }
+    @ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"})
+    @PutMapping("/exportAccount")
+    public void exportAccount(@RequestBody ChargingListQuery dto)
+    {
+        ChargingBillVO res = chargingBillService.chargingBillList1(dto);
+        List<ChargingBillListVO> list = res.getList().getRecords();
+        List<TChargingBillExport> tChargingBillExports = new ArrayList<>();
+        for (ChargingBillListVO orderInvoiceVO : list) {
+            TChargingBillExport tChargingBillExport = new TChargingBillExport();
+            tChargingBillExport.setCode(orderInvoiceVO.getCode());
+            switch (orderInvoiceVO.getOrderState()){
+                case 1:
+                    tChargingBillExport.setBillType("日账单");
+                    break;
+                case 2:
+                    tChargingBillExport.setBillType("月账单");
+                    break;
+            }
+            tChargingBillExport.setType(orderInvoiceVO.getType().toString());
+            tChargingBillExport.setBillWeek(orderInvoiceVO.getBillWeek());
+            tChargingBillExport.setSiteName(orderInvoiceVO.getSiteName());
+            tChargingBillExport.setPaymentAmount(orderInvoiceVO.getPaymentAmount());
+            tChargingBillExport.setElectrovalence(orderInvoiceVO.getElectrovalence());
+            tChargingBillExport.setServiceCharge(orderInvoiceVO.getServiceCharge());
+            tChargingBillExport.setChargingCapacity(orderInvoiceVO.getChargingCapacity());
+            Integer chargingSecond = orderInvoiceVO.getChargingSecond();
+            // 根据秒数 转换为xx小时xx分钟xx秒 如果小时为0不展示 如果分钟为0则不展示
+            // 计算小时、分钟和秒
+            int hours = chargingSecond / 60 / 60;
+            int minutes = chargingSecond /60 % 60;
+            int seconds = 0; // 如果没有秒数,则默认是0
+            // 构造结果字符串
+            StringBuilder result = new StringBuilder();
+            if (hours > 0) {
+                result.append(hours).append("小时");
+            }
+            if (minutes > 0) {
+                result.append(minutes).append("分钟");
+            }
+            if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数
+                result.append(seconds).append("秒");
+            }
+            tChargingBillExport.setChargingTime(result.toString());
+            tChargingBillExport.setOrderCount(orderInvoiceVO.getOrderCount());
+            tChargingBillExport.setBillTime(orderInvoiceVO.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            tChargingBillExports.add(tChargingBillExport);
+        }
+        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TChargingBillExport.class, tChargingBillExports);
+        HttpServletResponse response = WebUtils.response();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        ServletOutputStream outputStream = null;
+        try {
+            String fileName = URLEncoder.encode("月账单-"+res.getCategory()+"-"+res.getBillWeek()+"-"+res.getSiteName()+".xls", "utf-8");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            response.setHeader("Pragma", "no-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                outputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
     @ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"})
     @PutMapping("/download")
     public void download(@RequestBody ExportUidDto uid)
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 efb4d7f..9ccfa94 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
@@ -118,13 +118,15 @@
     }
     @GetMapping(value = "/settlementTotal")
     @ApiOperation(value = "结算汇总-列表查询", tags = {"管理后台-财务结算"})
-    @ApiParam(name = "time", value = "汇报时间2024-01-01 00:00:00")
+    @ApiParam(name = "time", value = "汇报时间2024-01")
     public AjaxResult<SettlementTotalVO> settlementTotal(String time) {
+        time = time+"-01 00:00:00";
         SettlementTotalVO res = chargingOrderService.settlementTotal(time);
         return AjaxResult.success(res);
     }
     @GetMapping(value = "/settlementTotalR")
-    public R<SettlementTotalVO> settlementTotalR( String time) {
+    public R<SettlementTotalVO> settlementTotalR(String time) {
+        time = time+"-01 00:00:00";
         SettlementTotalVO res = chargingOrderService.settlementTotal(time);
         return R.ok(res);
     }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java
index c93a20a..c9b7bae 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingBillMapper.java
@@ -26,5 +26,10 @@
             @Param("req") ChargingListQuery dto,
             @Param("startTime1")String startTime1,
             @Param("startTime2")String startTime2);
+    List<ChargingBillListVO> chargingBillList1(
+            @Param("pageInfo") PageInfo<ChargingBillListVO> pageInfo,
+            @Param("req") ChargingListQuery dto,
+            @Param("startTime1")String startTime1,
+            @Param("startTime2")String startTime2);
 
 }
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java
index b1e6a58..4e4388b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingBillService.java
@@ -16,5 +16,6 @@
 public interface TChargingBillService extends IService<TChargingBill> {
 
     ChargingBillVO chargingBillList(ChargingListQuery dto);
+    ChargingBillVO chargingBillList1(ChargingListQuery dto);
 
 }
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 e72db84..4bb5752 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
@@ -61,6 +61,276 @@
     @Resource
     private AppUserCarClient appUserCarClient;
     @Override
+    public ChargingBillVO chargingBillList1(ChargingListQuery dto) {
+        ChargingBillVO chargingBillVO = new ChargingBillVO();
+        String startTime1 = null;
+        String startTime2 = null;
+        if (StringUtils.hasLength(dto.getStartTime())){
+            String[] split = dto.getStartTime().split(" - ");
+            startTime1 = split[0];
+            startTime2 = split[1];
+        }
+        PageInfo<ChargingBillListVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize());
+        List<ChargingBillListVO> list = this.baseMapper.chargingBillList1(pageInfo,dto,startTime1,startTime2);
+        BigDecimal paymentAmountTotal = new BigDecimal("0");
+        BigDecimal orderAmountTotal = new BigDecimal("0");
+        BigDecimal electrovalenceTotal = new BigDecimal("0");
+        BigDecimal serviceChargeTotal = new BigDecimal("0");
+        BigDecimal commissionAmountTotal = new BigDecimal("0");
+        BigDecimal sharingAmountTotal = new BigDecimal("0");
+        BigDecimal chargingCapacityTotal = new BigDecimal("0");
+        BigDecimal discountTotal = new BigDecimal("0");
+        BigDecimal refundAmount = new BigDecimal("0");
+        int orderCount = 0;
+        for (ChargingBillListVO chargingBillListVO : list) {
+            String temp = "";
+            String temp1 = "";
+            switch (chargingBillListVO.getType()){
+                case 1:
+                    temp = "全站账单";
+                    temp1 = "全站";
+                    break;
+                case 2:
+                    temp = "各个站点账单";
+                    temp1 = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0).getName();
+                    break;
+            }
+            chargingBillVO.setCategory(temp);
+            chargingBillVO.setSiteName(temp1);
+
+            chargingBillVO.setType("月账单");
+            chargingBillVO.setCode(chargingBillListVO.getCode());
+
+            LocalDateTime billTime = chargingBillListVO.getBillTime();
+            // 将其转化为yyyy-MM格式字符串
+            chargingBillVO.setCreateTime(billTime.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            // 将billTime减去一个月 转化为yyyy-MM格式字符串
+            chargingBillVO.setBillWeek(billTime.minusMonths(1).format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
+
+            chargingBillListVO.setUid(chargingBillListVO.getId().toString());
+            // 根据账单的出账时间 查询上个月的充电订单
+            LocalDateTime localDate = chargingBillListVO.getBillTime().minusMonths(1);
+            // 账单周期
+            chargingBillListVO.setBillWeek(localDate.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM")));
+            // 获取 LocalDate 对象
+            LocalDate date = localDate.toLocalDate();
+            // 获取该月份的第一天
+            LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+            // 获取该月份的最后一天
+            LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
+            QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
+                    .between("create_time", firstDayOfMonth, lastDayOfMonth)
+                    .eq("status", 5)
+                    .eq("recharge_payment_status", 2);
+            if (chargingBillListVO.getType() == 2) {
+                eq.eq("site_id", chargingBillListVO.getSiteId());
+            }
+            List<TChargingOrder> tChargingOrders = chargingOrderList.selectList(eq);
+            int chargingSecond = 0;
+            BigDecimal paymentAmount = new BigDecimal("0");
+            BigDecimal orderAmount = new BigDecimal("0");
+            BigDecimal electrovalence = new BigDecimal("0");
+            BigDecimal serviceCharge = new BigDecimal("0");
+            BigDecimal commissionAmount = new BigDecimal("0");
+            BigDecimal sharingAmount = new BigDecimal("0");
+            BigDecimal chargingCapacity = new BigDecimal("0");
+            orderCount+=tChargingOrders.size();
+            chargingBillVO.setCategory("");
+            chargingBillVO.setExportList(tChargingOrders);
+            for (TChargingOrder tChargingOrder : tChargingOrders) {
+                List<Site> data = siteClient.getSiteByIds(Arrays.asList(tChargingOrder.getSiteId())).getData();
+                if (!data.isEmpty()){
+                    chargingBillVO.setSiteName(data.get(0).getName());
+                }
+                TChargingPile data1 = chargingPileClient.getChargingPileById(tChargingOrder.getChargingPileId()).getData();
+                TChargingGun data2 = chargingGunClient.getChargingGunById(tChargingOrder.getChargingGunId()).getData();
+                if (data1!=null && data2!=null){
+                    tChargingOrder.setTerminalName(data1.getName()+data2.getName());
+                    tChargingOrder.setTerminalCode(data2.getCode());
+                }
+                tChargingOrder.setOrderClassification1("线上订单");
+                tChargingOrder.setRechargePaymentType1("预付");
+                tChargingOrder.setChargingType("充电桩接口充电服务");
+                switch (tChargingOrder.getStatus()){
+                    case 1:
+                        tChargingOrder.setStatus1("等待中");
+                        break;
+                    case 2:
+                        tChargingOrder.setStatus1("启动中");
+                        break;
+                    case 3:
+                        tChargingOrder.setStatus1("充电中");
+                        break;
+                    case 4:
+                        tChargingOrder.setStatus1("停止中");
+                        break;
+                    case 5:
+                        tChargingOrder.setStatus1("已结束");
+                        break;
+                    case 0:
+                        tChargingOrder.setStatus1("未知");
+                        break;
+                }
+                if (tChargingOrder.getEndMode()!=null){
+                    switch (tChargingOrder.getEndMode()){
+                        case 1:
+                            tChargingOrder.setEndMode1("主动终止");
+                            break;
+                        case 2:
+                            tChargingOrder.setEndMode1("满电终止");
+                            break;
+                        case 3:
+                            tChargingOrder.setEndMode1("费用不足终止");
+                            break;
+                        case 0:
+                            tChargingOrder.setEndMode1("异常终止");
+                            break;
+                    }
+                }
+                BigDecimal add = tChargingOrder.getElectrovalence().add(tChargingOrder.getServiceCharge());
+                tChargingOrder.setTotalAmount(add.toString());
+                tChargingOrder.setDiscount(tChargingOrder.getCouponDiscountAmount().toString());
+                UploadRealTimeMonitoringData data5 = uploadRealTimeMonitoringDataClient.chargingOrderInfo(tChargingOrder.getCode()).getData();
+                if (data5!=null){
+                    if (data5.getTime_remaining()!=null){
+                        chargingSecond+=data5.getTime_remaining()*60;
+                    }
+                }
+                Integer cumulativeChargingTime = data5.getCumulative_charging_time();
+                // 将其转化为xx小时xx分钟xx秒显示 如果是0小时则不展示小时 如果是0分钟则不展示分钟
+                if (cumulativeChargingTime!=null){
+                    // 计算小时、分钟和秒
+                    int hours = cumulativeChargingTime / 60;
+                    int minutes = cumulativeChargingTime % 60;
+                    int seconds = 0; // 如果没有秒数,则默认是0
+                    StringBuilder result = new StringBuilder();
+                    if (hours > 0) {
+                        result.append(hours).append("小时");
+                    }
+                    if (minutes > 0) {
+                        result.append(minutes).append("分钟");
+                    }
+                    if (seconds > 0 || result.length() == 0) { // 如果秒数大于0,或者小时和分钟都为0,则显示秒数
+                        result.append(seconds).append("秒");
+                    }
+                    tChargingOrder.setChargingTime(result.toString());
+                }
+                tChargingOrder.setEndSoc(data5.getSoc().toString());
+                TAppUser data3 = appUserClient.getUserById(tChargingOrder.getAppUserId()).getData();
+                if (tChargingOrder.getAppUserCarId()!=null){
+                    List<TAppUserCar> data4 = appUserCarClient.getCarByIds(Arrays.asList(tChargingOrder.getAppUserCarId())).getData();
+                    if (!data4.isEmpty()){
+                        tChargingOrder.setLicensePlate(data4.get(0).getLicensePlate());
+                        tChargingOrder.setVehicleModel(data4.get(0).getVehicleModel());
+                    }
+                }
+                if (data3!=null)tChargingOrder.setUserName(data3.getName());
+                // 累加实收金额 支付金额减去退款金额
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount()).subtract(tChargingOrder.getRefundAmount());
+
+                }else if (tChargingOrder.getPaymentAmount()!=null){
+                    paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
+                    paymentAmountTotal = paymentAmountTotal.add(tChargingOrder.getPaymentAmount());
+                }
+                // 累加订单金额
+                if (tChargingOrder.getOrderAmount()!=null){
+                    orderAmount = orderAmount.add(tChargingOrder.getOrderAmount());
+                    orderAmountTotal = orderAmountTotal.add(tChargingOrder.getOrderAmount());
+                }
+                // 累加累计电费
+                if (tChargingOrder.getElectrovalence()!=null){
+                    electrovalence = electrovalence.add(tChargingOrder.getElectrovalence());
+                    electrovalenceTotal = electrovalenceTotal.add(tChargingOrder.getElectrovalence());
+                }
+                if (tChargingOrder.getRefundAmount()!=null && tChargingOrder.getRefundStatus() == 2){
+                    refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+                }
+                // 累加累计服务费
+                if (tChargingOrder.getServiceCharge()!=null){
+                    serviceCharge = serviceCharge.add(tChargingOrder.getServiceCharge());
+                    serviceChargeTotal = serviceChargeTotal.add(tChargingOrder.getServiceCharge());
+                }
+                // 累加平台手续费
+                if (tChargingOrder.getCommissionAmount()!=null){
+                    commissionAmount = commissionAmount.add(tChargingOrder.getCommissionAmount());
+                    commissionAmountTotal = commissionAmountTotal.add(tChargingOrder.getCommissionAmount());
+                }
+                // 累加平台分佣
+                if (tChargingOrder.getSharingAmount()!=null){
+                    sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount());
+                    sharingAmountTotal = sharingAmountTotal.add(tChargingOrder.getSharingAmount());
+                }
+                // 累加充电度数
+                if (tChargingOrder.getChargingCapacity()!=null){
+                    chargingCapacity = chargingCapacity.add(tChargingOrder.getChargingCapacity());
+                    chargingCapacityTotal = chargingCapacityTotal.add(tChargingOrder.getChargingCapacity());
+                }
+                // 累加优惠金额
+                if (tChargingOrder.getCouponDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getCouponDiscountAmount());
+                }
+                if (tChargingOrder.getVipDiscountAmount()!=null){
+                    discountTotal = discountTotal.add(tChargingOrder.getVipDiscountAmount());
+                }
+            }
+            // 将chargingSecond 这是以秒为单位存放的总秒数 将其转化为xx小时xx分钟xx秒
+            int hours = chargingSecond / 3600;
+            int minutes = (chargingSecond % 3600) / 60;
+            int seconds = chargingSecond % 60;
+            // 格式化为字符串
+            String timeString = String.format("%d小时%d分钟%d秒", hours, minutes, seconds);
+            chargingBillVO.setChargingTime(timeString);
+            if (chargingBillVO.getPaymentAmount() == null){
+                chargingBillVO.setPaymentAmount(BigDecimal.ZERO);
+            }
+
+            chargingBillVO.setOrderAmount(chargingBillVO.getPaymentAmount().subtract(chargingBillVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillVO.getRefundAmount())
+                    .subtract(chargingBillVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillVO.getCommissionAmount())
+                    .subtract(chargingBillVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillVO.getSharingAmount()));
+            chargingBillListVO.setPaymentAmount(paymentAmount == null?BigDecimal.ZERO:paymentAmount);
+            chargingBillListVO.setOrderAmount(orderAmount == null?BigDecimal.ZERO:orderAmount);
+            chargingBillListVO.setElectrovalence(electrovalence == null?BigDecimal.ZERO:electrovalence);
+            chargingBillListVO.setServiceCharge(serviceCharge == null?BigDecimal.ZERO:serviceCharge);
+            chargingBillListVO.setCommissionAmount(commissionAmount == null?BigDecimal.ZERO:commissionAmount);
+            chargingBillListVO.setSharingAmount(sharingAmount == null?BigDecimal.ZERO:sharingAmount);
+            chargingBillListVO.setChargingCapacity(chargingCapacity == null?BigDecimal.ZERO:chargingCapacity);
+            chargingBillListVO.setBillMoney(chargingBillListVO.getPaymentAmount().subtract(chargingBillListVO.getRefundAmount()==null?BigDecimal.ZERO:chargingBillListVO.getRefundAmount())
+                    .subtract(chargingBillListVO.getCommissionAmount()==null?BigDecimal.ZERO:chargingBillListVO.getCommissionAmount())
+                    .subtract(chargingBillListVO.getSharingAmount()==null?BigDecimal.ZERO:chargingBillListVO.getSharingAmount()));
+            switch (chargingBillListVO.getType()){
+                case 1:
+                    chargingBillListVO.setSiteName("全站");
+                    break;
+                case 2:
+                    Site site = siteClient.getSiteByIds(Arrays.asList(chargingBillListVO.getSiteId())).getData().get(0);
+                    if (site!=null){
+                        chargingBillListVO.setSiteName(site.getName());
+                    }
+                    break;
+            }
+            // 订单数
+            chargingBillListVO.setOrderCount(tChargingOrders.size());
+            // 充电时间秒
+            chargingBillListVO.setChargingSecond(chargingSecond);
+        }
+        chargingBillVO.setChargingCapacity(chargingCapacityTotal);
+        chargingBillVO.setPaymentAmount(paymentAmountTotal);
+        chargingBillVO.setOrderAmount(orderAmountTotal);
+        chargingBillVO.setElectrovalence(electrovalenceTotal);
+        chargingBillVO.setServiceCharge(serviceChargeTotal);
+        chargingBillVO.setOrderCount(orderCount);
+        chargingBillVO.setCommissionAmount(commissionAmountTotal);
+        chargingBillVO.setSharingAmount(sharingAmountTotal);
+        chargingBillVO.setDiscount(discountTotal);
+
+
+        pageInfo.setRecords(list);
+        chargingBillVO.setList(pageInfo);
+        return chargingBillVO;
+    }
+    @Override
     public ChargingBillVO chargingBillList(ChargingListQuery dto) {
         ChargingBillVO chargingBillVO = new ChargingBillVO();
         String startTime1 = 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 4ca77f9..511676a 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
@@ -1384,6 +1384,22 @@
 		TChargingOrder chargingOrder= this.getById(uid);
 
 		ChargingOrderListInfoVO chargingOrderListInfoVO = new ChargingOrderListInfoVO();
+		chargingOrderListInfoVO.setElectrovalence(chargingOrder.getElectrovalence());
+		chargingOrderListInfoVO.setServiceCharge(chargingOrder.getServiceCharge());
+		if (chargingOrder.getElectrovalence()!=null && chargingOrder.getServiceCharge()!=null){
+			chargingOrderListInfoVO.setTotal(chargingOrder.getElectrovalence().add(chargingOrder.getServiceCharge()));
+		}else{
+			chargingOrderListInfoVO.setTotal(new BigDecimal("0"));
+		}
+		if (chargingOrderListInfoVO.getTotal().compareTo(new BigDecimal("0"))>0){
+			if (chargingOrder.getCouponDiscountAmount()!=null&& chargingOrder.getVipDiscountAmount()!=null&& chargingOrder.getSharingAmount()!=null&& chargingOrder.getCommissionAmount()!=null){
+				chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal().subtract(chargingOrder.getCouponDiscountAmount()).subtract(chargingOrder.getVipDiscountAmount()).subtract(chargingOrder.getSharingAmount()).subtract(chargingOrder.getCommissionAmount()));
+			}else{
+				chargingOrderListInfoVO.setRealTotal(chargingOrderListInfoVO.getTotal());
+			}
+		}else{
+			chargingOrderListInfoVO.setRealTotal(new BigDecimal("0"));
+		}
 		chargingOrderListInfoVO.setCode(chargingOrder.getCode());
 		List<Site> data = siteClient.getSiteByIds(Arrays.asList(chargingOrder.getSiteId())).getData();
 		if (!data.isEmpty()){
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java
index c6ce31b..e7663b5 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vo/ChargingOrderListInfoVO.java
@@ -58,6 +58,11 @@
     private BigDecimal electrovalence;
     @ApiModelProperty(value = "累计服务费")
     private BigDecimal serviceCharge;
+    @ApiModelProperty(value = "充电费用(电费加服务费)")
+    private BigDecimal total;
+    @ApiModelProperty(value = "实收(电费加服务费)-优惠券抵扣 -会员抵扣 - 第三方平台分佣 -平台手续费")
+    private BigDecimal realTotal;
+
     @ApiModelProperty(value = "开始时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime startTime;
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
index 693bc61..7d97874 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingBillMapper.xml
@@ -18,5 +18,23 @@
         <if test="req.uid != null and req.uid!=''">
             and t1.id = #{req.uid}
         </if>
+        and t1.billType = 1
+    </select>
+    <select id="chargingBillList1" resultType="com.ruoyi.order.api.vo.ChargingBillListVO">
+    select t1.* from t_charging_bill t1
+    where 1=1
+        <if test="req.type != null ">
+            and t1.type = #{req.type}
+        </if>
+      <if test="req.state != null ">
+            and t1.status = #{req.state}
+        </if>
+        <if test="startTime1 != null and startTime1!=''">
+            and (t1.bill_time between #{startTime1} and #{startTime2}
+        </if>
+        <if test="req.uid != null and req.uid!=''">
+            and t1.id = #{req.uid}
+        </if>
+        and t1.billType = 2
     </select>
 </mapper>
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
index c7fdb2d..d77920d 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderInvoiceMapper.xml
@@ -49,6 +49,9 @@
             <if test="query.invoicingObjectType != null">
                 AND toi.invoicing_object_type = #{query.invoicingObjectType}
             </if>
+            <if test="query.status != null">
+                AND toi.status = #{query.status}
+            </if>
             <if test="query.invoiceMaterial != null">
                 AND toi.invoice_material = #{query.invoiceMaterial}
             </if>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
index 7f4effd..fcbe968 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
@@ -9,9 +9,11 @@
 import com.ruoyi.other.query.InvoiceTypePageList;
 import com.ruoyi.other.service.TInvoiceTypeService;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -38,6 +40,18 @@
 		PageInfo<TInvoiceType> pageInfo = invoiceTypeService.pageList(pageList);
 		return AjaxResult.success(pageInfo);
 	}
+	@ResponseBody
+	@GetMapping("/pageListR")
+	@ApiOperation(value = "获取开票公司和类型列表", tags = {"管理后台-发票管理"})
+	public R<List<TInvoiceType>> pageListR( String company){
+		List<TInvoiceType> list = new ArrayList<>();
+		if (StringUtils.hasLength(company)){
+			list = invoiceTypeService.lambdaQuery().eq(TInvoiceType::getInvoicingCompany, company).list();
+		}else{
+			list = invoiceTypeService.lambdaQuery().list();
+		}
+		return R.ok(list);
+	}
 	
 	
 	@ResponseBody

--
Gitblit v1.7.1