| 
					
				 | 
			
			
				@ -4,10 +4,9 @@ import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.patient.BasePatientDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.BasePatientWechatDo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.WxTemplateConfigDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.WxTemplateDO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.entity.base.wx.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.entrance.XzzxEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.hospital.prescription.service.entrance.YkyyEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.oauth.OauthSsoService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.patient.dao.BasePatientDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import com.yihu.jw.restmodel.web.Envelop; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -15,7 +14,9 @@ import com.yihu.jw.rm.base.BaseRequestMapping; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				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 org.slf4j.Logger; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -28,6 +29,7 @@ import java.net.URLEncoder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.ArrayList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 * Created by Administrator on 2017/5/19 0019. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -62,6 +64,14 @@ public class WxTemplateService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private XzzxEntranceService xzzxEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private YkyyEntranceService ykyyEntranceService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private WxPushLogDao wxPushLogDao; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    private HibenateUtils hibenateUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -115,6 +125,72 @@ public class WxTemplateService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        return "success"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 查询HIS的01表中的审方状态,如果已审方,且未结算,则推送一条模板消息给居民,让居民进行支付结算。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public void unSettledHISPrescription() throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if("xm_ykyy_wx".equals(wechatId)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //获取已审核未结算的处方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            JSONArray array = ykyyEntranceService.getUnsettledPrescription(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            JSONArray array = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            JSONObject tmpjson = new JSONObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            tmpjson.put("BRID","1234"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            tmpjson.put("CFSB","1159744"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				//            array.add(tmpjson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //发送模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            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{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    ps.stream().forEach(one->{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_unsettled_notice","djsxxtz",1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        config.setFirst(config.getFirst().replace("key1",patientDO.getName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        config.setUrl(config.getUrl()+""+outpatientId+"&openid="+one.getOpenid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        config.setKeyword3(doctorName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                        weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(),one.getOpenid(),config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    //保存发送模板记录, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                    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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    public String sendWeTempMesTest(String wechatId,String openid)throws Exception{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        WxTemplateConfigDO config = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId,"template_survey","test",1); 
			 |