package com.ruoyi.ccdi.project.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.project.domain.dto.CcdiFundGraphEdgeDetailQueryDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiFundGraphManualEdgeSaveDTO;
import com.ruoyi.ccdi.project.domain.dto.CcdiFundGraphQueryDTO;
import com.ruoyi.ccdi.project.domain.vo.CcdiFundGraphEdgeVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiFundGraphNodeVO;
import com.ruoyi.ccdi.project.domain.vo.CcdiFundGraphStatementVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 资金流图谱Mapper
 */
@Mapper
public interface CcdiFundGraphMapper {

    List<CcdiFundGraphNodeVO> selectFundGraphSubjects(@Param("query") CcdiFundGraphQueryDTO query);

    List<CcdiFundGraphNodeVO> selectFundGraphSubjectsByExactKeyword(@Param("query") CcdiFundGraphQueryDTO query);

    List<CcdiFundGraphNodeVO> selectFundGraphSubjectsByName(@Param("query") CcdiFundGraphQueryDTO query);

    List<CcdiFundGraphEdgeVO> selectFundGraphEdges(@Param("query") CcdiFundGraphQueryDTO query);

    List<CcdiFundGraphEdgeVO> selectFundGraphManualEdges(@Param("query") CcdiFundGraphQueryDTO query);

    int countSubjectByObjectKey(@Param("objectKey") String objectKey);

    int insertManualSubject(
        @Param("objectKey") String objectKey,
        @Param("idNo") String idNo,
        @Param("name") String name
    );

    int insertManualEdge(
        @Param("objectKey") String objectKey,
        @Param("dto") CcdiFundGraphManualEdgeSaveDTO dto,
        @Param("operator") String operator
    );

    Page<CcdiFundGraphStatementVO> selectFundGraphEdgeDetails(
        Page<CcdiFundGraphStatementVO> page,
        @Param("query") CcdiFundGraphEdgeDetailQueryDTO query
    );
}
