package com.lanyotech.pps.service.impl; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import com.easyjf.core.support.query.IQueryObject; import com.easyjf.core.support.query.QueryUtil; import com.easyjf.util.StringUtils; import com.easyjf.web.tools.IPageList; import com.lanyotech.pps.domain.PurchaseBill; import com.lanyotech.pps.query.PurchaseItemQuery; import com.lanyotech.pps.service.IPurchaseBillService; import com.lanyotech.pps.dao.IPurchaseBillDAO; /** * PurchaseBillServiceImpl * @author EasyJWeb 1.0-m2 * $Id: PurchaseBillServiceImpl.java,v 0.0.1 2010-6-13 18:52:19 EasyJWeb 1.0-m2 Exp $ */ public class PurchaseBillServiceImpl implements IPurchaseBillService{ private IPurchaseBillDAO purchaseBillDao; public void setPurchaseBillDao(IPurchaseBillDAO purchaseBillDao){ this.purchaseBillDao=purchaseBillDao; } public Long addPurchaseBill(PurchaseBill purchaseBill) { purchaseBill.countAmount(); this.purchaseBillDao.save(purchaseBill); if (purchaseBill != null && purchaseBill.getId() != null) { return purchaseBill.getId(); } return null; } public PurchaseBill getPurchaseBill(Long id) { PurchaseBill purchaseBill = this.purchaseBillDao.get(id); return purchaseBill; } public boolean delPurchaseBill(Long id) { PurchaseBill purchaseBill = this.getPurchaseBill(id); if (purchaseBill != null) { this.purchaseBillDao.remove(id); return true; } return false; } public boolean batchDelPurchaseBills(List<Serializable> purchaseBillIds) { for (Serializable id : purchaseBillIds) { delPurchaseBill((Long) id); } return true; } public IPageList getPurchaseBillBy(IQueryObject queryObject) { return QueryUtil.query(queryObject, PurchaseBill.class,this.purchaseBillDao); } public boolean updatePurchaseBill(Long id, PurchaseBill purchaseBill) { if (id != null) { purchaseBill.setId(id); } else { return false; } purchaseBill.countAmount(); this.purchaseBillDao.update(purchaseBill); return true; } public boolean delPurchaseBillItem(Long id) { int ret=this.purchaseBillDao.batchUpdate("delete from PurchaseBillItem obj where obj.id=?", new Object[]{id}); return ret>0; } public List<Map> statistics(PurchaseItemQuery query, String groupBy) { if(!StringUtils.hasLength(groupBy))groupBy="p.dir_id";//默认按产品分组 if("day".equals(groupBy)){ //转换成日期函数 groupBy="DATE_FORMAT(bill.vdate,'%Y-%m-%d')"; } if("month".equals(groupBy)){ //转换成月份 groupBy="DATE_FORMAT(bill.vdate,'%Y-%m')"; } StringBuilder jpql = new StringBuilder("SELECT SUM(obj.amount) as amounts,SUM(obj.num) as nums," + groupBy + " FROM purchasebillitem obj left join purchasebill bill on bill.id=obj.bill_id left join product p on p.id=obj.product_id "); jpql.append(" where ").append(query.getQuery()).append(" GROUP BY ").append(groupBy); List list=this.purchaseBillDao.executeNativeQuery(jpql.toString(), query.getParameters().toArray(), 0, -1); if(list!= null){ for(int i=0;i<list.size();i++){ Object[] os=(Object[])list.get(i); Map map=new HashMap(); map.put("amount", os[0]); map.put("num", os[1]); Object value=os[2]; map.put("value", value); if(value!=null){ String title=value.toString(); if("bill.supplier_id".equals(groupBy)){ title = this.getFieldTitle("name", "client", new Long(value.toString())); } else if("p.id".equals(groupBy)){ title = this.getFieldTitle("name", "product", new Long(value.toString())); } else if("p.dir_id".equals(groupBy)){ title = this.getFieldTitle("name", "productdir", new Long(value.toString())); } else if("bill.buyer_id".equals(groupBy)){ title = this.getFieldTitle("trueName", "employee", new Long(value.toString())); } map.put("title", title); } list.set(i, map); } } return list; } private String getFieldTitle(String field, String table, Object id) { String q = "select obj." + field + " from " + table + " obj where obj.id=?"; List l = this.purchaseBillDao.executeNativeQuery(q, new Object[] { id }, 0, 1); if (l != null && l.size() > 0) { return l.get(0).toString(); } return ""; } }