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