From 8115295a64e0809246897fefb8c45de06dce0799 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期五, 23 五月 2025 21:09:12 +0800 Subject: [PATCH] 大屏 --- 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