BaseNewStudentTask.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package com.xjrsoft.module.job;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.xjrsoft.common.enums.*;
  5. import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
  6. import com.xjrsoft.module.base.entity.BaseGrade;
  7. import com.xjrsoft.module.base.entity.BaseMajorSet;
  8. import com.xjrsoft.module.base.service.IBaseGradeService;
  9. import com.xjrsoft.module.base.service.IBaseMajorSetService;
  10. import com.xjrsoft.module.student.entity.BaseNewStudent;
  11. import com.xjrsoft.module.student.entity.EnrollmentPlan;
  12. import com.xjrsoft.module.student.entity.PbCseFeeobjupdate;
  13. import com.xjrsoft.module.student.service.IBaseNewStudentService;
  14. import com.xjrsoft.module.student.service.IEnrollmentPlanService;
  15. import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.scheduling.annotation.Async;
  20. import org.springframework.scheduling.annotation.Scheduled;
  21. import org.springframework.stereotype.Component;
  22. import java.math.BigDecimal;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 从攀宝招生数据中同步新生数据
  27. *
  28. * @author dzx
  29. * @date 2025/3/4
  30. */
  31. @Component
  32. @Slf4j
  33. public class BaseNewStudentTask {
  34. @Autowired
  35. private IBaseNewStudentService newStudentService;
  36. @Autowired
  37. private IPbCseFeeobjupdateService cseFeeobjupdateService;
  38. @Autowired
  39. private IEnrollmentPlanService planService;
  40. @Autowired
  41. private IBaseGradeService gradeService;
  42. @Autowired
  43. private IBaseMajorSetService majorSetService;
  44. @Async
  45. @Scheduled(cron = "0 */15 * * * ?")
  46. public void execute() {
  47. doExecute();
  48. }
  49. void doExecute() {
  50. List<PbCseFeeobjupdate> dataList = cseFeeobjupdateService.list();
  51. String sql = "select distinct enteryear, userdef6 from pb_cse_feeobjupdate";
  52. List<Map<String, Object>> gradeList = SqlRunnerAdapter.db().selectList(sql);
  53. List<EnrollmentPlan> planDataList = planService.list(
  54. new QueryWrapper<EnrollmentPlan>().lambda()
  55. .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
  56. .eq(EnrollmentPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
  57. );
  58. Map<String, Long> planDataMap = planDataList.stream().collect(Collectors.toMap(x -> x.getEnrollType() + x.getGradeId(), EnrollmentPlan::getId));
  59. Map<String, Long> planMap = new HashMap<>();
  60. //插入招生计划数据
  61. gradeList.forEach((x) -> {
  62. EnrollmentPlan plan = new EnrollmentPlan();
  63. plan.setCreateDate(new Date());
  64. plan.setEnabledMark(EnabledMark.ENABLED.getCode());
  65. plan.setDeleteMark(DeleteMark.NODELETE.getCode());
  66. if ("1".equals(x.get("userdef6").toString())) {
  67. plan.setEnrollType(EnrollTypeEnum.SPRING_ENROLLMENT.getCode());
  68. } else if ("2".equals(x.get("userdef6").toString())) {
  69. plan.setEnrollType(EnrollTypeEnum.AUTUMN_ENROLLMENT.getCode());
  70. }
  71. //查询年级
  72. BaseGrade grade = gradeService.getOne(
  73. new QueryWrapper<BaseGrade>().lambda()
  74. .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
  75. .like(BaseGrade::getTitle, x.get("enteryear").toString())
  76. );
  77. plan.setGradeId(grade.getId());
  78. Long oldPlanId = planDataMap.get(plan.getEnrollType() + plan.getGradeId());
  79. planMap.put(x.get("enteryear").toString() + x.get("userdef6").toString(), oldPlanId);
  80. //判断是否已经存在,不存在就新增
  81. if (oldPlanId == null) {
  82. planService.save(plan);
  83. planMap.put(x.get("enteryear").toString() + x.get("userdef6").toString(), plan.getId());
  84. }
  85. });
  86. //查询已存在的新生信息
  87. List<BaseNewStudent> existsNewStudentList = newStudentService.list(
  88. new QueryWrapper<BaseNewStudent>().lambda()
  89. .eq(BaseNewStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
  90. );
  91. Map<String, BaseNewStudent> existsNewStudentMap = existsNewStudentList.stream().filter(x -> StrUtil.isEmpty(x.getDeleteReason())).collect(Collectors.toMap(BaseNewStudent::getCredentialNumber, x -> x));
  92. List<BaseMajorSet> majorSetList = majorSetService.list(
  93. new QueryWrapper<BaseMajorSet>().lambda()
  94. .eq(BaseMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode())
  95. .eq(BaseMajorSet::getEnabledMark, EnabledMark.ENABLED.getCode())
  96. );
  97. Map<String, Long> majorSetNameMap = majorSetList.stream().collect(Collectors.toMap(BaseMajorSet::getName, BaseMajorSet::getId));
  98. //循环攀宝的数据,准备更新到新生表中
  99. List<BaseNewStudent> updateList = new ArrayList<>();
  100. List<BaseNewStudent> insertList = new ArrayList<>();
  101. for (PbCseFeeobjupdate feeobjupdate : dataList) {
  102. BaseNewStudent existsNewStudent = existsNewStudentMap.get(feeobjupdate.getPersonalid());
  103. Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6());
  104. if (existsNewStudent != null) {
  105. existsNewStudent.setName(feeobjupdate.getFeeobjname());
  106. existsNewStudent.setPaymnystate(feeobjupdate.getPaymnystate());
  107. existsNewStudent.setPrevious(feeobjupdate.getPrevious());
  108. existsNewStudent.setProvince(feeobjupdate.getProvince());
  109. existsNewStudent.setCity(feeobjupdate.getCity());
  110. existsNewStudent.setMyarea(feeobjupdate.getMyarea());
  111. if (StrUtil.isNotEmpty(feeobjupdate.getSg())) {
  112. if (StringUtils.isNumeric(feeobjupdate.getSg())) {
  113. existsNewStudent.setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg())));
  114. }
  115. }
  116. if (StrUtil.isNotEmpty(feeobjupdate.getTz())) {
  117. if (StringUtils.isNumeric(feeobjupdate.getTz())) {
  118. existsNewStudent.setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz())));
  119. }
  120. }
  121. existsNewStudent.setGraduateSchool(feeobjupdate.getGraduations());
  122. existsNewStudent.setGraduateClass(feeobjupdate.getGradclass());
  123. existsNewStudent.setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername()));
  124. existsNewStudent.setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename()));
  125. existsNewStudent.setMobile(feeobjupdate.getTelephone());
  126. existsNewStudent.setFamilyMobile(feeobjupdate.getJzlxdh());
  127. existsNewStudent.setFamilyAddress(feeobjupdate.getAddress());
  128. existsNewStudent.setFirstAmbition(majorSetNameMap.get(feeobjupdate.getSpecname()));
  129. existsNewStudent.setFirstAmbitionId(majorSetNameMap.get(feeobjupdate.getSpecname()));
  130. existsNewStudent.setSecondAmbition(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  131. existsNewStudent.setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  132. existsNewStudent.setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
  133. existsNewStudent.setModifyDate(new Date());
  134. existsNewStudent.setEnrollmentPlanId(planId);
  135. existsNewStudent.setStatus(0);
  136. updateList.add(existsNewStudent);
  137. continue;
  138. }
  139. insertList.add(
  140. new BaseNewStudent() {{
  141. setCredentialNumber(feeobjupdate.getPersonalid());
  142. setName(feeobjupdate.getFeeobjname());
  143. setPaymnystate(feeobjupdate.getPaymnystate());
  144. setPrevious(feeobjupdate.getPrevious());
  145. setProvince(feeobjupdate.getProvince());
  146. setCity(feeobjupdate.getCity());
  147. setMyarea(feeobjupdate.getMyarea());
  148. if (StrUtil.isNotEmpty(feeobjupdate.getSg())) {
  149. if (StringUtils.isNumeric(feeobjupdate.getSg())) {
  150. setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg())));
  151. }
  152. }
  153. if (StrUtil.isNotEmpty(feeobjupdate.getTz())) {
  154. if (StringUtils.isNumeric(feeobjupdate.getTz())) {
  155. setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz())));
  156. }
  157. }
  158. setGraduateSchool(feeobjupdate.getGraduations());
  159. setGraduateClass(feeobjupdate.getGradclass());
  160. setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername()));
  161. setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename()));
  162. setMobile(feeobjupdate.getTelephone());
  163. setFamilyMobile(feeobjupdate.getJzlxdh());
  164. setFamilyAddress(feeobjupdate.getAddress());
  165. setFirstAmbition(majorSetNameMap.get(feeobjupdate.getSpecname()));
  166. setFirstAmbitionId(majorSetNameMap.get(feeobjupdate.getSpecname()));
  167. setSecondAmbition(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  168. setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  169. setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
  170. setEnrollmentPlanId(planId);
  171. setCreateDate(new Date());
  172. setStatus(0);
  173. setIsCanBanding(1);
  174. }}
  175. );
  176. }
  177. if (!updateList.isEmpty()) {
  178. newStudentService.updateBatchById(updateList);
  179. }
  180. if (!insertList.isEmpty()) {
  181. newStudentService.saveBatch(insertList);
  182. }
  183. }
  184. }