|  | @ -0,0 +1,455 @@
 | 
	
		
			
				|  |  | package com.yihu.jw.care.util;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 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.org.BaseOrgDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.common.GetuiClientDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.doorCoach.BaseDoorCoachOrderDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.lifeCare.LifeCareOrderDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.care.securitymonitoring.SecurityMonitoringOrderDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.entity.hospital.message.SystemMessageDO;
 | 
	
		
			
				|  |  | import com.yihu.jw.hospital.message.dao.SystemMessageDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.org.dao.BaseOrgDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.patient.dao.BasePatientDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.push.dao.GetuiClientDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.push.service.GetuiService;
 | 
	
		
			
				|  |  | import com.yihu.jw.sms.service.TXYSmsService;
 | 
	
		
			
				|  |  | import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
 | 
	
		
			
				|  |  | import com.yihu.jw.wechat.dao.WxAccessTokenDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
 | 
	
		
			
				|  |  | import com.yihu.jw.wechat.service.WxAccessTokenService;
 | 
	
		
			
				|  |  | import org.apache.commons.collections.CollectionUtils;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.slf4j.Logger;
 | 
	
		
			
				|  |  | import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | import org.springframework.beans.BeanUtils;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Value;
 | 
	
		
			
				|  |  | import org.springframework.jdbc.core.JdbcTemplate;
 | 
	
		
			
				|  |  | import org.springframework.scheduling.annotation.Async;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import java.util.Date;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.UUID;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by liub on 2020/12/28.
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Component
 | 
	
		
			
				|  |  | public class MessageUtil {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     private static Logger logger = LoggerFactory.getLogger(MessageUtil.class);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WxAccessTokenService wxAccessTokenService;
 | 
	
		
			
				|  |  |     @Value("${hospital.url}")
 | 
	
		
			
				|  |  |     private String serverUrl;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WeixinMessagePushUtils weixinMessagePushUtils;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WxTemplateConfigDao wxTemplateConfigDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private JdbcTemplate jdbcTemplate;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private SystemMessageDao systemMessageDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private WxAccessTokenDao wxAccessTokenDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseDoctorDao baseDoctorDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BasePatientDao basePatientDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private BaseOrgDao orgDao;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private TXYSmsService txySmsService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private GetuiService getuiService;
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private GetuiClientDao getuiClientDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 您好{1}有一条新的在线报名申请,请及时前往APP消息应用进行处理。
 | 
	
		
			
				|  |  |      * @param orgCode
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     @Async
 | 
	
		
			
				|  |  |     public void sendOnlineRegistSms(String orgCode){
 | 
	
		
			
				|  |  |         BaseOrgDO orgDO = orgDao.findByCode(orgCode);
 | 
	
		
			
				|  |  |         if(StringUtils.isNotBlank(orgDO.getMobile())){
 | 
	
		
			
				|  |  |             sendTXYSJson("976005",orgDO.getMobile(),orgDO.getName());
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 发送医生个推推送消息
 | 
	
		
			
				|  |  |      * type 1 安防紧急预警 2紧急呼叫 4im 5生日祝福
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void sendDoctorGetuiMessage(String doctorCode,String type,String url,String title,String body){
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             List<GetuiClientDO> clientDOS = getuiClientDao.findByUser(doctorCode,2);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             JSONObject payload = new JSONObject();
 | 
	
		
			
				|  |  |             payload.put("title",title);
 | 
	
		
			
				|  |  |             payload.put("body",body);
 | 
	
		
			
				|  |  |             payload.put("url",url);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             JSONObject json = new JSONObject();
 | 
	
		
			
				|  |  |             json.put("title",title);
 | 
	
		
			
				|  |  |             json.put("body",body);
 | 
	
		
			
				|  |  |             json.put("url",url);
 | 
	
		
			
				|  |  | //        json.put("clickType","url");
 | 
	
		
			
				|  |  |             json.put("platform",getuiService.cloudCareDoctor);
 | 
	
		
			
				|  |  |             json.put("payload",payload.toString());
 | 
	
		
			
				|  |  |             for(GetuiClientDO clientDO:clientDOS){
 | 
	
		
			
				|  |  |                 getuiService.push2(clientDO.getClientId(),Integer.valueOf(clientDO.getClientType()),json);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }catch (Exception e){
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param wechatId
 | 
	
		
			
				|  |  |      * @param templateName
 | 
	
		
			
				|  |  |      * @param scene
 | 
	
		
			
				|  |  |      * @param openId
 | 
	
		
			
				|  |  |      * @param first
 | 
	
		
			
				|  |  |      * @param url 跳转链接
 | 
	
		
			
				|  |  |      * @param remark
 | 
	
		
			
				|  |  |      * @param type  模板通知类型
 | 
	
		
			
				|  |  |      * @param json 用于对跳转连接的修改,
 | 
	
		
			
				|  |  |      * @param keywords
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public boolean putTemplateWxMessage(String wechatId, String templateName, String scene, String openId, String first
 | 
	
		
			
				|  |  |             ,String url, String remark, Integer type,JSONObject json,String ...keywords) {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             System.out.println(wechatId);
 | 
	
		
			
				|  |  |             WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |             if (wxAccessTokenDO == null) {
 | 
	
		
			
				|  |  |                 logger.info("wx_access_token表获取为空,wechatId" + wechatId);
 | 
	
		
			
				|  |  |                 return false;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             WxTemplateConfigDO templateConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, templateName, scene, 1);
 | 
	
		
			
				|  |  |             WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
 | 
	
		
			
				|  |  |             BeanUtils.copyProperties(templateConfig,newConfig);
 | 
	
		
			
				|  |  |             if (newConfig == null) {
 | 
	
		
			
				|  |  |                 logger.info("微信模板不存在!请确认wechatId:" + wechatId + ",templateName:" + templateName + ",scene:" + scene);
 | 
	
		
			
				|  |  |                 return false;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             logger.info("微信模板推送前");
 | 
	
		
			
				|  |  |             if (StringUtils.isNoneBlank(first)){
 | 
	
		
			
				|  |  |                 newConfig.setFirst(first);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (StringUtils.isNoneBlank(url)){
 | 
	
		
			
				|  |  |                 newConfig.setUrl(url);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (StringUtils.isNoneBlank(remark)){
 | 
	
		
			
				|  |  |                 newConfig.setRemark(remark);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             newConfig = setTemPlateUrl(newConfig,type,openId,json);
 | 
	
		
			
				|  |  |             int keyLength = keywords.length;
 | 
	
		
			
				|  |  |             if (keyLength >= 1) {
 | 
	
		
			
				|  |  |                if(StringUtils.isNoneBlank(keywords[0])){
 | 
	
		
			
				|  |  |                    newConfig.setKeyword1(keywords[0]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 2) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[1])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword2(keywords[1]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 3) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[2])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword3(keywords[2]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 4) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[3])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword4(keywords[3]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 5) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[4])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword5(keywords[4]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 6) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[5])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword6(keywords[5]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (keyLength >= 7) {
 | 
	
		
			
				|  |  |                 if(StringUtils.isNoneBlank(keywords[6])){
 | 
	
		
			
				|  |  |                     newConfig.setKeyword7(keywords[6]);
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             //发起微信消息模板推送
 | 
	
		
			
				|  |  |             weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
 | 
	
		
			
				|  |  |             logger.info("微信模板消息推送后");
 | 
	
		
			
				|  |  |             return true;
 | 
	
		
			
				|  |  |         } catch (Exception e) {
 | 
	
		
			
				|  |  |             logger.info("微信模板推送异常");
 | 
	
		
			
				|  |  |             e.printStackTrace();
 | 
	
		
			
				|  |  |             return false;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Async
 | 
	
		
			
				|  |  |     public String sendTXYSJson(String templateCode,String mobile,String ...params){
 | 
	
		
			
				|  |  |         JSONObject sendObj = new JSONObject();
 | 
	
		
			
				|  |  |         sendObj.put("templateCode",templateCode);
 | 
	
		
			
				|  |  |         if (params.length>0){
 | 
	
		
			
				|  |  |             JSONArray paramArr =JSONArray.parseArray(JSON.toJSONString(params));
 | 
	
		
			
				|  |  |             sendObj.put("templateParamArr",paramArr);
 | 
	
		
			
				|  |  |         }else {
 | 
	
		
			
				|  |  |             JSONArray paramArr =new JSONArray();
 | 
	
		
			
				|  |  |             sendObj.put("templateParamArr",paramArr);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return txySmsService.sendMessageJson(mobile,sendObj);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public WxTemplateConfigDO setTemPlateUrl(WxTemplateConfigDO wxTemplateConfigDO,Integer type,String openid,JSONObject json){
 | 
	
		
			
				|  |  |         String url =  "taian-wx/html/";
 | 
	
		
			
				|  |  |         if (json==null){
 | 
	
		
			
				|  |  |             return wxTemplateConfigDO;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         switch (type){
 | 
	
		
			
				|  |  |             case 1:
 | 
	
		
			
				|  |  |                 //咨询回复
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?sessionId=" + json.getString("sessionId")
 | 
	
		
			
				|  |  |                         +"&type="+json.getString("consultType")+"&orgCode="+json.getString("orgCode")+"&openid="+openid);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 2:
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?openid=" + openid+"&id="+json.getString("id"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 3:
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl() + "?openid=" + openid);
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 19:
 | 
	
		
			
				|  |  |                 String urlStr= wxTemplateConfigDO.getUrl();
 | 
	
		
			
				|  |  |                 boolean status = urlStr.contains("openid=");
 | 
	
		
			
				|  |  |                 if(!status){
 | 
	
		
			
				|  |  |                     urlStr=json.getString("url")+"?openid=" + openid;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(url + urlStr );
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 26://生日祝福
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 28://视频请求
 | 
	
		
			
				|  |  |                 //?channelName="'&nickName=''&token=' '
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&channelName=" + json.getString("channelName")
 | 
	
		
			
				|  |  |                         + "&nickName=" + json.getString("nickName")+ "&token=" + json.getString("token")
 | 
	
		
			
				|  |  |                         + "&userId=" + json.getString("userId")+ "&userName=" + json.getString("userName")
 | 
	
		
			
				|  |  |                         + "&sessionId=" + json.getString("sessionId"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 30:
 | 
	
		
			
				|  |  |                 //反馈通知 测试 TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
 | 
	
		
			
				|  |  |                 if(json.containsKey("consult")) {
 | 
	
		
			
				|  |  |                     wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&consult=" + json.getString("consult"));
 | 
	
		
			
				|  |  |                 }else if (json.containsKey("id")){
 | 
	
		
			
				|  |  |                     wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&id=" + json.getString("id"));
 | 
	
		
			
				|  |  |                 }else if(json.containsKey("relationCode")){
 | 
	
		
			
				|  |  |                     wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid );
 | 
	
		
			
				|  |  |                 }else if(json.containsKey("resultCode")){
 | 
	
		
			
				|  |  |                     wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?resultCode=" + json.getString("resultCode"));
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 31:
 | 
	
		
			
				|  |  |                 //上门服务医生评分
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + json.getString("finish"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 32:
 | 
	
		
			
				|  |  |                 String url1 = "wx/common/";
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(url1 + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&consult=" + json.getString("consult") + "&status=" + json.getInteger("status"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 34:
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&orderId=" + json.getString("orderId")+ "&authorizeImage=" + json.getString("authorizeImage"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 35:
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+json.getString("orderId")+"&isMask=1");
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 36://安防、救助工单详情地址
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&id="+json.getString("id")+"&OrderType="+json.getString("OrderType"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |             case 37://居民血压血糖列表详情
 | 
	
		
			
				|  |  |                 wxTemplateConfigDO.setUrl(wxTemplateConfigDO.getUrl()+"?openid=" + openid+"&patientId="+json.getString("patientId")+"&type="+json.getString("type"));
 | 
	
		
			
				|  |  |                 break;
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return wxTemplateConfigDO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public SystemMessageDO saveSystemMessage(String messageId, String relationCode, String title, String type, String sender, String senderName, String receiver, String receiverName, String idCard, String msg, String over) {
 | 
	
		
			
				|  |  |         SystemMessageDO messageDO = new SystemMessageDO();
 | 
	
		
			
				|  |  |         if (StringUtils.isBlank(messageId)) {
 | 
	
		
			
				|  |  |             messageDO.setId(UUID.randomUUID().toString().replace("-", ""));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         messageDO.setTitle(title);
 | 
	
		
			
				|  |  |         messageDO.setType(type);
 | 
	
		
			
				|  |  |         messageDO.setSender(sender);
 | 
	
		
			
				|  |  |         messageDO.setSenderName(senderName);
 | 
	
		
			
				|  |  |         messageDO.setRelationCode(relationCode);
 | 
	
		
			
				|  |  |         messageDO.setReceiver(receiver);
 | 
	
		
			
				|  |  |         messageDO.setReceiverName(receiverName);
 | 
	
		
			
				|  |  |         messageDO.setData(msg);
 | 
	
		
			
				|  |  |         messageDO.setDel("1");
 | 
	
		
			
				|  |  |         messageDO.setOver(over);
 | 
	
		
			
				|  |  |         messageDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |         systemMessageDao.save(messageDO);
 | 
	
		
			
				|  |  |         return messageDO;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void createMessage(String title,String type,String sender,String senderName,String relationCode,String Receiver,String ReceiverName,String idCard,String msg){
 | 
	
		
			
				|  |  |         SystemMessageDO messageDO = new SystemMessageDO();
 | 
	
		
			
				|  |  |         messageDO.setTitle(title);
 | 
	
		
			
				|  |  |         messageDO.setType(type);//401为资质申请审核
 | 
	
		
			
				|  |  |         messageDO.setSender(sender);
 | 
	
		
			
				|  |  |         messageDO.setSenderName(senderName);
 | 
	
		
			
				|  |  |         messageDO.setRelationCode(relationCode);
 | 
	
		
			
				|  |  |         messageDO.setReceiver(Receiver);
 | 
	
		
			
				|  |  |         messageDO.setReceiverName(ReceiverName);
 | 
	
		
			
				|  |  |         messageDO.setOver("1");
 | 
	
		
			
				|  |  |         messageDO.setData(msg);
 | 
	
		
			
				|  |  |         messageDO.setDel("1");
 | 
	
		
			
				|  |  |         messageDO.setCreateTime(new Date());
 | 
	
		
			
				|  |  |         systemMessageDao.save(messageDO);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void updateLifeCareMessage(LifeCareOrderDO orderDO, String[] type, String toType){
 | 
	
		
			
				|  |  |         String orderId=orderDO.getId();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
 | 
	
		
			
				|  |  |         if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
 | 
	
		
			
				|  |  |             if(CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有系统消息!!orderId:" + orderId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 messages.forEach(
 | 
	
		
			
				|  |  |                         message -> {
 | 
	
		
			
				|  |  |                             message.setOver("0");
 | 
	
		
			
				|  |  |                             systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                 );
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public void updateSecurityMonitoringOrderMessage(SecurityMonitoringOrderDO orderDO, String[] type, String toType){
 | 
	
		
			
				|  |  |         String orderId=orderDO.getId();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
 | 
	
		
			
				|  |  |         if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
 | 
	
		
			
				|  |  |             if(CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前安防工单没有系统消息!!orderId:" + orderId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 messages.forEach(
 | 
	
		
			
				|  |  |                         message -> {
 | 
	
		
			
				|  |  |                             message.setOver("0");
 | 
	
		
			
				|  |  |                             systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                 );
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //上门辅导消息更新
 | 
	
		
			
				|  |  |     public void updateDoorCoachMessage(BaseDoorCoachOrderDO doorServiceOrder, String[] type, String toType, String sender, String receiver){
 | 
	
		
			
				|  |  |         String orderId=doorServiceOrder.getId();
 | 
	
		
			
				|  |  |         List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
 | 
	
		
			
				|  |  |         if (toType.equals("734")){//医生接单
 | 
	
		
			
				|  |  |             if (CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
 | 
	
		
			
				|  |  |             }else {
 | 
	
		
			
				|  |  |                 messages.forEach(message->{
 | 
	
		
			
				|  |  |                     if (message.getType().equals("703") ) {
 | 
	
		
			
				|  |  |                         BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
 | 
	
		
			
				|  |  |                         String msg=doorServiceOrder.getDispatcherName() + "接受了服务工单"+ doorServiceOrder.getNumber();
 | 
	
		
			
				|  |  |                         saveSystemMessage(message.getId(),message.getRelationCode(),"医生接单","734",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
 | 
	
		
			
				|  |  |                                 doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                     else{
 | 
	
		
			
				|  |  |                         message.setOver("0");
 | 
	
		
			
				|  |  |                         systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 });
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (toType.equals("735")) {//医生拒单
 | 
	
		
			
				|  |  |             if (CollectionUtils.isEmpty(messages)) {
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 SystemMessageDO message = messages.get(0);
 | 
	
		
			
				|  |  |                 BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());
 | 
	
		
			
				|  |  |                 String msg=doorServiceOrder.getDoctorName() + "拒绝了服务工单" + doorServiceOrder.getNumber() + ", 请重新派单";
 | 
	
		
			
				|  |  |                 saveSystemMessage(message.getId(),message.getRelationCode(),"医生拒单","735",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
 | 
	
		
			
				|  |  |                         doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (toType.equals("731")) {//调度员派单(派给本社区医生)
 | 
	
		
			
				|  |  |             if(CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有 居民新增预约 消息!!orderId:" + orderId);
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 // 设置消息处理完毕
 | 
	
		
			
				|  |  |                 messages.forEach(
 | 
	
		
			
				|  |  |                         message -> {
 | 
	
		
			
				|  |  |                             String title = "调度员派单(派给本社区医生)";
 | 
	
		
			
				|  |  |                             if("system".equals(doorServiceOrder.getUpdateUser())){
 | 
	
		
			
				|  |  |                                 title = "系统派单(派给服务医生)";
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             if (message.getType() .equals("730")) {
 | 
	
		
			
				|  |  |                                 message.setTitle(title);
 | 
	
		
			
				|  |  |                                 String msg = doorServiceOrder.getDispatcherName() + "已将服务工单" + doorServiceOrder.getNumber() + "指派给" + doorServiceOrder.getDoctorName() + "医生";
 | 
	
		
			
				|  |  |                                 saveSystemMessage(message.getId(),message.getRelationCode(),title,"731",doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),
 | 
	
		
			
				|  |  |                                         doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),null,msg,message.getOver());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                             }else{
 | 
	
		
			
				|  |  |                                 message.setOver("0");
 | 
	
		
			
				|  |  |                                 systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                 );
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (toType.equals("732")){//调度员拒单
 | 
	
		
			
				|  |  |             if(CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有系统消息!!orderId:" + orderId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 // 432 调度员拒单即取消工单-- 李四拒绝了张三的服务工单12345678
 | 
	
		
			
				|  |  |                 messages.forEach(
 | 
	
		
			
				|  |  |                         message -> {
 | 
	
		
			
				|  |  |                             if (message.getType() .equals("730")) {
 | 
	
		
			
				|  |  |                                 String msg=doorServiceOrder.getDispatcherName() + "拒绝了"+ doorServiceOrder.getPatientName() +"的服务工单" + doorServiceOrder.getNumber();
 | 
	
		
			
				|  |  |                                 saveSystemMessage(message.getId(),message.getRelationCode(),"调度员拒单","732",doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),
 | 
	
		
			
				|  |  |                                         doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
 | 
	
		
			
				|  |  |                             }else{
 | 
	
		
			
				|  |  |                                 message.setOver("0");
 | 
	
		
			
				|  |  |                                 systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                 );
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (toType.equals("patientCancel")){//居民取消 消息列表也应该不显示
 | 
	
		
			
				|  |  |             if(CollectionUtils.isEmpty(messages)){
 | 
	
		
			
				|  |  |                 logger.error("当前工单没有系统消息!!orderId:" + orderId);
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 messages.forEach(
 | 
	
		
			
				|  |  |                         message -> {
 | 
	
		
			
				|  |  |                             message.setOver("0");
 | 
	
		
			
				|  |  |                             systemMessageDao.save(message);
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                 );
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |