package com.yhy.module.core.dal.mysql.workbench;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yhy.module.core.dal.dataobject.workbench.WbUnitInfoDO;
import org.apache.ibatis.annotations.Mapper;

/**
 * 单位工程信息 Mapper
 *
 * @author yhy
 */
@Mapper
public interface WbUnitInfoMapper extends BaseMapperX<WbUnitInfoDO> {

    /**
     * 根据编制树节点ID查询
     */
    default WbUnitInfoDO selectByCompileTreeId(Long compileTreeId) {
        return selectOne(new LambdaQueryWrapperX<WbUnitInfoDO>()
                .eq(WbUnitInfoDO::getCompileTreeId, compileTreeId));
    }

    /**
     * 根据编制树节点ID删除
     */
    default int deleteByCompileTreeId(Long compileTreeId) {
        return delete(new LambdaQueryWrapperX<WbUnitInfoDO>()
                .eq(WbUnitInfoDO::getCompileTreeId, compileTreeId));
    }

    /**
     * 根据项目ID和工程编号查询（用于唯一性校验）
     */
    default WbUnitInfoDO selectByProjectIdAndUnitCode(Long projectId, String unitCode) {
        // 需要通过编制树关联查询，这里简化处理
        return null;
    }

    /**
     * 根据编制树节点ID列表查询
     */
    default java.util.List<WbUnitInfoDO> selectListByCompileTreeIds(java.util.List<Long> compileTreeIds) {
        if (compileTreeIds == null || compileTreeIds.isEmpty()) {
            return java.util.Collections.emptyList();
        }
        return selectList(new LambdaQueryWrapperX<WbUnitInfoDO>()
                .in(WbUnitInfoDO::getCompileTreeId, compileTreeIds));
    }

    /**
     * 根据库类别查询编制树节点ID列表
     */
    default java.util.List<Long> selectCompileTreeIdsByLibraryType(String libraryType) {
        java.util.List<WbUnitInfoDO> list = selectList(new LambdaQueryWrapperX<WbUnitInfoDO>()
                .eq(WbUnitInfoDO::getLibraryType, libraryType));
        return list.stream()
                .map(WbUnitInfoDO::getCompileTreeId)
                .collect(java.util.stream.Collectors.toList());
    }
}
