Procházet zdrojové kódy

2024年6月14日17:28:20

纪新园 před 1 rokem
rodič
revize
d263ef28d3
18 změnil soubory, kde provedl 662 přidání a 126 odebrání
  1. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/vouchers/entity/FinVouchers.java
  2. 5 3
      blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/controller/AccountsController.java
  3. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  4. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegCalcController.java
  5. 3 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegController.java
  6. 2 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegCalcService.java
  7. 2 1
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegService.java
  8. 10 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegCalcServiceImpl.java
  9. 13 5
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegServiceImpl.java
  10. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java
  11. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  12. 1 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/controller/FinVouchersController.java
  13. 585 110
      blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java
  14. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/accountManagement/controller/AccountManagementController.java
  15. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java
  16. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java
  17. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java
  18. 3 0
      blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/controller/StorageDescController.java

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/vouchers/entity/FinVouchers.java

@@ -285,5 +285,17 @@ public class FinVouchers implements Serializable {
 	@ApiModelProperty(value = "来源id")
 	private Long srcId;
 
+	/**
+	 * 业务编号
+	 */
+	@ApiModelProperty(value = "业务编号")
+	private String srcBlllNo;
+
+	/**
+	 * refNo
+	 */
+	@ApiModelProperty(value = "refNo")
+	private String refNo;
+
 
 }

+ 5 - 3
blade-service/blade-los/src/main/java/org/springblade/los/basic/acc/controller/AccountsController.java

@@ -95,9 +95,11 @@ public class AccountsController extends BladeController {
 		lambdaQueryWrapper.eq(Accounts::getTenantId, AuthUtil.getTenantId())
 			.eq(Accounts::getBranchId, deptUtils.getDeptPid())
 			.eq(ObjectUtils.isNotNull(accounts.getProperty()), Accounts::getProperty, accounts.getProperty())
-			.like(ObjectUtils.isNotNull(accounts.getCode()), Accounts::getCode, accounts.getCode())
-			.like(ObjectUtils.isNotNull(accounts.getCnName()), Accounts::getCnName, accounts.getCnName())
+			.and(ObjectUtils.isNotNull(accounts.getCode()),i-> i.like( Accounts::getCode, accounts.getCode()).or()
+				.like( Accounts::getCnName, accounts.getCode()))
 			.eq(ObjectUtils.isNotNull(accounts.getCurCode()), Accounts::getCurCode, accounts.getCurCode())
+			.and(ObjectUtils.isNotNull(accounts.getCnName()),i-> i.like( Accounts::getCode, accounts.getCnName()).or()
+				.like( Accounts::getCnName, accounts.getCnName()))
 			.eq(ObjectUtils.isNotNull(accounts.getDc()), Accounts::getDc, accounts.getDc())
 			.eq(ObjectUtils.isNotNull(accounts.getIsDetail()), Accounts::getIsDetail, accounts.getIsDetail())
 			.eq(ObjectUtils.isNotNull(accounts.getIsForeign()), Accounts::getIsForeign, accounts.getIsForeign())
@@ -277,7 +279,7 @@ public class AccountsController extends BladeController {
 	@GetMapping("/accountsDetailsListExport")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "明细账列表", notes = "accountsVO")
-	public void accountsDetailsListExport(@Valid @RequestBody AccountsDTO accountsVO, HttpServletResponse response) {
+	public void accountsDetailsListExport( AccountsDTO accountsVO, HttpServletResponse response) {
 		List<AccountsDetail> list = accountsService.accountsDetailsList(accountsVO);
 		ExcelUtil.export(response, "明细账", "明细账", list, AccountsDetail.class);
 	}

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -1291,10 +1291,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 		AeaBills aeaBillsDetail = null;
 		CustomsDeclaration customsDeclarationDetail = null;
 		Amends amendsDetail = null;
+		String srcBillNo = "";
 		//查询各业务模块 核算客户,核算部门,核算职员信息
 		if ("HYCK-DJ".equals(checkType) || "HYJK-DJ".equals(checkType)) {
 			Bills bills = billsMapper.selectById(id);
 			if (bills != null) {
+				srcBillNo = bills.getBillNo();
 				billsDetail = bills;
 				bCorps = bCorpsService.getById(bills.getCorpId());
 				if (ObjectUtils.isNotNull(bills.getAccDept())) {
@@ -1328,6 +1330,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 		} else if ("KYCK-DJ".equals(checkType) || "KYJK-DJ".equals(checkType)) {
 			AeaBills bills = aeaBillsMapper.selectById(id);
 			if (bills != null) {
+				srcBillNo = bills.getBillNo();
 				aeaBillsDetail = bills;
 				bCorps = bCorpsService.getById(bills.getCorpId());
 				if (ObjectUtils.isNotNull(bills.getAccDept())) {
@@ -1362,6 +1365,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			"BGAE".equals(checkType) || "BGAI".equals(checkType)) {
 			CustomsDeclaration bills = customsDeclarationMapper.selectById(id);
 			if (bills != null) {
+				srcBillNo = bills.getBillNo();
 				customsDeclarationDetail = bills;
 				bCorps = bCorpsService.getById(bills.getCorpId());
 				if (ObjectUtils.isNotNull(bills.getAccDept())) {
@@ -1383,6 +1387,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 			"aea-approve".equals(checkType) || "aia-approve".equals(checkType)) {
 			Amends bills = amendsMapper.selectById(id);
 			if (bills != null) {
+				srcBillNo = bills.getBillNo();
 				amendsDetail = bills;
 				bCorps = bCorpsService.getById(bills.getCorpId());
 				if (ObjectUtils.isNotNull(bills.getAccDept())) {
@@ -1520,6 +1525,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 		finVouchers.setCreateUser(AuthUtil.getUserId());
 		finVouchers.setCreateUserName(AuthUtil.getUserName());
 		finVouchers.setSrcId(id);
+		finVouchers.setSrcBlllNo(srcBillNo);
 		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
 			finVouchers.setCreateDept(deptId);
 			finVouchers.setBranchId(branchId);

+ 3 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegCalcController.java

@@ -41,6 +41,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -181,7 +182,7 @@ public class FinGenlegCalcController extends BladeController {
 	@GetMapping("/initialization")
 	@RepeatSubmit
 	public R<List<FinGenlegCalc>> initialization() {
-		List<FinGenlegCalc> pages = finGenlegCalcService.initialization();
+		List<FinGenlegCalc> pages = finGenlegCalcService.initialization(new Date());
 		return R.data(pages);
 	}
 
@@ -212,7 +213,7 @@ public class FinGenlegCalcController extends BladeController {
 	@GetMapping("/projectDetailsListExport")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "项目明细账列表", notes = "finGenlegCalcVO")
-	public void projectDetailsListExport(@Valid @RequestBody FinGenlegCalcVO finGenlegCalcVO, HttpServletResponse response) {
+	public void projectDetailsListExport(FinGenlegCalcVO finGenlegCalcVO, HttpServletResponse response) {
 		List<AccountsDetail> list = finGenlegCalcService.projectDetailsList(finGenlegCalcVO);
 		ExcelUtil.export(response, "项目明细账", "项目明细账", list, AccountsDetail.class);
 	}

+ 3 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/controller/FinGenlegController.java

@@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -110,7 +111,7 @@ public class FinGenlegController extends BladeController {
 	@GetMapping("/selectListExport")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "总分类账列表", notes = "传入finGenleg")
-	public void selectListExport(@Valid @RequestBody FinGenlegVO finGenleg, HttpServletResponse response) {
+	public void selectListExport(FinGenlegVO finGenleg, HttpServletResponse response) {
 		List<FinGenlegDTO> list = finGenlegService.selectFinGenlegList(finGenleg);
 		ExcelUtil.export(response, "总分类账", "总分类账", list, FinGenlegDTO.class);
 	}
@@ -163,7 +164,7 @@ public class FinGenlegController extends BladeController {
 	 */
 	@GetMapping("/initialization")
 	public R<List<FinGenleg>> initialization() {
-		List<FinGenleg> pages = finGenlegService.initialization();
+		List<FinGenleg> pages = finGenlegService.initialization(new Date());
 		return R.data(pages);
 	}
 

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegCalcService.java

@@ -23,6 +23,7 @@ import org.springblade.los.finance.genleg.vo.FinGenlegCalcVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -43,7 +44,7 @@ public interface IFinGenlegCalcService extends IService<FinGenlegCalc> {
 	 */
 	IPage<FinGenlegCalcVO> selectFinGenlegCalcPage(IPage<FinGenlegCalcVO> page, FinGenlegCalcVO finGenlegCalc);
 
-    List<FinGenlegCalc> initialization();
+    List<FinGenlegCalc> initialization(Date date);
 
 	IPage<FinGenlegCalc> selectPage(IPage<FinGenlegCalc> page, FinGenlegCalc finGenlegCalc);
 

+ 2 - 1
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/IFinGenlegService.java

@@ -23,6 +23,7 @@ import org.springblade.los.finance.genleg.vo.FinGenlegVO;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,7 +43,7 @@ public interface IFinGenlegService extends IService<FinGenleg> {
 	 */
 	IPage<FinGenlegVO> selectFinGenlegPage(IPage<FinGenlegVO> page, FinGenlegVO finGenleg);
 
-    List<FinGenleg> initialization();
+    List<FinGenleg> initialization(Date date);
 
 	List<FinGenlegDTO> selectFinGenlegList(FinGenlegVO finGenleg);
 

+ 10 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegCalcServiceImpl.java

@@ -47,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -80,7 +81,7 @@ public class FinGenlegCalcServiceImpl extends ServiceImpl<FinGenlegCalcMapper, F
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public List<FinGenlegCalc> initialization() {
+	public List<FinGenlegCalc> initialization(Date date) {
 		String deptId = "";
 		String deptName = "";
 		String branchId = deptUtils.getDeptPid() + "";
@@ -92,7 +93,14 @@ public class FinGenlegCalcServiceImpl extends ServiceImpl<FinGenlegCalcMapper, F
 				deptName = String.join(",", res.getData());
 			}
 		}
-		LocalDate currentDate = LocalDate.now();
+		LocalDate currentDate;
+		if (ObjectUtils.isNotNull(date)) {
+			currentDate = date.toInstant()
+				.atZone(ZoneId.systemDefault())
+				.toLocalDate();
+		} else {
+			currentDate = LocalDate.now();
+		}
 		if (baseMapper.selectCount(new LambdaQueryWrapper<FinGenlegCalc>()
 			.eq(FinGenlegCalc::getAccyear, currentDate.getYear())) > 0) {
 			throw new RuntimeException("本年度已入账,请勿重复入账");

+ 13 - 5
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinGenlegServiceImpl.java

@@ -45,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -76,7 +77,7 @@ public class FinGenlegServiceImpl extends ServiceImpl<FinGenlegMapper, FinGenleg
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
-	public List<FinGenleg> initialization() {
+	public List<FinGenleg> initialization(Date date) {
 		String deptId = "";
 		String deptName = "";
 		String branchId = deptUtils.getDeptPid() + "";
@@ -88,7 +89,14 @@ public class FinGenlegServiceImpl extends ServiceImpl<FinGenlegMapper, FinGenleg
 				deptName = String.join(",", res.getData());
 			}
 		}
-		LocalDate currentDate = LocalDate.now();
+		LocalDate currentDate;
+		if (ObjectUtils.isNotNull(date)) {
+			currentDate = date.toInstant()
+				.atZone(ZoneId.systemDefault())
+				.toLocalDate();
+		} else {
+			currentDate = LocalDate.now();
+		}
 		if (baseMapper.selectCount(new LambdaQueryWrapper<FinGenleg>()
 			.eq(FinGenleg::getAccyear, currentDate.getYear())) > 0) {
 			throw new RuntimeException("本年度已入账,请勿重复入账");
@@ -555,12 +563,12 @@ public class FinGenlegServiceImpl extends ServiceImpl<FinGenlegMapper, FinGenleg
 		List<FinGenlegReport> finGenlegReportList = new ArrayList<>();
 		for (FinGenleg item : finGenlegList) {
 			FinGenlegReport finGenlegReport = new FinGenlegReport();
-			BeanUtil.copyProperties(item,finGenlegReport);
+			BeanUtil.copyProperties(item, finGenlegReport);
 			finGenlegReport.setDate(date);
 			finGenlegReportList.add(finGenlegReport);
 		}
-		map.put("dept",dept);
-		map.put("data",finGenlegReportList);
+		map.put("dept", dept);
+		map.put("data", finGenlegReportList);
 		return R.data(map);
 	}
 

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/genleg/service/impl/FinPeriodServiceImpl.java

@@ -787,6 +787,8 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			throw new RuntimeException("已有账期,请勿重复开账");
 		}
 		if (ObjectUtils.isNotNull(finPeriod.getBeginDate())) {
+			finGenlegService.initialization(finPeriod.getBeginDate());
+			finGenlegCalcService.initialization(finPeriod.getBeginDate());
 			LocalDate date = finPeriod.getBeginDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
 			finPeriod.setPeriodYear(date.getYear());
 			finPeriod.setPeriodMonth(date.getMonthValue());
@@ -794,6 +796,8 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			LocalDate lastDayOfMonth = date.with(TemporalAdjusters.lastDayOfMonth());
 			finPeriod.setEndDate(Date.from(lastDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant()));
 		} else {
+			finGenlegService.initialization(new Date());
+			finGenlegCalcService.initialization(new Date());
 			LocalDate date = LocalDate.now();
 			finPeriod.setPeriodYear(date.getYear());
 			finPeriod.setPeriodMonth(date.getMonthValue());

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

@@ -1970,6 +1970,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		finVouchers.setVoucherNo(voucherNo.getData());
 		finVouchers.setVoucherSource(typeName);
 		finVouchers.setSrcId(finStlBills.getId());
+		finVouchers.setSrcBlllNo(finStlBills.getBillNo());
 		finVouchers.setVoucherDate(new Date());
 		LocalDate currentDate = LocalDate.now();
 		finVouchers.setAccountYear(currentDate.getYear());

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/controller/FinVouchersController.java

@@ -74,6 +74,7 @@ public class FinVouchersController extends BladeController {
 		lambdaQueryWrapper.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
 			.eq(FinVouchers::getIsDeleted, 0)
 			.like(ObjectUtils.isNotNull(finVouchers.getBillNo()), FinVouchers::getBillNo, finVouchers.getBillNo())
+			.like(ObjectUtils.isNotNull(finVouchers.getSrcBlllNo()), FinVouchers::getSrcBlllNo, finVouchers.getSrcBlllNo())
 			.eq(ObjectUtils.isNotNull(finVouchers.getVoucherStatus()), FinVouchers::getVoucherStatus, finVouchers.getVoucherStatus())
 			.like(ObjectUtils.isNotNull(finVouchers.getVoucherNo()), FinVouchers::getVoucherNo, finVouchers.getVoucherNo())
 			.eq(ObjectUtils.isNotNull(finVouchers.getVoucherSource()), FinVouchers::getVoucherSource, finVouchers.getVoucherSource())

+ 585 - 110
blade-service/blade-los/src/main/java/org/springblade/los/finance/vouchers/service/impl/FinVouchersServiceImpl.java

@@ -283,17 +283,13 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		List<FinVouchersItems> finVouchersItemsList = finVouchersItemsService.list(new LambdaQueryWrapper<FinVouchersItems>()
 			.apply("find_in_set(pid,'" + ids + "')"));
 		List<Accounts> accountsList = new ArrayList<>();
-		List<FinGenleg> finGenlegList = new ArrayList<>();
-		List<FinGenlegCalc> finGenlegCalcList = new ArrayList<>();
+		List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<>());
+		List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<>());
 		if (ObjectUtils.isNotNull(finVouchersItemsList)) {
 			List<Long> accId = finVouchersItemsList.stream().map(FinVouchersItems::getAccountId).collect(Collectors.toList());
 			if (!accId.isEmpty()) {
 				accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
 					.in(Accounts::getId, accId));
-				finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-					.in(FinGenleg::getAccId, accId));
-				finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-					.in(FinGenlegCalc::getAccId, accId));
 			}
 		}
 		List<FinGenleg> finGenlegListNew = new ArrayList<>();
@@ -319,17 +315,89 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 							if (ObjectUtils.isNotNull(finGenlegCalc)) {
 								finGenlegCalcListNew.add(finGenlegCalc);
 							}
+							FinGenlegCalc finalFinGenlegCalc = finGenlegCalc;
+							FinGenlegCalc finGenlegP = finGenlegCalcList.stream().filter(e -> e.getAccId().equals(finalFinGenlegCalc.getParentId()) &&
+								e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
+							if (finGenlegP != null) {
+								/*for (FinGenlegCalc genleg : finGenlegCalcList) {
+									if (finGenlegP.getId().equals(genleg.getId())) {
+										//本期本币借方金额(CNY)
+										genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
+										//本期本币贷方金额(CNY)
+										genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
+										//本年本币借方金额(CNY)
+										genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
+										//本年本币贷方金额(CNY)
+										genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
+										//本期外币借方金额
+										genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
+										//本期外币贷方金额
+										genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
+										//本年外币借方金额(USD)
+										genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
+										//本年外币贷方金额(USD)
+										genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
+										if ("D".equals(finalFinGenlegCalc.getDc())) {
+											//本期本币余额(CNY)
+											genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+											//本期外币余额
+											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+										} else {
+											//本期本币余额(CNY)
+											genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+											//本期外币余额
+											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+										}
+									}
+								}*/
+								List<FinGenlegCalc> finGenlegs = new ArrayList<>();
+								finGenlegCalcList = genlegCalcAccountingFor(item, finGenlegP, finGenlegCalcList, finGenlegs);
+								if (!finGenlegs.isEmpty()) {
+									finGenlegCalcListNew.addAll(finGenlegs);
+								}
+							}
 						}
 						finGenleg = genlegAccountingFinGenleg(accounts, item, finGenleg);
 						if (ObjectUtils.isNotNull(finGenleg)) {
 							finGenlegListNew.add(finGenleg);
 						}
 						FinGenleg finalFinGenleg = finGenleg;
-						FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getParentId().equals(finalFinGenleg.getAccId()) &&
+						FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finalFinGenleg.getParentId()) &&
 							e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 						if (finGenlegP != null) {
+							/*for (FinGenleg genleg : finGenlegList) {
+								if (finGenlegP.getId().equals(genleg.getId())) {
+									//本期本币借方金额(CNY)
+									genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
+									//本期本币贷方金额(CNY)
+									genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
+									//本年本币借方金额(CNY)
+									genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
+									//本年本币贷方金额(CNY)
+									genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
+									//本期外币借方金额
+									genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
+									//本期外币贷方金额
+									genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
+									//本年外币借方金额(USD)
+									genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
+									//本年外币贷方金额(USD)
+									genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
+									if ("D".equals(finGenleg.getDc())) {
+										//本期本币余额(CNY)
+										genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+										//本期外币余额
+										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+									} else {
+										//本期本币余额(CNY)
+										genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+										//本期外币余额
+										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+									}
+								}
+							}*/
 							List<FinGenleg> finGenlegs = new ArrayList<>();
-							genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+							finGenlegList = genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 							if (!finGenlegs.isEmpty()) {
 								finGenlegListNew.addAll(finGenlegs);
 							}
@@ -375,8 +443,12 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			detail.setPostTime(new Date());
 			finVouchersListNew.add(detail);
 		}
-		finGenlegService.saveOrUpdateBatch(finGenlegListNew);
-		finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcListNew);
+		if (!finGenlegListNew.isEmpty()) {
+			finGenlegService.saveOrUpdateBatch(finGenlegListNew);
+		}
+		if (!finGenlegCalcListNew.isEmpty()) {
+			finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcListNew);
+		}
 		this.saveOrUpdateBatch(finVouchersListNew);
 		finVouchersItemsService.saveOrUpdateBatch(finVouchersItemsListNew);
 		feeCenterService.saveOrUpdateBatch(feeCenterListNew);
@@ -384,7 +456,7 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		return R.data("");
 	}
 
-	private void genlegAccountingFor(FinVouchersItems item, FinGenleg finGenleg, List<FinGenleg> finGenlegList, List<FinGenleg> finGenlegs) {
+	private List<FinGenleg> genlegAccountingFor(FinVouchersItems item, FinGenleg finGenleg, List<FinGenleg> finGenlegList, List<FinGenleg> finGenlegs) {
 		//上期本币余额(CNY)
 		BigDecimal amountLastBlc = finGenleg.getAmountLastBlc();
 		//本期本币借方金额(CNY)
@@ -409,31 +481,158 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
 		//本期外币余额
 		BigDecimal amountUsdBlc;
-		if ("CNY".equals(item.getCurCode())) {
-			if ("D".equals(item.getDc())) {
-				//本期本币借方金额(CNY)
-				amountDr = amountDr.add(item.getAmountDr());
-				//本年本币借方金额(CNY)
-				amountYearDr = amountYearDr.add(item.getAmountDr());
-			} else {
-				//本期本币贷方金额(CNY)
-				amountCr = amountCr.add(item.getAmountCr());
-				//本年本币贷方金额(CNY)
-				amountYearCr = amountYearCr.add(item.getAmountCr());
+		//本期本币借方金额(CNY)
+		amountDr = amountDr.add(item.getAmountDr());
+		//本年本币借方金额(CNY)
+		amountYearDr = amountYearDr.add(item.getAmountDr());
+		//本期本币贷方金额(CNY)
+		amountCr = amountCr.add(item.getAmountCr());
+		//本年本币贷方金额(CNY)
+		amountYearCr = amountYearCr.add(item.getAmountCr());
+		//本期本币借方金额(CNY)
+		amountDrUsd = amountDrUsd.add(item.getAmountDrUsd());
+		//本年本币借方金额(CNY)
+		amountYearDrUsd = amountYearDrUsd.add(item.getAmountDrUsd());
+		//本期本币贷方金额(CNY)
+		amountCrUsd = amountCrUsd.add(item.getAmountCrUsd());
+		//本年本币贷方金额(CNY)
+		amountYearCrUsd = amountYearCrUsd.add(item.getAmountCrUsd());
+		if ("D".equals(finGenleg.getDc())) {
+			amountBlc = amountLastBlc.add(amountDr).subtract(amountCr);
+			amountUsdBlc = amountLastBlcUsd.add(amountDrUsd).subtract(amountCrUsd);
+		} else {
+			amountBlc = amountLastBlc.subtract(amountDr).add(amountCr);
+			amountUsdBlc = amountLastBlcUsd.subtract(amountDrUsd).add(amountCrUsd);
+		}
+		//本期本币借方金额(CNY)
+		finGenleg.setAmountDr(amountDr);
+		//本期本币贷方金额(CNY)
+		finGenleg.setAmountCr(amountCr);
+		//本年本币借方金额(CNY)
+		finGenleg.setAmountYearDr(amountYearDr);
+		//本年本币贷方金额(CNY)
+		finGenleg.setAmountYearCr(amountYearCr);
+		//本期本币余额(CNY)
+		finGenleg.setAmountBlc(amountBlc);
+		//本期外币借方金额
+		finGenleg.setAmountDrUsd(amountDrUsd);
+		//本期外币贷方金额
+		finGenleg.setAmountCrUsd(amountCrUsd);
+		//本年外币借方金额(USD)
+		finGenleg.setAmountYearDrUsd(amountYearDrUsd);
+		//本年外币贷方金额(USD)
+		finGenleg.setAmountYearCrUsd(amountYearCrUsd);
+		//本期外币余额
+		finGenleg.setAmountUsdBlc(amountUsdBlc);
+		finGenlegs.add(finGenleg);
+		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
+			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
+		if (finGenlegP != null) {
+			for (FinGenleg genleg : finGenlegList) {
+				if (finGenlegP.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
+					//本期外币借方金额
+					genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
+					if ("D".equals(finGenleg.getDc())) {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+					} else {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+					}
+				}
 			}
+			genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
-			if ("D".equals(item.getDc())) {
-				//本期本币借方金额(CNY)
-				amountDrUsd = amountDrUsd.add(item.getAmountDrUsd());
-				//本年本币借方金额(CNY)
-				amountYearDrUsd = amountYearDrUsd.add(item.getAmountDrUsd());
-			} else {
-				//本期本币贷方金额(CNY)
-				amountCrUsd = amountCrUsd.add(item.getAmountCrUsd());
-				//本年本币贷方金额(CNY)
-				amountYearCrUsd = amountYearCrUsd.add(item.getAmountCrUsd());
+			for (FinGenleg genleg : finGenlegList) {
+				if (finGenleg.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(finGenleg.getAmountDr());
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(finGenleg.getAmountCr());
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(finGenleg.getAmountYearDr());
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(finGenleg.getAmountYearCr());
+					//本期外币借方金额
+					genleg.setAmountDrUsd(finGenleg.getAmountDrUsd());
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(finGenleg.getAmountCrUsd());
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd());
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd());
+					//本期本币余额(CNY)
+					genleg.setAmountBlc(finGenleg.getAmountBlc());
+					//本期外币余额
+					genleg.setAmountUsdBlc(finGenleg.getAmountUsdBlc());
+
+				}
 			}
 		}
+		return finGenlegList;
+	}
+
+	private List<FinGenlegCalc> genlegCalcAccountingFor(FinVouchersItems item, FinGenlegCalc finGenleg, List<FinGenlegCalc> finGenlegList, List<FinGenlegCalc> finGenlegs) {
+		//上期本币余额(CNY)
+		BigDecimal amountLastBlc = finGenleg.getAmountLastBlc();
+		//本期本币借方金额(CNY)
+		BigDecimal amountDr = finGenleg.getAmountDr();
+		//本期本币贷方金额(CNY)
+		BigDecimal amountCr = finGenleg.getAmountCr();
+		//本年本币借方金额(CNY)
+		BigDecimal amountYearDr = finGenleg.getAmountYearDr();
+		//本年本币贷方金额(CNY)
+		BigDecimal amountYearCr = finGenleg.getAmountYearCr();
+		//本期本币余额(CNY)
+		BigDecimal amountBlc;
+		//上期外币余额(USD)
+		BigDecimal amountLastBlcUsd = finGenleg.getAmountLastBlcUsd();
+		//本期外币借方金额
+		BigDecimal amountDrUsd = finGenleg.getAmountDrUsd();
+		//本期外币贷方金额
+		BigDecimal amountCrUsd = finGenleg.getAmountCrUsd();
+		//本年外币借方金额(USD)
+		BigDecimal amountYearDrUsd = finGenleg.getAmountYearDrUsd();
+		//本年外币贷方金额(USD)
+		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
+		//本期外币余额
+		BigDecimal amountUsdBlc;
+
+		//本期本币借方金额(CNY)
+		amountDr = amountDr.add(item.getAmountDr());
+		//本年本币借方金额(CNY)
+		amountYearDr = amountYearDr.add(item.getAmountDr());
+		//本期本币贷方金额(CNY)
+		amountCr = amountCr.add(item.getAmountCr());
+		//本年本币贷方金额(CNY)
+		amountYearCr = amountYearCr.add(item.getAmountCr());
+
+		//本期本币借方金额(CNY)
+		amountDrUsd = amountDrUsd.add(item.getAmountDrUsd());
+		//本年本币借方金额(CNY)
+		amountYearDrUsd = amountYearDrUsd.add(item.getAmountDrUsd());
+		//本期本币贷方金额(CNY)
+		amountCrUsd = amountCrUsd.add(item.getAmountCrUsd());
+		//本年本币贷方金额(CNY)
+		amountYearCrUsd = amountYearCrUsd.add(item.getAmountCrUsd());
 		if ("D".equals(finGenleg.getDc())) {
 			amountBlc = amountLastBlc.add(amountDr).subtract(amountCr);
 			amountUsdBlc = amountLastBlcUsd.add(amountDrUsd).subtract(amountCrUsd);
@@ -462,14 +661,72 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		//本期外币余额
 		finGenleg.setAmountUsdBlc(amountUsdBlc);
 		finGenlegs.add(finGenleg);
-		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getParentId().equals(finGenleg.getAccId()) &&
+		FinGenlegCalc finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+			for (FinGenlegCalc genleg : finGenlegList) {
+				if (finGenlegP.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(genleg.getAmountDr().add(item.getAmountDr()));
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(genleg.getAmountCr().add(item.getAmountCr()));
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(genleg.getAmountYearDr().add(item.getAmountDr()));
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(genleg.getAmountYearCr().add(item.getAmountCr()));
+					//本期外币借方金额
+					genleg.setAmountDrUsd(genleg.getAmountDrUsd().add(item.getAmountDrUsd()));
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(genleg.getAmountCrUsd().add(item.getAmountCrUsd()));
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().add(item.getAmountDrUsd()));
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().add(item.getAmountCrUsd()));
+					if ("D".equals(finGenleg.getDc())) {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+					} else {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+					}
+				}
+			}
+			genlegCalcAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+		} else {
+			for (FinGenlegCalc genleg : finGenlegList) {
+				if (finGenleg.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(finGenleg.getAmountDr());
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(finGenleg.getAmountCr());
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(finGenleg.getAmountYearDr());
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(finGenleg.getAmountYearCr());
+					//本期外币借方金额
+					genleg.setAmountDrUsd(finGenleg.getAmountDrUsd());
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(finGenleg.getAmountCrUsd());
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd());
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd());
+					//本期本币余额(CNY)
+					genleg.setAmountBlc(finGenleg.getAmountBlc());
+					//本期外币余额
+					genleg.setAmountUsdBlc(finGenleg.getAmountUsdBlc());
+
+				}
+			}
 		}
+		return finGenlegList;
 	}
 
-	private void revokeGenlegAccountingFor(FinVouchersItems item, FinGenleg finGenleg, List<FinGenleg> finGenlegList, List<FinGenleg> finGenlegs) {
+	private List<FinGenleg> revokeGenlegAccountingFor(FinVouchersItems item, FinGenleg finGenleg, List<FinGenleg> finGenlegList, List<FinGenleg> finGenlegs) {
 		//上期本币余额(CNY)
 		BigDecimal amountLastBlc = finGenleg.getAmountLastBlc();
 		//本期本币借方金额(CNY)
@@ -494,31 +751,161 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
 		//本期外币余额
 		BigDecimal amountUsdBlc;
-		if ("CNY".equals(item.getCurCode())) {
-			if ("D".equals(item.getDc())) {
-				//本期本币借方金额(CNY)
-				amountDr = amountDr.subtract(item.getAmountDr());
-				//本年本币借方金额(CNY)
-				amountYearDr = amountYearDr.subtract(item.getAmountDr());
-			} else {
-				//本期本币贷方金额(CNY)
-				amountCr = amountCr.subtract(item.getAmountCr());
-				//本年本币贷方金额(CNY)
-				amountYearCr = amountYearCr.subtract(item.getAmountCr());
+
+		//本期本币借方金额(CNY)
+		amountDr = amountDr.subtract(item.getAmountDr());
+		//本年本币借方金额(CNY)
+		amountYearDr = amountYearDr.subtract(item.getAmountDr());
+		//本期本币贷方金额(CNY)
+		amountCr = amountCr.subtract(item.getAmountCr());
+		//本年本币贷方金额(CNY)
+		amountYearCr = amountYearCr.subtract(item.getAmountCr());
+
+		//本期本币借方金额(CNY)
+		amountDrUsd = amountDrUsd.subtract(item.getAmountDrUsd());
+		//本年本币借方金额(CNY)
+		amountYearDrUsd = amountYearDrUsd.subtract(item.getAmountDrUsd());
+		//本期本币贷方金额(CNY)
+		amountCrUsd = amountCrUsd.subtract(item.getAmountCrUsd());
+		//本年本币贷方金额(CNY)
+		amountYearCrUsd = amountYearCrUsd.subtract(item.getAmountCrUsd());
+		if ("D".equals(finGenleg.getDc())) {
+			amountBlc = amountLastBlc.subtract(amountDr).add(amountCr);
+			amountUsdBlc = amountLastBlcUsd.subtract(amountDrUsd).add(amountCrUsd);
+		} else {
+			amountBlc = amountLastBlc.add(amountDr).subtract(amountCr);
+			amountUsdBlc = amountLastBlcUsd.add(amountDrUsd).subtract(amountCrUsd);
+		}
+		//本期本币借方金额(CNY)
+		finGenleg.setAmountDr(amountDr);
+		//本期本币贷方金额(CNY)
+		finGenleg.setAmountCr(amountCr);
+		//本年本币借方金额(CNY)
+		finGenleg.setAmountYearDr(amountYearDr);
+		//本年本币贷方金额(CNY)
+		finGenleg.setAmountYearCr(amountYearCr);
+		//本期本币余额(CNY)
+		finGenleg.setAmountBlc(amountBlc);
+		//本期外币借方金额
+		finGenleg.setAmountDrUsd(amountDrUsd);
+		//本期外币贷方金额
+		finGenleg.setAmountCrUsd(amountCrUsd);
+		//本年外币借方金额(USD)
+		finGenleg.setAmountYearDrUsd(amountYearDrUsd);
+		//本年外币贷方金额(USD)
+		finGenleg.setAmountYearCrUsd(amountYearCrUsd);
+		//本期外币余额
+		finGenleg.setAmountUsdBlc(amountUsdBlc);
+		finGenlegs.add(finGenleg);
+		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
+			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
+		if (finGenlegP != null) {
+			for (FinGenleg genleg : finGenlegList) {
+				if (finGenlegP.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(genleg.getAmountCr().subtract(item.getAmountCr()));
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(genleg.getAmountYearDr().subtract(item.getAmountDr()));
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(genleg.getAmountYearCr().subtract(item.getAmountCr()));
+					//本期外币借方金额
+					genleg.setAmountDrUsd(genleg.getAmountDrUsd().subtract(item.getAmountDrUsd()));
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(genleg.getAmountCrUsd().subtract(item.getAmountCrUsd()));
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().subtract(item.getAmountDrUsd()));
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().subtract(item.getAmountCrUsd()));
+					if ("D".equals(finGenleg.getDc())) {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+					} else {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+					}
+				}
 			}
+			revokeGenlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 		} else {
-			if ("D".equals(item.getDc())) {
-				//本期本币借方金额(CNY)
-				amountDrUsd = amountDrUsd.subtract(item.getAmountDrUsd());
-				//本年本币借方金额(CNY)
-				amountYearDrUsd = amountYearDrUsd.subtract(item.getAmountDrUsd());
-			} else {
-				//本期本币贷方金额(CNY)
-				amountCrUsd = amountCrUsd.subtract(item.getAmountCrUsd());
-				//本年本币贷方金额(CNY)
-				amountYearCrUsd = amountYearCrUsd.subtract(item.getAmountCrUsd());
+			for (FinGenleg genleg : finGenlegList) {
+				if (finGenleg.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(finGenleg.getAmountDr());
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(finGenleg.getAmountCr());
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(finGenleg.getAmountYearDr());
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(finGenleg.getAmountYearCr());
+					//本期外币借方金额
+					genleg.setAmountDrUsd(finGenleg.getAmountDrUsd());
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(finGenleg.getAmountCrUsd());
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd());
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd());
+					//本期本币余额(CNY)
+					genleg.setAmountBlc(finGenleg.getAmountBlc());
+					//本期外币余额
+					genleg.setAmountUsdBlc(finGenleg.getAmountUsdBlc());
+
+				}
 			}
 		}
+		return finGenlegList;
+	}
+
+	private List<FinGenlegCalc> revokeGenlegCalcAccountingFor(FinVouchersItems item, FinGenlegCalc finGenleg, List<FinGenlegCalc> finGenlegList, List<FinGenlegCalc> finGenlegs) {
+		//上期本币余额(CNY)
+		BigDecimal amountLastBlc = finGenleg.getAmountLastBlc();
+		//本期本币借方金额(CNY)
+		BigDecimal amountDr = finGenleg.getAmountDr();
+		//本期本币贷方金额(CNY)
+		BigDecimal amountCr = finGenleg.getAmountCr();
+		//本年本币借方金额(CNY)
+		BigDecimal amountYearDr = finGenleg.getAmountYearDr();
+		//本年本币贷方金额(CNY)
+		BigDecimal amountYearCr = finGenleg.getAmountYearCr();
+		//本期本币余额(CNY)
+		BigDecimal amountBlc;
+		//上期外币余额(USD)
+		BigDecimal amountLastBlcUsd = finGenleg.getAmountLastBlcUsd();
+		//本期外币借方金额
+		BigDecimal amountDrUsd = finGenleg.getAmountDrUsd();
+		//本期外币贷方金额
+		BigDecimal amountCrUsd = finGenleg.getAmountCrUsd();
+		//本年外币借方金额(USD)
+		BigDecimal amountYearDrUsd = finGenleg.getAmountYearDrUsd();
+		//本年外币贷方金额(USD)
+		BigDecimal amountYearCrUsd = finGenleg.getAmountYearCrUsd();
+		//本期外币余额
+		BigDecimal amountUsdBlc;
+
+		//本期本币借方金额(CNY)
+		amountDr = amountDr.subtract(item.getAmountDr());
+		//本年本币借方金额(CNY)
+		amountYearDr = amountYearDr.subtract(item.getAmountDr());
+
+		//本期本币贷方金额(CNY)
+		amountCr = amountCr.subtract(item.getAmountCr());
+		//本年本币贷方金额(CNY)
+		amountYearCr = amountYearCr.subtract(item.getAmountCr());
+
+		//本期本币借方金额(CNY)
+		amountDrUsd = amountDrUsd.subtract(item.getAmountDrUsd());
+		//本年本币借方金额(CNY)
+		amountYearDrUsd = amountYearDrUsd.subtract(item.getAmountDrUsd());
+		//本期本币贷方金额(CNY)
+		amountCrUsd = amountCrUsd.subtract(item.getAmountCrUsd());
+		//本年本币贷方金额(CNY)
+		amountYearCrUsd = amountYearCrUsd.subtract(item.getAmountCrUsd());
 		if ("D".equals(finGenleg.getDc())) {
 			amountBlc = amountLastBlc.subtract(amountDr).add(amountCr);
 			amountUsdBlc = amountLastBlcUsd.subtract(amountDrUsd).add(amountCrUsd);
@@ -547,11 +934,69 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		//本期外币余额
 		finGenleg.setAmountUsdBlc(amountUsdBlc);
 		finGenlegs.add(finGenleg);
-		FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getParentId().equals(finGenleg.getAccId()) &&
+		FinGenlegCalc finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finGenleg.getParentId()) &&
 			e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 		if (finGenlegP != null) {
-			genlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+			for (FinGenlegCalc genleg : finGenlegList) {
+				if (finGenlegP.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(genleg.getAmountCr().subtract(item.getAmountCr()));
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(genleg.getAmountYearDr().subtract(item.getAmountDr()));
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(genleg.getAmountYearCr().subtract(item.getAmountCr()));
+					//本期外币借方金额
+					genleg.setAmountDrUsd(genleg.getAmountDrUsd().subtract(item.getAmountDrUsd()));
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(genleg.getAmountCrUsd().subtract(item.getAmountCrUsd()));
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().subtract(item.getAmountDrUsd()));
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().subtract(item.getAmountCrUsd()));
+					if ("D".equals(finGenleg.getDc())) {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+					} else {
+						//本期本币余额(CNY)
+						genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+						//本期外币余额
+						genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+					}
+				}
+			}
+			revokeGenlegCalcAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+		} else {
+			for (FinGenlegCalc genleg : finGenlegList) {
+				if (finGenleg.getId().equals(genleg.getId())) {
+					//本期本币借方金额(CNY)
+					genleg.setAmountDr(finGenleg.getAmountDr());
+					//本期本币贷方金额(CNY)
+					genleg.setAmountCr(finGenleg.getAmountCr());
+					//本年本币借方金额(CNY)
+					genleg.setAmountYearDr(finGenleg.getAmountYearDr());
+					//本年本币贷方金额(CNY)
+					genleg.setAmountYearCr(finGenleg.getAmountYearCr());
+					//本期外币借方金额
+					genleg.setAmountDrUsd(finGenleg.getAmountDrUsd());
+					//本期外币贷方金额
+					genleg.setAmountCrUsd(finGenleg.getAmountCrUsd());
+					//本年外币借方金额(USD)
+					genleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd());
+					//本年外币贷方金额(USD)
+					genleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd());
+					//本期本币余额(CNY)
+					genleg.setAmountBlc(finGenleg.getAmountBlc());
+					//本期外币余额
+					genleg.setAmountUsdBlc(finGenleg.getAmountUsdBlc());
+
+				}
+			}
 		}
+		return finGenlegList;
 	}
 
 	private FinGenleg genlegAccountingFinGenleg(Accounts accounts, FinVouchersItems item, FinGenleg finGenleg) {
@@ -664,18 +1109,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			amountDrUsd = amountDrUsd.add(item.getAmountCrUsd());
 			//本年本币借方金额(CNY)
 			amountYearDrUsd = amountYearDrUsd.add(item.getAmountCrUsd());
-			//本期本币借方金额(CNY)
-			amountDr = amountDr.add(item.getAmountCrUsd().multiply(item.getExrate()));
-			//本年本币借方金额(CNY)
-			amountYearDr = amountYearDr.add(item.getAmountCrUsd().multiply(item.getExrate()));
 			//本期本币贷方金额(CNY)
 			amountCrUsd = amountCrUsd.add(item.getAmountDrUsd());
 			//本年本币贷方金额(CNY)
 			amountYearCrUsd = amountYearCrUsd.add(item.getAmountDrUsd());
-			//本期本币贷方金额(CNY)
-			amountCr = amountCr.add(item.getAmountDrUsd().multiply(item.getExrate()));
-			//本年本币贷方金额(CNY)
-			amountYearCr = amountYearCr.add(item.getAmountDrUsd().multiply(item.getExrate()));
 		} else {
 			//本期本币借方金额(CNY)
 			amountDr = amountDr.add(item.getAmountDr());
@@ -689,18 +1126,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			amountDrUsd = amountDrUsd.add(item.getAmountDrUsd());
 			//本年本币借方金额(CNY)
 			amountYearDrUsd = amountYearDrUsd.add(item.getAmountDrUsd());
-			//本期本币借方金额(CNY)
-			amountDr = amountDr.add(item.getAmountDrUsd().multiply(item.getExrate()));
-			//本年本币借方金额(CNY)
-			amountYearDr = amountYearDr.add(item.getAmountDrUsd().multiply(item.getExrate()));
 			//本期本币贷方金额(CNY)
 			amountCrUsd = amountCrUsd.add(item.getAmountCrUsd());
 			//本年本币贷方金额(CNY)
 			amountYearCrUsd = amountYearCrUsd.add(item.getAmountCrUsd());
-			//本期本币贷方金额(CNY)
-			amountCr = amountCr.add(item.getAmountCrUsd().multiply(item.getExrate()));
-			//本年本币贷方金额(CNY)
-			amountYearCr = amountYearCr.add(item.getAmountCrUsd().multiply(item.getExrate()));
 		}
 		if ("D".equals(finGenleg.getDc())) {
 			amountBlc = amountLastBlc.add(amountDr).subtract(amountCr);
@@ -847,8 +1276,6 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		amountYearCrCalc = amountYearCrCalc.add(item.getAmountCr());
 		//本期本币借方金额(USD)
 		amountDrUsdCalc = amountDrUsdCalc.add(item.getAmountDrUsd());
-		//本期本币借方金额(CNY)
-		amountDrCalc = amountDrCalc.add(item.getAmountDrUsd().multiply(item.getExrate()));
 		//本年本币借方金额(USD)
 		amountYearDrUsdCalc = amountYearDrUsdCalc.add(item.getAmountDrUsd());
 		//本年本币借方金额(CNY)
@@ -942,18 +1369,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			amountDrUsd = amountDrUsd.subtract(item.getAmountCrUsd());
 			//本年本币借方金额(CNY)
 			amountYearDrUsd = amountYearDrUsd.subtract(item.getAmountCrUsd());
-			//本期本币借方金额(CNY)
-			amountDr = amountDr.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
-			//本年本币借方金额(CNY)
-			amountYearDr = amountYearDr.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
 			//本期本币贷方金额(CNY)
 			amountCrUsd = amountCrUsd.subtract(item.getAmountDrUsd());
 			//本年本币贷方金额(CNY)
 			amountYearCrUsd = amountYearCrUsd.subtract(item.getAmountDrUsd());
-			//本期本币贷方金额(CNY)
-			amountCr = amountCr.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
-			//本年本币贷方金额(CNY)
-			amountYearCr = amountYearCr.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
 		} else {
 			//本期本币借方金额(CNY)
 			amountDr = amountDr.subtract(item.getAmountDr());
@@ -967,18 +1386,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			amountDrUsd = amountDrUsd.subtract(item.getAmountDrUsd());
 			//本年本币借方金额(CNY)
 			amountYearDrUsd = amountYearDrUsd.subtract(item.getAmountDrUsd());
-			//本期本币借方金额(CNY)
-			amountDr = amountDr.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
-			//本年本币借方金额(CNY)
-			amountYearDr = amountYearDr.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
 			//本期本币贷方金额(CNY)
 			amountCrUsd = amountCrUsd.subtract(item.getAmountCrUsd());
 			//本年本币贷方金额(CNY)
 			amountYearCrUsd = amountYearCrUsd.subtract(item.getAmountCrUsd());
-			//本期本币贷方金额(CNY)
-			amountCr = amountCr.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
-			//本年本币贷方金额(CNY)
-			amountYearCr = amountYearCr.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
 		}
 		if ("D".equals(finGenleg.getDc())) {
 			amountBlc = amountLastBlc.subtract(amountDr).add(amountCr);
@@ -1053,18 +1464,10 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		amountDrUsdCalc = amountDrUsdCalc.subtract(item.getAmountDrUsd());
 		//本年本币借方金额(CNY)
 		amountYearDrUsdCalc = amountYearDrUsdCalc.subtract(item.getAmountDrUsd());
-		//本期本币借方金额(CNY)
-		amountDrCalc = amountDrCalc.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
-		//本年本币借方金额(CNY)
-		amountYearDrCalc = amountYearDrCalc.subtract(item.getAmountDrUsd().multiply(item.getExrate()));
 		//本期本币贷方金额(CNY)
 		amountCrUsdCalc = amountCrUsdCalc.subtract(item.getAmountCrUsd());
 		//本年本币贷方金额(CNY)
 		amountYearCrUsdCalc = amountYearCrUsdCalc.subtract(item.getAmountCrUsd());
-		//本期本币贷方金额(CNY)
-		amountCrCalc = amountCrCalc.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
-		//本年本币贷方金额(CNY)
-		amountYearCrCalc = amountYearCrCalc.subtract(item.getAmountCrUsd().multiply(item.getExrate()));
 		if ("D".equals(accounts.getDc())) {
 			amountBlcCalc = amountLastBlcCalc.subtract(amountDrCalc).add(amountCrCalc);
 			amountUsdBlcCalc = amountLastBlcUsdCalc.subtract(amountDrUsdCalc).add(amountCrUsdCalc);
@@ -1141,17 +1544,13 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 		List<FinVouchersItems> finVouchersItemsList = finVouchersItemsService.list(new LambdaQueryWrapper<FinVouchersItems>()
 			.apply("find_in_set(pid,'" + ids + "')"));
 		List<Accounts> accountsList = new ArrayList<>();
-		List<FinGenleg> finGenlegList = new ArrayList<>();
-		List<FinGenlegCalc> finGenlegCalcList = new ArrayList<>();
+		List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<>());
+		List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<>());
 		if (ObjectUtils.isNotNull(finVouchersItemsList)) {
 			List<Long> accId = finVouchersItemsList.stream().map(FinVouchersItems::getAccountId).collect(Collectors.toList());
 			if (!accId.isEmpty()) {
 				accountsList = accountsService.list(new LambdaQueryWrapper<Accounts>()
 					.in(Accounts::getId, accId));
-				finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-					.in(FinGenleg::getAccId, accId));
-				finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-					.in(FinGenlegCalc::getAccId, accId));
 			}
 		}
 		List<FinGenleg> finGenlegListNew = new ArrayList<>();
@@ -1177,17 +1576,89 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 							if (ObjectUtils.isNotNull(finGenlegCalc)) {
 								finGenlegCalcListNew.add(finGenlegCalc);
 							}
+							FinGenlegCalc finalFinGenlegCalc = finGenlegCalc;
+							FinGenlegCalc finGenlegP = finGenlegCalcList.stream().filter(e -> e.getAccId().equals(finalFinGenlegCalc.getParentId()) &&
+								e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
+							if (finGenlegP != null) {
+								/*for (FinGenlegCalc genleg : finGenlegCalcList) {
+									if (finGenlegP.getId().equals(genleg.getId())) {
+										//本期本币借方金额(CNY)
+										genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
+										//本期本币贷方金额(CNY)
+										genleg.setAmountCr(genleg.getAmountCr().subtract(item.getAmountCr()));
+										//本年本币借方金额(CNY)
+										genleg.setAmountYearDr(genleg.getAmountYearDr().subtract(item.getAmountDr()));
+										//本年本币贷方金额(CNY)
+										genleg.setAmountYearCr(genleg.getAmountYearCr().subtract(item.getAmountCr()));
+										//本期外币借方金额
+										genleg.setAmountDrUsd(genleg.getAmountDrUsd().subtract(item.getAmountDrUsd()));
+										//本期外币贷方金额
+										genleg.setAmountCrUsd(genleg.getAmountCrUsd().subtract(item.getAmountCrUsd()));
+										//本年外币借方金额(USD)
+										genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().subtract(item.getAmountDrUsd()));
+										//本年外币贷方金额(USD)
+										genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().subtract(item.getAmountCrUsd()));
+										if ("D".equals(finalFinGenlegCalc.getDc())) {
+											//本期本币余额(CNY)
+											genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+											//本期外币余额
+											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+										} else {
+											//本期本币余额(CNY)
+											genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+											//本期外币余额
+											genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+										}
+									}
+								}*/
+								List<FinGenlegCalc> finGenlegs = new ArrayList<>();
+								finGenlegCalcList = revokeGenlegCalcAccountingFor(item, finGenlegP, finGenlegCalcList, finGenlegs);
+								if (!finGenlegs.isEmpty()) {
+									finGenlegCalcListNew.addAll(finGenlegs);
+								}
+							}
 						}
 						finGenleg = revokeGenlegAccountingFinGenleg(accounts, item, finGenleg);
 						if (ObjectUtils.isNotNull(finGenleg)) {
 							finGenlegListNew.add(finGenleg);
 						}
 						FinGenleg finalFinGenleg = finGenleg;
-						FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getParentId().equals(finalFinGenleg.getAccId()) &&
+						FinGenleg finGenlegP = finGenlegList.stream().filter(e -> e.getAccId().equals(finalFinGenleg.getParentId()) &&
 							e.getAccyear().equals(item.getAccountYear()) && e.getAccmonth().equals(item.getAccountMonth())).findFirst().orElse(null);
 						if (finGenlegP != null) {
+							/*for (FinGenleg genleg : finGenlegList) {
+								if (finGenlegP.getId().equals(genleg.getId())) {
+									//本期本币借方金额(CNY)
+									genleg.setAmountDr(genleg.getAmountDr().subtract(item.getAmountDr()));
+									//本期本币贷方金额(CNY)
+									genleg.setAmountCr(genleg.getAmountCr().subtract(item.getAmountCr()));
+									//本年本币借方金额(CNY)
+									genleg.setAmountYearDr(genleg.getAmountYearDr().subtract(item.getAmountDr()));
+									//本年本币贷方金额(CNY)
+									genleg.setAmountYearCr(genleg.getAmountYearCr().subtract(item.getAmountCr()));
+									//本期外币借方金额
+									genleg.setAmountDrUsd(genleg.getAmountDrUsd().subtract(item.getAmountDrUsd()));
+									//本期外币贷方金额
+									genleg.setAmountCrUsd(genleg.getAmountCrUsd().subtract(item.getAmountCrUsd()));
+									//本年外币借方金额(USD)
+									genleg.setAmountYearDrUsd(genleg.getAmountYearDrUsd().subtract(item.getAmountDrUsd()));
+									//本年外币贷方金额(USD)
+									genleg.setAmountYearCrUsd(genleg.getAmountYearCrUsd().subtract(item.getAmountCrUsd()));
+									if ("D".equals(finGenleg.getDc())) {
+										//本期本币余额(CNY)
+										genleg.setAmountBlc(genleg.getAmountBlc().subtract(item.getAmountDr()).add(item.getAmountCr()));
+										//本期外币余额
+										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().subtract(item.getAmountDrUsd()).add(item.getAmountCrUsd()));
+									} else {
+										//本期本币余额(CNY)
+										genleg.setAmountBlc(genleg.getAmountBlc().add(item.getAmountDr()).subtract(item.getAmountCr()));
+										//本期外币余额
+										genleg.setAmountUsdBlc(genleg.getAmountUsdBlc().add(item.getAmountDrUsd()).subtract(item.getAmountCrUsd()));
+									}
+								}
+							}*/
 							List<FinGenleg> finGenlegs = new ArrayList<>();
-							revokeGenlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
+							finGenlegList = revokeGenlegAccountingFor(item, finGenlegP, finGenlegList, finGenlegs);
 							if (!finGenlegs.isEmpty()) {
 								finGenlegListNew.addAll(finGenlegs);
 							}
@@ -1230,8 +1701,12 @@ public class FinVouchersServiceImpl extends ServiceImpl<FinVouchersMapper, FinVo
 			detail.setVoucherStatus(0);
 			finVouchersListNew.add(detail);
 		}
-		finGenlegService.saveOrUpdateBatch(finGenlegListNew);
-		finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcListNew);
+		if (!finGenlegListNew.isEmpty()) {
+			finGenlegService.saveOrUpdateBatch(finGenlegListNew);
+		}
+		if (!finGenlegCalcListNew.isEmpty()) {
+			finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcListNew);
+		}
 		this.saveOrUpdateBatch(finVouchersListNew);
 		finVouchersItemsService.saveOrUpdateBatch(finVouchersItemsListNew);
 		feeCenterService.saveOrUpdateBatch(feeCenterListNew);

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/accountManagement/controller/AccountManagementController.java

@@ -119,6 +119,9 @@ public class AccountManagementController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入accountManagement")
 	public R update(@Valid @RequestBody PjAccountManagement accountManagement) {
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			throw new RuntimeException("暂无权限,删除失败");
+		}
 		if (accountManagement.getId() == null) {
 			return R.fail(500, "请选择要删除的数据");
 		}

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/brand/controller/BrandDescController.java

@@ -166,6 +166,9 @@ public class BrandDescController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入brandDesc")
 	public R update(@Valid @RequestBody PjBrandDesc brandDesc) {
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			throw new RuntimeException("暂无权限,请联系管理员");
+		}
 		if (brandDesc.getId() == null) {
 			return R.fail(500, "请选择要删除的数据");
 		}

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/controller/CorpsDescController.java

@@ -170,6 +170,9 @@ public class CorpsDescController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入corpsDesc")
 	public R update(@Valid @RequestBody PjCorpsDesc corpsDesc) {
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			throw new RuntimeException("暂无权限,删除失败");
+		}
 		if (corpsDesc.getId() == null) {
 			return R.data(500, "请选择要删除的数据", "error");
 		}

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/goods/controller/GoodsDescController.java

@@ -183,6 +183,9 @@ public class GoodsDescController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入goods")
 	public R update(@Valid @RequestBody PjGoodsDesc goodsDesc) {
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			throw new RuntimeException("暂无权限,请联系管理员");
+		}
 		if (goodsDesc.getId() == null) {
 			return R.fail(500, "请选择要删除的数据");
 		}

+ 3 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/storage/controller/StorageDescController.java

@@ -124,6 +124,9 @@ public class StorageDescController extends BladeController {
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "修改", notes = "传入storageDesc")
 	public R update(@Valid @RequestBody PjStorageDesc storageDesc) {
+		if (!AuthUtil.getUserRole().contains("admin")) {
+			throw new RuntimeException("暂无权限,删除失败");
+		}
 		if (storageDesc.getId() == null) {
 			return R.data(500, "请选择要删除的数据", "error");
 		}