package fr.zng.xxzx.common.dao.impl;

import java.util.List;

import fr.zng.xxzx.common.dao.TdFlowDao;
import fr.zng.xxzx.common.dao.base.BaseDao;
import fr.zng.xxzx.common.entity.TdFlowEntity;
import fr.zng.xxzx.common.entity.UnoEntity;
import fr.zng.xxzx.util.StringUtil;

/**
 * 投递流水
 * @author lyf
 *
 */
public class TdFlowDaoImpl extends BaseDao implements TdFlowDao{

	public List<TdFlowEntity> search(TdFlowEntity en) {
		List<TdFlowEntity> result = null;
		try {
			makeSession();
			result = session.selectList("TdFlow.search", en);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close();
		}
        return result;
	}

	public int getCount(TdFlowEntity en) {
		Integer cnt = 0;
		try {
			makeSession();
			cnt = session.selectOne("TdFlow.getCount", en);
	        if (StringUtil.isEmpty(cnt)) {
	        	cnt = 0;
	        }
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close();
		}
        return cnt;
	}

	public TdFlowEntity getDetailByPk(String pk) {
		List<TdFlowEntity> result = null;
		try {
			makeSession();
			result = session.selectList("TdFlow.getDetailByPk", pk);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close();
		}
		if(result.size()>0){
			return result.get(0);
		}else{
			return new TdFlowEntity();
		}
	}

	@Override
	public int insert(TdFlowEntity en) {
		int ret = 0;
		int ret2 = 0;
		int ret3 = 0;
		int result = 0;
		try {
			makeSession();
			ret = session.insert("TdFlow.insert", en);
			if(ret>0){
				UnoEntity user = new UnoEntity();
				user.setUno(en.getUno());
				user.setCno(en.getCno());
				user.setPoint(en.getApoint());
				user.setWeight(en.getAweight());
				ret2 = session.update("Uno.UpdatePoint", user);
				ret3 = session.update("Uno.UpdateWeight", user);
				System.out.println("ret2,ret3:"+ret2+","+ret3);
				if(ret2 > 0 && ret3 >= 0){
					session.commit();
				}else{
					result = -1;
					session.rollback();
				}
			}else{
				result = -1;
				session.rollback();
			}
		} catch (Exception e) {
			session.rollback();
			e.printStackTrace();
		} finally {
			close();
		}
        return ret;
	}
	@Override
	public String insert2(TdFlowEntity en) {
		String result = "";
		try {
			makeSession();
			int p = session.insert("TdFlow.insert2", en);
			if(p>0){
				session.commit();
				result = en.getUuid();
			}
		} catch (Exception e) {
			session.rollback();
			e.printStackTrace();
		} finally {
			close();
		}
        return result;
	}
	@Override
	public int insertErr(TdFlowEntity en) {
		int ret = 0;
		try {
			makeSession();
			ret = session.insert("TdFlow.insertErr", en);
			if(ret>0){
					session.commit();
			}else{
				session.rollback();
			}
		} catch (Exception e) {
			session.rollback();
			e.printStackTrace();
		} finally {
			close();
		}
		return ret;
	}
	public TdFlowEntity getTdFlowByUuid(TdFlowEntity en) {
		try {
			makeSession();
			en = session.selectOne("TdFlow.getTdFlowByUuid", en);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close();
		}
        return en;
	}
	@Override
	public int updateTd(TdFlowEntity en) {
		int ret = 0;
		int ret2 = 0;
		int ret3 = 0;
		int result = 0;
		try {
			makeSession();
			ret = session.insert("TdFlow.updateTd", en);
			if(ret>0){
				UnoEntity user = new UnoEntity();
				user.setUno(en.getUno());
				user.setCno(en.getCno());
				user.setPoint(en.getApoint());
				user.setWeight(en.getAweight());
				ret2 = session.update("Uno.UpdatePoint", user);
				ret3 = session.update("Uno.UpdateWeight", user);
				System.out.println("ret2,ret3:"+ret2+","+ret3);
				if(ret2 > 0 && ret3 >= 0){
					session.commit();
				}else{
					result = -1;
					session.rollback();
				}
			}else{
				result = -1;
				session.rollback();
			}
		} catch (Exception e) {
			session.rollback();
			e.printStackTrace();
		} finally {
			close();
		}
        return ret;
	}
}
