BaseNewStudentTaskTest.java 11 KB

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