package com.estate.expert.admin.domain.exam.task.check;
|
|
import com.estate.expert.admin.domain.common.EntityBaseRepository;
|
import com.estate.expert.admin.domain.plan.PlanState;
|
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.repository.query.Param;
|
|
import java.util.List;
|
|
public interface CheckTaskRepository extends EntityBaseRepository<CheckTask> {
|
|
@Query("select t from CheckTask t where t.plan.id = :planId and ( t.state >= 3 ) " +
|
"and t.deleted = false order by t.id desc")
|
List<CheckTask> listClosedTasks(Integer planId);
|
|
@Query("select t from CheckTask t where (coalesce(:planIds, null) is null or t.plan.id in :planIds) " +
|
"and ( t.state >= 3 ) " +
|
"and t.deleted = false order by t.id desc")
|
List<CheckTask> listClosedTasks(List<Integer> planIds);
|
|
/**
|
* 查询我的任务
|
* 其中包括,plan.creatorId = userId
|
* groupLeaders 中包含 userId
|
* groupMembers 中包含 userId
|
* drivers 中包含 userId
|
* creatorId = userId
|
*/
|
@Query("select t from CheckTask t where t.deleted = false " +
|
"and ( :planId is null or t.plan.id = :planId ) " +
|
"and ( t.creator.id = :userId " +
|
"or :userId in (select g.id from t.groupLeaders g) " +
|
"or :userId in (select g.id from t.groupMembers g) " +
|
"or :userId in (select g.id from t.drivers g) " +
|
"or :userId = t.plan.creator.id) " +
|
"order by t.id desc")
|
List<CheckTask> listMyTasks(Integer userId, Integer planId);
|
|
@Query("select t from CheckTask t where t.deleted = false " +
|
"and t.state != 3 and t.state != 7 " +
|
"and t.plan.deleted = false " +
|
"and (t.creator.id = :userId " +
|
"or :userId in (select g.id from t.groupLeaders g) " +
|
"or :userId in (select g.id from t.groupMembers g) " +
|
"or :userId in (select g.id from t.drivers g) " +
|
"or :userId = t.plan.creator.id)" +
|
"order by t.id desc")
|
List<CheckTask> listMyToDoTasks(Integer userId);
|
|
@Query("select t.plan.id from CheckTask t where t.deleted = false and (t.creator.id = :userId " +
|
"or :userId in (select g.id from t.groupLeaders g) " +
|
"or :userId in (select g.id from t.groupMembers g) " +
|
"or :userId in (select g.id from t.drivers g)) " +
|
"or :userId = t.plan.creator.id " +
|
"order by t.id desc")
|
List<Integer> listMyTaskPlans(Integer userId);
|
|
List<CheckTask> findAllByPlanIdAndDeleted(Integer planId, boolean deleted);
|
|
CheckTask getFirstByPlanIdAndProjectIdAndDeleted(Integer planId, Integer projectId, boolean deleted);
|
|
@Query("select t.id from CheckTask t " +
|
"where t.deleted = false " +
|
"and t.project.id = :projectId " +
|
"and t.plan.deleted = false " +
|
"and t.plan.state = :planState")
|
List<Integer> listTaskIdsByProjectAndPlanState(@Param("projectId") Integer projectId,
|
@Param("planState") PlanState planState);
|
}
|