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

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 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.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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)
private LocalDateTime[] createTime;
@Schema(description = "开票金额", example = "[0,100]")
private Integer[] invoiceAmount;
@Schema(description = "开票金额")
@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 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.EqualsAndHashCode;
import lombok.ToString;
@@ -40,9 +43,17 @@ public class InvoiceDetailsPageReqVO extends PageParam {
private String invoicePerson;
@Schema(description = "发票金额")
private BigDecimal[] invoiceAmount;
@Schema(description = "发票金额")
@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]")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@@ -54,8 +65,4 @@ public class InvoiceDetailsPageReqVO extends PageParam {
private LocalDateTime[] createTime;
@Schema(description = "交易金额")
private BigDecimal[] amount;
}
@@ -7,9 +7,12 @@ import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
/**
* @author Gqr
* @since 2025/9/16 14:40
@@ -32,5 +35,6 @@ public class ManualAdjustAccountBalancePageReqVO extends PageParam {
private String remark;
@Schema(description = "交易时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}
@@ -22,7 +22,8 @@ public interface InvoiceRecordsMapper extends BaseMapperX<InvoiceRecordsDO> {
.eqIfPresent(InvoiceRecordsDO::getStatus, pageReqVO.getStatus())
.likeIfPresent(InvoiceRecordsDO::getCreator, pageReqVO.getCreator())
.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::getInvoiceTime, pageReqVO.getInvoiceTime())
.orderByDesc(InvoiceRecordsDO::getId));
@@ -73,17 +73,15 @@ public interface PurchaseRecordMapper extends BaseMapperX<PurchaseRecordDO> {
.in(PurchaseRecordDO::getIsInvocing, InvoiceStatusEnum.INVOICABLE.getCode(), InvoiceStatusEnum.INVOICINGFAILED.getCode())
.ne(PurchaseRecordDO::getInitial, true)
.orderByDesc(PurchaseRecordDO::getCreateTime);
Integer[] invoiceAmount = pageReqVO.getInvoiceAmount();
if (ArrayUtil.isNotEmpty(invoiceAmount) && invoiceAmount.length == 2) {
queryWrapper.and(w ->
w.between(PurchaseRecordDO::getAccountBalanceSpent,
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[0] : null,
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[1] : null)
.or()
.between(PurchaseRecordDO::getExternalSpent,
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[0] : null,
ObjectUtil.isNotNull(pageReqVO.getInvoiceAmount()) ? pageReqVO.getInvoiceAmount()[1] : null)
);
BigDecimal start = pageReqVO.getInvoiceAmountStart();
BigDecimal end = pageReqVO.getInvoiceAmountEnd();
if (ObjectUtil.isNotNull(start) && ObjectUtil.isNotNull(end)) {
queryWrapper.apply("account_balance_spent + external_spent BETWEEN {0} AND {1}", start, end);
} else if (ObjectUtil.isNotNull(start)) {
queryWrapper.apply("account_balance_spent + external_spent >= {0}", start);
} else if (ObjectUtil.isNotNull(end)) {
queryWrapper.apply("account_balance_spent + external_spent <= {0}", end);
}
return selectPage(pageReqVO, queryWrapper);
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.cf.imes.framework.common.pojo.PageResult;
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.id.core.util.SnowflakeSerialNoWorker3rd;
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.IncomeExpenseTypeEnum;
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.TradeTypeEnum;
import com.cf.imes.module.system.framework.snowflake.config.MybatisIdProperties;
@@ -209,6 +209,9 @@ public class ManualAdjustAccountBalanceServiceImpl implements ManualAdjustAccoun
@Override
public PageResult<ManualAdjustAccountBalanceRespVO> getPage(ManualAdjustAccountBalancePageReqVO pageReqVO) {
// 时间类型规范为开始0点,结束12点
pageReqVO.setCreateTime(LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime()));
PageResult<IncomeExpenseDetailsDO> incomeExpenseDetailsDOPageResult = incomeExpenseDetailsMapper.selectAdjustPage(pageReqVO);
List<IncomeExpenseDetailsDO> pageResultList = incomeExpenseDetailsDOPageResult.getList();