/**
   * 广播所有消息_给所有老师(group_uuid)
   *
   * @param msg
   * @return
   */
  public void pushMsgToAll_to_teacher(int type, String type_uuid, String group_uuid, String msg)
      throws Exception {
    String title = this.getPushMsgTitleByType(type);
    List<String> list =
        (List<String>)
            this.nSimpleHibernateDao
                .getHibernateTemplate()
                .find(
                    "select DISTINCT useruuid from UserGroupRelation where groupuuid=?",
                    group_uuid);

    Timestamp nowTime = TimeUtils.getCurrentTimestamp();

    for (String o : list) {

      if (StringUtils.isBlank(o)) continue;

      PushMessage pushMessage = new PushMessage();
      pushMessage.setGroup_uuid(group_uuid);
      pushMessage.setRevice_useruuid(o);
      pushMessage.setType(type);
      pushMessage.setRel_uuid(type_uuid);
      pushMessage.setTitle(title);

      pushMessage.setMessage(PxStringUtil.getSubString(msg, msg_max_length));
      pushMessage.setCreate_time(nowTime);
      pushMessage.setIsread(0);

      this.nSimpleHibernateDao.save(pushMessage);
    }
    this.logger.info("pushMsgToAll_to_teacher count=" + list.size());
    pushMsgToAPPIservice.pushMsgToAll_to_teacher_app(group_uuid, title, msg);
  }
  /**
   * 广播消息给指定家长的家长(过滤掉重复消息没有阅读的),避免发送多次
   *
   * @param msg
   * @return
   */
  public void pushMsgToParentByParentuuidListFilterNoread(
      int type, String type_uuid, List<String> parentuuidlist, String msg) throws Exception {
    String title = getPushMsgTitleByType(type);
    List<String> noReadUserlist =
        this.getPushMessageRevice_useruuidList(type, type_uuid, parentuuidlist);

    Timestamp nowTime = TimeUtils.getCurrentTimestamp();

    for (int i = parentuuidlist.size() - 1; i >= 0; i--) {

      String o = parentuuidlist.get(i);
      if (noReadUserlist.contains(o)) { // 没有阅读的信息,只发一次.
        parentuuidlist.remove(i);
        continue;
      }

      if (StringUtils.isBlank(o)) continue;
      PushMessage pushMessage = new PushMessage();
      pushMessage.setRevice_useruuid(o);
      pushMessage.setType(type);
      pushMessage.setRel_uuid(type_uuid);
      pushMessage.setTitle(title);
      pushMessage.setMessage(PxStringUtil.getSubString(msg, msg_max_length));
      pushMessage.setCreate_time(nowTime);
      pushMessage.setIsread(0);

      this.nSimpleHibernateDao.save(pushMessage);
    }

    this.logger.info("pushMsgToParentByClass count=" + parentuuidlist.size());
    this.pushMsgToAPPIservice.pushMsg_to_parent_app_byUserList(parentuuidlist, title, msg);
  }
  /**
   * 广播消息给指定家长的家长(过滤掉重复消息没有阅读的),避免发送多次
   *
   * @param msg
   * @return
   */
  public void pushMsgToParentByParentuuidListFilterNoreadCount(
      int type, String type_uuid, List<String> parentuuidlist, String msg) throws Exception {

    if (parentuuidlist.isEmpty()) {
      logger.warn(
          "pushMsgToParentByParentuuidListFilterNoreadCount parentuuidlist isEmpty,msg= " + msg);
      return;
    }
    String title = getPushMsgTitleByType(type);
    // 添加不在发送推送消息的bug.
    List<String> noReadUserlist = new ArrayList();
    List<PushMessage> pushMessageList = this.getPushMessageList(type, type_uuid, parentuuidlist);

    for (PushMessage pushMessage : pushMessageList) {

      noReadUserlist.add(pushMessage.getRevice_useruuid());
      if (SystemConstants.Read_flag_0.equals(pushMessage.getIsread())) { // 未读情况下,推送消息不在发送.
        if (pushMessage.getCount() == null) { // 计数.
          pushMessage.setCount(1);
        } else {
          pushMessage.setCount(pushMessage.getCount() + 1);
        }
      } else { //
        pushMessage.setCount(1);
      }
      pushMessage.setRel_uuid(type_uuid);
      pushMessage.setTitle(title + "(" + pushMessage.getCount() + ")");
      pushMessage.setMessage(PxStringUtil.getSubString(msg, 128));
    }

    Timestamp nowTime = TimeUtils.getCurrentTimestamp();

    for (int i = parentuuidlist.size() - 1; i >= 0; i--) {

      String o = parentuuidlist.get(i);
      if (noReadUserlist.contains(o)) { // 没有阅读的信息,只发一次.
        parentuuidlist.remove(i);
        continue;
      }

      if (StringUtils.isNotBlank(o)) {
        PushMessage pushMessage = new PushMessage();
        pushMessage.setRevice_useruuid(o);
        pushMessage.setType(type);
        pushMessage.setRel_uuid(type_uuid);
        pushMessage.setTitle(title);
        pushMessage.setMessage(PxStringUtil.getSubString(msg, msg_max_length));
        pushMessage.setCreate_time(nowTime);
        pushMessage.setIsread(0);

        this.nSimpleHibernateDao.save(pushMessage);
      }
    }

    this.logger.info("pushMsgToParentByClass count=" + parentuuidlist.size());

    this.pushMsgToAPPIservice.pushMsg_to_parent_app_byUserList(parentuuidlist, title, msg);
  }
  /**
   * 广播所有android消息_给所有家长
   *
   * @param msg
   * @return
   */
  public void pushMsg_to_teacher(int type, String type_uuid, String user_uuid, String msg)
      throws Exception {
    String title = getPushMsgTitleByType(type);
    if (StringUtils.isBlank(user_uuid)) return;
    PushMessage pushMessage = new PushMessage();
    // pushMessage.setGroup_uuid(group_uuid);
    pushMessage.setRevice_useruuid(user_uuid);
    pushMessage.setType(type);
    pushMessage.setRel_uuid(type_uuid);
    pushMessage.setTitle(title);
    pushMessage.setMessage(PxStringUtil.getSubString(msg, msg_max_length));
    pushMessage.setCreate_time(TimeUtils.getCurrentTimestamp());
    pushMessage.setIsread(0);

    this.nSimpleHibernateDao.save(pushMessage);
    this.pushMsgToAPPIservice.pushMsg_to_teacher_app(user_uuid, title, msg);
  }
  /**
   * 广播消息给指定老师
   *
   * @param msg
   * @return
   */
  public void pushMsgToTeacherByuseruuidList(
      int type, String type_uuid, String group_uuid, List<String> useruuid, String msg)
      throws Exception {
    String title = getPushMsgTitleByType(type);

    Timestamp nowTime = TimeUtils.getCurrentTimestamp();

    for (String o : useruuid) {
      PushMessage pushMessage = new PushMessage();
      pushMessage.setGroup_uuid(group_uuid);
      pushMessage.setRevice_useruuid(o);
      pushMessage.setType(type);
      pushMessage.setRel_uuid(type_uuid);
      pushMessage.setTitle(title);
      pushMessage.setMessage(PxStringUtil.getSubString(msg, msg_max_length));
      pushMessage.setCreate_time(nowTime);
      pushMessage.setIsread(0);
      this.nSimpleHibernateDao.save(pushMessage);
    }

    this.logger.info("pushMsgToTeacherByuseruuidList count=" + useruuid.size());
    this.pushMsgToAPPIservice.pushMsg_to_teacher_app_byUserList(useruuid, title, msg);
  }
  /**
   * 根据回复内容,推送给对应老师或家长
   *
   * @param msg
   * @return
   */
  public void pushMsg_replay_to_classNews_to_teacherOrParent(String type_uuid, String msg)
      throws Exception {

    Session session = this.nSimpleHibernateDao.getSession();
    String sql = " SELECT t1.uuid,t1.create_useruuid,t1.usertype,t1.groupuuid";
    sql += " FROM px_classnews t1 ";
    sql += " where t1.uuid='" + type_uuid + "'  ";
    Query query = session.createSQLQuery(sql);
    query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    List<Map> list = query.list();

    if (list.size() == 0) return;

    Map obj = list.get(0);
    if (obj.get("usertype") == null) {
      logger.error("px_classnews usertype is null,uuid" + type_uuid);
      return;
    }

    if ("1".equals((obj.get("usertype").toString()))) {
      // 家长,暂时不开发通知
      return;
    }

    boolean isSendPushMsg = true;
    List users = new ArrayList();
    users.add(obj.get("create_useruuid"));

    List<PushMessage> listPushMessage =
        this.getPushMessageList(SystemConstants.common_type_hudong, type_uuid, users);
    PushMessage pushMessage = null;
    if (listPushMessage.size() > 0) {
      pushMessage = listPushMessage.get(0);
    }
    //		PushMessage pushMessage = (PushMessage) this.nSimpleHibernateDao
    //				.getObjectByAttribute(PushMessage.class, "rel_uuid", type_uuid);
    if (pushMessage == null) {
      pushMessage = new PushMessage();
      pushMessage.setCount(1);
    } else { // 已经发过消息的情况下,只修改对应的内容.不新加数据.
      if (SystemConstants.Read_flag_0.equals(pushMessage.getIsread())) { // 未读情况下,推送消息不在发送.
        isSendPushMsg = false;
        if (pushMessage.getCount() == null) { // 计数.
          pushMessage.setCount(1);
        } else {
          pushMessage.setCount(pushMessage.getCount() + 1);
        }
      } else { //
        pushMessage.setCount(1);
      }
    }
    pushMessage.setGroup_uuid((String) obj.get("groupuuid"));
    pushMessage.setRevice_useruuid((String) obj.get("create_useruuid"));
    pushMessage.setType(SystemConstants.common_type_hudong);
    pushMessage.setRel_uuid(type_uuid);
    pushMessage.setTitle("互动(" + pushMessage.getCount() + ")");
    pushMessage.setMessage(PxStringUtil.getSubString(msg, 128));
    pushMessage.setCreate_time(TimeUtils.getCurrentTimestamp());
    pushMessage.setIsread(SystemConstants.Read_flag_0);

    this.nSimpleHibernateDao.save(pushMessage);
    if (isSendPushMsg) { // 不重复发送消息
      if ("1".equals((obj.get("usertype").toString()))) {
        // 家长
        this.pushMsgToAPPIservice.pushMsg_to_parent_app(
            pushMessage.getRevice_useruuid(), pushMessage.getTitle(), msg);
      } else {
        // 老师
        this.pushMsgToAPPIservice.pushMsg_to_teacher_app(
            pushMessage.getRevice_useruuid(), pushMessage.getTitle(), msg);
      }
    }
  }