Browse Source

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

dongpo 7 months ago
parent
commit
0967fbfa9d
11 changed files with 92 additions and 34 deletions
  1. 4 0
      yudao-module-finance/yudao-module-expense-biz/pom.xml
  2. 6 6
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/ExpenseItemController.java
  3. 6 5
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expenseitem/vo/ExpenseItemSaveReqVO.java
  4. 15 8
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/ExpenseTypeController.java
  5. 4 4
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypeRespVO.java
  6. 6 5
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/vo/ExpenseTypeSaveReqVO.java
  7. 24 0
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/framework/config/ExpenseWebConfiguration.java
  8. 2 0
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expenseitem/ExpenseItemServiceImpl.java
  9. 2 0
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expensetype/ExpenseTypeService.java
  10. 16 6
      yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/service/expensetype/ExpenseTypeServiceImpl.java
  11. 7 0
      yudao-server/pom.xml

+ 4 - 0
yudao-module-finance/yudao-module-expense-biz/pom.xml

@@ -42,6 +42,10 @@
             <groupId>cn.iocoder.boot</groupId>
             <artifactId>yudao-spring-boot-starter-biz-tenant</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-biz-ip</artifactId>
+        </dependency>
 
         <!-- Web 相关 -->
         <dependency>

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

@@ -38,14 +38,14 @@ public class ExpenseItemController {
 
     @PostMapping("/create")
     @Operation(summary = "创建报销费用项目信息")
-    @PreAuthorize("@ss.hasPermission('expense:item:create')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:create')")
     public CommonResult<Long> createItem(@Valid @RequestBody ExpenseItemSaveReqVO createReqVO) {
         return success(itemService.createItem(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新报销费用项目信息")
-    @PreAuthorize("@ss.hasPermission('expense:item:update')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:update')")
     public CommonResult<Boolean> updateItem(@Valid @RequestBody ExpenseItemSaveReqVO updateReqVO) {
         itemService.updateItem(updateReqVO);
         return success(true);
@@ -54,7 +54,7 @@ public class ExpenseItemController {
     @DeleteMapping("/delete")
     @Operation(summary = "删除报销费用项目信息")
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('expense:item:delete')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:delete')")
     public CommonResult<Boolean> deleteItem(@RequestParam("id") Long id) {
         itemService.deleteItem(id);
         return success(true);
@@ -63,7 +63,7 @@ public class ExpenseItemController {
     @GetMapping("/get")
     @Operation(summary = "获得报销费用项目信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('expense:item:query')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:query')")
     public CommonResult<ExpenseItemRespVO> getItem(@RequestParam("id") Long id) {
         ExpenseItemDO item = itemService.getItem(id);
         return success(BeanUtils.toBean(item, ExpenseItemRespVO.class));
@@ -71,7 +71,7 @@ public class ExpenseItemController {
 
     @GetMapping("/page")
     @Operation(summary = "获得报销费用项目信息分页")
-    @PreAuthorize("@ss.hasPermission('expense:item:query')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:query')")
     public CommonResult<PageResult<ExpenseItemRespVO>> getItemPage(@Valid ExpenseItemPageReqVO pageReqVO) {
         PageResult<ExpenseItemDO> pageResult = itemService.getItemPage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, ExpenseItemRespVO.class));
@@ -79,7 +79,7 @@ public class ExpenseItemController {
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出报销费用项目信息 Excel")
-    @PreAuthorize("@ss.hasPermission('expense:item:export')")
+    // @PreAuthorize("@ss.hasPermission('expense:item:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportItemExcel(@Valid ExpenseItemPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {

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

@@ -9,20 +9,21 @@ import javax.validation.constraints.*;
 @Data
 public class ExpenseItemSaveReqVO {
 
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4075")
+    @Schema(description = "主键")
     private Long id;
 
-    @Schema(description = "报销类型主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2556")
+    @Schema(description = "报销类型主键id")
     @NotNull(message = "报销类型主键id不能为空")
     private Long expenseTypeId;
 
-    @Schema(description = "报销类型uuid", example = "14367")
+    @Schema(description = "报销类型uuid")
     private String expenseTypeUuid;
 
-    @Schema(description = "费用项目uuid", example = "10133")
+    @Schema(description = "费用项目uuid")
     private String expenseItemUuid;
 
-    @Schema(description = "费用项目", example = "芋艿")
+    @Schema(description = "费用项目")
+    @NotBlank(message = "费用项目名称不能为空")
     private String name;
 
     @Schema(description = "备注")

+ 15 - 8
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/controller/admin/expensetype/ExpenseTypeController.java

@@ -15,7 +15,6 @@ import cn.iocoder.yudao.module.expense.service.expensetype.ExpenseTypeService;
 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.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -39,14 +38,14 @@ public class ExpenseTypeController {
 
     @PostMapping("/create")
     @Operation(summary = "创建报销类型信息")
-    @PreAuthorize("@ss.hasPermission('expense:type:create')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:create')")
     public CommonResult<Long> createType(@Valid @RequestBody ExpenseTypeSaveReqVO createReqVO) {
         return success(typeService.createType(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新报销类型信息")
-    @PreAuthorize("@ss.hasPermission('expense:type:update')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:update')")
     public CommonResult<Boolean> updateType(@Valid @RequestBody ExpenseTypeSaveReqVO updateReqVO) {
         typeService.updateType(updateReqVO);
         return success(true);
@@ -55,7 +54,7 @@ public class ExpenseTypeController {
     @DeleteMapping("/delete")
     @Operation(summary = "删除报销类型信息")
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('expense:type:delete')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:delete')")
     public CommonResult<Boolean> deleteType(@RequestParam("id") Long id) {
         typeService.deleteType(id);
         return success(true);
@@ -64,7 +63,7 @@ public class ExpenseTypeController {
     @GetMapping("/get")
     @Operation(summary = "获得报销类型信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('expense:type:query')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:query')")
     public CommonResult<ExpenseTypeRespVO> getType(@RequestParam("id") Long id) {
         ExpenseTypeDO type = typeService.getType(id);
         return success(BeanUtils.toBean(type, ExpenseTypeRespVO.class));
@@ -72,15 +71,23 @@ public class ExpenseTypeController {
 
     @GetMapping("/page")
     @Operation(summary = "获得报销类型信息分页")
-    @PreAuthorize("@ss.hasPermission('expense:type:query')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:query')")
     public CommonResult<PageResult<ExpenseTypeRespVO>> getTypePage(@Valid ExpenseTypePageReqVO pageReqVO) {
         PageResult<ExpenseTypeDO> pageResult = typeService.getTypePage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, ExpenseTypeRespVO.class));
     }
 
+    @GetMapping("/list")
+    @Operation(summary = "获得报销类型信息列表")
+    // @PreAuthorize("@ss.hasPermission('expense:type:query')")
+    public CommonResult<List<ExpenseTypeRespVO>> getTypeList() {
+        List<ExpenseTypeDO> expenseTypeDOList = typeService.getTypeList();
+        return success(BeanUtils.toBean(expenseTypeDOList, ExpenseTypeRespVO.class), "获取报销类型列表成功");
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出报销类型信息 Excel")
-    @PreAuthorize("@ss.hasPermission('expense:type:export')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportTypeExcel(@Valid ExpenseTypePageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
@@ -96,7 +103,7 @@ public class ExpenseTypeController {
     @GetMapping("/item/list-by-expense-type-id")
     @Operation(summary = "获得报销费用项目信息列表")
     @Parameter(name = "expenseTypeId", description = "报销类型主键id")
-    @PreAuthorize("@ss.hasPermission('expense:type:query')")
+    // @PreAuthorize("@ss.hasPermission('expense:type:query')")
     public CommonResult<List<ExpenseItemDO>> getItemListByExpenseTypeId(@RequestParam("expenseTypeId") Long expenseTypeId) {
         return success(typeService.getItemListByExpenseTypeId(expenseTypeId));
     }

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

@@ -13,15 +13,15 @@ import com.alibaba.excel.annotation.*;
 @ExcelIgnoreUnannotated
 public class ExpenseTypeRespVO {
 
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21030")
+    @Schema(description = "主键")
     @ExcelProperty("主键")
     private Long id;
 
-    @Schema(description = "uuid", example = "18264")
+    @Schema(description = "uuid")
     @ExcelProperty("uuid")
     private String expenseTypeUuid;
 
-    @Schema(description = "报销类型", example = "芋艿")
+    @Schema(description = "报销类型")
     @ExcelProperty("报销类型")
     private String name;
 
@@ -29,7 +29,7 @@ public class ExpenseTypeRespVO {
     @ExcelProperty("备注")
     private String remarks;
 
-    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Schema(description = "创建时间")
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 

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

@@ -10,19 +10,20 @@ import cn.iocoder.yudao.module.expense.dal.dataobject.expenseitem.ExpenseItemDO;
 @Data
 public class ExpenseTypeSaveReqVO {
 
-    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21030")
+    @Schema(description = "主键")
     private Long id;
 
-    @Schema(description = "uuid", example = "18264")
+    @Schema(description = "uuid")
     private String expenseTypeUuid;
 
-    @Schema(description = "报销类型", example = "芋艿")
+    @Schema(description = "报销类型")
+    @NotBlank(message = "报销类型名称不能为空")
     private String name;
 
     @Schema(description = "备注")
     private String remarks;
 
-    @Schema(description = "报销费用项目信息列表")
-    private List<ExpenseItemDO> items;
+    // @Schema(description = "报销费用项目信息列表")
+    // private List<ExpenseItemDO> items;
 
 }

+ 24 - 0
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/framework/config/ExpenseWebConfiguration.java

@@ -0,0 +1,24 @@
+package cn.iocoder.yudao.module.expense.framework.config;
+
+import cn.iocoder.yudao.framework.swagger.config.YudaoSwaggerAutoConfiguration;
+import org.springdoc.core.GroupedOpenApi;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * expense 模块的 web 组件的 Configuration
+ *
+ * @author 芋道源码
+ */
+@Configuration(proxyBeanMethods = false)
+public class ExpenseWebConfiguration {
+
+    /**
+     * expense 模块的 API 分组
+     */
+    @Bean
+    public GroupedOpenApi expenseGroupedOpenApi() {
+        return YudaoSwaggerAutoConfiguration.buildGroupedOpenApi("expense");
+    }
+
+}

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.expense.service.expenseitem;
 
+import cn.hutool.core.util.IdUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.expense.controller.admin.expenseitem.vo.ExpenseItemPageReqVO;
@@ -30,6 +31,7 @@ public class ExpenseItemServiceImpl implements ExpenseItemService {
     public Long createItem(ExpenseItemSaveReqVO createReqVO) {
         // 插入
         ExpenseItemDO item = BeanUtils.toBean(createReqVO, ExpenseItemDO.class);
+        item.setExpenseItemUuid(IdUtil.fastSimpleUUID());
         itemMapper.insert(item);
         // 返回
         return item.getId();

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

@@ -54,6 +54,8 @@ public interface ExpenseTypeService {
      */
     PageResult<ExpenseTypeDO> getTypePage(ExpenseTypePageReqVO pageReqVO);
 
+    List<ExpenseTypeDO> getTypeList();
+
     // ==================== 子表(报销费用项目信息) ====================
 
     /**

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

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.expense.service.expensetype;
 
+import cn.hutool.core.util.IdUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.expense.controller.admin.expensetype.vo.ExpenseTypePageReqVO;
@@ -8,6 +9,7 @@ import cn.iocoder.yudao.module.expense.dal.dataobject.expenseitem.ExpenseItemDO;
 import cn.iocoder.yudao.module.expense.dal.dataobject.expensetype.ExpenseTypeDO;
 import cn.iocoder.yudao.module.expense.dal.mysql.expenseitem.ExpenseItemMapper;
 import cn.iocoder.yudao.module.expense.dal.mysql.expensetype.ExpenseTypeMapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
@@ -37,10 +39,11 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
     public Long createType(ExpenseTypeSaveReqVO createReqVO) {
         // 插入
         ExpenseTypeDO type = BeanUtils.toBean(createReqVO, ExpenseTypeDO.class);
+        type.setExpenseTypeUuid(IdUtil.fastSimpleUUID());
         typeMapper.insert(type);
 
-        // 插入子表
-        createItemList(type.getId(), createReqVO.getItems());
+        // // 插入子表
+        // createItemList(type.getId(), createReqVO.getItems());
         // 返回
         return type.getId();
     }
@@ -54,8 +57,8 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
         ExpenseTypeDO updateObj = BeanUtils.toBean(updateReqVO, ExpenseTypeDO.class);
         typeMapper.updateById(updateObj);
 
-        // 更新子表
-        updateItemList(updateReqVO.getId(), updateReqVO.getItems());
+        // // 更新子表
+        // updateItemList(updateReqVO.getId(), updateReqVO.getItems());
     }
 
     @Override
@@ -66,8 +69,8 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
         // 删除
         typeMapper.deleteById(id);
 
-        // 删除子表
-        deleteItemByExpenseTypeId(id);
+        // // 删除子表
+        // deleteItemByExpenseTypeId(id);
     }
 
     private void validateTypeExists(Long id) {
@@ -86,6 +89,13 @@ public class ExpenseTypeServiceImpl implements ExpenseTypeService {
         return typeMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<ExpenseTypeDO> getTypeList() {
+        LambdaQueryWrapper<ExpenseTypeDO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.orderByAsc(ExpenseTypeDO::getId);
+        return typeMapper.selectList(lambdaQueryWrapper);
+    }
+
     // ==================== 子表(报销费用项目信息) ====================
 
     @Override

+ 7 - 0
yudao-server/pom.xml

@@ -101,6 +101,13 @@
 <!--            <version>${revision}</version>-->
 <!--        </dependency>-->
 
+        <!-- 财务管理模块 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-expense-biz</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
         <!-- 人事 相关模块。默认注释,保证编译速度 -->
         <dependency>
             <groupId>cn.iocoder.boot</groupId>