package com.xdap.self_development.service;

import com.xdap.api.moudle.user.pojo.XdapUsers;
import com.xdap.self_development.controller.request.EngineParamDetailRequest;
import com.xdap.self_development.domain.dto.EngineDeptUpdateDTO;
import com.xdap.self_development.domain.dto.EngineParamDetailDTO;
import com.xdap.self_development.domain.pojo.EngineParamDetailPojo;
import com.xdap.self_development.domain.pojo.ParameterPojo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 参数详情 服务类
 * </p>
 *
 * @author Lys111
 * @since 2025-11-13
 */
public interface EngineParamDetailService {


    Map<String, Set<String>> selectParamList(String modelID, String tcData, String userId);

    void excelImport(MultipartFile file,String modelId, String userId);

    void excelExport(HttpServletResponse response, String modelId, String userId, java.util.List<String> subsystemParts);

    List<EngineParamDetailDTO> selectValueByParam(EngineParamDetailRequest engineParamDetailRequest);

    Map<String, List<EngineParamDetailDTO>> selectValueByMoreParam(EngineParamDetailRequest engineParamDetailRequest);

    void updateParamValue(List<EngineParamDetailPojo> engineParamDetailPojos,String currentUserId);
    void updateToInsertFiledBy(List<EngineParamDetailPojo> engineParamDetailPojos, String userID);

    List<ParameterPojo> selectAllByNewVersion();

    List<ParameterPojo> selectAllAndTcByNewVersion();

    List<EngineParamDetailPojo> selectByModelNewVersion(String model);

    //根据责任人查询最新发版的参数详情
    List<EngineParamDetailPojo> selectByResId(String resId);
    //根据填写人查询最新发版的参数详情
    //根据ID查询数据
    EngineParamDetailPojo selectById(String id);


    List<Integer> selectVersionList(String modelId);

    List<XdapUsers> selectPersonoByType(String subSystem, String dept, Integer type);

    Map<String, Map<String, Set<String>>> selectParamListAndModel(String modelID, Integer parameterVersion, String userId);

    Map<String, Map<String, Set<String>>> selectParamListAndModelForFilledBy(String modelID, Integer parameterVersion, String userId);

    Map<String, Map<String, Set<String>>> selectParamListAndModelForFilledByHistory(String modelID, Integer parameterVersion, String userId);

    List<ParameterPojo> selectParamByIsUserId(List<ParameterPojo> list, String userId);

    List<EngineParamDetailPojo> selectModelParamByIsUserId(List<EngineParamDetailPojo> list, String userId);

    void updateDept(@Valid EngineDeptUpdateDTO engineDeptUpdateDTO);
}
