From 7cf1eb27ecbd23ddc1d0e8080c9637aa6f2a2bf9 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 25 六月 2025 08:45:38 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChargingBillController.java | 223 +++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 174 insertions(+), 49 deletions(-)
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 e44bb5a..6db46cb 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
@@ -6,6 +6,7 @@
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.alibaba.nacos.shaded.com.google.common.collect.Maps;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.common.core.domain.R;
@@ -15,21 +16,22 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
-import com.ruoyi.order.api.model.ExportUidDto;
-import com.ruoyi.order.api.model.TChargingBill;
-import com.ruoyi.order.api.model.TChargingOrder;
+import com.ruoyi.common.security.annotation.Logical;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.order.api.model.*;
import com.ruoyi.order.api.query.TOrderInvoiceQuery;
import com.ruoyi.order.api.vo.AccountListVO;
import com.ruoyi.order.api.vo.ChargingBillListVO;
import com.ruoyi.order.api.vo.ChargingBillVO;
-import com.ruoyi.order.api.model.ChargingListQuery;
import com.ruoyi.order.api.vo.TOrderInvoiceVO;
import com.ruoyi.order.export.*;
import com.ruoyi.order.service.*;
+import com.ruoyi.order.vo.StatisticsOfBatteryVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -40,13 +42,12 @@
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
/**
* <p>
@@ -67,24 +68,101 @@
private SiteClient siteClient;
@Resource
private TChargingOrderService chargingOrderService;
-
+ @Resource
+ private TChargingOrderRefundService tChargingOrderRefundService;
+ @Resource
+ private TChargingBillService tChargingBillService;
+ @GetMapping(value = "/test")
+ public R accountAdd() {
+// List<TChargingBill> list = tChargingBillService.lambdaQuery().list();
+// for (TChargingBill tChargingBill : list) {
+// tChargingBill.setStatus(2);
+// }
+// tChargingBillService.updateBatchById(list);
+// List<TChargingOrder> list = chargingOrderService.lambdaQuery().list();
+// for (TChargingOrder chargingOrder : list) {
+// chargingOrder.setSharingAmount(new BigDecimal("0"));
+// List<TChargingOrderRefund> list1 = tChargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, chargingOrder.getId()).list();
+// tChargingOrderRefundService.removeBatchByIds(list1);
+// chargingOrderService.removeById(chargingOrder);
+// }
+// chargingOrderService.updateBatchById(list);
+// TChargingBill tChargingBill = new TChargingBill();
+// Random random = new Random();
+// String randomDigits = random.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill.setCode("JSD"+randomDigits );
+// tChargingBill.setType(1);
+// tChargingBill.setSiteId(0);
+// tChargingBill.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill.setStatus(1);
+// tChargingBill.setOrderState(2);
+// tChargingBill.setBillType(1);
+// chargingBillService.save(tChargingBill);
+// TChargingBill tChargingBill1 = new TChargingBill();
+// Random random1 = new Random();
+// String randomDigits1 = random1.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill1.setCode("JSD"+randomDigits1);
+// tChargingBill1.setType(2);
+// tChargingBill1.setSiteId(13);
+// tChargingBill1.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill1.setStatus(1);
+// tChargingBill1.setOrderState(2);
+// tChargingBill1.setBillType(1);
+// chargingBillService.save(tChargingBill1);
+//
+// TChargingBill tChargingBil3 = new TChargingBill();
+// Random random2 = new Random();
+// String randomDigits2 = random2.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBil3.setCode("JSD"+randomDigits2 );
+// tChargingBil3.setType(1);
+// tChargingBil3.setSiteId(0);
+// tChargingBil3.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBil3.setStatus(1);
+// tChargingBil3.setOrderState(2);
+// tChargingBil3.setBillType(2);
+// chargingBillService.save(tChargingBil3);
+// TChargingBill tChargingBill14 = new TChargingBill();
+// Random random3 = new Random();
+// String randomDigits3 = random3.ints(10, 0, 10) // 生成10个随机数字,范围在0-9
+// .mapToObj(String::valueOf)
+// .collect(Collectors.joining()); // 将其连接成一个字符串
+// tChargingBill14.setCode("JSD"+randomDigits3);
+// tChargingBill14.setType(2);
+// tChargingBill14.setSiteId(13);
+// tChargingBill14.setBillTime(LocalDateTime.now().plusDays(1));
+// tChargingBill14.setStatus(1);
+// tChargingBill14.setOrderState(2);
+// tChargingBill14.setBillType(2);
+// chargingBillService.save(tChargingBill14);
+ return R.ok();
+ }
+
+
+ @RequiresPermissions(value = {"/accountSettlementStatement"}, logical = Logical.OR)
@PostMapping(value = "/accountBillList")
@ApiOperation(value = "列表查询", tags = {"管理后台-账户结算账单"})
public R<AccountListVO> accountBillList(@RequestBody ChargingListQuery dto) {
AccountListVO accountListVO = new AccountListVO();
ChargingBillVO res = chargingBillService.chargingBillList1(dto);
-
- ChargingBillVO res1 = chargingBillService.chargingBillList1(dto);
- List<ChargingBillListVO> records = res1.getList().getRecords();
+ List<ChargingBillListVO> records = res.getList().getRecords();
accountListVO.setBillCount(records.size());
- accountListVO.setTotalAmount(res1.getPaymentAmount().subtract(res1.getRefundAmount()).subtract(res1.getCommissionAmount()).subtract(res1.getSharingAmount()));
- accountListVO.setPaymentAmount(res1.getPaymentAmount());
- accountListVO.setRefundAmount(res1.getRefundAmount());
- accountListVO.setCommissionAmount(res1.getCommissionAmount());
- accountListVO.setSharingAmount(res1.getSharingAmount());
+ accountListVO.setTotalAmount(res.getPaymentAmount().subtract(res.getCommissionAmount()).subtract(res.getSharingAmount()).setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setPaymentAmount(res.getPaymentAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setRefundAmount(res.getRefundAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setCommissionAmount(res.getCommissionAmount().setScale(2, BigDecimal.ROUND_DOWN));
+ accountListVO.setSharingAmount(res.getSharingAmount().setScale(2, BigDecimal.ROUND_DOWN));
accountListVO.setList(res.getList());
+ accountListVO.setOrderList(res.getExportList());
return R.ok(accountListVO);
}
+
+ @RequiresPermissions(value = {"/chargeBill"}, logical = Logical.OR)
@PostMapping(value = "/chargingBillList")
@ApiOperation(value = "充电算帐单列表查询", tags = {"管理后台-充电算账单"})
public AjaxResult<ChargingBillVO> chargingBillList(@RequestBody ChargingListQuery dto) {
@@ -100,10 +178,14 @@
public R<ChargingBillVO> chargingBillListExport(String uid) {
return R.ok(null);
}
+
+
+ @RequiresPermissions(value = {"/chargeBill/export"}, logical = Logical.OR)
@ApiOperation(value = "导出", tags = {"管理后台-充电算账单"})
@PutMapping("/export")
public void export(@RequestBody ChargingListQuery dto)
{
+
ChargingBillVO res = chargingBillService.chargingBillList(dto);
List<ChargingBillListVO> list = res.getList().getRecords();
List<TChargingBillExport> tChargingBillExports = new ArrayList<>();
@@ -163,8 +245,11 @@
}
}
}
+
+
+ @RequiresPermissions(value = {"/accountSettlementStatement/export"}, logical = Logical.OR)
@ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"})
- @PostMapping("/exportAccount")
+ @PutMapping("/exportAccount")
public void exportAccount(@RequestBody ChargingListQuery dto)
{
ChargingBillVO res = chargingBillService.chargingBillList1(dto);
@@ -173,7 +258,7 @@
for (ChargingBillListVO orderInvoiceVO : list) {
TChargingBillExport tChargingBillExport = new TChargingBillExport();
tChargingBillExport.setCode(orderInvoiceVO.getCode());
- switch (orderInvoiceVO.getTimeType()){
+ switch (orderInvoiceVO.getOrderState()){
case 1:
tChargingBillExport.setBillType("日账单");
break;
@@ -233,6 +318,9 @@
}
}
}
+
+
+
@ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"})
@PutMapping("/download")
public void download(@RequestBody ExportUidDto uid)
@@ -243,30 +331,33 @@
TChargingBill byId = chargingBillService.getById(uid.getUid());
ChargingBillExport chargingBillExport = new ChargingBillExport();
chargingBillExport.setCode(byId.getCode());
- // todo 确认商户类型
- chargingBillExport.setAccountType("商户类型");
+ chargingBillExport.setAccountType("微信商户");
chargingBillExport.setType(byId.getType().toString());
- chargingBillExport.setBillType("月结");
LocalDateTime billTime = byId.getBillTime();
// 将billTime 减去一个月 转化为yyyy-MM格式字符串
billTime = billTime.minusMonths(1);
chargingBillExport.setBillWeek(DateUtils.parseDateToStr("yyyy-MM",DateUtils.toDate(billTime)));
chargingBillExport.setBillTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(billTime)));
- chargingBillExport.setState("未出账");
List<Site> data = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
if (!data.isEmpty()){
chargingBillExport.setSiteName(data.get(0).getName());
}
- // 根据账单的出账时间 查询上个月的充电订单
+// // 根据账单的出账时间 查询上个月的充电订单
LocalDateTime localDate = byId.getBillTime().minusMonths(1);
- // 账单周期
+// // 账单周期
+// // 获取 LocalDate 对象
+// LocalDate date = localDate.toLocalDate();
+// // 获取该月份的第一天
+// LocalDate firstDayOfMonth = date.withDayOfMonth(1);
// 获取 LocalDate 对象
LocalDate date = localDate.toLocalDate();
- // 获取该月份的第一天
- LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+ // 获取该月份的第一天
+ LocalDate firstDayOfMonth = date.withDayOfMonth(1);
+ // 获取该月份的最后一天
+ LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
// 获取该月份的最后一天
- LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
+// LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>()
.between("create_time", firstDayOfMonth, lastDayOfMonth)
.eq("status", 5)
@@ -276,17 +367,32 @@
}
BigDecimal paymentAmount = new BigDecimal("0");
BigDecimal refundAmount = new BigDecimal("0");
- BigDecimal income = new BigDecimal("0");
+ BigDecimal commissionAmount = new BigDecimal("0");
+ BigDecimal sharingAmount = new BigDecimal("0");
List<TChargingOrder> tChargingOrders = chargingOrderService.list(eq);
// 累加支付金额
+ BigDecimal bigDecimal = new BigDecimal("0");
+ BigDecimal bigDecimal1 = new BigDecimal("0.006");
+
int i =1;
for (TChargingOrder tChargingOrder : tChargingOrders) {
// 账单信息
- paymentAmount = paymentAmount.add(tChargingOrder.getPaymentAmount());
- if (tChargingOrder.getRefundStatus()!=null && tChargingOrder.getRefundStatus()==2){
- refundAmount = refundAmount.add(tChargingOrder.getRefundAmount());
+ if (!tChargingOrder.getOrderSource().equals(2)){
+ chargingBillExport.setPaymentAmount(tChargingOrder.getRechargeAmount());
+ paymentAmount = paymentAmount.add(tChargingOrder.getRechargeAmount());
+
+ }else{
+ chargingBillExport.setPaymentAmount(tChargingOrder.getServiceCharge()!=null?
+ tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)
+ :new BigDecimal("0"));
+ paymentAmount = paymentAmount.add(tChargingOrder.getServiceCharge()!=null?
+ tChargingOrder.getServiceCharge().multiply(new BigDecimal("0.2")).setScale(2, BigDecimal.ROUND_DOWN)
+ :new BigDecimal("0"));
+
}
+ commissionAmount = commissionAmount.add(tChargingOrder.getRechargeAmount().multiply(bigDecimal1).setScale(2, BigDecimal.ROUND_DOWN));
+ sharingAmount = sharingAmount.add(tChargingOrder.getSharingAmount()!=null?tChargingOrder.getSharingAmount():new BigDecimal("0"));
// 退款信息
ChargingBillRefundExport chargingBillRefundExport = new ChargingBillRefundExport();
ChargingBillPayExport chargingBillPayExport = new ChargingBillPayExport();
@@ -306,37 +412,56 @@
chargingBillPayExport.setPlatformPay("支付宝小程序支付");
}
- chargingBillRefundExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
- chargingBillRefundExport.setCode(tChargingOrder.getCode());
- chargingBillRefundExport.setPayTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())));
- if (tChargingOrder.getRefundTime()!=null){
- chargingBillRefundExport.setRefundTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getRefundTime())));
+ List<TChargingOrderRefund> one1 = tChargingOrderRefundService.lambdaQuery()
+ .eq(TChargingOrderRefund::getChargingOrderId, tChargingOrder.getId())
+ .eq(TChargingOrderRefund::getRefundStatus, 2)
+ .list();
+ for (TChargingOrderRefund one : one1) {
+ refundAmount= refundAmount.add(one.getRefundAmount());
+ chargingBillRefundExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
+ chargingBillRefundExport.setCode(tChargingOrder.getCode());
+ chargingBillRefundExport.setPayTime(tChargingOrder.getCreateTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getCreateTime())):"");
+ if (one.getRefundTime()!=null){
+ chargingBillRefundExport.setRefundTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(one.getRefundTime())));
+ }
+ chargingBillRefundExport.setRefundMoney(one.getRefundAmount().toString());
+ chargingBillRefundExport.setRefundRemark(one.getRefundReason());
+ chargingBillRefundExport.setRefundCode(one.getRefundCode());
+ chargingBillRefundExport.setRefundSerialNumber(one.getRefundSerialNumber());
+ chargingBillRefundExports.add(chargingBillRefundExport);
}
- chargingBillRefundExport.setRefundMoney(tChargingOrder.getRefundAmount().toString());
- chargingBillRefundExport.setRefundRemark(tChargingOrder.getRefundReason());
- chargingBillRefundExport.setRefundCode(tChargingOrder.getRefundCode());
- chargingBillRefundExport.setRefundSerialNumber(tChargingOrder.getRefundSerialNumber());
- chargingBillRefundExports.add(chargingBillRefundExport);
+
// 支付信息
chargingBillPayExport.setId(i+"");
chargingBillPayExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber());
chargingBillPayExport.setCode(tChargingOrder.getCode());
- chargingBillPayExport.setPayTime(DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())));
- chargingBillPayExport.setPaymentAmount(tChargingOrder.getPaymentAmount().toString());
+ chargingBillPayExport.setPayTime(tChargingOrder.getPayTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())):"");
+ chargingBillPayExport.setPaymentAmount(tChargingOrder.getRechargeAmount().toString());
chargingBillPayExport.setTotal("");
chargingBillPayExports.add(chargingBillPayExport);
i++;
+ bigDecimal = bigDecimal.add(tChargingOrder.getRechargeAmount());
+ }
+ if (!chargingBillPayExports.isEmpty()){
+ chargingBillPayExports.get(0).setTotal(bigDecimal+"");
+ }
+ if (byId.getSiteId()==0){
+ chargingBillExport.setSiteName("全站");
+ }else{
+ List<Site> data1 = siteClient.getSiteByIds(Arrays.asList(byId.getSiteId())).getData();
+ if (data1!=null&&(!data1.isEmpty())){
+ String name = data1.get(0).getName();
+ chargingBillExport.setSiteName(name);
+ }
}
chargingBillExport.setPaymentAmount(paymentAmount);
chargingBillExport.setRefundAmount(refundAmount);
- chargingBillExport.setIncome(paymentAmount.subtract(refundAmount));
+ chargingBillExport.setIncome(paymentAmount.subtract(refundAmount)
+ .setScale(2, BigDecimal.ROUND_DOWN));
chargingBillExports.add(chargingBillExport);
-
// 导出
List<Map<String, Object>> sheetsList = new ArrayList<>();
- AtomicInteger atomicInteger = new AtomicInteger();
-
- for (int i1 = 0; i1 < 3; i1++) {
+ for (int i1 = 1; i1 <= 3; i1++) {
String sheetName="";
switch (i1){
case 1:
--
Gitblit v1.7.1