liubing 4 lat temu
rodzic
commit
bde0fc138e

+ 5 - 0
business/base-service/src/main/java/com/yihu/jw/hospital/message/dao/SystemMessageDao.java

@ -25,4 +25,9 @@ public interface SystemMessageDao extends PagingAndSortingRepository<SystemMessa
    @Query("delete from SystemMessageDO a   where a.receiver = ?1 and a.relationCode = ?2 and a.type ='407'")
    int orderMessageDel(String doctor, String orderId);
    List<SystemMessageDO> queryByRelationCodeAndTypeIn(String relationCode,String[] type);
    @Query("select a from SystemMessageDO a where a.type in ('401','408') and a.del='1' and a.over='1'   and relationCode = ?1  ")
    List<SystemMessageDO> findMessageByRelationCode(String relationCode);
}

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

@ -544,7 +544,7 @@ public class DoorOrderService {
            logger.error(e.getMessage());
        }
        //  待接单消息设为已操作, 434 医生接单-- 王五接受了服务工单12345678
        List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"403,407");
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"403","407"});
        if (CollectionUtils.isEmpty(messages)){
            logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
        }else {
@ -586,7 +586,7 @@ public class DoorOrderService {
                BaseDoctorDO baseDoctorDO = baseDoctorDao.findById(doorServiceOrder.getDispatcher());//·
                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");
                List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"431","433"});
                if (CollectionUtils.isEmpty(messages)) {
                    logger.error("当前工单没有医生待接单消息!orderId:" + orderId);
                } else {

+ 3 - 2
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/DoorServiceApplicationService.java

@ -508,7 +508,7 @@ public class DoorServiceApplicationService {
            wlyyDoorServiceApplicationDo.setUpdateUser(doctor.getId());
            wlyyDoorServiceApplicationDo.setUpdateUserName(doctor.getName());
            //将所有调度员的消息处理为结束
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(String.valueOf(id),null);
            List<SystemMessageDO> messages = systemMessageDao.findMessageByRelationCode(String.valueOf(id));
            messages.forEach(item->{
                item.setOver("0");
                systemMessageDao.save(item);
@ -546,7 +546,7 @@ public class DoorServiceApplicationService {
        }else {
            //处理消息
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(String.valueOf(id),null);
            List<SystemMessageDO> messages = systemMessageDao.findMessageByRelationCode(String.valueOf(id));
            messages.forEach(item->{
                item.setOver("0");
                systemMessageDao.save(item);
@ -692,6 +692,7 @@ public class DoorServiceApplicationService {
//        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"});
        return "ss";
    }

+ 27 - 3
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/service/WlyyDoorServiceOrderService.java

@ -1368,7 +1368,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        orderDO.setStatus(WlyyDoorServiceOrderDO.Status.cancel.getType());
        this.save(orderDO);
        if(type == WlyyDoorServiceOrderDO.CancelType.dispatcher.getType()){
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"402,403,430");
            List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"402","403","430"});
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
@ -1389,7 +1389,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        }
        else if(type == WlyyDoorServiceOrderDO.CancelType.patient.getType()){                   //居民取消,消息列表也应该不显示
            List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"402,403");
            List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"402","403"});
            if(CollectionUtils.isEmpty(messages)){
                logger.error("当前工单没有系统消息!!orderId:" + orderId);
            } else {
@ -2273,7 +2273,7 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        imUtill.updateParticipant(sessionId,doctor,null);
        // 调度员处理完该单(新增预约的,或者是拒单重新派单的)
        List<SystemMessageDO> messages = messageUtil.findSystemMesage(orderId,"402,404,430,435");
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"402","403","430","435"});
        if(CollectionUtils.isEmpty(messages)){
            logger.error("当前工单没有 居民新增预约 消息!!orderId:" + orderId);
        }else{
@ -2372,6 +2372,30 @@ public class WlyyDoorServiceOrderService extends BaseJpaService<WlyyDoorServiceO
        String sessionId = doorServiceOrderDO.getPatient() + "_" + consult.getId() + "_" + doorServiceOrderDO.getNumber() + "_" + consult.getType();
        imUtill.updateParticipant(sessionId,doctor,null);
        List<SystemMessageDO> messages = systemMessageDao.queryByRelationCodeAndTypeIn(orderId,new String[]{"402","403","430","435"});
        if(CollectionUtils.isEmpty(messages)){
            logger.error("当前工单没有 居民新增预约 消息!!orderId:" + orderId);
        }else{
            // 设置消息处理完毕
            messages.forEach(
                    message -> {
                        String title = "调度员派单(派给本社区医生)";
                        if("system".equals(dispatcher)){
                            title = "系统派单(派给服务医生)";
                        }
                        if (message.getType() .equals("430")) {
                            message.setTitle(title);
                            String msg = doorServiceOrderDO.getDispatcherName() + "已将服务工单" + doorServiceOrderDO.getNumber() + "指派给" + doctorName + "医生";
                            messageUtil.saveSystemMessage(message.getId(),message.getRelationCode(),title,"431",dispatcher,dispathcherName,
                                    dispatcher,dispathcherName,null,msg,message.getOver());
                        }else{
                            message.setOver("0");
                            systemMessageDao.save(message);
                        }
                    }
            );
        }
        // 调度员处理完该单(新增预约的,或者是拒单重新派单的)
/*        List<Message> messages = messageDao.queryByRelationCodeAndTypeIn(orderId,new Integer[]{402,404,430,435});
        if(CollectionUtils.isEmpty(messages)){

+ 4 - 93
svr/svr-door-serivce/src/main/java/com/yihu/jw/door/util/MessageUtil.java

@ -132,22 +132,17 @@ public class MessageUtil {
    public void putTemplateWxMessage(String wechatId,String templateName,String scene,String openId,String first,String remark,String url,String ...keywords){
        try {
            WxAccessTokenDO wxAccessTokenDO = getWxAccessTokenById(wechatId);
            WxAccessTokenDO wxAccessTokenDO = wxAccessTokenService.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 {
            WxTemplateConfigDO newConfig = wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus(wechatId, templateName, scene, 1);
            if (newConfig==null){
                logger.info("微信模板不存在!请确认wechatId:"+wechatId+",templateName:"+templateName+",scene:"+scene);
                return;
            }
            BeanUtils.copyProperties(config, newConfig);
            if (StringUtils.isNoneBlank(url)){
                newConfig.setUrl(url);
            }
@ -184,71 +179,6 @@ public class MessageUtil {
            e.printStackTrace();
        }
    }
    public WxAccessTokenDO getWxAccessTokenById(String wechatId) {
        try {
            //根据wechatCode查找出appid和appSecret
            String sql ="select * from base.wx_wechat w where w.id = '"+wechatId+"' and w.status!=-1";
            List<WxWechatDO> wxWechatList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(WxWechatDO.class));
            WxWechatDO wxWechat=null;
            if (wxWechatList.size()>0){
                wxWechat = wxWechatList.get(0);
            }
            sql="select * from base.wx_access_token w where w.wechat_id ='"+wechatId+"' order by w.add_timestamp desc ";
            List<WxAccessTokenDO> wxAccessTokens =  jdbcTemplate.query(sql,new BeanPropertyRowMapper<>(WxAccessTokenDO.class));
            if(wxWechat==null){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_wxWechat_is_no_exist, ExceptionCode.common_error_params_code);
            }
            if(wxAccessTokens!=null&&wxAccessTokens.size()>0){
                for (WxAccessTokenDO accessToken : wxAccessTokens) {
                    if ((System.currentTimeMillis() - accessToken.getAddTimestamp()) < (accessToken.getExpiresIn() * 500)) {
                        return accessToken;
                    } else {
                        sql="DELETE  from  base.wx_access_token where wechat_id='"+accessToken.getWechatId()+"' and access_token='"+accessToken.getAccessToken()+"'";
                        jdbcTemplate.execute(sql);
                        break;
                    }
                }
            }
            String token_url = "https://api.weixin.qq.com/cgi-bin/token";
            String appId="";
            String appSecret="";
            appId = wxWechat.getAppId();
            appSecret = wxWechat.getAppSecret();
            if (org.springframework.util.StringUtils.isEmpty(appId)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appId_is_null, ExceptionCode.common_error_params_code);
            }
            if (org.springframework.util.StringUtils.isEmpty(appSecret)){
                throw new ApiException(WechatRequestMapping.WxConfig.message_fail_appSecret_is_null, ExceptionCode.common_error_params_code);
            }
            Map<String, Object> params = new HashMap<>();
            params.put("grant_type", "client_credential");
            params.put("appid", appId);
            params.put("secret", appSecret);
            String result = HttpUtils.doGet(token_url, params).getContent();
            logger.info("--------------wechat token return:"+result+"---------------");
            org.json.JSONObject json = new org.json.JSONObject(result);
            if (json.has("access_token")) {
                String token = json.get("access_token").toString();
                String expires_in = json.get("expires_in").toString();
                WxAccessTokenDO newaccessToken = new WxAccessTokenDO();
                newaccessToken.setAccessToken(token);
                newaccessToken.setExpiresIn(Long.parseLong(expires_in));
                newaccessToken.setAddTimestamp(System.currentTimeMillis());
                newaccessToken.setCzrq(new Date());
                newaccessToken.setCode(UUID.randomUUID().toString().replace("-",""));
                newaccessToken.setWechatId(wechatId);
                wxAccessTokenDao.save(newaccessToken);
                return newaccessToken;
            } else {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     *
     */
@ -285,25 +215,6 @@ public class MessageUtil {
    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)){
            sql.append(" and relation_code='"+relationCode+"' ");
        }
        if (StringUtils.isNoneBlank(type)){
            sql.append(" and type in ('").append(type.replace(",","','")).append("') ");
        }
        List<SystemMessageDO> list = jdbcTemplate.query(sql.toString(),new BeanPropertyRowMapper<>(SystemMessageDO.class));
        return list;
    }
    public  void test(){
        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<Map<String,Object>> config =  jdbcTemplate.queryForList(sql);
//        wxTemplateConfigDao.findByWechatIdAndTemplateNameAndSceneAndStatus("xm_ykyy_wx", "template_pay_notice_jz", "mzxxtx", 1)
        System.out.println("!");
    }
    public static void main(String[] args){
        try {
            for (int i=0;i<10;i++){