package com.njcn.supervision.service.user;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.bpm.pojo.param.instance.BpmProcessInstanceCancelParam;
import com.njcn.bpm.service.IBpmService;
import com.njcn.supervision.pojo.param.SensitiveUserParam;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.po.user.UserReportPO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.supervision.pojo.vo.user.UserReportVO;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * Description:
 * Date: 2024/4/25  10:07【需求编号】
 *
 * @author clam
 * @version V1.0.0
 */
public interface UserReportPOService extends IBpmService<UserReportPO> {


    String addUserReport(UserReportParam userReportParam);

    String updateUserReport(UserReportParam.UserReportUpdate userReportParam);

    boolean auditUserReport(UserReportParam.UserReportUpdate userReportUpdate);

    Page<UserReportVO> getUserReport(UserReportParam.UserReportQueryParam userReportQueryParam);

    UserReportVO getUserReportById(String id);

    Boolean removeUserReport(List<String> ids);

    UserReportVO.UserReportListVO getVOById(String id);

    List<UserReportVO> getUserReportList();


    Page<UserReportVO> getInterferenceUserPage(UserReportParam.UserReportQueryParam userReportQueryParam, Boolean allDataFlag);

    String cancelUserReport(BpmProcessInstanceCancelParam cancelReqVO);

    void updateUserStatus(String lineId, Integer userStatus);

    /**
     * 分页查询敏感及重要用户台账
     */
    Page<UserReportVO> getSensitiveUserPage(UserReportParam.UserReportQueryParam userReportQueryParam);

    void downloadSensitiveUserTemplate();

    void importSensitiveUserData(MultipartFile file, HttpServletResponse response);

    void downloadSensitiveReportTemplate();

    void importSensitiveReportData(MultipartFile file, HttpServletResponse response);

    Boolean deleteUserReport(List<String> supervisionId);

    List<UserLedgerVO> selectUserList(UserReportParam userReportParam);

    UserLedgerVO selectUserInfo(String id);

    Boolean bindUserStation(String userId,String stationId);


    Page<UserReportVO> getUserLedgerPage(UserReportParam.UserReportQueryParam userReportQueryParam);

    List<UserReportPO> getSensitiveUserByDept(SensitiveUserParam param);

    Boolean bindAssessmentId(String userReportId,String assessMentId);

    List<UserLedgerVO.AssessMent> selectUserAssessMentList(UserReportParam userReportParam);
}
