GetPatientInfoTask.java 6.2 KB
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
package com.lyms.talkonlineweb.task;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lyms.talkonlineweb.controller.PatientController;
import com.lyms.talkonlineweb.domain.*;
import com.lyms.talkonlineweb.result.BaseResponse;
import com.lyms.talkonlineweb.service.*;
import com.lyms.talkonlineweb.util.*;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.validation.MapBindingResult;
import org.springframework.scheduling.annotation.Scheduled;
import org.w3c.dom.ls.LSInput;

import javax.swing.event.ListDataEvent;
import java.util.*;

import static com.lyms.talkonlineweb.util.DateUtil.YYYY_MM_DD;

/**
* 获取医院患者信息任务
*/

@Component
@Log4j2
public class GetPatientInfoTask {

@Autowired
private PatientInfoService patientInfoService;
@Autowired
private LymsDictService lymsDictService;
@Value("${patient.url}")
public String url;//配置yml 获取患者接口地址
@Value("${patient.hospitalName}")//配置yml 医院名称
public String hospitalName;
@Value("${patient.hospital}")//配置yml 医院id
public Integer hospital;
@Autowired
private LymsPatientService lymsPatientService;//患者
@Autowired
private LymsHdepartService lymsHdepartService;//科室
@Autowired
private LymsDoctorService lymsDoctorService;//医生
@Autowired
private LymsPcaseService lymsPcaseService;//病例
@Autowired
private LymsIllnessService lymsIllnessService;//疾病
@Autowired
private LymsTcardService lymsTcardService;//问诊卡信息
@Autowired
private LymsHisInfoService lymsHisInfoService;//问诊卡信息


/**
* 获取医院患者信息。添加到问诊平台患者信息
* 10分钟执行一次
*/
// @Scheduled(cron = "0 */10 * * * ?")
@Scheduled(cron = "0 */5 * * * ?")
public void getPatientInfo() throws Exception {
//每次执行时间范围是上一个小时
String param = collateTime();
if (StringUtil.isNotEmpty(param)) {
//返回数据
String result = HttpUtil.getData(url + "?" + param);
if (StringUtil.isNotEmpty(result)) {
Map<String, Object> resultMap = JsonUtil.str2Map(result, HashMap.class);
if (CollectionUtils.isNotEmpty(resultMap)) {
List<Map<String, Object>> listMap = (List<Map<String, Object>>) resultMap.get("patients");
if (CollectionUtils.isNotEmpty(listMap)) {
for (Map<String, Object> map : listMap) {
//添加到数据后续页面处理
LymsHisInfo hisInfoMap = (LymsHisInfo) BeanUtils.mapToObject(map, LymsHisInfo.class);//map转对象
if (null != hisInfoMap) {
//今天添加过不需要重复添加
QueryWrapper qurey = new QueryWrapper();
qurey.eq("idCard", hisInfoMap.getIdcard());
qurey.eq("diagnose", hisInfoMap.getDiagnose());
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 00);//时
calendar.set(Calendar.MINUTE, 00);//分
calendar.set(Calendar.SECOND, 00);//秒
qurey.gt("createdtime", calendar.getTime());
List<LymsHisInfo> list = lymsHisInfoService.list(qurey);
if (CollectionUtils.isEmpty(list)) {
hisInfoMap.setBirthday(StringUtil.isNotEmpty(hisInfoMap.getBirthday()) ? StringUtil.leftTruncate(hisInfoMap.getBirthday(), ' ') : null);
hisInfoMap.setUpType(0);//默认未上传
lymsHisInfoService.save(hisInfoMap);
}
}
}
}
}
}
}
}

/**
* //整理GET请求时间
* //每次执行时间范围是上一个小时
* @return string param:GET请求时间参数
*/
private String collateTime(){
String param=null;
String startDate=null;
String endDate=null;
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
calendar.set(Calendar.MINUTE, 00);//分
calendar.set(Calendar.SECOND, 00);//秒
calendar.set(Calendar.MILLISECOND, 000);//毫秒
int hour = calendar.get(Calendar.HOUR_OF_DAY);//当前小时
if(0==hour){
calendar.add(Calendar.DATE, -1);
calendar.set(Calendar.HOUR_OF_DAY,23);
startDate=DateUtil.getYyyyMmDdHhMmSs(calendar.getTime());
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY,00);
endDate=DateUtil.getYyyyMmDdHhMmSs(calendar.getTime());
}else {
// endDate=DateUtil.getYyyyMmDdHhMmSs(calendar.getTime());
calendar.add(Calendar.HOUR_OF_DAY,-1);
startDate=DateUtil.getYyyyMmDdHhMmSs(calendar.getTime());
//测试用
calendar.add(Calendar.HOUR_OF_DAY,2);
endDate=DateUtil.getYyyyMmDdHhMmSs(calendar.getTime());
}
if(StringUtil.isNotEmpty(startDate)&&StringUtil.isNotEmpty(endDate)){
//字符串日期和时间中间的空格需要用+连接(GET请求参数特定),date转为string格式:xxxx-xx-xx xx-xx-xxx,中间得空格需要转换连接符
param=("start="+startDate+"&end="+endDate).replace(" ", "+");
}
return param;
}

}