Просмотр исходного кода

修改了收支明细列表搜索规则,修改筛选变动类型接口为获取收益及支出类别接口,新增接口获取类别明细

Pota1ovO 2 лет назад
Родитель
Сommit
78c6d515d2

+ 29 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/valid/NormMonth.java

@@ -0,0 +1,29 @@
+package com.kxs.common.core.valid;
+
+import com.kxs.common.core.valid.impl.NormMonthValidator;
+import com.kxs.common.core.valid.impl.PhoneValidator;
+import jakarta.validation.Constraint;
+import jakarta.validation.Payload;
+
+import java.lang.annotation.*;
+
+/**
+ * 时间格式校验标准月份yyyy-MM
+ * @author Pota1ovO
+ */
+@Target({ElementType.FIELD,ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+@Constraint(validatedBy = {NormMonthValidator.class})// 指定约束处理器,也就是时间格式验证是哪个类来做校验
+public @interface NormMonth {
+
+    String pattern() default "^\\d{4}-(0[1-9]|1[0-2])$";
+
+    String message() default "时间格式错误yyyy-MM";
+
+    Class<?>[] groups() default { }; // groups用来指定分组,可以让校验采取不同的机制,当前默认未指定任何分组机制,默认每次都要进行校验
+
+    Class<? extends Payload>[] payload() default { };
+
+
+}

+ 40 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/valid/impl/NormMonthValidator.java

@@ -0,0 +1,40 @@
+package com.kxs.common.core.valid.impl;
+
+import com.kxs.common.core.valid.NormMonth;
+import com.kxs.common.core.valid.Phone;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 校验处理器:做时间格式验证的核心类
+ *
+ * @author Pota1ovO
+ * @date 2024-04-26
+ */
+public class NormMonthValidator implements ConstraintValidator<NormMonth, String> {
+
+    // 注解对象
+    private NormMonth normMonth;
+
+    // 初始化【NormMonth】对象
+    @Override
+    public void initialize(NormMonth constraintAnnotation) {
+        normMonth = constraintAnnotation;
+    }
+
+    @Override
+    public boolean isValid(String value, ConstraintValidatorContext context) {
+        if (value == null || value.equals("")){
+            return false;
+        }
+        // 获取【Phone】对象的手机格式验证表达式
+        String pattern = normMonth.pattern();
+        Pattern compile = Pattern.compile(pattern);
+        Matcher matcher = compile.matcher(value);
+        return matcher.matches();
+    }
+}
+

+ 3 - 0
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/valid/impl/PhoneValidator.java

@@ -26,6 +26,9 @@ public class PhoneValidator implements ConstraintValidator<Phone, String> {
 
     @Override
     public boolean isValid(String value, ConstraintValidatorContext context) {
+        if (value == null || value.equals("")){
+            return false;
+        }
         // 获取【Phone】对象的手机格式验证表达式
         String pattern = phone.pattern();
         Pattern compile = Pattern.compile(pattern);

+ 5 - 2
kxs-common/kxs-common-core/src/main/java/com/kxs/common/core/valid/impl/SnValidator.java

@@ -18,7 +18,7 @@ public class SnValidator implements ConstraintValidator<Sn, String> {
     // 注解对象
     private Sn sn;
 
-    // 初始化【Phone】对象
+    // 初始化【sn】对象
     @Override
     public void initialize(Sn constraintAnnotation) {
         sn = constraintAnnotation;
@@ -26,7 +26,10 @@ public class SnValidator implements ConstraintValidator<Sn, String> {
 
     @Override
     public boolean isValid(String value, ConstraintValidatorContext context) {
-        // 获取【Phone】对象的手机格式验证表达式
+        if (value == null || value.equals("")){
+            return false;
+        }
+        // 获取【sn】对象的手机格式验证表达式
         String pattern = sn.pattern();
         Pattern compile = Pattern.compile(pattern);
         Matcher matcher = compile.matcher(value);

+ 16 - 9
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/dto/kxsapp/userAccount/UserAmountVariationListDTO.java

@@ -1,9 +1,14 @@
 package com.kxs.user.api.dto.kxsapp.userAccount;
 
+import com.kxs.common.core.valid.NormMonth;
+import com.kxs.common.core.valid.Phone;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
 import lombok.Data;
 
+import java.util.List;
+
 
 /**
  * 收支明细-列表-dto
@@ -15,31 +20,33 @@ import lombok.Data;
 public class UserAmountVariationListDTO {
 
     private Long userId;
-
     /**
-     * 金额类型
+     * 日志类型 add新增 sub减少
      */
-    @Schema(description = "金额类型")
-    private Integer variationType;
+    @Schema(description = "日志类型 1新增 2减少")
+    private String kind;
 
     /**
-     * 日志类型 add新增 sub减少
+     * 收益或支出类型
      */
-    @Schema(description = "日志类型 add新增 sub减少")
-    private String kind;
+    @Schema(description = "收益或支出类型")
+    private List<Integer> changeType;
+
+
 
     /**
      * 月份 2023-08
      */
     @Schema(description = "月份 2023-08")
-    @NotBlank(message = "月份不能为空")
+//    @NotBlank(message = "月份不能为空")
+    @NormMonth
     private String tradeMonth;
 
     /**
      * 品牌机型
      */
     @Schema(description = "品牌机型")
-    private Integer brandId;
+    private List<Integer> brandIds;
 
 
 

+ 5 - 1
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/UserAmountVariationListVO.java

@@ -58,7 +58,11 @@ public class UserAmountVariationListVO implements Serializable {
     private String variationCause;
 
 
-
+    /**
+     * 备注
+     */
+    @Schema(description = "备注")
+    private String remark;
 
 
 	

+ 11 - 0
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/VariationListVO.java

@@ -0,0 +1,11 @@
+package com.kxs.user.api.vo.kxsapp.userAccount;
+
+import lombok.Data;
+
+@Data
+public class VariationListVO {
+    private Long id;
+    private Long changeTypeId;
+    private String name;
+    private String kind;
+}

+ 3 - 3
kxs-user/kxs-user-api/src/main/java/com/kxs/user/api/vo/kxsapp/userAccount/VariationTypeListVO.java

@@ -25,17 +25,17 @@ public class VariationTypeListVO implements Serializable {
      * 变动类型名称
      */
     @Schema(description = "变动类型名称")
-    private String changeType;
+    private String name;
 
 
     /**
      * 变动类型标识
      */
     @Schema(description = "变动类型标识")
-    private Integer changeTypeId;
-
+    private Integer id;
 
 
+    private Integer kind;
 
 
 	

+ 13 - 4
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/controller/kxsapp/UserAccountController.java

@@ -146,16 +146,25 @@ public class UserAccountController {
 
 
     /**
-     * 收支明细-筛选变动类型
+     * 收支明细-获取收益及支出类别
      *
-     * @return 收支明细-筛选变动类型
+     * @return 收支明细-获取收益及支出类别
      */
     @GetMapping("/variationTypeList")
-    public R variationTypeList(@RequestParam("kind") String kind) {
+    public R variationTypeList(@RequestParam("type") String type) {
 
-        return R.ok(kxsUserAmountLogService.variationTypeList(kind));
+        return R.ok(kxsUserAmountLogService.variationTypeList(type));
     }
+    /**
+     * 收支明细-获取收益及支出类别明细
+     *
+     * @return 收支明细-获取收益及支出类别明细
+     */
+    @GetMapping("/variationList")
+    public R variationList(@RequestParam("changeTypeId") String changeTypeId) {
 
+        return R.ok(kxsUserAmountLogService.variationList(changeTypeId));
+    }
     /**
      * 余额变动
      *

+ 9 - 2
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/mapper/KxsUserAmountLogMapper.java

@@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.kxs.user.api.dto.kxsapp.userAccount.UserAmountVariationListDTO;
 import com.kxs.user.api.model.KxsUserAmountLog;
-import com.kxs.user.api.vo.kxsapp.userAccount.AmountInExpendTotalVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.UserAmountVariationListVO;
+import com.kxs.user.api.vo.kxsapp.userAccount.VariationListVO;
+import com.kxs.user.api.vo.kxsapp.userAccount.VariationTypeListVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * 用户余额记录日志表(KxsUserAmountLog)表数据库访问层
  *
@@ -19,8 +22,12 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface KxsUserAmountLogMapper extends BaseMapper<KxsUserAmountLog> {
 
-    IPage<UserAmountVariationListVO> getByPage(Page<UserAmountVariationListVO> page, @Param("query") UserAmountVariationListDTO param);
+    IPage<UserAmountVariationListVO> getByPage(Page<UserAmountVariationListVO> page, @Param("query") UserAmountVariationListDTO param, @Param("tableName")String tableName);
 
     void automaticTableCreationTasks(String tableName);
+
+    List<VariationTypeListVO> variationTypeList(String kind);
+
+    List<VariationListVO> variationList(String changeTypeId);
 }
 

+ 2 - 0
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/KxsUserAmountLogService.java

@@ -40,5 +40,7 @@ public interface KxsUserAmountLogService extends IService<KxsUserAmountLog> {
      * @return {@link Object}
      */
     Object variationTypeList(String kind);
+
+    Object variationList(String changeTypeId);
 }
 

+ 15 - 22
kxs-user/kxs-user-biz/src/main/java/com/kxs/user/biz/service/impl/KxsUserAmountLogServiceImpl.java

@@ -1,21 +1,26 @@
 package com.kxs.user.biz.service.impl;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.EnumUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.kxs.common.core.constant.enums.KindTypeEnum;
+import com.kxs.common.mybatis.handler.MonthTableNameHandler;
 import com.kxs.common.security.util.SecurityUtils;
 import com.kxs.user.api.dto.kxsapp.userAccount.UserAmountVariationListDTO;
 import com.kxs.user.api.vo.kxsapp.userAccount.AmountInExpendTotalVO;
 import com.kxs.user.api.vo.kxsapp.userAccount.UserAmountVariationListVO;
 import com.kxs.common.core.constant.enums.VariationTypeEnum;
+import com.kxs.user.api.vo.kxsapp.userAccount.VariationTypeListVO;
 import com.kxs.user.biz.mapper.KxsUserAmountLogMapper;
 import com.kxs.user.api.model.KxsUserAmountLog;
 import com.kxs.user.biz.service.KxsUserAmountLogService;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -34,7 +39,11 @@ public class KxsUserAmountLogServiceImpl extends ServiceImpl<KxsUserAmountLogMap
     public IPage<UserAmountVariationListVO> getByPage(Page<UserAmountVariationListVO> page, UserAmountVariationListDTO param) {
 
         param.setUserId(SecurityUtils.getUser().getId());
-        return baseMapper.getByPage(page, param);
+        //拼接表名
+        String tableName = param.getTradeMonth();
+        String[] split = tableName.split("-");
+        tableName = "kxs_user_amount_log_" + split[0] + split[1];
+        return baseMapper.getByPage(page, param,tableName);
     }
 
     @Override
@@ -66,28 +75,12 @@ public class KxsUserAmountLogServiceImpl extends ServiceImpl<KxsUserAmountLogMap
 
     @Override
     public Object variationTypeList(String kind) {
+        return baseMapper.variationTypeList(kind);
+    }
 
-        //查询枚举类封装为list
-        List<Object> types = EnumUtil.getFieldValues(VariationTypeEnum.class, "type");
-        List<Object> description = EnumUtil.getFieldValues(VariationTypeEnum.class, "description");
-
-        ArrayList<Map<String, Object>> result = new ArrayList<>();
-        for (int i = 0; i < types.size(); i++) {
-            if(KindTypeEnum.ADD.getType().equals(kind) && (int)types.get(i) < 100){
-                HashMap<String, Object> accountChangeType = new HashMap<>();
-                accountChangeType.put("changeTypeId", types.get(i));
-                accountChangeType.put("changeType", description.get(i));
-                result.add(accountChangeType);
-            }
-            if(KindTypeEnum.SUB.getType().equals(kind) && (int)types.get(i) > 100){
-                HashMap<String, Object> accountChangeType = new HashMap<>();
-                accountChangeType.put("changeTypeId", types.get(i));
-                accountChangeType.put("changeType", description.get(i));
-                result.add(accountChangeType);
-            }
-        }
-
-        return result;
+    @Override
+    public Object variationList(String changeTypeId) {
+        return baseMapper.variationList(changeTypeId);
     }
 }
 

+ 38 - 9
kxs-user/kxs-user-biz/src/main/resources/mapper/KxsUserAmountLogMapper.xml

@@ -26,20 +26,49 @@
         CREATE  TABLE IF NOT EXISTS `${tableName}` LIKE kxs_user_amount_log;
     </update>
     <select id="getByPage" resultType="com.kxs.user.api.vo.kxsapp.userAccount.UserAmountVariationListVO">
-        SELECT * from kxs_user_amount_log
+        SELECT * FROM ${tableName}
         <where>
-            and del_flag = 0
-            and user_id = #{query.userId}
-            <if test="query.brandId != null">
-                and brand_id = #{query.brandId}
-            </if>
+            AND del_flag = 0
+            AND user_id = #{query.userId}
             <if test="query.kind != null and query.kind != ''">
-                and kind = #{query.kind}
+                AND kind = #{query.kind}
+            </if>
+            <if test="query.brandIds != null">
+                AND ${tableName}.brand_id IN
+                <foreach item="brandId" index="index" collection="query.brandIds" open="(" separator="," close=")">
+                    #{brandId}
+                </foreach>
             </if>
-            <if test="query.variationType != null">
-                and variation_type = #{query.variationType}
+            <if test="query.changeType != null">
+                AND variation_type IN (
+                     SELECT
+                        kctk.id
+                    FROM
+                        kxs_change_type_kind kctk
+                        LEFT JOIN
+                            kxs_change_type kct
+                        ON
+                        kctk.change_type_id = kct.id
+                    WHERE
+                 kct.id In
+                <foreach item="ct" index="index" collection="query.changeType" open="(" separator="," close=")">
+                    #{ct}
+                </foreach>
+                 )
             </if>
         </where>
     </select>
+    <select id="variationTypeList" resultType="com.kxs.user.api.vo.kxsapp.userAccount.VariationTypeListVO">
+        SELECT * FROM kxs_change_type WHERE del_flag = 0
+        <if test="kind != null and kind != '' and kind != 3">
+            AND kind = #{kind}
+        </if>
+    </select>
+    <select id="variationList" resultType="com.kxs.user.api.vo.kxsapp.userAccount.VariationListVO">
+        SELECT * FROM kxs_change_type_kind WHERE del_flag = 0
+        <if test="changeTypeId != null and changeTypeId != '' and changeTypeId != 0">
+            AND change_type_id = #{changeTypeId}
+        </if>
+    </select>
 
 </mapper>