//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; ///** // * 支付宝/微信 对账定时任务.
// * // * 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 执行对账结果.
// */ // @Override // public ReturnT 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; // } // // /** // * 开始对账.
// * 步骤: // * 1.插入下载账单 left join 支付单信息数据(不卡支付单支付完成状态).
// * 3.插入支付单中下载账单中不存在的支付单信息.
// * 4.更新停车场/车牌号/泊位区间等信息.
// * 5.金额想减 对账.
// */ // 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.查询指定时间对账单结果信息.
// * 2.对账(金额相减法) // * @param billTime // */ // private void beginBillReconciliation(String billTime){ // //对账结果list // List listReult = new ArrayList(); // List list = new ArrayList(); // 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(); // } // } // /** // * 更新支付单对账状态.
// */ // private void updatePayOrderBlncacDiff(){ // this.logger("开始更新支付单对账状态,对账时间..."); // int updateCount = TdBPayBlncacDiffDao.updatePayOrderBlncacDiff(); // this.logger("end更新支付单对账状态,对账时间...,结果(成功更新)="+updateCount); // // } // // private void logger(String msg){ // XxlJobHelper.log(msg); // logger.info(msg); // } // //}