From afd8591020cedd4d02282fcd96682b9244ab1391 Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Fri, 29 Nov 2024 16:25:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=A2=84=E7=AE=97?= =?UTF-8?q?=E5=B7=B2=E4=BD=BF=E7=94=A8=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../budgetCategory/BudgetCategoryDto.java | 3 +++ .../admin/BudgetCategoryAddDto.java | 5 +++++ .../admin/BudgetCategoryUpdateDto.java | 5 +++++ .../user/BudgetCategoryAddUserDto.java | 5 +++++ .../user/BudgetCategoryUpdateUserDto.java | 5 +++++ .../dao/entity/financial/BudgetCategory.java | 3 +++ .../vo/financial/admin/BudgetCategoryVo.java | 3 +++ .../financial/user/BudgetCategoryUserVo.java | 3 +++ .../mapper/financial/BudgetCategoryMapper.xml | 3 +++ .../resources/static/bill-add-template.xlsx | Bin 10910 -> 12205 bytes 10 files changed, 35 insertions(+) diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/BudgetCategoryDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/BudgetCategoryDto.java index 266a65d..adab40f 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/BudgetCategoryDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/BudgetCategoryDto.java @@ -32,6 +32,9 @@ public class BudgetCategoryDto { @Schema(name = "amount", title = "预算金额") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + private BigDecimal useAmount; + @Schema(name = "startPeriod", title = "开始预算周期") @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd") private LocalDate startPeriod; diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryAddDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryAddDto.java index 2eb2fd8..44ccfae 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryAddDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryAddDto.java @@ -48,6 +48,11 @@ public class BudgetCategoryAddDto { @Min(value = 0, message = "不能低于0") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + @NotNull(message = "金额不能为空") + @Min(value = 0, message = "不能低于0") + private BigDecimal useAmount; + @Schema(name = "period", title = "预算周期") @NotNull(message = "预算周期不能为空") @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryUpdateDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryUpdateDto.java index 2e1273f..799f515 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryUpdateDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/admin/BudgetCategoryUpdateDto.java @@ -52,6 +52,11 @@ public class BudgetCategoryUpdateDto { @Min(value = 0, message = "不能低于0") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + @NotNull(message = "金额不能为空") + @Min(value = 0, message = "不能低于0") + private BigDecimal useAmount; + @Schema(name = "period", title = "预算周期") @NotNull(message = "预算周期不能为空") @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryAddUserDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryAddUserDto.java index 5702cd9..ad935f2 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryAddUserDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryAddUserDto.java @@ -44,6 +44,11 @@ public class BudgetCategoryAddUserDto { @Min(value = 0, message = "不能低于0") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + @NotNull(message = "金额不能为空") + @Min(value = 0, message = "不能低于0") + private BigDecimal useAmount; + @Schema(name = "period", title = "预算周期") @NotNull(message = "预算周期不能为空") @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryUpdateUserDto.java b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryUpdateUserDto.java index d0a8aa8..6f9640b 100644 --- a/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryUpdateUserDto.java +++ b/dao/src/main/java/cn/bunny/dao/dto/financial/budgetCategory/user/BudgetCategoryUpdateUserDto.java @@ -48,6 +48,11 @@ public class BudgetCategoryUpdateUserDto { @Min(value = 0, message = "不能低于0") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + @NotNull(message = "金额不能为空") + @Min(value = 0, message = "不能低于0") + private BigDecimal useAmount; + @Schema(name = "period", title = "预算周期") @NotNull(message = "预算周期不能为空") @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/dao/src/main/java/cn/bunny/dao/entity/financial/BudgetCategory.java b/dao/src/main/java/cn/bunny/dao/entity/financial/BudgetCategory.java index 7868ed3..6fcef93 100644 --- a/dao/src/main/java/cn/bunny/dao/entity/financial/BudgetCategory.java +++ b/dao/src/main/java/cn/bunny/dao/entity/financial/BudgetCategory.java @@ -43,6 +43,9 @@ public class BudgetCategory extends BaseEntity { @Schema(name = "amount", title = "预算金额") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + private BigDecimal useAmount; + @Schema(name = "period", title = "预算周期") private LocalDateTime startPeriod; diff --git a/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BudgetCategoryVo.java b/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BudgetCategoryVo.java index 35af24a..df540b0 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BudgetCategoryVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/financial/admin/BudgetCategoryVo.java @@ -47,6 +47,9 @@ public class BudgetCategoryVo extends BaseUserVo { @Schema(name = "amount", title = "预算金额") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + private BigDecimal useAmount; + @Schema(name = "startPeriod", title = "预算周期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonSerialize(using = LocalDateTimeSerializer.class) diff --git a/dao/src/main/java/cn/bunny/dao/vo/financial/user/BudgetCategoryUserVo.java b/dao/src/main/java/cn/bunny/dao/vo/financial/user/BudgetCategoryUserVo.java index c0762db..75635e6 100644 --- a/dao/src/main/java/cn/bunny/dao/vo/financial/user/BudgetCategoryUserVo.java +++ b/dao/src/main/java/cn/bunny/dao/vo/financial/user/BudgetCategoryUserVo.java @@ -39,6 +39,9 @@ public class BudgetCategoryUserVo extends BaseVo { @Schema(name = "amount", title = "预算金额") private BigDecimal amount; + @Schema(name = "useAmount", title = "已使用预算金额") + private BigDecimal useAmount; + @Schema(name = "startPeriod", title = "预算周期") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonSerialize(using = LocalDateTimeSerializer.class) diff --git a/service/src/main/resources/mapper/financial/BudgetCategoryMapper.xml b/service/src/main/resources/mapper/financial/BudgetCategoryMapper.xml index fe20164..31d410c 100644 --- a/service/src/main/resources/mapper/financial/BudgetCategoryMapper.xml +++ b/service/src/main/resources/mapper/financial/BudgetCategoryMapper.xml @@ -53,6 +53,9 @@ and base.amount like CONCAT('%',#{dto.amount},'%') + + and base.use_amount like CONCAT('%',#{dto.useAmount},'%') + and ( (base.start_period between #{dto.startPeriod} and #{dto.endPeriod}) diff --git a/service/src/main/resources/static/bill-add-template.xlsx b/service/src/main/resources/static/bill-add-template.xlsx index 6f70f3480edf6984f5737ab430c96df0967e93bb..9a838e5214ae4e88b802422768a46ee2688f84d8 100644 GIT binary patch delta 6285 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 delta 5101 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