package com.mortals.xhx.protocol.complex.matter.service;


import com.mortals.framework.common.Rest;
import com.mortals.xhx.protocol.complex.IComplexService;
import com.mortals.xhx.protocol.complex.matter.model.req.AcceptReq;
import com.mortals.xhx.protocol.complex.matter.model.req.DeviceLoginReq;
import com.mortals.xhx.protocol.complex.matter.model.req.ImplementationReq;
import com.mortals.xhx.protocol.complex.matter.model.rsp.AcceptRspInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.DictInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.LoginRspInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.MatterListInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.implement.ImplementDetailInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.material.MaterialInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.matter.MatterWorkInfo;
import com.mortals.xhx.protocol.complex.matter.model.rsp.work.WorkInfo;

import java.util.List;

/**
 * 综合窗口业务处理类
 *
 * @author: zxfei
 * @date: 2023/10/30 14:52
 */
public interface IComplexMatterService extends IComplexService {

    /**
     * 自助设备登录
     *
     * @param deviceLoginReq
     * @return
     */
    Rest<LoginRspInfo> deviceLogin(DeviceLoginReq deviceLoginReq);

    /**
     * 附件上传
     *
     * @param bytes
     * @param fileName
     * @return
     */
    Rest<String> uploadFile(String deviceLogo, byte[] bytes, String fileName);


    /**
     * 自助设备接件
     *
     * @param acceptReq
     * @return
     */
    Rest<List<AcceptRspInfo>> accept(String deviceLogo, AcceptReq acceptReq);

    /**
     * 查询可受理事项
     *
     * @param implementationReq
     * @return
     */
    Rest<MatterListInfo> findMatters(String deviceLogo, ImplementationReq implementationReq);


    /**
     * 查询事项所需材料根据事项与情形id
     *
     * @param deviceLogo
     * @param implementationReq
     * @return
     */
    Rest<List<MaterialInfo>> getMaterialByEventAndSituation(String deviceLogo, ImplementationReq implementationReq);


    /**
     * 查询事项所需材料
     *
     * @param deviceLogo
     * @param eventId
     * @return
     */
    Rest<List<MaterialInfo>> getMaterialByEvent(String deviceLogo, String eventId);


    /**
     * 查询办理事项情形
     *
     * @param eventIds
     * @return
     */
    Rest<List<MatterWorkInfo>> doWorkMatterSearch(String deviceLogo, String eventIds);


    /**
     * 获取办件要素
     *
     * @param deviceLogo
     * @param eventIdList
     * @return
     */
    Rest<WorkInfo> getWorkMatter(String deviceLogo, List<String> eventIdList);


    /**
     * 通过id获取事项详细
     *
     * @param deviceLogo
     * @param eventId
     * @return
     */
    Rest<ImplementDetailInfo> getImplement(String deviceLogo, String eventId);


    /**
     * 查询字典
     *
     * @param deviceLogo
     * @param dict
     * @return
     */
    Rest<List<DictInfo>> queryDict(String deviceLogo, String dict);

}
