| 
					
				 | 
			
			
				@ -0,0 +1,474 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				package com.yihu.jw.service.channel; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.entity.base.doctor.BaseDoctorDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.hospital.consult.WlyyHospitalSysDictDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDiagnosisDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionInfoDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.order.BusinessOrderDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.OutpatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.PrescriptionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.PrescriptionDiagnosisDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.dao.PrescriptionInfoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.PrescriptionLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.im.service.ImService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.oauth.OauthSsoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.BusinessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.ConsultOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.order.dao.ConsultTeamOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionDiagnosisVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionInfoVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.date.DateUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.wechat.WeixinMessagePushUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.util.wechat.wxhttp.HttpUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.RSAEncrypt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.utils.hibernate.HibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.service.WxAccessTokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.net.URLEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by Administrator on 2017/5/19 0019. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				public class UnSettledHISPrescriptionService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private Logger logger= LoggerFactory.getLogger(UnSettledHISPrescriptionService.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxTemplateConfigDao wxTemplateConfigDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxTemplateDao wxTemplateDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxAccessTokenService wxAccessTokenService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WeixinMessagePushUtils weixinMessagePushUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Value("${wechat.id}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private String wechatId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientDao basePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BasePatientWechatDao basePatientWechatDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OauthSsoService oauthSsoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private XzzxEntranceService xzzxEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private YkyyEntranceService ykyyEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxPushLogDao wxPushLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HibenateUtils hibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WlyyHospitalSysDictDao hospitalSysDictDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ConsultOrderDao consultOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BusinessOrderDao businessOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ConsultTeamOrderDao consultTeamOrderDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private OutpatientDao outpatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private BaseDoctorDao doctorDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionLogService prescriptionLogService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private ImService imService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionDao prescriptionDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionInfoDao prescriptionInfoDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private PrescriptionDiagnosisDao prescriptionDiagnosisDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 发送微信模版消息-小程序视频 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param sender_id 发送者ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param sender_name 发送者姓名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param reciver_id 接收者ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param reciver_name 接收者姓名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param session_id 会话ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String sendWeTempMesMiniProgram(String sender_id, String sender_name, String reciver_id, String reciver_name,String session_id)throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO basePatientDO = basePatientDao.findById(reciver_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(basePatientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BasePatientWechatDo> ps = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,reciver_id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(ps.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+reciver_name+"没有openid,无法推送模版消息,用户ID:"+reciver_id+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (BasePatientWechatDo basePatientWechatDo:ps){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if("xm_xzzx_wx".equals(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String getAuthCode = oauthSsoService.getSsoPublic(wechatId,basePatientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        JSONObject jsonObject = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        jsonObject.put("name",basePatientDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        jsonObject.put("idcard",basePatientDO.getIdcard()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        jsonObject.put("mobile",basePatientDO.getMobile()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        jsonObject.put("openid",basePatientWechatDo.getOpenid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String authCode = jsonObject.toJSONString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String jm = URLEncoder.encode(RSAEncrypt.encrypt(authCode,getAuthCode),"utf-8"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String miniprogramUrl = "pages/room/room?patientCode="+reciver_id+"&doctorName="+sender_name+"&role=patient&roomID="+session_id+"&template=1v1&debugMode=false&cloudenv=PRO&authCode="+jm+"&code="+wechatId+"&appId="+basePatientDO.getId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //心脏中心模版消息推送接口 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        logger.info("心脏中心小程序跳转URL:"+miniprogramUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        xzzxEntranceService.sendXCXMes(wechatId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                basePatientDO.getId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                basePatientDO.getIdcard(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                sender_name+"主任医生已向您发起视频通话邀请,请点击详情进入视频诊室。", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "点击消息进入视频诊室接听视频通话,开始视频咨询", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                "",miniprogramUrl,"wx53f6bb4ac081d840"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_consult_notice","spthtx",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setFirst(config.getFirst().replace("key1",sender_name)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setPagepath(config.getPagepath()+""+reciver_id+"&doctorName="+sender_name+"&role=patient&roomID="+session_id+"&template=1v1&debugMode=false&cloudenv=PRO"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        weixinMessagePushUtils.putWxMsg(wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken(),basePatientWechatDo.getOpenid(),config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("接收者ID错误,无法找到该账号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询HIS的01表中的审方状态,如果已审方,且未结算,则推送一条模板消息给居民,让居民进行支付结算。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void unSettledHISPrescription() throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if("xm_ykyy_wx".equals(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取审核失败 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray jsonArray = ykyyEntranceService.getNoUnsettledPrescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(jsonArray!=null&&jsonArray.size()>0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (int i = 0; i<jsonArray.size(); i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    JSONObject json = jsonArray.getJSONObject(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String cfsb = json.getString("CFSB"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //查找对应的处方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String sql = "SELECT w.OUTPATIENT_ID,w.ID,w.DOCTOR_NAME from WLYY_PRESCRIPTION w WHERE REAL_ORDER = '"+cfsb+"' ORDER BY w.CREATE_TIME desc"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    List<Map<String, Object>> pre = hibenateUtils.createSQLQuery(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(pre!=null && pre.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String prescriptionId = pre.get(0).get("ID").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //修改处方状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String updateSql = "update WLYY_PRESCRIPTION set status = 11 where id = '"+prescriptionId+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        hibenateUtils.updateBySql(updateSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取已审核未结算的处方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = ykyyEntranceService.getUnsettledPrescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //发送模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(array!=null&&array.size()>0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (int i = 0; i<array.size(); i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    JSONObject json = array.getJSONObject(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String brid = json.getString("BRID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String cfsb = json.getString("CFSB"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    //查找居民信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    BasePatientDO patientDO = ykyyEntranceService.findPatientByMapingCode(brid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if(patientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //查找对应的处方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String sql = "SELECT w.OUTPATIENT_ID,w.ID,w.DOCTOR_NAME from WLYY_PRESCRIPTION w WHERE REAL_ORDER = '"+cfsb+"' ORDER BY w.CREATE_TIME desc"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        List<Map<String, Object>> pre = hibenateUtils.createSQLQuery(sql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(pre!=null && pre.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            String outpatientId = pre.get(0).get("OUTPATIENT_ID").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            String prescriptionId = pre.get(0).get("ID").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            String doctorName = pre.get(0).get("DOCTOR_NAME").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            //判断是否发送过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            String countSql = "SELECT id from WX_PUSH_LOG w WHERE w.RECEIVER = '"+patientDO.getId() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    +"' and w.OPENID = '"+prescriptionId+"' and w.scene = 'djsxxtz' and w.WECHAT_ID='"+wechatId+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            List<Map<String, Object>> count = hibenateUtils.createSQLQuery(countSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if(count==null || count.size() == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                List<BasePatientWechatDo> ps = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,patientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                if(ps.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    logger.info("该用户"+patientDO.getName()+"没有openid,无法推送模版消息,用户ID:"+patientDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    //修改处方状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    String updateSql = "update WLYY_PRESCRIPTION set status = 20 where id = '"+prescriptionId+"' and status = 10"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    hibenateUtils.updateBySql(updateSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    prescriptionLogService.addPrescriptionLog(prescriptionId,20,2,"system","system","",new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    ps.stream().forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_unsettled_notice","djsxxtz",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        WxTemplateConfigDO newConfig = new WxTemplateConfigDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        BeanUtils.copyProperties(config,newConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        newConfig.setFirst(config.getFirst().replace("key1",patientDO.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        newConfig.setUrl(config.getUrl()+""+outpatientId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        newConfig.setKeyword3(doctorName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        logger.info("=======setUrl========"+newConfig.getUrl()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(),one.getOpenid(),newConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    //保存发送模板记录, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WxPushLogDO wxPushLogDO = new WxPushLogDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setOpenid(prescriptionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setReceiver(patientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setWechatId(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setReceiverName(patientDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDO.setScene("djsxxtz"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wxPushLogDao.save(wxPushLogDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                WlyyPrescriptionDO wlyyPrescriptionDO = prescriptionDao.findOne(prescriptionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                JSONObject object = (JSONObject) JSONObject.toJSON(wlyyPrescriptionDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                logger.info("wlyyPrescriptionDO参数入参"+object.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                WlyyPrescriptionVO prescriptionVO = JSONObject.toJavaObject(object,WlyyPrescriptionVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                List<WlyyPrescriptionInfoDO> wlyyPrescriptionInfoDOS = prescriptionInfoDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                List<WlyyPrescriptionInfoVO> wlyyPrescriptionInfoVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                for (WlyyPrescriptionInfoDO wlyyPrescriptionInfoDO:wlyyPrescriptionInfoDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    JSONObject jsonObject = (JSONObject) JSONObject.toJSON(wlyyPrescriptionInfoDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    logger.info("wlyyPrescriptionInfoDO参数入参"+jsonObject.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WlyyPrescriptionInfoVO prescriptionInfoVO = JSONObject.toJavaObject(jsonObject,WlyyPrescriptionInfoVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wlyyPrescriptionInfoVOS.add(prescriptionInfoVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                prescriptionVO.setInfoVOs(wlyyPrescriptionInfoVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                List<WlyyPrescriptionDiagnosisDO> wlyyPrescriptionDiagnosisDOS = prescriptionDiagnosisDao.findByPrescriptionId(wlyyPrescriptionDO.getId(),1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                List<WlyyPrescriptionDiagnosisVO> wlyyPrescriptionDiagnosisVOS = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                for (WlyyPrescriptionDiagnosisDO wlyyPrescriptionDiagnosisDO:wlyyPrescriptionDiagnosisDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    JSONObject jsonObject = (JSONObject) JSONObject.toJSON(wlyyPrescriptionDiagnosisDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    logger.info("wlyyPrescriptionDiagnosisDO参数入参"+jsonObject.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WlyyPrescriptionDiagnosisVO prescriptionDiagnosisVO = JSONObject.toJavaObject(jsonObject,WlyyPrescriptionDiagnosisVO.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    wlyyPrescriptionDiagnosisVOS.add(prescriptionDiagnosisVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                prescriptionVO.setDiagnosisVOs(wlyyPrescriptionDiagnosisVOS); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                imService.pushPrescriptionImMessage(prescriptionVO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void updateStatusByPayTime() throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if("xm_ykyy_wx".equals(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            WlyyHospitalSysDictDO wlyyHospitalSysDictDO = hospitalSysDictDao.findById("PAY_TIME"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (wlyyHospitalSysDictDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String remind = wlyyHospitalSysDictDO.getDictValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String close = wlyyHospitalSysDictDO.getDictCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                List<BusinessOrderDO> businessOrderDOS = businessOrderDao.selectByStatus(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //关闭处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (BusinessOrderDO businessOrderDO:businessOrderDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Calendar cal= Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    cal.setTime(businessOrderDO.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    cal.add(Calendar.MINUTE,Integer.parseInt(close)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Long now = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Long min = cal.getTime().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.info("关闭处理cal="+cal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (min==now){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String orderCategory = businessOrderDO.getOrderCategory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String relationCode = businessOrderDO.getRelationCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if (orderCategory.equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            ConsultTeamDo consultTeamDo = consultTeamOrderDao.findByConsult(relationCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            consultTeamDo.setStatus(-1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            consultTeamOrderDao.save(consultTeamDo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        }else if (orderCategory.equalsIgnoreCase("2")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            WlyyOutpatientDO outpatientDO = outpatientDao.findById(relationCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            outpatientDO.setStatus("-1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            outpatientDao.save(outpatientDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                //提醒处理 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (BusinessOrderDO businessOrderDO:businessOrderDOS){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String orderCategory = businessOrderDO.getOrderCategory(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String relationCode = businessOrderDO.getRelationCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String orderType =businessOrderDO.getOrderType()+""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String doctor = businessOrderDO.getDoctor(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    String patient= businessOrderDO.getPatient(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Calendar cal= Calendar.getInstance(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    cal.setTime(businessOrderDO.getCreateTime()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    cal.add(Calendar.MINUTE,Integer.parseInt(remind)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Long now = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    Long min = cal.getTime().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    logger.info("提醒处理cal="+cal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    if (min==now){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        //判断是否发送过 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        String countSql = "SELECT id from WX_PUSH_LOG w WHERE w.RECEIVER = '"+patient 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                +"' and w.OPENID = '"+relationCode+"' and w.scene = 'zxzfts' and w.WECHAT_ID='"+wechatId+"'"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        List<Map<String, Object>> count = hibenateUtils.createSQLQuery(countSql); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        if(count==null || count.size() == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BasePatientDO patientDO = basePatientDao.findById(patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            BaseDoctorDO doctorDO = doctorDao.findById(doctor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            List<BasePatientWechatDo> ps = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,patient); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            if(ps.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                logger.info("该用户"+patientDO.getName()+"没有openid,无法推送模版消息,用户ID:"+patientDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                ps.stream().forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_unsettled_notice","zxzfts",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WxTemplateConfigDO newConfig = new WxTemplateConfigDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    BeanUtils.copyProperties(config,newConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    String name = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    String condition=""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    if (orderCategory.equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        if (orderType.equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            name="图文咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        }else if (orderType.equalsIgnoreCase("3")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            name="视频咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        condition = "&consultCode="+relationCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    }else if (orderCategory.equalsIgnoreCase("2")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        if (orderType.equalsIgnoreCase("1")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            name="图文咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        }else if (orderType.equalsIgnoreCase("3")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                            name="视频咨询"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        condition = "&outpatientId="+relationCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    newConfig.setFirst(config.getFirst().replace("key1",patientDO.getName()).replace("key2",name)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    newConfig.setUrl(config.getUrl()+""+condition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    newConfig.setKeyword3(doctorDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    newConfig.setKeyword1(name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    logger.info("=======setUrl========"+newConfig.getUrl()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(),one.getOpenid(),newConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                //保存发送模板记录, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                WxPushLogDO wxPushLogDO = new WxPushLogDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setOpenid(relationCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setReceiver(patientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setWechatId(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setReceiverName(patientDO.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDO.setScene("zxzfts"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                wxPushLogDao.save(wxPushLogDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String sendWeTempMesTest(String wechatId,String openid)throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_survey","test",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        config.setFirst(config.getFirst().replace("key1","小明")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        config.setKeyword2("2018-08-21"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        weixinMessagePushUtils.putWxMsg(wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken(),openid,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public Envelop getAllTemp(String wechatId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String url ="https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token="+wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        String result = HttpUtil.sendGet(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONObject tempJsons = JSON.parseObject(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //获取所有本地模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> localTemps = findAllTempDos(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        //解析公众号模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        JSONArray temps = tempJsons.getJSONArray("template_list"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WxTemplateDO> savelist = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(temps!=null&&!temps.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(int i=0;i<temps.size();i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                JSONObject tp = (JSONObject) temps.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                String tpid = tp.getString("template_id"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if(!localTemps.contains(tpid)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    WxTemplateDO wxTemplateDO = new WxTemplateDO(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setWechatId(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setTemplateId(tpid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setTitle(tp.getString("title")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setContent(tp.getString("content")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setStatus(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    wxTemplateDO.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    savelist.add(wxTemplateDO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            wxTemplateDao.save(savelist); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return Envelop.getSuccess(BaseRequestMapping.WeChat.api_success); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public List<String> findAllTempDos(String wechatId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<WxTemplateDO> list =  wxTemplateDao.findByWxId(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        List<String> rs = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(list!=null&&list.size()>0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(WxTemplateDO wxTemplateDO:list){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                rs.add(wxTemplateDO.getTemplateId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return rs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 发送微信模版消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param userName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param senderName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param idCard 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param phone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param content 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param contentString 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param url 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String sendWxTemple(String userName, String senderName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             String idCard, String phone, String title, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             String content, String contentString, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             String url) throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        BasePatientDO basePatientDO = basePatientDao.findByIdcard(idCard); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if(basePatientDO!=null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            List<BasePatientWechatDo> ps = basePatientWechatDao.findByWechatIdAndPatientId(wechatId,basePatientDO.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(ps.isEmpty()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                logger.info("该用户"+basePatientDO.getName()+"没有openid,无法推送模版消息,用户ID:"+basePatientDO.getId()+"wechatId:"+wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                for (BasePatientWechatDo basePatientWechatDo:ps){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_im_notice","zxtx",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setFirst(config.getFirst().replace("key1",userName)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setKeyword1(contentString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setKeyword2(DateUtil.dateToStrLong(new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        config.setUrl(url); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        weixinMessagePushUtils.putWxMsg(wxAccessTokenService.getWxAccessTokenById(wechatId).getAccessToken(),basePatientWechatDo.getOpenid(),config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            throw new Exception("接收者ID错误,无法找到该账号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |