package com.ycsoft.business.component.core;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Component;
import com.ycsoft.beans.core.cust.CCust;
import com.ycsoft.beans.core.print.CDoc;
import com.ycsoft.business.commons.abstracts.BaseBusiComponent;
import com.ycsoft.business.dao.core.common.CDoneCodeInfoDao;
import com.ycsoft.business.dao.core.cust.CCustDao;
import com.ycsoft.business.dao.core.print.CDocFeeDao;
import com.ycsoft.business.dao.core.print.CDocItemDao;
import com.ycsoft.business.dto.core.print.PrintDate;
import com.ycsoft.business.dto.core.print.PrintItemDto;
import com.ycsoft.commons.constants.SystemConstants;
import com.ycsoft.commons.helper.CollectionHelper;
/**
* 提供获取动态数据的方法
*
* @author YC-SOFT
*/
@Component
public class DynamicDataComponent extends BaseBusiComponent {
private CCustDao cCustDao;
private CDocItemDao cDocItemDao;
private CDoneCodeInfoDao cDoneCodeInfoDao;
private CDocFeeDao cDocFeeDao;
/**
* printItems方法的参数必须和下面的configDocItems的参数一致!!!
* @param params
* @param cust
* @throws Exception
*/
@SuppressWarnings("unused")
public void printItems(Map<String, Object> params, CCust cust) throws Exception {
CDoc doc = (CDoc) params.get("doc");
if (doc != null){
if(cust !=null && cust.getCust_type().equals(SystemConstants.CUST_TYPE_NONRESIDENT)){
List<PrintItemDto> list = cDocItemDao.queryNonresCustBySn(doc.getDoc_sn());
Map<String,List<PrintItemDto>> map = CollectionHelper.converToMap(list, "printitem_name");
List<PrintItemDto> pList = new ArrayList<PrintItemDto>();
for(String key : map.keySet()){
List<PrintItemDto> printList = map.get(key);
PrintItemDto pp = printList.get(0);
int money = 0;
String docitem_sn = "";
for(PrintItemDto p : printList){
money += p.getAmount();
docitem_sn += p.getDocitem_sn()+",";
}
pp.setAmount(money);
pp.setDocitem_sn(docitem_sn.substring(0,docitem_sn.length()-1));
pList.add(pp);
}
params.put("printItems", pList);
params.put("count", cDocFeeDao.queryByDocSn(doc.getDoc_sn()));
}else{
//单位的需要传客户类型
if(cust != null){
params.put("printItems", cDocItemDao.queryBySn(doc.getDoc_sn(),cust.getCust_type(), String.valueOf(params.get("invoiceId")), String.valueOf(params.get("invoiceCode"))));
}else{
params.put("printItems", cDocItemDao.queryBySn(doc.getDoc_sn(),null, String.valueOf(params.get("invoiceId")), String.valueOf(params.get("invoiceCode"))));
}
}
}
}
public void configDocItems(Map<String, Object> params, CCust cust) throws Exception {
String[] doneCodes = (String[]) params.get("doneCodes");
params.put("docItems", cDoneCodeInfoDao.queryPrintConfig(doneCodes));
// CDoneCode[] doneCodes = (CDoneCode[]) params.get("doneCodes");
// if (doneCodes != null && doneCodes.length > 0) {
// params.put("docItems", cDocDao.queryByDoneCodes(doneCodes));
// }
}
public void setCCustDao(CCustDao custDao) {
cCustDao = custDao;
}
/**
* 获取客户信息,默认调用,无需再单据进行配置
* @param custId
* @return
* @throws Exception
*/
// public CustFullInfoDto getCustInfo(String custId) throws Exception {
// if (StringHelper.isNotEmpty(custId)){
// Pager<Map<String,Object>> p = new Pager<Map<String,Object>>();
//// Map<String,Object> cond = new HashMap<String,Object>();
//// cond.put("t1.cust_id", custId);
//// p.setParams( cond );
// List<CustFullInfoDto> lst = cCustDao.queryCustFullInfo( p , getOptr().getCounty_id()).getRecords();
// return lst.size() > 0 ? lst.get(0): null;
// }
// return null;
// }
/**
* 获取打印时间
* 默认调用,无需再单据进行配置
*
* @return
*/
public PrintDate getPrintDate() {
return new PrintDate();
}
public void setCDocItemDao(CDocItemDao docItemDao) {
cDocItemDao = docItemDao;
}
/**
* @param doneCodeInfoDao the cDoneCodeInfoDao to set
*/
public void setCDoneCodeInfoDao(CDoneCodeInfoDao doneCodeInfoDao) {
cDoneCodeInfoDao = doneCodeInfoDao;
}
public void setCDocFeeDao(CDocFeeDao docFeeDao) {
cDocFeeDao = docFeeDao;
}
}