瀏覽代碼

新生数据同步自动同步

dzx 9 月之前
父節點
當前提交
5a31c33b12

+ 192 - 0
src/main/java/com/xjrsoft/module/job/BaseNewStudentTask.java

@@ -0,0 +1,192 @@
+package com.xjrsoft.module.job;
+
+import cn.hutool.core.util.IdUtil;
+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.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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+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;
+
+    @Scheduled(cron = "0 */15 * * * ?")
+    public void execute(){
+        doExecute();
+    }
+
+    void doExecute(){
+        List<PbCseFeeobjupdate> dataList = cseFeeobjupdateService.list();
+        Map<String, String> gradeMap = dataList.stream().filter(x -> StrUtil.isNotEmpty(x.getEnteryear()) && StrUtil.isNotEmpty(x.getUserdef6()))
+                .collect(Collectors.toMap(PbCseFeeobjupdate::getEnteryear, PbCseFeeobjupdate::getUserdef6));
+
+        List<EnrollmentPlan> planDataList = planService.list(
+                new QueryWrapper<EnrollmentPlan>().lambda()
+                        .eq(EnrollmentPlan::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(EnrollmentPlan::getEnabledMark, EnabledMark.ENABLED.getCode())
+        );
+        Map<String, Long> planDataMap = planDataList.stream().collect(Collectors.toMap(x -> x.getEnrollType() + x.getGradeId(), EnrollmentPlan::getId));
+
+        Map<String, Long> planMap = new HashMap<>();
+        //插入招生计划数据
+        gradeMap.forEach((enteryear, userdef6)->{
+            EnrollmentPlan plan = new EnrollmentPlan();
+            plan.setCreateDate(new Date());
+            plan.setEnabledMark(EnabledMark.ENABLED.getCode());
+            plan.setDeleteMark(DeleteMark.NODELETE.getCode());
+            if("1".equals(userdef6)){
+                plan.setEnrollType(EnrollTypeEnum.SPRING_ENROLLMENT.getCode());
+            }else if("2".equals(userdef6)){
+                plan.setEnrollType(EnrollTypeEnum.AUTUMN_ENROLLMENT.getCode());
+            }
+
+            //查询年级
+            BaseGrade grade = gradeService.getOne(
+                    new QueryWrapper<BaseGrade>().lambda()
+                            .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .like(BaseGrade::getTitle, enteryear)
+            );
+            plan.setGradeId(grade.getId());
+
+            Long oldPlanId = planDataMap.get(plan.getEnrollType() + plan.getGradeId());
+
+            planMap.put(enteryear + userdef6, oldPlanId);
+
+            //判断是否已经存在,不存在就新增
+            if(oldPlanId == null){
+                planService.save(plan);
+                planMap.put(enteryear + userdef6, plan.getId());
+            }
+        });
+
+        //查询已存在的新生信息
+        List<BaseNewStudent> existsNewStudentList = newStudentService.list(
+                new QueryWrapper<BaseNewStudent>().lambda()
+                        .eq(BaseNewStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        Map<String, BaseNewStudent> existsNewStudentMap = existsNewStudentList.stream().filter(x -> StrUtil.isEmpty(x.getDeleteReason())).collect(Collectors.toMap(BaseNewStudent::getCredentialNumber, x -> x));
+
+        List<BaseMajorSet> majorSetList = majorSetService.list(
+                new QueryWrapper<BaseMajorSet>().lambda()
+                        .eq(BaseMajorSet::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(BaseMajorSet::getEnabledMark, EnabledMark.ENABLED.getCode())
+        );
+        Map<String, Long> majorSetMap = majorSetList.stream().collect(Collectors.toMap(BaseMajorSet::getCode, BaseMajorSet::getId));
+
+        //循环攀宝的数据,准备更新到新生表中
+        List<BaseNewStudent> updateList = new ArrayList<>();
+        List<BaseNewStudent> insertList = new ArrayList<>();
+        for (PbCseFeeobjupdate feeobjupdate : dataList) {
+            BaseNewStudent existsNewStudent = existsNewStudentMap.get(feeobjupdate.getPersonalid());
+
+            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());
+                existsNewStudent.setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg())));
+                existsNewStudent.setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz())));
+                existsNewStudent.setGraduateSchool(feeobjupdate.getGraduations());
+                existsNewStudent.setStduyStatus(StudyStatusEnum.fromCode(feeobjupdate.getQuartername()));
+                existsNewStudent.setSource(StudentTypeEnum.fromCode(feeobjupdate.getResourcename()));
+                existsNewStudent.setMobile(feeobjupdate.getTelephone());
+                existsNewStudent.setFamilyMobile(feeobjupdate.getJzlxdh());
+                existsNewStudent.setFamilyAddress(feeobjupdate.getAddress());
+                existsNewStudent.setFirstAmbition(majorSetMap.get(feeobjupdate.getSpeccode()));
+                existsNewStudent.setFirstAmbitionId(majorSetMap.get(feeobjupdate.getSpeccode()));
+                existsNewStudent.setSecondAmbition(majorSetMap.get(feeobjupdate.getZytjspec()));
+                existsNewStudent.setSecondAmbitionId(majorSetMap.get(feeobjupdate.getZytjspec()));
+                existsNewStudent.setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
+                existsNewStudent.setModifyDate(new Date());
+
+                updateList.add(existsNewStudent);
+                continue;
+            }
+
+            Long planId = planMap.get(feeobjupdate.getEnteryear() + feeobjupdate.getUserdef6());
+            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());
+                        setHeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getSg())));
+                        setWeight(BigDecimal.valueOf(Double.parseDouble(feeobjupdate.getTz())));
+                        setGraduateSchool(feeobjupdate.getGraduations());
+                        setStduyStatus(StudyStatusEnum.fromCode(feeobjupdate.getQuartername()));
+                        setSource(StudentTypeEnum.fromCode(feeobjupdate.getResourcename()));
+                        setMobile(feeobjupdate.getTelephone());
+                        setFamilyMobile(feeobjupdate.getJzlxdh());
+                        setFamilyAddress(feeobjupdate.getAddress());
+                        setFirstAmbition(majorSetMap.get(feeobjupdate.getSpeccode()));
+                        setFirstAmbitionId(majorSetMap.get(feeobjupdate.getSpeccode()));
+                        setSecondAmbition(majorSetMap.get(feeobjupdate.getZytjspec()));
+                        setSecondAmbitionId(majorSetMap.get(feeobjupdate.getZytjspec()));
+                        setGender(GenderDictionaryEnum.getCode(feeobjupdate.getSex()));
+                        setEnrollmentPlanId(planId);
+                        setCreateDate(new Date());
+                    }}
+            );
+        }
+
+        if(!updateList.isEmpty()){
+            newStudentService.updateBatchById(updateList);
+        }
+        if(!insertList.isEmpty()){
+            newStudentService.saveBatch(insertList);
+        }
+
+    }
+}

+ 55 - 95
src/main/java/com/xjrsoft/module/student/entity/PbCseFeeobjupdate.java

@@ -21,160 +21,120 @@ public class PbCseFeeobjupdate implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    /**
-    * 
-    */
+    
     @ApiModelProperty("学生主键")
     private String pkfeeobj;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("学号")
     private String studentcode;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("姓名")
     private String feeobjname;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("身份证号")
     private String personalid;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("民族")
     private String nationality;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("出生年月")
     private String birthday;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("所属院系编码")
     private String deptcode;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("所属院系名称")
     private String deptname;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("所属专业代码")
     private String speccode;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("所属专业名称")
     private String specname;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("所属班级代码")
     private String classcode;
-    /**
-    * 
-    */
+
+    @ApiModelProperty("缴费状态")
+    private String paymnystate;
+    
     @ApiModelProperty("所属班级名称")
     private String classname;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("学制")
     private String ratetypename;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("性别")
     private String sex;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("在校状态")
     private String state;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("入校年度")
     private String enteryear;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("离校年度")
     private String leaveyear;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("学生联系电话")
     private String telephone;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("家长联系电话")
     private String jzlxdh;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("志愿调剂专业")
     private String zytjspec;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("身高")
     private String sg;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("体重")
     private String tz;
-    /**
-    * 
-    */
+
+    @ApiModelProperty("应往届")
+    private String previous;
+
     @ApiModelProperty("招生老师")
     private String recruiters;
-    /**
-    * 
-    */
+    
+    @ApiModelProperty("招生区域")
+    private String area;
+
+    @ApiModelProperty("省")
+    private String province;
+
+    @ApiModelProperty("市")
+    private String city;
+
+    @ApiModelProperty("区")
+    private String myarea;
+    
     @ApiModelProperty("毕业学校")
     private String graduations;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("备注")
     private String remarks;
-    /**
-    * 
-    */
+
+    @ApiModelProperty("报名时间")
+    private String userdef3;
+
+    @ApiModelProperty("招生季(1春招、2秋招)")
+    private String userdef6;
+    
     @ApiModelProperty("资助类型")
     private String resourcename;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("住宿类型")
     private String quartername;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("地址")
     private String address;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("创建时间")
     private String cratetime;
-    /**
-    * 
-    */
+    
     @ApiModelProperty("更新时间")
     private String updatetime;
-    /**
-    * 
-    */
-    @ApiModelProperty("")
-    private Long rn;
+    
 
 }