package com.sckw.contract.service;

import java.util.Map;

import com.github.pagehelper.PageInfo;
import com.sckw.contract.api.model.dto.req.LogisticsScoreDetailFeignDto;
import com.sckw.contract.model.dto.req.*;
import com.sckw.contract.model.entity.KwcContractLogisticsScoreDetail;
import com.sckw.contract.model.vo.req.LogisticListReq;
import com.sckw.contract.model.vo.res.LogisticsScoreDetailResVo;
import com.sckw.contract.model.vo.res.LogisticsScoreResVo;
import com.sckw.system.api.model.dto.res.EntCacheResDto;

/**
 * 物流企业评分Service接口
 * 
 * @author tangyishan
 * @date 2025-12-05
 */
public interface IKwcContractLogisticsScoreService 
{

    /**
     * 查询供应商企业对应的物流企业评分列表带待审核评分
     * @param query 查询参数
     * @return 物流企业评分集合
     */
    PageInfo<LogisticsScoreResVo> selectLogisticsScoreWithPendingSocreList(LogisticsScoreQueryDto query);


    /**
     * 查询物流企业评分明细列表
     *
     * @param detailReqDto 物流企业评分明细
     * @return 物流企业评分明细集合
     */
    PageInfo<LogisticsScoreDetailResVo> selectKwcContractLogisticsScoreDetailList(LogisticsScoreDetailQueryDto detailReqDto);


    /**
     * 查询物流企业待审评分明细
     *
     * @param scoreId 物流企业评分id
     * @param providerEntId 供应商企业id
     * @return 物流企业评分明细集合
     */
    LogisticsScoreDetailResVo selectLogisticsPendingScoreDetail(Long scoreId, Long providerEntId);

    /**
     * 初始化物流企业评分
     * @param baseInfo
     */
    void initLogisticsScore(LogisticListReq.TradeBaseInfo baseInfo);

    /**
     * 初始化物流企业评分明细
     * @param detailDto
     */
    KwcContractLogisticsScoreDetail initLogisticsScoreDetail(LogisticsScoreDetailAddDto detailDto);


    /**
     * 审批物流企业评分明细
     *
     * @param approvalDto 审批参数
     * @param providerEntId 供应商企业id
     * @return 结果
     */
    void approvalLogisticsScoreDetail(LogisticsScoreApprovalDto approvalDto, Long providerEntId);


    /**
     * 用户修改物流企业评分
     *
     * @param detailDto 物流企业评分明细
     * @return 结果
     */
    boolean insertLogisticsScoreDetailByUser(LogisticsScoreDetailAddDto detailDto,Long providerEntId);


    /**
     * 系统修改物流企业评分
     * @param detailDto
     * @return
     */
    boolean updateLogisticsScoreBySystem(LogisticsScoreDetailFeignDto detailDto);

    /**
     * 重置物流企业评分
     * @param scoreId
     * @param entId
     */
    void resetLogisticsScore(Long scoreId, Long entId);
}
