|
@ -1,4 +1,5 @@
|
|
|
package com.yihu.jw.healthUpload.service;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
|
|
@ -8,36 +9,31 @@ import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorRoleDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxPushLogDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
|
|
|
import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO;
|
|
|
import com.yihu.jw.entity.healthUpload.BaseDoctorMemberDO;
|
|
|
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.healthUpload.dao.BaseDoctorHealthUploadDao;
|
|
|
import com.yihu.jw.healthUpload.dao.BaseDoctorMemberDao;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.message.service.WxMessageUtil;
|
|
|
import com.yihu.jw.mysql.query.BaseJpaService;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.util.common.PwdUtil;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.idcard.IdCardUtil;
|
|
|
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
|
|
|
import com.yihu.jw.utils.hibernate.HibenateUtils;
|
|
|
import com.yihu.jw.wechat.dao.WxPushLogDao;
|
|
|
import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
|
|
|
import com.yihu.jw.wechat.service.WxAccessTokenService;
|
|
|
import com.yihu.jw.mysql.query.BaseJpaService;
|
|
|
import jxl.write.*;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
@ -52,6 +48,8 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
|
|
|
@Autowired
|
|
|
private BaseDoctorDao baseDoctorDao;
|
|
|
@Autowired
|
|
|
private BasePatientDao patientDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorHealthUploadDao baseDoctorHealthUploadDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorHospitalDao baseDoctorHospitalDao;
|
|
@ -60,19 +58,14 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
|
|
|
@Autowired
|
|
|
private BaseDoctorRoleDao doctorRoleDao;
|
|
|
@Autowired
|
|
|
private WeixinMessagePushUtils weixinMessagePushUtils;
|
|
|
@Autowired
|
|
|
private WxTemplateConfigDao wxTemplateConfigDao;
|
|
|
@Autowired
|
|
|
private WxAccessTokenService wxAccessTokenService;
|
|
|
@Autowired
|
|
|
private WxPushLogDao wxPushLogDao;
|
|
|
@Autowired
|
|
|
private HibenateUtils hibenateUtils;
|
|
|
@Value("${wechat.id}")
|
|
|
private String wechatId;
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao hospitalSysDictDao;
|
|
|
@Resource
|
|
|
private WxMessageUtil wxMessageUtil;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 新增医生成员关系
|
|
@ -181,113 +174,62 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
|
|
|
|
|
|
/**
|
|
|
* 提交健康信息
|
|
|
*
|
|
|
* @param baseDoctorHealthUploadDO 健康信息实体类
|
|
|
* @return
|
|
|
*/
|
|
|
public BaseDoctorHealthUploadDO createHealthUploadInfo(BaseDoctorHealthUploadDO baseDoctorHealthUploadDO) {
|
|
|
baseDoctorHealthUploadDO.setCreateTime(new Date());
|
|
|
baseDoctorHealthUploadDO = baseDoctorHealthUploadDao.save(baseDoctorHealthUploadDO);
|
|
|
List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(baseDoctorHealthUploadDO.getDoctorId());
|
|
|
try {
|
|
|
if (baseDoctorHealthUploadDO.getHealthCode() == 2 || baseDoctorHealthUploadDO.getHealthCode() == 3 || Double.parseDouble(baseDoctorHealthUploadDO.getTemperature()) >= 37.3
|
|
|
|| baseDoctorHealthUploadDO.getIsSymptoms() == 1 || baseDoctorHealthUploadDO.getIsEpidemic() == 1) {
|
|
|
List<BaseDoctorRoleDO> roleDOS = doctorRoleDao.findByRoleCode("admin");
|
|
|
for (BaseDoctorRoleDO roleDO : roleDOS) {
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findByIdAndDel(roleDO.getDoctorCode());
|
|
|
if (doctorDO != null) {
|
|
|
WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("isYichangRemind").orElse(null);
|
|
|
if (hospitalSysDictDO!=null){
|
|
|
String value = hospitalSysDictDO.getDictValue();
|
|
|
if (StringUtils.isNoneBlank(value)){
|
|
|
JSONObject object = JSONObject.parseObject(value);
|
|
|
String close = object.getString("close");
|
|
|
String time = object.getString("time");
|
|
|
String count =object.getString("count");
|
|
|
if (!close.equalsIgnoreCase("1")){
|
|
|
String startEnd = DateUtil.getPreTime(DateUtil.getStringDate(),time);
|
|
|
String sql = "select count(1) as total from wx_push_log where create_time >='"+startEnd+"' ";
|
|
|
Map<String,Object> map = jdbcTemplate.queryForMap(sql);
|
|
|
Integer total = 0;
|
|
|
|
|
|
if (map!=null){
|
|
|
if (map.get("total")!=null){
|
|
|
total = Integer.parseInt(map.get("total").toString());
|
|
|
if(baseDoctorHealthUploadDO.getUserTpye()==1){
|
|
|
//医生
|
|
|
List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(baseDoctorHealthUploadDO.getDoctorId());
|
|
|
try {
|
|
|
if (baseDoctorHealthUploadDO.getHealthCode() == 2 || baseDoctorHealthUploadDO.getHealthCode() == 3 || Double.parseDouble(baseDoctorHealthUploadDO.getTemperature()) >= 37.3
|
|
|
|| baseDoctorHealthUploadDO.getIsSymptoms() == 1 || baseDoctorHealthUploadDO.getIsEpidemic() == 1) {
|
|
|
List<BaseDoctorRoleDO> roleDOS = doctorRoleDao.findByRoleCode("admin");
|
|
|
for (BaseDoctorRoleDO roleDO : roleDOS) {
|
|
|
BaseDoctorDO doctorDO = baseDoctorDao.findByIdAndDel(roleDO.getDoctorCode());
|
|
|
if (doctorDO != null) {
|
|
|
WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("isYichangRemind").orElse(null);
|
|
|
if (hospitalSysDictDO!=null){
|
|
|
String value = hospitalSysDictDO.getDictValue();
|
|
|
if (StringUtils.isNoneBlank(value)){
|
|
|
JSONObject object = JSONObject.parseObject(value);
|
|
|
String close = object.getString("close");
|
|
|
String time = object.getString("time");
|
|
|
String count =object.getString("count");
|
|
|
if (!close.equalsIgnoreCase("1")){
|
|
|
String startEnd = DateUtil.getPreTime(DateUtil.getStringDate(),time);
|
|
|
String sql = "select count(1) as total from wx_push_log where create_time >='"+startEnd+"' ";
|
|
|
Map<String,Object> map = jdbcTemplate.queryForMap(sql);
|
|
|
Integer total = 0;
|
|
|
|
|
|
if (map!=null){
|
|
|
if (map.get("total")!=null){
|
|
|
total = Integer.parseInt(map.get("total").toString());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
logger.info("startEnd:"+startEnd+total);
|
|
|
if (StringUtils.isNoneBlank(count)){
|
|
|
if (total<Integer.parseInt(count)){
|
|
|
if (!StringUtils.isNoneBlank(doctorDO.getOpenid())) {
|
|
|
logger.info("该用户" + doctorDO.getName() + "没有openid,无法推送模版消息,用户ID:" + doctorDO.getId() + "wechatId:xm_mlwyy_wx");
|
|
|
} else {
|
|
|
WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus("xm_mlwyy_wx", "template_unusual_notice", "jkzlyctxtz", 1);
|
|
|
WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
|
|
|
BeanUtils.copyProperties(config, newConfig);
|
|
|
if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
|
|
|
newConfig.setFirst(config.getFirst().replace("key1", doctorHospitalDOS.get(0).getDeptName()).replace("key2", baseDoctorHealthUploadDO.getDoctorName()));
|
|
|
} else {
|
|
|
newConfig.setFirst(config.getFirst().replace("key1的", "").replace("key2", baseDoctorHealthUploadDO.getDoctorName()));
|
|
|
}
|
|
|
newConfig.setKeyword2(baseDoctorHealthUploadDO.getDoctorName());
|
|
|
newConfig.setKeyword3(DateUtil.getStringDate());
|
|
|
newConfig.setUrl("https://ehr.yihu.com/hlwyy/healthMonitoring/#/health/commit?id=" + baseDoctorHealthUploadDO.getId() + "&docCode=" + baseDoctorHealthUploadDO.getDoctorId() + "");
|
|
|
WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById("xm_mlwyy_wx");
|
|
|
logger.info("=======setUrl========" + newConfig.getUrl());
|
|
|
weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), doctorDO.getOpenid(), newConfig);
|
|
|
logger.info("startEnd:"+startEnd+total);
|
|
|
if (StringUtils.isNoneBlank(count)){
|
|
|
if (total<Integer.parseInt(count)){
|
|
|
wxMessageUtil.sendHealthUploadWxTemplage(doctorDO,doctorHospitalDOS,baseDoctorHealthUploadDO);
|
|
|
}
|
|
|
|
|
|
//保存发送模板记录,
|
|
|
WxPushLogDO wxPushLogDO = new WxPushLogDO();
|
|
|
wxPushLogDO.setCreateTime(new Date());
|
|
|
wxPushLogDO.setOpenid(doctorDO.getOpenid());
|
|
|
wxPushLogDO.setReceiver(doctorDO.getId());
|
|
|
wxPushLogDO.setWechatId("xm_mlwyy_wx");
|
|
|
wxPushLogDO.setReceiverName(doctorDO.getName());
|
|
|
wxPushLogDO.setScene("jkzlyctxtz");
|
|
|
wxPushLogDao.save(wxPushLogDO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
wxMessageUtil.sendHealthUploadWxTemplage(doctorDO,doctorHospitalDOS,baseDoctorHealthUploadDO);
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
if (!StringUtils.isNoneBlank(doctorDO.getOpenid())) {
|
|
|
logger.info("该用户" + doctorDO.getName() + "没有openid,无法推送模版消息,用户ID:" + doctorDO.getId() + "wechatId:xm_mlwyy_wx");
|
|
|
} else {
|
|
|
WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus("xm_mlwyy_wx", "template_unusual_notice", "jkzlyctxtz", 1);
|
|
|
WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
|
|
|
BeanUtils.copyProperties(config, newConfig);
|
|
|
if (doctorHospitalDOS != null && doctorHospitalDOS.size() != 0) {
|
|
|
newConfig.setFirst(config.getFirst().replace("key1", doctorHospitalDOS.get(0).getDeptName()).replace("key2", baseDoctorHealthUploadDO.getDoctorName()));
|
|
|
} else {
|
|
|
newConfig.setFirst(config.getFirst().replace("key1的", "").replace("key2", baseDoctorHealthUploadDO.getDoctorName()));
|
|
|
}
|
|
|
newConfig.setKeyword2(baseDoctorHealthUploadDO.getDoctorName());
|
|
|
newConfig.setKeyword3(DateUtil.getStringDate());
|
|
|
newConfig.setUrl("https://ehr.yihu.com/hlwyy/healthMonitoring/#/health/commit?id=" + baseDoctorHealthUploadDO.getId() + "&docCode=" + baseDoctorHealthUploadDO.getDoctorId() + "");
|
|
|
WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById("xm_mlwyy_wx");
|
|
|
logger.info("=======setUrl========" + newConfig.getUrl());
|
|
|
weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), doctorDO.getOpenid(), newConfig);
|
|
|
}
|
|
|
|
|
|
//保存发送模板记录,
|
|
|
WxPushLogDO wxPushLogDO = new WxPushLogDO();
|
|
|
wxPushLogDO.setCreateTime(new Date());
|
|
|
wxPushLogDO.setOpenid(doctorDO.getOpenid());
|
|
|
wxPushLogDO.setReceiver(doctorDO.getId());
|
|
|
wxPushLogDO.setWechatId("xm_mlwyy_wx");
|
|
|
wxPushLogDO.setReceiverName(doctorDO.getName());
|
|
|
wxPushLogDO.setScene("jkzlyctxtz");
|
|
|
wxPushLogDao.save(wxPushLogDO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}else {
|
|
|
//居民 暂无提醒需求
|
|
|
}
|
|
|
|
|
|
return baseDoctorHealthUploadDO;
|
|
|
}
|
|
|
|
|
@ -1325,7 +1267,7 @@ public class BaseDoctorHealthUploadService extends BaseJpaService<BaseDoctorHeal
|
|
|
"date_format(dhu.create_time ,'%Y-%m-%d %H:%i:%S' ) AS createTime " +
|
|
|
" FROM\n" +
|
|
|
"\tbase_doctor d\n" +
|
|
|
"LEFT JOIN /* (SELECT * FROM base_doctor_health_upload dhu1*/ base_doctor_health_upload dhu ON dhu.doctor_id = d.id WHERE dhu.create_time >= '" + date + " 00:00:00' AND dhu.create_time <= '" + date + " 23:59:59' ";
|
|
|
"LEFT JOIN base_doctor_health_upload dhu ON dhu.doctor_id = d.id WHERE dhu.create_time >= '" + date + " 00:00:00' AND dhu.create_time <= '" + date + " 23:59:59' ";
|
|
|
if (StringUtils.isNoneBlank(dept)) {
|
|
|
doctorSql += " and d.id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )";
|
|
|
}
|