Example usage for org.hibernate.criterion DetachedCriteria add

List of usage examples for org.hibernate.criterion DetachedCriteria add

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria add.

Prototype

public DetachedCriteria add(Criterion criterion) 

Source Link

Document

Add a restriction

Usage

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * ?/*from   ww  w. j  av a  2 s. co m*/
 */
@Override
public void doChasePlan(long curPeriodId, Boolean iswonStop) {
    DetachedCriteria criteria = DetachedCriteria.forClass(ChasePlan.class);
    criteria.setProjection(Projections.property("id"));
    if (iswonStop != null)
        criteria.add(Restrictions.eq("wonStop", iswonStop));
    criteria.add(Restrictions.eq("lotteryType", getLottery()));
    criteria.add(Restrictions.eq("curPeriodId", curPeriodId));
    criteria.add(Restrictions.eq("state", ChaseState.RUNNING));
    List<Long> list = queryService.findByDetachedCriteria(criteria);
    if (list != null && !list.isEmpty()) {
        for (Long chasePlanId : list) {
            this.handChasePlan(chasePlanId);
        }
    }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

@Transactional(readOnly = true)
public List<I> getCanOpenResults() {
    DetachedCriteria criteria = DetachedCriteria.forClass(issueDataDao.getEntityClass());
    criteria.add(Restrictions.lt("endedTime", new Date()));
    criteria.add(Restrictions.gt("endedTime", DateUtils.addDays(new Date(), -1)));
    criteria.add(Restrictions.eq("state", IssueState.ISSUE_SATE_END));
    criteria.addOrder(Order.desc("id"));
    return issueDataDao.findByDetachedCriteria(criteria, true);
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * ???//ww  w .  jav a 2s  .co  m
 * 
 * @param scheme
 *            
 */
public void sendUserPrice(S scheme) {

    //      KenoScheme kenoScheme = null;

    Float bouns = 0.0f;
    Float scoreRate = 0.0f;
    scheme.setPrizeSended(true);
    // zhuhui motify by 2011-05-03  ?
    scheme.setPrizeSendTime(new Date());
    // xxxc motify by 2012-09-03  ??
    scheme.setWinningUpdateStatus(WinningUpdateStatus.PRICE_UPDATED);
    this.schemeDao.save(scheme);

    if (Lottery.isKeno(scheme.getLotteryType())) {//?
        System.out.println(scheme.getLotteryType() + "?");//?
        if (Lottery.SSC.equals(scheme.getLotteryType())) {
            sscScheme = (SscScheme) scheme;
            playName = sscScheme.getBetType().getTypeName();
            simpleName = Lottery.SSC.getSchemeNumberPrefix();
        } else if (Lottery.SDEL11TO5.equals(scheme.getLotteryType())) {
            sdEl11to5Scheme = (SdEl11to5Scheme) scheme;
            playName = sdEl11to5Scheme.getBetType().getTypeName();
            simpleName = Lottery.SDEL11TO5.getSchemeNumberPrefix();
        } else if (Lottery.GDEL11TO5.equals(scheme.getLotteryType())) {
            gdEl11to5Scheme = (GdEl11to5Scheme) scheme;
            playName = gdEl11to5Scheme.getBetType().getTypeName();
            simpleName = Lottery.GDEL11TO5.getSchemeNumberPrefix();
        } else if (Lottery.EL11TO5.equals(scheme.getLotteryType())) {
            el11to5Scheme = (El11to5Scheme) scheme;
            playName = el11to5Scheme.getBetType().getTypeName();
            simpleName = Lottery.EL11TO5.getSchemeNumberPrefix();
        } else if (Lottery.AHKUAI3.equals(scheme.getLotteryType())) {
            kuaiScheme = (AhKuai3Scheme) scheme;
            playName = kuaiScheme.getBetType().getTypeName();
            simpleName = Lottery.AHKUAI3.getSchemeNumberPrefix();
        } else if (Lottery.XJEL11TO5.equals(scheme.getLotteryType())) {
            xjEl11to5Scheme = (XjEl11to5Scheme) scheme;
            playName = xjEl11to5Scheme.getBetType().getTypeName();
            simpleName = Lottery.XJEL11TO5.getSchemeNumberPrefix();
        }
        DetachedCriteria criteria = DetachedCriteria.forClass(Integral.class, "m");
        criteria.add(Restrictions.eq("m.parent", simpleName));
        criteria.add(Restrictions.eq("m.playName", playName));
        List<Integral> list = integralDao.findByDetachedCriteria(criteria);
        bouns = list.get(0).getBouns();
        scoreRate = list.get(0).getScoreRate();
    }

    PrizeSendType prizeSendType = new DefaultPrizeSendType(scheme);// ?
    StringBuffer memosb = new StringBuffer("");
    if (scheme.getShareType() == ShareType.TOGETHER) {
        memosb.append("??");
    } else if (scheme.isChasePlanScheme()) {
        memosb.append("?");
    } else {
        memosb.append("");
    }
    memosb.append("[" + scheme.getSchemeNumber() + "]");
    memosb.append("?{prize}");
    VariableString varReturnMemo = new VariableString(memosb.toString(), null);// ????

    // 
    List<Subscription> subscriptionList = findSubscriptionsOfScheme(scheme.getId(), SubscriptionState.NORMAL);// /?
    BigDecimal actualTotalReturn = BigDecimal.ZERO;// ??
    BigDecimal joinPrize;
    //?
    BigDecimal schemeCost = BigDecimalUtil.valueOf(scheme.getSchemeCost());
    for (Subscription subscription : subscriptionList) {
        joinPrize = BigDecimalUtil.divide(
                BigDecimalUtil.multiply(subscription.getCost(), prizeSendType.getTotalReturn()), schemeCost);
        subscription.setBonusSended(true);
        subscription.setBonus(joinPrize);// ?
        subscription = subscriptionDao.save(subscription);// 

        varReturnMemo.setVar("prize", Constant.numFmt.format(joinPrize));// ???

        // ?
        userManager.oprUserMoney(userManager.getUser(subscription.getUserId()), joinPrize,
                varReturnMemo.toString(), FundMode.IN, FundDetailType.SCHEME_BONUS, null);
        ///
        agentEntityManager.recordAgent(userManager.getUser(subscription.getUserId()), scheme.getLotteryType(),
                AgentDetailType.PRIZE, new Date(), joinPrize, null);
        if (joinPrize.compareTo(BigDecimal.valueOf(bouns)) > 0) {

        } else {
            //
            //            String remark = varReturnMemo.toString()+"?"+scoreRate+"?"+joinPrize.multiply(BigDecimal.valueOf(scoreRate))+"";
            String remark = varReturnMemo.toString().concat("?").concat(scoreRate.toString())
                    .concat("?").concat(joinPrize.multiply(BigDecimal.valueOf(scoreRate)).toString())
                    .concat("");
            userManager.oprUserScore(userManager.getUser(subscription.getUserId()),
                    joinPrize.multiply(BigDecimal.valueOf(scoreRate)), remark, FundMode.IN,
                    ScoreDetailType.WINNING, null);
        }
        actualTotalReturn = actualTotalReturn.add(joinPrize);// ??
    }
    // ?
    BigDecimal remainPrize = prizeSendType.getTotalReturn().subtract(actualTotalReturn);
    // ???1?
    if (remainPrize.doubleValue() < 0) {
        throw new ServiceException("???");
    } else if (remainPrize.doubleValue() > 0) {
        // ???
        if (remainPrize.compareTo(BigDecimal.valueOf(0.01)) > 0) {
            varReturnMemo.setVar("prize", Constant.numFmt.format(remainPrize));
            userManager.oprUserMoney(userManager.getUser(scheme.getSponsorId()), remainPrize,
                    varReturnMemo.toString(), FundMode.IN, FundDetailType.SCHEME_BONUS, null);
            ///
            agentEntityManager.recordAgent(userManager.getUser(scheme.getSponsorId()), scheme.getLotteryType(),
                    AgentDetailType.PRIZE, new Date(), remainPrize, null);
            if (remainPrize.compareTo(BigDecimal.valueOf(bouns)) > 0) {

            } else {
                //
                String s = null;
                String remark = varReturnMemo.toString().concat("?").concat(scoreRate.toString())
                        .concat("?")
                        .concat(remainPrize.multiply(BigDecimal.valueOf(scoreRate)).toString()).concat("");
                userManager.oprUserScore(userManager.getUser(scheme.getSponsorId()),
                        remainPrize.multiply(BigDecimal.valueOf(scoreRate)), remark, FundMode.IN,
                        ScoreDetailType.WINNING, null);
            }
        }
    }

    if (prizeSendType.getOrganigerDeduct().doubleValue() > 0) {// ????
        userManager.oprUserMoney(userManager.getUser(scheme.getSponsorId()), prizeSendType.getOrganigerDeduct(),
                "?[" + scheme.getSchemeNumber() + "]???", FundMode.IN,
                FundDetailType.SCHEME_COMMISSION, null);
    }
    UserNewestLogSupport.won(scheme);
    ticketThenEntityManager.synchronizationWonTicket(scheme);
    //      User user = userManager.getUser(scheme.getSponsorId());
    //      //?
    //      scheme.getSchemeCost();
    //      // cyy-c 2011-04-13 
    //      // 
    //      List<Subscription> subscriptionList = findSubscriptionsOfScheme(scheme.getId(), SubscriptionState.NORMAL);// /?
    //      if (null != subscriptionList && !subscriptionList.isEmpty()) {// ?
    //         Subscription subscription = subscriptionList.get(0);// ?
    //         subscription.setBonus(scheme.getPrizeAfterTax());// ?
    //         subscriptionDao.save(subscription);// ?
    //         userManager.oprUserMoney(user, scheme.getPrizeAfterTax(), this.getLottery()
    //               .getLotteryName() + ":?:[" + scheme.getSchemeNumber() + "]", FundMode.IN,
    //               FundDetailType.SCHEME_BONUS, null);// ?
    //         ///
    //         agentEntityManager.recordAgent(user, this.getLottery(), AgentDetailType.PRIZE,new Date(), scheme.getPrizeAfterTax(),null);
    //      }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

@Transactional(readOnly = true)
public S getLastChaseScheme(long chaseId) {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(this.schemeDao.getEntityClass());
    detachedCriteria.add(Restrictions.eq("chaseId", chaseId));
    detachedCriteria.addOrder(Order.desc("id"));
    List<S> schemeList = this.schemeDao.findByDetachedCriteria(detachedCriteria, 0, 1, true);
    if (schemeList != null && schemeList.size() > 0) {
        return schemeList.get(0);
    }/*from  w ww.  j av a 2 s .  c  om*/
    return null;
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public List<Subscription> findSubscriptionsOfScheme(final long schemeId, final SubscriptionState state) {
    final S scheme = getScheme(schemeId);
    DetachedCriteria criteria = DetachedCriteria.forClass(Subscription.class);
    criteria.add(Restrictions.eq("schemeId", schemeId));
    criteria.add(Restrictions.eq("lotteryType", scheme.getLotteryType()));
    if (state != null) {
        criteria.add(Restrictions.eq("state", state));
    }// ww w  .j av  a 2s . com
    return subscriptionDao.findByDetachedCriteria(criteria);
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * /*from  w w  w.j a va 2 s.c  o m*/
 * 
 * @param periodId
 * @return
 */
@SuppressWarnings("unchecked")
@Transactional(readOnly = true)
public Integer calAllSchemeCount(Long periodId) {
    Class<S> clazz = ReflectionUtils.getSuperClassGenricType(getClass(), 1);
    DetachedCriteria criteria = DetachedCriteria.forClass(clazz);
    criteria.add(Restrictions.eq("periodId", periodId));
    criteria.setProjection(Projections.rowCount());
    List<Integer> resultList = schemeDao.findByDetachedCriteria(criteria);
    if (resultList != null && resultList.size() > 0) {
        return resultList.get(0);
    } else {
        return 0;
    }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * ?//from   ww  w . j av  a2s .  com
 * 
 * @param periodId
 * @return
 */
@Transactional(readOnly = true)
public Integer calAllSaleCount(Long periodId) {
    Class<S> clazz = ReflectionUtils.getSuperClassGenricType(getClass(), 1);
    DetachedCriteria criteria = DetachedCriteria.forClass(clazz);
    criteria.add(Restrictions.eq("periodId", periodId));
    criteria.add(Restrictions.eq("state", SchemeState.SUCCESS));
    criteria.setProjection(Projections.sum("schemeCost"));
    List<Integer> resultList = schemeDao.findByDetachedCriteria(criteria);
    if (null != resultList && !resultList.isEmpty()) {
        Integer count = resultList.get(0);
        if (null != count) {
            return count.intValue();
        } else {
            return 0;
        }
    } else {
        return 0;
    }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * /*from   www  . ja v a 2  s. co  m*/
 * 
 * @param periodId
 * @return
 */
@Transactional(readOnly = true)
public Integer calAllPrizeCount(Long periodId) {
    Class<S> clazz = ReflectionUtils.getSuperClassGenricType(getClass(), 1);
    DetachedCriteria criteria = DetachedCriteria.forClass(clazz);
    criteria.add(Restrictions.eq("periodId", periodId));
    criteria.add(Restrictions.eq("won", true));
    criteria.setProjection(Projections.rowCount());
    List<Integer> resultList = schemeDao.findByDetachedCriteria(criteria);
    if (resultList != null && resultList.size() > 0) {
        return resultList.get(0);
    } else {
        return 0;
    }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * ?/* ww w . j  a v a 2  s. c  o m*/
 * 
 * @param periodId
 * @return
 */
@Transactional(readOnly = true)
public Integer calSuccessSchemeCount(Long periodId) {
    Class<S> clazz = ReflectionUtils.getSuperClassGenricType(getClass(), 1);
    DetachedCriteria criteria = DetachedCriteria.forClass(clazz);
    criteria.add(Restrictions.eq("periodId", periodId));
    criteria.add(Restrictions.eq("state", SchemeState.SUCCESS));
    criteria.setProjection(Projections.rowCount());
    List<Integer> resultList = schemeDao.findByDetachedCriteria(criteria);
    if (resultList != null && resultList.size() > 0) {
        return resultList.get(0);
    } else {
        return 0;
    }
}

From source file:com.cai310.lottery.service.lottery.keno.impl.KenoServiceImpl.java

/**
 * ??/*from w ww  . ja  v a2 s .c  om*/
 * 
 * @param dateNow
 *            
 * @param beforeTime
 *            ???
 * @param size
 *            ?
 * @return ???
 */
@Transactional(readOnly = true)
public List<I> getCanChaseIssue(Date dateNow, Integer beforeTime, Integer size) {
    if (null == dateNow)
        return null;
    if (null == beforeTime)
        return null;
    if (null == size)
        return null;
    Class<S> clazz = ReflectionUtils.getSuperClassGenricType(getClass(), 0);
    DetachedCriteria criteria = DetachedCriteria.forClass(clazz);
    criteria.add(Restrictions.not(Restrictions.eq("state", IssueState.ISSUE_SATE_FINISH)));
    criteria.add(Restrictions.gt("endedTime", DateUtils.addMinutes(dateNow, beforeTime)));
    criteria.addOrder(Order.asc("endedTime"));
    return issueDataDao.findByDetachedCriteria(criteria, 0, size, true);
}