فهرست منبع

1、报销类型、费用项目CRUD接口调整

dongpo 1 سال پیش
والد
کامیت
6195f78b89
10فایلهای تغییر یافته به همراه40 افزوده شده و 69 حذف شده
  1. 2 0
      yudao-module-finance/yudao-module-expense-api/src/main/java/cn/iocoder/yudao/module/expense/enums/ErrorCodeConstants.java
  2. 3 3
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/ExpenseItemController.java
  3. 7 20
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/vo/ExpenseItemPageReqVO.java
  4. 3 10
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/vo/ExpenseItemSaveReqVO.java
  5. 4 17
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypePageReqVO.java
  6. 3 7
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypeSaveReqVO.java
  7. 0 4
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/dal/mysql/expenseitem/ExpenseItemMapper.java
  8. 2 7
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/dal/mysql/expensetype/ExpenseTypeMapper.java
  9. 7 1
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expenseitem/ExpenseItemServiceImpl.java
  10. 9 0
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expensetype/ExpenseTypeServiceImpl.java

+ 2 - 0
yudao-module-finance/yudao-module-expense-api/src/main/java/cn/iocoder/yudao/module/expense/enums/ErrorCodeConstants.java

@@ -8,6 +8,8 @@ public interface ErrorCodeConstants {
     ErrorCode EXPENSE_TYPE_NOT_EXISTS = new ErrorCode(1_040_001_001, "报销类型信息不存在");
     // ========== 报销费用项目信息 1_040_002_001 ==========
     ErrorCode EXPENSE_ITEM_NOT_EXISTS = new ErrorCode(1_040_002_001, "报销费用项目信息不存在");
+    ErrorCode EXPENSE_ITEM_EXISTS = new ErrorCode(1_040_002_002, "请先删除报销类型下的费用项目");
+    ErrorCode EXPENSE_TYPE_ID_NULL = new ErrorCode(1_040_002_003, "报销类型不能为空");
     // ========== 报销信息 1_040_003_001 ==========
     ErrorCode INFO_NOT_EXISTS = new ErrorCode(1_040_003_001, "报销信息不存在");
     ErrorCode EXPENSE_INFO_OBJ_ITEM_BLANK = new ErrorCode(1_040_003_002, "报销子项费用项目不能为空");

+ 3 - 3
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/ExpenseItemController.java

@@ -14,7 +14,7 @@ import cn.iocoder.yudao.module.expense.service.expenseitem.ExpenseItemService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
-import org.springframework.security.access.prepost.PreAuthorize;
+import org.springdoc.api.annotations.ParameterObject;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -72,7 +72,7 @@ public class ExpenseItemController {
     @GetMapping("/page")
     @Operation(summary = "获得报销费用项目信息分页")
     // @PreAuthorize("@ss.hasPermission('expense:item:query')")
-    public CommonResult<PageResult<ExpenseItemRespVO>> getItemPage(@Valid ExpenseItemPageReqVO pageReqVO) {
+    public CommonResult<PageResult<ExpenseItemRespVO>> getItemPage(@Valid @ParameterObject ExpenseItemPageReqVO pageReqVO) {
         PageResult<ExpenseItemDO> pageResult = itemService.getItemPage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, ExpenseItemRespVO.class));
     }
@@ -81,7 +81,7 @@ public class ExpenseItemController {
     @Operation(summary = "导出报销费用项目信息 Excel")
     // @PreAuthorize("@ss.hasPermission('expense:item:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportItemExcel(@Valid ExpenseItemPageReqVO pageReqVO,
+    public void exportItemExcel(@Valid @ParameterObject ExpenseItemPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
         List<ExpenseItemDO> list = itemService.getItemPage(pageReqVO).getList();

+ 7 - 20
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/vo/ExpenseItemPageReqVO.java

@@ -1,13 +1,12 @@
 package cn.iocoder.yudao.module.expense.controller.admin.expenseitem.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+import javax.validation.constraints.NotNull;
 
 @Schema(description = "管理后台 - 报销费用项目信息分页 Request VO")
 @Data
@@ -15,23 +14,11 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @ToString(callSuper = true)
 public class ExpenseItemPageReqVO extends PageParam {
 
-    @Schema(description = "报销类型主键id", example = "2556")
+    @Schema(description = "报销类型主键id", example = "1")
+    @NotNull(message = "报销类型不能为空")
     private Long expenseTypeId;
 
-    @Schema(description = "报销类型uuid", example = "14367")
-    private String expenseTypeUuid;
-
-    @Schema(description = "费用项目uuid", example = "10133")
-    private String expenseItemUuid;
-
     @Schema(description = "费用项目", example = "芋艿")
     private String name;
 
-    @Schema(description = "备注")
-    private String remarks;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
 }

+ 3 - 10
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/vo/ExpenseItemSaveReqVO.java

@@ -1,9 +1,9 @@
 package cn.iocoder.yudao.module.expense.controller.admin.expenseitem.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
 
 @Schema(description = "管理后台 - 报销费用项目信息新增/修改 Request VO")
 @Data
@@ -13,15 +13,8 @@ public class ExpenseItemSaveReqVO {
     private Long id;
 
     @Schema(description = "报销类型主键id")
-    @NotNull(message = "报销类型主键id不能为空")
     private Long expenseTypeId;
 
-    @Schema(description = "报销类型uuid")
-    private String expenseTypeUuid;
-
-    @Schema(description = "费用项目uuid")
-    private String expenseItemUuid;
-
     @Schema(description = "费用项目")
     @NotBlank(message = "费用项目名称不能为空")
     private String name;

+ 4 - 17
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypePageReqVO.java

@@ -1,13 +1,10 @@
 package cn.iocoder.yudao.module.expense.controller.admin.expensetype.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
-import org.springframework.format.annotation.DateTimeFormat;
-import java.time.LocalDateTime;
-
-import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
 
 @Schema(description = "管理后台 - 报销类型信息分页 Request VO")
 @Data
@@ -15,17 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @ToString(callSuper = true)
 public class ExpenseTypePageReqVO extends PageParam {
 
-    @Schema(description = "uuid", example = "18264")
-    private String expenseTypeUuid;
-
     @Schema(description = "报销类型", example = "芋艿")
     private String name;
 
-    @Schema(description = "备注")
-    private String remarks;
-
-    @Schema(description = "创建时间")
-    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
-    private LocalDateTime[] createTime;
-
 }

+ 3 - 7
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypeSaveReqVO.java

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.expense.controller.admin.expensetype.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import javax.validation.constraints.*;
-import cn.iocoder.yudao.module.expense.dal.dataobject.expenseitem.ExpenseItemDO;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
 
 @Schema(description = "管理后台 - 报销类型信息新增/修改 Request VO")
 @Data
@@ -13,9 +12,6 @@ public class ExpenseTypeSaveReqVO {
     @Schema(description = "主键")
     private Long id;
 
-    @Schema(description = "uuid")
-    private String expenseTypeUuid;
-
     @Schema(description = "报销类型")
     @NotBlank(message = "报销类型名称不能为空")
     private String name;

+ 0 - 4
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/dal/mysql/expenseitem/ExpenseItemMapper.java

@@ -20,11 +20,7 @@ public interface ExpenseItemMapper extends BaseMapperX<ExpenseItemDO> {
     default PageResult<ExpenseItemDO> selectPage(ExpenseItemPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<ExpenseItemDO>()
                 .eqIfPresent(ExpenseItemDO::getExpenseTypeId, reqVO.getExpenseTypeId())
-                .eqIfPresent(ExpenseItemDO::getExpenseTypeUuid, reqVO.getExpenseTypeUuid())
-                .eqIfPresent(ExpenseItemDO::getExpenseItemUuid, reqVO.getExpenseItemUuid())
                 .likeIfPresent(ExpenseItemDO::getName, reqVO.getName())
-                .eqIfPresent(ExpenseItemDO::getRemarks, reqVO.getRemarks())
-                .betweenIfPresent(ExpenseItemDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(ExpenseItemDO::getId));
     }
 

+ 2 - 7
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/dal/mysql/expensetype/ExpenseTypeMapper.java

@@ -1,13 +1,11 @@
 package cn.iocoder.yudao.module.expense.dal.mysql.expensetype;
 
-import java.util.*;
-
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.expense.controller.admin.expensetype.vo.ExpenseTypePageReqVO;
 import cn.iocoder.yudao.module.expense.dal.dataobject.expensetype.ExpenseTypeDO;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.expense.controller.admin.expensetype.vo.*;
 
 /**
  * 报销类型信息 Mapper
@@ -19,10 +17,7 @@ public interface ExpenseTypeMapper extends BaseMapperX<ExpenseTypeDO> {
 
     default PageResult<ExpenseTypeDO> selectPage(ExpenseTypePageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<ExpenseTypeDO>()
-                .eqIfPresent(ExpenseTypeDO::getExpenseTypeUuid, reqVO.getExpenseTypeUuid())
                 .likeIfPresent(ExpenseTypeDO::getName, reqVO.getName())
-                .eqIfPresent(ExpenseTypeDO::getRemarks, reqVO.getRemarks())
-                .betweenIfPresent(ExpenseTypeDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(ExpenseTypeDO::getId));
     }
 

+ 7 - 1
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expenseitem/ExpenseItemServiceImpl.java

@@ -16,9 +16,10 @@ import javax.annotation.Resource;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.module.expense.enums.ErrorCodeConstants.EXPENSE_ITEM_NOT_EXISTS;
+import static cn.iocoder.yudao.module.expense.enums.ErrorCodeConstants.*;
 
 /**
  * 报销费用项目信息 Service 实现类
@@ -34,6 +35,10 @@ public class ExpenseItemServiceImpl implements ExpenseItemService {
 
     @Override
     public Long createItem(ExpenseItemSaveReqVO createReqVO) {
+        Long expenseTypeId = createReqVO.getExpenseTypeId();
+        if (Objects.isNull(expenseTypeId)) {
+            throw exception(EXPENSE_TYPE_ID_NULL);
+        }
         // 插入
         ExpenseItemDO item = BeanUtils.toBean(createReqVO, ExpenseItemDO.class);
         item.setExpenseItemUuid(IdUtil.fastSimpleUUID());
@@ -48,6 +53,7 @@ public class ExpenseItemServiceImpl implements ExpenseItemService {
         validateItemExists(updateReqVO.getId());
         // 更新
         ExpenseItemDO updateObj = BeanUtils.toBean(updateReqVO, ExpenseItemDO.class);
+        updateObj.setExpenseTypeId(null);
         itemMapper.updateById(updateObj);
     }
 

+ 9 - 0
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expensetype/ExpenseTypeServiceImpl.java

@@ -22,6 +22,7 @@ import java.util.Collections;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.expense.enums.ErrorCodeConstants.EXPENSE_ITEM_EXISTS;
 import static cn.iocoder.yudao.module.expense.enums.ErrorCodeConstants.EXPENSE_TYPE_NOT_EXISTS;
 
 /**
@@ -70,6 +71,7 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
     public void deleteType(Long id) {
         // 校验存在
         validateTypeExists(id);
+        validateTypeItemExists(id);
         // 删除
         typeMapper.deleteById(id);
 
@@ -77,6 +79,13 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
         // deleteItemByExpenseTypeId(id);
     }
 
+    private void validateTypeItemExists(Long id) {
+        List<ExpenseItemDO> expenseItemDOList = itemMapper.selectListByExpenseTypeId(id);
+        if (CollectionUtil.isNotEmpty(expenseItemDOList)) {
+            throw exception(EXPENSE_ITEM_EXISTS);
+        }
+    }
+
     private void validateTypeExists(Long id) {
         if (typeMapper.selectById(id) == null) {
             throw exception(EXPENSE_TYPE_NOT_EXISTS);