/**
 * Copyright 2019 DH
 * All right reserved.
 * 项目名称: 大恒泰山系统
 * 创建日期:2022/8/22
 */
package org.springblade.modules.business.check.order.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.business.check.order.dto.CheckOrderInfoDTO;
import org.springblade.modules.business.check.order.entity.CheckOrderInfoEntity;
import org.springblade.modules.business.check.order.vo.CheckOrderCountVO;
import org.springblade.modules.business.check.order.vo.CheckOrderInfoVO;
import org.springblade.modules.business.warning.entity.RtuWarningInfoEntity;


import java.util.List;

/***
 * Date:2022/8/22
 * Title:文件所属模块（必须填写）
 * Description：对本文件的详细描述，原则上不能少于30字
 * @author dylan
 * @version 1.0
 * Remark：认为有必要的其他信息
 */
public interface IRtuCheckOrderService extends BaseService<CheckOrderInfoEntity> {
	/**
	 * 列表，不分页
	 * @param checkOrderInfoDTO
	 * @return
	 */
	List<CheckOrderInfoVO> allOrders( CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 自定义分页
	 * @param page
	 * @param checkOrderInfoDTO
	 * @return
	 */
	IPage<CheckOrderInfoVO> selectPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 分页，按异常类型查询
	 * @param page
	 * @param checkOrderInfoDTO
	 * @return
	 */
	IPage<CheckOrderInfoVO> selectWarnPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 我的任务
	 * @param page
	 * @param checkOrderInfoDTO
	 * @return
	 */
	IPage<CheckOrderInfoVO> selectMyPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 待办任务
	 * @param checkOrderInfoDTO
	 * @return
	 */
	List<CheckOrderInfoVO> selectTodoList( CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 查询确认超时维修任务
	 * @param page
	 * @param checkOrderInfoDTO
	 * @return
	 */
	IPage<CheckOrderInfoVO> selectConfirmDelayPage(IPage<CheckOrderInfoVO> page, CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 未确认任务数量
	 * @param checkOrderInfoDTO
	 * @return
	 */
	Long unconfirmOrderCount(CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 未确认任务列表
	 * @param checkOrderInfoDTO
	 * @return
	 */
	List<CheckOrderInfoVO> unconfirmOrderList(CheckOrderInfoDTO checkOrderInfoDTO);


	/**
	 * 更新工单状态
	 * @param orderInfoEntity
	 * @return
	 */
	boolean updateOrderStatus(CheckOrderInfoEntity orderInfoEntity);

	/**
	 *
	 * @param checkOrderInfoDTO
	 * @return
	 */
	List<CheckOrderCountVO> orderReportCount( CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 任务总数
	 * @param checkOrderInfoDTO
	 * @return
	 */
	Long orderCount(CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 未关闭任务总数
	 * @param checkOrderInfoDTO
	 * @return
	 */
	Long unCloseOrderCount(CheckOrderInfoDTO checkOrderInfoDTO);


	/**
	 * 关闭维修任务
	 * @param checkOrderInfoDTO
	 * @return
	 */
	boolean closeOrder(CheckOrderInfoDTO checkOrderInfoDTO);

	/**
	 * 创建或更新维修任务
	 * @param rtuWarningInfoEntity
	 * @return
	 */
	boolean createOrUpdateOrder(RtuWarningInfoEntity rtuWarningInfoEntity);
}
