package com.cloudroam.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cloudroam.bo.meeting.MeetingDateUserDaily;
import com.cloudroam.bo.meeting.MeetingUserDaily;
import com.cloudroam.bo.ProjectDailyBO;
import com.cloudroam.bo.ProjectStatisticsBO;
import com.cloudroam.bo.businessDaily.BusinessDailyBO;
import com.cloudroam.dto.meeting.MeetingPageDTO;
import com.cloudroam.dto.projectDaily.*;
import com.cloudroam.dto.projectTask.QueryProjectTaskHoursDTO;
import com.cloudroam.dto.projectTask.QueryTaskDailyDTO;
import com.cloudroam.model.ProjectDailyDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloudroam.model.UserDO;
import com.cloudroam.vo.projectDaily.ProjectDailyBoardVO;
import com.cloudroam.vo.projectDaily.ProjectDailyHourVO;
import com.cloudroam.vo.projectDaily.ProjectDailyStatisticsVO;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
*
* 服务类
*
*
* @author generator@TaoJie
* @since 2023-08-09
*/
public interface ProjectDailyService extends IService {
boolean createProjectDaily(CreateOrUpdateProjectDailyDTO validator);
IPage getProjectDailyPage(QueryProjectDailyDTO dto);
boolean removeByIdLogic(String id, Date dailyDate);
List getAllUsers(QueryProjectDailyDTO dto);
ProjectDailyBoardVO getProjectDailyBoardList(QueryProjectDailyBoardDTO dto);
/**
* 有前一天未提交的日志
* @return userId
*/
List getYesterdayUncommittedProjectDailys(String userId);
/**
* 当天没有填写计划
* @return
*/
List getTodayNoDailyPeoples();
/**
* 有前一天未确认的日志
* @return userId
*/
List getYesterdayUnconfirmedProjectDailys(String userId);
List getYesterdayUncommittedProjectDailysPeoples();
List getYesterdayUncomfirmedProjectDailysPeoples();
boolean createProjectDailyBatch(List dailyDOList);
List getActualHoursStatistic(String id);
boolean commitBatch(CommitBatchDTO dto);
List getProjectDailyList(QueryProjectDailyDTO dto);
boolean confirmBatch(ConfirmBatchDTO projectDailyDTO);
boolean unConfirmBatch(ConfirmBatchDTO projectDailyDTO);
boolean unCommitProjectDaily(Date dailyDate, String userId);
List getToadyUncomfirmedActualHoursProjectDailysPeoples(String dailyDate);
List getTodayUnConfirmedActualHours(String createUserId, String dailyDay);
boolean supplementaryProjectDailyBatch(List list);
boolean createProjectDailyWithInit(CreateOrUpdateProjectDailyDTO validator);
boolean updateProjectDailyWithValidator(CreateOrUpdateProjectDailyDTO validator);
boolean updateProjectDailyWithInit(CreateOrUpdateProjectDailyDTO validator);
boolean createProjectDailyBatchWithInit(CreateBatchDTO dto);
boolean updateActualHours(CreateOrUpdateProjectDailyDTO validator);
List getUnComfirmedPeoples(String dailyDate);
List getUncommitDailyList(ConfirmBatchDTO dto);
List getWaitConfirmDailyList(ConfirmBatchDTO dto);
List getTodayUncommittedProjectDailysPeoples();
List getTodayUncommittedProjectDailys(String createUserId);
boolean commit(String id);
Double getDailyDatePlanTime(WorkTimeDTO dto);
Double getDailyDateActualTime(WorkTimeDTO dto);
ProjectDailyHourVO existsHours(DailyHourDTO dto);
List getByDailyDate(String dailyDate);
boolean updateActualHoursBatch(List dtoList);
List getActualHourStatistics(QueryProjectHourStatisticsDTO dto);
List getEvaluateiActualHourStatistics(QueryProjectHourStatisticsDTO dto);
List getUserActualHourStatistics(QueryProjectHourStatisticsDTO dto);
List getRoleHourStatistics(QueryProjectHourStatisticsDTO dto);
List getProjectDailybyUserList(MeetingPageDTO dto);
List getProjectBusinessDailybyMeetingId(MeetingPageDTO dto);
List getProjectDailyMeetingbyUserList(MeetingPageDTO dto);
List getDateDailyList(MeetingPageDTO dto);
List getDailyDateByMeetingId(MeetingPageDTO dto);
/**
* 批量任务日志创建
* @param dto
*/
void createProjectDailyBatchWithTask(CreateBatchTaskDTO dto);
QueryTaskDailyDTO getProjectDailyTaskInfo(String taskId, String userId);
int getProjectTaskDailyUnCommited(String taskId, String userId);
boolean existsProjectDaily(String taskId, Integer userId, Date dailyDate);
void checkProjectDailyTaskPlanHours(String taskId);
QueryProjectTaskHoursDTO getCommitedActualHoursStatisticByTaskId(String taskId);
}