package cn.iocoder.yudao.module.pms.convert.iotdevicetemplate;

import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.pms.controller.admin.iotdevicetemplate.vo.IotDeviceTemplateRespVO;
import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
import cn.iocoder.yudao.module.pms.dal.dataobject.iotdevicetemplate.IotDeviceTemplateDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

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

@Mapper
public interface IotDeviceTemplateConvert {

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

    default List<IotDeviceTemplateRespVO> convertList(List<IotDeviceTemplateDO> list, Map<Long, IotProductClassifyDO> productClassifyMap) {
        return CollectionUtils.convertList(list, template -> convert(template, productClassifyMap.get(template.getDeviceCategoryId())));
    }

    default IotDeviceTemplateRespVO convert(IotDeviceTemplateDO template, IotProductClassifyDO deviceCategory) {
        IotDeviceTemplateRespVO templateVO = BeanUtils.toBean(template, IotDeviceTemplateRespVO.class);
        if (deviceCategory != null) {
            templateVO.setDeviceCategoryName(deviceCategory.getName());
        }
        return templateVO;
    }

}
