Forráskód Böngészése

Merge branch 'dev' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into dev

wangjun 4 éve
szülő
commit
afb3bf8873

+ 2 - 2
business/base-service/src/main/java/com/yihu/jw/hospital/prescription/service/entrance/TnyyEntranceService.java

@ -509,8 +509,8 @@ public class TnyyEntranceService {
                wlyyOutpatientVO.setIcd10Name(icdName);
                String admDate = null == jsonObjectMgsInfo.get("KSSJ") ? "" : jsonObjectMgsInfo.get("KSSJ") + "";
                String conDate = null == jsonObjectMgsInfo.get("KSSJ") ? "" : jsonObjectMgsInfo.get("KSSJ") + "";
                wlyyOutpatientVO.setAdmDate(DateUtil.strToDate(admDate, DateUtil.YYYY_MM_DD_HH_MM_SS_));
                wlyyOutpatientVO.setConDate(DateUtil.strToDate(conDate, DateUtil.YYYY_MM_DD_HH_MM_SS_));
                wlyyOutpatientVO.setAdmDate(DateUtil.stampToDate(admDate));
                wlyyOutpatientVO.setConDate(DateUtil.stampToDate(admDate));
                List<WlyyInspectionVO> inspectionVOList = new ArrayList<>();
                /*JSONArray array = findV_ZKSG_JCCX(PAT_NO,wlyyOutpatientVO.getAdmNo(),demoFlag);
                for (int j=0;j<array.size();j++){

+ 9 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/door/WlyyDoorServiceOrderDO.java

@ -541,6 +541,7 @@ public class WlyyDoorServiceOrderDO extends UuidIdentityEntityWithOperator {
    private Integer conclusionStatus;//服务小结登记状态:1待补录;2-已补录
    private Integer prescriptionStatus;//开方状态:1开方完成,0未开方
    private String prescriptionCode;//处方单号,多个用逗号隔开
    private String outpatientId;//复诊id
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08:00")
    private Date prescriptionTime;//开方完成时间
    private Integer type;//发起工单类型(1本人发起 2家人待预约 3医生代预约)
@ -1183,4 +1184,12 @@ public class WlyyDoorServiceOrderDO extends UuidIdentityEntityWithOperator {
        this.shortcutType = shortcutType;
    }
    @Column(name = "outpatient_id")
    public String getOutpatientId() {
        return outpatientId;
    }
    public void setOutpatientId(String outpatientId) {
        this.outpatientId = outpatientId;
    }
}

+ 1 - 1
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/controller/doctor/DoctorController.java

@ -84,7 +84,7 @@ public class DoctorController extends BaseController {
    @GetMapping(value = "/patientList")
    @ApiOperation("查询居民列表信息")
    public String patientList(
        @ApiParam(name = "name", value = "分页大小", required = false) @RequestParam(value = "name", required = false) String name,
        @ApiParam(name = "name", value = "居民姓名", required = false) @RequestParam(value = "name", required = false) String name,
        @ApiParam(name = "page", value = "分页大小", required = true, defaultValue = "1") @RequestParam(value = "page") int page,
        @ApiParam(name = "size", value = "页码", required = true, defaultValue = "15") @RequestParam(value = "size") int size
        ) {

+ 24 - 87
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/DoorOrderService.java

@ -1,5 +1,6 @@
package com.yihu.jw.door.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
@ -435,6 +436,11 @@ public class DoorOrderService {
        JSONObject json = new JSONObject();
        json.put("outpatientJson", outpatientJson);
        String res = httpClientUtil.postBody(url,json);
        JSONObject resJson = JSON.parseObject(res);
        if( 200 == resJson.getInteger("status")){
            orderDO.setOutpatientId(resJson.getJSONObject("obj").getString("id"));
            doorServiceOrderDao.save(orderDO);
        }
        System.out.println("appointmentRevisitOnDoor res:"+res);
    }
@ -534,17 +540,14 @@ public class DoorOrderService {
        // 获取微信模板
        ConsultDo consult = consultDao.queryByRelationCode(orderId);
        try {
            String patientName=patient.getName()==null?"":patient.getName();
            String doctorName=doorServiceOrder.getDoctorName()!=null? doorServiceOrder.getDoctorName() : "";
            JSONObject json = new JSONObject();
            if(consult != null) {
                String consultStr =  consult.getId();
                json.put("consult", 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("上门服务已接单推送前");
            String first = "key1,您好!您的上门预约服务已由【key2】医生接单了";
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first.replace("key2", null != doorServiceOrder.getDoctorName() ? doorServiceOrder.getDoctorName() : "");
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyjjd",patient.getOpenid(),first,null,null,30,json,DateUtil.dateToStrShort(new Date()),"上门服务已接单");
        }catch (Exception e){
            logger.error(e.getMessage());
        }
@ -970,34 +973,10 @@ 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);
            JSONObject json = new JSONObject();
            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"));
            first = first .replace("key2", null != one.getDoctorName() ? one.getDoctorName() : "");
            org.json.JSONObject json = new org.json.JSONObject();
            json.put("first", first);
            json.put("keyword1", DateUtil.dateToStrShort(new Date()));
            json.put("keyword2", "服务医生评分");
            json.put("url", templateConfig.getUrl());
            json.put("remark", templateConfig.getRemark());
            json.put("id",orderId);
            //json.put("consult",consult.getCode());
            WlyyDoorCommentDO wlyyDoorCommentDO = this.DoorCommentDao.selectCommentDoctor(patient.getCode(),orderId);
            String finish="";
            if(wlyyDoorCommentDO!=null){
                finish = "0";
                json.put("finish",finish);
@ -1005,7 +984,9 @@ public class DoorOrderService {
                finish = "1";
                json.put("finish",finish);
            }
            pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 31, patient.getOpenid(), patient.getName(), json);*/
            String first="key1预约上门服务医生已完成服务。为提高服务质量,诚邀您对本次服务医生进行评分".replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwyspf",patient.getOpenid(),first,null,null,31,json,DateUtil.dateToStrShort(new Date()),"服务医生评分");
        }catch (Exception e){
            logger.error(e.getMessage());
        }
@ -1051,40 +1032,10 @@ public class DoorOrderService {
        // 获取微信模板  fwyspf-服务医生评分
        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);
            JSONObject json = new JSONObject();
            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() : "");
            String keyword1 = templateConfig.getKeyword1();
            org.json.JSONObject json = new org.json.JSONObject();
            json.put("first", first);
            json.put("keyword1", DateUtil.dateToStrShort(new Date()));
            json.put("keyword2", "服务医生评分");
            json.put("url", templateConfig.getUrl());
            json.put("remark", templateConfig.getRemark());
            json.put("id",orderId);
            //json.put("consult",consult.getCode());
            WlyyDoorCommentDO wlyyDoorCommentDO = this.DoorCommentDao.selectCommentDoctor(patient.getCode(),orderId);
            String finish="";
            if(wlyyDoorCommentDO!=null){
                finish = "0";
                json.put("finish",finish);
@ -1092,10 +1043,11 @@ public class DoorOrderService {
                finish = "1";
                json.put("finish",finish);
            }
            pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 31, patient.getOpenid(), patient.getName(), json);
            String first="key1预约上门服务医生已完成服务。为提高服务质量,诚邀您对本次服务医生进行评分".replace("key1", DateUtil.dateToStr(new Date(), "yyyy-MM-dd HH:mm"));
            messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwyspf",patient.getOpenid(),first,null,null,31,json,DateUtil.dateToStrShort(new Date()),"服务医生评分");
        }catch (Exception e){
            logger.error(e.getMessage());
        }*/
        }
        return this.getDoorServiceOrderById(orderId, level);
    }
@ -1353,26 +1305,11 @@ public class DoorOrderService {
        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");
            String first = templateConfig.getFirst();
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first .replace("key2", null != order.getDoctorName() ? order.getDoctorName() : "");
            String keyword1 = templateConfig.getKeyword1();
            org.json.JSONObject json = new org.json.JSONObject();
            json.put("first", first);
            json.put("keyword1", DateUtil.dateToStrShort(new Date()));
            json.put("keyword2", "服务项目变更确认");
            json.put("url", templateConfig.getUrl());
            json.put("remark", templateConfig.getRemark());
            json.put("consult",consult.getCode());
            JSONObject json = new JSONObject();
            json.put("consult",consult.getId());
            json.put("status",status);
           //messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","fwxmbgtz",patient.getOpenid(),null,null,null,32,json);
//            pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 32, patient.getOpenid(), patient.getName(), json);*/
        }catch (Exception e) {

+ 22 - 43
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/DoorServiceApplicationService.java

@ -588,33 +588,8 @@ public class DoorServiceApplicationService {
            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){
                throw new Exception("微信模板不存在!请确认");
            }
            String first = templateConfig.getFirst();
            first = first.replace("key1",(patient.getName()==null?"":patient.getName()));
            first = first.replace("key2", (wlyyDoorServiceApplicationDo1.getPatientName() == null ? "" : wlyyDoorServiceApplicationDo1.getPatientName()));
            String remark = templateConfig.getRemark();
            String keyword1 = templateConfig.getKeyword1();
            JSONObject sendJson = new JSONObject();
            sendJson.put("keyword1", keyword1);
            sendJson.put("keyword2", wlyyDoorServiceApplicationDo1.getAuditorName());
            sendJson.put("first", first);
            sendJson.put("remark", remark);
            //带参数的模板跳转链接
            sendJson.put("url", templateConfig.getUrl());
            pushMsgTask.sendWeixinMessage(weiXinAccessTokenUtils.getAccessToken(), 19, patient.getOpenid(), wlyyDoorServiceApplicationDo1.getProxyPatientName(), sendJson);*/
            messageUtil.putTemplateWxMessage(wxId,"template_doctor_audit",scene,patient.getOpenid(),first,null,null,19,null,null,wlyyDoorServiceApplicationDo1.getAuditorName());
        }
        return wlyyDoorServiceApplicationDo1;
@ -675,22 +650,26 @@ public class DoorServiceApplicationService {
    }
    public String myMyTest(){
//        String sql="select w.* from base.wx_template_config w where w.wechat_id='xm_ykyy_wx' and w.template_name='template_evaluate_notice' and w.scene='fwqjtx' and w.status=1";
//        List<WxTemplateConfigDO> config =  jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(WxTemplateConfigDO.class));
//        System.out.println("!");
//        //消息推送测试
//        String first = "王俊,您好!您的上门预约服务已由医生接单了";
//        String contentMsg = "";
//        String remark = "您可点击消息查看详情。";
//        String url ="https://www.baidu.com/s?ie=UTF-8&wd=%E7%99%BE%E5%BA%A6";
//
//        //模板消息
////        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");
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn("2c9081aa6df16adb016df78bc56c66ef",new String[]{"6","9"});
        messageUtil.putTemplateWxMessage("xm_test_ihealth_wx","template_process_feedback","smyyyqx","ojsU-1XvRLx_IjDj96S4gxIRBNlY","您的上门服务知情同意书已送达",null,null,30,null,DateUtil.dateToStrShort(new Date()),"知情同意书已推送");
//        BasePatientDO patient = patientDao.findById("3ae2673512154d5280d1dcf5ffa5626d");
//        WxTemplateConfigDO templateConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus("xm_test_ihealth_wx", "template_process_feedback", "smyyyqx", 1);
//        String first = templateConfig.getFirst().replace("key1", null != patient.getName() ? patient.getName() : "");
//        org.json.JSONObject json = new org.json.JSONObject();
//        templateConfig.setFirst("白海灵您好!您的上门服务知情同意书已送达");
//        templateConfig.setKeyword1(DateUtil.dateToStrShort(new Date()));
//        templateConfig.setKeyword2("知情同意书已推送");
//        json.put("url", templateConfig.getUrl());
//        json.put("url", "appoint_service/html/appoint-serviceDetail.html?id="+orderId);
////        appoint_service/html/appoint-serviceDetail.html?openid=ojsU-1XJVftkfdbP1F5bi8JVPtOo&consult=e0d17c67ab07477f8e96534bc610e51b
//        json.put("remark", templateConfig.getRemark());
//        if(consult != null) {
//            json.put("consult", consult.getCode());
//        }else {
//            json.put("id", orderDO.getId());
//        }
//        pushMsgTask.putWxMsg(tokenUtils.getAccessToken(), 30, patient.getOpenid(), patient.getName(), json);
//        messageUtil
        return "ss";
    }

+ 5 - 4
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/WlyyDoorPrescriptionService.java

@ -267,10 +267,11 @@ public class WlyyDoorPrescriptionService  extends BaseJpaService<WlyyDoorPrescri
        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()));
        JSONObject json = new JSONObject();
        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,null,34,json,DateUtil.dateToStrShort(new Date()));
/*        Patient patient = patientDao.findByCode(orderDO.getPatient());//·
        //发送微信模板消息

+ 15 - 23
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/WlyyDoorServiceOrderService.java

@ -1458,22 +1458,14 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        String first = "key1,您好,您的上门预约服务已退回,点击查看原因";
        BasePatientDO patient = patientDao.findById(orderDO.getPatient());
        first  = first.replace("key1", null != patient.getName() ? patient.getName() : "");
//        if(consult != null) {
//            json.put("consult", consult.getCode());
//        }else {
//            json.put("id", orderDO.getId());
//        }
//        if(json.has("consult")) {
//            temp.setUrl(url + json.getString("url") + "?openid=" + openid + "&consult=" + json.getString("consult"));
//        }else if (json.has("id")){
//            temp.setUrl(url + json.getString("url") + "?openid=" + openid + "&id=" + json.getString("id"));
//        }else if(json.has("relationCode")){
//            temp.setUrl(url + json.getString("url") + "?openid=" + openid );
//        }else if(json.has("resultCode")){
//            temp.setUrl(url + json.getString("url") + "?resultCode=" + json.getString("resultCode"));
//        }
        JSONObject json = new JSONObject();
        if(consult != null) {
            json.put("consult", consult.getId());
        }else {
            json.put("id", orderDO.getId());
        }
        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"上门预约已取消");
        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",patient.getOpenid(),first,null,null,30,json,DateUtil.dateToStrShort(new Date()),"上门预约已取消");
/*        Consult consult = consultDao.queryByRelationCode(orderId);
        // 发送微信模板消息,通知居民工单已取消(smyyyqx-上门预约已取消)
@ -1514,14 +1506,14 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        BasePatientDO patient = patientDao.findById(orderDO.getPatient());
        String first="key1,您好,您的上门预约服务已退回,点击查看原因";
        first = first.replace("key1", null != patient.getName() ? patient.getName() : "");
//        json.put("url", "appoint_service/html/appoint-serviceDetail.html?id="+orderId);
//        json.put("remark", templateConfig.getRemark());
//        if(consult != null) {
//            json.put("consult", consult.getCode());
//        }else {
//            json.put("id", orderDO.getId());
//        }
        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",patient.getOpenid(),first,null,null,DateUtil.dateToStrShort(new Date()),"知情同意书已推送");
        JSONObject json = new JSONObject();
        String url ="appoint_service/html/appoint-serviceDetail.html?id="+orderId;
        if(consult != null) {
            json.put("consult", consult.getId());
        }else {
            json.put("id", orderDO.getId());
        }
        messageUtil.putTemplateWxMessage(wxId,"template_process_feedback","smyyyqx",patient.getOpenid(),first,url,null,30,json,DateUtil.dateToStrShort(new Date()),"知情同意书已推送");
/*        BasePatientDO patient = patientDao.findById(orderDO.getPatient());
        WechatTemplateConfig templateConfig = templateConfigDao.findByScene("template_process_feedback","smyyyqx");

+ 18 - 18
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/statics/DoorStatisticAnalyzeService.java

@ -193,8 +193,8 @@ public class DoorStatisticAnalyzeService {
        }
        List<Map<String,Object>> result = new ArrayList<>();
        for(BaseTownDO one:areaCode) {
            List<SaveModel> townList = findDateQuotaLevel1(startDate, endDate, one.getCode(), 3, "121", "1", null, type);//区
            List<SaveModel> orgList = findDateQuotaLevel1(startDate, endDate, one.getCode(), 3, "121", "1", "4", type);//机构
            List<SaveModel> townList = findDateQuotaLevel1(startDate, endDate, one.getCode(), 3, "22", "1", null, type);//区
            List<SaveModel> orgList = findDateQuotaLevel1(startDate, endDate, one.getCode(), 3, "22", "1", "4", type);//机构
            Map<String, List<SaveModel>> map = townList.stream().collect(Collectors.groupingBy(SaveModel::getSlaveKey1));
            Map<String, List<SaveModel>> map1 = orgList.stream().collect(Collectors.groupingBy(SaveModel::getHospital));
@ -259,7 +259,7 @@ public class DoorStatisticAnalyzeService {
    public Map<String,Object> doorServiceOrderAnalyzeHead(String area,String startDate,String endDate, Integer type,Integer level)throws Exception{
        Map<String, Object> resultMap = new HashMap();
        String low_level = String.valueOf(level + 1);
        List<SaveModel> esModelList = findDateQuotaLevel1(startDate, endDate, area, level, "121", "1", low_level, type);
        List<SaveModel> esModelList = findDateQuotaLevel1(startDate, endDate, area, level, "22", "1", low_level, type);
        DecimalFormat df = new DecimalFormat("0.00");
        if (esModelList != null && esModelList.size() > 0) {
        Map<String, List<SaveModel>> map2 = esModelList.stream().collect(Collectors.groupingBy(SaveModel::getSlaveKey1));
@ -296,7 +296,7 @@ public class DoorStatisticAnalyzeService {
        }else{
            lowLevel = String.valueOf(level + 1);
        }
        List<SaveModel> esModelList = findDateQuotaLevel1(startDate, endDate, area, level, "121", "1", lowLevel, type);
        List<SaveModel> esModelList = findDateQuotaLevel1(startDate, endDate, area, level, "22", "1", lowLevel, type);
        Map<String, List<SaveModel>> map = null;
        DecimalFormat df = new DecimalFormat("0.00");
        if (esModelList != null && esModelList.size() > 0) {
@ -1179,7 +1179,7 @@ public class DoorStatisticAnalyzeService {
        resMap.put("doorPatientServiceCount", doorPatientService);
        //获取上门服务资质服务人群分析,到达量
        List<SaveModel> voucherList = findDateQuotaLevel1(endDate, endDate, area, level, "133", "2", level + "", null);
        List<SaveModel> voucherList = findDateQuotaLevel1(endDate, endDate, area, level, "23", "2", level + "", null);
        resMap.put("voucherList", voucherList);
        //获取上门服务处方主诊断疾病分析
@ -1193,8 +1193,8 @@ public class DoorStatisticAnalyzeService {
        resMap.put("itemList", itemList);
        //获取服务工单排行
        List<SaveModel> orderList = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "121", "1", null, level + "");
        List<SaveModel> slaveList = findDateQuotaLevel1(startDate, endDate, area, level, "121", "1", level + "", null);
        List<SaveModel> orderList = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "22", "1", null, level + "");
        List<SaveModel> slaveList = findDateQuotaLevel1(startDate, endDate, area, level, "22", "1", level + "", null);
        Map<String, List<SaveModel>> map = slaveList.stream().collect(Collectors.groupingBy(SaveModel::getSlaveKey1));
//        resMap.put("orderList", orderList);
        //计算服务评价均分
@ -1284,7 +1284,7 @@ public class DoorStatisticAnalyzeService {
    public JSONArray getOrderLowlevelAll(String startDate, String endDate, String area, int level, int sort, String lowLevel, String year) throws Exception {
        List<Map<String, Object>> resultList = new ArrayList<>();
        //工单状态列表
        List<SaveModel> slaveList = findDateQuotaLevel1(startDate, endDate, area, level, "121", "1", lowLevel, null);
        List<SaveModel> slaveList = findDateQuotaLevel1(startDate, endDate, area, level, "22", "1", lowLevel, null);
        Map<String, List<SaveModel>> map1 = new HashMap<>();
        if (SaveModel.OrgLevel.equals(lowLevel)) {
            map1 = slaveList.stream().collect(Collectors.groupingBy(SaveModel::getHospital));
@ -1374,11 +1374,11 @@ public class DoorStatisticAnalyzeService {
        startDate = statisticsUtilService.getStartDate(startDate,endDate);
        //已服务居民
        long servedPatientNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"178",null);
        long servedPatientNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"26",null);
        //服务工单
        long serviceOrderNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"121","5,6");
        long serviceOrderNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"22","5,6");
        //开具处方
        long doorPrescriptionNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"134",null);
        long doorPrescriptionNum = statisticsUtilService.getTotalAmountDDLOrZL(startDate,endDate,area,level,"24",null);
        resMap.put("serviceOrderNum", serviceOrderNum);
        resMap.put("doorPrescriptionNum", doorPrescriptionNum);
        resMap.put("servedPatientNum", servedPatientNum);
@ -1386,11 +1386,11 @@ public class DoorStatisticAnalyzeService {
        String ddlOrZl = statisticsUtilService.getDDLOrZL(startDate,endDate);
        //服务费用:上门服务的开单以及处方收入费用
        List<SaveModel> priceList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "177", ddlOrZl, null, "020", null, null);
        List<SaveModel> priceList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "25", ddlOrZl, null, "020", null, null);
        resMap.put("totalPrice", priceList.get(0).getResult1());
        //服务类型
        List<SaveModel> doorServiceTypeList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "121", ddlOrZl, null, statisticsUtilService.commonParams, null, null);
        List<SaveModel> doorServiceTypeList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "22", ddlOrZl, null, statisticsUtilService.commonParams, null, null);
        List<Map<String,Object>> doorServiceTypeList2 = new ArrayList<>();
        long patientOrderNum = 0;
        for(SaveModel saveModel:doorServiceTypeList){
@ -1408,7 +1408,7 @@ public class DoorStatisticAnalyzeService {
        resMap.put("doorServiceTypeList", doorServiceTypeList2);
        //服务人群分析,到达量
        List<SaveModel> voucherList = findDateQuotaLevel1(endDate, endDate, area, level, "133", ddlOrZl, level + "", null);
        List<SaveModel> voucherList = findDateQuotaLevel1(endDate, endDate, area, level, "23", ddlOrZl, level + "", null);
        List<Map<String,Object>> voucherList2 = new ArrayList<>();
        voucherList.forEach(one->voucherList2.add(statisticsUtilService.slaveKay1ToMapLong(one)));
        resMap.put("voucherList", voucherList2);
@ -1428,7 +1428,7 @@ public class DoorStatisticAnalyzeService {
    public List<Map<String,Object>> serviceOrderTrend(String area, int level, String startDate, String endDate,String interval) throws Exception {
        List<Map<String,Object>> list = new ArrayList<>();
        //新增服务工单趋势
        List<SaveModel> serviceOrderList = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "121", SaveModel.timeLevel_ZL, interval, null);
        List<SaveModel> serviceOrderList = elasticsearchUtil.findDateQuotaLevel0(startDate, endDate, area, level, "22", SaveModel.timeLevel_ZL, interval, null);
        serviceOrderList.forEach(one->list.add(statisticsUtilService.saveModelToMap(one)));
        return list;
    }
@ -1447,7 +1447,7 @@ public class DoorStatisticAnalyzeService {
        List<Map<String,Object>> list = new ArrayList<>();
        startDate = statisticsUtilService.getStartDate(startDate,endDate);
        String ddlOrZl = statisticsUtilService.getDDLOrZL(startDate,endDate);
        List<SaveModel> doorServiceTypeList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "177", ddlOrZl, "xmijk_quota","020", null, null);
        List<SaveModel> doorServiceTypeList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "25", ddlOrZl, "xmijk_quota","020", null, null);
        for (SaveModel saveModel:doorServiceTypeList){
            if(StringUtils.isNoneBlank(saveModel.getSlaveKey1())){
                list.add(statisticsUtilService.slaveKay1ToMapLong2(saveModel));
@ -1485,9 +1485,9 @@ public class DoorStatisticAnalyzeService {
        String ddlOrZl = statisticsUtilService.getDDLOrZL(startDate,endDate);
        //服务工单数
        List<SaveModel> slaveList1 = elasticsearchUtil.findDateQuotaLevel0BySlaveKey1(startDate, endDate, area, level, "121", ddlOrZl,null, lowLevel,"5,6");
        List<SaveModel> slaveList1 = elasticsearchUtil.findDateQuotaLevel0BySlaveKey1(startDate, endDate, area, level, "22", ddlOrZl,null, lowLevel,"5,6");
        //服务费用
        List<SaveModel> slaveList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "177", ddlOrZl, slaveKey1,"020", null, lowLevel);
        List<SaveModel> slaveList = elasticsearchUtil.findDateQuotaLevel2(startDate, endDate, area, level, "25", ddlOrZl, slaveKey1,"020", null, lowLevel);
        System.out.println("服务工单数:"+slaveList1.size() + " , 服务费用数:" + slaveList.size());
        for (SaveModel saveModel:slaveList1){
            Map<String, Object> map = statisticsUtilService.getMapTurnDownResult2(saveModel, lowLevel, "num");

+ 92 - 16
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/util/MessageUtil.java

@ -10,6 +10,7 @@ import com.yihu.jw.entity.base.wx.WxTemplateConfigDO;
import com.yihu.jw.entity.door.WlyyDoorServiceOrderDO;
import com.yihu.jw.entity.hospital.message.SystemMessageDO;
import com.yihu.jw.hospital.message.dao.SystemMessageDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.util.wechat.WeixinMessagePushUtils;
@ -55,8 +56,12 @@ public class MessageUtil {
    private WxAccessTokenDao wxAccessTokenDao;
    @Autowired
    private BaseDoctorDao baseDoctorDao;
    @Autowired
    private BasePatientDao basePatientDao;
    @Value("${server.server_url}")
    private String server_url;
    //发送微信模板消息
    public static String sendMessageUrl = "http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
    private  String sendMessageUrl = "http://172.16.100.37:8090/hospitalPortal-sms/sms/sendMessage";
    /**
     * @param wxId
@ -128,56 +133,129 @@ 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(WxTemplateConfigDO newConfig,String openId,Integer type,JSONObject json){
        try {
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(newConfig.getWechatId());
            if (wxAccessTokenDO == null) {
                logger.info("wx_access_token表获取为空,wechatId" + newConfig.getWechatId());
                return;
            }
            newConfig = setTemPlateUrl(newConfig,type,openId,json);
            //发起微信消息模板推送
            logger.info("微信模板消息推送前");
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
            logger.info("微信模板消息推送后");
        }catch (Exception e){
            logger.info("微信模板推送异常");
            e.printStackTrace();
        }
    }
    //推送模板消息
    public void putTemplateWxMessage(String wechatId, String templateName, String scene, String openId, String first,String url, String remark, Integer type,JSONObject josn,String ...keywords) {
        try {
            System.out.println(wechatId);
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.getWxAccessTokenById(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);
                return;
            }
            if (StringUtils.isNoneBlank(url)) {
            logger.info("微信模板推送前");
            if (StringUtils.isNoneBlank(first)){
                newConfig.setFirst(first);
            }
            if (StringUtils.isNoneBlank(url)){
                newConfig.setUrl(url);
            }
            if (StringUtils.isNoneBlank(remark)) {
            if (StringUtils.isNoneBlank(remark)){
                newConfig.setRemark(remark);
            }
            newConfig.setFirst(first);
            newConfig = setTemPlateUrl(newConfig,type,openId,josn);
            int keyLength = keywords.length;
            if (keyLength >= 1) {
                newConfig.setKeyword1(keywords[0]);
               if(StringUtils.isNoneBlank(keywords[0])){
                   newConfig.setKeyword1(keywords[0]);
                }
            }
            if (keyLength >= 2) {
                newConfig.setKeyword1(keywords[1]);
                if(StringUtils.isNoneBlank(keywords[1])){
                    newConfig.setKeyword1(keywords[1]);
                }
            }
            if (keyLength >= 3) {
                newConfig.setKeyword1(keywords[2]);
                if(StringUtils.isNoneBlank(keywords[2])){
                    newConfig.setKeyword1(keywords[2]);
                }
            }
            if (keyLength >= 4) {
                newConfig.setKeyword1(keywords[3]);
                if(StringUtils.isNoneBlank(keywords[3])){
                    newConfig.setKeyword1(keywords[3]);
                }
            }
            if (keyLength >= 5) {
                newConfig.setKeyword1(keywords[4]);
                if(StringUtils.isNoneBlank(keywords[4])){
                    newConfig.setKeyword1(keywords[4]);
                }
            }
            if (keyLength >= 6) {
                newConfig.setKeyword1(keywords[5]);
                if(StringUtils.isNoneBlank(keywords[5])){
                    newConfig.setKeyword1(keywords[5]);
                }
            }
            if (keyLength >= 7) {
                newConfig.setKeyword1(keywords[6]);
                if(StringUtils.isNoneBlank(keywords[6])){
                    newConfig.setKeyword1(keywords[6]);
                }
            }
            //发起微信消息模板推送
            weixinMessagePushUtils.putWxMsg(wxAccessTokenDO.getAccessToken(), openId, newConfig);
            logger.info("微信模板消息推送后");
        } catch (Exception e) {
            logger.info("微信模板推送异常");
            e.printStackTrace();
        }
    }
    public WxTemplateConfigDO setTemPlateUrl(WxTemplateConfigDO wxTemplateConfigDO,Integer type,String openid,JSONObject json){
        String url = server_url + "wx/html/";
        if (type==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"));
            }
        }
        if (type==31){ //上门服务医生评分   //TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
            wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&id=" + json.getString("id")+ "&finish=" + json.getString("finish"));
        }
        if(type==32){  //TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
            String url1 = server_url + "wx/common/";
            wxTemplateConfigDO.setUrl(url1 + wxTemplateConfigDO.getUrl()+"?openid=" + openid + "&consult=" + json.getString("consult") + "&status=" + json.getInteger("status"));
        }
        if(type==34){ //TPbq9m0SAiVfRhXtXq17SDmYIfrJ8Whp2NpSrq9wlfI
            wxTemplateConfigDO.setUrl(url + wxTemplateConfigDO.getUrl() + "?openid=" + openid + "&orderId=" + json.get("orderId")+ "&authorizeImage=" + json.getString("authorizeImage"));
        }
        if (type==19){  //zSR9w5AjfZFLc_g8AxGBvDKZASoKAeXQuGnvPAQzvps
            String urlStr= wxTemplateConfigDO.getUrl();
            boolean status = urlStr.contains("openid=");
            if(!status){
                urlStr=json.getString("url")+"?openid=" + openid;
            }
            wxTemplateConfigDO.setUrl(url + urlStr );
        }
        return wxTemplateConfigDO;
    }
    /**
     *
     */
@ -294,9 +372,7 @@ public class MessageUtil {
    public static void main(String[] args){
        try {
            for (int i=0;i<10;i++){
                System.out.println(UUID.randomUUID().toString().replace("-",""));
            }
        }catch (Exception e){
            e.printStackTrace();
        }