package com.securitycontrol.system.base.service;

import com.securitycontrol.common.core.web.domain.AjaxResult;
import com.securitycontrol.entity.system.base.dto.GxPlanDto;
import com.securitycontrol.entity.system.base.dto.ProDto;
import com.securitycontrol.entity.system.base.dto.ProGxPlanDto;
import com.securitycontrol.entity.system.base.vo.GxPlanVo;
import com.securitycontrol.entity.system.base.vo.ProVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author：cwchen
 * @date：2024-03-11-10:10
 * @version：1.0
 * @description：工程管理-业务层
 */
public interface IProService {

    /**
     * 获取工程列表
     *
     * @param dto
     * @return List<UserVo>
     * @description 获取工程列表
     * @author cwchen
     * @date 2024/3/11 10:59
     */
    List<ProVo> getProLists(ProDto dto);

    /**
     * 新增/修改工程
     *
     * @param files
     * @param types
     * @param params
     * @return AjaxResult
     * @description 新增/修改工程
     * @author cwchen
     * @date 2024/3/11 16:31
     */
    AjaxResult addOrUpdatePro(MultipartFile[] files, int[] types, String params);

    /**
     * 工程详情
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/11 14:26
     */
    AjaxResult getProById(ProDto dto);

    /**
     * 删除工程
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/11 14:38
     */
    AjaxResult delPro(ProDto dto);

    /**
     * 删除工程工序计划
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/11 14:47
     */
    AjaxResult delProGxPlan(ProGxPlanDto dto);

    /**
     * 工程图片/平面图预览
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/12 13:11
     */
    AjaxResult viewProFile(ProDto dto);

    /**
     * 工程信息导入
     *
     * @param file
     * @param request
     * @param response
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/13 9:10
     */
    AjaxResult importProData(MultipartFile file, HttpServletRequest request, HttpServletResponse response);

    /**
     * 工程完工
     *
     * @param vo
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/13 15:23
     */
    AjaxResult editProStatus(ProVo vo);

    /**
     * 获取工序列表
     *
     * @param dto
     * @return List<GxPlanVo>
     * @description
     * @author cwchen
     * @date 2024/3/13 15:53
     */
    List<GxPlanVo> getGxPlanLists(GxPlanDto dto);

    /**
     * 新增/修改 工序计划
     *
     * @param vo
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/13 16:07
     */
    AjaxResult addOrUpdateGxPlan(GxPlanVo vo);

    /**
     * 工序计划详情
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/13 16:25
     */
    AjaxResult getGxPlanById(GxPlanDto dto);

    /**
     * 删除工序计划
     *
     * @param dto
     * @return AjaxResult
     * @description
     * @author cwchen
     * @date 2024/3/13 16:31
     */
    AjaxResult delGxPlanById(GxPlanDto dto);
}
