⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carddao.java

📁 国内很牛的软件公司花费两年半开发的用EJB3开发的代码,采用STRUTS和EJB3,目前系统进行第二版.所以拿出来共享
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -