فهرست منبع

2024年10月22日16:44:57

纪新园 1 سال پیش
والد
کامیت
9dcab3d126

+ 72 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/FeeSettlementExcel.java

@@ -0,0 +1,72 @@
+package org.springblade.los.statisticAnalysis;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/3/6
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class FeeSettlementExcel {
+
+	@ExcelProperty(value = "是否结算")
+	private String whetherSettlement;
+	@ExcelProperty(value = "费用类型")
+	private String dc;
+	@ExcelProperty(value = "费用名称")
+	private String feeName;
+	@ExcelProperty(value = "往来单位")
+	private String corpName;
+	@ExcelProperty(value = "业务编号")
+	private String billNo;
+	@ExcelProperty(value = "提单号")
+	private String mblno;
+	@ExcelProperty(value = "来源编号")
+	private String srcNo;
+	@ExcelProperty(value = "业务日期")
+	private String billDate;
+	@ExcelProperty(value = "金额(人民币)")
+	private BigDecimal amount;
+	@ExcelProperty(value = "金额(美金)")
+	private BigDecimal amountUsd;
+	@ExcelProperty(value = "结算金额(人民币)")
+	private BigDecimal settlementAmount;
+	@ExcelProperty(value = "结算金额(美金)")
+	private BigDecimal settlementAmountUsd;
+	@ExcelProperty(value = "余额(人民币)")
+	private BigDecimal balanceAmount;
+	@ExcelProperty(value = "余额(美金)")
+	private BigDecimal balanceAmountUsd;
+	@ExcelProperty(value = "业务类型")
+	private String type;
+
+	/**
+	 * 开始日期
+	 */
+	@ExcelIgnore
+	private String startDate;
+
+	/**
+	 * 结束日期
+	 */
+	@ExcelIgnore
+	private String endDate;
+
+	/**
+	 * 来源id
+	 */
+	@ExcelIgnore
+	private Long srcId;
+
+
+}

+ 23 - 20
blade-service/blade-los/src/main/java/org/springblade/los/basic/cntr/service/impl/BCntrTypesServiceImpl.java

@@ -21,19 +21,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.los.Util.IDeptUtils;
-import org.springblade.los.Util.RegularUtils;
 import org.springblade.los.Util.StringTools;
 import org.springblade.los.basic.cntr.entity.BCntrTypes;
 import org.springblade.los.basic.cntr.mapper.CntrTypesMapper;
 import org.springblade.los.basic.cntr.service.IBCntrTypesService;
 import org.springblade.los.basic.cntr.vo.BCntrTypesVO;
-import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.excel.BCntrTypesExcel;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
@@ -64,8 +61,8 @@ public class BCntrTypesServiceImpl extends ServiceImpl<CntrTypesMapper, BCntrTyp
 	}
 
 	@Override
-	public R submit(BCntrTypes bCntrTypess) throws Exception{
-		Object object = StringTools.handle(bCntrTypess,"BCntrTypes");
+	public R submit(BCntrTypes bCntrTypess) throws Exception {
+		Object object = StringTools.handle(bCntrTypess, "BCntrTypes");
 		BCntrTypes bCntrTypes = JSONObject.parseObject(JSONObject.toJSONString(object), BCntrTypes.class);
 		if (bCntrTypes.getId() == null) {
 			bCntrTypes.setCreateTime(new Date());
@@ -84,9 +81,9 @@ public class BCntrTypesServiceImpl extends ServiceImpl<CntrTypesMapper, BCntrTyp
 				throw new RuntimeException("海关编码已存在");
 			}
 			//获取部门ids对应中文名
-			if (ObjectUtils.isNotNull(deptUtils.getDeptPid()+"")) {
-				bCntrTypes.setCreateDept(deptUtils.getDeptPid()+"");
-				R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid()+"");
+			if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+				bCntrTypes.setCreateDept(deptUtils.getDeptPid() + "");
+				R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid() + "");
 				if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 					bCntrTypes.setCreateDeptName(String.join(",", res.getData()));
 				}
@@ -109,20 +106,26 @@ public class BCntrTypesServiceImpl extends ServiceImpl<CntrTypesMapper, BCntrTyp
 			if (ObjectUtils.isNull(item.getCnName())) {
 				throw new RuntimeException("中文名称不能为空");
 			}
-			if (1 == item.getIsDanger() || 0 == item.getIsDanger()) {
+			if (ObjectUtils.isNotNull(item.getIsDanger())) {
+				if (1 == item.getIsDanger() || 0 == item.getIsDanger()) {
 
-			} else {
-				throw new RuntimeException("是否危柜数据错误");
+				} else {
+					throw new RuntimeException("是否危柜数据错误");
+				}
 			}
-			if (1 == item.getIsReefer() || 0 == item.getIsReefer()) {
+			if (ObjectUtils.isNotNull(item.getIsDanger())) {
+				if (1 == item.getIsReefer() || 0 == item.getIsReefer()) {
 
-			} else {
-				throw new RuntimeException("是否冻柜数据错误");
+				} else {
+					throw new RuntimeException("是否冻柜数据错误");
+				}
 			}
-			if (1 == item.getIsGeneral() || 0 == item.getIsGeneral()) {
+			if (ObjectUtils.isNotNull(item.getIsDanger())) {
+				if (1 == item.getIsGeneral() || 0 == item.getIsGeneral()) {
 
-			} else {
-				throw new RuntimeException("是否普柜数据错误");
+				} else {
+					throw new RuntimeException("是否普柜数据错误");
+				}
 			}
 
 			BCntrTypes detail = baseMapper.selectOne(new LambdaQueryWrapper<BCntrTypes>()
@@ -135,9 +138,9 @@ public class BCntrTypesServiceImpl extends ServiceImpl<CntrTypesMapper, BCntrTyp
 				bCntrTypes.setCreateUser(AuthUtil.getUserId());
 				bCntrTypes.setCreateUserName(AuthUtil.getUserName());
 				//获取部门ids对应中文名
-				if (ObjectUtils.isNotNull(deptUtils.getDeptPid()+"")) {
-					bCntrTypes.setCreateDept(deptUtils.getDeptPid()+"");
-					R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid()+"");
+				if (ObjectUtils.isNotNull(deptUtils.getDeptPid() + "")) {
+					bCntrTypes.setCreateDept(deptUtils.getDeptPid() + "");
+					R<List<String>> res = sysClient.getDeptNames(deptUtils.getDeptPid() + "");
 					if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
 						bCntrTypes.setCreateDeptName(String.join(",", res.getData()));
 					}

+ 1 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/fees/service/impl/BFeesServiceImpl.java

@@ -140,6 +140,7 @@ public class BFeesServiceImpl extends ServiceImpl<FeesMapper, BFees> implements
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<BFees>> importBFees(List<BFeesExcel> excelList) {
 		List<BFees> bFeesList = new ArrayList<>();
 		for (BFeesExcel item : excelList) {

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/modes/service/impl/BTradeModesServiceImpl.java

@@ -33,6 +33,7 @@ import org.springblade.los.basic.modes.service.IBTradeModesService;
 import org.springblade.los.basic.modes.vo.BTradeModesVO;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -88,6 +89,7 @@ public class BTradeModesServiceImpl extends ServiceImpl<TradeModesMapper, BTrade
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<BTradeModes>> importBTradeModes(List<BTradeModesExcel> excelList) {
 		List<BTradeModes> bTradeModesList = new ArrayList<>();
 		for (BTradeModesExcel item : excelList) {

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/terms/service/impl/BServiceTermsServiceImpl.java

@@ -33,6 +33,7 @@ import org.springblade.los.basic.terms.service.IBServiceTermsService;
 import org.springblade.los.basic.terms.vo.BServiceTermsVO;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -88,6 +89,7 @@ public class BServiceTermsServiceImpl extends ServiceImpl<ServiceTermsMapper, BS
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<BServiceTerms>> importBServiceTerms(List<BServiceTermsExcel> excelList) {
 		List<BServiceTerms> bServiceTermsList = new ArrayList<>();
 		for (BServiceTermsExcel item : excelList) {

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/units/service/impl/BUnitsServiceImpl.java

@@ -36,6 +36,7 @@ import org.springblade.los.business.sea.mapper.PreContainersMapper;
 import org.springblade.los.excel.BUnitsExcel;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -97,6 +98,7 @@ public class BUnitsServiceImpl extends ServiceImpl<UnitsMapper, BUnits> implemen
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<BUnits>> importBUnits(List<BUnitsExcel> excelList) {
 		List<BUnits> bUnitsList = new ArrayList<>();
 		for (BUnitsExcel item : excelList) {

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/basic/voucher/service/impl/BVoucherTypeServiceImpl.java

@@ -32,6 +32,7 @@ import org.springblade.los.basic.voucher.service.IBVoucherTypeService;
 import org.springblade.los.basic.voucher.vo.BVoucherTypeVO;
 import org.springblade.system.feign.ISysClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -85,6 +86,7 @@ public class BVoucherTypeServiceImpl extends ServiceImpl<VoucherTypeMapper, BVou
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R<List<BVoucherType>> importBVoucherType(List<BVoucherTypeExcel> excelList) {
 		List<BVoucherType> bVoucherTypeList = new ArrayList<>();
 		for (BVoucherTypeExcel item : excelList) {

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

@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import org.springblade.core.excel.util.ExcelUtil;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -125,6 +124,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			.ge(FinPeriod::getPeriodYear, periodYear)
 			.ge(FinPeriod::getPeriodMonth, periodMonth)
 		);
+		String status = sysClient.getParamService("whether.open");
 		if (!finPeriodList.isEmpty()) {
 			FinPeriod detail = baseMapper.selectOne(new LambdaQueryWrapper<FinPeriod>()
 				.eq(FinPeriod::getTenantId, AuthUtil.getTenantId())
@@ -145,79 +145,81 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 				detail.setUpdateTime(new Date());
 				baseMapper.updateById(detail);
 			}
-			List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
-				.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
-				.eq(FinVouchers::getIsDeleted, 0)
-				.eq(FinVouchers::getBranchId, deptUtils.getDeptPid())
-				.ge(FinVouchers::getAccountYear, periodYear)
-				.ge(FinVouchers::getAccountMonth, periodMonth));
-			if (!finVouchersList.isEmpty()) {
-				for (FinVouchers item : finVouchersList) {
-					item.setVoucherStatus(0);
-					item.setUpdateUser(AuthUtil.getUserId());
-					item.setUpdateUserName(AuthUtil.getUserName());
-					item.setUpdateTime(new Date());
-				}
-				finVouchersService.updateBatchById(finVouchersList);
-			}
-			List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-				.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
-				.eq(FinGenlegCalc::getBranchId, deptUtils.getDeptPid())
-				.ge(FinGenlegCalc::getAccyear, periodYear)
-				.ge(FinGenlegCalc::getAccmonth, periodMonth)
-			);
-			if (!finGenlegCalcList.isEmpty()) {
-				List<FinGenlegCalc> finGenlegCalcs = finGenlegCalcList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
-					e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
-				if (!finGenlegCalcs.isEmpty()) {
-					List<Long> idArr = finGenlegCalcs.stream().map(FinGenlegCalc::getId).distinct().collect(Collectors.toList());
-					List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
-					if (!ids.isEmpty()) {
-						finGenlegCalcService.removeByIds(ids);
-					}
-					for (FinGenlegCalc finGenlegCalc : finGenlegCalcs) {
-						finGenlegCalc.setAmountYearDr(finGenlegCalc.getAmountYearDr().subtract(finGenlegCalc.getAmountDr()));
-						finGenlegCalc.setAmountYearCr(finGenlegCalc.getAmountYearCr().subtract(finGenlegCalc.getAmountCr()));
-						finGenlegCalc.setAmountDr(new BigDecimal("0.00"));
-						finGenlegCalc.setAmountCr(new BigDecimal("0.00"));
-						finGenlegCalc.setAmountBlc(finGenlegCalc.getAmountLastBlc());
-						finGenlegCalc.setAmountYearDrUsd(finGenlegCalc.getAmountYearDrUsd().subtract(finGenlegCalc.getAmountDrUsd()));
-						finGenlegCalc.setAmountYearCrUsd(finGenlegCalc.getAmountYearCrUsd().subtract(finGenlegCalc.getAmountCrUsd()));
-						finGenlegCalc.setAmountDrUsd(new BigDecimal("0.00"));
-						finGenlegCalc.setAmountCrUsd(new BigDecimal("0.00"));
-						finGenlegCalc.setAmountUsdBlc(finGenlegCalc.getAmountLastBlcUsd());
+			if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+				List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
+					.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
+					.eq(FinVouchers::getIsDeleted, 0)
+					.eq(FinVouchers::getBranchId, deptUtils.getDeptPid())
+					.ge(FinVouchers::getAccountYear, periodYear)
+					.ge(FinVouchers::getAccountMonth, periodMonth));
+				if (!finVouchersList.isEmpty()) {
+					for (FinVouchers item : finVouchersList) {
+						item.setVoucherStatus(0);
+						item.setUpdateUser(AuthUtil.getUserId());
+						item.setUpdateUserName(AuthUtil.getUserName());
+						item.setUpdateTime(new Date());
 					}
-					finGenlegCalcService.updateBatchById(finGenlegCalcs);
+					finVouchersService.updateBatchById(finVouchersList);
 				}
-			}
-			List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-				.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
-				.eq(FinGenleg::getBranchId, deptUtils.getDeptPid())
-				.ge(FinGenleg::getAccyear, periodYear)
-				.ge(FinGenleg::getAccmonth, periodMonth)
-			);
-			if (!finGenlegList.isEmpty()) {
-				List<FinGenleg> finGenlegs = finGenlegList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
-					e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
-				if (!finGenlegs.isEmpty()) {
-					List<Long> idArr = finGenlegs.stream().map(FinGenleg::getId).distinct().collect(Collectors.toList());
-					List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
-					if (!ids.isEmpty()) {
-						finGenlegService.removeByIds(ids);
+				List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
+					.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
+					.eq(FinGenlegCalc::getBranchId, deptUtils.getDeptPid())
+					.ge(FinGenlegCalc::getAccyear, periodYear)
+					.ge(FinGenlegCalc::getAccmonth, periodMonth)
+				);
+				if (!finGenlegCalcList.isEmpty()) {
+					List<FinGenlegCalc> finGenlegCalcs = finGenlegCalcList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
+						e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
+					if (!finGenlegCalcs.isEmpty()) {
+						List<Long> idArr = finGenlegCalcs.stream().map(FinGenlegCalc::getId).distinct().collect(Collectors.toList());
+						List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
+						if (!ids.isEmpty()) {
+							finGenlegCalcService.removeByIds(ids);
+						}
+						for (FinGenlegCalc finGenlegCalc : finGenlegCalcs) {
+							finGenlegCalc.setAmountYearDr(finGenlegCalc.getAmountYearDr().subtract(finGenlegCalc.getAmountDr()));
+							finGenlegCalc.setAmountYearCr(finGenlegCalc.getAmountYearCr().subtract(finGenlegCalc.getAmountCr()));
+							finGenlegCalc.setAmountDr(new BigDecimal("0.00"));
+							finGenlegCalc.setAmountCr(new BigDecimal("0.00"));
+							finGenlegCalc.setAmountBlc(finGenlegCalc.getAmountLastBlc());
+							finGenlegCalc.setAmountYearDrUsd(finGenlegCalc.getAmountYearDrUsd().subtract(finGenlegCalc.getAmountDrUsd()));
+							finGenlegCalc.setAmountYearCrUsd(finGenlegCalc.getAmountYearCrUsd().subtract(finGenlegCalc.getAmountCrUsd()));
+							finGenlegCalc.setAmountDrUsd(new BigDecimal("0.00"));
+							finGenlegCalc.setAmountCrUsd(new BigDecimal("0.00"));
+							finGenlegCalc.setAmountUsdBlc(finGenlegCalc.getAmountLastBlcUsd());
+						}
+						finGenlegCalcService.updateBatchById(finGenlegCalcs);
 					}
-					for (FinGenleg finGenleg : finGenlegs) {
-						finGenleg.setAmountYearDr(finGenleg.getAmountYearDr().subtract(finGenleg.getAmountDr()));
-						finGenleg.setAmountYearCr(finGenleg.getAmountYearCr().subtract(finGenleg.getAmountCr()));
-						finGenleg.setAmountDr(new BigDecimal("0.00"));
-						finGenleg.setAmountCr(new BigDecimal("0.00"));
-						finGenleg.setAmountBlc(finGenleg.getAmountLastBlc());
-						finGenleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd().subtract(finGenleg.getAmountDrUsd()));
-						finGenleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd().subtract(finGenleg.getAmountCrUsd()));
-						finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
-						finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
-						finGenleg.setAmountUsdBlc(finGenleg.getAmountLastBlcUsd());
+				}
+				List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
+					.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
+					.eq(FinGenleg::getBranchId, deptUtils.getDeptPid())
+					.ge(FinGenleg::getAccyear, periodYear)
+					.ge(FinGenleg::getAccmonth, periodMonth)
+				);
+				if (!finGenlegList.isEmpty()) {
+					List<FinGenleg> finGenlegs = finGenlegList.stream().filter(e -> e.getAccyear().equals(periodYear) &&
+						e.getAccmonth().equals(periodMonth)).collect(Collectors.toList());
+					if (!finGenlegs.isEmpty()) {
+						List<Long> idArr = finGenlegs.stream().map(FinGenleg::getId).distinct().collect(Collectors.toList());
+						List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).filter(id -> !idArr.contains(id)).distinct().collect(Collectors.toList());
+						if (!ids.isEmpty()) {
+							finGenlegService.removeByIds(ids);
+						}
+						for (FinGenleg finGenleg : finGenlegs) {
+							finGenleg.setAmountYearDr(finGenleg.getAmountYearDr().subtract(finGenleg.getAmountDr()));
+							finGenleg.setAmountYearCr(finGenleg.getAmountYearCr().subtract(finGenleg.getAmountCr()));
+							finGenleg.setAmountDr(new BigDecimal("0.00"));
+							finGenleg.setAmountCr(new BigDecimal("0.00"));
+							finGenleg.setAmountBlc(finGenleg.getAmountLastBlc());
+							finGenleg.setAmountYearDrUsd(finGenleg.getAmountYearDrUsd().subtract(finGenleg.getAmountDrUsd()));
+							finGenleg.setAmountYearCrUsd(finGenleg.getAmountYearCrUsd().subtract(finGenleg.getAmountCrUsd()));
+							finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
+							finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
+							finGenleg.setAmountUsdBlc(finGenleg.getAmountLastBlcUsd());
+						}
+						finGenlegService.updateBatchById(finGenlegs);
 					}
-					finGenlegService.updateBatchById(finGenlegs);
 				}
 			}
 		}
@@ -444,21 +446,24 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 				}
 			}
 		}
-		List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
-			.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
-			.eq(FinVouchers::getIsDeleted, 0)
-			.eq(FinVouchers::getBranchId, detail.getBranchId())
-			.gt(FinVouchers::getVoucherDate, beginDate)
-			.lt(FinVouchers::getVoucherDate, endDate));
-		for (FinVouchers item : finVouchersList) {
-			if (3 != item.getStatus()) {
-				UnbookkeptExcel unbookkeptExcel = new UnbookkeptExcel();
-				unbookkeptExcel.setYear(item.getAccountYear() + "");
-				unbookkeptExcel.setMonth(item.getAccountMonth() + "");
-				unbookkeptExcel.setVoucherNumber(item.getVoucherNo());
-				unbookkeptExcel.setVoucherDate(item.getVoucherDate());
-				unbookkeptExcel.setOperator(item.getCreateUserName());
-				unbookkeptExcelList.add(unbookkeptExcel);
+		String status = sysClient.getParamService("whether.open");
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
+				.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
+				.eq(FinVouchers::getIsDeleted, 0)
+				.eq(FinVouchers::getBranchId, detail.getBranchId())
+				.gt(FinVouchers::getVoucherDate, beginDate)
+				.lt(FinVouchers::getVoucherDate, endDate));
+			for (FinVouchers item : finVouchersList) {
+				if (3 != item.getStatus()) {
+					UnbookkeptExcel unbookkeptExcel = new UnbookkeptExcel();
+					unbookkeptExcel.setYear(item.getAccountYear() + "");
+					unbookkeptExcel.setMonth(item.getAccountMonth() + "");
+					unbookkeptExcel.setVoucherNumber(item.getVoucherNo());
+					unbookkeptExcel.setVoucherDate(item.getVoucherDate());
+					unbookkeptExcel.setOperator(item.getCreateUserName());
+					unbookkeptExcelList.add(unbookkeptExcel);
+				}
 			}
 		}
 		if (!reviewFailedExcelList.isEmpty()) {
@@ -483,11 +488,14 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			.eq(FinPeriod::getIsClosed, 0)
 		);
 		List<PeriodVouchersTemplate> list = new ArrayList<>();
-		if (detail != null) {
+		String status = sysClient.getParamService("whether.open");
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			if (detail != null) {
 			/*PeriodVouchersTemplate exchange = JSONObject.parseObject(detail.getExchange(), PeriodVouchersTemplate.class);
 			list.add(exchange);*/
-			PeriodVouchersTemplate period = JSONObject.parseObject(detail.getPeriod(), PeriodVouchersTemplate.class);
-			list.add(period);
+				PeriodVouchersTemplate period = JSONObject.parseObject(detail.getPeriod(), PeriodVouchersTemplate.class);
+				list.add(period);
+			}
 		}
 		return R.data(list);
 	}
@@ -505,6 +513,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		if (1 == detail.getIsClosed()) {
 			throw new RuntimeException("该期间已结转,请勿重复结转!");
 		}
+		String status = sysClient.getParamService("whether.open");
 		PeriodVouchersTemplate period = JSONObject.parseObject(detail.getPeriod(), PeriodVouchersTemplate.class);
 		if (period != null) {
 			period.setStatus(1);
@@ -524,19 +533,20 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			}
 		}*/
 		baseMapper.updateById(detail);
-
-		List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
-			.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
-			.eq(FinVouchers::getIsDeleted, 0)
-			.eq(FinVouchers::getBranchId, detail.getBranchId())
-			.and(e -> e.eq(FinVouchers::getVoucherSource, "FM-PERIOD-PL-TRANSFER")
-				.or().eq(FinVouchers::getVoucherSource, "FM-CURRENCY-PL-TRANSFER"))
-			.eq(FinVouchers::getAccountYear, detail.getPeriodYear())
-			.eq(FinVouchers::getAccountMonth, detail.getPeriodMonth())
-			.gt(FinVouchers::getVoucherDate, detail.getBeginDate())
-			.lt(FinVouchers::getVoucherDate, detail.getEndDate()));
-		if (finVouchersList.size() != 2) {
-			throw new RuntimeException("请先生成本期汇兑损益,期间损益凭证在进行结转");
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			List<FinVouchers> finVouchersList = finVouchersService.list(new LambdaQueryWrapper<FinVouchers>()
+				.eq(FinVouchers::getTenantId, AuthUtil.getTenantId())
+				.eq(FinVouchers::getIsDeleted, 0)
+				.eq(FinVouchers::getBranchId, detail.getBranchId())
+				.and(e -> e.eq(FinVouchers::getVoucherSource, "FM-PERIOD-PL-TRANSFER")
+					.or().eq(FinVouchers::getVoucherSource, "FM-CURRENCY-PL-TRANSFER"))
+				.eq(FinVouchers::getAccountYear, detail.getPeriodYear())
+				.eq(FinVouchers::getAccountMonth, detail.getPeriodMonth())
+				.gt(FinVouchers::getVoucherDate, detail.getBeginDate())
+				.lt(FinVouchers::getVoucherDate, detail.getEndDate()));
+			if (finVouchersList.size() != 2) {
+				throw new RuntimeException("请先生成本期汇兑损益,期间损益凭证在进行结转");
+			}
 		}
 		FinPeriod finPeriodNew = new FinPeriod();
 		if (ObjectUtils.isNotNull(finPeriod.getBeginDate())) {
@@ -567,84 +577,85 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		finPeriodNew.setExchange(detail.getExchange());
 		finPeriodNew.setPeriod(detail.getPeriod());
 		this.submit(finPeriodNew);
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
+				.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
+				.eq(FinGenlegCalc::getAccyear, detail.getPeriodYear())
+				.eq(FinGenlegCalc::getAccmonth, detail.getPeriodMonth()));
+			List<FinGenlegCalc> finGenlegCalcNewList = new ArrayList<>();
+			for (FinGenlegCalc item : finGenlegCalcList) {
+				FinGenlegCalc finGenlegCalc = new FinGenlegCalc();
+				BeanUtil.copyProperties(item, finGenlegCalc);
+				finGenlegCalc.setId(null);
+				finGenlegCalc.setAccmonth(finPeriodNew.getPeriodMonth());
+				finGenlegCalc.setAccyear(finPeriodNew.getPeriodYear());
+				//本期上期余额等于上期余额
+				finGenlegCalc.setAmountLastBlc(item.getAmountBlc());
+				finGenlegCalc.setAmountLastBlcUsd(item.getAmountUsdBlc());
+				//本期借,贷金额清零
+				finGenlegCalc.setAmountDr(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountYearDr(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountCr(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountYearCr(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountDrUsd(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountYearDrUsd(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountCrUsd(new BigDecimal("0.00"));
+				finGenlegCalc.setAmountYearCrUsd(new BigDecimal("0.00"));
+				//本期余额 = 上期余额+借-贷
+				finGenlegCalc.setAmountBlc(item.getAmountBlc());
+				finGenlegCalc.setAmountUsdBlc(item.getAmountUsdBlc());
 
-		List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-			.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
-			.eq(FinGenlegCalc::getAccyear, detail.getPeriodYear())
-			.eq(FinGenlegCalc::getAccmonth, detail.getPeriodMonth()));
-		List<FinGenlegCalc> finGenlegCalcNewList = new ArrayList<>();
-		for (FinGenlegCalc item : finGenlegCalcList) {
-			FinGenlegCalc finGenlegCalc = new FinGenlegCalc();
-			BeanUtil.copyProperties(item, finGenlegCalc);
-			finGenlegCalc.setId(null);
-			finGenlegCalc.setAccmonth(finPeriodNew.getPeriodMonth());
-			finGenlegCalc.setAccyear(finPeriodNew.getPeriodYear());
-			//本期上期余额等于上期余额
-			finGenlegCalc.setAmountLastBlc(item.getAmountBlc());
-			finGenlegCalc.setAmountLastBlcUsd(item.getAmountUsdBlc());
-			//本期借,贷金额清零
-			finGenlegCalc.setAmountDr(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountYearDr(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountCr(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountYearCr(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountDrUsd(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountYearDrUsd(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountCrUsd(new BigDecimal("0.00"));
-			finGenlegCalc.setAmountYearCrUsd(new BigDecimal("0.00"));
-			//本期余额 = 上期余额+借-贷
-			finGenlegCalc.setAmountBlc(item.getAmountBlc());
-			finGenlegCalc.setAmountUsdBlc(item.getAmountUsdBlc());
-
-			//本期上期数量等于上期余额数量
-			finGenlegCalc.setQuantityLastBlc(item.getQuantityBlc());
-			//本期借,贷数量清零
-			finGenlegCalc.setQuantityDr(new BigDecimal("0.00"));
-			finGenlegCalc.setQuantityCr(new BigDecimal("0.00"));
-			//本期余额数量 = 上期余额数量+借-贷
-			finGenlegCalc.setQuantityBlc(item.getQuantityBlc());
-			finGenlegCalcNewList.add(finGenlegCalc);
-		}
-		if (!finGenlegCalcNewList.isEmpty()) {
-			finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcNewList);
-		}
-		List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-			.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
-			.eq(FinGenleg::getAccyear, detail.getPeriodYear())
-			.eq(FinGenleg::getAccmonth, detail.getPeriodMonth()));
-		List<FinGenleg> finGenlegNewList = new ArrayList<>();
-		for (FinGenleg item : finGenlegList) {
-			FinGenleg finGenleg = new FinGenleg();
-			BeanUtil.copyProperties(item, finGenleg);
-			finGenleg.setId(null);
-			finGenleg.setAccmonth(finPeriodNew.getPeriodMonth());
-			finGenleg.setAccyear(finPeriodNew.getPeriodYear());
-			//本期上期余额等于上期余额
-			finGenleg.setAmountLastBlc(item.getAmountBlc());
-			finGenleg.setAmountLastBlcUsd(item.getAmountUsdBlc());
-			//本期借,贷金额清零
-			finGenleg.setAmountDr(new BigDecimal("0.00"));
-			finGenleg.setAmountYearDr(new BigDecimal("0.00"));
-			finGenleg.setAmountCr(new BigDecimal("0.00"));
-			finGenleg.setAmountYearCr(new BigDecimal("0.00"));
-			finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
-			finGenleg.setAmountYearDrUsd(new BigDecimal("0.00"));
-			finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
-			finGenleg.setAmountYearCrUsd(new BigDecimal("0.00"));
-			//本期余额 = 上期余额+借-贷
-			finGenleg.setAmountBlc(item.getAmountBlc());
-			finGenleg.setAmountUsdBlc(item.getAmountUsdBlc());
+				//本期上期数量等于上期余额数量
+				finGenlegCalc.setQuantityLastBlc(item.getQuantityBlc());
+				//本期借,贷数量清零
+				finGenlegCalc.setQuantityDr(new BigDecimal("0.00"));
+				finGenlegCalc.setQuantityCr(new BigDecimal("0.00"));
+				//本期余额数量 = 上期余额数量+借-贷
+				finGenlegCalc.setQuantityBlc(item.getQuantityBlc());
+				finGenlegCalcNewList.add(finGenlegCalc);
+			}
+			if (!finGenlegCalcNewList.isEmpty()) {
+				finGenlegCalcService.saveOrUpdateBatch(finGenlegCalcNewList);
+			}
+			List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
+				.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
+				.eq(FinGenleg::getAccyear, detail.getPeriodYear())
+				.eq(FinGenleg::getAccmonth, detail.getPeriodMonth()));
+			List<FinGenleg> finGenlegNewList = new ArrayList<>();
+			for (FinGenleg item : finGenlegList) {
+				FinGenleg finGenleg = new FinGenleg();
+				BeanUtil.copyProperties(item, finGenleg);
+				finGenleg.setId(null);
+				finGenleg.setAccmonth(finPeriodNew.getPeriodMonth());
+				finGenleg.setAccyear(finPeriodNew.getPeriodYear());
+				//本期上期余额等于上期余额
+				finGenleg.setAmountLastBlc(item.getAmountBlc());
+				finGenleg.setAmountLastBlcUsd(item.getAmountUsdBlc());
+				//本期借,贷金额清零
+				finGenleg.setAmountDr(new BigDecimal("0.00"));
+				finGenleg.setAmountYearDr(new BigDecimal("0.00"));
+				finGenleg.setAmountCr(new BigDecimal("0.00"));
+				finGenleg.setAmountYearCr(new BigDecimal("0.00"));
+				finGenleg.setAmountDrUsd(new BigDecimal("0.00"));
+				finGenleg.setAmountYearDrUsd(new BigDecimal("0.00"));
+				finGenleg.setAmountCrUsd(new BigDecimal("0.00"));
+				finGenleg.setAmountYearCrUsd(new BigDecimal("0.00"));
+				//本期余额 = 上期余额+借-贷
+				finGenleg.setAmountBlc(item.getAmountBlc());
+				finGenleg.setAmountUsdBlc(item.getAmountUsdBlc());
 
-			//本期上期数量等于上期余额数量
-			finGenleg.setQuantityLastBlc(item.getQuantityBlc());
-			//本期借,贷数量清零
-			finGenleg.setQuantityDr(new BigDecimal("0.00"));
-			finGenleg.setQuantityCr(new BigDecimal("0.00"));
-			//本期余额数量 = 上期余额数量+借-贷
-			finGenleg.setQuantityBlc(item.getQuantityBlc());
-			finGenlegNewList.add(finGenleg);
-		}
-		if (!finGenlegNewList.isEmpty()) {
-			finGenlegService.saveOrUpdateBatch(finGenlegNewList);
+				//本期上期数量等于上期余额数量
+				finGenleg.setQuantityLastBlc(item.getQuantityBlc());
+				//本期借,贷数量清零
+				finGenleg.setQuantityDr(new BigDecimal("0.00"));
+				finGenleg.setQuantityCr(new BigDecimal("0.00"));
+				//本期余额数量 = 上期余额数量+借-贷
+				finGenleg.setQuantityBlc(item.getQuantityBlc());
+				finGenlegNewList.add(finGenleg);
+			}
+			if (!finGenlegNewList.isEmpty()) {
+				finGenlegService.saveOrUpdateBatch(finGenlegNewList);
+			}
 		}
 		return R.data(detail);
 	}
@@ -695,21 +706,24 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 				throw new RuntimeException("未查到下期数据,操作失败!");
 			}
 		}
-		List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
-			.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
-			.eq(FinGenlegCalc::getAccyear, detail.getPeriodYear())
-			.eq(FinGenlegCalc::getAccmonth, detail.getPeriodMonth()));
-		if (!finGenlegCalcList.isEmpty()) {
-			List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).collect(Collectors.toList());
-			finGenlegCalcService.removeByIds(ids);
-		}
-		List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
-			.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
-			.eq(FinGenleg::getAccyear, detail.getPeriodYear())
-			.eq(FinGenleg::getAccmonth, detail.getPeriodMonth()));
-		if (!finGenlegList.isEmpty()) {
-			List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).collect(Collectors.toList());
-			finGenlegService.removeByIds(ids);
+		String status = sysClient.getParamService("whether.open");
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			List<FinGenlegCalc> finGenlegCalcList = finGenlegCalcService.list(new LambdaQueryWrapper<FinGenlegCalc>()
+				.eq(FinGenlegCalc::getTenantId, AuthUtil.getTenantId())
+				.eq(FinGenlegCalc::getAccyear, detail.getPeriodYear())
+				.eq(FinGenlegCalc::getAccmonth, detail.getPeriodMonth()));
+			if (!finGenlegCalcList.isEmpty()) {
+				List<Long> ids = finGenlegCalcList.stream().map(FinGenlegCalc::getId).collect(Collectors.toList());
+				finGenlegCalcService.removeByIds(ids);
+			}
+			List<FinGenleg> finGenlegList = finGenlegService.list(new LambdaQueryWrapper<FinGenleg>()
+				.eq(FinGenleg::getTenantId, AuthUtil.getTenantId())
+				.eq(FinGenleg::getAccyear, detail.getPeriodYear())
+				.eq(FinGenleg::getAccmonth, detail.getPeriodMonth()));
+			if (!finGenlegList.isEmpty()) {
+				List<Long> ids = finGenlegList.stream().map(FinGenleg::getId).collect(Collectors.toList());
+				finGenlegService.removeByIds(ids);
+			}
 		}
 		return R.data(detail);
 	}
@@ -728,6 +742,7 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 				deptName = String.join(",", res.getData());
 			}
 		}
+		String status = sysClient.getParamService("whether.open");
 		if (finPeriod.getId() == null) {
 			if (ObjectUtils.isNotNull(finPeriod.getBeginDate())) {
 				LocalDate date = finPeriod.getBeginDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
@@ -761,16 +776,17 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			finPeriod.setUpdateUserName(AuthUtil.getUserName());
 		}
 		this.saveOrUpdate(finPeriod);
-		if (ObjectUtils.isNotNull(finPeriod.getPeriodVouchersTemplate())) {
-			finPeriod.getPeriodVouchersTemplate().setId(finPeriod.getId() + "");
-			finPeriod.getPeriodVouchersTemplate().setStatus(finPeriod.getIsClosed());
-			finPeriod.getPeriodVouchersTemplate().setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			if (ObjectUtils.isNotNull(finPeriod.getPeriodVouchersTemplate())) {
+				finPeriod.getPeriodVouchersTemplate().setId(finPeriod.getId() + "");
+				finPeriod.getPeriodVouchersTemplate().setStatus(finPeriod.getIsClosed());
+				finPeriod.getPeriodVouchersTemplate().setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
 			/*if ("FM-CURRENCY-PL-TRANSFER".equals(finPeriod.getPeriodVouchersTemplate().getBsType())) {
 				finPeriod.setExchange(JSON.toJSONString(finPeriod.getPeriodVouchersTemplate()));
 			} else {*/
-			finPeriod.setPeriod(JSON.toJSONString(finPeriod.getPeriodVouchersTemplate()));
+				finPeriod.setPeriod(JSON.toJSONString(finPeriod.getPeriodVouchersTemplate()));
 //			}
-		}
+			}
 		/*PeriodVouchersTemplate exchange = JSONObject.parseObject(finPeriod.getExchange(), PeriodVouchersTemplate.class);
 		if (exchange != null) {
 			exchange.setId(finPeriod.getId() + "");
@@ -778,14 +794,15 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			exchange.setStatus(finPeriod.getIsClosed());
 			finPeriod.setExchange(JSON.toJSONString(exchange));
 		}*/
-		PeriodVouchersTemplate period = JSONObject.parseObject(finPeriod.getPeriod(), PeriodVouchersTemplate.class);
-		if (period != null) {
-			period.setId(finPeriod.getId() + "");
-			period.setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
-			period.setStatus(finPeriod.getIsClosed());
-			finPeriod.setPeriod(JSON.toJSONString(period));
+			PeriodVouchersTemplate period = JSONObject.parseObject(finPeriod.getPeriod(), PeriodVouchersTemplate.class);
+			if (period != null) {
+				period.setId(finPeriod.getId() + "");
+				period.setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
+				period.setStatus(finPeriod.getIsClosed());
+				finPeriod.setPeriod(JSON.toJSONString(period));
+			}
+			this.updateById(finPeriod);
 		}
-		this.updateById(finPeriod);
 		return R.data(finPeriod);
 	}
 
@@ -826,9 +843,12 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 			.eq(FinPeriod::getBranchId, branchId)) > 0) {
 			throw new RuntimeException("已有账期,请勿重复开账");
 		}
+		String status = sysClient.getParamService("whether.open");
 		if (ObjectUtils.isNotNull(finPeriod.getBeginDate())) {
-			finGenlegService.initialization(finPeriod.getBeginDate());
-			finGenlegCalcService.initialization(finPeriod.getBeginDate());
+			if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+				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());
@@ -836,8 +856,10 @@ 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());
+			if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+				finGenlegService.initialization(new Date());
+				finGenlegCalcService.initialization(new Date());
+			}
 			LocalDate date = LocalDate.now();
 			finPeriod.setPeriodYear(date.getYear());
 			finPeriod.setPeriodMonth(date.getMonthValue());
@@ -879,11 +901,12 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		exchange.setAccItems(new ArrayList<>());
 		exchange.setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
 		finPeriod.setExchange(JSON.toJSONString(exchange));*/
-		PeriodVouchersTemplate period = new PeriodVouchersTemplate();
-		period.setId(finPeriod.getId() + "");
-		period.setStatus(0);
-		period.setBsType("FM-PERIOD-PL-TRANSFER");
-		period.setVkno("转");
+		if (ObjectUtils.isNull(status) || !"0".equals(status)) {
+			PeriodVouchersTemplate period = new PeriodVouchersTemplate();
+			period.setId(finPeriod.getId() + "");
+			period.setStatus(0);
+			period.setBsType("FM-PERIOD-PL-TRANSFER");
+			period.setVkno("转");
 		/*Accounts accountsPeriod = accountsService.getOne(new LambdaQueryWrapper<Accounts>()
 			.eq(Accounts::getTenantId, AuthUtil.getTenantId())
 			.eq(Accounts::getCode, "550304")
@@ -896,10 +919,11 @@ public class FinPeriodServiceImpl extends ServiceImpl<FinPeriodMapper, FinPeriod
 		period.setPlAccNo(accountsPeriod.getCode());
 		period.setPlAccID(accountsPeriod.getId() + "");
 		period.setDescr(accountsPeriod.getCnName() + "结转");*/
-		period.setAccItems(new ArrayList<>());
-		period.setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
-		finPeriod.setPeriod(JSON.toJSONString(period));
-		this.updateById(finPeriod);
+			period.setAccItems(new ArrayList<>());
+			period.setDate(finPeriod.getPeriodYear() + "-" + finPeriod.getPeriodMonth());
+			finPeriod.setPeriod(JSON.toJSONString(period));
+			this.updateById(finPeriod);
+		}
 		return R.data(finPeriod);
 	}
 

+ 42 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/FinanceStatisticsController.java

@@ -234,4 +234,46 @@ public class FinanceStatisticsController {
 		}
 	}
 
+	/**
+	 * 费用是否结算
+	 */
+	@GetMapping("/feeSettlementStatistics")
+	public R<IPage<FeeSettlementExcel>> feeSettlementStatistics(FeeSettlementExcel feeSettlementExcel, Query query) {
+		return statisticAnalysisService.feeSettlementStatistics(feeSettlementExcel, query);
+	}
+
+	/**
+	 * 费用是否结算合计
+	 */
+	@GetMapping("/feeSettlementSum")
+	public R feeSettlementSum(FeeSettlementExcel feeSettlementExcel) {
+		List<FeeSettlementExcel> list = statisticAnalysisService.feeSettlementList(feeSettlementExcel);
+		Map<String, BigDecimal> map = new HashMap<>();
+		if (!list.isEmpty()) {
+			map.put("amount", list.stream().map(FeeSettlementExcel::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("amountUsd", list.stream().map(FeeSettlementExcel::getAmountUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("settlementAmount", list.stream().map(FeeSettlementExcel::getSettlementAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("settlementAmountUsd", list.stream().map(FeeSettlementExcel::getSettlementAmountUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("balanceAmount", list.stream().map(FeeSettlementExcel::getBalanceAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+			map.put("balanceAmountUsd", list.stream().map(FeeSettlementExcel::getBalanceAmountUsd).reduce(BigDecimal.ZERO, BigDecimal::add));
+		} else {
+			map.put("amount", BigDecimal.ZERO);
+			map.put("amountUsd", BigDecimal.ZERO);
+			map.put("settlementAmount", BigDecimal.ZERO);
+			map.put("settlementAmountUsd", BigDecimal.ZERO);
+			map.put("balanceAmount", BigDecimal.ZERO);
+			map.put("balanceAmountUsd", BigDecimal.ZERO);
+		}
+		return R.data(map);
+	}
+
+	/**
+	 * 费用是否结算导出
+	 */
+	@GetMapping("/feeSettlementExport")
+	public void feeSettlementExport(FeeSettlementExcel feeSettlementExcel, HttpServletResponse response) {
+		List<FeeSettlementExcel> list = statisticAnalysisService.feeSettlementList(feeSettlementExcel);
+		ExcelUtil.export(response, "业务费用结算统计", "业务费用结算统计", list, FeeSettlementExcel.class);
+	}
+
 }

+ 5 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/IStatisticAnalysisService.java

@@ -17,6 +17,7 @@
 package org.springblade.los.statisticAnalysis.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.excel.BoxNumberProfitExcel;
 import org.springblade.los.statisticAnalysis.*;
@@ -86,4 +87,8 @@ public interface IStatisticAnalysisService {
 	R<List<Map<String, Object>>> boxReturnReminder();
 
 	R<List<Map<String, Object>>> withdrawalReminder();
+
+	R<IPage<FeeSettlementExcel>> feeSettlementStatistics(FeeSettlementExcel feeSettlementExcel, Query query);
+
+	List<FeeSettlementExcel> feeSettlementList(FeeSettlementExcel feeSettlementExcel);
 }

+ 133 - 0
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java

@@ -3,7 +3,10 @@ package org.springblade.los.statisticAnalysis.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -1645,4 +1648,134 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 		}
 		return R.data(mapList);
 	}
+
+	@Override
+	public R<IPage<FeeSettlementExcel>> feeSettlementStatistics(FeeSettlementExcel feeSettlementExcel, Query query) {
+		IPage<FeeCenter> feeCenterList = feeCenterMapper.selectPage(Condition.getPage(query), new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(feeSettlementExcel.getDc()), FeeCenter::getDc, feeSettlementExcel.getDc())
+			.apply(ObjectUtils.isNotNull(feeSettlementExcel.getType()), "find_in_set(business_type,'" + feeSettlementExcel.getType() + "')")
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getFeeName()), FeeCenter::getFeeId, feeSettlementExcel.getFeeName())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getCorpName()), FeeCenter::getCorpId, feeSettlementExcel.getCorpName())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getWhetherSettlement()), FeeCenter::getStlStatus, feeSettlementExcel.getWhetherSettlement())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getBillNo()), FeeCenter::getBillNo, feeSettlementExcel.getBillNo())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getMblno()), FeeCenter::getMblno, feeSettlementExcel.getMblno())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getSrcNo()), FeeCenter::getMblno, feeSettlementExcel.getSrcNo())
+			.ge(ObjectUtils.isNotNull(feeSettlementExcel.getStartDate()), FeeCenter::getBillDate, feeSettlementExcel.getStartDate())
+			.le(ObjectUtils.isNotNull(feeSettlementExcel.getEndDate()), FeeCenter::getBillDate, feeSettlementExcel.getEndDate())
+		);
+		List<FeeSettlementExcel> feeSettlementExcelList = new ArrayList<>();
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		for (FeeCenter item : feeCenterList.getRecords()) {
+			FeeSettlementExcel feeSettlementExcel1 = new FeeSettlementExcel();
+			if (0 == item.getStlStatus()) {
+				feeSettlementExcel1.setWhetherSettlement("未结算");
+			} else {
+				feeSettlementExcel1.setWhetherSettlement("已结算");
+			}
+			if ("D".equals(item.getDc())) {
+				feeSettlementExcel1.setDc("应收");
+			} else {
+				feeSettlementExcel1.setDc("应付");
+			}
+			if ("CNY".equals(item.getCurCode())) {
+				feeSettlementExcel1.setAmount(item.getAmount());
+				feeSettlementExcel1.setAmountUsd(new BigDecimal("0.00"));
+				feeSettlementExcel1.setSettlementAmount(item.getStlTtlAmount());
+				feeSettlementExcel1.setSettlementAmountUsd(new BigDecimal("0.00"));
+				feeSettlementExcel1.setBalanceAmount(item.getUnsettledAmount());
+				feeSettlementExcel1.setBalanceAmountUsd(new BigDecimal("0.00"));
+			} else {
+				feeSettlementExcel1.setAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setAmountUsd(item.getAmount());
+				feeSettlementExcel1.setSettlementAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setSettlementAmountUsd(item.getStlTtlAmount());
+				feeSettlementExcel1.setBalanceAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setBalanceAmountUsd(item.getUnsettledAmount());
+			}
+			feeSettlementExcel1.setFeeName(item.getFeeCnName());
+			feeSettlementExcel1.setCorpName(item.getCorpCnName());
+			feeSettlementExcel1.setBillNo(item.getBillNo());
+			feeSettlementExcel1.setMblno(item.getMblno());
+			feeSettlementExcel1.setSrcNo(item.getMblno());
+			if (ObjectUtils.isNotNull(item.getBillDate())) {
+				feeSettlementExcel1.setBillDate(dateFormat.format(item.getBillDate()));
+			} else {
+				feeSettlementExcel1.setBillDate("");
+			}
+			feeSettlementExcel1.setType(item.getBusinessType());
+			feeSettlementExcel1.setSrcId(item.getPid());
+			feeSettlementExcelList.add(feeSettlementExcel1);
+		}
+		IPage<FeeSettlementExcel> page = new Page<>();
+		page.setRecords(feeSettlementExcelList);
+		page.setTotal(feeCenterList.getTotal());
+		page.setSize(feeCenterList.getSize());
+		page.setCurrent(feeCenterList.getCurrent());
+		page.setPages(feeCenterList.getPages());
+		return R.data(page);
+	}
+
+	@Override
+	public List<FeeSettlementExcel> feeSettlementList(FeeSettlementExcel feeSettlementExcel) {
+		List<FeeCenter> feeCenterList = feeCenterMapper.selectList(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(ObjectUtils.isNotNull(feeSettlementExcel.getDc()), FeeCenter::getDc, feeSettlementExcel.getDc())
+			.apply(ObjectUtils.isNotNull(feeSettlementExcel.getType()), "find_in_set(business_type,'" + feeSettlementExcel.getType() + "')")
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getFeeName()), FeeCenter::getFeeId, feeSettlementExcel.getFeeName())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getCorpName()), FeeCenter::getCorpId, feeSettlementExcel.getCorpName())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getWhetherSettlement()), FeeCenter::getStlStatus, feeSettlementExcel.getWhetherSettlement())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getBillNo()), FeeCenter::getBillNo, feeSettlementExcel.getBillNo())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getMblno()), FeeCenter::getMblno, feeSettlementExcel.getMblno())
+			.like(ObjectUtils.isNotNull(feeSettlementExcel.getSrcNo()), FeeCenter::getMblno, feeSettlementExcel.getSrcNo())
+			.ge(ObjectUtils.isNotNull(feeSettlementExcel.getStartDate()), FeeCenter::getBillDate, feeSettlementExcel.getStartDate())
+			.le(ObjectUtils.isNotNull(feeSettlementExcel.getEndDate()), FeeCenter::getBillDate, feeSettlementExcel.getEndDate())
+		);
+		List<FeeSettlementExcel> feeSettlementExcelList = new ArrayList<>();
+		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+		for (FeeCenter item : feeCenterList) {
+			FeeSettlementExcel feeSettlementExcel1 = new FeeSettlementExcel();
+			if (0 == item.getStlStatus()) {
+				feeSettlementExcel1.setWhetherSettlement("未结算");
+			} else {
+				feeSettlementExcel1.setWhetherSettlement("已结算");
+			}
+			if ("D".equals(item.getDc())) {
+				feeSettlementExcel1.setDc("应收");
+			} else {
+				feeSettlementExcel1.setDc("应付");
+			}
+			if ("CNY".equals(item.getCurCode())) {
+				feeSettlementExcel1.setAmount(item.getAmount());
+				feeSettlementExcel1.setAmountUsd(new BigDecimal("0.00"));
+				feeSettlementExcel1.setSettlementAmount(item.getStlTtlAmount());
+				feeSettlementExcel1.setSettlementAmountUsd(new BigDecimal("0.00"));
+				feeSettlementExcel1.setBalanceAmount(item.getUnsettledAmount());
+				feeSettlementExcel1.setBalanceAmountUsd(new BigDecimal("0.00"));
+			} else {
+				feeSettlementExcel1.setAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setAmountUsd(item.getAmount());
+				feeSettlementExcel1.setSettlementAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setSettlementAmountUsd(item.getStlTtlAmount());
+				feeSettlementExcel1.setBalanceAmount(new BigDecimal("0.00"));
+				feeSettlementExcel1.setBalanceAmountUsd(item.getUnsettledAmount());
+			}
+			feeSettlementExcel1.setFeeName(item.getFeeCnName());
+			feeSettlementExcel1.setCorpName(item.getCorpCnName());
+			feeSettlementExcel1.setBillNo(item.getBillNo());
+			feeSettlementExcel1.setMblno(item.getMblno());
+			feeSettlementExcel1.setSrcNo(item.getMblno());
+			if (ObjectUtils.isNotNull(item.getBillDate())) {
+				feeSettlementExcel1.setBillDate(dateFormat.format(item.getBillDate()));
+			} else {
+				feeSettlementExcel1.setBillDate("");
+			}
+			feeSettlementExcel1.setType(item.getBusinessType());
+			feeSettlementExcel1.setSrcId(item.getPid());
+			feeSettlementExcelList.add(feeSettlementExcel1);
+		}
+		return feeSettlementExcelList;
+	}
 }