package com.ruoyi.cs.service.impl;

import java.util.List;
import java.util.stream.Collectors;

import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.cs.domain.CsResApplySoftwareInfo;
import com.ruoyi.cs.domain.dto.CsResApplySoftwareItemAddDTO;
import com.ruoyi.cs.domain.vo.CsResApplySoftwareItemVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cs.mapper.CsResApplySoftwareItemMapper;
import com.ruoyi.cs.domain.CsResApplySoftwareItem;
import com.ruoyi.cs.service.ICsResApplySoftwareItemService;

/**
 * 资源申请软件版本Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-04-29
 */
@Service
public class CsResApplySoftwareItemServiceImpl implements ICsResApplySoftwareItemService 
{
    @Autowired
    private CsResApplySoftwareItemMapper csResApplySoftwareItemMapper;

    /**
     * 查询资源申请软件版本
     * 
     * @param itemId 资源申请软件版本主键
     * @return 资源申请软件版本
     */
    @Override
    public CsResApplySoftwareItem selectCsResApplySoftwareItemByItemId(String itemId)
    {
        return csResApplySoftwareItemMapper.selectCsResApplySoftwareItemByItemId(itemId);
    }

    /**
     * 查询资源申请软件版本列表
     * 
     * @param csResApplySoftwareItem 资源申请软件版本
     * @return 资源申请软件版本
     */
    @Override
    public List<CsResApplySoftwareItem> selectCsResApplySoftwareItemList(CsResApplySoftwareItem csResApplySoftwareItem)
    {
        return csResApplySoftwareItemMapper.selectCsResApplySoftwareItemList(csResApplySoftwareItem);
    }

    /**
     * 新增资源申请软件版本
     * 
     * @param csResApplySoftwareItem 资源申请软件版本
     * @return 结果
     */
    @Override
    public int batchInsertCsResApplySoftwareItem(List<CsResApplySoftwareItemAddDTO>  csResApplySoftwareItem, CsResApplySoftwareInfo softwareInfo)
    {
        List<CsResApplySoftwareItem> list = csResApplySoftwareItem.stream()
                .map(dto ->{
                    CsResApplySoftwareItem item = new CsResApplySoftwareItem();
                    item = BeanUtil.toBean(dto,CsResApplySoftwareItem.class);
                    item.setItemId(IdUtils.fastSimpleUUID());
                    item.setApplyId(softwareInfo.getApplyId());
                    item.setApplySoftwareId(softwareInfo.getApplySoftwareId());
                    item.setCreateTime(DateUtils.getNowDate());
                    item.setDelFlag("0");
                    return item;
                }).collect(Collectors.toList());
        return csResApplySoftwareItemMapper.batchInsertCsResApplySoftwareItem(list);
    }

    /**
     * 修改资源申请软件版本
     * 
     * @param csResApplySoftwareItem 资源申请软件版本
     * @return 结果
     */
    @Override
    public int updateCsResApplySoftwareItem(CsResApplySoftwareItem csResApplySoftwareItem)
    {
        csResApplySoftwareItem.setUpdateTime(DateUtils.getNowDate());
        return csResApplySoftwareItemMapper.updateCsResApplySoftwareItem(csResApplySoftwareItem);
    }

    /**
     * 批量删除资源申请软件版本
     * 
     * @param itemIds 需要删除的资源申请软件版本主键
     * @return 结果
     */
    @Override
    public int deleteCsResApplySoftwareItemByItemIds(String[] itemIds)
    {
        return csResApplySoftwareItemMapper.deleteCsResApplySoftwareItemByItemIds(itemIds);
    }

    /**
     * 删除资源申请软件版本信息
     * 
     * @param itemId 资源申请软件版本主键
     * @return 结果
     */
    @Override
    public int deleteCsResApplySoftwareItemByItemId(String itemId)
    {
        return csResApplySoftwareItemMapper.deleteCsResApplySoftwareItemByItemId(itemId);
    }


    /**
     * 软件详情列表
     * @param applySoftwareId 软件信息ID
     * @return
     */
    @Override
    public List<CsResApplySoftwareItemVO> selectItemVoList(String applySoftwareId) {
        return csResApplySoftwareItemMapper.selectVoList(applySoftwareId);
    }

    /**
     * 删除申请单的 软件详情列表
     * @param applyId 申请单ID
     * @return
     */
    @Override
    public int deleteItemListByApplyId(String applyId) {
        return csResApplySoftwareItemMapper.deleteApplySoftwareItemByApplyId(applyId);
    }
}
