diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/BoneModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/BoneModel.java index 23e59e1..bbb28cf 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/BoneModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/BoneModel.java @@ -67,6 +67,17 @@ public class BoneModel extends BaseModel { private String cardNo; + //孕妇姓名 + private String username; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + public Integer getResult() { return result; } diff --git a/platform-operate-api/src/main/java/com/lyms/hospitalapi/dzfy/ConnTools.java b/platform-operate-api/src/main/java/com/lyms/hospitalapi/dzfy/ConnTools.java index 6b623dc..a752db4 100644 --- a/platform-operate-api/src/main/java/com/lyms/hospitalapi/dzfy/ConnTools.java +++ b/platform-operate-api/src/main/java/com/lyms/hospitalapi/dzfy/ConnTools.java @@ -10,7 +10,7 @@ import java.sql.SQLException; */ public class ConnTools { private static String hisDirverClassName = "oracle.jdbc.driver.OracleDriver"; - private static String hisUrl = "jdbc:oracle:thin:@192.168.200.60:1521:ZLHIS1"; + private static String hisUrl = "jdbc:oracle:thin:@//192.168.200.60:1521/ZLHIS"; private static String hisUser = "YCY"; private static String hisPassword = "123"; diff --git a/platform-operate-api/src/main/java/com/lyms/hospitalapi/hs/SyncHsPatientService.java b/platform-operate-api/src/main/java/com/lyms/hospitalapi/hs/SyncHsPatientService.java index 6af25cd..824170d 100644 --- a/platform-operate-api/src/main/java/com/lyms/hospitalapi/hs/SyncHsPatientService.java +++ b/platform-operate-api/src/main/java/com/lyms/hospitalapi/hs/SyncHsPatientService.java @@ -18,6 +18,8 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; @@ -25,7 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger; * Created by Administrator on 2020-04-10. */ @Service("syncHsPatientService") -public class SyncHsPatientService implements InitializingBean { +public class SyncHsPatientService { @Autowired private MongoTemplate mongoTemplate; @@ -33,34 +35,28 @@ public class SyncHsPatientService implements InitializingBean { @Qualifier("commonThreadPool") private ThreadPoolTaskExecutor commonThreadPool; - public AtomicInteger count = new AtomicInteger(0); - @Autowired private CommonService commonService; - - @Override - public void afterPropertiesSet() throws Exception { - //初始化数据 - //HsDataUtil.initData(mongoTemplate); - } - + private static final int BATCH_SIZE = 40; /** * 同步孕妇 */ public void synchsPatientData() { + //初始化数据 + HsDataUtil.initData(mongoTemplate); + int pageStart = 1; - int pageEnd = 4000; - - //查询孕妇档案 - String sql = " select * from (select ROWNUM AS rowno, temp.* from (select replace(mp.P_NO, '-', '') as PID, " + - " mp.*, p_birthday, p_name, vc.VC_CARDNO from MOMMY_PATIENT mp " + - " left join Plat_Patient pp on mp.p_platpatientid = pp.p_id left join (select max(VC_OPERTIME) as OPERTIME, " + - " VC_CARDNO, VC_PATIENTNO from MOMMY_VISITCARD group by VC_CARDNO, VC_PATIENTNO) vc " + - " on vc.VC_PATIENTNO = mp.P_NO order by mp.P_FILINGTIME desc) temp where ROWNUM <=pageEnd) pat where pat.rowno >= pageStart"; + int pageEnd = 400; + + do { - sql = sql.replace("pageEnd",String.valueOf(pageEnd)); - sql = sql.replace("pageStart",String.valueOf(pageStart)); + //查询孕妇档案 + String sql = " select * from (select ROWNUM AS rowno, temp.* from (select replace(mp.P_NO, '-', '') as PID, " + + " mp.*, p_birthday, p_name, vc.VC_CARDNO from MOMMY_PATIENT mp " + + " left join Plat_Patient pp on mp.p_platpatientid = pp.p_id left join (select max(VC_OPERTIME) as OPERTIME, " + + " VC_CARDNO, VC_PATIENTNO from MOMMY_VISITCARD group by VC_CARDNO, VC_PATIENTNO) vc " + + " on vc.VC_PATIENTNO = mp.P_NO order by mp.P_FILINGTIME desc) temp where ROWNUM <="+pageEnd+") pat where pat.rowno >= "+pageStart; System.out.println(sql); List> list = JDBCUtil.getOracleListDataBySql(sql); if (!CollectionUtils.isNotEmpty(list)) @@ -68,8 +64,14 @@ public class SyncHsPatientService implements InitializingBean { System.out.println("查询数据完成"); break; } - int batchSize = 200; + int batchSize = BATCH_SIZE; int end = 0; + + //线程数 + int threadCount = list.size() % BATCH_SIZE == 0 ? list.size() / BATCH_SIZE : list.size() / BATCH_SIZE + 1; + + CountDownLatch countDownLatch = new CountDownLatch(threadCount); + for (int i = 0; i < list.size(); i += batchSize) { end = (end + batchSize); if (end > list.size()) { @@ -77,32 +79,47 @@ public class SyncHsPatientService implements InitializingBean { } System.out.println("start:" + i + ",end:" + end); List> tempList = list.subList(i, end); - commonThreadPool.execute(new PatientWorker(tempList, mongoTemplate)); + commonThreadPool.execute(new PatientWorker(countDownLatch,tempList, mongoTemplate)); + } + pageStart += 400; + pageEnd += 400; + + try { + countDownLatch.await(20, TimeUnit.SECONDS); + Thread.sleep(5000); + } catch (InterruptedException e) { } - pageStart += 4000; - pageEnd += 4000; }while (true); } private class PatientWorker extends Thread { private List> list; private MongoTemplate mongoTemplate; - public PatientWorker(List> list, MongoTemplate mongoTemplate) { + private CountDownLatch countDownLatch; + public PatientWorker(CountDownLatch countDownLatch,List> list, MongoTemplate mongoTemplate) { + this.countDownLatch = countDownLatch; this.list = list; this.mongoTemplate = mongoTemplate; } @Override public void run() { - for (Map map : list) - { - try { - syncPatient(map, mongoTemplate); - } catch (Exception e) + try { + for (Map map : list) { - ExceptionUtils.catchException(e, "孕产妇同步异常:" + map); + try { + syncPatient(map, mongoTemplate); + } catch (Exception e) + { + ExceptionUtils.catchException(e, "孕产妇同步异常:" + map); + continue; + } } } + finally { + countDownLatch.countDown(); + } + } } @@ -418,22 +435,8 @@ public class SyncHsPatientService implements InitializingBean { patients.setFileCode(HsDataUtil.getString(map.get("P_CLINICNO"))); //建档编号即2.0的条码号 patients.setVcCardNo(HsDataUtil.getString(map.get("VC_CARDNO"))); //就诊卡号 - - /** - * 初诊数据处理 - */ - List> chuList = null; - if (StringUtils.isNotEmpty(HsDataUtil.getString(map.get("P_NO")))) { - chuList = JDBCUtil.getOracleListDataBySql("SELECT * FROM MOMMY_FIRSTEXAMINE WHERE FE_TRIAGEORDERNO= '" + HsDataUtil.getString(map.get("P_NO")) + "'"); - - createCZ(chuList,patients); - } int type = 1; - - - - List> chanList = null; if (StringUtils.isNotEmpty(HsDataUtil.getString(map.get("P_PLATPATIENTID")))) { chanList = JDBCUtil.getOracleListDataBySql("SELECT * FROM MOMMY_PREGDELIVERYRECORD P WHERE P.PDR_PATIENTID = '" + HsDataUtil.getString(map.get("P_PLATPATIENTID")) + "' order by p.PDR_CHILDBIRTHDAY desc "); @@ -476,9 +479,20 @@ public class SyncHsPatientService implements InitializingBean { } } + patients.setType(type); //患者类型 + /** + * 初诊数据处理 + */ + List> chuList = null; + if (StringUtils.isNotEmpty(HsDataUtil.getString(map.get("P_NO")))) { + chuList = JDBCUtil.getOracleListDataBySql("SELECT * FROM MOMMY_FIRSTEXAMINE WHERE FE_TRIAGEORDERNO= '" + HsDataUtil.getString(map.get("P_NO")) + "'"); + + createCZ(chuList,patients); + } + PersonModel person = new PersonModel(); mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(HsDataUtil.getString(map.get("P_CARDNO"))).and("yn").is(1)), PersonModel.class); person.setId(String.valueOf(map.get("PID"))); @@ -495,8 +509,7 @@ public class SyncHsPatientService implements InitializingBean { patients.setPid(person.getId()); mongoTemplate.save(patients); - count.getAndIncrement(); - System.out.println(patients.getId() + "============"+count.get()); + System.out.println("建档创建完成==="+patients.getId()); } @@ -562,6 +575,7 @@ public class SyncHsPatientService implements InitializingBean { } }catch (Exception e) { + e.printStackTrace(); System.out.println(e.getMessage()); } return data; @@ -636,6 +650,7 @@ public class SyncHsPatientService implements InitializingBean { } }catch (Exception e) { + e.printStackTrace(); System.out.println(e.getMessage()); } @@ -743,6 +758,7 @@ public class SyncHsPatientService implements InitializingBean { }catch (Exception e) { + e.printStackTrace(); System.out.println(e.getMessage()); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BoneFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BoneFacade.java index e970069..d8958ce 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BoneFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BoneFacade.java @@ -319,6 +319,7 @@ public class BoneFacade { patientsQuery.setYn(YnEnums.YES.getId()); patientsQuery.setType(1); patientsQuery.setNumberCode(boneModel.getCardNo()); + patientsQuery.setName(boneModel.getUsername()); List patients = patientsService.queryPatient(patientsQuery); if (CollectionUtils.isNotEmpty(patients)) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java index 1396977..f568459 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/TrackDownFacade.java @@ -1389,7 +1389,9 @@ public class TrackDownFacade { long jsCheckCount = mongoTemplate.count(Query.query(Criteria.where("hospitalId").is(hospitalId).and("nextCheckTime").gte(DateUtil.getDayFirstSecond(start)).lte(DateUtil.getDayLastSecond(end)).and("jsCheckStatus").is(1)), TrackCountRecord.class); data.put("jsCheckCount",String.valueOf(jsCheckCount)); - long loseCount = mongoTemplate.count(Query.query(Criteria.where("hospitalId").is(hospitalId).and("nextCheckTime").gte(DateUtil.getDayFirstSecond(start)).lte(DateUtil.getDayLastSecond(end)).and("loseStatus").is(1)), TrackCountRecord.class); + + long loseCount = zsCheckCount - jsCheckCount; + //long loseCount = mongoTemplate.count(Query.query(Criteria.where("hospitalId").is(hospitalId).and("nextCheckTime").gte(DateUtil.getDayFirstSecond(start)).lte(DateUtil.getDayLastSecond(end)).and("loseStatus").is(1)), TrackCountRecord.class); data.put("loseCount",String.valueOf(loseCount)); long trackCount = sumField("lyms_track_count_record", "trackStatus", Criteria.where("hospitalId").is(hospitalId).and("nextCheckTime").gte(DateUtil.getDayFirstSecond(start)).lte(DateUtil.getDayLastSecond(end))); diff --git a/platform-transfer/src/main/java/com/lyms/platform/worker/BoneTransferWorker.java b/platform-transfer/src/main/java/com/lyms/platform/worker/BoneTransferWorker.java index 06708f8..d55763a 100644 --- a/platform-transfer/src/main/java/com/lyms/platform/worker/BoneTransferWorker.java +++ b/platform-transfer/src/main/java/com/lyms/platform/worker/BoneTransferWorker.java @@ -37,7 +37,7 @@ public class BoneTransferWorker extends TransferAbstract implements ITransfer{ conn = iConnection.getConnection(); sta = conn.createStatement(); - String sql = "select PatientID,ZScore,TScore,dbSos,dbBqi,dbRrf,dbEoa,YoungAdult,ageMatched,dbAge,PartDisplayName from PatientInfo where status is null and DayTimeOfSave > "+ DateUtil.formatDate(new Date(),"yyyy-MM-dd"); + String sql = "select PatientID,ZScore,TScore,dbSos,dbBqi,dbRrf,dbEoa,YoungAdult,ageMatched,dbAge,PartDisplayName,PatientName from PatientInfo where status is null and DayTimeOfSave > "+ DateUtil.formatDate(new Date(),"yyyy-MM-dd"); rst = sta.executeQuery(sql); while (rst.next()) { Map map = new HashMap(); @@ -48,6 +48,9 @@ public class BoneTransferWorker extends TransferAbstract implements ITransfer{ String PartDisplayName = rst.getString("PartDisplayName"); map.put("position",PartDisplayName); + String PatientName = rst.getString("PatientName"); //孕妇姓名 + map.put("username",PatientName); + String ZScore = rst.getString("ZScore"); String TScore = rst.getString("TScore"); String dbSos = rst.getString("dbSos");