mitao
2 天以前 291a72bf35e2d39b816abc0ebf085cfa9da3ee06
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationAssetServiceImpl.java
@@ -1,20 +1,26 @@
package com.ruoyi.system.service.impl;
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.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.dto.asset.OaApprovalApplicationAssetReceiveDTO;
import com.ruoyi.system.emums.ApprovalStatusEnum;
import com.ruoyi.system.emums.ApprovalTypeEnum;
import com.ruoyi.system.emums.AssetOperateTypeEnum;
import com.ruoyi.system.mapper.OaApprovalApplicationAssetMapper;
import com.ruoyi.system.model.OaApprovalApplicationAsset;
import com.ruoyi.system.model.OaApprovalApplicationAssetItem;
import com.ruoyi.system.model.OaApprovalApplications;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.OaApprovalApplicationAssetPageQuery;
import com.ruoyi.system.service.OaApprovalApplicationAssetItemService;
import com.ruoyi.system.service.OaApprovalApplicationAssetService;
import com.ruoyi.system.service.OaApprovalApplicationsService;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
import com.ruoyi.system.service.OaApprovalTodoService;
import com.ruoyi.system.vo.asset.OaApprovalApplicationAssetPageVO;
import com.ruoyi.system.vo.asset.OaApprovalApplicationAssetDetailVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -44,32 +50,33 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void submitReceive(OaApprovalApplicationAssetReceiveDTO dto) {
        if (CollectionUtils.isEmpty(dto.getAssetItems())) {
            throw new ServiceException("领用资产列表不能为空");
    public void submitReceiveBorrow(OaApprovalApplicationAssetReceiveDTO dto) {
        if (CollectionUtils.isEmpty(dto.getAssetMainIds())) {
            throw new ServiceException("领用资产ID列表不能为空");
        }
        // 1. 构建并保存审批主表
        OaApprovalApplications applications = buildOaApprovalApplications(dto);
        // 2. 获取流程首节点,设置当前节点,并保存
        OaApprovalFlowNode firstFlowNode = getFirstFlowNode(ApprovalTypeEnum.GRAB.getCode());
        OaApprovalFlowNode firstFlowNode = getFirstFlowNode(dto.getType().equals(AssetOperateTypeEnum.RECEIVE.getCode()) ?
                ApprovalTypeEnum.GRAB.getCode() : ApprovalTypeEnum.BORROW.getCode());
        applications.setCurrentFlowNodeId(firstFlowNode.getId());
        oaApprovalApplicationsService.save(applications);
        // 3. 创建待办
        oaApprovalTodoService.createApprovalTodos(applications.getId(), applications.getApplicationCode(), firstFlowNode, dto.getDeptId());
        // 4. 保存领用明细
        // 4. 保存领用/借用明细
        OaApprovalApplicationAsset detail = buildOaApprovalApplicationAsset(dto, applications.getId());
        this.save(detail);
        // 5. 保存关联的资产项
        List<OaApprovalApplicationAssetItem> items = dto.getAssetItems().stream()
        List<OaApprovalApplicationAssetItem> items = dto.getAssetMainIds().stream()
                .map(i -> {
                    OaApprovalApplicationAssetItem item = new OaApprovalApplicationAssetItem();
                    item.setApprovalApplicationId(applications.getId());
                    item.setAssetMainId(i.getAssetMainId());
                    item.setAssetMainId(i);
                    return item;
                })
                .collect(Collectors.toList());
@@ -110,8 +117,7 @@
        asset.setTitle(dto.getTitle());
        asset.setAssetTypeId(dto.getAssetTypeId());
        asset.setOperateTime(dto.getOperateTime());
        asset.setExpectReturnDate(dto.getExpectReturnDate());
        asset.setType(Boolean.FALSE); // 0-领用
        asset.setType(AssetOperateTypeEnum.RECEIVE.getCode());
        return asset;
    }
@@ -130,4 +136,38 @@
        String sequenceStr = String.format("%03d", sequence);
        return prefix + sequenceStr;
    }
    @Override
    public IPage<OaApprovalApplicationAssetPageVO> getReceivePageList(OaApprovalApplicationAssetPageQuery pageQuery) {
        Page<OaApprovalApplicationAssetPageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
        pageQuery.setType(0);//领用
        return this.baseMapper.getPageByType(page, pageQuery);
    }
    @Override
    public OaApprovalApplicationAssetDetailVO getDetail(Integer id) {
        OaApprovalApplications app = oaApprovalApplicationsService.getById(id);
        if (app == null) {
            throw new ServiceException("审批主记录不存在");
        }
        OaApprovalApplicationAsset detail = this.lambdaQuery().eq(OaApprovalApplicationAsset::getApprovalApplicationId, app.getId()).one();
        if (detail == null) {
            throw new ServiceException("记录不存在");
        }
        List<OaApprovalApplicationAssetItem> items = oaApprovalApplicationAssetItemService.lambdaQuery()
                .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, app.getId())
                .list();
        OaApprovalApplicationAssetDetailVO vo = new OaApprovalApplicationAssetDetailVO();
        vo.setItems(items);
        return vo;
    }
    @Override
    public IPage<OaApprovalApplicationAssetPageVO> getBorrowPageList(OaApprovalApplicationAssetPageQuery pageQuery) {
        Page<OaApprovalApplicationAssetPageVO> page = new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize());
        pageQuery.setType(1);
        return this.baseMapper.getPageByType(page, pageQuery);
    }
}