package com.jeeplus.modules.sg.managementcenter.reserveManagement.mapper;

import com.jeeplus.core.persistence.BaseMapper;
import com.jeeplus.core.persistence.annotation.MyBatisMapper;
import com.jeeplus.modules.sg.managementcenter.materialinfo.entity.MaterialInfo;
import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
import com.jeeplus.modules.sg.managementcenter.reserveManagement.entity.ReserveProcess;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 储备流程 Mapper
 */
@MyBatisMapper
public interface ReserveProcessMapper extends BaseMapper<ReserveProcess> {
    /**
     * 通过procInsId查询项目定义号
     * */
    String findProjectId(ReserveProcess reserveProcess);

    String findProc(String projectReserveId);

    /**
     * 通过流程定义号查询储备项目编码
     */
    String findByProcInsId(String procInsId);

    /**
     * 通过储备项目编号查询项目是否有甲供材清册
     */
    Integer findMaterialData(String procInsId);


    /**
     * 修改项目设计单位信息
     * */
    void updateDesign(ReserveProcess reserveProcess);

    /**
     * 通过项目名称导出符合条件的数据
     */
    List<MaterialInfo> findMaterialExport(List<String> projectName);

    /**
     * 通过项目名称导出符合条件的数据
     * */
    List<MaterialInfo> findMaterialActiviti(String projectName);

    /**
     * 插入对应的项目甲供材信息
     * */
    void insertList(@Param("list") List<MaterialInfo> list);

    /**
     * 通过项目名称删除对应甲供材信息数据
     * */
    void deleteMaterial(String projectName);


    /**
     * 储备流程文件管理
     * */
    List<ReserveProcess> findUploadList(ReserveProcess reserveProcess);


    /**
     * 储备流程当前流程所有的甲供材数据
     */
    List<MaterialInfo> findMaterialList(MaterialInfo entity);

    /**
     * 储备文件管理，
     */
    List<ReserveProcess> findAllUpload(ReserveProcess reserveProcess);

    /**
     * 通过流程定义号删除流程对应信息
     * */
    void deleteAct(String projectReserveId);

    /**
     * 通过流程定义号修改项目的金额数据
     */
    void updateAmount(ReserveProcess reserveProcess);

    /**
     * 通过id查询符合条件的项目名称
     */
    List<String> findByIds(String[] ids);

    /**
     * 查询出所有的项目名称
     * */
    List<String> findAllName();


    /**
     * 通过id查询符合条件的储备项目编码
     */
    List<String> findIds(String[] ids);

    /**
     * 查询出所有的储备项目编码
     * */
    List<String> findAllId();

    /**
     * 通过项目名称查询出符合条件的附件信息
     */
    List<ReserveProcess> findReserveById(List<String> projectName);

    /**
     * 通过项目名称查询所有的项目
     * */
    List<MaterialInfo> findMaterialByName(String projectName);
}
