|
@ -2,16 +2,14 @@ package com.yihu.jw.door.util;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
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.wx.BasePatientWechatDo;
|
|
|
import com.yihu.jw.entity.base.wx.WxAccessTokenDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
|
|
|
import com.yihu.jw.entity.base.wx.WxWechatDO;
|
|
|
import com.yihu.jw.entity.door.WlyyDoorServiceOrderDO;
|
|
|
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
|
|
|
import com.yihu.jw.exception.ApiException;
|
|
|
import com.yihu.jw.exception.code.ExceptionCode;
|
|
|
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
|
|
|
import com.yihu.jw.rm.base.WechatRequestMapping;
|
|
|
import com.yihu.jw.util.common.IdCardUtil;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.http.HttpClientUtil;
|
|
|
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
|
|
@ -19,11 +17,10 @@ import com.yihu.jw.util.wechat.wxhttp.HttpUtil;
|
|
|
import com.yihu.jw.wechat.dao.WxAccessTokenDao;
|
|
|
import com.yihu.jw.wechat.dao.WxTemplateConfigDao;
|
|
|
import com.yihu.jw.wechat.service.WxAccessTokenService;
|
|
|
import com.yihu.utils.network.HttpUtils;
|
|
|
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.BeanPropertyRowMapper;
|
|
@ -56,13 +53,14 @@ public class MessageUtil {
|
|
|
private SystemMessageDao systemMessageDao;
|
|
|
@Autowired
|
|
|
private WxAccessTokenDao wxAccessTokenDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorDao baseDoctorDao;
|
|
|
//发送微信模板消息
|
|
|
public static String sendMessageUrl ="http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
|
|
|
public static String sendMessageUrl = "http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* @param wxId
|
|
|
* @param patient 患者id
|
|
|
* @param patient 患者id
|
|
|
* @param cardNo
|
|
|
* @param first
|
|
|
* @param noticeContent
|
|
@ -70,52 +68,52 @@ public class MessageUtil {
|
|
|
* @param redirectUrl
|
|
|
* @return
|
|
|
*/
|
|
|
public String sendWXMes(String wxId,String patient,String cardNo,String first,String noticeContent,String remark,String redirectUrl){
|
|
|
String msg="first:"+first+"contentMsg:"+noticeContent+"remark:"+remark;
|
|
|
logger.info("发送的信息="+msg);
|
|
|
public String sendWXMes(String wxId, String patient, String cardNo, String first, String noticeContent, String remark, String redirectUrl) {
|
|
|
String msg = "first:" + first + "contentMsg:" + noticeContent + "remark:" + remark;
|
|
|
logger.info("发送的信息=" + msg);
|
|
|
JSONObject params = new JSONObject();
|
|
|
params.put("transType","sms.hospital.notice");
|
|
|
params.put("merchId","3501000014");
|
|
|
params.put("transType", "sms.hospital.notice");
|
|
|
params.put("merchId", "3501000014");
|
|
|
JSONObject p = new JSONObject();
|
|
|
String openId = "";
|
|
|
if(StringUtils.isNotBlank(patient)){
|
|
|
String sql = "select * from base.base_patient_wechat where wechat_id='"+wxId+"'and patient_id='"+patient+"' ";
|
|
|
List<BasePatientWechatDo> paientWechatDos = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(BasePatientWechatDo.class));
|
|
|
if(paientWechatDos!=null&&paientWechatDos.size()>0){
|
|
|
if (StringUtils.isNotBlank(patient)) {
|
|
|
String sql = "select * from base.base_patient_wechat where wechat_id='" + wxId + "'and patient_id='" + patient + "' ";
|
|
|
List<BasePatientWechatDo> paientWechatDos = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(BasePatientWechatDo.class));
|
|
|
if (paientWechatDos != null && paientWechatDos.size() > 0) {
|
|
|
openId = paientWechatDos.get(0).getOpenid();
|
|
|
p.put("openId",openId);
|
|
|
p.put("openId", openId);
|
|
|
}
|
|
|
}else {
|
|
|
p.put("cardNo",cardNo);
|
|
|
} else {
|
|
|
p.put("cardNo", cardNo);
|
|
|
|
|
|
}
|
|
|
p.put("first",first);
|
|
|
p.put("noticeTime", DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss"));
|
|
|
p.put("noticeContent",noticeContent);
|
|
|
if(StringUtils.isNotBlank(redirectUrl)){
|
|
|
p.put("redirectUrl",redirectUrl);
|
|
|
p.put("first", first);
|
|
|
p.put("noticeTime", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm:ss"));
|
|
|
p.put("noticeContent", noticeContent);
|
|
|
if (StringUtils.isNotBlank(redirectUrl)) {
|
|
|
p.put("redirectUrl", redirectUrl);
|
|
|
}
|
|
|
p.put("remark",remark);
|
|
|
params.put("param",p);
|
|
|
p.put("remark", remark);
|
|
|
params.put("param", p);
|
|
|
|
|
|
logger.info("params :"+params.toString());
|
|
|
logger.info("params :" + params.toString());
|
|
|
|
|
|
if(StringUtils.isNotBlank(openId)||StringUtils.isNotBlank(cardNo)){
|
|
|
String rs = HttpUtil.sendPost(sendMessageUrl,params.toJSONString());
|
|
|
if (StringUtils.isNotBlank(openId) || StringUtils.isNotBlank(cardNo)) {
|
|
|
String rs = HttpUtil.sendPost(sendMessageUrl, params.toJSONString());
|
|
|
JSONObject rsJson = JSON.parseObject(rs);
|
|
|
String resCode = rsJson.getString("respCode");
|
|
|
if("000000".equals(resCode)){
|
|
|
if ("000000".equals(resCode)) {
|
|
|
return "1";
|
|
|
}
|
|
|
return "0";
|
|
|
}else {
|
|
|
} else {
|
|
|
return "-1";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public String ehospitalNotice(String userName, String idCard, String phone, String title, String content, String contentString,String url) {
|
|
|
String msg="first:"+title+"contentMsg:"+content+"remark:"+contentString;
|
|
|
logger.info("发送的信息="+msg);
|
|
|
public String ehospitalNotice(String userName, String idCard, String phone, String title, String content, String contentString, String url) {
|
|
|
String msg = "first:" + title + "contentMsg:" + content + "remark:" + contentString;
|
|
|
logger.info("发送的信息=" + msg);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("userName", userName);
|
|
|
jsonObject.put("idCard", idCard);
|
|
@ -130,62 +128,63 @@ public class MessageUtil {
|
|
|
return responseMsg;
|
|
|
}
|
|
|
|
|
|
public void putTemplateWxMessage(String wechatId,String templateName,String scene,String openId,String first,String remark,String url,String ...keywords){
|
|
|
public void putTemplateWxMessage(String wechatId, String templateName, String scene, String openId, String first, String remark, String url, String... keywords) {
|
|
|
try {
|
|
|
WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(wechatId);
|
|
|
if (wxAccessTokenDO==null){
|
|
|
logger.info("wx_access_token表获取为空,wechatId"+wechatId);
|
|
|
if (wxAccessTokenDO == null) {
|
|
|
logger.info("wx_access_token表获取为空,wechatId" + wechatId);
|
|
|
return;
|
|
|
}
|
|
|
WxTemplateConfigDO newConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, templateName, scene, 1);
|
|
|
|
|
|
if (newConfig==null){
|
|
|
logger.info("微信模板不存在!请确认wechatId:"+wechatId+",templateName:"+templateName+",scene:"+scene);
|
|
|
if (newConfig == null) {
|
|
|
logger.info("微信模板不存在!请确认wechatId:" + wechatId + ",templateName:" + templateName + ",scene:" + scene);
|
|
|
return;
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(url)){
|
|
|
if (StringUtils.isNoneBlank(url)) {
|
|
|
newConfig.setUrl(url);
|
|
|
}
|
|
|
if (StringUtils.isNoneBlank(remark)){
|
|
|
if (StringUtils.isNoneBlank(remark)) {
|
|
|
newConfig.setRemark(remark);
|
|
|
}
|
|
|
newConfig.setFirst(first);
|
|
|
int keyLength = keywords.length;
|
|
|
if (keyLength>=1){
|
|
|
if (keyLength >= 1) {
|
|
|
newConfig.setKeyword1(keywords[0]);
|
|
|
}
|
|
|
if (keyLength>=2){
|
|
|
if (keyLength >= 2) {
|
|
|
newConfig.setKeyword1(keywords[1]);
|
|
|
}
|
|
|
if (keyLength>=3){
|
|
|
if (keyLength >= 3) {
|
|
|
newConfig.setKeyword1(keywords[2]);
|
|
|
}
|
|
|
if (keyLength>=4){
|
|
|
if (keyLength >= 4) {
|
|
|
newConfig.setKeyword1(keywords[3]);
|
|
|
}
|
|
|
if (keyLength>=5){
|
|
|
if (keyLength >= 5) {
|
|
|
newConfig.setKeyword1(keywords[4]);
|
|
|
}
|
|
|
if (keyLength>=6){
|
|
|
if (keyLength >= 6) {
|
|
|
newConfig.setKeyword1(keywords[5]);
|
|
|
}
|
|
|
if (keyLength>=7){
|
|
|
if (keyLength >= 7) {
|
|
|
newConfig.setKeyword1(keywords[6]);
|
|
|
}
|
|
|
//发起微信消息模板推送
|
|
|
weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
|
|
|
}catch (Exception e){
|
|
|
} catch (Exception e) {
|
|
|
logger.info("微信模板推送异常");
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
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) {
|
|
|
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("-",""));
|
|
|
if (StringUtils.isBlank(messageId)) {
|
|
|
messageDO.setId(UUID.randomUUID().toString().replace("-", ""));
|
|
|
}
|
|
|
messageDO.setTitle(title);
|
|
|
messageDO.setType(type);
|
|
@ -194,19 +193,7 @@ public class MessageUtil {
|
|
|
messageDO.setRelationCode(relationCode);
|
|
|
messageDO.setReceiver(receiver);
|
|
|
messageDO.setReceiverName(receiverName);
|
|
|
net.sf.json.JSONObject data = new net.sf.json.JSONObject();
|
|
|
data.put("name", receiverName);
|
|
|
|
|
|
try {
|
|
|
if(StringUtils.isNoneBlank(idCard)){
|
|
|
data.put("age", IdCardUtil.getAgeForIdcard(idCard));
|
|
|
data.put("gender", IdCardUtil.getSexForIdcard(idCard));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
data.put("msg", msg);
|
|
|
messageDO.setData(data.toString());
|
|
|
messageDO.setData(msg);
|
|
|
messageDO.setOver(over);
|
|
|
messageDO.setCreateTime(new Date());
|
|
|
systemMessageDao.save(messageDO);
|
|
@ -214,6 +201,96 @@ public class MessageUtil {
|
|
|
}
|
|
|
|
|
|
|
|
|
public void updateMessage(WlyyDoorServiceOrderDO doorServiceOrder,String[] type,String toType,String sender,String receiver){
|
|
|
String orderId=doorServiceOrder.getId();
|
|
|
List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,type);
|
|
|
if (toType.equals("434")){//医生接单
|
|
|
if (CollectionUtils.isEmpty(messages)){
|
|
|
logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
|
|
|
}else {
|
|
|
messages.forEach(message->{
|
|
|
systemMessageDao.orderMessageDel(message.getReceiver(),message.getRelationCode());
|
|
|
if (message.getType().equals("403") ) {
|
|
|
BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
|
|
|
String msg=doorServiceOrder.getDispatcherName() + "接受了服务工单"+ doorServiceOrder.getNumber();
|
|
|
saveSystemMessage(message.getId(),message.getRelationCode(),"医生接单","434",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
|
|
|
doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
|
|
|
}
|
|
|
else{
|
|
|
message.setOver("0");
|
|
|
systemMessageDao.save(message);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (toType.equals("435")) {//医生拒单
|
|
|
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(),"医生拒单","435",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
|
|
|
doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
|
|
|
}
|
|
|
}
|
|
|
if (toType.equals("431")) {//调度员派单(派给本社区医生)
|
|
|
if(CollectionUtils.isEmpty(messages)){
|
|
|
logger.error("当前工单没有 居民新增预约 消息!!orderId:" + orderId);
|
|
|
}else{
|
|
|
// 设置消息处理完毕
|
|
|
messages.forEach(
|
|
|
message -> {
|
|
|
String title = "调度员派单(派给本社区医生)";
|
|
|
if("system".equals(doorServiceOrder.getUpdateUser())){
|
|
|
title = "系统派单(派给服务医生)";
|
|
|
}
|
|
|
if (message.getType() .equals("430")) {
|
|
|
message.setTitle(title);
|
|
|
String msg = doorServiceOrder.getDispatcherName() + "已将服务工单" + doorServiceOrder.getNumber() + "指派给" + doorServiceOrder.getDoctorName() + "医生";
|
|
|
saveSystemMessage(message.getId(),message.getRelationCode(),title,"431",doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),
|
|
|
doorServiceOrder.getUpdateUser(),doorServiceOrder.getUpdateUserName(),null,msg,message.getOver());
|
|
|
|
|
|
}else{
|
|
|
message.setOver("0");
|
|
|
systemMessageDao.save(message);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
if (toType.equals("432")){//调度员拒单
|
|
|
if(CollectionUtils.isEmpty(messages)){
|
|
|
logger.error("当前工单没有系统消息!!orderId:" + orderId);
|
|
|
} else {
|
|
|
// 432 调度员拒单即取消工单-- 李四拒绝了张三的服务工单12345678
|
|
|
messages.forEach(
|
|
|
message -> {
|
|
|
if (message.getType() .equals("430")) {
|
|
|
String msg=doorServiceOrder.getDispatcherName() + "拒绝了"+ doorServiceOrder.getPatientName() +"的服务工单" + doorServiceOrder.getNumber();
|
|
|
saveSystemMessage(message.getId(),message.getRelationCode(),"调度员拒单","432",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);
|
|
|
}
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args){
|
|
|
try {
|