资金管理查询界面参数修正:发票金额区间支持单个上下限查询

This commit is contained in:
gaoqr
2025-10-20 17:07:06 +08:00
parent 9f8c4223ee
commit 25b26c83dd
6 changed files with 47 additions and 21 deletions
@@ -2,11 +2,15 @@ package com.cf.imes.module.system.controller.admin.funds.invoice.vo;
import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -24,6 +28,15 @@ public class InvoiceAmountAndAvailablePageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "开票金额", example = "[0,100]") @Schema(description = "开票金额")
private Integer[] invoiceAmount; @DecimalMin(value = "0", message = "开票金额必须大于等于零")
@DecimalMax(value = "100000", message = "开票金额不能超过十万")
@Digits(integer = 6, fraction = 2, message = "开票金额格式不正确")
private BigDecimal invoiceAmountStart;
@Schema(description = "开票金额止")
@DecimalMin(value = "0", message = "开票金额必须大于等于零")
@DecimalMax(value = "100000", message = "开票金额不能超过十万")
@Digits(integer = 6, fraction = 2, message = "开票金额格式不正确")
private BigDecimal invoiceAmountEnd;
} }
@@ -3,6 +3,9 @@ package com.cf.imes.module.system.controller.admin.funds.invoice.vo;
import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMax;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
@@ -40,9 +43,17 @@ public class InvoiceDetailsPageReqVO extends PageParam {
private String invoicePerson; private String invoicePerson;
@Schema(description = "发票金额") @Schema(description = "发票金额")
private BigDecimal[] invoiceAmount; @DecimalMin(value = "0", message = "开票金额必须大于等于零")
@DecimalMax(value = "100000", message = "开票金额不能超过十万")
@Digits(integer = 6, fraction = 2, message = "开票金额格式不正确")
private BigDecimal invoiceAmountStart;
@Schema(description = "发票金额起")
@DecimalMin(value = "0", message = "开票金额必须大于等于零")
@DecimalMax(value = "100000", message = "开票金额不能超过十万")
@Digits(integer = 6, fraction = 2, message = "开票金额格式不正确")
private BigDecimal invoiceAmountEnd;
@Schema(description = "开票时间", example = "[2022-07-01 01:01:01 ,2022-07-01 01:01:01]") @Schema(description = "开票时间", example = "[2022-07-01 01:01:01 ,2022-07-01 01:01:01]")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@@ -54,8 +65,4 @@ public class InvoiceDetailsPageReqVO extends PageParam {
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "交易金额")
private BigDecimal[] amount;
} }
@@ -7,9 +7,12 @@ import jakarta.validation.constraints.Size;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.ToString; import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/** /**
* @author Gqr * @author Gqr
* @since 2025/9/16 14:40 * @since 2025/9/16 14:40
@@ -32,5 +35,6 @@ public class ManualAdjustAccountBalancePageReqVO extends PageParam {
private String remark; private String remark;
@Schema(description = "交易时间") @Schema(description = "交易时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
} }
@@ -22,7 +22,8 @@ public interface InvoiceRecordsMapper extends BaseMapperX<InvoiceRecordsDO> {
.eqIfPresent(InvoiceRecordsDO::getStatus, pageReqVO.getStatus()) .eqIfPresent(InvoiceRecordsDO::getStatus, pageReqVO.getStatus())
.likeIfPresent(InvoiceRecordsDO::getCreator, pageReqVO.getCreator()) .likeIfPresent(InvoiceRecordsDO::getCreator, pageReqVO.getCreator())
.likeIfPresent(InvoiceRecordsDO::getInvoicePerson, pageReqVO.getInvoicePerson()) .likeIfPresent(InvoiceRecordsDO::getInvoicePerson, pageReqVO.getInvoicePerson())
.betweenIfPresent(InvoiceRecordsDO::getInvoiceAmount, pageReqVO.getInvoiceAmount()) .geIfPresent(InvoiceRecordsDO::getInvoiceAmount, pageReqVO.getInvoiceAmountStart())
.leIfPresent(InvoiceRecordsDO::getInvoiceAmount, pageReqVO.getInvoiceAmountEnd())
.betweenIfPresent(InvoiceRecordsDO::getCreateTime, pageReqVO.getCreateTime()) .betweenIfPresent(InvoiceRecordsDO::getCreateTime, pageReqVO.getCreateTime())
.betweenIfPresent(InvoiceRecordsDO::getInvoiceTime, pageReqVO.getInvoiceTime()) .betweenIfPresent(InvoiceRecordsDO::getInvoiceTime, pageReqVO.getInvoiceTime())
.orderByDesc(InvoiceRecordsDO::getId)); .orderByDesc(InvoiceRecordsDO::getId));
@@ -73,17 +73,15 @@ public interface PurchaseRecordMapper extends BaseMapperX<PurchaseRecordDO> {
.in(PurchaseRecordDO::getIsInvocing, InvoiceStatusEnum.INVOICABLE.getCode(), InvoiceStatusEnum.INVOICINGFAILED.getCode()) .in(PurchaseRecordDO::getIsInvocing, InvoiceStatusEnum.INVOICABLE.getCode(), InvoiceStatusEnum.INVOICINGFAILED.getCode())
.ne(PurchaseRecordDO::getInitial, true) .ne(PurchaseRecordDO::getInitial, true)
.orderByDesc(PurchaseRecordDO::getCreateTime); .orderByDesc(PurchaseRecordDO::getCreateTime);
Integer[] invoiceAmount = pageReqVO.getInvoiceAmount();
if (ArrayUtil.isNotEmpty(invoiceAmount) && invoiceAmount.length == 2) { BigDecimal start = pageReqVO.getInvoiceAmountStart();
queryWrapper.and(w -> BigDecimal end = pageReqVO.getInvoiceAmountEnd();
w.between(PurchaseRecordDO::getAccountBalanceSpent, if (ObjectUtil.isNotNull(start) && ObjectUtil.isNotNull(end)) {
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[0] : null, queryWrapper.apply("account_balance_spent + external_spent BETWEEN {0} AND {1}", start, end);
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[1] : null) } else if (ObjectUtil.isNotNull(start)) {
.or() queryWrapper.apply("account_balance_spent + external_spent >= {0}", start);
.between(PurchaseRecordDO::getExternalSpent, } else if (ObjectUtil.isNotNull(end)) {
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[0] : null, queryWrapper.apply("account_balance_spent + external_spent <= {0}", end);
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[1] : null)
);
} }
return selectPage(pageReqVO, queryWrapper); return selectPage(pageReqVO, queryWrapper);
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.Assert.AssertUtils; import com.cf.imes.framework.common.util.Assert.AssertUtils;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.framework.id.core.util.SnowflakeSerialNoWorker3rd; import com.cf.imes.framework.id.core.util.SnowflakeSerialNoWorker3rd;
import com.cf.imes.framework.mybatis.core.query.LambdaUpdateWrapperX; import com.cf.imes.framework.mybatis.core.query.LambdaUpdateWrapperX;
@@ -22,7 +23,6 @@ import com.cf.imes.module.system.dal.mysql.pay.PayOrderMapper;
import com.cf.imes.module.system.enums.pay.AdjustTypeEnum; import com.cf.imes.module.system.enums.pay.AdjustTypeEnum;
import com.cf.imes.module.system.enums.pay.IncomeExpenseTypeEnum; import com.cf.imes.module.system.enums.pay.IncomeExpenseTypeEnum;
import com.cf.imes.module.system.enums.pay.PayChannelCodeEnum; import com.cf.imes.module.system.enums.pay.PayChannelCodeEnum;
import com.cf.imes.module.system.enums.pay.PayConstants;
import com.cf.imes.module.system.enums.pay.PayOrderStatusEnum; import com.cf.imes.module.system.enums.pay.PayOrderStatusEnum;
import com.cf.imes.module.system.enums.pay.TradeTypeEnum; import com.cf.imes.module.system.enums.pay.TradeTypeEnum;
import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties; import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties;
@@ -209,6 +209,9 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
@Override @Override
public PageResult<ManualAdjustAccountBalanceRespVO> getPage(ManualAdjustAccountBalancePageReqVO pageReqVO) { public PageResult<ManualAdjustAccountBalanceRespVO> getPage(ManualAdjustAccountBalancePageReqVO pageReqVO) {
// 时间类型规范为开始0点,结束12点
pageReqVO.setCreateTime(LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime()));
PageResult<IncomeExpenseDetailsDO> incomeExpenseDetailsDOPageResult = incomeExpenseDetailsMapper.selectAdjustPage(pageReqVO); PageResult<IncomeExpenseDetailsDO> incomeExpenseDetailsDOPageResult = incomeExpenseDetailsMapper.selectAdjustPage(pageReqVO);
List<IncomeExpenseDetailsDO> pageResultList = incomeExpenseDetailsDOPageResult.getList(); List<IncomeExpenseDetailsDO> pageResultList = incomeExpenseDetailsDOPageResult.getList();