package com.skr.mdm.api.system.service;

import com.skr.mdm.bean.qo.BaseQueryQO;
import com.skr.mdm.bean.qo.StrategyIssuedQO;
import com.skr.mdm.bean.qo.StrategyUserQO;
import com.skr.mdm.bean.qo.system.ClientUpgradeAddUpdateQO;
import com.skr.mdm.bean.qo.system.ClientUpgradeRepushQO;
import com.skr.mdm.dto.LoginAdminDTO;
import com.skr.mdm.result.ResponseResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface ClientUpgradeService {

    /**
     * 客户端升级列表
     * @param baseQueryQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult listClientUpgrade(BaseQueryQO baseQueryQO, LoginAdminDTO loginAdminDTO);

    /**
     * 客户端升级作用人列表
     * @param strategyUserQO
     * @return
     */
    ResponseResult listClientUpgradeUser(StrategyUserQO strategyUserQO);


    /**
     * 客户端升级统计
     * @param clientUpgradeId
     * @return
     */
    ResponseResult statisticsClientUpgrade(Integer clientUpgradeId);

    /**
     * 解析客户端APP
     * @param file
     * @param loginAdminDTO
     * @return
     */
    ResponseResult analyticApp(MultipartFile file, LoginAdminDTO loginAdminDTO);

    /**
     * 新增
     * @param clientUpgradeAddUpdateQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult addUpgradeApp(ClientUpgradeAddUpdateQO clientUpgradeAddUpdateQO, LoginAdminDTO loginAdminDTO);

    /**
     * 编辑
     * @param clientUpgradeAddUpdateQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult updateUpgradeApp(ClientUpgradeAddUpdateQO clientUpgradeAddUpdateQO, LoginAdminDTO loginAdminDTO);

    /**
     * 删除
     * @param clientUpgradeIdList
     * @param loginAdminDTO
     * @return
     */
    ResponseResult deleteUpgradeApp(List<Integer> clientUpgradeIdList, LoginAdminDTO loginAdminDTO);

    /**
     * 作用人删除
     * @param clientUpgradeId
     * @param equipmentIdList
     * @param loginAdminDTO
     * @return
     */
    ResponseResult deleteUpgradeAppUser(Integer clientUpgradeId, List<Integer> equipmentIdList, LoginAdminDTO loginAdminDTO);

    /**
     * 推送
     * @param strategyIssuedQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult pushUpgradeApp(StrategyIssuedQO strategyIssuedQO, LoginAdminDTO loginAdminDTO);

    /**
     * 作用人重新推送
     * @param clientUpgradeRepushQO
     * @param loginAdminDTO
     * @return
     */
    ResponseResult repushUpgradeApp(ClientUpgradeRepushQO clientUpgradeRepushQO, LoginAdminDTO loginAdminDTO);

    /**
     * 暂停/恢复
     * @param clientUpgradeId
     * @param isPause
     * @param loginAdminDTO
     * @return
     */
    ResponseResult pauseUpgrade(Integer clientUpgradeId, Integer isPause, LoginAdminDTO loginAdminDTO);
}
