package com.ruoyi.zdsz.service;

import com.ruoyi.zdsz.domain.ZEngineeringInfo;
import com.ruoyi.zdsz.domain.bo.ZEngineeringMaterialBo;
import com.ruoyi.zdsz.domain.bo.ZEngineeringNodeBo;
import com.ruoyi.zdsz.domain.vo.ZEngineeringInfoVo;
import com.ruoyi.zdsz.domain.bo.ZEngineeringInfoBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 工程详情Service接口
 *
 * @author ruoyi
 * @date 2023-12-27
 */
public interface IZEngineeringInfoService {

    /**
     * 查询工程详情
     */
    ZEngineeringInfoVo queryById(String id);

    /**
     * 查询工程详情(节点使用)
     * @param id
     * @return
     */
    List<ZEngineeringInfoBo> query(ZEngineeringNodeBo bo);
    List<ZEngineeringInfoBo> queryInsert(ZEngineeringNodeBo bo);

    /**
     * 查询工程详情列表
     */
    TableDataInfo<ZEngineeringInfoVo> queryPageList(ZEngineeringInfoBo bo, PageQuery pageQuery);

    /**
     * 查询工程详情列表
     */
    List<ZEngineeringInfoVo> queryList(ZEngineeringInfoBo bo);

    /**
     * 新增工程详情
     */
    Boolean insertByBo(ZEngineeringInfoBo bo);

    /**
     *  新增工程详情(节点使用)
     * @param bo
     * @return ZEngineeringInfo
     */
    ZEngineeringInfo insert(ZEngineeringInfoBo bo);
    /**
     * 修改工程详情
     */
    Boolean updateByBo(ZEngineeringInfoBo bo);

    /**
     * 修改工程详情(节点使用）
     * @param bo
     * @return
     */
    Boolean update(ZEngineeringInfoBo bo);


    /**
     * 校验并批量删除工程详情信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
    Boolean delete(ZEngineeringNodeBo bo);
    Boolean deleteById(ZEngineeringInfoBo bo);
    Boolean deleteByIdNoDelFiles(ZEngineeringInfoBo bo);
    List<ZEngineeringMaterialBo> getzEngineeringMaterialBoList(ZEngineeringNodeBo bo);

}
