PackDatasetDetailsJob.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.yihu.ehr.analyze.job;
  2. import com.yihu.ehr.analyze.service.qc.PackageQcService;
  3. import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
  4. import com.yihu.ehr.redis.client.RedisClient;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.scheduling.annotation.Scheduled;
  7. import org.springframework.stereotype.Component;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * Created by progr1mmer on 2018/7/18.
  14. */
  15. @Component
  16. public class PackDatasetDetailsJob {
  17. @Autowired
  18. private RedisClient redisClient;
  19. @Autowired
  20. private ElasticSearchUtil elasticSearchUtil;
  21. @Scheduled(fixedDelay = 60000)
  22. public void delayUpdate() throws Exception {
  23. Map<String, String> datasetDetails = PackageQcService.getDatasetDetails();
  24. if (!datasetDetails.isEmpty()) {
  25. List<Map<String, Object>> indexs = new ArrayList<>();
  26. List<Map<String, Object>> updates = new ArrayList<>();
  27. datasetDetails.forEach((key, val) -> {
  28. String [] _key = key.split(";");
  29. String [] _val = val.split(";");
  30. Map<String, Object> map = new HashMap<>();
  31. StringBuilder id = new StringBuilder();
  32. id.append(_key[0])
  33. .append("_")
  34. .append(_key[1])
  35. .append("_")
  36. .append(_key[3])
  37. .append("_")
  38. .append(_key[4]);
  39. Map<String, Object> source = elasticSearchUtil.findById("json_archives_qc", "qc_dataset_detail", id.toString());
  40. map.put("_id", id.toString());
  41. if (source != null) {
  42. map.put("count", Integer.parseInt(source.get("count").toString()) + Integer.parseInt(_val[0]));
  43. map.put("row", Integer.parseInt(source.get("row").toString()) + Integer.parseInt(_val[1]));
  44. updates.add(map);
  45. } else {
  46. map.put("org_code", _key[0]);
  47. map.put("receive_date", _key[1] + " 00:00:00");
  48. map.put("event_type", Integer.parseInt(_key[3]));
  49. map.put("dataset", _key[4]);
  50. map.put("dataset_name", redisClient.get("std_data_set_" + _key[2] + ":" + _key[4] + ":name"));
  51. map.put("count", Integer.parseInt(_val[0]));
  52. map.put("row", Integer.parseInt(_val[1]));
  53. String orgArea = redisClient.get("organizations:" + _key[0] + ":area");
  54. map.put("org_area",orgArea);
  55. indexs.add(map);
  56. }
  57. });
  58. elasticSearchUtil.bulkIndex("json_archives_qc", "qc_dataset_detail", indexs);
  59. elasticSearchUtil.bulkUpdate("json_archives_qc", "qc_dataset_detail", updates);
  60. }
  61. }
  62. }