package com.gkhy.assess.system.service;
import com.gkhy.assess.common.api.CommonPage;
import com.gkhy.assess.system.domain.AssProject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gkhy.assess.system.domain.vo.AssProjectVo;
import com.gkhy.assess.system.domain.vo.ProjectStaticVO;
import com.gkhy.assess.system.enums.ReportProgressEnum;
/**
*
* 项目表 服务类
*
*
* @author kzy
* @since 2023-12-11 14:16:18
*/
public interface AssProjectService extends IService {
/**
* 根据条件分页查询项目列表
* @param project
* @return
*/
CommonPage projectList(AssProject project);
/**
* 根据id获取项目
* @param projectId
* @return
*/
AssProjectVo getProjectById(Long projectId);
/**
* 新增项目
* @param project
* @return
*/
int addProject(AssProject project);
/**
* 根据id删除项目
* @param projectId
* @return
*/
int deleteProjectById(Long projectId);
/**
* 编辑项目
* @param project
* @return
*/
int editProject(AssProject project);
/**
* 校验项目
* @param projectId
*/
AssProject checkProjectDataScope(Long projectId);
/**
* 获取项目当前的项目过程状态
* @param projectId
* @return
*/
Integer getProjectReportProgress(Long projectId);
/**
* 检验项目名称是否唯一
* @param project
* @return
*/
boolean checkNameUnique(AssProject project);
/**
* 校验项目状态
* @param projectId
* @param reportProgressEnum 项目状态
* @return
*/
void checkReportProgress(Long projectId, ReportProgressEnum reportProgressEnum);
/**
* 修改项目状态
* @param projectId
* @param reportProgressEnum
* @return
*/
int changeReportProgress(Long projectId,ReportProgressEnum reportProgressEnum);
/**
* 根据项目成员获取项目列表 分页(供app使用)
* @param personId
* @param finish
* @return
*/
CommonPage memberProjects(Long personId,Integer finish);
/**
* 根据项目组长id获取项目列表 分页(供app使用)
* @param personId
* @return
*/
CommonPage leaderProjects(Long personId);
/**
* 项目统计
* @return
*/
ProjectStaticVO projectStat(AssProject project);
/**
* 获取项目agencyId
* @param projectId
* @return
*/
Long getProjectAgencyId(Long projectId);
/**
* 校验当前用户是否拥有操作项目权限
* @param projectId
*/
void checkUserAllowed(Long projectId);
}