TVoucherEntry entry1;
TVoucherEntry entry2;
if (voucherTemp.getTransamt() >= 0) {
- entry1 = new TVoucherEntry(voucher.getVoucherid(), 1, voucherTemp.getDrsubjno(), voucherTemp.getDraccno(), Math.abs(voucherTemp.getTransamt()), 0D, voucherTemp.getSummary(), voucherTemp.getCrsubjno(), voucherTemp.getCraccno());
- entry2 = new TVoucherEntry(voucher.getVoucherid(), 2, voucherTemp.getCrsubjno(), voucherTemp.getCraccno(), 0D, Math.abs(voucherTemp.getTransamt()), voucherTemp.getSummary(), voucherTemp.getDrsubjno(), voucherTemp.getDraccno());
+ entry1 = new TVoucherEntry(voucher.getVoucherid(), 1, voucherTemp.getDrsubjno(), null, Math.abs(voucherTemp.getTransamt()), 0D, voucherTemp.getSummary(), voucherTemp.getCrsubjno(), null);
+ entry2 = new TVoucherEntry(voucher.getVoucherid(), 2, voucherTemp.getCrsubjno(), null, 0D, Math.abs(voucherTemp.getTransamt()), voucherTemp.getSummary(), voucherTemp.getDrsubjno(), null);
} else {
- entry1 = new TVoucherEntry(voucher.getVoucherid(), 1, voucherTemp.getCrsubjno(), voucherTemp.getCraccno(), 0D, Math.abs(voucherTemp.getTransamt()), voucherTemp.getSummary(), voucherTemp.getDrsubjno(), voucherTemp.getDraccno());
- entry2 = new TVoucherEntry(voucher.getVoucherid(), 2, voucherTemp.getDrsubjno(), voucherTemp.getDraccno(), Math.abs(voucherTemp.getTransamt()), 0D, voucherTemp.getSummary(), voucherTemp.getCrsubjno(), voucherTemp.getCraccno());
+ entry1 = new TVoucherEntry(voucher.getVoucherid(), 1, voucherTemp.getCrsubjno(), null, 0D, Math.abs(voucherTemp.getTransamt()), voucherTemp.getSummary(), voucherTemp.getDrsubjno(), null);
+ entry2 = new TVoucherEntry(voucher.getVoucherid(), 2, voucherTemp.getDrsubjno(), null, Math.abs(voucherTemp.getTransamt()), 0D, voucherTemp.getSummary(), voucherTemp.getCrsubjno(), null);
}
voucherEntryDao.save(entry1);
voucherEntryDao.save(entry2);
}
}
- //新增商户插入商户余额表
- List<AccnoBean> newShopaccList = shopaccDao.getNewShopacc();
- if (!StringUtil.isEmpty(newShopaccList)) {
- for (AccnoBean bean : newShopaccList) {
- TShopaccbal shopaccbal = new TShopaccbal(bean.getAccno());
- shopaccbalDao.save(shopaccbal);
- }
- }
- if (shopaccDao.checkSettleShopacc().getExisted() > 0) {
- throw new Exception("初始化数据错误:商户余额表数据没有包含所有有效的商户账户余额");
- }
+// //新增商户插入商户余额表
+// List<String> newShopaccList = shopaccDao.getNewShopacc();
+// if (!StringUtil.isEmpty(newShopaccList)) {
+// for (String accno : newShopaccList) {
+// TShopaccbal shopaccbal = new TShopaccbal(accno);
+// shopaccbalDao.save(shopaccbal);
+// }
+// }
+// if (shopaccDao.checkSettleShopacc().getExisted() > 0) {
+// throw new Exception("初始化数据错误:商户余额表数据没有包含所有有效的商户账户余额");
+// }
//新增科目插入科目余额表(末级科目)
- List<AccnoBean> newEndsubjectList = subjectDao.getNewSubject();
+ List<String> newEndsubjectList = subjectDao.getNewSubject();
if (!StringUtil.isEmpty(newEndsubjectList)) {
- for (AccnoBean bean : newEndsubjectList) {
- TSubjectbal subjectbal = new TSubjectbal(bean.getAccno());
+ for (String subjno : newEndsubjectList) {
+ TSubjectbal subjectbal = new TSubjectbal(subjno);
subjectbalDao.save(subjectbal);
}
}
voucherDao.deleteUnpostVoucher();
}
- //充值凭证
-// List<VoucherTemp> dpsList = dpsdtlDao.getVoucherData(String.valueOf(settledate));
-// if (!StringUtil.isEmpty(dpsList)) {
-// for (VoucherTemp dps : dpsList) {
-// saveVoucher(dps);
-// }
-// }
-//
-// List<VoucherTemp> dpsfeeList = dpsdtlDao.getFeeVoucherData(String.valueOf(settledate));
-// if (!StringUtil.isEmpty(dpsfeeList)) {
-// for (VoucherTemp dpsfee : dpsfeeList) {
-// saveVoucher(dpsfee);
-// }
-// }
-//
-// //消费凭证
-// List<VoucherTemp> payList = transdtlDao.getFeeVoucherData(String.valueOf(settledate));
-// if (!StringUtil.isEmpty(payList)) {
-// for (VoucherTemp pay : payList) {
-// saveVoucher(pay);
-// }
-// }
-//
-// List<VoucherTemp> payfeeList = transdtlDao.getFeeVoucherData(String.valueOf(settledate));
-// if (!StringUtil.isEmpty(payfeeList)) {
-// for (VoucherTemp payfee : payfeeList) {
-// saveVoucher(payfee);
-// }
-// }
-
//用户交易凭证
List<VoucherTemp> userList = debitCreditDtlDao.getVoucherData(String.valueOf(settledate));
if (!StringUtil.isEmpty(userList)) {
vouchernoCtlDao.save(vouchernoCtl);
}
- Map<String, Double> v_merchbaldict = new HashMap<String, Double>(0);
- //根据商户昨天日结表生成当天日结表(交易前余额), 新增商户添加记录(交易前余额为商户余额)
- List<TShopaccday> lastShopaccdays = shopaccdayDao.getShopaccdayByAccdate(String.valueOf(lastsettday));
- if (!StringUtil.isEmpty(lastShopaccdays)) {
- for (TShopaccday lastday : lastShopaccdays) {
- TShopaccday today = new TShopaccday(String.valueOf(settledate), lastday.getShopaccno(), periodYear, periodMonth, lastday.getBalance(), 0D, 0D, 0D);
- shopaccdayDao.save(today);
- v_merchbaldict.put(lastday.getShopaccno(), lastday.getBalance());
- }
- }
- List<TShopaccbal> newShopbals = shopaccbalDao.getUnsettleShopacc(String.valueOf(lastsettday));
- if (!StringUtil.isEmpty(newShopbals)) {
- for (TShopaccbal newShopbal : newShopbals) {
- TShopaccday today = new TShopaccday(String.valueOf(settledate), newShopbal.getShopaccno(), periodYear, periodMonth, newShopbal.getBeginbal(), 0D, 0D, 0D);
- shopaccdayDao.save(today);
- v_merchbaldict.put(newShopbal.getShopaccno(), newShopbal.getBeginbal());
- }
- }
- List<MerchBean> merchBeanList = voucherDao.getShopVoucherByAccdate(settledate);
- if (!StringUtil.isEmpty(merchBeanList)) {
- for (MerchBean merch : merchBeanList) {
- TShopaccday merchday = shopaccdayDao.getTShopaccdayById(String.valueOf(settledate), merch.getShopaccno());
- if (null == merchday) {
- throw new Exception("商户余额表无此商户账号[" + merch.getShopaccno() + "]");
- }
- merchday.setDramt(merch.getDramt() == null ? 0D : merch.getDramt());
- merchday.setCramt(merch.getCramt() == null ? 0D : merch.getCramt());
- shopaccdayDao.save(merchday);
- }
- }
- shopaccdayDao.updateShopaccdayBalance(String.valueOf(settledate), systemUtilService.getSysdatetime().getHostdatetime()); //批量更新余额,商户日结表生成
+// Map<String, Double> v_merchbaldict = new HashMap<String, Double>(0);
+// //根据商户昨天日结表生成当天日结表(交易前余额), 新增商户添加记录(交易前余额为商户余额)
+// List<TShopaccday> lastShopaccdays = shopaccdayDao.getShopaccdayByAccdate(String.valueOf(lastsettday));
+// if (!StringUtil.isEmpty(lastShopaccdays)) {
+// for (TShopaccday lastday : lastShopaccdays) {
+// TShopaccday today = new TShopaccday(String.valueOf(settledate), lastday.getShopaccno(), periodYear, periodMonth, lastday.getBalance(), 0D, 0D, 0D);
+// shopaccdayDao.save(today);
+// v_merchbaldict.put(lastday.getShopaccno(), lastday.getBalance());
+// }
+// }
+// List<TShopaccbal> newShopbals = shopaccbalDao.getUnsettleShopacc(String.valueOf(lastsettday));
+// if (!StringUtil.isEmpty(newShopbals)) {
+// for (TShopaccbal newShopbal : newShopbals) {
+// TShopaccday today = new TShopaccday(String.valueOf(settledate), newShopbal.getShopaccno(), periodYear, periodMonth, newShopbal.getBeginbal(), 0D, 0D, 0D);
+// shopaccdayDao.save(today);
+// v_merchbaldict.put(newShopbal.getShopaccno(), newShopbal.getBeginbal());
+// }
+// }
+// List<MerchBean> merchBeanList = voucherDao.getShopVoucherByAccdate(settledate);
+// if (!StringUtil.isEmpty(merchBeanList)) {
+// for (MerchBean merch : merchBeanList) {
+// TShopaccday merchday = shopaccdayDao.getTShopaccdayById(String.valueOf(settledate), merch.getShopaccno());
+// if (null == merchday) {
+// throw new Exception("商户余额表无此商户账号[" + merch.getShopaccno() + "]");
+// }
+// merchday.setDramt(merch.getDramt() == null ? 0D : merch.getDramt());
+// merchday.setCramt(merch.getCramt() == null ? 0D : merch.getCramt());
+// shopaccdayDao.save(merchday);
+// }
+// }
+// shopaccdayDao.updateShopaccdayBalance(String.valueOf(settledate), systemUtilService.getSysdatetime().getHostdatetime()); //批量更新余额,商户日结表生成
//根据科目昨天日结表生成当天日结表(交易前借贷方余额),新增末级科目插入记录(交易前余额为科目贷方余额)
List<TSubjectday> lastSubjectDays = subjectdayDao.getAllByAccdate(String.valueOf(lastsettday));
subjectdayDao.save(today);
}
}
- List<AccnoBean> newFSubjnos = subjectDao.getNewSubjnos(String.valueOf(settledate)); //新增非末级科目
+ List<String> newFSubjnos = subjectDao.getNewSubjnos(String.valueOf(settledate)); //新增非末级科目
if (!StringUtil.isEmpty(newFSubjnos)) {
- for (AccnoBean bean : newFSubjnos) {
+ for (String subjno : newFSubjnos) {
double beginDrbal = 0;
double beginCrbal = 0;
- MerchBean balInfo = subjectbalDao.getSubjectInfo(bean.getAccno()); //统计下级所有科目的交易前余额
+ MerchBean balInfo = subjectbalDao.getSubjectInfo(subjno); //统计下级所有科目的交易前余额
if (null != balInfo) {
beginDrbal = (balInfo.getDramt() == null ? 0 : balInfo.getDramt().doubleValue());
beginCrbal = (balInfo.getCramt() == null ? 0 : balInfo.getCramt().doubleValue());
}
- TSubjectday today = new TSubjectday(String.valueOf(settledate), bean.getAccno(), periodYear, periodMonth, beginDrbal, beginCrbal, 0D, 0D, 0D, 0D);
+ TSubjectday today = new TSubjectday(String.valueOf(settledate), subjno, periodYear, periodMonth, beginDrbal, beginCrbal, 0D, 0D, 0D, 0D);
subjectdayDao.save(today);
}
}
List<TVoucherEntry> entryList = voucherEntryDao.getVoucherEntryByVoucherdate(settledate);
if (!StringUtil.isEmpty(entryList)) {
for (TVoucherEntry vce : entryList) {
- if (TradeDict.SUBJNO_SHOP.equals(vce.getSubjno())) {
- //商户科目
- Double befbal = v_merchbaldict.get(vce.getAccno());
- if (null == befbal) throw new Exception("商户表商户账号[" + vce.getAccno() + "]不存在");
- v_merchbaldict.put(vce.getAccno(), MoneyUtil.formatYuan(befbal + vce.getCramt() - vce.getDramt())); //更新余额
- vce.setBalflag(2);
- vce.setBalance(v_merchbaldict.get(vce.getAccno()));
- if (!StringUtil.isEmpty(vce.getOppaccno())) {
- vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()).getAccname());
- } else {
- vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()).getAccname());
- }
- voucherEntryDao.save(vce);
- Double befMerchbal = v_subjbaldict.get(vce.getSubjno());
- if (null == befMerchbal) throw new Exception("商户科目号[" + vce.getSubjno() + "]不存在");
- v_subjbaldict.put(vce.getSubjno(), MoneyUtil.formatYuan(befMerchbal - vce.getDramt() + vce.getCramt())); //商户科目总余额更新
- } else {
+// if (TradeDict.SUBJNO_SHOP.equals(vce.getSubjno())) {
+// //商户科目
+// Double befbal = v_merchbaldict.get(vce.getAccno());
+// if (null == befbal) throw new Exception("商户表商户账号[" + vce.getAccno() + "]不存在");
+// v_merchbaldict.put(vce.getAccno(), MoneyUtil.formatYuan(befbal + vce.getCramt() - vce.getDramt())); //更新余额
+// vce.setBalflag(2);
+// vce.setBalance(v_merchbaldict.get(vce.getAccno()));
+// if (!StringUtil.isEmpty(vce.getOppaccno())) {
+// vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()).getAccname());
+// } else {
+// vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()).getAccname());
+// }
+// voucherEntryDao.save(vce);
+// Double befMerchbal = v_subjbaldict.get(vce.getSubjno());
+// if (null == befMerchbal) throw new Exception("商户科目号[" + vce.getSubjno() + "]不存在");
+// v_subjbaldict.put(vce.getSubjno(), MoneyUtil.formatYuan(befMerchbal - vce.getDramt() + vce.getCramt())); //商户科目总余额更新
+// } else {
//其他科目
Integer balflag = v_subjbalflagdict.get(vce.getSubjno());
Double befbal = v_subjbaldict.get(vce.getSubjno());
}
vce.setBalflag(balflag);
vce.setBalance(v_subjbaldict.get(vce.getSubjno()));
- if (!StringUtil.isEmpty(vce.getOppaccno())) {
- vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()).getAccname());
- } else {
- vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()).getAccname());
- }
+// if (!StringUtil.isEmpty(vce.getOppaccno())) {
+// vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()).getAccname());
+// } else {
+ vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()));
+// }
voucherEntryDao.save(vce);
- }
+// }
}
}
//开始校验
- //核算商户日结表商户余额 和凭证明细余额是否一致
- for (String shopaccno : v_merchbaldict.keySet()) {
- TShopaccday tShopaccday = shopaccdayDao.getTShopaccdayById(String.valueOf(settledate), shopaccno);
- if (!MoneyUtil.moneyEqual(v_merchbaldict.get(shopaccno), tShopaccday.getBalance())) {
- throw new Exception("结算后检查失败:商户余额不等,商户余额[" + tShopaccday.getBalance() + "]凭证商户余额[" + v_merchbaldict.get(shopaccno) + "]");
- }
- TShopaccbal tShopaccbal = shopaccbalDao.getOne(shopaccno);
- tShopaccbal.setBalance(tShopaccday.getBalance());
- tShopaccbal.setUpdtime(systemUtilService.getSysdatetime().getHostdatetime());
- shopaccbalDao.save(tShopaccbal);
- }
+ //核算商户日结表商户余额 和凭证明细余额是否一致 TODO(新商户收入校验逻辑)
+// for (String shopaccno : v_merchbaldict.keySet()) {
+// TShopaccday tShopaccday = shopaccdayDao.getTShopaccdayById(String.valueOf(settledate), shopaccno);
+// if (!MoneyUtil.moneyEqual(v_merchbaldict.get(shopaccno), tShopaccday.getBalance())) {
+// throw new Exception("结算后检查失败:商户余额不等,商户余额[" + tShopaccday.getBalance() + "]凭证商户余额[" + v_merchbaldict.get(shopaccno) + "]");
+// }
+// TShopaccbal tShopaccbal = shopaccbalDao.getOne(shopaccno);
+// tShopaccbal.setBalance(tShopaccday.getBalance());
+// tShopaccbal.setUpdtime(systemUtilService.getSysdatetime().getHostdatetime());
+// shopaccbalDao.save(tShopaccbal);
+// }
+
//核算科目日结表科目余额和凭证明细余额是否一致
for (String subjno : v_subjbaldict.keySet()) {
TSubjectday tSubjectday = subjectdayDao.getSubjectDayById(String.valueOf(settledate), subjno);
tSubjectbal.setUpdtime(systemUtilService.getSysdatetime().getHostdatetime());
subjectbalDao.save(tSubjectbal);
}
+
//核对商户日结表余额表和科目日结表商户余额是否一致
- TSubjectday shopSubjectday = subjectdayDao.getSubjectDayById(String.valueOf(settledate), TradeDict.SUBJNO_SHOP);
- AmountBean merchbal = shopaccdayDao.getSumBalance(String.valueOf(settledate));
- double shopSubbal = (shopSubjectday == null ? 0 : shopSubjectday.getCrbal());
- double shopMerchbal = ((null == merchbal || null == merchbal.getAmount()) ? 0 : merchbal.getAmount());
- if (!MoneyUtil.moneyEqual(shopSubbal, shopMerchbal)) {
- throw new Exception("结算后检查失败:商户日结表和科目日结表期末余额不平衡,商户[" + shopMerchbal + "] 科目[" + shopSubbal + "]");
- }
+// TSubjectday shopSubjectday = subjectdayDao.getSubjectDayById(String.valueOf(settledate), TradeDict.SUBJNO_SHOP);
+// AmountBean merchbal = shopaccdayDao.getSumBalance(String.valueOf(settledate));
+// double shopSubbal = (shopSubjectday == null ? 0 : shopSubjectday.getCrbal());
+// double shopMerchbal = ((null == merchbal || null == merchbal.getAmount()) ? 0 : merchbal.getAmount());
+// if (!MoneyUtil.moneyEqual(shopSubbal, shopMerchbal)) {
+// throw new Exception("结算后检查失败:商户日结表和科目日结表期末余额不平衡,商户[" + shopMerchbal + "] 科目[" + shopSubbal + "]");
+// }
+
//核算一级科目余额是否平衡
FSubjectInfoBean allParentSubjbal = subjectdayDao.getAllParentSubjectSumInfo(String.valueOf(settledate));
if (!MoneyUtil.moneyEqual(allParentSubjbal.getBegindrbal(), allParentSubjbal.getBegincrbal())) {
throw new Exception("结算后检查失败:一级科目余额表期末额不平衡,借方[" + allParentSubjbal.getDrbal() + "]贷方[" + allParentSubjbal.getCrbal() + "]");
}
//校验科目余额表的balflag=1的总期末余额和balflag=2的总期末余额是否一致
- AmountBean balflag_1_sumbal = subjectbalDao.getSumEndsubjectBalByEndflag(1);
- AmountBean balflag_2_sumbal = subjectbalDao.getSumEndsubjectBalByEndflag(2);
+ Double balflag_1_sumbal = subjectbalDao.getSumEndsubjectBalByEndflag(1);
+ Double balflag_2_sumbal = subjectbalDao.getSumEndsubjectBalByEndflag(2);
if (null == balflag_1_sumbal || null == balflag_1_sumbal) throw new Exception("结算后检查失败:科目余额表无数据");
- if (!MoneyUtil.moneyEqual(balflag_1_sumbal.getAmount(), balflag_2_sumbal.getAmount())) {
- throw new Exception("结算后检查失败:科目余额表期末余额不平衡,借方[" + balflag_1_sumbal.getAmount() + "],贷方[" + balflag_2_sumbal.getAmount() + "]");
+ if (!MoneyUtil.moneyEqual(balflag_1_sumbal, balflag_2_sumbal)) {
+ throw new Exception("结算后检查失败:科目余额表期末余额不平衡,借方[" + balflag_1_sumbal + "],贷方[" + balflag_2_sumbal + "]");
}
//TODO: 校验 账户余额汇总值和科目日结表值是否一致
// int prdmonth = settlectl.getPeriodMonth();
int settday = settlectl.getSettledate();
- List<AccnoBean> newShopList = shopaccDao.getNewAddShopacc(String.valueOf(settday));
+ List<String> newShopList = shopaccDao.getNewAddShopacc(String.valueOf(settday));
if (!StringUtil.isEmpty(newShopList)) {
- for (AccnoBean accno : newShopList) {
- TShopaccbal shopBal = new TShopaccbal(accno.getAccno());
+ for (String accno : newShopList) {
+ TShopaccbal shopBal = new TShopaccbal(accno);
shopaccbalDao.save(shopBal);
}
}
}
//新增科目插入科目余额表(末级科目)
- List<AccnoBean> newEndsubjectList = subjectDao.getNewSubject();
+ List<String> newEndsubjectList = subjectDao.getNewSubject();
if (!StringUtil.isEmpty(newEndsubjectList)) {
- for (AccnoBean bean : newEndsubjectList) {
- TSubjectbal subjectbal = new TSubjectbal(bean.getAccno());
+ for (String subjno : newEndsubjectList) {
+ TSubjectbal subjectbal = new TSubjectbal(subjno);
subjectbalDao.save(subjectbal);
}
}
}
if (!StringUtil.isEmpty(entry.getOppaccno())) {
- entry.setOppname(shopaccDao.getShopname(entry.getOppaccno()).getAccname());
+ entry.setOppname(shopaccDao.getShopname(entry.getOppaccno()));
} else {
- entry.setOppname(subjectDao.getSubjectname(entry.getOppsubjno()).getAccname());
+ entry.setOppname(subjectDao.getSubjectname(entry.getOppsubjno()));
}
voucherEntryDao.save(entry);
}
return true;
}
+
}