BaseNewStudentTask.java 12 KB

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