package com.opentravelsoft.providers.hibernate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.hibernate.LockMode;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.finance.Invoice;
import com.opentravelsoft.entity.finance.InvoiceItem;
import com.opentravelsoft.entity.finance.InvoicePiece;
import com.opentravelsoft.providers.InvoiceDao;
import com.opentravelsoft.util.RowDataUtil;
@Repository("InvoiceDao")
public class InvoiceDaoHibernate extends GenericDaoHibernate<Invoice, String>
implements InvoiceDao {
public InvoiceDaoHibernate() {
super(Invoice.class);
}
public List<Invoice> getInvoice(String reserveNo) {
// StringBuilder sb = new StringBuilder();
// sb.append("select a.recNo,a.invNo,a.prtDate,a.customs,");
// sb.append("a.exp1,a.amount1,a.type1,a.pamount1,");
// sb.append("a.exp2,a.amount2,a.type2,a.pamount2,");
// sb.append("a.exp3,a.amount3,a.type3,a.pamount3,");
// sb.append("a.exp4,a.amount4,a.type4,a.pamount4,");
// sb.append("a.type5,a.pamount5,a.remarks,a.opUser,");
// sb.append("a.casher,a.signature ");
// sb.append("from com.opentravelsoft.entity.finance.Invoice a,");
// sb.append("where b.nameNo=?");
List<Invoice> result = new ArrayList<Invoice>();
// Invoice invoice;
// Object[] params = { book.getRecordNo() };
// List<Object[]> list = getHibernateTemplate()
// .find(sb.toString(), params);
//
// for (Object[] obj : list)
// {
// invoice = new Invoice();
// invoice.setRecordNo(RowDataUtil.getString(obj[0]));
// invoice.setInvoiceNo(RowDataUtil.getString(obj[1]));
// invoice.setCrateDate(RowDataUtil.getDate(obj[2]));
// invoice.setCustomer(RowDataUtil.getString(obj[3]));
// invoice.setRemarks(RowDataUtil.getString(obj[22]));
// invoice.setCreateUser(RowDataUtil.getString(obj[23]));
//
// invoice.addItem(RowDataUtil.getString(obj[4]), RowDataUtil
// .getDouble(obj[5]));
// invoice.addItem(RowDataUtil.getString(obj[8]), RowDataUtil
// .getDouble(obj[9]));
// invoice.addItem(RowDataUtil.getString(obj[12]), RowDataUtil
// .getDouble(obj[13]));
// invoice.addItem(RowDataUtil.getString(obj[16]), RowDataUtil
// .getDouble(obj[17]));
//
// invoice.addPiece(RowDataUtil.getString(obj[6]), RowDataUtil
// .getDouble(obj[7]));
// invoice.addPiece(RowDataUtil.getString(obj[10]), RowDataUtil
// .getDouble(obj[11]));
// invoice.addPiece(RowDataUtil.getString(obj[14]), RowDataUtil
// .getDouble(obj[15]));
// invoice.addPiece(RowDataUtil.getString(obj[18]), RowDataUtil
// .getDouble(obj[19]));
// invoice.addPiece(RowDataUtil.getString(obj[20]), RowDataUtil
// .getDouble(obj[21]));
// // 出纳
// invoice.setCasher(RowDataUtil.getString(obj[24]));
// // 经办人
// invoice.setSignature(RowDataUtil.getString(obj[25]));
//
// invoice.setAmount(RowDataUtil.getDouble(obj[5])
// + RowDataUtil.getDouble(obj[9])
// + RowDataUtil.getDouble(obj[13])
// + RowDataUtil.getDouble(obj[17]));
//
// result.add(invoice);
// }
return result;
}
@SuppressWarnings("unchecked")
public List<Invoice> getInvoiceByBook(String orderSn) {
StringBuilder sb = new StringBuilder();
sb.append("select a.recNo,a.prtDate,a.customs,");
sb.append("a.exp1,a.amount1,a.type1,a.pamount1,");
sb.append("a.exp2,a.amount2,a.type2,a.pamount2,");
sb.append("a.exp3,a.amount3,a.type3,a.pamount3,");
sb.append("a.exp4,a.amount4,a.type4,a.pamount4,");
sb.append("a.type5,a.pamount5,a.remarks,a.opUser,");
sb.append("a.casher,a.signature ");
sb.append("from Invoice a,");
sb.append("Income b ");
sb.append("where a.incomeId=b.incomeId and b.bookingNo=? ");
List<Invoice> result = new ArrayList<Invoice>();
Invoice invoice;
Object[] params = { orderSn };
List<Object[]> list = getHibernateTemplate().find(sb.toString(), params);
for (Object[] obj : list) {
invoice = new Invoice();
invoice.setRecordNo(RowDataUtil.getString(obj[0]));
// invoice.setInvoiceNo(RowDataUtil.getString(obj[1]));
invoice.setCrateDate(RowDataUtil.getDate(obj[1]));
invoice.setCustomer(RowDataUtil.getString(obj[3]));
invoice.setRemarks(RowDataUtil.getString(obj[21]));
invoice.setCreateUser(RowDataUtil.getInt(obj[22]));
invoice.addItem(RowDataUtil.getString(obj[3]),
RowDataUtil.getBigDecimal(obj[4]));
invoice.addItem(RowDataUtil.getString(obj[7]),
RowDataUtil.getBigDecimal(obj[8]));
invoice.addItem(RowDataUtil.getString(obj[11]),
RowDataUtil.getBigDecimal(obj[12]));
invoice.addItem(RowDataUtil.getString(obj[15]),
RowDataUtil.getBigDecimal(obj[16]));
invoice.addPiece(RowDataUtil.getString(obj[5]),
RowDataUtil.getBigDecimal(obj[6]));
invoice.addPiece(RowDataUtil.getString(obj[9]),
RowDataUtil.getBigDecimal(obj[10]));
invoice.addPiece(RowDataUtil.getString(obj[13]),
RowDataUtil.getBigDecimal(obj[14]));
invoice.addPiece(RowDataUtil.getString(obj[17]),
RowDataUtil.getBigDecimal(obj[18]));
invoice.addPiece(RowDataUtil.getString(obj[19]),
RowDataUtil.getBigDecimal(obj[20]));
// 出纳
invoice.setCasher(RowDataUtil.getString(obj[23]));
// 经办人
invoice.setSignature(RowDataUtil.getString(obj[24]));
invoice.setAmount(RowDataUtil.getDouble(obj[4])
+ RowDataUtil.getDouble(obj[8]) + RowDataUtil.getDouble(obj[12])
+ RowDataUtil.getDouble(obj[16]));
result.add(invoice);
}
return result;
}
public int save(Invoice invoice, int userId) {
Invoice invoiceInst = new Invoice();
Date sysdate = getSysdate();
invoiceInst.setRecNo(invoice.getRecordNo());
//
invoiceInst.setCustoms(invoice.getCustomer());
invoiceInst.setOpUser(userId);
invoiceInst.setPrtDate(sysdate);
List<InvoiceItem> items = invoice.getItems();
InvoiceItem item = items.get(0);
invoiceInst.setAmount1(item.getExpense());
invoiceInst.setExp1(item.getItem());
invoiceInst.setPamount1(item.getExpense());
item = items.get(1);
invoiceInst.setAmount2(item.getExpense());
invoiceInst.setExp2(item.getItem());
invoiceInst.setPamount2(item.getExpense());
item = items.get(2);
invoiceInst.setAmount3(item.getExpense());
invoiceInst.setExp3(item.getItem());
invoiceInst.setPamount3(item.getExpense());
item = items.get(3);
invoiceInst.setAmount4(item.getExpense());
invoiceInst.setExp4(item.getItem());
invoiceInst.setPamount4(item.getExpense());
// ---------------------------------------------------------------------
List<InvoicePiece> pieces = invoice.getPieces();
InvoicePiece piece = pieces.get(0);
invoiceInst.setType1(getCheckFlag(piece.getType()));
invoiceInst.setPamount1(piece.getAmount());
piece = pieces.get(1);
invoiceInst.setType2(getCheckFlag(piece.getType()));
invoiceInst.setPamount2(piece.getAmount());
piece = pieces.get(2);
invoiceInst.setType3(getCheckFlag(piece.getType()));
invoiceInst.setPamount3(piece.getAmount());
piece = pieces.get(3);
invoiceInst.setType4(getCheckFlag(piece.getType()));
invoiceInst.setPamount4(piece.getAmount());
piece = pieces.get(4);
invoiceInst.setType5(getCheckFlag(piece.getType()));
invoiceInst.setPamount5(piece.getAmount());
invoiceInst.setRemarks(invoice.getRemarks());
invoiceInst.setIncomeId(invoice.getIncomeId());
// 出纳
invoiceInst.setCasher(invoice.getCasher());
// 经办人
invoiceInst.setSignature(invoice.getSignature());
invoiceInst.setDel((byte) 0);
getHibernateTemplate().save(invoiceInst);
return 0;
}
/**
*
* @param str
* @return
*/
private String getCheckFlag(String str) {
if (null == str || str.length() == 0)
return "N";
if (str.equals("true"))
return "Y";
else
return "N";
}
@SuppressWarnings("unchecked")
public List<Invoice> getInvoice(int incomeId) {
StringBuilder sb = new StringBuilder();
sb.append("select a.recNo,a.invNo,a.prtDate,a.customs,");
sb.append("a.exp1,a.amount1,a.type1,a.pamount1,");
sb.append("a.exp2,a.amount2,a.type2,a.pamount2,");
sb.append("a.exp3,a.amount3,a.type3,a.pamount3,");
sb.append("a.exp4,a.amount4,a.type4,a.pamount4,");
sb.append("a.type5,a.pamount5,a.remarks,a.opUser,");
sb.append("a.casher,a.signature ");
sb.append("from Invoice a,");
sb.append("Income b ");
sb.append("where a.incomeId=b.incomeId and a.incomeId=?");
List<Invoice> result = new ArrayList<Invoice>();
Invoice invoice;
Object[] params = { incomeId };
List<Object[]> list = getHibernateTemplate().find(sb.toString(), params);
for (Object[] obj : list) {
invoice = new Invoice();
invoice.setRecordNo(RowDataUtil.getString(obj[0]));
invoice.setInvoiceNo(RowDataUtil.getString(obj[1]));
invoice.setCrateDate(RowDataUtil.getDate(obj[2]));
invoice.setCustomer(RowDataUtil.getString(obj[3]));
invoice.setRemarks(RowDataUtil.getString(obj[22]));
invoice.setCreateUser(RowDataUtil.getInt(obj[23]));
invoice.addItem(RowDataUtil.getString(obj[4]),
RowDataUtil.getBigDecimal(obj[5]));
invoice.addItem(RowDataUtil.getString(obj[8]),
RowDataUtil.getBigDecimal(obj[9]));
invoice.addItem(RowDataUtil.getString(obj[12]),
RowDataUtil.getBigDecimal(obj[13]));
invoice.addItem(RowDataUtil.getString(obj[16]),
RowDataUtil.getBigDecimal(obj[17]));
invoice.addPiece(RowDataUtil.getString(obj[6]),
RowDataUtil.getBigDecimal(obj[7]));
invoice.addPiece(RowDataUtil.getString(obj[10]),
RowDataUtil.getBigDecimal(obj[11]));
invoice.addPiece(RowDataUtil.getString(obj[14]),
RowDataUtil.getBigDecimal(obj[15]));
invoice.addPiece(RowDataUtil.getString(obj[18]),
RowDataUtil.getBigDecimal(obj[19]));
invoice.addPiece(RowDataUtil.getString(obj[20]),
RowDataUtil.getBigDecimal(obj[21]));
// 出纳
invoice.setCasher(RowDataUtil.getString(obj[24]));
// 经办人
invoice.setSignature(RowDataUtil.getString(obj[25]));
invoice.setAmount(RowDataUtil.getDouble(obj[5])
+ RowDataUtil.getDouble(obj[9]) + RowDataUtil.getDouble(obj[13])
+ RowDataUtil.getDouble(obj[17]));
result.add(invoice);
}
return result;
}
@SuppressWarnings("unchecked")
public List<Invoice> getInvoices(Date startDate, Date endDate,
double minAmount, double maxAmount, String sort) {
StringBuilder sb = new StringBuilder();
List<Object> params = new ArrayList<Object>();
sb.append("from Invoice ");
sb.append("where del<>1 ");
if (minAmount > 0) {
sb.append("and amount1+amount2+amount3+amount4 >= ? ");
params.add(minAmount);
}
if (maxAmount > 0) {
sb.append("and amount1+amount2+amount3+amount4 <= ? ");
params.add(maxAmount);
}
if (null != startDate) {
sb.append("and prtDate>=? ");
params.add(startDate);
}
if (null != startDate) {
sb.append("and prtDate<=? ");
params.add(endDate);
}
sb.append("order by prtDate desc");
Object[] param = null;
if (params.size() > 0) {
param = new Object[params.size()];
for (int i = 0; i < params.size(); i++) {
param[i] = params.get(i);
}
}
List<Invoice> result = new ArrayList<Invoice>();
List<Invoice> list = getHibernateTemplate().find(sb.toString(), param);
for (Invoice obj : list) {
Invoice invoice = new Invoice();
invoice.setRecordNo(obj.getRecNo());
invoice.setCrateDate(obj.getPrtDate());
invoice.setCustomer(obj.getCustoms());
invoice.setRemarks(obj.getRemarks());
invoice.setCreateUser(obj.getOpUser());
invoice.addItem(obj.getExp1(), obj.getAmount1());
invoice.addItem(obj.getExp2(), obj.getAmount2());
invoice.addItem(obj.getExp3(), obj.getAmount3());
invoice.addItem(obj.getExp4(), obj.getAmount4());
invoice.addPiece(String.valueOf(obj.getType1()), obj.getPamount1());
invoice.addPiece(String.valueOf(obj.getType2()), obj.getPamount2());
invoice.addPiece(String.valueOf(obj.getType3()), obj.getPamount3());
invoice.addPiece(String.valueOf(obj.getType4()), obj.getPamount4());
invoice.addPiece(String.valueOf(obj.getType5()), obj.getPamount5());
// 出纳
invoice.setCasher(obj.getCasher());
// 经办人
invoice.setSignature(obj.getSignature());
invoice.setAmount(RowDataUtil.getDouble(obj.getAmount1())
+ RowDataUtil.getDouble(obj.getAmount2())
+ RowDataUtil.getDouble(obj.getAmount3())
+ RowDataUtil.getDouble(obj.getAmount4()));
result.add(invoice);
}
return result;
}
public int deleteInvoice(String inviceId) {
HibernateTemplate template = getHibernateTemplate();
Invoice trj051 = (Invoice) template.get(Invoice.class, inviceId,
LockMode.PESSIMISTIC_WRITE);
if (null == trj051)
return -1;
trj051.setDel((byte) 1);
template.update(trj051);
return 0;
}
public List<Invoice> getInvoice1(int incomeId) {
// TODO Auto-generated method stub
return null;
}
}