diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java index 1f3c5cd..aa29a36 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/PatientCourseService.java @@ -29,6 +29,16 @@ public class PatientCourseService { return patientCourseDao.queryPatientCourseList(query.addOrder(Sort.Direction.DESC, "created")); } + public List queryPatientCourseList(PatientCourseQuery patientCourseQuery,String sort) + { + MongoQuery query = patientCourseQuery.convertToQuery(); + if (StringUtils.isNotEmpty(patientCourseQuery.getNeed())) { + patientCourseQuery.mysqlBuild(patientCourseDao.queryPatientCourseListCount(patientCourseQuery.convertToQuery())); + query.start(patientCourseQuery.getOffset()).end(patientCourseQuery.getLimit()); + } + return patientCourseDao.queryPatientCourseList(query.addOrder(Sort.Direction.DESC,sort)); + } + public void addPatientCourse(PatientCourseModel model) { patientCourseDao.addPatientCourse(model); } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java index 59d6eac..e913020 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/PatientCourseQuery.java @@ -8,6 +8,7 @@ import com.lyms.platform.common.dao.operator.MongoQuery; import org.springframework.data.mongodb.core.query.Criteria; import java.util.Date; +import java.util.List; /** * 孕妇预约和签到 @@ -47,6 +48,8 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue //patientid private String patientId; + private List patientIds; + //课程id private String courseId; @@ -100,6 +103,10 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue condition = condition.and("patientId", patientId, MongoOper.IS); } + if (null != patientIds) { + condition = condition.and("patientId", patientIds, MongoOper.IN); + } + if (null != courseId) { condition = condition.and("courseId", courseId, MongoOper.IS); } @@ -135,6 +142,14 @@ public class PatientCourseQuery extends BaseQuery implements IConvertToNativeQue return condition.toMongoQuery(); } + public List getPatientIds() { + return patientIds; + } + + public void setPatientIds(List patientIds) { + this.patientIds = patientIds; + } + public String getQueryNo() { return queryNo; } 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 e68c9a1..5fad8e4 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 @@ -533,11 +533,34 @@ public class PatientCourseFacade { result.put("limitNum", model.getLimitNum() == null ? "0" : String.valueOf(model.getLimitNum())); patientCourseQuery.setCourseId(model.getId()); - patientCourseQuery.setPatientId(patientId); + List patids = new ArrayList<>(); + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setYn(YnEnums.YES.getId()); + patientsQuery.setId(patientId); + List patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) { + + Patients patients = patientses.get(0); + patientsQuery.setId(null); + patientsQuery.setPid(patients.getPid()); + patientsQuery.setDesc("true"); + patientsQuery.setSort("created"); + patientses = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patientses)) + { + for (Patients pat : patientses) + { + patids.add(pat.getId()); + } + } + } + + patientCourseQuery.setPatientIds(patids); Integer patientStatus = 0; - List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery); + List patientCourseModels = patientCourseService.queryPatientCourseList(patientCourseQuery,"status"); if (CollectionUtils.isNotEmpty(patientCourseModels)) { patientStatus = patientCourseModels.get(0).getStatus(); 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 77d053f..385d8f7 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 @@ -1,6 +1,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; @@ -14,13 +15,14 @@ import org.apache.ibatis.plugin.*; 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 java.sql.Statement; import java.text.DateFormat; import java.util.*; /** - * 同步线上mysql的操作到区域 + * 眼科和听筛执行的sql保存下来 然后把区域执行的这些sql同步到线上执行 * Created by Administrator on 2017-04-24. */ @Intercepts({ @@ -29,6 +31,10 @@ import java.util.*; }) public class MysqlDataInterceptor implements Interceptor { + + @Autowired + private SyncDataService syncDataService; + //同步的表 private static Set uses = new HashSet<>(); static { @@ -71,10 +77,9 @@ public class MysqlDataInterceptor implements Interceptor { sql = getSql(configuration, boundSql, sqlId); if (isSyncTable(sql)) { - System.out.println("==============delete or update sync sql = " + sql); - //发送要同步的sql sql = null; + syncDataService.savePostMysql(sql,sqlId); } } else if ("insert".equals(sqlCommandType.toLowerCase()) ) @@ -97,10 +102,8 @@ public class MysqlDataInterceptor implements Interceptor { List list = (ArrayList)returnValue; if (CollectionUtils.isNotEmpty(list)) { -// sql = sql.replaceFirst("\\(","(ID,"); -// sql = sql.substring(0,sql.lastIndexOf("(")+1)+list.get(0)+","+sql.substring(sql.lastIndexOf("(")+1,sql.length()); System.out.println("============add sync sql = " + sql); - //发送要同步的sql + syncDataService.savePostMysql(sql,sqlId); sql = null; } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java index 107a515..66f1ecd 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/SyncDataTaskService.java @@ -3,42 +3,34 @@ package com.lyms.platform.operate.web.service; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.enums.YnEnums; import com.lyms.platform.common.pojo.SyncDataModel; -import com.lyms.platform.common.pojo.UpdateMultiData; -import com.lyms.platform.common.utils.*; -import com.lyms.platform.operate.web.request.GuideQuery; +import com.lyms.platform.common.pojo.SyncMysqlDataModel; +import com.lyms.platform.common.utils.DateUtil; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.common.utils.MongoSyncUtil; import com.lyms.platform.operate.web.utils.HttpClientUtil; -import com.lyms.platform.operate.web.utils.SSLClient; import com.lyms.platform.permission.model.Users; import com.lyms.platform.permission.model.UsersQuery; +import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; -import com.qiniu.util.Json; + import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.NameValuePair; -import org.apache.commons.httpclient.methods.PostMethod; + import org.apache.commons.io.FileUtils; -import org.apache.commons.lang.*; + + import org.apache.commons.lang.StringUtils; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.message.BasicNameValuePair; -import org.apache.http.util.EntityUtils; import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.data.domain.Sort; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; -import javax.print.attribute.standard.DateTimeAtCompleted; import java.io.File; +import java.io.UnsupportedEncodingException; import java.util.*; -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; /** * Created by riecard on 16/9/26. @@ -102,6 +94,8 @@ public class SyncDataTaskService { @Qualifier("commonThreadPool") private ThreadPoolTaskExecutor commonThreadPool; + @Autowired + private OrganizationService organizationService; /** * 该方法是区域或者单体医院部署的把数据定时往某个环境上传 @@ -155,9 +149,17 @@ public class SyncDataTaskService { public void run() { if (CollectionUtils.isNotEmpty(tempList)) { + boolean boo = false; StringBuffer ids = new StringBuffer(); for (SyncDataModel model : tempList) { - boolean boo = mongoSyncService.syncData(model.getAction(), model.getDataId(), model.getClassName(), model.getJsonData()); + if ("POSTMYSQL".equals(model.getAction())) + { + boo = exceSql(model.getJsonData()); + } + else + { + boo = mongoSyncService.syncData(model.getAction(), model.getDataId(), model.getClassName(), model.getJsonData()); + } if (boo) { ids.append(model.getId()); ids.append(","); @@ -189,6 +191,22 @@ public class SyncDataTaskService { } + private boolean exceSql(String json) + { + try { + SyncMysqlDataModel mysqlDataModel = JsonUtil.str2Obj(json, SyncMysqlDataModel.class); + if (mysqlDataModel != null && org.apache.commons.lang.StringUtils.isNotEmpty(mysqlDataModel.getSql())) + { + String sql = new String(org.apache.commons.codec.binary.Base64.decodeBase64(mysqlDataModel.getSql()), "utf-8"); + organizationService.execSql(sql); + } + } catch (UnsupportedEncodingException e) { + ExceptionUtils.catchException(e,"exce sql error. JSONDATA="+json); + } + return true; + } + + private String buildFX(String charResult) { if (StringUtils.isNotBlank(charResult)) { if (charResult.indexOf("高风险") >= 0) {