+++ /dev/null
-package com.supwisdom.dlpay.framework.domain;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "TB_SHOPACCBAL")
-public class TShopaccbal {
- @Id
- @Column(name="SHOPACCNO", length = 10)
- private String shopaccno;
-
- @Column(name="ACCUMDRAMT", precision = 15, scale = 2)
- private Double accumdramt;
-
- @Column(name="ACCUMCRAMT", precision = 15, scale = 2)
- private Double accumcramt;
-
- @Column(name="BEGINBAL", precision = 15, scale = 2)
- private Double beginbal;
-
- @Column(name="DRAMT", precision = 15, scale = 2)
- private Double dramt;
-
- @Column(name="CRAMT", precision = 15, scale = 2)
- private Double cramt;
-
- @Column(name="BALANCE", precision = 15, scale = 2)
- private Double balance;
-
- @Column(name="UPDTIME", precision = 15, scale = 2)
- private String updtime;
-
- @Column(name="LASTSETTLEDAY", length = 8)
- private String lastsettleday;
-
- @Column(name="SETTLETOTALAMT", precision = 15, scale = 2)
- private Double settletotalamt;
-
- public TShopaccbal() {
- }
-
- public TShopaccbal(String shopaccno) {
- this.shopaccno = shopaccno;
- this.accumdramt = 0D;
- this.accumcramt = 0D;
- this.beginbal = 0D;
- this.dramt = 0D;
- this.cramt = 0D;
- this.balance = 0D;
- }
-
- public TShopaccbal(String shopaccno, Double accumdramt, Double accumcramt, Double beginbal, Double dramt, Double cramt, Double balance, String updtime, String lastsettleday, Double settletotalamt) {
- this.shopaccno = shopaccno;
- this.accumdramt = accumdramt;
- this.accumcramt = accumcramt;
- this.beginbal = beginbal;
- this.dramt = dramt;
- this.cramt = cramt;
- this.balance = balance;
- this.updtime = updtime;
- this.lastsettleday = lastsettleday;
- this.settletotalamt = settletotalamt;
- }
-
- public String getShopaccno() {
- return shopaccno;
- }
-
- public void setShopaccno(String shopaccno) {
- this.shopaccno = shopaccno;
- }
-
- public Double getAccumdramt() {
- return accumdramt;
- }
-
- public void setAccumdramt(Double accumdramt) {
- this.accumdramt = accumdramt;
- }
-
- public Double getAccumcramt() {
- return accumcramt;
- }
-
- public void setAccumcramt(Double accumcramt) {
- this.accumcramt = accumcramt;
- }
-
- public Double getBeginbal() {
- return beginbal;
- }
-
- public void setBeginbal(Double beginbal) {
- this.beginbal = beginbal;
- }
-
- public Double getDramt() {
- return dramt;
- }
-
- public void setDramt(Double dramt) {
- this.dramt = dramt;
- }
-
- public Double getCramt() {
- return cramt;
- }
-
- public void setCramt(Double cramt) {
- this.cramt = cramt;
- }
-
- public Double getBalance() {
- return balance;
- }
-
- public void setBalance(Double balance) {
- this.balance = balance;
- }
-
- public String getUpdtime() {
- return updtime;
- }
-
- public void setUpdtime(String updtime) {
- this.updtime = updtime;
- }
-
- public String getLastsettleday() {
- return lastsettleday;
- }
-
- public void setLastsettleday(String lastsettleday) {
- this.lastsettleday = lastsettleday;
- }
-
- public Double getSettletotalamt() {
- return settletotalamt;
- }
-
- public void setSettletotalamt(Double settletotalamt) {
- this.settletotalamt = settletotalamt;
- }
-}
@Autowired
private ShopaccDao shopaccDao;
@Autowired
- private ShopaccbalDao shopaccbalDao;
- @Autowired
private SubjectDao subjectDao;
@Autowired
private SubjectbalDao subjectbalDao;
TVoucherEntry entry1;
TVoucherEntry entry2;
if (voucherTemp.getTransamt() >= 0) {
- 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);
+ 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());
} else {
- 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);
+ entry1 = new TVoucherEntry(voucher.getVoucherid(), 1, voucherTemp.getDrsubjno(), voucherTemp.getDraccno(), 0D, Math.abs(voucherTemp.getTransamt()), voucherTemp.getSummary(), voucherTemp.getCrsubjno(), voucherTemp.getCraccno());
+ entry2 = new TVoucherEntry(voucher.getVoucherid(), 2, voucherTemp.getCrsubjno(), voucherTemp.getCraccno(), Math.abs(voucherTemp.getTransamt()), 0D, voucherTemp.getSummary(), voucherTemp.getDrsubjno(), voucherTemp.getDraccno());
}
voucherEntryDao.save(entry1);
voucherEntryDao.save(entry2);
}
}
-// //新增商户插入商户余额表
-// 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<String> newEndsubjectList = subjectDao.getNewSubject();
if (!StringUtil.isEmpty(newEndsubjectList)) {
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<String> newShopaccs = shopaccDao.getNewShopacc(String.valueOf(lastsettday)); //新增商户
+ if(!StringUtil.isEmpty(newShopaccs)){
+ for(String accno:newShopaccs){
+ TShopaccday today = new TShopaccday(String.valueOf(settledate), accno, periodYear, periodMonth, 0D, 0D, 0D, 0D);
+ shopaccdayDao.save(today);
+ v_merchbaldict.put(accno, 0D);
+ }
+ }
+
+ 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));
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 (Subject.SUBJNO_MACHANT_INCOME.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 (Subject.SUBJNO_MACHANT_INCOME.equals(vce.getOppsubjno())) {
+ vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()));
+ } else {
+ vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()));
+ }
+ 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 {
+ if (Subject.SUBJNO_MACHANT_INCOME.equals(vce.getOppsubjno())) {
+ vce.setOppname(shopaccDao.getShopname(vce.getOppaccno()));
+ } else {
vce.setOppname(subjectDao.getSubjectname(vce.getOppsubjno()));
-// }
+ }
voucherEntryDao.save(vce);
-// }
+ }
}
}
//开始校验
//核算商户日结表商户余额 和凭证明细余额是否一致 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) + "]");
-// }
+ 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("结算后检查失败:商户["+shopaccno+"]余额不等,商户日结余额[" + tShopaccday.getBalance() + "]凭证商户余额[" + v_merchbaldict.get(shopaccno) + "]");
+ }
// TShopaccbal tShopaccbal = shopaccbalDao.getOne(shopaccno);
// tShopaccbal.setBalance(tShopaccday.getBalance());
// tShopaccbal.setUpdtime(systemUtilService.getSysdatetime().getHostdatetime());
-// shopaccbalDao.save(tShopaccbal);
-// }
+// shopaccbalDao.save(tShopaccbal); //商户期末余额
+ }
//核算科目日结表科目余额和凭证明细余额是否一致
for (String subjno : v_subjbaldict.keySet()) {
}
//核对商户日结表余额表和科目日结表商户余额是否一致
-// 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), Subject.SUBJNO_MACHANT_INCOME);
+ Double merchbal = shopaccdayDao.getSumBalance(String.valueOf(settledate));
+ double shopSubbal = (shopSubjectday == null ? 0 : shopSubjectday.getCrbal());
+ double shopMerchbal = (merchbal == null ? 0 : merchbal);
+ if (!MoneyUtil.moneyEqual(shopSubbal, shopMerchbal)) {
+ throw new Exception("结算后检查失败:商户日结表和科目日结表期末余额不平衡,商户[" + shopMerchbal + "] 科目[" + shopSubbal + "]");
+ }
//核算一级科目余额是否平衡
FSubjectInfoBean allParentSubjbal = subjectdayDao.getAllParentSubjectSumInfo(String.valueOf(settledate));
//日切
tSettlectl.setStatus(0); //清标记
+ tSettlectl.setPeriodYear(periodYear);
+ tSettlectl.setPeriodMonth(periodMonth);
tSettlectl.setSettledate(Integer.valueOf(DateUtil.getNewDay(String.valueOf(settledate), 1)));
tSettlectl.setUpdtime(systemUtilService.getSysdatetime().getHostdatetime());
+ settleCtlDao.save(tSettlectl);
return true;
}
// int hostDate = Integer.valueOf(systemUtilService.getSysdatetime().getHostdatetime());
// int prdyear = settlectl.getPeriodYear();
// int prdmonth = settlectl.getPeriodMonth();
- int settday = settlectl.getSettledate();
-
- List<String> newShopList = shopaccDao.getNewAddShopacc(String.valueOf(settday));
- if (!StringUtil.isEmpty(newShopList)) {
- for (String accno : newShopList) {
- TShopaccbal shopBal = new TShopaccbal(accno);
- shopaccbalDao.save(shopBal);
- }
- }
- if (shopaccDao.checkSettleShopacc().getExisted() > 0) {
- throw new Exception("初始化数据错误:商户余额表数据没有包含所有有效的商户账户余额");
- }
-
- //新增科目插入科目余额表(末级科目)
- List<String> newEndsubjectList = subjectDao.getNewSubject();
- if (!StringUtil.isEmpty(newEndsubjectList)) {
- for (String subjno : newEndsubjectList) {
- TSubjectbal subjectbal = new TSubjectbal(subjno);
- subjectbalDao.save(subjectbal);
- }
- }
- if (subjectDao.checkSettleSubject().getExisted() > 0) {
- throw new Exception("初始化数据错误:科目余额表数据没有包含所有的科目余额");
- }
-
- TVoucher voucher = voucherDao.findByVoucheridWithLock(voucherid);
- List<TVoucherEntry> entryList = voucherEntryDao.getVoucherEntryByVoucherid(voucherid);
- if (null == voucher) {
- throw new Exception("凭证查询无记录");
- } else if ("auto".equals(voucher.getSourcetype())) {
- throw new Exception("该凭证不是手工录入凭证");
- } else if (voucher.getCheckflag() != 1) {
- throw new Exception("该凭证未审核");
- } else if (StringUtil.isEmpty(voucher.getSummary())) {
- throw new Exception("摘要不能为空");
- } else if (voucher.getPostflag() == 1) {
- throw new Exception("凭证已入账");
- }
-
- if (StringUtil.isEmpty(entryList)) {
- throw new Exception("凭证无借贷明细!");
- }
-
- //凭证号
- TVouchernoCtl vouchernoCtl = vouchernoCtlDao.getVoucherno();
- if (null == vouchernoCtl) {
- vouchernoCtl = new TVouchernoCtl(1, periodMonth, 0);
- vouchernoCtlDao.save(vouchernoCtl);
- }
- int voucherno = vouchernoCtl.getVoucherno() + 1;
- vouchernoCtl.setVoucherno(voucherno);
- vouchernoCtlDao.save(vouchernoCtl);
-
- voucher.setVoucherno(voucherno);
- voucher.setPostflag(1);
- voucherDao.save(voucher); //修改凭证表凭证号、入账标志
-
- //明细
- for (TVoucherEntry entry : entryList) {
- if (Subject.SUBJNO_MACHANT_INCOME.equals(entry.getSubjno())) {
- TShopaccbal tShopaccbal = shopaccbalDao.getTShopaccbalByIdWithLock(entry.getAccno());
- if (null == tShopaccbal) {
- throw new Exception("商户表商户账号[" + entry.getAccno() + "]不存在");
- }
- tShopaccbal.setBalance(tShopaccbal.getBeginbal() + entry.getCramt() - entry.getDramt());
- shopaccbalDao.save(tShopaccbal);
- entry.setBalflag(2);
- entry.setBalance(tShopaccbal.getBalance());
- } else {
- TSubjectbal tSubjectbal = subjectbalDao.getTSubjectbalBySubjnoWithLock(entry.getSubjno());
- TSubject subject = subjectDao.getOne(entry.getSubjno());
- if (null == tSubjectbal || null == subject) {
- throw new Exception("科目表科目号[" + entry.getSubjno() + "]不存在");
- } else if (subject.getEndflag() != 1) {
- throw new Exception("科目[" + entry.getSubjno() + "]非末级科目");
- }
- entry.setBalflag(subject.getBalflag());
- if (subject.getBalflag() == 1) {
- tSubjectbal.setDrbal(tSubjectbal.getDrbal() + entry.getDramt() - entry.getCramt());
- entry.setBalance(tSubjectbal.getDrbal());
- } else {
- tSubjectbal.setCrbal(tSubjectbal.getCrbal() - entry.getDramt() + entry.getCramt());
- entry.setBalance(tSubjectbal.getCrbal());
- }
- subjectbalDao.save(tSubjectbal);
- }
-
- if (!StringUtil.isEmpty(entry.getOppaccno())) {
- entry.setOppname(shopaccDao.getShopname(entry.getOppaccno()));
- } else {
- entry.setOppname(subjectDao.getSubjectname(entry.getOppsubjno()));
- }
- voucherEntryDao.save(entry);
- }
+// int settday = settlectl.getSettledate();
+//
+// List<String> newShopList = shopaccDao.getNewAddShopacc(String.valueOf(settday));
+// if (!StringUtil.isEmpty(newShopList)) {
+// for (String accno : newShopList) {
+// TShopaccbal shopBal = new TShopaccbal(accno);
+// shopaccbalDao.save(shopBal);
+// }
+// }
+// if (shopaccDao.checkSettleShopacc().getExisted() > 0) {
+// throw new Exception("初始化数据错误:商户余额表数据没有包含所有有效的商户账户余额");
+// }
+//
+// //新增科目插入科目余额表(末级科目)
+// List<String> newEndsubjectList = subjectDao.getNewSubject();
+// if (!StringUtil.isEmpty(newEndsubjectList)) {
+// for (String subjno : newEndsubjectList) {
+// TSubjectbal subjectbal = new TSubjectbal(subjno);
+// subjectbalDao.save(subjectbal);
+// }
+// }
+// if (subjectDao.checkSettleSubject().getExisted() > 0) {
+// throw new Exception("初始化数据错误:科目余额表数据没有包含所有的科目余额");
+// }
+//
+// TVoucher voucher = voucherDao.findByVoucheridWithLock(voucherid);
+// List<TVoucherEntry> entryList = voucherEntryDao.getVoucherEntryByVoucherid(voucherid);
+// if (null == voucher) {
+// throw new Exception("凭证查询无记录");
+// } else if ("auto".equals(voucher.getSourcetype())) {
+// throw new Exception("该凭证不是手工录入凭证");
+// } else if (voucher.getCheckflag() != 1) {
+// throw new Exception("该凭证未审核");
+// } else if (StringUtil.isEmpty(voucher.getSummary())) {
+// throw new Exception("摘要不能为空");
+// } else if (voucher.getPostflag() == 1) {
+// throw new Exception("凭证已入账");
+// }
+//
+// if (StringUtil.isEmpty(entryList)) {
+// throw new Exception("凭证无借贷明细!");
+// }
+//
+// //凭证号
+// TVouchernoCtl vouchernoCtl = vouchernoCtlDao.getVoucherno();
+// if (null == vouchernoCtl) {
+// vouchernoCtl = new TVouchernoCtl(1, periodMonth, 0);
+// vouchernoCtlDao.save(vouchernoCtl);
+// }
+// int voucherno = vouchernoCtl.getVoucherno() + 1;
+// vouchernoCtl.setVoucherno(voucherno);
+// vouchernoCtlDao.save(vouchernoCtl);
+//
+// voucher.setVoucherno(voucherno);
+// voucher.setPostflag(1);
+// voucherDao.save(voucher); //修改凭证表凭证号、入账标志
+//
+// //明细
+// for (TVoucherEntry entry : entryList) {
+// if (Subject.SUBJNO_MACHANT_INCOME.equals(entry.getSubjno())) {
+// TShopaccbal tShopaccbal = shopaccbalDao.getTShopaccbalByIdWithLock(entry.getAccno());
+// if (null == tShopaccbal) {
+// throw new Exception("商户表商户账号[" + entry.getAccno() + "]不存在");
+// }
+// tShopaccbal.setBalance(tShopaccbal.getBeginbal() + entry.getCramt() - entry.getDramt());
+// shopaccbalDao.save(tShopaccbal);
+// entry.setBalflag(2);
+// entry.setBalance(tShopaccbal.getBalance());
+// } else {
+// TSubjectbal tSubjectbal = subjectbalDao.getTSubjectbalBySubjnoWithLock(entry.getSubjno());
+// TSubject subject = subjectDao.getOne(entry.getSubjno());
+// if (null == tSubjectbal || null == subject) {
+// throw new Exception("科目表科目号[" + entry.getSubjno() + "]不存在");
+// } else if (subject.getEndflag() != 1) {
+// throw new Exception("科目[" + entry.getSubjno() + "]非末级科目");
+// }
+// entry.setBalflag(subject.getBalflag());
+// if (subject.getBalflag() == 1) {
+// tSubjectbal.setDrbal(tSubjectbal.getDrbal() + entry.getDramt() - entry.getCramt());
+// entry.setBalance(tSubjectbal.getDrbal());
+// } else {
+// tSubjectbal.setCrbal(tSubjectbal.getCrbal() - entry.getDramt() + entry.getCramt());
+// entry.setBalance(tSubjectbal.getCrbal());
+// }
+// subjectbalDao.save(tSubjectbal);
+// }
+//
+// if (!StringUtil.isEmpty(entry.getOppaccno())) {
+// entry.setOppname(shopaccDao.getShopname(entry.getOppaccno()));
+// } else {
+// entry.setOppname(subjectDao.getSubjectname(entry.getOppsubjno()));
+// }
+// voucherEntryDao.save(entry);
+// }
return true;
}