package com.huimv.receive.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.huimv.receive.common.utils.Result;
import com.huimv.receive.entity.BillIsolate;
import com.huimv.receive.entity.BillPersonnelAdmission;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.Map;

/**
 * <p>
 * 入场申请 服务类
 * </p>
 *
 * @author author
 * @since 2023-07-21
 */
public interface IBillPersonnelAdmissionService extends IService<BillPersonnelAdmission> {
    Result listPrc(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result listById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result editStatus(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;

    Result listIsolate(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result isolateById(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result commitIsolate(HttpServletRequest httpServletRequest, BillIsolate billIsolate) throws IOException;

    Result editIsolate(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;

    Result listClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result listByIdClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result editClean(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;

    Result editDry(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException;

    Result addAdmission(HttpServletRequest httpServletRequest, String admissionType, String vistitType, String userName
            , String phone, String workName, String papersType, String papersCode, MultipartFile imgUrl, String img,
                        String vistitDate, String vistitReson, String destId, String destName, String farmId,
                        String carNum, String source, String goods, String departureId, String departureName,
                        MultipartFile picture1, MultipartFile picture2, MultipartFile picture3
            ,  Integer midId, String midName) throws IOException;

    Result addAdmissionFeed(HttpServletRequest httpServletRequest, String admissionType, String vistitType,
                            String userName, String phone, String workName, String papersType, String papersCode,
                            MultipartFile imgUrl, String img, String vistitDate, String vistitReson, String destId,
                            String destName, String farmId, String carNum, String source, String goods, String departureId,
                            String departureName, String resource, MultipartFile feedImgUrl, Integer cleanId,
                            String cleanName, String remark, Integer midId, String midName) throws IOException;

    Result listPersonalAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result listAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result handleAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws IOException;

    Result listAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result getDetail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //车辆闸机和人脸门禁
    Result listDoor(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //后台入场申请报表
    Result countAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //提交申请排名
    Result listTop(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //入场申请数量曲线
    Result admissionTail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //详细数据查询
    Result selectList(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    //导出
    void printAdmission(HttpServletResponse httpServletRequest, Map<String, String> paramsMap) throws Exception;

    //大屏
    Result jingJiAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result allCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);

    Result uploadImgAndAdmissin(MultipartFile imgUrl, Integer id) throws IOException;


    //站点人员帮忙提交入场申请
    Result helpAddAdmission(HttpServletRequest httpServletRequest, MultipartFile userImgUrl, String admissionType, String vistitType, String userName,
                            String phone, String workName, String papersType, String papersCode, MultipartFile imgUrl,
                            String img, String vistitDate, String vistitReson, String destId, String destName,
                            String farmId, String carNum, String source, String goods, String departureId, String departureName,
                            MultipartFile picture1, MultipartFile picture2, MultipartFile picture3
            , Integer midId, String midName) throws IOException;

    //统一审批多个人的入场申请
    Result handleAdmissionBatch(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws IOException;


    //入场申请撤回
    Result removeAdmission(HttpServletRequest httpServletRequest, Map<String, String> paramsMap);
}
