|
@ -0,0 +1,189 @@
|
|
|
package com.yihu.jw.care.service.course;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.jw.care.dao.course.RecruitStudentsDao;
|
|
|
import com.yihu.jw.care.dao.course.RecruitStudentsRecordDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
|
|
|
import com.yihu.jw.entity.care.course.RecruitStudentsDO;
|
|
|
import com.yihu.jw.entity.care.course.RecruitStudentsRecordDO;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.restmodel.ResponseContant;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created with IntelliJ IDEA.
|
|
|
*
|
|
|
* @Author: yeshijie
|
|
|
* @Date: 2021/6/8
|
|
|
* @Description:
|
|
|
*/
|
|
|
@Service
|
|
|
public class RecruitStudentService {
|
|
|
|
|
|
@Autowired
|
|
|
private BasePatientDao patientDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorDao doctorDao;
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTemplate;
|
|
|
@Autowired
|
|
|
private RecruitStudentsRecordDao recruitStudentsRecordDao;
|
|
|
@Autowired
|
|
|
private RecruitStudentsDao recruitStudentsDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorHospitalDao baseDoctorHospitalDao;
|
|
|
|
|
|
/**
|
|
|
* 在线报名-已报名数量
|
|
|
* @param doctorId
|
|
|
* @return
|
|
|
*/
|
|
|
public Integer onlineRegisterCount(String doctorId){
|
|
|
List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDoctorCode(doctorId);
|
|
|
List<RecruitStudentsRecordDO> list = recruitStudentsRecordDao.findByOrgCodeAndStatus(baseDoctorHospitalDO.get(0).getOrgCode(),"1");
|
|
|
return list.size();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 统计在线报名各状态下的数量
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject onlineRegisterStatusCount(String doctorId) {
|
|
|
JSONObject result = new JSONObject();
|
|
|
List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDoctorCode(doctorId);
|
|
|
int total = 0;
|
|
|
Map<String,Object> res = new HashedMap();
|
|
|
//状态 已报名1 已录取2 未录取4 已退学8
|
|
|
res.put("1",0);
|
|
|
res.put("2",0);
|
|
|
res.put("4",0);
|
|
|
res.put("8",0);
|
|
|
String countSql = "SELECT " +
|
|
|
" count(o.id) as count, " +
|
|
|
" o.status as status " +
|
|
|
" FROM " +
|
|
|
" base_recruit_students_record o " +
|
|
|
" WHERE " +
|
|
|
" o.org_code = '"+ baseDoctorHospitalDO.get(0).getOrgCode() + "' and o.del = 1 "+
|
|
|
" GROUP BY o.`status`";
|
|
|
|
|
|
List<Map<String,Object>> countMapList = jdbcTemplate.queryForList(countSql);
|
|
|
for(Map<String,Object> map:countMapList){
|
|
|
int c = Integer.valueOf(map.get("count").toString());
|
|
|
total +=c;
|
|
|
res.put(String.valueOf(map.get("status")),c);
|
|
|
}
|
|
|
res.put("total",total);
|
|
|
result.put(ResponseContant.resultFlag, ResponseContant.success);
|
|
|
result.put(ResponseContant.resultMsg, res);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 在线报名列表
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject queryInfoList(String doctorId,Integer status, int page, int size) {
|
|
|
JSONObject result = new JSONObject();
|
|
|
List<BaseDoctorHospitalDO> baseDoctorHospitalDO = baseDoctorHospitalDao.findByDoctorCode(doctorId);
|
|
|
String orgCode = baseDoctorHospitalDO.get(0).getOrgCode();
|
|
|
status = null == status ? -100 : status;
|
|
|
int start = 0 == page ? page++ : (page - 1) * size;
|
|
|
int end = 0 == size ? 15 : size;
|
|
|
|
|
|
String sql = "SELECT o.id,o.patient,o.patient_name patientName,o.status,o.create_time createTime,p.photo " +
|
|
|
" FROM base_recruit_students_record o" +
|
|
|
" left join base_patient p on o.patient = p.id " +
|
|
|
" WHERE o.org_code = '{org_code}' and o.del =1 "+
|
|
|
" AND (o.`status` = {status} or -100 = {status})" +
|
|
|
" ORDER BY o.create_time desc" +
|
|
|
" LIMIT {start},{end} ";
|
|
|
|
|
|
String finalSql = sql.replace("{org_code}", orgCode)
|
|
|
.replace("{status}", String.valueOf(status))
|
|
|
.replace("{start}", String.valueOf(start))
|
|
|
.replace("{end}", String.valueOf(end));
|
|
|
|
|
|
String countSql = "SELECT count(DISTINCT o.id) FROM base_recruit_students_record o " +
|
|
|
" WHERE o.org_code = '{org_code}' and o.del =1 " +
|
|
|
" AND (o.`status` = {status} or -100 = {status})";
|
|
|
|
|
|
String finqlCountSql = countSql.replace("{org_code}", orgCode)
|
|
|
.replace("{status}", String.valueOf(status));
|
|
|
|
|
|
List<Map<String,Object>> sqlResultlist= jdbcTemplate.queryForList(finalSql);
|
|
|
Integer count = jdbcTemplate.queryForObject(finqlCountSql, Integer.class);
|
|
|
|
|
|
result.put(ResponseContant.resultFlag, ResponseContant.success);
|
|
|
result.put(ResponseContant.resultMsg, sqlResultlist);
|
|
|
JSONObject countItem = new JSONObject();
|
|
|
countItem.put("count", count);
|
|
|
result.putAll(countItem);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 录取单个
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public synchronized String admission(String id){
|
|
|
RecruitStudentsRecordDO recruitStudentsRecordDO = recruitStudentsRecordDao.findOne(id);
|
|
|
if(!"1".equals(recruitStudentsRecordDO.getStatus())){
|
|
|
return "只有已报名状态的人员才能录取";
|
|
|
}
|
|
|
if(isAdmissionFull(recruitStudentsRecordDO.getRecruitStudentsId())){
|
|
|
return "超过录取名额,无法录取";
|
|
|
}
|
|
|
recruitStudentsRecordDO.setStatus("2");
|
|
|
recruitStudentsRecordDao.save(recruitStudentsRecordDO);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 是否录取满 true录取满了
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public synchronized boolean isAdmissionFull(String id){
|
|
|
List<RecruitStudentsRecordDO> list = findListById(id);
|
|
|
RecruitStudentsDO recruitStudentsDO = recruitStudentsDao.findOne(id);
|
|
|
if(recruitStudentsDO.getNum()<=list.size()){
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
public List<RecruitStudentsRecordDO> findListById(String id){
|
|
|
String sql = "select * from base_recruit_students_record where recruit_students_id = '"+id+"' and status in ('2','3','6') and del =1 ";
|
|
|
List<RecruitStudentsRecordDO> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(RecruitStudentsRecordDO.class));
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 拒绝单个
|
|
|
* @param id
|
|
|
*/
|
|
|
public synchronized String refuse(String id){
|
|
|
RecruitStudentsRecordDO recruitStudentsRecordDO = recruitStudentsRecordDao.findOne(id);
|
|
|
if(!"1".equals(recruitStudentsRecordDO.getStatus())){
|
|
|
return "只有已报名状态的人员才能拒绝";
|
|
|
}
|
|
|
recruitStudentsRecordDO.setStatus("4");
|
|
|
recruitStudentsRecordDao.save(recruitStudentsRecordDO);
|
|
|
return null;
|
|
|
}
|
|
|
}
|