liubing 4 лет назад
Родитель
Сommit
38a09d6a6d

+ 3 - 0
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/dao/WlyyDoorCommentDao.java

@ -2,6 +2,7 @@ package com.yihu.jw.door.dao;
import com.yihu.jw.entity.door.WlyyDoorCommentDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
@ -17,4 +18,6 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 * @since 1.
 */
public interface WlyyDoorCommentDao extends PagingAndSortingRepository<WlyyDoorCommentDO, Integer>, JpaSpecificationExecutor<WlyyDoorCommentDO>  {
    @Query("select t from WlyyDoorCommentDO t where t.patient = ?1 and t.orderId = ?2 ")
    WlyyDoorCommentDO selectCommentDoctor(String patient, String orderId);
}

+ 68 - 81
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/DoorOrderService.java

@ -3,7 +3,6 @@ package com.yihu.jw.door.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.netflix.discovery.converters.Auto;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.door.dao.*;
import com.yihu.jw.door.util.MessageUtil;
@ -118,8 +117,9 @@ public class DoorOrderService {
    @Value("${wechat.id}")
    private String wxId;
    @Autowired
    private  BaseDoctorDao baseDoctorDao;
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private WlyyDoorCommentDao doorCommentDao;
    /**
     * 顶部状态栏订单各分类总条数
     * @param doctor
@ -490,17 +490,17 @@ public class DoorOrderService {
        // 获取微信模板
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        try {
            String patientName=patient.getName()==null?"":patient.getName();
            String doctorName=doorServiceOrder.getDoctorName()!=null? doorServiceOrder.getDoctorName() : "";
            String first = patientName+",您好!您的上门预约服务已由"+doctorName+"医生接单了";
            String contentMsg = "";
            String remark = "您可点击消息查看详情。";
            String url ="appoint_service/html/appoint-serviceDetail.html";
            if ("xm_xzzx_wx".equalsIgnoreCase(wxId)){
                String responseMsg =messageUtil.sendWXMes(wxId,patient.getId(),patient.getIdcard(),first,contentMsg,remark,url);
            }else if ("xm_zsyy_wx".equalsIgnoreCase(wxId)) {
                String responseMsg =messageUtil.ehospitalNotice(patient.getName(),patient.getIdcard(),patient.getMobile(),first,contentMsg,remark,url);
            if(consult != null) {
                String consultStr =  consult.getId();
            }
            String first = patientName+",您好!您的上门预约服务已由【"+doctorName+"】医生接单了";
            logger.info("上门服务已接单推送前");
            //url + json.getString("url") + "?openid=" + openid + "&consult=" + json.getString("consult")
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyjjd",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"上门服务已接单");
            logger.info("上门服务已接单推送前");
        }catch (Exception e){
            logger.error(e.getMessage());
        }
@ -515,7 +515,7 @@ public class DoorOrderService {
                    BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
                    String msg=doorServiceOrder.getDispatcherName() + "接受了服务工单"+ doorServiceOrder.getNumber();
                    messageUtil.saveSystemMessage(message.getId(),message.getRelationCode(),"医生接单","434",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
                            doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),baseDoctorDO.getIdcard(),msg,message.getOver());
                            doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
                }
                else{
                    message.setOver("0");
@ -524,26 +524,6 @@ public class DoorOrderService {
            });
        }
/*        List<Message> messages = messageDao.queryByRelationCodeAndTypeIn(orderId,new Integer[]{403,407});
        if(CollectionUtils.isEmpty(messages)){
            logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
        } else {
            messages.forEach(
                    message -> {
                        if (message.getType() == 403) {
                            message.setTitle("医生接单");
                            message.setContent(doorServiceOrder.getDispatcherName() + "接受了服务工单"+ doorServiceOrder.getNumber());
                            message.setType(434);
                            message.setReceiver(doorServiceOrder.getDispatcher());
                            message.setSender(doorServiceOrder.getDoctor());
                            message.setCreateTime(new Date());
                        }else{
                            message.setOver("0");
                        }
                        messageDao.save(message);
                    }
            );
        }*/
    }
    /**
@ -560,12 +540,12 @@ public class DoorOrderService {
        //给代预约医生发消息
        if (doorServiceOrder.getType() != null && doorServiceOrder.getType() == 3) {
            BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getProxyPatient());//·
            this.createMessage("代预约服务工单重新派单","403","system","system", doorServiceOrder.getId(), doorServiceOrder.getProxyPatient(),baseDoctorDO.getName() ,baseDoctorDO.getIdcard(), doorServiceOrder.getPatientName() + "的代预约服务工单需重新派单,请您前往处理");
            this.createMessage("代预约服务工单重新派单","403","system","system", doorServiceOrder.getId(), doorServiceOrder.getProxyPatient(),baseDoctorDO.getName() ,null, doorServiceOrder.getPatientName() + "的代预约服务工单需重新派单,请您前往处理");
        } else {
            messageUtil.orderMessageDel(null,orderId,"407",doorServiceOrder.getDoctor());
            if(StringUtils.isNotBlank(doorServiceOrder.getDispatcher())){
                BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
                this.createMessage("服务工单拒单待重新派单","404","system","system", doorServiceOrder.getId(), doorServiceOrder.getDispatcher(),baseDoctorDO.getName() , baseDoctorDO.getIdcard(),doorServiceOrder.getDoctorName() + "拒绝了" + doorServiceOrder.getProxyPatientName() + "的服务预约申请,请重新派单");
                this.createMessage("服务工单拒单待重新派单","404","system","system", doorServiceOrder.getId(), doorServiceOrder.getDispatcher(),baseDoctorDO.getName() , null,doorServiceOrder.getDoctorName() + "拒绝了" + doorServiceOrder.getProxyPatientName() + "的服务预约申请,请重新派单");
                //  调度员-派单-实时工单消息:435 医生拒单-- 王五拒绝了服务工单12345678
                List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"431,433");
                if (CollectionUtils.isEmpty(messages)) {
@ -575,29 +555,9 @@ public class DoorOrderService {
                    messageUtil.orderMessageDel(message.getId(),message.getRelationCode(),message.getType(),message.getReceiver());
                    String msg=doorServiceOrder.getDoctorName() + "拒绝了服务工单" + doorServiceOrder.getNumber() + ", 请重新派单";
                    messageUtil.saveSystemMessage(message.getId(),message.getRelationCode(),"医生拒单","435",doorServiceOrder.getDoctor(),doorServiceOrder.getDoctorName(),
                            doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),baseDoctorDO.getIdcard(),msg,message.getOver());
                            doorServiceOrder.getDispatcher(),doorServiceOrder.getDispatcherName(),null,msg,message.getOver());
                }
            }
/*            this.messageDao.orderMessageDel(doorServiceOrder.getDoctor(),orderId);
            if(StringUtils.isNotBlank(doorServiceOrder.getDispatcher())){
                // 派单消息
                this.createMessage(doorServiceOrder.getId(), "system", doorServiceOrder.getDispatcher(), 404, "服务工单拒单待重新派单", doorServiceOrder.getDoctorName() + "拒绝了" + doorServiceOrder.getProxyPatientName() + "的服务预约申请,请重新派单");
                //  调度员-派单-实时工单消息:435 医生拒单-- 王五拒绝了服务工单12345678
                List<Message> messages = messageDao.queryByRelationCodeAndTypeIn(orderId, new Integer[]{431, 433});
                if (CollectionUtils.isEmpty(messages)) {
                    logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
                } else {
                    Message message = messages.get(0);
                    message.setTitle("医生拒单");
                    message.setContent(doorServiceOrder.getDoctorName() + "拒绝了服务工单" + doorServiceOrder.getNumber() + ", 请重新派单");
                    message.setType(435);
                    message.setReceiver(doorServiceOrder.getDispatcher());
                    message.setSender(doorServiceOrder.getDoctor());
                    message.setCreateTime(new Date());
                    messageDao.save(message);
                }
            }*/
        }
        doorServiceOrder.setDoctor(null);
        doorServiceOrder.setDoctorName(null);
@ -611,10 +571,10 @@ public class DoorOrderService {
    /**
     * 添加【工单派单,转单】等系统消息
     */
    public void createMessage(String title,String type,String sender,String senderName,String relationCode,String Receiver,String ReceiverName,String idCard,String msg) throws Exception {
    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);
        messageDO.setType(type);//401为资质申请审核
        messageDO.setSender(sender);
        messageDO.setSenderName(senderName);
        messageDO.setRelationCode(relationCode);
@ -623,7 +583,11 @@ public class DoorOrderService {
        net.sf.json.JSONObject data = new net.sf.json.JSONObject();
        data.put("name", ReceiverName);
        data.put("age", IdCardUtil.getAgeForIdcard(idCard));
        data.put("gender", IdCardUtil.getSexForIdcard(idCard));
        try {
            data.put("gender", IdCardUtil.getSexForIdcard(idCard));
        } catch (Exception e) {
            e.printStackTrace();
        }
        data.put("msg", msg);
        messageDO.setData(msg);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -631,22 +595,6 @@ public class DoorOrderService {
        String dateTime=format.format(date);
        messageDO.setCreateTime(date);
        messageUtil.saveSystemMessage(messageDO);
///*        Message message= new Message();
//        message.setCzrq(new Date());
//        message.setCreateTime(new Date());
//        message.setRead(1);
//        message.setState(1);
//        message.setRelationCode(orderId);
//        message.setOver("1");
//        message.setReceiver(receiver);
//        message.setSender(sender);
//        message.setCode(getCode());
//        message.setTitle(title);
//        message.setContent(Content);
//        //消息类型:401为资质申请审核
//        message.setType(type);
//        message.setDel("1");
//        messageDao.save(message);*/
    }
    /**
@ -1022,6 +970,20 @@ public class DoorOrderService {
        // 获取微信模板 smfwdwk-上门服务待付款
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        try {//·
            String first = "key1预约上门服务医生已完成服务。为提高服务质量,诚邀您对本次服务医生进行评分";
            first = first.replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
            first = first .replace("key2", null != one.getDoctorName() ? one.getDoctorName() : "");
            WlyyDoorCommentDO wlyyDoorCommentDO = doorCommentDao.selectCommentDoctor(patient.getId(),orderId);
            String finish="";
            if(wlyyDoorCommentDO!=null){
                finish = "0";
            }else {
                finish = "1";
            }
            //url:url + json.getString("url")+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + finish)
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwyspf",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"服务医生评分");
/*            WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","fwyspf");
            String first = templateConfig.getFirst();
            first = first.replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
@ -1085,13 +1047,31 @@ public class DoorOrderService {
        doorServiceOrderDao.save(one);
        // 更新居民签约服务包服务项次数
        this.reduceServiceItemTimes(serverPackagePriceByOrderId(orderId), one.getPatient());
        // 发送微信消息通知--用户评价//·
/*        BasePatientDO patient = patientInfoService.findById(one.getPatient());
        BasePatientDO patient = patientInfoService.findById(one.getPatient());
        // 获取微信模板  fwyspf-服务医生评分
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        try {
            WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","fwyspf");
            String first = "key1预约上门服务医生已完成服务。为提高服务质量,诚邀您对本次服务医生进行评分";
            first = first.replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
            first = first .replace("key2", null != one.getDoctorName() ? one.getDoctorName() : "");
            WlyyDoorCommentDO wlyyDoorCommentDO = doorCommentDao.selectCommentDoctor(patient.getId(),orderId);
            String finish="";
            if(wlyyDoorCommentDO!=null){
                finish = "0";
            }else {
                finish = "1";
            }
            //url:url + json.getString("url")+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + finish)
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwyspf",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"服务医生评分");
        }catch (Exception e){
            logger.error(e.getMessage());
        }
/*        try {
         WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","fwyspf");
            String first = templateConfig.getFirst();
            first = first.replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
            first = first .replace("key2", null != one.getDoctorName() ? one.getDoctorName() : "");
@ -1431,12 +1411,18 @@ public class DoorOrderService {
        wlyyDoorServiceOrderService.orderWithPackageItemFeeAdd(new JSONObject(), jsonObjectParam, order);
        // 发送微信模板消息,通知居民服务项目已经变更(smyyyjjd-服务项目变更通知)
/*        BasePatientDO patient = patientInfoService.findById(order.getProxyPatient());//·
       BasePatientDO patient = patientInfoService.findById(order.getProxyPatient());//·
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        Integer status = 0;
        try{
            String first = "您的预约服务的服务项目已变更,请及时确认";
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first .replace("key2", null != order.getDoctorName() ? order.getDoctorName() : "");
            String consultStr = consult.getId();
//            url1 + json.getString("url")+"?openid=" + openid + "&consult=" + json.getString("consult") + "&status=" + json.getInt("status")
//            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwyspf",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"服务项目变更确认");
            WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","fwxmbgtz");
            /* WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","fwxmbgtz");
            String first = templateConfig.getFirst();
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first .replace("key2", null != order.getDoctorName() ? order.getDoctorName() : "");
@ -1449,10 +1435,11 @@ public class DoorOrderService {
            json.put("remark", templateConfig.getRemark());
            json.put("consult",consult.getCode());
            json.put("status",status);
//            pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 32, patient.getOpenid(), patient.getName(), json);
//            pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 32, patient.getOpenid(), patient.getName(), json);*/
        }catch (Exception e) {
            logger.error(e.getMessage());
        }*/
        }
    }

+ 34 - 4
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/DoorServiceApplicationService.java

@ -11,6 +11,7 @@ import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.door.WlyyDoorServiceApplicationDo;
import com.yihu.jw.entity.door.WlyyDoorServiceVoucherDo;
import com.yihu.jw.entity.hospital.family.WlyyPatientFamilyMemberDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.family.dao.WlyyPatientFamilyMemberDao;
import com.yihu.jw.message.dao.MessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
@ -21,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
@ -70,6 +72,8 @@ public class DoorServiceApplicationService {
    private BasePatientDao patientInfoService;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${wechat.id}")
    private String wxId;
    @PostConstruct
    public void init() {
@ -269,7 +273,7 @@ public class DoorServiceApplicationService {
        }
        WlyyDoorServiceApplicationDo wlyyDoorServiceApplicationDo1 = doorServiceApplicationDao.save(wlyyDoorServiceApplicationDo);
        if(!"2".equals(doctorFlag)){
            //居民申请给调度员发系统消息
            //居民申请给调度员发系统消息//··
/*            List<Map<String, Object>> mapList = findDispatcherByPatient(patient);
            Message message=null;
            for(Map<String,Object> map:mapList){
@ -501,11 +505,17 @@ public class DoorServiceApplicationService {
            wlyyDoorServiceApplicationDo.setUpdateUser(doctor.getId());
            wlyyDoorServiceApplicationDo.setUpdateUserName(doctor.getName());
            //将所有调度员的消息处理为结束
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(String.valueOf(id),null);
            messages.forEach(item->{
                item.setOver("0");
                messageUtil.orderMessageDel(item.getId(),null,null,null);
                messageUtil.saveSystemMessage(item);
            });
/*            List<Message> messages=messageDao.findMessageByRelationCode(String.valueOf(id));
            messages.forEach(item->{
                item.setOver("0");
            });
            messageDao.save(messages);
            messageDao.save(messages);//··
            //在转给家医的时候需要给家医发消息
            List<SignFamily> signFamilies= signFamilyDao.getSignFamilyByPatient(wlyyDoorServiceApplicationDo.getPatient());
            if(null!=signFamilies&&signFamilies.size()>0){
@ -534,6 +544,12 @@ public class DoorServiceApplicationService {
        }else {
            //处理消息
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(String.valueOf(id),null);
            messages.forEach(item->{
                item.setOver("0");
                messageUtil.orderMessageDel(item.getId(),null,null,null);
                messageUtil.saveSystemMessage(item);
            });
/*            List<Message> messages=messageDao.findMessageByRelationCode(String.valueOf(id));
            messages.forEach(item->{
                item.setOver("0");
@ -567,7 +583,21 @@ public class DoorServiceApplicationService {
        }
        WlyyDoorServiceApplicationDo wlyyDoorServiceApplicationDo1=doorServiceApplicationDao.save(wlyyDoorServiceApplicationDo);
        if(null!=wlyyDoorServiceApplicationDo1){
            //给代理申请资质的居民发送微信模板消息-审核结果
            //给代理申请资质的居民发送微信模板消息-审核结果//·
            BasePatientDO patient = patientInfoService.findById(wlyyDoorServiceApplicationDo1.getProxyPatient());
            String first ="key1您好,key2的资格审核医生已处理。";
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first.replace("key2", (wlyyDoorServiceApplicationDo1.getPatientName() == null ? "" : wlyyDoorServiceApplicationDo1.getPatientName()));
            wlyyDoorServiceApplicationDo1.getAuditorName();
//            String urlStr= json.getString("url");
//            boolean status = urlStr.contains("openid=");
//            if(!status){
//                urlStr=json.getString("url")+"?openid=" + openid;
//            }
//            temp.setUrl(url + urlStr )
            messageUtil.putTemplateWxMessage(wxId,"template_doctor_audit",scene,patient.getOpenid(),first,null,null,null,wlyyDoorServiceApplicationDo1.getAuditorName());
/*            Patient patient = patientDao.findByCode(wlyyDoorServiceApplicationDo1.getProxyPatient());
            WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_doctor_audit",scene);
            if(null==templateConfig){
@ -659,7 +689,7 @@ public class DoorServiceApplicationService {
////        messageUtil.putTemplateWxMessage("97ed8a0a-4f07-4b85-ab02-b716c611a464","eee","zxxq","oULM4xCMTL9tuX_DjwEDdi6iaY0c",first,remark,url,"1231312312",DateUtil.getStringDate());
//
//        messageUtil.sendWXMes("xm_ykyy_wx","808080eb73e02e8f0173ebe51e1b007d","210503199507250313",first,contentMsg,remark,url);
        BasePatientDO temp = patientDao.findById("0000000067bab53a0167badd74f00004");
        BasePatientDO patient = patientInfoService.findById("0000000067bab53a0167badd74f00004");
        return "ss";
    }

+ 16 - 1
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/WlyyDoorPrescriptionService.java

@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.netflix.discovery.converters.Auto;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.door.dao.DoorServiceOrderDao;
import com.yihu.jw.door.dao.WlyyDoorPrescriptionDao;
@ -11,12 +12,14 @@ import com.yihu.jw.door.dao.WlyyDoorPrescriptionDetailDao;
import com.yihu.jw.door.dao.WlyyDoorPrescriptionDrugDao;
import com.yihu.jw.door.service.prescription.JwDoorPrescriptionService;
import com.yihu.jw.door.service.prescription.PresModeAdapter;
import com.yihu.jw.door.util.MessageUtil;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.door.WlyyDoorPrescriptionDO;
import com.yihu.jw.entity.door.WlyyDoorPrescriptionDrugDO;
import com.yihu.jw.entity.door.WlyyDoorServiceOrderDO;
import com.yihu.jw.entity.patient.Patient;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.im.dao.ConsultDao;
import com.yihu.jw.im.util.ImUtil;
@ -85,9 +88,13 @@ public class WlyyDoorPrescriptionService  extends BaseJpaService<WlyyDoorPrescri
    private ZyIvDeptDictDao zyIvDeptDictDao;*/
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private MessageUtil messageUtil;
    @Value("${server.server_url}")
    private String server_url;
    @Value("${wechat.id}")
    private String wxId;
    /**
     * 造长处方开方数据
@ -257,7 +264,15 @@ public class WlyyDoorPrescriptionService  extends BaseJpaService<WlyyDoorPrescri
//        orderDO.setAuthorizeImage(authorizeImage);
        orderDO.setAuthorizeImage(server_url+"/images/healthCardQRcode.png");
        doorServiceOrderDao.save(orderDO);
/*        Patient patient = patientDao.findByCode(orderDO.getPatient());
        BasePatientDO patient = patientDao.findById(orderDO.getPatient());
        String first = "key1,您好!请授权电子健康卡";//·
        first = first.replace("key1", orderDO.getPatientName());
//        json.put("orderId", orderDO.getId());
//        json.put("openId", patient.getOpenid()());
//        json.put("authorizeImage", orderDO.getAuthorizeImage());
        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","authorize",patient.getOpenid(),first,null,DateUtil.dateToStrShort(new Date()));
/*        Patient patient = patientDao.findByCode(orderDO.getPatient());//·
        //发送微信模板消息
        WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback", "authorize");
        String first = templateConfig.getFirst();

+ 79 - 20
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/WlyyDoorServiceOrderService.java

@ -8,12 +8,14 @@ import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.door.dao.*;
import com.yihu.jw.door.service.consult.ConsultTeamService;
import com.yihu.jw.door.util.MessageUtil;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.im.ConsultDo;
import com.yihu.jw.entity.base.im.ConsultTeamDo;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.door.*;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.im.dao.ConsultDao;
import com.yihu.jw.im.util.ImUtil;
import com.yihu.jw.org.dao.BaseOrgDao;
@ -51,6 +53,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.*;
/**
@ -160,6 +163,8 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    private WlyyDoorOrderItemDao doorOrderItemDao;
    @Autowired
    private DoorServiceApplicationService doorServiceApplicationService;
    @Autowired
    private MessageUtil messageUtil;
    /**
     * 上门服务工单服务基本信息
@ -635,16 +640,17 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        }
        List<Map<String,Object>> dispatcherInfoList = (List)dispatcherJson.get(ResponseContant.resultMsg);
        for(Map<String,Object> map: dispatcherInfoList){
            String dispatcher = map.get("code").toString();
            String dispatcher = map.get("code").toString();//·
            BaseDoctorDO doctorVO = doctorDao.findById(dispatcher);
            // 派单消息-首页
            this.createMessage(orderDO.getId(),"system",dispatcher,402,"新增居民预约服务申请",orderDO.getPatientName() + "提交了服务预约申请,请您前往处理");
            this.createMessage("新增居民预约服务申请","402","system","system", orderDO.getId(), dispatcher,doctorVO.getName() ,doctorVO.getIdcard(), orderDO.getPatientName() + "提交了服务预约申请,请您前往处理");
            // 派单-实时工单消息  430 居民提交工单申请-- 张三提交了服务工单12345678申请
            this.createMessage(orderDO.getId(),"system",dispatcher,430,"居民提交工单申请",orderDO.getPatientName() + "提交了服务工单"+orderDO.getNumber()+"申请");
            this.createMessage("居民提交工单申请","430","system","system", orderDO.getId(), dispatcher,doctorVO.getName() ,doctorVO.getIdcard(), orderDO.getPatientName() + "提交了服务工单"+orderDO.getNumber()+"申请");
        }
        //给机构调度员发送医生助手消息
        String  dispatcherSql = "SELECT u.user_code FROM `manage_role_user` u ,wlyy_doctor d where u.role_id = 22 and u.user_code = d.`code` and d.hospital = '" +orderDO.getHospital() + "'";
        List<Map<String, Object>> dispatcherList = jdbcTemplate.queryForList(dispatcherSql);
        for(Map<String, Object> map : dispatcherList) {
        for(Map<String, Object> map : dispatcherList) {//·
            sendWeixinMessage(3, map.get("user_code") + "", orderDO.getPatient());
        }
        result.put(ResponseContant.resultFlag, ResponseContant.success);
@ -668,7 +674,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    public void sendWeixinMessage(Integer type,String doctorCode,String patient){
        //提交资质审核
        if (type==1){
        if (type==1){//·
            try {
/*                WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_doctor_survey","zztj");
                org.json.JSONObject sendJson = new org.json.JSONObject();
@ -1329,8 +1335,42 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        }
        orderDO.setStatus(WlyyDoorServiceOrderDO.Status.cancel.getType());
        this.save(orderDO);
        //如果是调度员取消,推送IM取消工单json消息,
        if(type == WlyyDoorServiceOrderDO.CancelType.dispatcher.getType()){
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"402,403,430");
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
                // 432 调度员拒单即取消工单-- 李四拒绝了张三的服务工单12345678
                messages.forEach(
                        message -> {
                            messageUtil.orderMessageDel(message.getId(),message.getRelationCode(),message.getType(),message.getReceiver());
                            if (message.getType() .equals("430")) {
                                String msg=orderDO.getDispatcherName() + "拒绝了"+ orderDO.getPatientName() +"的服务工单" + orderDO.getNumber();
                                messageUtil.saveSystemMessage(message.getId(),message.getRelationCode(),"调度员拒单","432",dispatcher,dispatcherName,
                                        dispatcher,dispatcherName,null,msg,message.getOver());
                            }else{
                                message.setOver("0");
                                messageUtil.saveSystemMessage(message);
                            }
                        }
                );
            }
        }
//        else if(type == WlyyDoorServiceOrderDO.CancelType.patient.getType()){                   //居民取消,消息列表也应该不显示
//
//            List<Message> messages = messageDao.queryByRelationCodeAndTypeIn(orderId,new Integer[]{402,403});
//            if(CollectionUtils.isEmpty(messages)){
//                logger.error("当前工单没有系统消息!!orderId:" + orderId);
//            } else {
//                messages.forEach(
//                        message -> {
//                            message.setOver("0");
//                            messageDao.save(message);
//                        }
//                );
//            }
//        }
        //如果是调度员取消,推送IM取消工单json消息,//·
/*        if(type == WlyyDoorServiceOrderDO.CancelType.dispatcher.getType()){
            JSONObject content = this.queryOrderCardInfo(orderDO);
            content.put("title","工单已取消");
@ -2143,12 +2183,12 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        // 给医生发派单消息
        if(WlyyDoorServiceOrderDO.IsTransOtherOrg.yes.getType().equals(doorServiceOrderDO.getIsTransOtherOrg())){
            this.createMessage(orderId,doorServiceOrderDO.getTransedDispatcher(),doctor,407,"服务工单待接单","您有新的服务工单,请前往处理");
            this.createMessage("服务工单待接单","407",doorServiceOrderDO.getTransedDispatcher(),doorServiceOrderDO.getTransedDispatcherName(), orderId,doctor,doctorName, null,"您有新的服务工单,请前往处理");
        }else{
            this.createMessage(orderId,doorServiceOrderDO.getDispatcher(),doctor,407,"服务工单待接单","您有新的服务工单,请前往处理");
            this.createMessage("服务工单待接单","407",doorServiceOrderDO.getDispatcher(),doorServiceOrderDO.getDispatcherName(), orderId,doctor,doctorName, null,"您有新的服务工单,请前往处理");
        }
        //发送智能助手消息
        sendWeixinMessage(4,doctor,doorServiceOrderDO.getPatient());
        sendWeixinMessage(4,doctor,doorServiceOrderDO.getPatient());//·
        // 派单时,把医生拉入会话,作为其中一个成员,医生拒单时,退出会话
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
@ -2244,12 +2284,12 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        // 给医生发派单消息
        if(doorServiceOrderDO.getIsTransOtherOrg().equals(WlyyDoorServiceOrderDO.IsTransOtherOrg.yes.getType())){
            this.createMessage(orderId,doorServiceOrderDO.getTransedDispatcher(),doctor,407,"服务工单待接单","您有新的服务工单,请前往处理");
            this.createMessage("服务工单待接单","407",doorServiceOrderDO.getTransedDispatcher(),doorServiceOrderDO.getTransedDispatcherName(), orderId,doctor,doctorName, null,"您有新的服务工单,请前往处理");
        }else{
            this.createMessage(orderId,doorServiceOrderDO.getDispatcher(),doctor,407,"服务工单待接单","您有新的服务工单,请前往处理");
            this.createMessage("服务工单待接单","407",doorServiceOrderDO.getDispatcher(),doorServiceOrderDO.getDispatcherName(), orderId,doctor,doctorName, null,"您有新的服务工单,请前往处理");
        }
        //发送智能助手消息
        sendWeixinMessage(4,doctor,doorServiceOrderDO.getPatient());
        sendWeixinMessage(4,doctor,doorServiceOrderDO.getPatient());//·
        // 派单时,把医生拉入会话,作为其中一个成员,医生拒单时,退出会话
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
@ -2357,12 +2397,31 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
    /**
     * 添加【工单派单,转单】等系统消息
     * @param orderId
     * @param sender
     * @param receiver
     * @param Content
     */
    public void createMessage(String orderId,String sender,String receiver,int type,String title,String Content){
    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);
        net.sf.json.JSONObject data = new net.sf.json.JSONObject();
        data.put("name", ReceiverName);
        data.put("age", IdCardUtil.getAgeForIdcard(idCard));
        try {
            data.put("gender", IdCardUtil.getSexForIdcard(idCard));
        } catch (Exception e) {
            e.printStackTrace();
        }
        data.put("msg", msg);
        messageDO.setData(msg);
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = messageDO.getCreateTime();
        String dateTime=format.format(date);
        messageDO.setCreateTime(date);
        messageUtil.saveSystemMessage(messageDO);
/*        Message message=new Message();
        message.setCzrq(new Date());
        message.setCreateTime(new Date());
@ -2703,9 +2762,9 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        }else{
            // 给服务医生发接单消息
            this.createMessage(orderDO.getId(),orderDO.getProxyPatient(),orderDO.getDoctor(),407,"服务工单待接单","您有新的服务工单,请前往处理");
//            this.createMessage(orderDO.getId(),orderDO.getProxyPatient(),orderDO.getDoctor(),407,"服务工单待接单","您有新的服务工单,请前往处理");
            //发送智能助手消息
            sendWeixinMessage(4,orderDO.getDoctor(),orderDO.getPatient());
            sendWeixinMessage(4,orderDO.getDoctor(),orderDO.getPatient());//·
        }
        result.put(ResponseContant.resultFlag, ResponseContant.success);

+ 58 - 44
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/util/MessageUtil.java

@ -129,49 +129,58 @@ public class MessageUtil {
    }
    public void putTemplateWxMessage(String wechatId,String templateName,String scene,String openId,String first,String remark,String url,String ...keywords){
        WxAccessTokenDO wxAccessTokenDO = getWxAccessTokenById(wechatId);
        if (wxAccessTokenDO==null){
            return;
        }
        WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
        String sql="select w.* from base.wx_template_config w where w.wechat_id='"+wechatId+"' and w.template_name='"+templateName+"' and w.scene='"+scene+"' and w.status=1";
        List<WxTemplateConfigDO> configList =  jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(WxTemplateConfigDO.class));
        WxTemplateConfigDO config =null;
        if (configList.size()>=0){
            config = configList.get(0);
        }
        BeanUtils.copyProperties(config, newConfig);
        if (StringUtils.isNoneBlank(url)){
            newConfig.setUrl(url);
        }
        if (StringUtils.isNoneBlank(remark)){
            newConfig.setRemark(remark);
        }
        newConfig.setFirst(first);
        int keyLength = keywords.length;
        if (keyLength>=1){
            newConfig.setKeyword1(keywords[0]);
        }
        if (keyLength>=2){
            newConfig.setKeyword1(keywords[1]);
        }
        if (keyLength>=3){
            newConfig.setKeyword1(keywords[2]);
        }
        if (keyLength>=4){
            newConfig.setKeyword1(keywords[3]);
        }
        if (keyLength>=5){
            newConfig.setKeyword1(keywords[4]);
        }
        if (keyLength>=6){
            newConfig.setKeyword1(keywords[5]);
        }
        if (keyLength>=7){
            newConfig.setKeyword1(keywords[6]);
        try {
            WxAccessTokenDO wxAccessTokenDO = getWxAccessTokenById(wechatId);
            if (wxAccessTokenDO==null){
                logger.info("wx_access_token表获取为空,wechatId"+wechatId);
                return;
            }
            WxTemplateConfigDO newConfig = new WxTemplateConfigDO();
            String sql="select w.* from base.wx_template_config w where w.wechat_id='"+wechatId+"' and w.template_name='"+templateName+"' and w.scene='"+scene+"' and w.status=1";
            List<WxTemplateConfigDO> configList =  jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(WxTemplateConfigDO.class));
            WxTemplateConfigDO config =null;
            if (configList.size()>0){
                config = configList.get(0);
            }else {
                logger.info("微信模板不存在!请确认wechatId:"+wechatId+",templateName:"+templateName+",scene:"+scene);
                return;
            }
            BeanUtils.copyProperties(config, newConfig);
            if (StringUtils.isNoneBlank(url)){
                newConfig.setUrl(url);
            }
            if (StringUtils.isNoneBlank(remark)){
                newConfig.setRemark(remark);
            }
            newConfig.setFirst(first);
            int keyLength = keywords.length;
            if (keyLength>=1){
                newConfig.setKeyword1(keywords[0]);
            }
            if (keyLength>=2){
                newConfig.setKeyword1(keywords[1]);
            }
            if (keyLength>=3){
                newConfig.setKeyword1(keywords[2]);
            }
            if (keyLength>=4){
                newConfig.setKeyword1(keywords[3]);
            }
            if (keyLength>=5){
                newConfig.setKeyword1(keywords[4]);
            }
            if (keyLength>=6){
                newConfig.setKeyword1(keywords[5]);
            }
            if (keyLength>=7){
                newConfig.setKeyword1(keywords[6]);
            }
            //发起微信消息模板推送
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
        }catch (Exception e){
            logger.info("微信模板推送异常");
            e.printStackTrace();
        }
        //发起微信消息模板推送
        weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
    }
    public WxAccessTokenDO getWxAccessTokenById(String wechatId) {
@ -356,6 +365,10 @@ public class MessageUtil {
//        }
//    }
    public void updateMessage(SystemMessageDO message) {
        orderMessageDel(message.getId(),null,null,null);
    }
    public List<SystemMessageDO> findSystemMesage(String relationCode,String type){
        StringBuilder sql =new StringBuilder("select * from base.base_system_message where 1=1 ");
        if (StringUtils.isNoneBlank(relationCode)){
@ -401,8 +414,9 @@ public class MessageUtil {
    public static void main(String[] args){
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(format.format(new Date()));
            for (int i=0;i<10;i++){
                System.out.println(UUID.randomUUID().toString().replace("-",""));
            }
        }catch (Exception e){
            e.printStackTrace();
        }