| 
					
				 | 
			
			
				@ -4,12 +4,17 @@ import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.im.ConsultTeamDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.healthUpload.BaseDoctorHealthUploadDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.enterprise.WxEnterpriseUserDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDiagnosisDO; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -48,6 +53,8 @@ import com.yihu.jw.wechat.dao.BasePatientWechatDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.WxPushLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.WxTemplateConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.dao.WxTemplateDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.enterprise.EnterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.enterprise.dao.WxEnterpriseUserDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.wechat.service.WxAccessTokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.slf4j.Logger; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -55,6 +62,7 @@ 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.jdbc.core.JdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URLEncoder; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -87,6 +95,16 @@ public class HealthUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorHealthUploadDao doctorHealthUploadDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxPushLogDao wxPushLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxEnterpriseUserDao wxEnterpriseUserDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private EnterpriseService enterpriseService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorRoleDao doctorRoleDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private JdbcTemplate jdbcTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorHospitalDao baseDoctorHospitalDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void waitingItem(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorDO> doctorDOList = doctorDao.findByDel(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -119,5 +137,242 @@ public class HealthUploadService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 健康上报填写提醒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @throws Exception 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void healthUploadRemind() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorDO> doctorDOList = doctorDao.findByDel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date startDate = DateUtil.strToDate(DateUtil.getStringDateShort()+" 00:00:00"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        Date endDate = DateUtil.strToDate(DateUtil.getStringDateShort()+" 23:59:59"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDoctorDO doctorDO:doctorDOList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BaseDoctorHealthUploadDO> healthUploadDOS = doctorHealthUploadDao.selectHealthUploadInfoByDoctorIdAndStartAndEnd(doctorDO.getId(),startDate,endDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (healthUploadDOS==null||healthUploadDOS.size()==0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(enterpriseUserDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String title = "待办事项"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String des = "您好,系统检测到您今日尚未提交健康信息,请及时提交!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String url = "https://ehr.yihu.com/hlwyy/zjxl/healthMonitoring/#/health/commit"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String res = enterpriseService.sendTWMesByDoctor(wechatId,doctorDO.getId(),title,des,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void healthUploadWsbTotalRemind() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorRoleDO> adminRoleList = doctorRoleDao.findByRoleCode("admin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorRoleDO> deptAdminRoleList = doctorRoleDao.findByRoleCode("deptAdmin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDoctorRoleDO adminRole:adminRoleList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO doctorDO = doctorDao.findById(adminRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(enterpriseUserDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //总人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer doctorTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> doctorMap = jdbcTemplate.queryForMap(doctorSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //已上报人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer sqlTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> sqlMap = jdbcTemplate.queryForMap(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (sqlMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (sqlMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        sqlTotal = Integer.parseInt(sqlMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //异常人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //今日异常人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String yichangSql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer yichangTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> yichangMap = jdbcTemplate.queryForMap(yichangSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (yichangMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (yichangMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        yichangTotal = Integer.parseInt(yichangMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer weishangbaoTotal = doctorTotal-sqlTotal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String title = "健康上报未上报汇总"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String des = "今日还有"+weishangbaoTotal+"人未提交健康信息,点击查看。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String url = "https://ehr.yihu.com/hlwyy/zjxl/healthMonitoring/#/home/index"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String res = enterpriseService.sendTWMesByDoctor(wechatId,doctorDO.getId(),title,des,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //科室管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDoctorRoleDO deptRole:deptAdminRoleList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO doctorDO = doctorDao.findById(deptRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(enterpriseUserDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(deptRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String dept = doctorHospitalDOS.get(0).getDeptCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //总人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer doctorTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 and id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> doctorMap = jdbcTemplate.queryForMap(doctorSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //已上报人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer sqlTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> sqlMap = jdbcTemplate.queryForMap(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (sqlMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (sqlMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            sqlTotal = Integer.parseInt(sqlMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //异常人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //今日异常人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String yichangSql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer yichangTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> yichangMap = jdbcTemplate.queryForMap(yichangSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (yichangMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (yichangMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            yichangTotal = Integer.parseInt(yichangMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer weishangbaoTotal = doctorTotal-sqlTotal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String title = "健康上报未上报汇总"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String des = "今日还有"+weishangbaoTotal+"人未提交健康信息,点击查看。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String url = "https://ehr.yihu.com/hlwyy/zjxl/healthMonitoring/#/home/index"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String res = enterpriseService.sendTWMesByDoctor(wechatId,doctorDO.getId(),title,des,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void healthUploadTotalRemind() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorRoleDO> adminRoleList = doctorRoleDao.findByRoleCode("admin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<BaseDoctorRoleDO> deptAdminRoleList = doctorRoleDao.findByRoleCode("deptAdmin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDoctorRoleDO adminRole:adminRoleList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO doctorDO = doctorDao.findById(adminRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(enterpriseUserDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //总人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer doctorTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> doctorMap = jdbcTemplate.queryForMap(doctorSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //已上报人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer sqlTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' "; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> sqlMap = jdbcTemplate.queryForMap(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (sqlMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (sqlMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        sqlTotal = Integer.parseInt(sqlMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //异常人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //今日异常人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String yichangSql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer yichangTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Map<String, Object> yichangMap = jdbcTemplate.queryForMap(yichangSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (yichangMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (yichangMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        yichangTotal = Integer.parseInt(yichangMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                Integer weishangbaoTotal = doctorTotal-sqlTotal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String title = "每日健康上报汇总"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String des = "今日上报情况:已上报:"+sqlTotal+",未上报:"+weishangbaoTotal+",异常:"+yichangTotal+";点击查看。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String url = "https://ehr.yihu.com/hlwyy/zjxl/healthMonitoring/#/home/index"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String res = enterpriseService.sendTWMesByDoctor(wechatId,doctorDO.getId(),title,des,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //科室管理员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        for (BaseDoctorRoleDO deptRole:deptAdminRoleList){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            BaseDoctorDO doctorDO = doctorDao.findById(deptRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WxEnterpriseUserDO enterpriseUserDO = wxEnterpriseUserDao.findByEnterpriseIdAndMobile(wechatId,doctorDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(enterpriseUserDO==null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+doctorDO.getName()+"没有企业微信手机号,无法推送模版消息,用户ID:"+doctorDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<BaseDoctorHospitalDO> doctorHospitalDOS = baseDoctorHospitalDao.findByDoctorCode(deptRole.getDoctorCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (doctorHospitalDOS!=null&&doctorHospitalDOS.size()!=0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String dept = doctorHospitalDOS.get(0).getDeptCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //总人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer doctorTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String doctorSql = " select COUNT(1) as \"total\" from base_doctor d where d.del=1 and id IN (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 )"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> doctorMap = jdbcTemplate.queryForMap(doctorSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (doctorMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (doctorMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            doctorTotal = Integer.parseInt(doctorMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String nowDate = DateUtil.getStringDateShort(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //已上报人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer sqlTotal = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String sql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> sqlMap = jdbcTemplate.queryForMap(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (sqlMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (sqlMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            sqlTotal = Integer.parseInt(sqlMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //异常人数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //今日异常人次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String yichangSql = "select COUNT(DISTINCT d.doctor_id) as \"total\" from base_doctor_health_upload d where 1=1 and doctor_id in (select dh.doctor_code from base_doctor_hospital dh where dh.dept_code = '" + dept + "' and dh.del=1 ) and d.create_time >='" + nowDate + " 00:00:00' and d.create_time<='" + nowDate + " 23:59:59' and (d.health_code in(2,3) OR CAST(d.temperature as DECIMAL)>=37.3 OR  d.is_symptoms=1 OR d.is_epidemic=1)"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer yichangTotal=0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Map<String, Object> yichangMap = jdbcTemplate.queryForMap(yichangSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (yichangMap != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (yichangMap.get("total") != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            yichangTotal = Integer.parseInt(yichangMap.get("total").toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Integer weishangbaoTotal = doctorTotal-sqlTotal; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String title = "每日健康上报汇总"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String des = "今日上报情况:已上报:"+sqlTotal+",未上报:"+weishangbaoTotal+",异常:"+yichangTotal+";点击查看。"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String url = "https://ehr.yihu.com/hlwyy/zjxl/healthMonitoring/#/home/index"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String res = enterpriseService.sendTWMesByDoctor(wechatId,doctorDO.getId(),title,des,url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |