package com.huashe.park.core.service;

import java.util.List;

import javax.servlet.http.HttpServletResponse;

import com.huashe.park.domain.dto.cons.ConsUnitMachine;
import com.huashe.park.domain.entity.ConsUnitInfo;
import org.springframework.web.multipart.MultipartFile;

/**
 * 施工单元Service接口
 * 
 * @author ruoyi
 * @date 2025-02-14
 */
public interface IConsUnitInfoService {
    /**
     * 查询施工单元
     * 
     * @param id 施工单元主键
     * @return 施工单元
     */
    ConsUnitMachine selectConsUnitInfoById(Long id);

    ConsUnitInfo selectConsUnitInfoByByteId(String byteId);

    /**
     * 查询施工单元列表
     * 
     * @param consUnitInfo 施工单元
     * @return 施工单元集合
     */
    List<ConsUnitInfo> selectConsUnitInfoList(ConsUnitInfo consUnitInfo);

    /**
     * 新增施工单元
     * 
     * @param consUnitInfo 施工单元
     * @return 结果
     */
    int insertConsUnitInfo(ConsUnitMachine consUnitInfo);

    int insertConsUnitInfo(ConsUnitInfo consUnitInfo);

    /**
     * 修改施工单元
     * 
     * @param consUnitInfo 施工单元
     * @return 结果
     */
    int updateConsUnitInfo(ConsUnitMachine consUnitInfo);

    void assignMachine(ConsUnitMachine consUnitInfo);

    /**
     * 批量删除施工单元
     * 
     * @param ids 需要删除的施工单元主键集合
     * @return 结果
     */
    int deleteConsUnitInfoByIds(Long[] ids);

    boolean hasChildById(Long id);

    /**
     * 删除施工单元信息
     * 
     * @param id 施工单元主键
     * @return 结果
     */
    int deleteConsUnitInfoById(Long id);

    int deleteConsUnitInfoByProjectId(Long projId);

    void importConsUnitHole(ConsUnitInfo consUnitHole);

    void exportConsUnitHole(ConsUnitInfo consUnitHole, HttpServletResponse response);

    void exportConsUnitRes(ConsUnitInfo consUnitHole, HttpServletResponse response);

    void upload(MultipartFile file);

    List<ConsUnitInfo> machineAssignedUnit(Long machineId);

}
