| | |
| | | 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; |
| | |
| | | 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.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 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> |
| | |
| | | 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) { |
| | |
| | | ChargingBillVO res = chargingBillService.chargingBillList1(dto); |
| | | List<ChargingBillListVO> records = res.getList().getRecords(); |
| | | accountListVO.setBillCount(records.size()); |
| | | accountListVO.setTotalAmount(res.getPaymentAmount().subtract(res.getRefundAmount()) |
| | | .subtract(res.getCommissionAmount().setScale(2,BigDecimal.ROUND_DOWN)).subtract(res.getSharingAmount()).setScale(2, BigDecimal.ROUND_DOWN)); |
| | | 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) { |
| | |
| | | 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<>(); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @RequiresPermissions(value = {"/accountSettlementStatement/export"}, logical = Logical.OR) |
| | | @ApiOperation(value = "导出", tags = {"管理后台-账户结算账单"}) |
| | | @PutMapping("/exportAccount") |
| | | public void exportAccount(@RequestBody ChargingListQuery dto) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Autowired |
| | | private TChargingOrderRefundService tChargingOrderRefundService; |
| | | |
| | | |
| | | |
| | | @ApiOperation(value = "下载-未出账", tags = {"管理后台-充电算账单"}) |
| | | @PutMapping("/download") |
| | | public void download(@RequestBody ExportUidDto uid) |
| | |
| | | chargingBillExport.setSiteName(data.get(0).getName()); |
| | | } |
| | | // // 根据账单的出账时间 查询上个月的充电订单 |
| | | // LocalDateTime localDate = byId.getBillTime().minusMonths(1); |
| | | LocalDateTime localDate = byId.getBillTime().minusMonths(1); |
| | | // // 账单周期 |
| | | // // 获取 LocalDate 对象 |
| | | // LocalDate date = localDate.toLocalDate(); |
| | | // // 获取该月份的第一天 |
| | | // LocalDate firstDayOfMonth = date.withDayOfMonth(1); |
| | | LocalDateTime localDate = byId.getBillTime().minusDays(1); |
| | | // todo 临时修改为前一天 |
| | | // 获取 LocalDate 对象 |
| | | LocalDate date = localDate.toLocalDate(); |
| | | // // 获取该月份的第一天 |
| | | // LocalDate firstDayOfMonth = date.withDayOfMonth(1); |
| | | // // 获取该月份的最后一天 |
| | | // LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); |
| | | // todo 临时修改为查询昨天凌晨00:00:00 到 23:59:59 |
| | | LocalDateTime firstDayOfMonth = LocalDateTime.of(date, LocalTime.MIN); |
| | | LocalDateTime lastDayOfMonth = LocalDateTime.of(date, LocalTime.MAX); |
| | | // 获取该月份的第一天 |
| | | LocalDate firstDayOfMonth = date.withDayOfMonth(1); |
| | | // 获取该月份的最后一天 |
| | | LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); |
| | | // 获取该月份的最后一天 |
| | | // LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth()); |
| | | QueryWrapper<TChargingOrder> eq = new QueryWrapper<TChargingOrder>() |
| | |
| | | } |
| | | BigDecimal paymentAmount = new BigDecimal("0"); |
| | | BigDecimal refundAmount = 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.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(); |
| | |
| | | chargingBillPayExport.setRechargeSerialNumber(tChargingOrder.getRechargeSerialNumber()); |
| | | chargingBillPayExport.setCode(tChargingOrder.getCode()); |
| | | chargingBillPayExport.setPayTime(tChargingOrder.getPayTime()!=null?DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",DateUtils.toDate(tChargingOrder.getPayTime())):""); |
| | | chargingBillPayExport.setPaymentAmount(tChargingOrder.getChargeAmount().toString()); |
| | | chargingBillPayExport.setPaymentAmount(tChargingOrder.getRechargeAmount().toString()); |
| | | chargingBillPayExport.setTotal(""); |
| | | chargingBillPayExports.add(chargingBillPayExport); |
| | | i++; |
| | | bigDecimal = bigDecimal.add(tChargingOrder.getOrderAmount()); |
| | | bigDecimal = bigDecimal.add(tChargingOrder.getRechargeAmount()); |
| | | } |
| | | if (!chargingBillPayExports.isEmpty()){ |
| | | chargingBillPayExports.get(0).setTotal(bigDecimal+""); |
| | |
| | | } |
| | | 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<>(); |