diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java index 02846ff..670bbcf 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceConfig.java @@ -29,6 +29,12 @@ public class DataSourceConfig { return DataSourceBuilder.create().build(); } + @Bean(name = "yxy") + @ConfigurationProperties(prefix = "datasource.yxy") + public DataSource dataSource3() { + return DataSourceBuilder.create().build(); + } + @Bean(name="dynamicDataSource") @Primary //优先使用,多数据源 @@ -36,12 +42,14 @@ public class DataSourceConfig { DynamicDataSource dynamicDataSource = new DynamicDataSource(); DataSource master = dataSource1(); DataSource slave = dataSource2(); + DataSource yxy = dataSource3(); //设置默认数据源 dynamicDataSource.setDefaultTargetDataSource(master); //配置多数据源 Map map = new HashMap<>(); map.put(DataSourceType.Master.getName(), master); //key需要跟ThreadLocal中的值对应 map.put(DataSourceType.Slave.getName(), slave); + map.put(DataSourceType.Yxy.getName(), yxy); dynamicDataSource.setTargetDataSources(map); return dynamicDataSource; } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java index 2c948dc..e5e0d3c 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DataSourceType.java @@ -4,7 +4,9 @@ public enum DataSourceType { Master("master"), - Slave("slave"); + Slave("slave"), + + Yxy("yxy"); private String name; diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java index a89b326..91a38a0 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/datasource/DynamicDataSource.java @@ -1,7 +1,5 @@ package com.sincere.quartz.datasource; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; /** @@ -9,11 +7,8 @@ import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; */ public class DynamicDataSource extends AbstractRoutingDataSource { - private Logger logger = LoggerFactory.getLogger(this.getClass()); - @Override protected Object determineCurrentLookupKey() { - logger.info("数据源为{}",JdbcContextHolder.getDataSource()); return JdbcContextHolder.getDataSource(); } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java index b3b1922..941360b 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/BindPushJob.java @@ -28,7 +28,7 @@ import java.util.Map; @Service public class BindPushJob { - private Logger logger = LoggerFactory.getLogger(KQJob.class); + private Logger logger = LoggerFactory.getLogger(BindPushJob.class); @Autowired diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java index a39a0a9..a223e62 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/job/SyncJob.java @@ -23,7 +23,7 @@ public class SyncJob { @Scheduled(cron = "0 0 23 * * ? ") public void Sync(){ //翼校通的同步 之后还有钉钉的同步等等 - yxyWriteService.sync(); - //yxyReadService.sync(); + yxyWriteService.sync(); + yxyReadService.sync(); } } diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java new file mode 100644 index 0000000..b74c005 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/mapper/YxyMapper.java @@ -0,0 +1,20 @@ +package com.sincere.quartz.mapper; + +import com.sincere.quartz.model.YxyAgency; +import com.sincere.quartz.model.YxyStudent; +import com.sincere.quartz.model.YxyTeacher; + +public interface YxyMapper { + + int updateAgency() ; + + int updateTeacher() ; + + int updateStudent() ; + + int insertAgency(YxyAgency agency) ; + + int insertTeacher(YxyTeacher teacher) ; + + int insertStudent(YxyStudent student) ; +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyAgency.java b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyAgency.java new file mode 100644 index 0000000..dfd64fb --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyAgency.java @@ -0,0 +1,32 @@ +package com.sincere.quartz.model; + +public class YxyAgency { + + private String deptId ; + private String deptName ; + private String superDeptId ; + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getSuperDeptId() { + return superDeptId; + } + + public void setSuperDeptId(String superDeptId) { + this.superDeptId = superDeptId; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java new file mode 100644 index 0000000..d61ab7d --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyStudent.java @@ -0,0 +1,41 @@ +package com.sincere.quartz.model; + +public class YxyStudent { + + private String userId ; + private String classId ; + private String name ; + private String account ; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getClassId() { + return classId; + } + + public void setClassId(String classId) { + this.classId = classId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java new file mode 100644 index 0000000..b75a37a --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/model/YxyTeacher.java @@ -0,0 +1,41 @@ +package com.sincere.quartz.model; + +public class YxyTeacher { + + private String userId ; + private String account ; + private String name ; + private String deptId ; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public String getAccount() { + return account; + } + + public void setAccount(String account) { + this.account = account; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDeptId() { + return deptId; + } + + public void setDeptId(String deptId) { + this.deptId = deptId; + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java new file mode 100644 index 0000000..44bd998 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/YxyService.java @@ -0,0 +1,20 @@ +package com.sincere.quartz.service; + +import com.sincere.quartz.model.YxyAgency; +import com.sincere.quartz.model.YxyStudent; +import com.sincere.quartz.model.YxyTeacher; + +public interface YxyService { + + int updateAgency() ; + + int updateTeacher() ; + + int updateStudent() ; + + int insertAgency(YxyAgency agency) ; + + int insertTeacher(YxyTeacher teacher) ; + + int insertStudent(YxyStudent student) ; +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java new file mode 100644 index 0000000..bede705 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/service/impl/YxyServiceImpl.java @@ -0,0 +1,54 @@ +package com.sincere.quartz.service.impl; + +import com.sincere.quartz.datasource.DataSourceType; +import com.sincere.quartz.datasource.MyDataSource; +import com.sincere.quartz.mapper.YxyMapper; +import com.sincere.quartz.model.YxyAgency; +import com.sincere.quartz.model.YxyStudent; +import com.sincere.quartz.model.YxyTeacher; +import com.sincere.quartz.service.YxyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class YxyServiceImpl implements YxyService { + + @Autowired + YxyMapper yxyMapper ; + + @Override + @MyDataSource(DataSourceType.Yxy) + public int updateAgency() { + return yxyMapper.updateAgency(); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int updateTeacher() { + return yxyMapper.updateTeacher(); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int updateStudent() { + return yxyMapper.updateStudent(); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int insertAgency(YxyAgency agency) { + return yxyMapper.insertAgency(agency); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int insertTeacher(YxyTeacher teacher) { + return yxyMapper.insertTeacher(teacher); + } + + @Override + @MyDataSource(DataSourceType.Yxy) + public int insertStudent(YxyStudent student) { + return yxyMapper.insertStudent(student); + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java index ee9125a..0f20340 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYReadService.java @@ -6,6 +6,10 @@ import com.sincere.common.util.DateUtils; import com.sincere.common.util.HttpClientUtils; import com.sincere.common.util.Xml2JsonUtils; import com.sincere.quartz.feign.ScFeign; +import com.sincere.quartz.model.YxyAgency; +import com.sincere.quartz.model.YxyStudent; +import com.sincere.quartz.model.YxyTeacher; +import com.sincere.quartz.service.YxyService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -32,45 +36,113 @@ public class YXYReadService { private static String getALlStudent_method = "getStudentInfo"; private static String getAddStudent = "http://122.229.30.149:8282/DataSynService/GetIncrementStudentInfo" ; private static String getAddStudent_method = "getIncrementStudentInfo" ; - private static String getAllDept = "http://122.229.30.149:8282/DataSynService/GetDeptInfo" ; private static String getALlDept_method = "getDeptInfo"; @Autowired - ScFeign scFeign ; + YxyService yxyService ; public void sync(){ + List areaCodeList = new ArrayList<>(); + areaCodeList.add("0571") ; + areaCodeList.add("0572") ; + areaCodeList.add("0573") ; + areaCodeList.add("0574") ; + areaCodeList.add("0575") ; + areaCodeList.add("0576") ; + areaCodeList.add("0577") ; + areaCodeList.add("0578") ; + areaCodeList.add("0579") ; + areaCodeList.add("0580") ; + + yxyService.updateAgency(); + yxyService.updateStudent(); + yxyService.updateTeacher(); + for(String areaCode : areaCodeList){ + // 先获取学校,部门,年级 班级 + // 再根据学校 获取老师 学生 + List list = new ArrayList(); + list.add(SI); + list.add(getPassword(SI_CODE)); + list.add(areaCode); + String wsdl =getAllDept ; + String ns = nameSpace; + String method = getALlDept_method; + JSONArray jsonArray = getMessage(wsdl, ns, method, list); + if(jsonArray != null){ + List schoolList = new ArrayList<>(); + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyAgency agency = new YxyAgency() ; + agency.setDeptId(object.get("deptID").toString()); + agency.setDeptName(object.get("deptName").toString()); + agency.setSuperDeptId(object.get("superDeptID").toString()); + if(areaCode.equals(object.get("superDeptID").toString())){ + schoolList.add(object.get("deptID").toString()) ; + } + yxyService.insertAgency(agency); + } + for(String schoolId : schoolList){ + syncTeacher(schoolId) ; + syncStudent(schoolId) ; + } + } + } + } + + + private void syncStudent(String schoolId){ List list = new ArrayList(); list.add(SI); list.add(getPassword(SI_CODE)); - list.add("05750400"); - String wsdl =getAllTeacher ; + list.add(schoolId); + String wsdl =getAllStudent ; String ns = nameSpace; - String method = getAllTeacher_method; + String method = getALlStudent_method; JSONArray jsonArray = getMessage(wsdl, ns, method, list); - System.out.println(jsonArray.toJSONString()); - } - - private void syncDept(){ - - } - - private void syncTeacher(){ - + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyStudent student = new YxyStudent(); + student.setClassId(object.get("classID").toString()); + student.setAccount(object.get("account").toString()); + student.setName(object.get("name").toString()); + student.setUserId(object.get("userID").toString()); + yxyService.insertStudent(student); + } + } } - private void syncStudent(){ - + private void syncTeacher(String schoolId){ + List list = new ArrayList(); + list.add(SI); + list.add(getPassword(SI_CODE)); + list.add(schoolId); + String wsdl =getAllTeacher ; + String ns = nameSpace; + String method = getAllTeacher_method; + JSONArray jsonArray = getMessage(wsdl, ns, method, list); + if(jsonArray != null){ + for(int i = 0 ; i < jsonArray.size() ; i++){ + JSONObject object = (JSONObject) jsonArray.get(i) ; + YxyTeacher teacher = new YxyTeacher(); + teacher.setDeptId(object.get("classID").toString()); + teacher.setAccount(object.get("account").toString()); + teacher.setName(object.get("name").toString()); + teacher.setUserId(object.get("userID").toString()); + yxyService.insertTeacher(teacher); + } + } } private JSONArray getMessage(String wsdl, String ns, String method, List list){ String resultXml = HttpClientUtils.invoiceWebService(wsdl,ns,method,list); if(StringUtils.isNotBlank(resultXml)){ - int begin = resultXml.indexOf("<JXT"); - int end = resultXml.indexOf("</JXT"); - String str = resultXml.substring(begin, end+9); - str = str.replaceAll("<", "<"); - str = str.replaceAll(">", ">"); + resultXml = resultXml.replaceAll("<", "<"); + resultXml = resultXml.replaceAll(">", ">"); + int begin = resultXml.indexOf(" + + + + + update Agency set state = 0 where state = 1 + + + + update Teacher set state = 0 where state = 1 + + + + update Student set state = 0 where state = 1 + + + + + insert into Agency(deptID , deptName , superDeptID , intime , state) + values (#{deptId} , #{deptName} , #{superDeptId} , GETDATE() , 1) + + + + insert into Teacher(userID , account , name , deptID , intime , state) + values (#{userId} , #{account} , #{name} , #{deptId} , GETDATE() , 1) + + + + insert into Student(userID , account , name , classID , intime , state , isCard , isEquipment , card_crafts) + values (#{userId} , #{account} , #{name} , #{classId} , GETDATE() , 1 ,0,0,2) + + -- libgit2 0.21.0