BillReconciliationJob.java 8.25 KB
//package com.zteits.pay.job;
//
//import java.math.BigDecimal;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.util.CollectionUtils;
//
//import com.clouds.common.utils.DateUtil;
//import com.xxl.job.core.biz.model.ReturnT;
//
////import com.xxl.job.core.context.XxlJobHelper;
//import com.zteits.pay.dao.TdBPayBlncacDiffDao;
//import com.zteits.pay.domain.TdBPayBlncacDiff;
///**
// * 支付宝/微信 对账定时任务.<br/>
// *
// * Copyright: Copyright (c) 2017  zteits
// *
// * @ClassName: CloudsParkDurationJob.java
// * @Description:
// * @version: v1.0.0
// * @author: wangfs
// * @date: 2017年10月13日   下午4:32:48
// * Modification History:
// * Date             Author          Version            Description
// *---------------------------------------------------------*
// * 2017年10月13日      wangfs           v1.0.0               创建
// */
//@XxlJob(value="BillReconciliationJob")
//@Component
//public class BillReconciliationJob {
//
//	private static final Logger logger = LoggerFactory.getLogger(BillReconciliationJob.class);
//
//	@Autowired
//	private TdBPayBlncacDiffDao TdBPayBlncacDiffDao;
//
//	/**
//	 * 每天 11:00 执行对账结果.<br/>
//	 */
//	@Override
//	public ReturnT<String> execute(String... params) throws Exception {
//	String param = XxlJobHelper.getJobParam();
//	if (StringUtils.isNotEmpty(param) && params == null) {
//		params = param.split(",");
//	}
//

//		try{
//			this.beginAccounts();
//		}catch (Exception e) {
//			if (e instanceof InterruptedException) {
//    	        throw e;
//    	    }
//    	    logger.warn("{}", e);
//    	    return ReturnT.FAIL;
//		}
//		return ReturnT.SUCCESS;
//	}
//
//	 /**
//	  * 开始对账.<br/>
//	  * 步骤:
//	  *  1.插入下载账单 left join 支付单信息数据(不卡支付单支付完成状态).<br/>
//	  *  3.插入支付单中下载账单中不存在的支付单信息.<br/>
//	  *  4.更新停车场/车牌号/泊位区间等信息.<br/>
//	  *  5.金额想减 对账.<br/>
//	  */
//	 private void beginAccounts(){
//		 String yesterday = DateUtil.getDateString(DateUtil.getOffsetDaysDate(new Date(), -1), DateUtil.DATE_FORMAT);
//		 this.logger("begin对账,对账账期="+yesterday+"...");
//		 //1.删除昨天帐期数据
//		 this.logger("开始删除昨天对账差异表数据...");
//		 int deleteCount = TdBPayBlncacDiffDao.deleteByBillTime(yesterday);
//		 this.logger("结束删除昨天对账差异表数据...结果(成果删除)="+deleteCount+"条。");
//		 //2.插入下载账单 left join 支付单信息数据(不卡支付单支付完成状态)
//		 this.logger("开始插入下载账单数据...");
//		 int intsetBillCount = TdBPayBlncacDiffDao.insertBillPayOrder(yesterday);
//		 this.logger("结果插入下载账单数据...结果(成功插入)="+intsetBillCount+"条。");
//		 //3.插入支付单中下载账单不存在的支付单信息
//		 this.logger("开始插入支付单中下载账单不存在的支付单信息...");
//		 int intsetBillNotExistCount = TdBPayBlncacDiffDao.insertPayOrderNotExitsInBill(yesterday);
//		 this.logger("结果插入支付单中下载账单不存在的支付单信息...结果(成功插入)="+intsetBillNotExistCount+"条。");
//
//		 //4.更新停车场/车牌号
//		 this.logger("开始更新停车场/车牌号等信息...");
//		 int updateCount = TdBPayBlncacDiffDao.updateTdBPayBlncacDiff(yesterday);
//		 this.logger("结果更新停车场/车牌号等信息...结果(成功更新)="+updateCount+"条。");
//		//4.1.更新停车场/车牌号/泊位区间等信息
//		 this.logger("开始更新泊位区间等信息...");
//		 int updateCountAreaPark = TdBPayBlncacDiffDao.updateTdBPayBlncacDiffForAreaPark(yesterday);
//		 this.logger("结果更新泊位区间等信息...结果(成功更新)="+updateCountAreaPark+"条。");
//		 /**5.对账.*/
//		 this.beginBillReconciliation(yesterday);
//		 this.logger("end对账,对账账期="+yesterday+"...");
//
//	 }
//	 /**
//	  * 开始对账
//	  * 步骤:
//	  *  1.查询指定时间对账单结果信息.<br/>
//	  *  2.对账(金额相减法)
//	  * @param billTime
//	  */
//	 private void beginBillReconciliation(String billTime){
//		 //对账结果list
//		 List<TdBPayBlncacDiff> listReult = new ArrayList<TdBPayBlncacDiff>();
//		 List<TdBPayBlncacDiff> list = new ArrayList<TdBPayBlncacDiff>();
//		 this.logger("开始查询"+billTime+"对账差异表信息");
//		 list =  TdBPayBlncacDiffDao.queryPayBlncacDifForList(billTime);
//		 this.logger("结果查询"+billTime+"对账差异表信息,结果(list.size)="+list.size());
//		 if(!CollectionUtils.isEmpty(list)){
//			 for(TdBPayBlncacDiff str:list){
//				 TdBPayBlncacDiff resultBlncacDiff = new TdBPayBlncacDiff();
//				 if(str != null){
//					 int diffFee= str.getBlncacActFee().subtract(str.getOrderPayedFee()).intValue();
//					 /** 差异费用=账文件记录费用 - 订单已付费用(单位:分). */
//					 //this.logger("记录ID="+str.getId()+" 账文件记录费用="+str.getBlncacActFee().toString()+" 订单已付费用="+str.getOrderPayedFee()+" 差异费用="+diffFee);
//					 /** 对账差异类型:0-无差异 1-金额差异(两侧都有但金额不同) 2-掉单(支付机构侧有,我侧没有) 3-多单(支付机构侧没有,我侧有). */
//
//					 if(0 == diffFee){
//						 resultBlncacDiff.setBlncacDiffType(0); //0-无差异
//						 resultBlncacDiff.setQeualType(1); // 平账类型 0:未平账 1:已平账.
//						 resultBlncacDiff.setBillRemarks("账文件记录费用-订单已付费用="+diffFee+"对账结果=已平账");
//					 }else{
//						 if(0 == str.getBlncacActFee().intValue() && 0 != str.getOrderPayedFee().intValue()){
//							 resultBlncacDiff.setBlncacDiffType(3); //3-多单(支付机构侧没有,我侧有)
//							 resultBlncacDiff.setQeualType(0); // 平账类型 0:未平账 1:已平账.
//							 resultBlncacDiff.setBillRemarks("账文件记录费用-订单已付费用="+diffFee+"对账结果=3多单(支付机构侧没有,我侧有)");
//						 }
//						 if(0 != str.getBlncacActFee().intValue() && 0== str.getOrderPayedFee().intValue()){
//							 resultBlncacDiff.setBlncacDiffType(2); //2-掉单(支付机构侧有,我侧没有)
//							 resultBlncacDiff.setQeualType(0); // 平账类型 0:未平账 1:已平账.
//							 resultBlncacDiff.setBillRemarks("账文件记录费用-订单已付费用="+diffFee+"对账结果=2掉单(支付机构侧有,我侧没有");
//
//						 }
//						 if(str.getBlncacActFee().intValue() > 0 && str.getOrderPayedFee().intValue() >0 && 0 != diffFee){
//							 resultBlncacDiff.setBlncacDiffType(1); //1-金额差异(两侧都有但金额不同)
//							 resultBlncacDiff.setQeualType(0); // 平账类型 0:未平账 1:已平账.
//							 resultBlncacDiff.setBillRemarks("账文件记录费用-订单已付费用="+diffFee+"对账结果=1金额差异(两侧都有但金额不同)");
//						 }
//					 }
//					 resultBlncacDiff.setId(str.getId());
//					 resultBlncacDiff.setDiffFee(new BigDecimal(diffFee));
//					 resultBlncacDiff.setModfiyDate(new Date());
//					 listReult.add(resultBlncacDiff);
//
//				 }
//			 }
//		 }else{
//			 this.logger("没有查询到"+billTime+"对账差异表信息");
//		 }
//
//		 if(!CollectionUtils.isEmpty(listReult)){
//			 //更新对账结果
//			 this.logger("开始更新对账结果到对账差异表");
//			 int updateCount = TdBPayBlncacDiffDao.updateBillReconciliationById(listReult);
//			 this.logger("结束更新对账结果到对账差异表,结果(更新条数)="+updateCount+"条。");
//			 /**更新支付单对账状态.*/
//			 this.updatePayOrderBlncacDiff();
//		 }
//	 }
//	 /**
//	  * 更新支付单对账状态.<br/>
//	  */
//	 private  void updatePayOrderBlncacDiff(){
//		 this.logger("开始更新支付单对账状态,对账时间...");
//		 int updateCount = TdBPayBlncacDiffDao.updatePayOrderBlncacDiff();
//		 this.logger("end更新支付单对账状态,对账时间...,结果(成功更新)="+updateCount);
//
//	 }
//
//	private void logger(String msg){
//		XxlJobHelper.log(msg);
//		logger.info(msg);
//	}
//
//}