|  | @ -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 )";
 | 
	
		
			
				|  |  |             }
 |