package com.xjrsoft.module.job; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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 lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Component; 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; /** * 从攀宝招生数据中同步新生数据 * * @author dzx * @date 2025/3/4 */ @Component @Slf4j public class BaseNewStudentTask { // @Autowired // private IBaseNewStudentService newStudentService; // // @Autowired // private IPbCseFeeobjupdateService cseFeeobjupdateService; // // @Autowired // private IEnrollmentPlanService planService; // // @Autowired // private IBaseGradeService gradeService; // // @Autowired // private IBaseMajorSetService majorSetService; // @Async // @Scheduled(cron = "0 */15 * * * ?") // public void execute() { // doExecute(); // } public void doExecute(IBaseNewStudentService newStudentService, IPbCseFeeobjupdateService cseFeeobjupdateService, IEnrollmentPlanService planService, IBaseGradeService gradeService, IBaseMajorSetService majorSetService) { 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(x.get("userdef6")==null){ return; } 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, (existing, replacement) -> existing )); 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()); if(feeobjupdate.getUserdef6()==null){ continue; } Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6()); if (existsNewStudent != null) { if (existsNewStudent.getStatus() != null && existsNewStudent.getStatus() == 1) { continue; } existsNewStudent.setName(feeobjupdate.getFeeobjname()); existsNewStudent.setPaymnystate(feeobjupdate.getPaymnystate()); if ("未交费".equals(feeobjupdate.getPaymnystate())) { existsNewStudent.setIsCanBanding(0); } else { existsNewStudent.setIsCanBanding(1); } 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()); if (!planId.equals(existsNewStudent.getEnrollmentPlanId())) { existsNewStudent.setStatus(0); } existsNewStudent.setEnrollmentPlanId(planId); updateList.add(existsNewStudent); continue; } if (insCredentialNumber.contains(feeobjupdate.getPersonalid())) { 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); if ("未交费".equals(feeobjupdate.getPaymnystate())) { setIsCanBanding(0); } else { setIsCanBanding(1); } }} ); insCredentialNumber.add(feeobjupdate.getPersonalid()); } if (!updateList.isEmpty()) { newStudentService.updateBatchById(updateList); } if (!insertList.isEmpty()) { newStudentService.saveBatch(insertList); } } }