package com.xjrsoft.module.job; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.xjrsoft.XjrSoftApplication; import com.xjrsoft.common.enums.DeleteMark; import com.xjrsoft.common.enums.EnabledMark; import com.xjrsoft.common.enums.EnrollTypeEnum; import com.xjrsoft.common.enums.GenderDictionaryEnum; import com.xjrsoft.common.enums.StudentTypeEnum; import com.xjrsoft.common.enums.StudyStatusEnum; import com.xjrsoft.common.mybatis.SqlRunnerAdapter; import com.xjrsoft.module.base.entity.BaseGrade; import com.xjrsoft.module.base.entity.BaseMajorSet; import com.xjrsoft.module.base.service.IBaseGradeService; import com.xjrsoft.module.base.service.IBaseMajorSetService; import com.xjrsoft.module.student.entity.BaseNewStudent; import com.xjrsoft.module.student.entity.EnrollmentPlan; import com.xjrsoft.module.student.entity.PbCseFeeobjupdate; import com.xjrsoft.module.student.service.IBaseNewStudentService; import com.xjrsoft.module.student.service.IEnrollmentPlanService; import com.xjrsoft.module.student.service.IPbCseFeeobjupdateService; import org.apache.commons.lang.StringUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.test.context.junit4.SpringRunner; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.*; /** * @author dzx * @date 2025/3/4 */ @RunWith(SpringRunner.class) @SpringBootTest(classes = XjrSoftApplication.class) class BaseNewStudentTaskTest { @Autowired private IBaseNewStudentService newStudentService; @Autowired private IPbCseFeeobjupdateService cseFeeobjupdateService; @Autowired private IEnrollmentPlanService planService; @Autowired private IBaseGradeService gradeService; @Autowired private IBaseMajorSetService majorSetService; @BeforeEach void setUp() { // 模拟用户登录 StpUtil.login(1000000000000000000L); // 假设用户ID为1 } @AfterEach void tearDown() { // 清理会话 StpUtil.logout(); } @Test public void execute(){ doExecute(); } void doExecute() { List dataList = cseFeeobjupdateService.list(); String sql = "select distinct enteryear, userdef6 from pb_cse_feeobjupdate"; List> gradeList = SqlRunnerAdapter.db().selectList(sql); List planDataList = planService.list( new QueryWrapper().lambda() .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE.getCode()) .eq(EnrollmentPlan::getEnabledMark, EnabledMark.ENABLED.getCode()) ); Map planDataMap = planDataList.stream().collect(Collectors.toMap(x -> x.getEnrollType() + x.getGradeId(), EnrollmentPlan::getId)); Map planMap = new HashMap<>(); //插入招生计划数据 gradeList.forEach((x) -> { EnrollmentPlan plan = new EnrollmentPlan(); plan.setCreateDate(new Date()); plan.setEnabledMark(EnabledMark.ENABLED.getCode()); plan.setDeleteMark(DeleteMark.NODELETE.getCode()); if ("1".equals(x.get("userdef6").toString())) { plan.setEnrollType(EnrollTypeEnum.SPRING_ENROLLMENT.getCode()); } else if ("2".equals(x.get("userdef6").toString())) { plan.setEnrollType(EnrollTypeEnum.AUTUMN_ENROLLMENT.getCode()); } //查询年级 BaseGrade grade = gradeService.getOne( new QueryWrapper().lambda() .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode()) .like(BaseGrade::getTitle, x.get("enteryear").toString()) ); plan.setGradeId(grade.getId()); Long oldPlanId = planDataMap.get(plan.getEnrollType() + plan.getGradeId()); planMap.put(x.get("enteryear").toString() + x.get("userdef6").toString(), oldPlanId); //判断是否已经存在,不存在就新增 if (oldPlanId == null) { planService.save(plan); planMap.put(x.get("enteryear").toString() + x.get("userdef6").toString(), plan.getId()); } }); //查询已存在的新生信息 List existsNewStudentList = newStudentService.list( new QueryWrapper().lambda() .eq(BaseNewStudent::getDeleteMark, DeleteMark.NODELETE.getCode()) ); Map existsNewStudentMap = existsNewStudentList.stream().filter(x -> StrUtil.isEmpty(x.getDeleteReason())).collect(Collectors.toMap(BaseNewStudent::getCredentialNumber, x -> x)); List majorSetList = majorSetService.list( new QueryWrapper().lambda() .eq(BaseMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode()) .eq(BaseMajorSet::getEnabledMark, EnabledMark.ENABLED.getCode()) ); Map majorSetNameMap = majorSetList.stream().collect(Collectors.toMap(BaseMajorSet::getName, BaseMajorSet::getId)); Set insCredentialNumber = new HashSet<>(); //循环攀宝的数据,准备更新到新生表中 List updateList = new ArrayList<>(); List insertList = new ArrayList<>(); for (PbCseFeeobjupdate feeobjupdate : dataList) { BaseNewStudent existsNewStudent = existsNewStudentMap.get(feeobjupdate.getPersonalid()); Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6()); if (existsNewStudent != null) { existsNewStudent.setName(feeobjupdate.getFeeobjname()); existsNewStudent.setPaymnystate(feeobjupdate.getPaymnystate()); existsNewStudent.setPrevious(feeobjupdate.getPrevious()); existsNewStudent.setProvince(feeobjupdate.getProvince()); existsNewStudent.setCity(feeobjupdate.getCity()); existsNewStudent.setMyarea(feeobjupdate.getMyarea()); if (StrUtil.isNotEmpty(feeobjupdate.getSg())) { if (StringUtils.isNumeric(feeobjupdate.getSg())) { existsNewStudent.setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg()))); } } if (StrUtil.isNotEmpty(feeobjupdate.getTz())) { if (StringUtils.isNumeric(feeobjupdate.getTz())) { existsNewStudent.setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz()))); } } existsNewStudent.setGraduateSchool(feeobjupdate.getGraduations()); existsNewStudent.setGraduateClass(feeobjupdate.getGradclass()); existsNewStudent.setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername())); existsNewStudent.setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename())); existsNewStudent.setMobile(feeobjupdate.getTelephone()); existsNewStudent.setFamilyMobile(feeobjupdate.getJzlxdh()); existsNewStudent.setFamilyAddress(feeobjupdate.getAddress()); existsNewStudent.setFirstAmbition(majorSetNameMap.get(feeobjupdate.getSpecname())); existsNewStudent.setFirstAmbitionId(majorSetNameMap.get(feeobjupdate.getSpecname())); existsNewStudent.setSecondAmbition(majorSetNameMap.get(feeobjupdate.getZytjspec())); existsNewStudent.setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec())); existsNewStudent.setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex())); existsNewStudent.setModifyDate(new Date()); existsNewStudent.setStatus(0); existsNewStudent.setIsCanBanding(1); existsNewStudent.setEnrollmentPlanId(planId); updateList.add(existsNewStudent); continue; } insertList.add( new BaseNewStudent() {{ setCredentialNumber(feeobjupdate.getPersonalid()); setName(feeobjupdate.getFeeobjname()); setPaymnystate(feeobjupdate.getPaymnystate()); setPrevious(feeobjupdate.getPrevious()); setProvince(feeobjupdate.getProvince()); setCity(feeobjupdate.getCity()); setMyarea(feeobjupdate.getMyarea()); if (StrUtil.isNotEmpty(feeobjupdate.getSg())) { if (StringUtils.isNumeric(feeobjupdate.getSg())) { setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg()))); } } if (StrUtil.isNotEmpty(feeobjupdate.getTz())) { if (StringUtils.isNumeric(feeobjupdate.getTz())) { setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz()))); } } setGraduateSchool(feeobjupdate.getGraduations()); setGraduateClass(feeobjupdate.getGradclass()); setStduyStatus(StudyStatusEnum.getCode(feeobjupdate.getQuartername())); setSource(StudentTypeEnum.getCode(feeobjupdate.getResourcename())); setMobile(feeobjupdate.getTelephone()); setFamilyMobile(feeobjupdate.getJzlxdh()); setFamilyAddress(feeobjupdate.getAddress()); setFirstAmbition(majorSetNameMap.get(feeobjupdate.getSpecname())); setFirstAmbitionId(majorSetNameMap.get(feeobjupdate.getSpecname())); setSecondAmbition(majorSetNameMap.get(feeobjupdate.getZytjspec())); setSecondAmbitionId(majorSetNameMap.get(feeobjupdate.getZytjspec())); setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex())); setEnrollmentPlanId(planId); setCreateDate(new Date()); setStatus(0); setIsCanBanding(1); }} ); } if (!updateList.isEmpty()) { newStudentService.updateBatchById(updateList); } if (!insertList.isEmpty()) { newStudentService.saveBatch(insertList); } } }