package com.njcn.device.userledger.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.device.pq.pojo.param.TerminalCheckParam;
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.NewUserReportVO;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import com.njcn.supervision.pojo.vo.user.UserReportVO;

import java.util.List;

/**
 * @Description:
 * @Author: wr
 * @Date: 2026/3/4 9:12
 */
public interface UserLedgerService extends IService<UserReportPO> {


    /**
     * 查询用户台账
     * @param userReportParam
     * @return
     */
    List<UserLedgerVO> selectUserList(UserReportParam userReportParam);

    /**
     * 查询用户基本详情
     * @param id
     * @return
     */
    UserLedgerVO selectUserInfo(String id);

    /**
     * 绑定用户电站信息
     * @param userId
     * @param stationId
     * @return
     */
    Boolean bindUserStation(String userId,String stationId);

    /**
     * 根据ids获取非电网侧用户信息
     * @param ids
     * @return
     */
    List<NewUserReportVO> getUserReportByIds(List<String> ids);


    /**
     * 根据部门获取敏感用户信息
     * @param param
     * @return
     */
    List<UserReportPO> getSensitiveUserByDept(SensitiveUserParam param);

    /**
     * 分页查询干扰源用户台账
     * @param userReportQueryParam
     * @return
     */
    Page<UserReportVO> getUserLedgerPage(UserReportParam.UserReportQueryParam userReportQueryParam);

    /**
     * 根据id获取用户档案录入的详细数据
     * @param id
     * @return
     */
    UserReportVO.UserReportListVO getVOById(String id);

    /**
     * 新增干扰源用户
     * @param userReportParam
     * @return
     */
    String addUserReport(UserReportParam userReportParam);

    /**
     * 干扰源接入功能删除流程
     * @param supervisionId
     * @return
     */
    Boolean deleteUserReport(List<String> supervisionId);

    /**
     * 根据id获取用户档案录入数据
     * @param id
     * @return
     */
    UserReportVO getUserReportById(String id);


    Boolean userCheckUpload(TerminalCheckParam terminalCheckParam);
}
