/**
* @Project: hehenian-biz-service
* @Package com.hehenian.biz.component.trade.impl
* @Title: ReconciliationComponentImpl.java
* @Description: TODO
* @author: liuzgmf
* @date 2014年11月24日 上午10:08:17
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.biz.component.trade.impl;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hehenian.biz.common.trade.dataobject.ReconciliationDo;
import com.hehenian.biz.common.trade.dataobject.ReconciliationDo.ReconciliationStatus;
import com.hehenian.biz.common.trade.dataobject.ReconciliationDo.ReconciliationType;
import com.hehenian.biz.component.trade.IReconciliationComponent;
import com.hehenian.biz.dal.trade.IReconciliationDao;
/**
*
* @author: liuzgmf
* @date 2014年11月24日 上午10:08:17
*/
@Component("reconciliationComponent")
public class ReconciliationComponentImpl implements IReconciliationComponent {
@Autowired
private IReconciliationDao reconciliationDao;
@Override
public int addReconciliation(List<ReconciliationDo> reconciliationDoList) {
for (ReconciliationDo reconciliationDo : reconciliationDoList) {
ReconciliationDo localReconciliationDo = reconciliationDao.getByOrdIdAndReconciliationType(
reconciliationDo.getOrdId(), reconciliationDo.getReconciliationType());
// 如果对账记录存在,并且汇付交易状态为成功,并且对账为成功,则直接跳过
if (localReconciliationDo != null && localReconciliationDo.getTransStat().equals("S")
&& localReconciliationDo.getReconciliationStatus().equals(ReconciliationStatus.SUCCESS)) {
continue;
}
if (localReconciliationDo != null) {
reconciliationDo.setReconciliationId(localReconciliationDo.getReconciliationId());
reconciliationDao.updateReconciliation(reconciliationDo);
} else {
reconciliationDao.addReconciliation(reconciliationDo);
}
}
return reconciliationDoList.size();
}
@Override
public int countReconciliations(ReconciliationType reconciliationType, ReconciliationStatus reconciliationStatus) {
return reconciliationDao.countReconciliations(reconciliationType, reconciliationStatus);
}
@Override
public List<ReconciliationDo> queryReconciliations(ReconciliationType reconciliationType,
ReconciliationStatus reconciliationStatus, int count) {
return reconciliationDao.queryReconciliations(reconciliationType, reconciliationStatus, count);
}
@Override
public int countReconciliations(ReconciliationType reconciliationType, Date beginDate, Date endDate) {
return reconciliationDao.countReconciliations2(reconciliationType, beginDate, endDate);
}
@Override
public List<ReconciliationDo> queryReconciliations(ReconciliationType reconciliationType, Date beginDate,
Date endDate, int count) {
return reconciliationDao.queryReconciliations2(reconciliationType, beginDate, endDate, count);
}
@Override
public int updateReconciliationStatus(List<ReconciliationDo> reconciliationDoList) {
for (ReconciliationDo reconciliationDo : reconciliationDoList) {
reconciliationDao.updateReconciliationStatus(reconciliationDo);
}
return reconciliationDoList.size();
}
@Override
public Date getReconciliationBeginDate(ReconciliationType reconciliationType) {
Date beginDate = reconciliationDao.getMaxPnrDate(reconciliationType);
if (beginDate == null) {
beginDate = reconciliationDao.getMaxOrdDate(reconciliationType);
}
if (beginDate != null && beginDate.after(new Date())) {
beginDate = DateUtils.addDays(new Date(), -1);
}
if (beginDate == null) {
try {
beginDate = DateUtils.parseDate("20131001", new String[] { "yyyyMMdd" });
} catch (ParseException e) {
e.printStackTrace();
}
}
return beginDate;
}
@Override
public List<ReconciliationDo> getReconciliations(Map<String, Object> searchItems) {
return reconciliationDao.getReconciliations(searchItems);
}
@Override
public long countRecon(Map<String, Object> searchItems) {
return reconciliationDao.countRecon(searchItems);
}
}