📄 carddao.java
字号:
package com.ufmobile.business.account.dao;
import java.math.BigDecimal;
import java.sql.Connection;
import java.util.Date;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.persistence.TemporalType;
import javax.sql.DataSource;
import com.ufmobile.business.account.bo.CostCardStatiDetail;
import com.ufmobile.business.account.entity.CardEntity;
import com.ufmobile.business.account.entity.CardlogEntity;
import com.ufmobile.business.exception.CardException;
import com.ufmobile.common.dao.UFMobileDAO;
import com.ufmobile.common.login.entity.UserInfo;
import com.ufmobile.common.security.bo.SecurityTool;
import com.ufmobile.mstreet.entity.ParamEntity;
import com.ufmobile.mstreet.util.CommonUtil;
import com.ufmobile.mstreet.util.DateUtil;
import com.ufmobile.mstreet.util.SqlUtil;
import com.ufmobile.platform.Exception.BusinessException;
import com.ufmobile.platform.log.RunTimeLogger;
/**
* <p>
* <p>
* 创建日期:Dec 14, 2006
*
* @author Janet Feng
* @since v3.0
*/
public class CardDAO extends UFMobileDAO {
public CardDAO() {
super();
}
public CardDAO(EntityManager manager) {
super(manager);
}
/**
* <p>
* 新建充值卡
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 14, 2006
*
* @param card
* @throws CardException
*/
public void addCard(CardEntity card) throws CardException {
RunTimeLogger.info(CardDAO.class, "新建充值卡");
if (card != null) {
this.getManager().persist(card);
}
}
/**
* <p>
*
* <p>
* 作者:msf <br>
* 日期:2007-3-30
* @param cards
* @throws CardException
*/
public void importCard(List<CardEntity> cards) throws CardException {
if (cards == null)
throw new CardException("Cards can't be null");
RunTimeLogger.info(CardDAO.class, "批量导入冲值卡"+cards.size());
CardDAO cardDao = new CardDAO(getManager());
for (int i = 0; i < cards.size(); i++) {
CardEntity card = cards.get(i);
if (card != null) {
getManager().persist(card);
}
if(i %500==0)
getManager().flush();
}
}
/**
* <p>
* 更新充值卡
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 14, 2006
*
* @param card
* @throws CardException
*/
public void updateCard(CardEntity card) throws CardException {
RunTimeLogger.info(CardDAO.class, "更新充值卡");
if (card == null)
throw new CardException("Can't find Card info!");
this.getManager().merge(card);
}
public void updateBatchCard(List<CardEntity> list) throws CardException {
RunTimeLogger.info(CardDAO.class, "更新充值卡");
if (list == null || list.size()==0)
throw new CardException("Can't find Card info!");
for(int i=0;i < list.size();i++){
CardEntity cardentity = list.get(i);
this.getManager().merge(cardentity);
}
}
/**
* <p>
* 删除充值卡
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 14, 2006
*
* @param cardId
* @throws CardException
*/
public void deleteCard(Long cardId) throws CardException {
if (cardId == null)
throw new CardException("Card ID is required!");
RunTimeLogger.info(CardDAO.class, "删除充值卡");
CardEntity card = this.getManager().find(CardEntity.class, cardId);
if (card != null)
this.getManager().remove(card);
}
/**
* <p>
* 获得充值卡信息
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 14, 2006
*
* @param cardId
* @return
* @throws CardException
*/
public CardEntity getCardEntity(Long cardId) throws CardException {
if (cardId == null)
throw new CardException("Card ID is required!");
CardEntity card = this.getManager().find(CardEntity.class, cardId);
return card;
}
/**
* <p>
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 16, 2006
*
* @throws CardException
*/
public List<CardEntity> getAllCards() throws CardException {
StringBuffer buf = new StringBuffer();
buf.append("select * from tb_business_card order by id");
List cards = this.getManager().createNativeQuery(buf.toString(), CardEntity.class).getResultList();
return cards;
}
/**
* <p>
* 充值
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 16, 2006
*
* 修改:daixh
* 日期:2007-10-24
*
* @param card
* @throws CardException
* @throws CloneNotSupportedException
*/
public void fillMoney(CardEntity card, String userName) throws CardException {
if (card == null)
return;
if (card.getUsedmoneny() == card.getMoneny()) {
// 更新充值卡状态
card.setIslast(Boolean.FALSE);
card.setIsover(Boolean.TRUE);
updateCard(card);
// 新建充值卡
CardEntity newCard;
try {
newCard = card.clone();
newCard.setIslast(Boolean.TRUE);
newCard.setDr(new Integer(1));
newCard.setOpdate(new Date(System.currentTimeMillis()));
newCard.setCardoperator(userName);
addCard(newCard);
} catch (CloneNotSupportedException e) {
throw new CardException("克隆CardEntity失败");
}
// 记录历史记录
// logCard(card);
}
RunTimeLogger.info(CardDAO.class, "充值完成");
}
/**
* <p>
* 记录历史
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 16, 2006
*
* @param card
* @throws CardException
*/
public void logCard(CardEntity card) throws CardException {
if (card != null) {
CardlogEntity log = new CardlogEntity();
log.setAgent(card.getAgent());
log.setCardoperator(card.getCardoperator());
log.setCardtype(card.getCardtype());
log.setCode(card.getCode());
log.setCurmoneny(card.getCurmoneny());
log.setFreeze(card.getFreeze());
log.setIslast(card.getIslast());
log.setIsover(card.getIsover());
log.setMoneny(card.getMoneny());
log.setOpdate(card.getOpdate());
log.setPassword(card.getPassword());
log.setSaledate(card.getSaledate());
log.setUsedmoneny(card.getUsedmoneny());
log.setAccountId(card.getAccountId());
this.getManager().persist(log);
}
}
/**
* <p>
* 通过充值卡编号获得充值卡对象
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 18, 2006
*
* @param cardCode
* @return
* @throws CardException
*/
public CardEntity findCardByCardCode(String cardCode) throws CardException {
if (cardCode == null)
throw new CardException("充值卡编号不能为空");
StringBuffer buf = new StringBuffer();
buf.append("from CardEntity where code=:code and dr=0");
Query query = getManager().createQuery(buf.toString());
query.setParameter("code", cardCode.trim());
List<CardEntity> result = query.getResultList();
if (result == null || result.isEmpty())
throw new CardException("该编号的充值卡不存在");
return result.get(0);
}
public List<String> QueryAllCardCode(String codes) throws CardException {
// StringBuffer buf = new StringBuffer();
// buf.append("from CardEntity ");
String sql = "from CardEntity where code in ("+ codes +")";
Query query = getManager().createQuery(sql);
List<CardEntity> result = query.getResultList();
List<String> ret = new ArrayList<String>();
if (result != null && !result.isEmpty()){
for (CardEntity l : result) {
if (!ret.contains(l.getCode())) {
ret.add(l.getCode());
}
}
}
getManager().clear();
return ret;
}
/**
* <p>
* 查询结果
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 20, 2006
*
* @param beginIndex
* @param maxNumber
* @param agentCode
* @param cardCode
* @param isFreeze
* @param dr
* @param cardType
* @return
* @throws CardException
*/
public List<CardEntity> queryCards(int beginIndex,
int maxNumber,
String agentCode,
String cardCode,
int isFreeze,
int dr,
int cardType,
String accountName ,
String streetName,
Date fillBeginDate,
Date fillEndDate,
Date saleBeginDate,
Date saleEndDate,
int queryType) throws CardException {
StringBuffer buf = constructQueryString(false, agentCode, cardCode, isFreeze, dr, cardType, accountName,streetName,fillBeginDate,fillEndDate,saleBeginDate,saleEndDate,queryType);
Query query = this.getManager().createNativeQuery(buf.toString(),CardEntity.class);
if (beginIndex > -1)
query.setFirstResult(beginIndex);
if (maxNumber > -1)
query.setMaxResults(maxNumber);
if(fillBeginDate != null)
query.setParameter(1,fillBeginDate,TemporalType.DATE);
if(fillEndDate != null)
query.setParameter(2,fillEndDate,TemporalType.DATE);
if(saleBeginDate != null)
query.setParameter(3,saleBeginDate,TemporalType.DATE);
if(saleEndDate != null)
query.setParameter(4,saleEndDate,TemporalType.DATE);
return query.getResultList();
}
/**
* <p>
* 查询总数
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 20, 2006
*
* @param agentCode
* @param cardCode
* @param isFreeze
* @param dr
* @param cardType
* @param streetName
* @return
* @throws CardException
*/
public int queryCardsTotal(String agentCode,
String cardCode,
int isFreeze,
int dr,
int cardType,
String accountName,
String streetName,
Date fillBeginDate,
Date fillEndDate,
Date saleBeginDate,
Date saleEndDate,
int queryType) throws CardException {
StringBuffer buf = constructQueryString(true, agentCode, cardCode, isFreeze, dr, cardType, accountName,streetName,fillBeginDate,fillEndDate,saleBeginDate,saleEndDate,queryType);
Query query = this.getManager().createNativeQuery(buf.toString());
if(fillBeginDate != null)
query.setParameter(1,fillBeginDate,TemporalType.DATE);
if(fillEndDate != null)
query.setParameter(2,fillEndDate,TemporalType.DATE);
if(saleBeginDate != null)
query.setParameter(3,saleBeginDate,TemporalType.DATE);
if(saleEndDate != null)
query.setParameter(4,saleEndDate,TemporalType.DATE);
return ((BigDecimal) query.getSingleResult()).intValue();
}
/**
* <p>
* 构造查询语句
* <p>
* 作者:Janet Feng <br>
* 日期:Dec 20, 2006
*
* @param bCountTotal 是否查询总数
* @param agentCode 代理商编号
* @param cardCode 充值卡编号
* @param isFreeze 是否冻结 0-正常,1-冻结 ,-1为不设置查询条件
* @param dr是否已充值 0-未充值,1-已充值 ,-1为不设置查询条件
* @param cardType 卡类型 0-服务,1-流量 ,-1为不设置查询条件
* @return
*/
private StringBuffer constructQueryString(boolean bCountTotal,
String agentCode,
String cardCode,
int isFreeze,
int dr,
int cardType,
String accountName,
String streetName,
Date fillBeginDate,
Date fillEndDate,
Date saleBeginDate,
Date saleEndDate,
int queryType)
{
StringBuffer buf = new StringBuffer();
if (bCountTotal) {
buf.append(" select count(*) from tb_business_card c left join tb_street s on c.systemid=s.streetid where c.islast=1");
} else {
buf.append(" select c.* from tb_business_card c left join tb_street s on c.systemid=s.streetid where c.islast=1");
}
if (agentCode != null && agentCode.trim().length() != 0)
{
if(queryType == UserInfo.Agent)
{
buf.append(" and lower( c.agent ) = '").append(SqlUtil.convert2SqlStr(agentCode.toLowerCase())).append("'");
}
else if(queryType == UserInfo.Operator)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -