wangwei 6 năm trước cách đây
mục cha
commit
7afd349e4d

+ 6 - 2
examcloud-task-api-provider/src/main/java/cn/com/qmth/examcloud/task/api/provider/DataSyncCloudServiceProvider.java

@@ -73,7 +73,7 @@ public class DataSyncCloudServiceProvider extends ControllerSupport
 		r.setStudentCode(req.getStudentCode());
 		r.setSyncType(req.getSyncType());
 
-		dataSyncService.syncStudent(r);
+		dataSyncService.sync("syncStudent", r, true);
 
 		SyncStudentResp resp = new SyncStudentResp();
 		return resp;
@@ -108,8 +108,12 @@ public class DataSyncCloudServiceProvider extends ControllerSupport
 		r.setRootOrgId(req.getRootOrgId());
 		r.setStudentCode(req.getStudentCode());
 		r.setStudentName(req.getStudentName());
+		r.setStudentId(req.getStudentId());
+		r.setOrgId(req.getOrgId());
+		r.setOrgName(req.getOrgName());
+		r.setOrgCode(req.getOrgCode());
 
-		dataSyncService.syncExamStudent(r);
+		dataSyncService.sync("syncExamStudent", r, true);
 		SyncExamStudentResp resp = new SyncExamStudentResp();
 		return resp;
 	}

+ 50 - 0
examcloud-task-base/src/main/java/cn/com/qmth/examcloud/task/base/ScheduleJob.java

@@ -49,6 +49,16 @@ public class ScheduleJob implements Serializable {
 	 */
 	private boolean stateful = true;
 
+	private String ext1;
+
+	private String ext2;
+
+	private String ext3;
+
+	private String ext4;
+
+	private String ext5;
+
 	public Long getJobId() {
 		return jobId;
 	}
@@ -113,4 +123,44 @@ public class ScheduleJob implements Serializable {
 		this.stateful = stateful;
 	}
 
+	public String getExt1() {
+		return ext1;
+	}
+
+	public void setExt1(String ext1) {
+		this.ext1 = ext1;
+	}
+
+	public String getExt2() {
+		return ext2;
+	}
+
+	public void setExt2(String ext2) {
+		this.ext2 = ext2;
+	}
+
+	public String getExt3() {
+		return ext3;
+	}
+
+	public void setExt3(String ext3) {
+		this.ext3 = ext3;
+	}
+
+	public String getExt4() {
+		return ext4;
+	}
+
+	public void setExt4(String ext4) {
+		this.ext4 = ext4;
+	}
+
+	public String getExt5() {
+		return ext5;
+	}
+
+	public void setExt5(String ext5) {
+		this.ext5 = ext5;
+	}
+
 }

+ 5 - 0
examcloud-task-dao/src/main/java/cn/com/qmth/examcloud/task/dao/DataSyncRepo.java

@@ -1,5 +1,7 @@
 package cn.com.qmth.examcloud.task.dao;
 
+import java.util.List;
+
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;
@@ -12,4 +14,7 @@ public interface DataSyncRepo
 			JpaRepository<DataSyncEntity, Long>,
 			JpaSpecificationExecutor<DataSyncEntity> {
 
+	List<DataSyncEntity> findTop10ByComponentAndMethodNameOrderById(String component,
+			String methodName);
+
 }

+ 10 - 46
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/DataSyncService.java

@@ -1,11 +1,6 @@
 package cn.com.qmth.examcloud.task.service;
 
-import cn.com.qmth.examcloud.commons.api.request.SyncCourseReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncExamReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncExamStudentReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncOrgReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncSpecialtyReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncStudentReq;
+import cn.com.qmth.examcloud.commons.api.request.SyncBaseRequest;
 
 /**
  * 类注释
@@ -17,57 +12,26 @@ import cn.com.qmth.examcloud.commons.api.request.SyncStudentReq;
 public interface DataSyncService {
 
 	/**
-	 * 同步课程
+	 * 同步
 	 *
 	 * @author WANGWEI
+	 * @param methodName
 	 * @param req
+	 * @param retry
 	 * @return
 	 */
-	void syncCourse(SyncCourseReq req);
+	boolean sync(String methodName, SyncBaseRequest req, Boolean retry);
 
 	/**
-	 * 同步机构
+	 * 同步
 	 *
 	 * @author WANGWEI
+	 * @param component
+	 * @param methodName
 	 * @param req
+	 * @param retry
 	 * @return
 	 */
-	void syncOrg(SyncOrgReq req);
-
-	/**
-	 * 同步学生
-	 *
-	 * @author WANGWEI
-	 * @param req
-	 * @return
-	 */
-	void syncStudent(SyncStudentReq req);
-
-	/**
-	 * 同步考生
-	 *
-	 * @author WANGWEI
-	 * @param req
-	 * @return
-	 */
-	void syncExamStudent(SyncExamStudentReq req);
-
-	/**
-	 * 同步专业
-	 *
-	 * @author WANGWEI
-	 * @param req
-	 * @return
-	 */
-	void syncSpecialty(SyncSpecialtyReq req);
-
-	/**
-	 * 同步考试
-	 *
-	 * @author WANGWEI
-	 * @param req
-	 * @return
-	 */
-	void syncExam(SyncExamReq req);
+	boolean sync(String component, String methodName, SyncBaseRequest req, Boolean retry);
 
 }

+ 25 - 51
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/impl/DataSyncServiceImpl.java

@@ -10,12 +10,6 @@ import org.springframework.stereotype.Service;
 
 import cn.com.qmth.examcloud.commons.api.HandleSyncCloudService;
 import cn.com.qmth.examcloud.commons.api.request.SyncBaseRequest;
-import cn.com.qmth.examcloud.commons.api.request.SyncCourseReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncExamReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncExamStudentReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncOrgReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncSpecialtyReq;
-import cn.com.qmth.examcloud.commons.api.request.SyncStudentReq;
 import cn.com.qmth.examcloud.commons.base.exception.StatusException;
 import cn.com.qmth.examcloud.commons.base.util.JsonUtil;
 import cn.com.qmth.examcloud.commons.base.util.PropertiesUtil;
@@ -40,14 +34,8 @@ public class DataSyncServiceImpl implements DataSyncService {
 	@Autowired
 	HandleSyncCloudService handleSyncCloudService;
 
-	/**
-	 * 方法注释
-	 *
-	 * @author WANGWEI
-	 * @param methodName
-	 * @param req
-	 */
-	private void sync(String methodName, SyncBaseRequest req) {
+	@Override
+	public boolean sync(String methodName, SyncBaseRequest req, Boolean retry) {
 		String group = PropertiesUtil.getString("$sync." + methodName + ".group");
 		if (StringUtils.isBlank(group)) {
 			throw new StatusException("T-001001", "group is not configured");
@@ -59,15 +47,29 @@ public class DataSyncServiceImpl implements DataSyncService {
 			throw new StatusException("T-001001", "no component");
 		}
 
+		boolean successful = true;
 		for (String component : componentList) {
-			String url = PropertiesUtil
-					.getString("$sync." + methodName + ".component." + component);
-			req.setUrl(url);
-			try {
-				Method method = handleSyncCloudService.getClass().getMethod(methodName,
-						req.getClass());
-				method.invoke(handleSyncCloudService, req);
-			} catch (Exception e) {
+			boolean result = sync(component, methodName, req, retry);
+			if (!result) {
+				successful = false;
+			}
+		}
+
+		return successful;
+	}
+
+	@Override
+	public boolean sync(String component, String methodName, SyncBaseRequest req, Boolean retry) {
+		String url = PropertiesUtil.getString("$sync." + methodName + ".component." + component);
+		req.setUrl(url);
+
+		boolean successful = false;
+		try {
+			Method method = handleSyncCloudService.getClass().getMethod(methodName, req.getClass());
+			method.invoke(handleSyncCloudService, req);
+			successful = true;
+		} catch (Exception e) {
+			if (retry) {
 				DataSyncEntity entity = new DataSyncEntity();
 				entity.setComponent(component);
 				entity.setMethodName(methodName);
@@ -77,36 +79,8 @@ public class DataSyncServiceImpl implements DataSyncService {
 				dataSyncRepo.saveAndFlush(entity);
 			}
 		}
-	}
-
-	@Override
-	public void syncCourse(SyncCourseReq req) {
-		sync("syncCourse", req);
-	}
-
-	@Override
-	public void syncOrg(SyncOrgReq req) {
-		sync("syncOrg", req);
-	}
-
-	@Override
-	public void syncStudent(SyncStudentReq req) {
-		sync("syncStudent", req);
-	}
-
-	@Override
-	public void syncExamStudent(SyncExamStudentReq req) {
-		sync("syncExamStudent", req);
-	}
-
-	@Override
-	public void syncSpecialty(SyncSpecialtyReq req) {
-		sync("syncSpecialty", req);
-	}
 
-	@Override
-	public void syncExam(SyncExamReq req) {
-		sync("syncExam", req);
+		return successful;
 	}
 
 }

+ 29 - 0
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/job/DataSyncTask.java

@@ -1,11 +1,17 @@
 package cn.com.qmth.examcloud.task.service.job;
 
+import java.util.List;
+
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import cn.com.qmth.examcloud.task.base.AbstractTask;
 import cn.com.qmth.examcloud.task.base.ScheduleJob;
 import cn.com.qmth.examcloud.task.base.TaskTracker;
+import cn.com.qmth.examcloud.task.dao.DataSyncRepo;
+import cn.com.qmth.examcloud.task.dao.entity.DataSyncEntity;
+import cn.com.qmth.examcloud.task.service.DataSyncService;
 
 /**
  * 数据同步任务
@@ -20,6 +26,12 @@ public class DataSyncTask extends AbstractTask {
 	@Autowired
 	TaskTracker TaskTracker;
 
+	@Autowired
+	DataSyncRepo dataSyncRepo;
+
+	@Autowired
+	DataSyncService dataSyncService;
+
 	@Override
 	public TaskTracker getTaskTracker() {
 		return TaskTracker;
@@ -28,6 +40,23 @@ public class DataSyncTask extends AbstractTask {
 	@Override
 	public void run(ScheduleJob scheduleJob) throws Exception {
 
+		String component = scheduleJob.getExt1();
+		String methodName = scheduleJob.getExt1();
+
+		while (true) {
+			List<DataSyncEntity> list = dataSyncRepo
+					.findTop10ByComponentAndMethodNameOrderById(component, methodName);
+
+			if (CollectionUtils.isEmpty(list)) {
+				break;
+			}
+
+			for (DataSyncEntity cur : list) {
+				String paramType = cur.getParamType();
+
+			}
+
+		}
 	}
 
 }

+ 8 - 1
examcloud-task-service/src/main/java/cn/com/qmth/examcloud/task/service/job/ExamStudentImportDataProcessingTask.java

@@ -297,8 +297,12 @@ public class ExamStudentImportDataProcessingTask extends AbstractTask {
 			r.setRootOrgId(examStudentBean.getRootOrgId());
 			r.setStudentCode(examStudentBean.getStudentCode());
 			r.setStudentName(examStudentBean.getStudentName());
+			r.setStudentId(examStudentBean.getStudentId());
+			r.setOrgId(examStudentBean.getOrgId());
+			r.setOrgName(examStudentBean.getOrgName());
+			r.setOrgCode(examStudentBean.getOrgCode());
 
-			dataSyncService.syncExamStudent(r);
+			dataSyncService.sync("syncExamStudent", r, true);
 
 			entity.setStudentId(studentId);
 			entity.setStatusCode("200");
@@ -313,6 +317,9 @@ public class ExamStudentImportDataProcessingTask extends AbstractTask {
 			entity.setStatusDesc(e.getDesc());
 			examStudentTempRepo.saveAndFlush(entity);
 			return;
+		} catch (Exception e) {
+			// ignore
+			taskLog.error("unexpected.", e);
 		}
 
 	}

+ 7 - 0
examcloud-task-starter/src/main/java/cn/com/qmth/examcloud/task/starter/config/JobsStartup.java

@@ -33,6 +33,13 @@ public class JobsStartup {
 			scheduleJob.setSpringBean(jobEntity.getSpringBean());
 			scheduleJob.setCronExpression(jobEntity.getCronExpression());
 			scheduleJob.setStateful(jobEntity.getStateful());
+
+			scheduleJob.setExt1(jobEntity.getExt1());
+			scheduleJob.setExt2(jobEntity.getExt2());
+			scheduleJob.setExt3(jobEntity.getExt3());
+			scheduleJob.setExt4(jobEntity.getExt4());
+			scheduleJob.setExt5(jobEntity.getExt5());
+
 			quartzManager.addJob(scheduleJob);
 		}