Commit 2a3352c922c5c76184e91df42f437b645674c0c3
1 parent
78cf6e3569
Exists in
master
and in
1 other branch
commit
Showing 3 changed files with 226 additions and 16 deletions
platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/ConvertHelper.java
View file @
2a3352c
... | ... | @@ -24,9 +24,66 @@ |
24 | 24 | |
25 | 25 | private static String AUTO_WORKER = "system-worker"; |
26 | 26 | |
27 | + private static final String YES_OR_NO = "yesOrNo"; | |
28 | + | |
27 | 29 | private static java.util.Map<Class, List<String>> cachedField = new HashMap<>(); |
28 | 30 | |
29 | 31 | |
32 | + private static final Map<String, String> content = new HashMap<>(); | |
33 | + | |
34 | + static { | |
35 | + content.put("ycxjbs", "遗传性疾病史"); | |
36 | + content.put("jsjbs", "精神疾病史"); | |
37 | + content.put("xtjx", "先天畸形"); | |
38 | + content.put("xtyx", "先天愚型"); | |
39 | + content.put("ny", "聋哑"); | |
40 | + content.put("mr", "盲人"); | |
41 | + content.put("cel", "唇腭裂"); | |
42 | + content.put("xyb", "血友病"); | |
43 | + content.put("sm", "色盲"); | |
44 | + content.put("npx", "牛皮癣"); | |
45 | + content.put("st", "双胎"); | |
46 | + content.put("gb", "肝病"); | |
47 | + content.put("jh", "结核"); | |
48 | + content.put("xy", "吸烟"); | |
49 | + | |
50 | + content.put("yj", "饮酒"); | |
51 | + content.put("fyyw", "服用药物"); | |
52 | + content.put("jcydyhwz", "接触有毒有害物质"); | |
53 | + content.put("jcfsx", "接触放射线"); | |
54 | + content.put("jcydyhwz", "接触有毒有害物质"); | |
55 | + content.put("fzym", "风疹疫苗"); | |
56 | + content.put("ygym", "乙肝疫苗"); | |
57 | + content.put("mzym", "麻疹疫苗"); | |
58 | + content.put("psflds", "破伤风类毒素"); | |
59 | + content.put("qmsgm", "青霉素过敏"); | |
60 | + content.put("xfmsgm", "先锋霉素过敏"); | |
61 | + content.put("halywgm", "磺胺类药物过敏"); | |
62 | + content.put("pgc", "剖宫产"); | |
63 | + content.put("zgjlbc", "子宫肌瘤剥除"); | |
64 | + content.put("lwqc", "阑尾切除"); | |
65 | + content.put("ywrsss", "异位妊娠手术"); | |
66 | + content.put("yq1", "孕前1个月"); | |
67 | + content.put("yq2", "孕前2个月"); | |
68 | + content.put("yq3", "孕前3个月"); | |
69 | + content.put("yzq1", "孕早期1个月"); | |
70 | + content.put("yzq2", "孕早期2个月"); | |
71 | + content.put("yzq3", "孕早期3个月"); | |
72 | + | |
73 | + | |
74 | + content.put("ex", "恶心"); | |
75 | + content.put("ot", "呕吐"); | |
76 | + content.put("yh", "眼花"); | |
77 | + content.put("xm", "胸闷"); | |
78 | + content.put("fz", "浮肿"); | |
79 | + content.put("ydcx", "阴道出血"); | |
80 | + content.put("ft", "腹痛"); | |
81 | + content.put("tt", "头痛"); | |
82 | + content.put("ft", "腹痛"); | |
83 | + | |
84 | + | |
85 | + } | |
86 | + | |
30 | 87 | private static Properties properties = new Properties(); |
31 | 88 | |
32 | 89 | static { |
... | ... | @@ -108,6 +165,11 @@ |
108 | 165 | hospitals.setPublishId(0); |
109 | 166 | hospitals.setCode(organization.getShortCode()); |
110 | 167 | hospitals.setPublishName(AUTO_WORKER); |
168 | + hospitals.setOnline(0); | |
169 | + //院内系统设置医院为试运行 正式运行的时候需要设置医院online | |
170 | + if (null != organization.getStatus() && (0 == organization.getStatus() || 1 == organization.getStatus())) { | |
171 | + hospitals.setOnline(1); | |
172 | + } | |
111 | 173 | return hospitals; |
112 | 174 | } |
113 | 175 | |
114 | 176 | |
... | ... | @@ -163,9 +225,14 @@ |
163 | 225 | if (obj instanceof Date) { |
164 | 226 | dataMap.put("v", DateUtil.getyyyy_MM_dd((Date) obj)); |
165 | 227 | } else { |
166 | - dataMap.put("v", obj); | |
228 | + String str =getAntExChuValue(key, antExChuModel); | |
229 | + if(null!=str){ | |
230 | + dataMap.put("v", str); | |
231 | + }else{ | |
232 | + dataMap.put("v", obj); | |
233 | + } | |
167 | 234 | } |
168 | - if(null!=obj){ | |
235 | + if (null != obj) { | |
169 | 236 | list.add(dataMap); |
170 | 237 | } |
171 | 238 | } |
172 | 239 | |
... | ... | @@ -173,8 +240,71 @@ |
173 | 240 | return JsonUtil.array2JsonString(list); |
174 | 241 | } |
175 | 242 | |
176 | - private static List<String> getField(AntExChuModel antExChuModel) { | |
177 | 243 | |
244 | + private static String getAntExChuValue(String key, AntExChuModel antExChuModel) { | |
245 | + StringBuilder sb = new StringBuilder(); | |
246 | + Map<String, Object> map = null; | |
247 | + if ("既往史".equals(key)) { | |
248 | + map = JsonUtil.str2Obj(antExChuModel.getPastHistory(), Map.class); | |
249 | + } else if ("家族史".equals(key)) { | |
250 | + map = JsonUtil.str2Obj(antExChuModel.getFamilyHistory(), Map.class); | |
251 | + } else if ("个人史".equals(key)) { | |
252 | + map = JsonUtil.str2Obj(antExChuModel.getPersonalHistory(), Map.class); | |
253 | + } else if ("疫苗接种史".equals(key)) { | |
254 | + map = JsonUtil.str2Obj(antExChuModel.getYmjzHistory(), Map.class); | |
255 | + } else if ("药物过敏史".equals(key)) { | |
256 | + map = JsonUtil.str2Obj(antExChuModel.getYwgmHistory(), Map.class); | |
257 | + } else if ("妇科手术史".equals(key)) { | |
258 | + map = JsonUtil.str2Obj(antExChuModel.getFksxHistory(), Map.class); | |
259 | + } else if ("叶酸服用".equals(key)) { | |
260 | + map = JsonUtil.str2Obj(antExChuModel.getYsfyHistory(), Map.class); | |
261 | + } else if ("本次妊娠情况".equals(key)) { | |
262 | + map = JsonUtil.str2Obj(antExChuModel.getCestationInfo(), Map.class); | |
263 | + } | |
264 | + return replace(map, sb); | |
265 | + } | |
266 | + | |
267 | + public static void main(String [] args){ | |
268 | + AntExChuModel antExChuModel=new AntExChuModel(); | |
269 | + antExChuModel.setFamilyHistory("{\"yesOrNo\":\"no\"}"); | |
270 | + antExChuModel.setPregnancyTimes(3); | |
271 | + antExChuModel.setHeight("3.2"); | |
272 | + antExChuModel.setYsfyHistory("{\"yesOrNo\":\"yes\",\"yzq3\":true}"); | |
273 | + System.out.print(convertAntExChuResult(antExChuModel)); | |
274 | + } | |
275 | + | |
276 | + private static String replace(Map map, StringBuilder sb) { | |
277 | + if(null==map){ | |
278 | + return null; | |
279 | + } | |
280 | + if ("yes".equals(map.get(YES_OR_NO))) { | |
281 | + Set<Map.Entry<String, Object>> m = map.entrySet(); | |
282 | + Iterator<Map.Entry<String, Object>> it = m.iterator(); | |
283 | + while (it.hasNext()) { | |
284 | + Map.Entry<String, Object> ma = it.next(); | |
285 | + if (ma.getKey().equals(YES_OR_NO)) { | |
286 | + continue; | |
287 | + } | |
288 | + if ("true".equals(ma.getValue() + "")) { | |
289 | + if (content.containsKey(ma.getKey())) { | |
290 | + sb.append(content.get(ma.getKey())).append(','); | |
291 | + } | |
292 | + } | |
293 | + } | |
294 | + | |
295 | + if (map.containsKey("qtText")) { | |
296 | + sb.append(map.get("qtText")); | |
297 | + } | |
298 | + if(sb.toString().endsWith(",")){ | |
299 | + return sb.substring(0,sb.length()-1); | |
300 | + } | |
301 | + } else if ("no".equals(map.get(YES_OR_NO))) { | |
302 | + sb.append("无"); | |
303 | + } | |
304 | + return sb.toString(); | |
305 | + } | |
306 | + | |
307 | + private static List<String> getField(AntExChuModel antExChuModel) { | |
178 | 308 | if (cachedField.containsKey(antExChuModel.getClass())) { |
179 | 309 | return cachedField.get(antExChuModel.getClass()); |
180 | 310 | } |
platform-job-index/src/main/java/com/lyms/platform/job/index/restore/data/SyncDataWork.java
View file @
2a3352c
... | ... | @@ -16,6 +16,7 @@ |
16 | 16 | import com.lyms.platform.query.AntExChuQuery; |
17 | 17 | import com.lyms.platform.query.BasicConfigQuery; |
18 | 18 | import com.lyms.platform.query.PatientsQuery; |
19 | +import com.lymsh.mommybaby.maindata.enumdata.YnEnum; | |
19 | 20 | import com.lymsh.mommybaby.maindata.model.*; |
20 | 21 | import com.lymsh.mommybaby.maindata.service.*; |
21 | 22 | import org.apache.commons.collections.CollectionUtils; |
... | ... | @@ -27,6 +28,7 @@ |
27 | 28 | import org.springframework.beans.factory.annotation.Autowired; |
28 | 29 | import org.springframework.beans.factory.annotation.Value; |
29 | 30 | import org.springframework.stereotype.Component; |
31 | +import org.springframework.util.StopWatch; | |
30 | 32 | |
31 | 33 | import java.io.File; |
32 | 34 | import java.io.RandomAccessFile; |
... | ... | @@ -90,6 +92,9 @@ |
90 | 92 | private ReportsService reportsService; |
91 | 93 | @Autowired |
92 | 94 | private DoctorUsersPatientsMapsService doctorUsersPatientsMapsService; |
95 | + @Autowired | |
96 | + private MembersService membersService; | |
97 | + | |
93 | 98 | @Value("#{configProperties['file.path']}") |
94 | 99 | private String FILE_PATH; |
95 | 100 | //最后一次同步时间 |
... | ... | @@ -129,7 +134,7 @@ |
129 | 134 | try { |
130 | 135 | lastSyncTime=System.currentTimeMillis(); |
131 | 136 | RandomAccessFile randomAccessFile=new RandomAccessFile(new File(FILE_PATH),"rw"); |
132 | - randomAccessFile.writeLong(lastSyncTime); | |
137 | + randomAccessFile.writeBytes(lastSyncTime + ""); | |
133 | 138 | randomAccessFile.close(); |
134 | 139 | }catch (Exception e){ |
135 | 140 | logger.error("read last sync time error.",e); |
... | ... | @@ -195,7 +200,7 @@ |
195 | 200 | //获取最后一次同步的时间 如果为-1就表示是全量同步 |
196 | 201 | readLastSyncTime(); |
197 | 202 | logger.info("start sync at " + DateUtil.getyyyy_MM_dd(new Date())); |
198 | - //先加载省市区 | |
203 | + //先加载省市区 | |
199 | 204 | loadMamiAllRegion(); |
200 | 205 | |
201 | 206 | OrganizationQuery organizationQuery = new OrganizationQuery(); |
202 | 207 | |
203 | 208 | |
... | ... | @@ -208,15 +213,17 @@ |
208 | 213 | countDownLatch =new CountDownLatch(organizationList.size()); |
209 | 214 | for (Organization organization : organizationList) { |
210 | 215 | HospitalsQuery hospitalsQuery = new HospitalsQuery(); |
211 | - hospitalsQuery.setForeignId(organization.getId() + ""); | |
216 | +// hospitalsQuery.setForeignId(organization.getId() + ""); | |
217 | + hospitalsQuery.setTitle(organization.getName()); | |
212 | 218 | hospitalsQuery.setYn(YnEnums.YES.getId()); |
213 | 219 | List<Hospitals> hospitalsList = hospitalsService.queryHospitals(hospitalsQuery); |
214 | 220 | if (CollectionUtils.isNotEmpty(hospitalsList)) { |
215 | - hospitals = fullHospital(organization); | |
216 | - hospitals.setId(hospitalsList.get(0).getId()); | |
217 | - hospitalsService.updateHospitals(hospitals); | |
221 | + hospitals=hospitalsList.get(0); | |
222 | +// hospitals = fullHospital(organization); | |
223 | + /* hospitals.setId(hospitalsList.get(0).getId()); | |
224 | + hospitalsService.updateHospitals(hospitals);*/ | |
218 | 225 | } else { |
219 | - fullHospital(organization); | |
226 | + hospitals= fullHospital(organization); | |
220 | 227 | hospitalsService.addHospitals(hospitals); |
221 | 228 | } |
222 | 229 | |
... | ... | @@ -245,6 +252,7 @@ |
245 | 252 | private java.util.Map<Integer, Integer> userMapping = new HashMap<>(); |
246 | 253 | |
247 | 254 | public SyncWork(String hospitalId,CountDownLatch countDownLatch) { |
255 | + setName("SyncWork-"+hospitalId); | |
248 | 256 | this.hospitalId = hospitalId; |
249 | 257 | this.countDownLatch=countDownLatch; |
250 | 258 | } |
251 | 259 | |
... | ... | @@ -252,7 +260,9 @@ |
252 | 260 | @Override |
253 | 261 | public void run() { |
254 | 262 | try { |
263 | + long l =System.currentTimeMillis(); | |
255 | 264 | logger.info("begin sync work hospital:" + hospitalId + ",at time " + DateUtil.getyyyy_MM_dd(new Date())); |
265 | + StopWatch stopWatch=new StopWatch("SyncWork-"+hospitalId); | |
256 | 266 | //查询出该医院所以的医生用户 |
257 | 267 | UsersQuery usersQuery = new UsersQuery(); |
258 | 268 | usersQuery.setYn(YnEnums.YES.getId()); |
259 | 269 | |
260 | 270 | |
261 | 271 | |
262 | 272 | |
263 | 273 | |
264 | 274 | |
265 | 275 | |
266 | 276 | |
267 | 277 | |
268 | 278 | |
269 | 279 | |
... | ... | @@ -260,28 +270,43 @@ |
260 | 270 | if(-1!=lastSyncTime){ |
261 | 271 | usersQuery.setGteModified(new Date(lastSyncTime)); |
262 | 272 | } |
273 | + stopWatch.start("queryUsers"); | |
263 | 274 | List<Users> userses = usersService.queryUsers(usersQuery); |
275 | + stopWatch.stop(); | |
276 | + logger.info(stopWatch.toString()); | |
264 | 277 | DoctorUsers doctorUsers = null; |
278 | + | |
265 | 279 | if (CollectionUtils.isNotEmpty(userses)) { |
266 | 280 | for (Users users : userses) { |
267 | 281 | DoctorUsersQuery doctorUsersQuery = new DoctorUsersQuery(); |
268 | - doctorUsersQuery.setForeignId(users.getId() + ""); | |
282 | +// doctorUsersQuery.setForeignId(users.getId() + ""); | |
269 | 283 | doctorUsersQuery.setYn(YnEnums.YES.getId()); |
284 | + doctorUsersQuery.setHospitalId(orgMapToId.get(hospitalId)); | |
285 | + doctorUsersQuery.setUsername(users.getName()); | |
286 | + StopWatch stopWatch1=new StopWatch("SyncWork-"+hospitalId+",userId:"+users.getId()); | |
287 | + stopWatch1.start("queryDoctorUsers"); | |
270 | 288 | List<DoctorUsers> doctorUsersList = doctorUsersService.queryDoctorUsers(doctorUsersQuery); |
289 | + stopWatch1.stop(); | |
271 | 290 | if (CollectionUtils.isNotEmpty(doctorUsersList)) { |
272 | - doctorUsers = ConvertHelper.convertUsers(users); | |
291 | + doctorUsers=doctorUsersList.get(0); | |
292 | + /* doctorUsers = ConvertHelper.convertUsers(users); | |
273 | 293 | doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); |
294 | + stopWatch1.start("updateDoctorUsers"); | |
274 | 295 | doctorUsersService.updateDoctorUsers(doctorUsers); |
296 | + stopWatch1.stop();*/ | |
275 | 297 | } else { |
276 | 298 | //医生用户转换 |
277 | 299 | doctorUsers = ConvertHelper.convertUsers(users); |
278 | 300 | doctorUsers.setHospitalId(orgMapToId.get(hospitalId)); |
301 | + stopWatch1.start("addDoctorUsers"); | |
279 | 302 | doctorUsersService.addDoctorUsers(doctorUsers); |
303 | + stopWatch1.stop(); | |
280 | 304 | } |
281 | 305 | |
282 | 306 | if (null != doctorUsers) { |
283 | 307 | userMapping.put(users.getId(), doctorUsers.getId()); |
284 | 308 | } |
309 | + logger.info(stopWatch1.toString()); | |
285 | 310 | } |
286 | 311 | } |
287 | 312 | |
288 | 313 | |
289 | 314 | |
... | ... | @@ -291,10 +316,15 @@ |
291 | 316 | if(-1!=lastSyncTime){ |
292 | 317 | patientsQuery1.setGteModified(new Date(lastSyncTime)); |
293 | 318 | } |
294 | - | |
319 | + StopWatch stopWatch2=new StopWatch("SyncWork-"+hospitalId+"-query patient"); | |
320 | + stopWatch2.start("queryPregnantWithQuery"); | |
295 | 321 | List<Patients> patientses = yunBookbuildingService.queryPregnantWithQuery(patientsQuery1); |
296 | - while (CollectionUtils.isNotEmpty(patientses)) { | |
322 | + stopWatch2.stop(); | |
323 | + logger.info(stopWatch2.toString()); | |
324 | + logger.info("query patient by hospitalId:"+ hospitalId+", list size :" + patientses.size()); | |
325 | + if(CollectionUtils.isNotEmpty(patientses)) { | |
297 | 326 | for (Patients patients : patientses) { |
327 | + StopWatch stopWatch3=new StopWatch("SyncWork-"+hospitalId+"-patient-"+patients.getId()); | |
298 | 328 | com.lymsh.mommybaby.maindata.model.Patients mamiPatient = ConvertHelper.convertPatient(patients); |
299 | 329 | DoctorUsersPatientsMaps doctorUsersPatientsMaps = new DoctorUsersPatientsMaps(); |
300 | 330 | doctorUsersPatientsMaps.setCreated(new Date()); |
301 | 331 | |
302 | 332 | |
303 | 333 | |
304 | 334 | |
... | ... | @@ -305,14 +335,19 @@ |
305 | 335 | //设置为待处理 |
306 | 336 | doctorUsersPatientsMaps.setStatus(1); |
307 | 337 | doctorUsersPatientsMaps.setStatusName("待处理"); |
308 | - | |
338 | + stopWatch3.start("aouPatients"); | |
309 | 339 | //增加建档记录 |
310 | 340 | patientsService.aouPatients(mamiPatient); |
341 | + stopWatch3.stop(); | |
311 | 342 | doctorUsersPatientsMaps.setPatientId(mamiPatient.getId()); |
312 | 343 | if (StringUtils.isNotEmpty(patients.getBookbuildingDoctor())) { |
313 | 344 | doctorUsersPatientsMaps.setDoctorUserId(userMapping.get(Integer.valueOf(patients.getBookbuildingDoctor()))); |
345 | + stopWatch3.start("aouDoctorUsersPatientsMaps"); | |
314 | 346 | doctorUsersPatientsMapsService.aouDoctorUsersPatientsMaps(doctorUsersPatientsMaps); |
347 | + stopWatch3.stop(); | |
315 | 348 | } |
349 | + //绑定用户 | |
350 | + bandingMember(mamiPatient); | |
316 | 351 | |
317 | 352 | AntExChuQuery antExChuQuery = new AntExChuQuery(); |
318 | 353 | antExChuQuery.setYn(YnEnums.YES.getId()); |
319 | 354 | |
320 | 355 | |
321 | 356 | |
322 | 357 | |
323 | 358 | |
... | ... | @@ -342,19 +377,63 @@ |
342 | 377 | reports.setHospitalName(organization.getName()); |
343 | 378 | } |
344 | 379 | } |
380 | + stopWatch3.start("aouReports"); | |
345 | 381 | reportsService.aouReports(reports); |
382 | + stopWatch3.stop(); | |
346 | 383 | com.lymsh.mommybaby.maindata.model.Patients p = new com.lymsh.mommybaby.maindata.model.Patients(); |
347 | 384 | p.setLastReportId(reports.getId()); |
348 | 385 | p.setLastReportDoctorName(reports.getDoctorName()); |
349 | 386 | p.setId(mamiPatient.getId()); |
387 | + stopWatch3.start("updatePatients"); | |
350 | 388 | patientsService.updatePatients(p); |
389 | + stopWatch3.stop(); | |
390 | + logger.info(stopWatch3.toString()); | |
391 | + | |
351 | 392 | } |
352 | 393 | } |
353 | 394 | } |
395 | + logger.info("hospital "+hospitalId+",costTime:"+(System.currentTimeMillis()-l)); | |
354 | 396 | } catch (Exception e) { |
355 | 397 | e.printStackTrace(); |
356 | 398 | } finally { |
357 | 399 | countDownLatch.countDown(); |
400 | + } | |
401 | + } | |
402 | + } | |
403 | + private void bandingMember(com.lymsh.mommybaby.maindata.model.Patients patients){ | |
404 | + MembersQuery membersQuery = new MembersQuery(); | |
405 | + if(StringUtils.isEmpty(patients.getPhone())){ | |
406 | + return; | |
407 | + } | |
408 | + membersQuery.setPhone(patients.getPhone()); | |
409 | + membersQuery.setYn(YnEnum.yes.getId()); | |
410 | + List<Members> membersList = membersService.queryMembers(membersQuery); | |
411 | + if (membersList.size() > 0) { | |
412 | + membersQuery = new MembersQuery(); | |
413 | + membersQuery.setPatientId(patients.getId()); | |
414 | + membersQuery.setYn(YnEnum.yes.getId()); | |
415 | + List<Members> membersList1 = membersService.queryMembers(membersQuery); | |
416 | + for (Members members:membersList1) { | |
417 | + Members m = new Members(); | |
418 | + m.setId(members.getId()); | |
419 | + m.setYn(YnEnum.no.getId()); | |
420 | + membersService.updateMembers(m); | |
421 | + } | |
422 | + for (Members members:membersList) { | |
423 | + Members temp = new Members(); | |
424 | + temp.setId(members.getId()); | |
425 | + temp.setPatientId(patients.getId()); | |
426 | + temp.setBabyBirth(patients.getBirth()); | |
427 | + temp.setLastMenses(patients.getLastMenses()); | |
428 | + temp.setDueDate(patients.getDueDate()); | |
429 | + //member status 为2时不需要修改 | |
430 | + if(null==members.getStatus()||2!=members.getStatus() ){ | |
431 | + temp.setStatus(patients.getType()); | |
432 | + } | |
433 | + | |
434 | + temp.setYn(YnEnum.yes.getId()); | |
435 | + membersService.updateMembers(temp); | |
436 | +// updateBaby(members, patients); | |
358 | 437 | } |
359 | 438 | } |
360 | 439 | } |