package cn.iocoder.yudao.module.project.service.impl;

import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.project.entity.RepairWares;
import cn.iocoder.yudao.module.project.mapper.RepairWaresMapper;
import cn.iocoder.yudao.module.project.service.RepairWaresService;
import cn.iocoder.yudao.module.project.vo.RepairWaresPageReqVO;
import cn.iocoder.yudao.module.project.vo.RepairWaresRespVO;
import cn.iocoder.yudao.module.project.vo.RepairWaresSaveReqVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * 配件库 Service 实现类
 *
 * @author pqz
 */
@Service
@Validated
public class RepairWaresServiceImpl extends ServiceImpl<RepairWaresMapper, RepairWares> implements RepairWaresService {

    @Resource
    private RepairWaresMapper waresMapper;


    /**
     * 保存配件库
     *
     * @param saveReqVO RepairWaresSaveReqVO实体
     * @author PQZ
     * @date 9:33 2024/9/18
     **/
    @Override
    public RepairWares saveWares(RepairWaresSaveReqVO saveReqVO) {
        RepairWares repairWares = BeanUtils.toBean(saveReqVO, RepairWares.class);
        saveOrUpdate(repairWares);
        return getById(repairWares.getId());
    }

    /**
     * @param id 配件id
     * @author PQZ
     * @date 9:37 2024/9/18
     **/
    @Override
    public void deleteWares(String id) {
        // 删除
        waresMapper.deleteById(id);
    }

    /**
     * 根据id获取配件信息
     *
     * @param id id
     * @return cn.iocoder.yudao.module.project.vo.RepairWaresRespVO
     * @author PQZ
     * @date 10:52 2024/9/18
     **/
    @Override
    public RepairWaresRespVO getWares(String id) {
        //基本信息
        RepairWares repairWares = getById(id);
        RepairWaresRespVO result = BeanUtils.toBean(repairWares, RepairWaresRespVO.class);
        //关联子公司转换
        if (StringUtils.isNotBlank(result.getCorpId())) {
            result.setCorpIds(Arrays.asList(result.getCorpId().split(",")));
        }
        return result;
    }

    /**
     * 分页获取配件库
     *
     * @param pageReqVO RepairWaresPageReqVO实体
     * @param page      分页信息
     * @return com.baomidou.mybatisplus.core.metadata.IPage<cn.iocoder.yudao.module.project.vo.RepairWaresRespVO>
     * @author PQZ
     * @date 10:53 2024/9/18
     **/
    @Override
    public IPage<RepairWaresRespVO> getWaresPage(RepairWaresPageReqVO pageReqVO, Page<RepairWaresRespVO> page) {
        return waresMapper.queryListPage(pageReqVO, page);
    }

    /**
     * 根据名称获取最新的数据
     *
     * @author 小李
     * @date 18:03 2024/9/25
     **/
    @Override
    public RepairWaresRespVO getWaresByName(String name){
        return waresMapper.getWaresByName(name);
    }

    /**
     * 查询所有有配件的分配
     *
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.String>>
     * @author vinjor-M
     * @date 10:53 2024/10/22
     **/
    @Override
    public List<Map<String, String>> getAllTypeList() {
        return waresMapper.selectAllType();
    }

    /**
     * 通过id查询集合
     *
     * @param idList waresId集合
     * @return java.util.List<cn.iocoder.yudao.module.project.entity.RepairWares>
     * @author PQZ
     * @date 14:56 2024/10/24
     **/
    @Override
    public List<RepairWares> listByIds(List<String> idList) {
        return baseMapper.selectBatchIds(idList);
    }

}