package com.zteits.pay.dao.impl;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.apache.commons.lang3.StringUtils;
import com.clouds.common.utils.DateUtil;
import com.xiaoleilu.hutool.util.ArrayUtil;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.clouds.api.apibase.constants.PayOrderEnum;
import com.zteits.pay.dao.TdBPayBlncacDao;
import com.zteits.pay.domain.TdBPayBlncac;
import com.zteits.pay.mapper.smapper.TdBPayBlncacSMapper;
/**
*
* 支付宝对账单Dao实现类.
*
* Copyright: Copyright (c) 2017 zteits
*
* @ClassName: TdBPayBlncacDaoImpl
* @Description:
* @version: v1.0.0
* @author: xiejianpeng
* @date: 2017年7月4日 上午10:09:20
* Modification History:
* Date Author Version Description
*---------------------------------------------------------*
* 2017年7月4日 xiejianpeng v1.0.0 创建
*/
@Component("com.zteits.pay.dao.impl.TdBPayBlncacDaoImpl")
public class TdBPayBlncacDaoImpl implements TdBPayBlncacDao{
@Autowired
private TdBPayBlncacSMapper tdBPayBlncacSMapper;
@Override
public Integer insert(List csvList) {
List payBlncacList = new ArrayList();
if(!CollectionUtil.isEmpty(csvList)){
/**先删除数据库中是插入支付宝账单日期的数据*/
this.delPayBlncacByBeginDate(csvList);
/**拼接账单信息.*/
payBlncacList = this.getTdBPayBlncacList(csvList);
}
return tdBPayBlncacSMapper.insertPayBlncacList(payBlncacList);
}
/**
* 拼接账单信息
* @param csvList
* @param tdBPayOrderLists
* @param tdBOrderLists
* @return
*/
private List getTdBPayBlncacList(List csvList){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List payBlncacList = new ArrayList();
try {
for(String[] str:csvList){
if(ArrayUtil.isNotEmpty(str)){
TdBPayBlncac record = new TdBPayBlncac();
record.setRltPayOrderId(StringUtils.isNotEmpty(str[0]) ? str[0] : ""); //支付单交易号
record.setPayOrderId(StringUtils.isNotEmpty(str[1]) ? str[1] : ""); //支付单编号
if(StringUtils.isNotEmpty(str[2])){
if(str[2].trim().equals("交易")){
record.setBusType(Integer.valueOf(PayOrderEnum.BUS_TYPE_DEAL.getValue()));
}else if(str[2].trim().equals("退款")){
record.setBusType(Integer.valueOf(PayOrderEnum.BUS_TYPE_REFUND.getValue()));
}
}
record.setOrderRefundId(StringUtils.isNotEmpty(str[21]) ? str[21] : ""); //退款批次号
record.setPayCreateTime(StringUtils.isNotEmpty(str[4]) ? format.parse(str[4]) : null); //开始时间
record.setPayFinishTime(StringUtils.isNotEmpty(str[5]) ? format.parse(str[5]) : null); //结束时间
record.setCollAccount(StringUtils.isNotEmpty(str[10]) ? str[10] : ""); //收款账号
record.setPayFee(StringUtils.isNotEmpty(str[11]) ? BigDecimal.valueOf(Double.valueOf(str[11])*100) : null); //应收
record.setActualFee(StringUtils.isNotEmpty(str[12]) ? BigDecimal.valueOf(Double.valueOf(str[12])*100) : null);//实收
record.setServeFee(StringUtils.isNotEmpty(str[22]) ? BigDecimal.valueOf(Double.valueOf(str[22])*100) : null);//服务费
record.setProfitFee(StringUtils.isNotEmpty(str[23]) ? BigDecimal.valueOf(Double.valueOf(str[23])*100) : null);//分润
record.setDataState(DataStatusEnum.DATA_STATUS_VALID.value()); //数据有效
Date beginTime = DateUtil.getTimestamp(DateUtil.getDateString(format.parse(str[4]), DateUtil.DATE_FORMAT));
Date endTime = DateUtil.getTimestamp(DateUtil.getDateString(DateUtil.getOffsetDaysDate(format.parse(str[4]), 1), DateUtil.DATE_FORMAT));
record.setBillBeginTime(beginTime); //账期开始时间
record.setBillEndTime(endTime); //账期结束时间
record.setRemark(StringUtils.isNotEmpty(str[24]) ? str[24] : ""); //备注
record.setCreateDate(new Date()); //创建时间
//record.setPayAccount(tdBPayOrder.getPayAccount()); //支付账号
record.setPayChannel(Integer.valueOf(PayOrderEnum.PAY_TYPE_ZFB.getValue()));
payBlncacList.add(record);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return payBlncacList;
}
/**
* 删除要插入支付单日账期是要插入的日期的数据
* @param csvList
* @return
*/
private Integer delPayBlncacByBeginDate(List csvList) {
Date beginTime = null;
/**先删除要插入支付单日账期是要插入的日期的数据*/
for(String[] str:csvList){
if(ArrayUtil.isNotEmpty(str)){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
beginTime =format.parse(str[4]);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
TdBPayBlncac tdBPayBlncac = new TdBPayBlncac();
tdBPayBlncac.setBillBeginTime(beginTime);
tdBPayBlncac.setPayChannel(Integer.valueOf(PayOrderEnum.PAY_TYPE_ZFB.getValue()));
return tdBPayBlncacSMapper.delPayBlncacByBeginDate(tdBPayBlncac);
}
}