|
@@ -1,272 +0,0 @@
|
|
|
-package cn.com.qmth.examcloud.exchange.outer.service;
|
|
|
-
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.slf4j.Logger;
|
|
|
-import org.slf4j.LoggerFactory;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.http.ResponseEntity;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
-import cn.com.qmth.examcloud.common.dto.core.User;
|
|
|
-import cn.com.qmth.examcloud.common.dto.core.enums.CourseLevel;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.enums.OutletOrgType;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.exception.NoSuchCourseLevelException;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.exception.NoSuchExamException;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.exception.SaveExamException;
|
|
|
-import cn.com.qmth.examcloud.exchange.base.exception.SaveExamStudentException;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.ExamStudentImportDTO;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletCourse;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletExam;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletExamStudent;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletOrg;
|
|
|
-import cn.com.qmth.examcloud.exchange.dao.bean.OutletStudent;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.client.CourseClient;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.client.ExamClient;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.client.ExamStudentClient;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.client.OrgClient;
|
|
|
-import cn.com.qmth.examcloud.exchange.outer.service.client.StudentClient;
|
|
|
-
|
|
|
-/**
|
|
|
- * Created by yuanpan on 2017/4/25.
|
|
|
- */
|
|
|
-@Service
|
|
|
-public class ExamStudentImportService {
|
|
|
-
|
|
|
- private static final Logger log = LoggerFactory.getLogger(ExamStudentImportService.class);
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private OrgClient orgClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamClient examClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private CourseClient courseClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private StudentClient studentClient;
|
|
|
-
|
|
|
- @Autowired
|
|
|
- private ExamStudentClient examStudentClient;
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 石油大学
|
|
|
- * 1.保存考试信息
|
|
|
- * 2.保存学习中心
|
|
|
- * 3.保存课程
|
|
|
- * 4.保存学生信息
|
|
|
- * 5.保存考生信息
|
|
|
- * @param rootOrgId
|
|
|
- * @param examStudentImportDTO
|
|
|
- * @throws NoSuchExamException
|
|
|
- * @throws NoSuchCourseLevelException
|
|
|
- */
|
|
|
- public Long save(String userToken, Long rootOrgId, ExamStudentImportDTO examStudentImportDTO) throws NoSuchCourseLevelException, NoSuchExamException, SaveExamException, SaveExamStudentException {
|
|
|
- log.info("创建考试和导入学生开始");
|
|
|
- OutletExam exam = saveExam(examStudentImportDTO,userToken,rootOrgId);
|
|
|
- List<OutletExamStudent> examStudentList = examStudentImportDTO.getExamStudentList();
|
|
|
- for (OutletExamStudent examStudent : examStudentList) {
|
|
|
- OutletOrg org = saveOrg(examStudent,userToken,rootOrgId);
|
|
|
-
|
|
|
- saveCourse(examStudent,userToken,rootOrgId);
|
|
|
-
|
|
|
- OutletStudent student = saveStudent(examStudent,org,userToken,rootOrgId);
|
|
|
-
|
|
|
- saveExamStudent(examStudent,student,org,exam,userToken,rootOrgId);
|
|
|
- }
|
|
|
- log.info("创建考试和导入学生完成");
|
|
|
- return exam.getId();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 保存考试信息
|
|
|
- * @param examStudentImportDTO
|
|
|
- * @param userToken
|
|
|
- * @param rootOrgId
|
|
|
- * @return
|
|
|
- * @throws SaveExamException
|
|
|
- */
|
|
|
- private OutletExam saveExam(ExamStudentImportDTO examStudentImportDTO,String userToken,Long rootOrgId) throws SaveExamException {
|
|
|
- OutletExam exam = examStudentImportDTO.getExam();
|
|
|
- log.info("1.保存考试信息,考试批次:"+exam.getRemark());
|
|
|
- ResponseEntity<List<OutletExam>> examListResp = examClient.queryByRemark(userToken, exam.getRemark());
|
|
|
- //判断考试是否存在
|
|
|
- if (examListResp != null && examListResp.getBody() != null && examListResp.getBody().size() > 0) {
|
|
|
- exam = examListResp.getBody().get(0);
|
|
|
- } else {
|
|
|
- exam.setEnable(true);//默认开启考试
|
|
|
- exam.setOrgId(rootOrgId);
|
|
|
- ResponseEntity<OutletExam> saveExamResp = null;
|
|
|
- try {
|
|
|
- saveExamResp = examClient.save(userToken, exam);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new SaveExamException();
|
|
|
- }
|
|
|
- exam = saveExamResp.getBody();
|
|
|
- }
|
|
|
- return exam;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 保存学习中心
|
|
|
- * @param examStudent
|
|
|
- * @param userToken
|
|
|
- * @param rootOrgId
|
|
|
- * @return
|
|
|
- */
|
|
|
- private OutletOrg saveOrg(OutletExamStudent examStudent,String userToken,Long rootOrgId){
|
|
|
- log.info("2.保存学习中心,学习中心code:"+examStudent.getOrgCode());
|
|
|
- //判断学习中心是否存在,不存在则创建
|
|
|
- String orgCode = examStudent.getOrgCode();
|
|
|
- //根据orgCode,查询学习中心
|
|
|
- ResponseEntity<OutletOrg> orgResponseEntity = orgClient.findByParentIdAndCode(userToken, rootOrgId, orgCode);
|
|
|
- OutletOrg org = orgResponseEntity.getBody();
|
|
|
- if (org == null) {
|
|
|
- org = new OutletOrg();
|
|
|
- org.setName(examStudent.getOrgName());
|
|
|
- org.setCode(examStudent.getOrgCode());
|
|
|
- org.setParentId(rootOrgId);
|
|
|
- org.setRootId(rootOrgId);
|
|
|
- org.setEnable(true);
|
|
|
- org.setType(OutletOrgType.SCHOOL);
|
|
|
- org.setApps("ecs_oe");
|
|
|
- ResponseEntity<OutletOrg> saveOrgResp = orgClient.save(userToken, org);
|
|
|
- org = saveOrgResp.getBody();
|
|
|
- }
|
|
|
- return org;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 保存课程
|
|
|
- * @param examStudent
|
|
|
- * @param userToken
|
|
|
- * @param rootOrgId
|
|
|
- * @throws NoSuchCourseLevelException
|
|
|
- */
|
|
|
- private void saveCourse(OutletExamStudent examStudent,String userToken,Long rootOrgId) throws NoSuchCourseLevelException{
|
|
|
- //判断课程是否存在,不存在则新增
|
|
|
- CourseLevel courseLevel = getCourseLevelByCName(examStudent.getCourseLevel());
|
|
|
- String courseCode = examStudent.getCourseCode();
|
|
|
- if(courseLevel != null){
|
|
|
- courseCode = courseLevel.getAbbreviate()+examStudent.getCourseCode();
|
|
|
- }
|
|
|
- log.info("3.保存课程,课程code:"+courseCode);
|
|
|
- examStudent.setCourseCode(courseCode);
|
|
|
- ResponseEntity<OutletCourse> getCourseResp = courseClient.getCourseByCode(userToken, rootOrgId, examStudent.getCourseCode());
|
|
|
- OutletCourse course = getCourseResp.getBody();
|
|
|
- if (course == null) {
|
|
|
- course = new OutletCourse();
|
|
|
- course.setOrgId(rootOrgId);
|
|
|
- course.setEnable(true);
|
|
|
- course.setCode(examStudent.getCourseCode());
|
|
|
- course.setCreateTime(new Date());
|
|
|
- course.setLevel(getCourseLevelByCName(examStudent.getCourseLevel()));
|
|
|
- course.setName(examStudent.getCourseName());
|
|
|
- ResponseEntity<OutletCourse> saveCourseResp = courseClient.save(userToken, course);
|
|
|
- course = saveCourseResp.getBody();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 保存学生信息
|
|
|
- * @param examStudent
|
|
|
- * @param org
|
|
|
- * @param userToken
|
|
|
- * @param rootOrgId
|
|
|
- * @return
|
|
|
- */
|
|
|
- private OutletStudent saveStudent(OutletExamStudent examStudent,OutletOrg org,String userToken,Long rootOrgId) {
|
|
|
- //保存学生信息,在保存学生信息的接口中会自动保存用户信息,所以不需要单独调用UserApi去保存用户信息
|
|
|
- log.info("4.保存学生信息,学生身份证号:"+examStudent.getIdentityNumber());
|
|
|
- OutletStudent student = new OutletStudent();
|
|
|
- student.setIdentityNumber(examStudent.getIdentityNumber());
|
|
|
- student.setName(examStudent.getName());
|
|
|
- student.setStudentCode(examStudent.getStudentCode());
|
|
|
- User user = new User();
|
|
|
- user.setOrgId(org.getId());
|
|
|
- user.setRootOrgId(rootOrgId);
|
|
|
- user.setEnable(true);
|
|
|
- student.setUser(user);
|
|
|
- //查询学生信息是否存在
|
|
|
- List<OutletStudent> studentList = studentClient.getStudentByIdentityNumber(userToken, examStudent.getIdentityNumber()).getBody();
|
|
|
- if (studentList == null || studentList.size() < 1) {
|
|
|
- ResponseEntity<OutletStudent> saveStudentResp = studentClient.save(userToken, student);
|
|
|
- student = saveStudentResp.getBody();
|
|
|
- } else {
|
|
|
- OutletStudent stu = studentList.get(0);
|
|
|
- student.setOrgId(org.getId());
|
|
|
- student.setRootOrgId(rootOrgId);
|
|
|
- student.setId(stu.getId());
|
|
|
- student.setUser(stu.getUser());
|
|
|
- ResponseEntity<OutletStudent> updateStudentResp = studentClient.updateStudent(userToken,student);
|
|
|
- student = updateStudentResp.getBody();
|
|
|
- }
|
|
|
- return student;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 保存考生信息
|
|
|
- * @param examStudent
|
|
|
- * @param student
|
|
|
- * @param org
|
|
|
- * @param exam
|
|
|
- * @param userToken
|
|
|
- * @param rootOrgId
|
|
|
- * @throws NoSuchCourseLevelException
|
|
|
- * @throws SaveExamStudentException
|
|
|
- */
|
|
|
- private void saveExamStudent(OutletExamStudent examStudent,OutletStudent student,OutletOrg org,OutletExam exam,String userToken,Long rootOrgId) throws NoSuchCourseLevelException, SaveExamStudentException {
|
|
|
- log.info("5.保存考生信息,考试ID:"+exam.getId()
|
|
|
- +"课程code:"+examStudent.getCourseCode()
|
|
|
- +",考生身份证号:"+examStudent.getIdentityNumber());
|
|
|
- //判断考生信息是否存在
|
|
|
- ResponseEntity<List<OutletExamStudent>> examStudentListResp = examStudentClient.queryExamStudent(userToken, examStudent.getIdentityNumber(), exam.getId(), examStudent.getCourseCode());
|
|
|
- if (examStudentListResp != null && examStudentListResp.getBody() != null && examStudentListResp.getBody().size() > 0) {
|
|
|
- //学生该门课程考试已经存在
|
|
|
- List<OutletExamStudent> examStudents = examStudentListResp.getBody();
|
|
|
- OutletExamStudent examStudentOld = examStudents.get(0);
|
|
|
- //更新相关的姓名、学习中心、专业
|
|
|
- examStudentOld.setName(student.getName());
|
|
|
- examStudentOld.setOrgId(org.getId());
|
|
|
- examStudentOld.setOrgCode(org.getCode());
|
|
|
- examStudentOld.setOrgName(org.getName());
|
|
|
- examStudentOld.setRootOrgId(rootOrgId);
|
|
|
- examStudentOld.setSpecialtyName(examStudent.getSpecialtyName());
|
|
|
- try {
|
|
|
- examStudentClient.save(userToken, examStudentOld);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new SaveExamStudentException("保存考生时候出现异常", e);
|
|
|
- }
|
|
|
- } else {
|
|
|
- //学生的该门课程考试不存在
|
|
|
- examStudent.setStudentId(student.getId());
|
|
|
- examStudent.setOrgId(org.getId());
|
|
|
- examStudent.setRootOrgId(rootOrgId);
|
|
|
- examStudent.setExam(exam);
|
|
|
- examStudent.setFinished(false);
|
|
|
- examStudent.setCourseLevel(getCourseLevelByCName(examStudent.getCourseLevel())+"");
|
|
|
- try {
|
|
|
- examStudentClient.save(userToken, examStudent);
|
|
|
- } catch (Exception e) {
|
|
|
- throw new SaveExamStudentException("保存考生时候出现异常", e);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private CourseLevel getCourseLevelByCName(String cname){
|
|
|
- if(StringUtils.isBlank(cname)){
|
|
|
- return null;
|
|
|
- }
|
|
|
- for(CourseLevel level:CourseLevel.values()){
|
|
|
- if(cname.equals(level.getName())){
|
|
|
- return level;
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-}
|