package cn.ey.biz.module.system.convert.category;

import cn.ey.biz.common.pojo.PageResult;
import cn.ey.biz.module.system.api.category.dto.CategoryDataV2RespDTO;
import cn.ey.biz.module.system.controller.admin.category.vo.*;
import cn.ey.biz.module.system.dal.dataobject.category.CategoryDataDO;
import org.mapstruct.Builder;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import org.springframework.beans.BeanUtils;

import java.util.List;

/**
 * 字典分类数据 Convert
 *
 */
@Mapper(builder = @Builder(disableBuilder = true))
public interface CategoryDataConvert {

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

    CategoryDataDO convert(CategoryDataCreateReqVO bean);

    CategoryDataDO convert(CategoryDataUpdateReqVO bean);

    CategoryDataRespVO convert(CategoryDataDO bean);

    List<CategoryDataRespVO> convertList(List<CategoryDataDO> list);

    List<CategoryDataSimpleRespVO> convertLists(List<CategoryDataSimpleRespVO> list);

    PageResult<CategoryDataRespVO> convertPage(PageResult<CategoryDataRespVO> page);

    List<CategoryDataExcelVO> convertList02(List<CategoryDataDO> list);

    // V2

    List<CategoryDataV2RespDTO> converV2DTOList(List<CategoryDataDO> list);

    default CategoryDataRespVO convertV2RespDto2RespVo(CategoryDataV2RespDTO categoryDataV2RespDTO) {
        if (categoryDataV2RespDTO == null) {
            return null;
        }
        CategoryDataRespVO categoryDataRespVO = new CategoryDataRespVO();
        BeanUtils.copyProperties(categoryDataV2RespDTO, categoryDataRespVO);
        categoryDataRespVO.setId(categoryDataV2RespDTO.getDataId());
        categoryDataRespVO.setCategoryCode(categoryDataV2RespDTO.getCategoryCode());
        categoryDataRespVO.setPid(categoryDataV2RespDTO.getDataPid());
        categoryDataRespVO.setCode(categoryDataV2RespDTO.getDataCode());
        categoryDataRespVO.setName(categoryDataV2RespDTO.getDataName());
        categoryDataRespVO.setStatus(categoryDataV2RespDTO.getDataStatus());
        categoryDataRespVO.setRemark(categoryDataV2RespDTO.getDataRemark());
        return categoryDataRespVO;

    }

}
