package cn.iocoder.yudao.module.bpm.convert.oa;

import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementCreateReqVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.BpmOAReimbursementRespVO;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.Reimbursement;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.ReimbursementDTO;
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;
import java.util.Map;

/**
 * 报销申请 Convert
 *
 * @author yj
 */
@Mapper
public interface BpmOAReimbursementConvert {

    BpmOAReimbursementConvert INSTANCE = Mappers.getMapper(BpmOAReimbursementConvert.class);

    BpmOAReimbursementDO convert(BpmOAReimbursementCreateReqVO bean);

    default List<ReimbursementDTO> convertList(List<ReimbursementDTO> list, Map<Long, DeptRespDTO> deptMap) {

        return CollectionUtils.convertList(list, reimbursement -> convert(reimbursement, deptMap.get(reimbursement.getDeptId())));
    }

    default ReimbursementDTO convert(ReimbursementDTO reimbursement, DeptRespDTO dept) {

        if (dept != null) {
            reimbursement.setDeptName(dept.getName());
        }

        return reimbursement;
    }

}
