Browse Source

1、报销费用项目子表显示名称

dongpo 7 months ago
parent
commit
c8cc715a5b

+ 31 - 12
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/expense/OaExpenseServiceImpl.java

@@ -5,12 +5,13 @@ import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo.OaExpensePageReqVO;
-import cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo.OaExpenseSaveReqVO;
-import cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo.OaExpensePageReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo.OaExpenseRespVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.oa.expense.vo.OaExpenseSaveReqVO;
 import cn.iocoder.yudao.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO;
@@ -24,6 +25,8 @@ import cn.iocoder.yudao.module.bpm.enums.DictDataConstants;
 import cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants;
 import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmConstants;
 import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService;
+import cn.iocoder.yudao.module.expense.api.expenseitem.ExpenseItemApi;
+import cn.iocoder.yudao.module.expense.api.expenseitem.dto.ExpenseItemRespDTO;
 import cn.iocoder.yudao.module.expense.api.expensetype.ExpenseTypeApi;
 import cn.iocoder.yudao.module.expense.api.expensetype.dto.ExpenseTypeRespDTO;
 import cn.iocoder.yudao.module.infra.api.file.FileApi;
@@ -38,23 +41,15 @@ import org.apache.commons.lang3.StringUtils;
 import org.flowable.engine.TaskService;
 import org.flowable.task.api.Task;
 import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.expense.OaExpenseDO;
-import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.expense.OaExpenseObjDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-
-import cn.iocoder.yudao.module.bpm.dal.mysql.oa.expense.OaExpenseMapper;
-import cn.iocoder.yudao.module.bpm.dal.mysql.oa.expense.OaExpenseObjMapper;
-
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
 
@@ -101,6 +96,9 @@ public class OaExpenseServiceImpl implements OaExpenseService {
     @Resource
     private ExpenseTypeApi expenseTypeApi;
 
+    @Resource
+    private ExpenseItemApi expenseItemApi;
+
     @Override
     @Transactional
     public Long stagingOaExpense(OaExpenseSaveReqVO stagingReqVO) {
@@ -565,8 +563,29 @@ public class OaExpenseServiceImpl implements OaExpenseService {
                 oaExpenseRespVO.setDeptName(dept.getName());
             }
         }
+
+        // 报销类型名称
+        Long expenseTypeId = oaExpenseDO.getExpenseTypeId();
+        if (expenseTypeId != null) {
+            ExpenseTypeRespDTO expenseType = expenseTypeApi.getExpenseType(expenseTypeId);
+            if (expenseType != null) {
+                oaExpenseRespVO.setExpenseTypeName(expenseType.getName());
+            }
+        }
+
         // 子表数据
         List<OaExpenseObjDO> oaExpenseObjDOS = getOaExpenseObjListByExpenseId(oaExpenseDO.getId());
+        if (CollectionUtil.isNotEmpty(oaExpenseObjDOS)) {
+            Set<Long> expenseItemIdSet = oaExpenseObjDOS.stream().map(OaExpenseObjDO::getExpenseItemId).collect(Collectors.toSet());
+            List<ExpenseItemRespDTO> expenseItemList = expenseItemApi.getExpenseItemList(expenseItemIdSet);
+            if (CollectionUtil.isNotEmpty(expenseItemList)) {
+                Map<Long, ExpenseItemRespDTO> expenseItemRespDTOMap = CollectionUtils.convertMap(expenseItemList, ExpenseItemRespDTO::getId);
+                oaExpenseObjDOS.forEach(oaExpenseObjDO -> {
+                    ExpenseItemRespDTO expenseItemRespDTO = expenseItemRespDTOMap.get(oaExpenseObjDO.getExpenseItemId());
+                    oaExpenseObjDO.setExpenseItemName(expenseItemRespDTO.getName());
+                });
+            }
+        }
         oaExpenseRespVO.setOaExpenseObjs(oaExpenseObjDOS);
 
         String procInstId = oaExpenseDO.getProcInstId();

+ 17 - 0
yudao-module-finance/yudao-module-expense-api/src/main/java/cn/iocoder/yudao/module/expense/api/expenseitem/ExpenseItemApi.java

@@ -0,0 +1,17 @@
+package cn.iocoder.yudao.module.expense.api.expenseitem;
+
+import cn.iocoder.yudao.module.expense.api.expenseitem.dto.ExpenseItemRespDTO;
+
+import java.util.Collection;
+import java.util.List;
+
+public interface ExpenseItemApi {
+
+    /**
+     * 根据id集合获取费用项目列表
+     *
+     * @param ids id集合
+     * @return 费用项目列表
+     */
+    List<ExpenseItemRespDTO> getExpenseItemList(Collection<Long> ids);
+}

+ 32 - 0
yudao-module-finance/yudao-module-expense-api/src/main/java/cn/iocoder/yudao/module/expense/api/expenseitem/dto/ExpenseItemRespDTO.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.expense.api.expenseitem.dto;
+
+import lombok.Data;
+
+@Data
+public class ExpenseItemRespDTO {
+
+    /**
+     * 主键
+     */
+    private Long id;
+    /**
+     * 报销类型主键id
+     */
+    private Long expenseTypeId;
+    /**
+     * 报销类型uuid
+     */
+    private String expenseTypeUuid;
+    /**
+     * 费用项目uuid
+     */
+    private String expenseItemUuid;
+    /**
+     * 费用项目
+     */
+    private String name;
+    /**
+     * 备注
+     */
+    private String remarks;
+}

+ 8 - 0
yudao-module-finance/yudao-module-expense-api/src/main/java/cn/iocoder/yudao/module/expense/api/expensetype/ExpenseTypeApi.java

@@ -14,4 +14,12 @@ public interface ExpenseTypeApi {
      * @return 报销类型列表
      */
     List<ExpenseTypeRespDTO> getExpenseTypeList(Collection<Long> ids);
+
+    /**
+     * 根据id查询报销类型信息
+     *
+     * @param id 主键
+     * @return 报销类型信息
+     */
+    ExpenseTypeRespDTO getExpenseType(Long id);
 }

+ 23 - 0
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/api/expenseitem/ExpenseItemApiImpl.java

@@ -0,0 +1,23 @@
+package cn.iocoder.yudao.module.expense.api.expenseitem;
+
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.expense.api.expenseitem.dto.ExpenseItemRespDTO;
+import cn.iocoder.yudao.module.expense.dal.dataobject.expenseitem.ExpenseItemDO;
+import cn.iocoder.yudao.module.expense.service.expenseitem.ExpenseItemService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collection;
+import java.util.List;
+
+@Service
+public class ExpenseItemApiImpl implements ExpenseItemApi{
+    @Resource
+    private ExpenseItemService expenseItemService;
+
+    @Override
+    public List<ExpenseItemRespDTO> getExpenseItemList(Collection<Long> ids) {
+        List<ExpenseItemDO> expenseItemDOList = expenseItemService.getExpenseItemList(ids);
+        return BeanUtils.toBean(expenseItemDOList, ExpenseItemRespDTO.class);
+    }
+}

+ 7 - 0
yudao-module-finance/yudao-module-expense-biz/src/main/java/cn/iocoder/yudao/module/expense/api/expensetype/ExpenseTypeApiImpl.java

@@ -21,4 +21,11 @@ public class ExpenseTypeApiImpl implements ExpenseTypeApi {
         List<ExpenseTypeDO> expenseTypeDOList = expenseTypeService.getExpenseTypeList(ids);
         return BeanUtils.toBean(expenseTypeDOList, ExpenseTypeRespDTO.class);
     }
+
+    @Override
+    public ExpenseTypeRespDTO getExpenseType(Long id) {
+        ExpenseTypeDO expenseType = expenseTypeService.getType(id);
+        return BeanUtils.toBean(expenseType, ExpenseTypeRespDTO.class);
+    }
+
 }

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

@@ -52,4 +52,6 @@ public interface ExpenseItemService {
      */
     PageResult<ExpenseItemDO> getItemPage(ExpenseItemPageReqVO pageReqVO);
 
+    List<ExpenseItemDO> getExpenseItemList(Collection<Long> ids);
+
 }

+ 13 - 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.collection.CollectionUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -12,6 +13,10 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
+import java.util.Collection;
+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_NOT_EXISTS;
 
@@ -70,4 +75,12 @@ public class ExpenseItemServiceImpl implements ExpenseItemService {
         return itemMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<ExpenseItemDO> getExpenseItemList(Collection<Long> ids) {
+        if (CollectionUtil.isEmpty(ids)) {
+            return Collections.emptyList();
+        }
+        return itemMapper.selectBatchIds(ids);
+    }
+
 }