package com.xisc.pm.infra.repository.impl;

import com.xisc.pm.domain.entity.PmPdPlate;
import com.xisc.pm.domain.entity.PmPdPlateTra;
import com.xisc.pm.domain.repository.PmPdPlateTraRepository;
import com.xisc.pm.infra.mapper.PmPdPlateTraMapper;
import com.xisc.pm.infra.util.BeanUtils;
import org.apache.commons.collections.CollectionUtils;
import org.hzero.mybatis.base.impl.BaseRepositoryImpl;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 组板钢板表(PmPdPlateTra)资源库
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-11-26 11:34:43
 */
@Component
public class PmPdPlateTraRepositoryImpl extends BaseRepositoryImpl<PmPdPlateTra> implements PmPdPlateTraRepository {
    @Resource
    private PmPdPlateTraMapper pmPdPlateTraMapper;

    @Override
    public List<PmPdPlateTra> selectList(PmPdPlateTra pmPdPlateTra) {
        return pmPdPlateTraMapper.selectList(pmPdPlateTra);
    }

    @Override
    public PmPdPlateTra selectByPrimary(Long traId) {
        PmPdPlateTra pmPdPlateTra = new PmPdPlateTra();
        pmPdPlateTra.setTraId(traId);
        List<PmPdPlateTra> pmPdPlateTras = pmPdPlateTraMapper.selectList(pmPdPlateTra);
        if (CollectionUtils.isEmpty(pmPdPlateTras)) {
            return null;
        }
        return pmPdPlateTras.get(0);
    }

    @Override
    public List<PmPdPlateTra> buildPmPdPlateTraList(List<PmPdPlate> pmPdPlateList, String operationType, Date operationTime, String operationUser) {
        List<PmPdPlateTra> insertPmPdPlateTraList = new ArrayList<>();
        pmPdPlateList.forEach(item -> {
            PmPdPlateTra pmPdPlateTra = new PmPdPlateTra();
            BeanUtils.copy(item, pmPdPlateTra);
            pmPdPlateTra.setOperationType(operationType);
            pmPdPlateTra.setOperationTime(operationTime);
            pmPdPlateTra.setOperationUser(operationUser);
            insertPmPdPlateTraList.add(pmPdPlateTra);
        });
        return insertPmPdPlateTraList;
    }
}

