Commit 2a3352c922c5c76184e91df42f437b645674c0c3

Authored by jiangjiazhi
1 parent 78cf6e3569

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 }
platform-job-index/src/main/resources/lable.properties View file @ 2a3352c
... ... @@ -32,4 +32,5 @@
32 32 cervical=宫颈
33 33 uterus=子宫
34 34 fujian=附件
  35 +bp=血压