/** 强制出票 */
 public String batchForcePrint() {
   Map<String, Object> map = new HashMap<String, Object>();
   try {
     AdminUser adminUser = getAdminUser();
     if (null == adminUser) {
       throw new WebDataException("你还没有登录!");
     }
     if (this.id == null) {
       throw new DataException("方案ID不能为空.");
     }
     S s = kenoService.forcePrint(this.id);
     // 记录操作日志
     eventLogManager.saveSimpleEventLog(
         null,
         getLottery(),
         adminUser,
         EventLogType.ForcePrint,
         "方案为ID:" + s.getId() + "方案号为+" + s.getSchemeNumber());
     map.put("success", true);
     map.put("msg", "强制出票成功");
   } catch (ServiceException e) {
     e.printStackTrace();
     map.put("success", false);
     map.put("msg", e.getMessage());
   } catch (Exception e) {
     e.printStackTrace();
     map.put("success", false);
     map.put("msg", "强制出票发生异常!");
   }
   Struts2Utils.renderJson(map);
   return null;
 }
 public String oprIssueTime() {
   Map<String, Object> map = new HashMap<String, Object>();
   try {
     if (null == dateStar) throw new WebDataException("开始时间不能为空!");
     if (null == dateEnd) throw new WebDataException("结束时间不能为空!");
     if (dateEnd.getTime() <= dateStar.getTime()) throw new WebDataException("结束时间不能少于开始时间!");
     if (dateEnd.getTime() - dateStar.getTime() > 1000 * 60 * 60 * 24 * 3)
       throw new WebDataException("结束时间减去开始时间不能大于3天!");
     if (null == oprType) throw new WebDataException("操作类型不能为空!");
     if (null == dateMin) throw new WebDataException("操作时间不能为空!");
     if (0 >= dateMin) throw new WebDataException("操作时间不能小于0!");
     AdminUser adminUser = getAdminUser();
     if (null == adminUser) {
       throw new WebDataException("你还没有登录!");
     }
     if (Byte.valueOf("0").equals(oprType)) {
       dateMin = dateMin;
     } else if (Byte.valueOf("1").equals(oprType)) {
       dateMin = -dateMin;
     } else {
       throw new WebDataException("操作类型出错!");
     }
     kenoService.oprIssueTime(dateStar, dateEnd, dateMin);
     // 记录操作日志
     eventLogManager.saveSimpleEventLog(
         null,
         getLottery(),
         adminUser,
         EventLogType.SetTime,
         "开始时间为:" + dateStar + "结束时间为" + dateEnd + "时间为【" + dateMin + "】分钟");
     map.put("success", true);
     map.put("msg", "期号时间设置结束成功");
   } catch (WebDataException e) {
     e.printStackTrace();
     map.put("success", false);
     map.put("msg", e.getMessage());
   } catch (ServiceException e) {
     e.printStackTrace();
     map.put("success", false);
     map.put("msg", e.getMessage());
   } catch (Exception e) {
     e.printStackTrace();
     map.put("success", false);
     map.put("msg", "期号时间设置发生异常!");
   }
   Struts2Utils.renderJson(map);
   return null;
 }
  public String printDetail() {
    try {
      if (StringUtils.isBlank(schemeNum)) {
        throw new WebDataException("方案号不能为空.");
      }
      XDetachedCriteria criteria = new XDetachedCriteria(PrintDetail.class, "m");
      criteria.add(Restrictions.eq("m.schemeNum", schemeNum.trim()));
      this.pagination = queryService.findByCriteriaAndPagination(criteria, this.pagination);

      return "print_detail";
    } catch (ServiceException e) {
      addActionError(e.getMessage());
    } catch (Exception e) {
      addActionError(e.getMessage());
      logger.warn(e.getMessage(), e);
    }
    return GlobalResults.FWD_ERROR;
  }