From 8bcf0b33bde5ba048cc77d14127f081379ddafc5 Mon Sep 17 00:00:00 2001 From: hanrenchun Date: Wed, 8 Apr 2026 15:24:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E7=A5=A8=20=E7=A7=AF=E5=88=86=20?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BaseInvoiceInfoController.java | 57 +++++++++++-------- .../controller/ParkingBillInfoController.java | 38 +++++++++---- .../controller/SmallProgramController.java | 14 ++++- .../database/domain/BaseInvoiceInfo.java | 4 ++ .../database/domain/ParkingBillInfo.java | 6 ++ .../domain/ParkingBillPaymentInfo.java | 48 ++++++++++++++++ .../domain/dto/BaseInvoiceInfoDto.java | 6 +- 7 files changed, 135 insertions(+), 38 deletions(-) diff --git a/gather-app/src/main/java/com/ruoyi/database/controller/BaseInvoiceInfoController.java b/gather-app/src/main/java/com/ruoyi/database/controller/BaseInvoiceInfoController.java index d141997..529a150 100644 --- a/gather-app/src/main/java/com/ruoyi/database/controller/BaseInvoiceInfoController.java +++ b/gather-app/src/main/java/com/ruoyi/database/controller/BaseInvoiceInfoController.java @@ -1,15 +1,9 @@ package com.ruoyi.database.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.model.LoginUserByPhone; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.bean.BeanUtils; -import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.database.domain.BaseInvoiceInfo; import com.ruoyi.database.domain.dto.BaseInvoiceInfoDto; import com.ruoyi.database.service.BaseInvoiceInfoService; @@ -17,14 +11,13 @@ import com.ruoyi.framework.web.service.TokenService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeansException; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Date; - import java.util.List; +import java.util.UUID; /** * 发票信息表(BaseInvoiceInfo)Controller @@ -42,27 +35,45 @@ public class BaseInvoiceInfoController extends BaseController { private final TokenService tokenService; @GetMapping - @ApiOperation("查询当前已开发票信息") - public TableDataInfo list(BaseInvoiceInfo baseInvoiceInfo, HttpServletRequest request) { + @ApiOperation("查询当前已开发票信息(详情)") + public AjaxResult list(@RequestParam String inUnid, HttpServletRequest request) { LoginUserByPhone loginUserByPhone = tokenService.getLoginUserByPhone(request); - QueryWrapper queryWrapper = new QueryWrapper<>(baseInvoiceInfo); - queryWrapper.eq("user_phone",loginUserByPhone.getPhone()); - PageUtils.startPage(); - List list = baseInvoiceInfoService.list(queryWrapper); - long size = baseInvoiceInfoService.count(queryWrapper); - return getDataTableEnhance(list, size); + BaseInvoiceInfo one = baseInvoiceInfoService.lambdaQuery() + .eq(BaseInvoiceInfo::getInUnid, inUnid) + .eq(BaseInvoiceInfo::getUserPhone,loginUserByPhone.getPhone()) + .last("LIMIT 1") + .one(); + if (one != null) { + return AjaxResult.success(one); + }else { + return AjaxResult.error("未找到对应订单"); + } } @PostMapping @ApiOperation("新增发票开票任务") + @Transactional public AjaxResult insert(@RequestBody BaseInvoiceInfoDto baseInvoiceInfo, HttpServletRequest request) { - BaseInvoiceInfo invoiceInfo = new BaseInvoiceInfo(); - BeanUtils.copyProperties(baseInvoiceInfo,invoiceInfo); - invoiceInfo.setInvoiceTypeCode(0); - invoiceInfo.setPriceTaxMark(1); - return toAjax(baseInvoiceInfoService.save(invoiceInfo)); + try { + LoginUserByPhone loginUserByPhone = tokenService.getLoginUserByPhone(request); + List inUnid = baseInvoiceInfo.getInUnid(); + String uuid = UUID.randomUUID().toString(); + for (String s : inUnid) { + BaseInvoiceInfo invoiceInfo = new BaseInvoiceInfo(); + BeanUtils.copyProperties(baseInvoiceInfo,invoiceInfo); + invoiceInfo.setInUnid(s); + invoiceInfo.setInvoiceTypeCode(0); + invoiceInfo.setPriceTaxMark(1); + invoiceInfo.setUserPhone(loginUserByPhone.getPhone()); + invoiceInfo.setPlId(uuid); + baseInvoiceInfoService.save(invoiceInfo); + } + return AjaxResult.success("操作成功,等待开票"); + } catch (BeansException e) { + return AjaxResult.error("操作失败"); + } } } diff --git a/gather-app/src/main/java/com/ruoyi/database/controller/ParkingBillInfoController.java b/gather-app/src/main/java/com/ruoyi/database/controller/ParkingBillInfoController.java index f1fef8b..9ec744c 100644 --- a/gather-app/src/main/java/com/ruoyi/database/controller/ParkingBillInfoController.java +++ b/gather-app/src/main/java/com/ruoyi/database/controller/ParkingBillInfoController.java @@ -11,8 +11,10 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.database.domain.ParkingBillInfo; +import com.ruoyi.database.domain.ParkingBillPaymentInfo; import com.ruoyi.database.domain.vo.ParkingBillInfoVO; import com.ruoyi.database.service.ParkingBillInfoService; +import com.ruoyi.database.service.ParkingBillPaymentInfoService; import com.ruoyi.framework.web.service.TokenService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -23,6 +25,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @RequestMapping("/ParkingBillInfo") @Api(tags = "订单管理") @@ -31,6 +34,7 @@ import java.util.List; public class ParkingBillInfoController extends BaseController { private final ParkingBillInfoService parkingBillInfoService; + private final ParkingBillPaymentInfoService parkingBillPaymentInfoService; private final TokenService tokenService; @GetMapping @@ -42,7 +46,7 @@ public class ParkingBillInfoController extends BaseController { phone = loginUserByPhone.getPhone(); } catch (Exception e) { } - PageUtils.startPage(); + QueryWrapper queryWrapper = new QueryWrapper<>(parkingBillInfo); if (phone != null && !"".equals(phone)){ queryWrapper.eq("phone",phone); @@ -50,33 +54,45 @@ public class ParkingBillInfoController extends BaseController { Integer timeRange = parkingBillInfo.getTimeRange(); if (timeRange != null){ Date now = new Date(); - + QueryWrapper infoQueryWrapper = new QueryWrapper<>(); if (timeRange == 1) { // 当天 // 获取当天开始和结束时间 Date beginOfDay = DateUtil.beginOfDay(now); Date endOfDay = DateUtil.endOfDay(now); - queryWrapper.between("create_time", beginOfDay, endOfDay); + infoQueryWrapper.between("create_time", beginOfDay, endOfDay); } else if (timeRange == 2) { // 一个月内 Date oneMonthAgo = DateUtil.offsetMonth(now, -1); - queryWrapper.ge("create_time", oneMonthAgo); + infoQueryWrapper.ge("create_time", oneMonthAgo); } else if (timeRange == 3) { // 三个月内 Date threeMonthsAgo = DateUtil.offsetMonth(now, -3); - queryWrapper.ge("create_time", threeMonthsAgo); + infoQueryWrapper.ge("create_time", threeMonthsAgo); + } + List list = parkingBillPaymentInfoService.list(infoQueryWrapper); + if (list != null && !list.isEmpty()){ + List collect = list.stream().map(ParkingBillPaymentInfo::getInUnid).collect(Collectors.toList()); + queryWrapper.eq("in_unid",collect); } } + queryWrapper.eq("is_pay",1); + PageUtils.startPage(); List list = parkingBillInfoService.list(queryWrapper); List parkingBillInfoVOS = new ArrayList<>(); list.forEach(b -> { ParkingBillInfoVO parkingBillInfoVO = new ParkingBillInfoVO(); BeanUtils.copyProperties(b, parkingBillInfoVO); - parkingBillInfoVO.setTotalCostYuan(b.getTotalCostYuan().toString() + "元"); - parkingBillInfoVO.setTotalCost(b.getTotalCostYuan()); - parkingBillInfoVO.setPayMoneyYuan(b.getPayMoneyYuan().toString() + "元"); - parkingBillInfoVO.setPayMoney(b.getPayMoneyYuan()); - parkingBillInfoVO.setDeductMoneyYuan(b.getDeductMoneyYuan().toString() + "元"); - parkingBillInfoVO.setDeductMoney(b.getDeductMoneyYuan()); + ParkingBillPaymentInfo one = parkingBillPaymentInfoService.lambdaQuery() + .eq(ParkingBillPaymentInfo::getInUnid, b.getInUnid()) + .eq(ParkingBillPaymentInfo::getPayStatus, 1) + .last("LIMIT 1") + .one(); + parkingBillInfoVO.setTotalCostYuan(one.getTotalCostYuan().toString() + "元"); + parkingBillInfoVO.setTotalCost(one.getTotalCostYuan()); + parkingBillInfoVO.setPayMoneyYuan(one.getPayMoneyYuan().toString() + "元"); + parkingBillInfoVO.setPayMoney(one.getPayMoneyYuan()); + parkingBillInfoVO.setDeductMoneyYuan(one.getDeductMoneyYuan().toString() + "元"); + parkingBillInfoVO.setDeductMoney(one.getDeductMoneyYuan()); parkingBillInfoVO.setParkPeriodTime(minutesToDHMS(b.getParkPeriodTime())); parkingBillInfoVOS.add(parkingBillInfoVO); }); diff --git a/gather-app/src/main/java/com/ruoyi/database/controller/SmallProgramController.java b/gather-app/src/main/java/com/ruoyi/database/controller/SmallProgramController.java index 20e8a26..55de447 100644 --- a/gather-app/src/main/java/com/ruoyi/database/controller/SmallProgramController.java +++ b/gather-app/src/main/java/com/ruoyi/database/controller/SmallProgramController.java @@ -51,13 +51,17 @@ public class SmallProgramController extends BaseController { @Transactional public AjaxResult getOrder(String plateNo) { String trim = plateNo.trim(); -// ParkingBillInfo one = parkingBillInfoService.saveOrUpdateParkingBillInfo(trim); + ParkingBillInfo one = parkingBillInfoService.lambdaQuery() .eq(ParkingBillInfo::getPlateNo, plateNo) + .eq(ParkingBillInfo::getIsPay,0) .orderByDesc(ParkingBillInfo::getCreateTime) .last("limit 1") .one(); - + ParkingBillInfo parkingBillInfo = parkingBillInfoService.saveOrUpdateParkingBillInfo(trim); + if (parkingBillInfo != null){ + one = parkingBillInfo; + } if (one == null) { return AjaxResult.error("未查询到停车记录"); } else { @@ -294,6 +298,12 @@ public class SmallProgramController extends BaseController { parkingBillPaymentInfo.setPayStatus(0); parkingBillPaymentInfo.setOrderId(generate); parkingBillPaymentInfo.setInUnid(one.getInUnid()); + parkingBillPaymentInfo.setTotalCost(one.getTotalCost()); + parkingBillPaymentInfo.setTotalCostYuan(one.getTotalCostYuan()); + parkingBillPaymentInfo.setPayMoney(one.getPayMoney()); + parkingBillPaymentInfo.setPayMoneyYuan(one.getPayMoneyYuan()); + parkingBillPaymentInfo.setDeductMoney(one.getDeductMoney()); + parkingBillPaymentInfo.setDeductMoneyYuan(one.getDeductMoneyYuan()); boolean b = parkingBillPaymentInfoService.saveOrUpdate(parkingBillPaymentInfo); if (b) { return AjaxResult.success(order); diff --git a/gather-app/src/main/java/com/ruoyi/database/domain/BaseInvoiceInfo.java b/gather-app/src/main/java/com/ruoyi/database/domain/BaseInvoiceInfo.java index 7a067c8..770c136 100644 --- a/gather-app/src/main/java/com/ruoyi/database/domain/BaseInvoiceInfo.java +++ b/gather-app/src/main/java/com/ruoyi/database/domain/BaseInvoiceInfo.java @@ -159,4 +159,8 @@ public class BaseInvoiceInfo extends BaseEntity { private String userPhone; + @ApiModelProperty("批量id") + private String plId; + + } diff --git a/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillInfo.java b/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillInfo.java index 29b7db1..5bf80de 100644 --- a/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillInfo.java +++ b/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillInfo.java @@ -186,4 +186,10 @@ public class ParkingBillInfo { @TableField(exist = false) @ApiModelProperty("时间范围 1:当天, 2:一个月, 3;3个月") private Integer timeRange; + + + + @ApiModelProperty("是否开票 0 未开票 1 已开票") + @Excel(name = "是否开票") + private Integer isInvoicing; } diff --git a/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillPaymentInfo.java b/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillPaymentInfo.java index c5b1dbf..854370f 100644 --- a/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillPaymentInfo.java +++ b/gather-app/src/main/java/com/ruoyi/database/domain/ParkingBillPaymentInfo.java @@ -13,6 +13,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; @@ -133,4 +134,51 @@ public class ParkingBillPaymentInfo { private String inUnid; + /** + * 总费用(分) + */ + @ApiModelProperty("总费用(分)") + @Excel(name = "总费用(分)") + private Integer totalCost; + + + /** + * 总费用(元) + */ + @ApiModelProperty("总费用(元)") + @Excel(name = "总费用(元)") + private BigDecimal totalCostYuan; + + + /** + * 抵扣金额(分) + */ + @ApiModelProperty("抵扣金额(分)") + @Excel(name = "抵扣金额(分)") + private Integer deductMoney; + + /** + * 抵扣金额(元) + */ + @ApiModelProperty("抵扣金额(元)") + @Excel(name = "抵扣金额(元)") + private BigDecimal deductMoneyYuan; + + /** + * 实付金额(分) + */ + @ApiModelProperty("实付金额(分)") + @Excel(name = "实付金额(分)") + private Integer payMoney; + + + /** + * 实付金额(元) + */ + @ApiModelProperty("实付金额(元)") + @Excel(name = "实付金额(元)") + private BigDecimal payMoneyYuan; + + + } diff --git a/gather-app/src/main/java/com/ruoyi/database/domain/dto/BaseInvoiceInfoDto.java b/gather-app/src/main/java/com/ruoyi/database/domain/dto/BaseInvoiceInfoDto.java index 9edeee7..bdfe18c 100644 --- a/gather-app/src/main/java/com/ruoyi/database/domain/dto/BaseInvoiceInfoDto.java +++ b/gather-app/src/main/java/com/ruoyi/database/domain/dto/BaseInvoiceInfoDto.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data @ApiModel(value = "BaseInvoiceInfoDto") public class BaseInvoiceInfoDto { @@ -13,9 +15,9 @@ public class BaseInvoiceInfoDto { /** * 记录唯一标识 */ - @ApiModelProperty("记录唯一标识") + @ApiModelProperty("记录唯一标识 数组") @Excel(name = "记录唯一标识") - private String inUnid; + private List inUnid; /**