BaseNewStudentTask.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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. if(!planId.equals(existsNewStudent.getEnrollmentPlanId())){
  135. existsNewStudent.setStatus(0);
  136. }
  137. existsNewStudent.setEnrollmentPlanId(planId);
  138. updateList.add(existsNewStudent);
  139. continue;
  140. }
  141. insertList.add(
  142. new BaseNewStudent() {{
  143. setCredentialNumber(feeobjupdate.getPersonalid());
  144. setName(feeobjupdate.getFeeobjname());
  145. setPaymnystate(feeobjupdate.getPaymnystate());
  146. setPrevious(feeobjupdate.getPrevious());
  147. setProvince(feeobjupdate.getProvince());
  148. setCity(feeobjupdate.getCity());
  149. setMyarea(feeobjupdate.getMyarea());
  150. if (StrUtil.isNotEmpty(feeobjupdate.getSg())) {
  151. if (StringUtils.isNumeric(feeobjupdate.getSg())) {
  152. setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg())));
  153. }
  154. }
  155. if (StrUtil.isNotEmpty(feeobjupdate.getTz())) {
  156. if (StringUtils.isNumeric(feeobjupdate.getTz())) {
  157. setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz())));
  158. }
  159. }
  160. setGraduateSchool(feeobjupdate.getGraduations());
  161. setGraduateClass(feeobjupdate.getGradclass());
  162. setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername()));
  163. setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename()));
  164. setMobile(feeobjupdate.getTelephone());
  165. setFamilyMobile(feeobjupdate.getJzlxdh());
  166. setFamilyAddress(feeobjupdate.getAddress());
  167. setFirstAmbition(majorSetNameMap.get(feeobjupdate.getSpecname()));
  168. setFirstAmbitionId(majorSetNameMap.get(feeobjupdate.getSpecname()));
  169. setSecondAmbition(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  170. setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec()));
  171. setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
  172. setEnrollmentPlanId(planId);
  173. setCreateDate(new Date());
  174. setStatus(0);
  175. setIsCanBanding(1);
  176. }}
  177. );
  178. }
  179. if (!updateList.isEmpty()) {
  180. newStudentService.updateBatchById(updateList);
  181. }
  182. if (!insertList.isEmpty()) {
  183. newStudentService.saveBatch(insertList);
  184. }
  185. }
  186. }