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

import com.xisc.pm.domain.entity.PmPdPlateInfo;
import com.xisc.pm.domain.entity.PmPdPlateInfoTra;
import com.xisc.pm.domain.repository.PmPdPlateInfoTraRepository;
import com.xisc.pm.infra.mapper.PmPdPlateInfoTraMapper;
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;

/**
 * 钢板信息表履历表(PmPdPlateInfoTra)资源库
 *
 * @author 纪文桃 wentao.ji01@hand-china.com
 * @since 2024-11-26 11:35:13
 */
@Component
public class PmPdPlateInfoTraRepositoryImpl extends BaseRepositoryImpl<PmPdPlateInfoTra> implements PmPdPlateInfoTraRepository {
    @Resource
    private PmPdPlateInfoTraMapper pmPdPlateInfoTraMapper;

    @Override
    public List<PmPdPlateInfoTra> selectList(PmPdPlateInfoTra pmPdPlateInfoTra) {
        return pmPdPlateInfoTraMapper.selectList(pmPdPlateInfoTra);
    }

    @Override
    public PmPdPlateInfoTra selectByPrimary(Long traId) {
        PmPdPlateInfoTra pmPdPlateInfoTra = new PmPdPlateInfoTra();
        pmPdPlateInfoTra.setTraId(traId);
        List<PmPdPlateInfoTra> pmPdPlateInfoTras = pmPdPlateInfoTraMapper.selectList(pmPdPlateInfoTra);
        if (CollectionUtils.isEmpty(pmPdPlateInfoTras)) {
            return null;
        }
        return pmPdPlateInfoTras.get(0);
    }

    @Override
    public List<PmPdPlateInfoTra> buildPmPdPlateInfoTraList(List<PmPdPlateInfo> pdPlateInfoList, String operationType, Date operationTime, String operationUser) {
        List<PmPdPlateInfoTra> insertPmPdPlateInfoTraList = new ArrayList<>();
        pdPlateInfoList.forEach(item -> {
            PmPdPlateInfoTra pmPdPlateInfoTra = new PmPdPlateInfoTra();
            BeanUtils.copy(item, pmPdPlateInfoTra);
            pmPdPlateInfoTra.setPmPdPlateInfoId(item.getPmPdPlateInfoId());
            pmPdPlateInfoTra.setOperationType(operationType);
            pmPdPlateInfoTra.setOperationTime(operationTime);
            pmPdPlateInfoTra.setOperationUser(operationUser);
            insertPmPdPlateInfoTraList.add(pmPdPlateInfoTra);
        });
        return insertPmPdPlateInfoTraList;
    }
}

