publicclassPositionSubmittedSqlProviderimplementsProviderMethodResolver{publicstatic String selectByQuery(final Long positionId,final ResumeSubmittedQuery query){returnnewSQL(){{SELECT("r.id","rb.full_name as fullName","rt.job_search_status as jobSearchStatus","rb.province","rb.county","r.completed_percent as completedPercent","ps.created_time as submittedTime","ps.processed_state as processedState","ps.updated_time as operatedTime,"+"(case when r.file_id > 0 then true else false end ) as hasFile");FROM(Resume.TABLE_NAME +" as r");JOIN(PositionSubmitted.TABLE_NAME +" as ps on ps.resume_id = r.id");JOIN(ResumeTarget.TABLE_NAME +" as rt on rt.resume_id = r.id");JOIN(ResumeBase.TABLE_NAME +" as rb on rb.resume_id = r.id");WHERE("ps.position_id = #{positionId}");if(Objects.nonNull(query.getJobSearchStatus())){AND().WHERE("rt.job_search_status = #{query.jobSearchStatus}");}if(Objects.nonNull(query.getProvince())&& Objects.nonNull(query.getCounty())){AND().WHERE("rb.province = #{query.province}");AND().WHERE("rb.county = #{query.county}");}if(Objects.nonNull(query.getCompletedPercentMin())&&
Objects.nonNull(query.getCompletedPercentMax())){AND().WHERE("r.completed_percent between #{query.completedPercentMin} "+"and #{query.completedPercentMax}");}if(Objects.nonNull(query.getHasFile())&& query.getHasFile()){AND().WHERE("r.file_id > 0");}if(Objects.nonNull(query.getSubmittedTimeStart())&&
Objects.nonNull(query.getSubmittedTimeEnd())){AND().WHERE("ps.created_time between #{query.submittedTimeStart} "+"and #{query.submittedTimeEnd}");}if(Objects.nonNull(query.getProcessedState())){AND().WHERE("ps.processed_state = #{query.processedState}");}}}.toString();}}