/**
   * 根据ID查询短信详细
   *
   * @return
   */
  @Action(
      value = "edit",
      results = {
        @Result(name = SUCCESS, location = "/sms/smssend/jsp/sms_write.jsp"),
        @Result(name = ERROR, location = "/error.jsp")
      })
  public String edit() {
    String result = SUCCESS;
    if (!StringUtil.isEmpty(selectedId)) {
      try {
        mbnSmsHadSendVO = mbnSmsHadSendService.queryByPk(Long.parseLong(selectedId));
        this.getRequest()
            .setAttribute(
                "smsText", StringEscapeUtils.escapeJavaScript(mbnSmsHadSendVO.getContent()));
        this.getRequest().setAttribute("title", mbnSmsHadSendVO.getTitle());
        Users loginUser = (Users) super.getSession().getAttribute(ApSmsConstants.SESSION_USER_INFO);

        List<SmsMbnTunnelVO> tunnelList = getTunnelList(loginUser.getMerchantPin());
        this.getRequest().setAttribute("tunnelList", tunnelList);
      } catch (Exception e) {
        e.printStackTrace();
        result = ERROR;
      }
    }
    return result;
  }
 /**
  * 根据ID查询下一条,上一条短信详细
  *
  * @return
  */
 @Action(
     value = "followPage",
     results = {
       @Result(name = SUCCESS, location = "/sms/smssend/jsp/hadsend_content.jsp"),
       @Result(name = ERROR, location = "/error.jsp")
     })
 public String followPage() {
   if (!StringUtil.isEmpty(selectedId) && pageDirect != null) {
     entityMap = new HashMap<String, Object>();
     try {
       HashMap<String, Object> followPage = new HashMap<String, Object>();
       if (pageDirect == 0) {
         followPage.put("frontPage", Long.valueOf(selectedId));
       } else {
         followPage.put("nextPage", Long.valueOf(selectedId));
       }
       MbnSmsOperationClass smsOperationClass =
           mbnSmsOperationClassService.findByCoding(operationId);
       followPage.put("operationId", smsOperationClass.getId());
       if (!StringUtil.isEmpty(batchId)) {
         followPage.put("batchId", Long.valueOf(batchId));
       }
       Users u = (Users) super.getSession().getAttribute(ApSmsConstants.SESSION_USER_INFO);
       followPage.put("merchantPin", u.getMerchantPin());
       List<MbnSmsHadSendVO> smsList = mbnSmsHadSendService.followPage(followPage);
       if (!smsList.isEmpty()) {
         mbnSmsHadSendVO = smsList.get(0);
       } else {
         mbnSmsHadSendVO = mbnSmsHadSendService.queryByPk(Long.valueOf(selectedId));
         hasFollow = false;
       }
       // Long batchId, Long mPin, Long createBy
       // 设定只查询自己发送的信息
       boolean isQuerySelf = false;
       Long createBy = null;
       if (!StringUtils.isBlank(
           WebUtils.getPropertyByName(
               com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO))) {
         isQuerySelf =
             Boolean.valueOf(
                 WebUtils.getPropertyByName(
                     com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO));
         if (isQuerySelf
             && u.getUserType()
                 == com.leadtone.mas.admin.common.ApSmsConstants.USER_TYPE_ENTERPRISE_NORMAL) {
           createBy = u.getId();
         }
       }
       smsHadSendList =
           mbnSmsHadSendService.getByBatchId(
               mbnSmsHadSendVO.getBatchId(), u.getMerchantPin(), createBy);
       return SUCCESS;
     } catch (Exception e) {
       e.printStackTrace();
     }
   }
   return ERROR;
 }
 /**
  * 根据ID查询短信详细
  *
  * @return
  */
 @Action(
     value = "getSmsDetails",
     results = {
       @Result(name = SUCCESS, location = "/sms/smssend/jsp/hadsend_content.jsp"),
       @Result(name = ERROR, location = "/error.jsp")
     })
 public String getSmsDetails() {
   String result = SUCCESS;
   if (!StringUtil.isEmpty(selectedId)) {
     try {
       mbnSmsHadSendVO = mbnSmsHadSendService.queryByPk(Long.parseLong(selectedId));
       Users u = (Users) super.getSession().getAttribute(ApSmsConstants.SESSION_USER_INFO);
       // Long batchId, Long mPin, Long createBy
       // 设定只查询自己发送的信息
       boolean isQuerySelf = false;
       Long createBy = null;
       if (!StringUtils.isBlank(
           WebUtils.getPropertyByName(
               com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO))) {
         isQuerySelf =
             Boolean.valueOf(
                 WebUtils.getPropertyByName(
                     com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO));
         if (isQuerySelf
             && u.getUserType()
                 == com.leadtone.mas.admin.common.ApSmsConstants.USER_TYPE_ENTERPRISE_NORMAL) {
           createBy = u.getId();
         }
       }
       smsHadSendList =
           mbnSmsHadSendService.getByBatchId(
               mbnSmsHadSendVO.getBatchId(), u.getMerchantPin(), createBy);
     } catch (Exception e) {
       e.printStackTrace();
       result = ERROR;
     }
   }
   return result;
 }
  /**
   * 导出列表
   *
   * @return
   */
  @Action(
      value = "export",
      results = {
        @Result(
            type = "json",
            params = {"root", "entityMap", "contentType", "text/html"})
      })
  public String export() {
    PageUtil pageUtil = new PageUtil();
    pageUtil.setColumn3("export"); // 用于判断,sql是否分页
    try {
      MbnSmsOperationClass smsOperationClass =
          mbnSmsOperationClassService.findByCoding(operationId);
      pageUtil.setOperationId(smsOperationClass.getId());
      Users u = (Users) super.getSession().getAttribute(ApSmsConstants.SESSION_USER_INFO);
      pageUtil.setMerchantPin(u.getMerchantPin());
      // 设定只查询自己发送的信息
      boolean isQuerySelf = false;
      if (!StringUtils.isBlank(
          WebUtils.getPropertyByName(com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO))) {
        isQuerySelf =
            Boolean.valueOf(
                WebUtils.getPropertyByName(
                    com.leadtone.mas.admin.common.ApSmsConstants.QUERYSELFINFO));
        if (isQuerySelf
            && u.getUserType()
                == com.leadtone.mas.admin.common.ApSmsConstants.USER_TYPE_ENTERPRISE_NORMAL) {
          pageUtil.setCreateBy(u.getId());
        }
      }
      if (!StringUtil.isEmpty(searchBycontacts)) {
        pageUtil.setContactName(URLDecoder.decode(searchBycontacts, "UTF-8"));
      }
      if (!StringUtil.isEmpty(searchBySmsTitle)) {
        pageUtil.setSmsTitle(URLDecoder.decode(searchBySmsTitle, "UTF-8"));
      }
      if (!StringUtil.isEmpty(searchAct)) {
        Timestamp endDate = new Timestamp(System.currentTimeMillis());
        switch (Integer.valueOf(searchAct)) {
          case 1: // all
            break;
          case 2: // 一天内
            pageUtil.setEndDate(endDate);
            Date startDateDay = DateUtil.oneDayAgo(endDate);
            pageUtil.setStartDate(startDateDay);
            break;
          case 3: // 一周内 7天
            pageUtil.setEndDate(endDate);
            Date startDateWeek = DateUtil.oneWeekAgo(endDate);
            pageUtil.setStartDate(startDateWeek);
            break;
          case 4: // 一月内 30天
            pageUtil.setEndDate(endDate);
            Date startDateMonth = DateUtil.oneMonthAgo(endDate);
            pageUtil.setStartDate(startDateMonth);
            break;
          case 5: // 时间区间dateFrom
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            if (!StringUtil.isEmpty(dateTo)) {
              pageUtil.setEndDate(format.parse(dateTo));
            }
            if (!StringUtil.isEmpty(dateFrom)) {
              pageUtil.setStartDate(format.parse(dateFrom));
            }
            break;
        }
      }
      Page page = mbnSmsHadSendService.extPortAll(pageUtil);
      if (page != null) {
        @SuppressWarnings("unchecked")
        List<MbnSmsHadSendVO> datas = (List<MbnSmsHadSendVO>) page.getData();
        entityMap = new HashMap<String, Object>();
        if (datas == null) {
          datas = new ArrayList<MbnSmsHadSendVO>();
        }
        String tunnelName = "";
        int size = datas.size();
        String[][] billsInArr = new String[size][7];
        for (int j = 0; j < size; j++) {
          MbnSmsHadSendVO mbnSmsHadSendVO = datas.get(j);
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          switch (mbnSmsHadSendVO.getTunnelType()) {
            case 1:
              tunnelName = "话机";
              break;
            case 3:
              tunnelName = "猫池";
              break;
            case 2:
              tunnelName = "移动";
              break;
            case 4:
              tunnelName = "联通";
              break;
            case 6:
              tunnelName = "电信";
              break;
            default:
              tunnelName = "无";
          }
          String smsStatus = "";
          switch (mbnSmsHadSendVO.getSendResult()) {
            case -1:
              smsStatus = "取消发送";
              break;
            case 0:
              smsStatus = "未发送";
              break;
            case 1:
              smsStatus = "已提交网关";
              break;
            case 2:
              smsStatus = "成功";
              break;
            case 3:
              smsStatus = "失败";
              break;
            default:
              smsStatus = "无";
              break;
          }
          billsInArr[j][0] = mbnSmsHadSendVO.getTosName(); // 用户名称
          billsInArr[j][1] = mbnSmsHadSendVO.getTos(); // 手机号码
          billsInArr[j][2] = mbnSmsHadSendVO.getTitle(); // 短信标题
          billsInArr[j][3] = mbnSmsHadSendVO.getContent(); //  短信内容
          billsInArr[j][4] = smsStatus;
          billsInArr[j][5] =
              (null == mbnSmsHadSendVO.getReadySendTime()
                  ? ""
                  : sdf.format(mbnSmsHadSendVO.getReadySendTime())); // 发送时间
          billsInArr[j][6] = tunnelName;
          // billsInArr[j][3] = ""+mbnSmsHadSendVO.getContent().length();	//短信长度
          // billsInArr[j][5] = ""+mbnSmsHadSendVO.getReplyCount();		//  回复
        }

        String[] cols = {"用户名称", "用户手机号码", "短信标题", "短信内容", "发送状态", "发送时间", "发送通道名称"};
        String downLoadPath =
            ExportUtil.exportToExcel(getRequest(), "SMS_HADSEND", cols, billsInArr);
        entityMap.put("fileName", downLoadPath);
        entityMap.put("message", "导出" + size + "条已发箱记录成功!");
        entityMap.put("resultcode", SUCCESS);
      }
    } catch (Exception e) {
      entityMap = new HashMap<String, Object>();
      entityMap.put("resultcode", ERROR);
      entityMap.put("message", "导出已发箱出错,请稍后再试");
      e.printStackTrace();
      return ERROR;
    }
    return SUCCESS;
  }