diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/SyncDataService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/SyncDataService.java index aefa39e..36a744d 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/SyncDataService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/SyncDataService.java @@ -68,7 +68,7 @@ public class SyncDataService { SyncDataModel model = new SyncDataModel(); model.setStatus(1); - model.setJsonData(JsonUtil.obj2JsonString(model)); + model.setJsonData(JsonUtil.obj2JsonString(syncMysqlDataModel)); model.setAction("POSTMYSQL"); model.setCreated(new Date()); model.setClassName("syncmysql"); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java index 1e52abd..fe68626 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientCourseFacade.java @@ -412,6 +412,19 @@ public class PatientCourseFacade { } } + PatientCourseQuery patientCourseQuery = new PatientCourseQuery(); + patientCourseQuery.setYn(YnEnums.YES.getId()); + //状态 1预约,2签到 + patientCourseQuery.setStatus(1); + patientCourseQuery.setId(patientCourseId); + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + if (!CollectionUtils.isNotEmpty(patientCourseModels)) + { + objectResponse.setErrorcode(ErrorCodeConstants.DATA_EXPIRE); + objectResponse.setErrormsg("您签到的课程还没有预约,请预约后签到!"); + return objectResponse; + } + if (patientCourseId != null) { PatientCourseModel model = new PatientCourseModel(); diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MysqlDataInterceptor.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MysqlDataInterceptor.java index f817795..5e0688f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MysqlDataInterceptor.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/inteceptor/MysqlDataInterceptor.java @@ -3,6 +3,7 @@ package com.lyms.platform.operate.web.inteceptor; import com.lyms.platform.biz.service.SyncDataService; import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.operate.web.utils.SendMysqlSyncDatUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.ibatis.executor.Executor; @@ -15,6 +16,7 @@ import org.apache.ibatis.reflection.MetaObject; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.type.TypeHandlerRegistry; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import java.sql.Statement; import java.text.DateFormat; @@ -24,6 +26,7 @@ import java.util.*; * 眼科和听筛执行的sql保存下来 然后把区域执行的这些sql同步到线上执行 * Created by Administrator on 2017-04-24. */ +@Lazy @Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class,Object.class }), @Signature(type= ResultSetHandler.class, method = "handleResultSets", args = {Statement.class}) @@ -76,8 +79,8 @@ public class MysqlDataInterceptor implements Interceptor { sql = getSql(configuration, boundSql, sqlId); if (isSyncTable(sql)) { - System.out.println("==============delete or update sync sql = " + sql); - //syncDataService.savePostMysql(sql,sqlId); + System.out.println("delete or update sync sql = " + sql); + SendMysqlSyncDatUtil.addSqlToQueue1(sql,sqlId); sql = null; } @@ -101,8 +104,8 @@ public class MysqlDataInterceptor implements Interceptor { { List list = (ArrayList)returnValue; if (CollectionUtils.isNotEmpty(list)) { - System.out.println("============add sync sql = " + sql); -// syncDataService.savePostMysql(sql,sqlId); + System.out.println("add sync sql = " + sql); + SendMysqlSyncDatUtil.addSqlToQueue1(sql,sqlId); sql = null; } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java index 635e684..01f7a4e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/SendMysqlSyncDatUtil.java @@ -1,5 +1,6 @@ package com.lyms.platform.operate.web.utils; +import com.lyms.platform.biz.service.SyncDataService; import com.lyms.platform.common.utils.ExceptionUtils; import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.PropertiesUtils; @@ -8,6 +9,7 @@ import com.lyms.platform.operate.web.request.SqlRequest; import org.apache.commons.codec.binary.Base64; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.HashSet; @@ -23,7 +25,12 @@ import java.util.concurrent.LinkedBlockingQueue; public class SendMysqlSyncDatUtil implements InitializingBean { + + @Autowired + private SyncDataService syncDataService; + private static BlockingQueue syncSqlQueue = new LinkedBlockingQueue(200); + private static BlockingQueue syncSqlQueue1 = new LinkedBlockingQueue(200); //配置文件中配置的要同步的区域的url地址 private static Set urls = new HashSet<>(); @@ -54,6 +61,16 @@ public class SendMysqlSyncDatUtil implements InitializingBean { System.out.println("syncSqlQueue size = " + syncSqlQueue.size()); } + + public static void addSqlToQueue1(String sql ,String sqlId) + { + SqlRequest request = new SqlRequest(); + request.setSql(Base64.encodeBase64String(sql.getBytes())); + request.setSqlId(sqlId); + syncSqlQueue1.add(request); + System.out.println("syncSqlQueue1 size = " + syncSqlQueue.size()); + } + /** * 初始化启动发送sql的线程 * 线上才启动 @@ -61,14 +78,18 @@ public class SendMysqlSyncDatUtil implements InitializingBean { */ @Override public void afterPropertiesSet() throws Exception { - System.out.println("init ........."); + System.out.println("init sync sql thread........."); Thread thread = new HandleThread(); + Thread thread1 = new HandleThread1(); thread.setName("syncMysqlThread"); + thread1.setName("syncMysqlThread1"); thread.start(); + thread1.start(); } /** + * 线上往区域同步时sql * 从队列中取出一个个取出来发送 */ private class HandleThread extends Thread { @@ -99,7 +120,32 @@ public class SendMysqlSyncDatUtil implements InitializingBean { } } } catch (Exception e) { - ExceptionUtils.catchException(e, "HandleThread thread error." + request); + syncSqlQueue.add(request); + ExceptionUtils.catchException(e, "HandleThread syncSqlQueue thread error." + request); + } + } + } + } + + + /** + * 区域同步的sql保存到同步表 然后线上把sql获取到在线上执行 + */ + private class HandleThread1 extends Thread { + + @Override + public void run() { + SqlRequest request = null; + while (true) { + try { + Thread.sleep(3000); + request = syncSqlQueue1.take(); + System.out.println(request); + syncDataService.savePostMysql(request.getSql(),request.getSqlId()); + + } catch (Exception e) { + syncSqlQueue1.add(request); + ExceptionUtils.catchException(e, "HandleThread syncSqlQueue1 thread error." + request); } } }