فهرست منبع

2023年12月28日18:18:54

纪新园 1 سال پیش
والد
کامیت
3cba2c63cf
16فایلهای تغییر یافته به همراه436 افزوده شده و 295 حذف شده
  1. 5 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java
  2. 4 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java
  3. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoiceItemDetail.java
  4. 16 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java
  5. 11 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoicesItems.java
  6. 6 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java
  7. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java
  8. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  9. 5 3
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  10. 64 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  11. 20 10
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java
  12. 12 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java
  13. 7 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/IFinInvoicesService.java
  14. 154 179
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  15. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  16. 116 100
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java

+ 5 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FeeCenter.java

@@ -845,6 +845,11 @@ public class FeeCenter implements Serializable {
 	 */
 	@ApiModelProperty(value = "已申请金额")
 	private BigDecimal appliedAmount;
+	/**
+	 * 已申请发票金额
+	 */
+	@ApiModelProperty(value = "已申请发票金额")
+	private BigDecimal appliedInvoiceAmount;
 
 	/**
 	 * 已对账金额
@@ -853,5 +858,4 @@ public class FeeCenter implements Serializable {
 	private BigDecimal reconciliationAmount;
 
 
-
 }

+ 4 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/vo/FinAccBillsVO.java

@@ -252,6 +252,10 @@ public class FinAccBillsVO extends FinAccBills {
 	 * 已申请金额
 	 */
 	private BigDecimal appliedAmount;
+	/**
+	 * 已申请发票金额
+	 */
+	private BigDecimal appliedInvoiceAmount;
 
 	/**
 	 * 已对账金额

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoiceItemDetail.java

@@ -105,7 +105,7 @@ public class FinInvoiceItemDetail implements Serializable {
 	 * 创建部门
 	 */
 	@ApiModelProperty(value = "创建部门")
-	private Long createDept;
+	private String createDept;
 	/**
 	 * 创建部门
 	 */

+ 16 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java

@@ -508,12 +508,22 @@ public class FinInvoices implements Serializable {
 	 */
 	@ApiModelProperty(value = "发表类型")
 	private String type;
+	/**
+	 * 申请单号
+	 */
+	@ApiModelProperty(value = "申请单号")
+	private String applyNo;
 
 	/**
 	 * 差额
 	 */
 	@ApiModelProperty(value = "差额")
 	private BigDecimal amountSub;
+	/**
+	 * 单据状态
+	 */
+	@ApiModelProperty(value = "单据状态")
+	private String billStatus;
 
 	//跳转对应页面的路由
 	@TableField(exist = false)
@@ -525,5 +535,11 @@ public class FinInvoices implements Serializable {
 	@TableField(exist = false)
 	private String pageLabel;
 
+	/**
+	 * 项目
+	 */
+	@TableField(exist = false)
+	private String serverName;
+
 
 }

+ 11 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoicesItems.java

@@ -544,5 +544,16 @@ public class FinInvoicesItems implements Serializable {
 	@ApiModelProperty(value = "租户")
 	private String tenantId;
 
+	/**
+	 * 申请明细id
+	 */
+	@ApiModelProperty(value = "申请明细id")
+	private Long applySrcId;
+	/**
+	 * 是否生成发票   0 = 未生成   1= 已生成
+	 */
+	@ApiModelProperty(value = "是否生成发票")
+	private String generateInvoices;
+
 
 }

+ 6 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java

@@ -554,5 +554,11 @@ public class FinStlBills implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal amountOwed;
 
+	/**
+	 * 单据状态
+	 */
+	@ApiModelProperty(value = "单据状态")
+	private String billStatus;
+
 
 }

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

@@ -645,5 +645,17 @@ public class FinStlBillsItems implements Serializable {
 	@TableField(exist = false)
 	private BigDecimal threeInspectionsNo;
 
+	/**
+	 * 来源明细id
+	 */
+	@ApiModelProperty(value = "来源明细id")
+	private Long srcIdInvoices;
+
+	/**
+	 * 结算状态
+	 */
+	@ApiModelProperty(value = "结算状态")
+	private String srcIdStatus;
+
 
 }

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java

@@ -140,7 +140,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				} else {
 					bills.setGrossMargin(new BigDecimal("0.00"));
 				}
-				if ("MM".equals(bills.getBillType())) {
+				if ("MM".equals(bills.getBillType()) || "DD".equals(bills.getBillType())) {
 					List<Bills> billsList = billsService.list(new LambdaQueryWrapper<Bills>()
 						.eq(Bills::getMasterId, bills.getId())
 						.eq(Bills::getTenantId, AuthUtil.getTenantId())

+ 5 - 3
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml

@@ -313,6 +313,8 @@
         ( sum( fee.applied_amount ), sum( fee.applied_amount ), 0.00 ) AS appliedAmount,
         IF
         ( sum( fee.reconciliation_amount ), sum( fee.reconciliation_amount ), 0.00 ) AS reconciliationAmount,
+        IF
+        ( sum( fee.applied_invoice_amount ), sum( fee.applied_invoice_amount ), 0.00 ) AS appliedInvoiceAmount,
         fee.is_signfor as isSignfor,
         fee.signfor_id as signforId,
         fee.signfor_name as signforName,
@@ -332,13 +334,13 @@
         AND fee.is_deleted = '0'
         and bill.is_deleted = '0'
         <if test='acc.type != null and acc.type != "" and acc.type == "2"'>
-            and acc.amount_dr_loc != acc.stl_amount_dr_loc
+            and acc.amount_dr_loc > acc.stl_amount_dr_loc
         </if>
         <if test='acc.type != null and acc.type != "" and acc.type == "3"'>
-            and acc.amount_cr_loc != acc.stl_amount_cr_loc
+            and acc.amount_cr_loc > acc.stl_amount_cr_loc
         </if>
         <if test='acc.type != null and acc.type != "" and acc.type == "4"'>
-            and fee.amount != fee.invoice_amount_loc
+            and fee.amount > fee.uninvoiced_amount
         </if>
          <if test='acc.type != null and acc.type != "" and acc.type == "5"'>
             and fee.voucher_status = '0'

+ 64 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java

@@ -189,6 +189,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							item.setVesselCnName(bills.getVesselCnName());
 							item.setVesselEnName(bills.getVesselEnName());
 							item.setVoyageNo(bills.getVoyageNo());
+							item.setPolId(bills.getPolId());
+							item.setPolCnName(bills.getPolCnName());
+							item.setPolEnName(bills.getPolEnName());
+							item.setPolCode(bills.getPolCode());
+							item.setPodId(bills.getPodId());
+							item.setPodCnName(bills.getPodCnName());
+							item.setPodEnName(bills.getPodEnName());
+							item.setPodCode(bills.getPodCode());
 						}
 						feeCenterService.updateBatchById(feeCenterList);
 						List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
@@ -200,6 +208,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							item.setVesselCnName(bills.getVesselCnName());
 							item.setVesselEnName(bills.getVesselEnName());
 							item.setVoyageNo(bills.getVoyageNo());
+							item.setPolId(bills.getPolId());
+							item.setPolCnName(bills.getPolCnName());
+							item.setPolEnName(bills.getPolEnName());
+							item.setPolCode(bills.getPolCode());
+							item.setPodId(bills.getPodId());
+							item.setPodCnName(bills.getPodCnName());
+							item.setPodEnName(bills.getPodEnName());
+							item.setPodCode(bills.getPodCode());
 						}
 						finAccBillsService.updateBatchById(finAccBillsList);
 						for (Bills item : billsList) {
@@ -207,6 +223,28 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 							item.setVesselCnName(bills.getVesselCnName());
 							item.setVesselEnName(bills.getVesselEnName());
 							item.setVoyageNo(bills.getVoyageNo());
+							item.setPolId(bills.getPolId());
+							item.setPolCnName(bills.getPolCnName());
+							item.setPolEnName(bills.getPolEnName());
+							item.setPolCode(bills.getPolCode());
+							item.setPodId(bills.getPodId());
+							item.setPodCnName(bills.getPodCnName());
+							item.setPodEnName(bills.getPodEnName());
+							item.setPodCode(bills.getPodCode());
+							item.setCyId(bills.getCyId());
+							item.setCyCode(bills.getCyCode());
+							item.setCyCnName(bills.getCyCnName());
+							item.setCyEnName(bills.getCyEnName());
+							item.setCyAddress(bills.getCyAddress());
+							item.setCyTel(bills.getCyTel());
+							item.setCyRemarks(bills.getCyRemarks());
+							item.setCyTrailerTime(bills.getCyTrailerTime());
+							item.setCyReturnTime(bills.getCyReturnTime());
+							item.setCarrierId(bills.getCarrierId());
+							item.setCarrierCnName(bills.getCarrierCnName());
+							item.setCarrierEnName(bills.getCarrierEnName());
+							item.setCarrierArgreementNo(bills.getCarrierArgreementNo());
+							item.setBookingDate(bills.getBookingDate());
 						}
 						this.updateBatchById(billsList);
 					}
@@ -537,6 +575,32 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				}
 				item.setMasterId(bills.getId());
 				item.setMasterBillNo(bills.getBillNo());
+				item.setVesselId(bills.getVesselId());
+				item.setVesselCnName(bills.getVesselCnName());
+				item.setVesselEnName(bills.getVesselEnName());
+				item.setVoyageNo(bills.getVoyageNo());
+				item.setPolId(bills.getPolId());
+				item.setPolCnName(bills.getPolCnName());
+				item.setPolEnName(bills.getPolEnName());
+				item.setPolCode(bills.getPolCode());
+				item.setPodId(bills.getPodId());
+				item.setPodCnName(bills.getPodCnName());
+				item.setPodEnName(bills.getPodEnName());
+				item.setPodCode(bills.getPodCode());
+				item.setCyId(bills.getCyId());
+				item.setCyCode(bills.getCyCode());
+				item.setCyCnName(bills.getCyCnName());
+				item.setCyEnName(bills.getCyEnName());
+				item.setCyAddress(bills.getCyAddress());
+				item.setCyTel(bills.getCyTel());
+				item.setCyRemarks(bills.getCyRemarks());
+				item.setCyTrailerTime(bills.getCyTrailerTime());
+				item.setCyReturnTime(bills.getCyReturnTime());
+				item.setCarrierId(bills.getCarrierId());
+				item.setCarrierCnName(bills.getCarrierCnName());
+				item.setCarrierEnName(bills.getCarrierEnName());
+				item.setCarrierArgreementNo(bills.getCarrierArgreementNo());
+				item.setBookingDate(bills.getBookingDate());
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());

+ 20 - 10
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FeeCenterServiceImpl.java

@@ -174,7 +174,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 			.eq(PreContainers::getIsDeleted, 0)
 			.eq(PreContainers::getPid, bills.getId()));
 		if (losBFeesTemplate.getFeesTemplateItemsList().size() > 0) {
-			String code = losBFeesTemplate.getFeesTemplateItemsList().stream().map(FeesTemplateItems::getCurCode).distinct().collect(Collectors.joining());
+			String code = losBFeesTemplate.getFeesTemplateItemsList().stream().map(FeesTemplateItems::getCurCode).distinct().collect(Collectors.joining(","));
 			List<BCurrency> bCurrency = currencyMapper.selectList(new LambdaQueryWrapper<BCurrency>()
 				.eq(BCurrency::getTenantId, AuthUtil.getTenantId())
 				.eq(BCurrency::getIsDeleted, 0)
@@ -281,14 +281,14 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					if ("JOB".equals(items.getUnitNo())) {
 						feeCenter.setQuantity(new BigDecimal("1"));
 						feeCenter.setAmount(items.getPrice().multiply(new BigDecimal("1")));
-					}else{
+					} else {
 						continue;
 					}
 				} else if ("3".equals(items.getQuantityRule())) {
 					if ("KGS".equals(items.getUnitNo())) {
 						feeCenter.setQuantity(bills.getGrossWeight());
 						feeCenter.setAmount(items.getPrice().multiply(bills.getGrossWeight()));
-					}else{
+					} else {
 						continue;
 					}
 				} else if ("4".equals(items.getQuantityRule())) {
@@ -296,17 +296,27 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 						continue;
 					}
 					if ("TEU".equals(items.getUnitNo())) {
-						BigDecimal quantity20GP = preContainers.stream().filter(e -> "20GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal quantity20GPTeu = preContainers.stream().filter(e -> "20GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						Integer quantity20GP = preContainers.stream().filter(e -> "20GP".equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(Integer.MIN_VALUE, Integer::sum);
+						BigDecimal quantity20GPSum = quantity20GPTeu.multiply(new BigDecimal(quantity20GP));
 
-						BigDecimal quantity40GP = preContainers.stream().filter(e -> "40GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal quantity40GPTeu = preContainers.stream().filter(e -> "40GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						Integer quantity40GP = preContainers.stream().filter(e -> "40GP".equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(Integer.MIN_VALUE, Integer::sum);
+						BigDecimal quantity40GPSum = quantity40GPTeu.multiply(new BigDecimal(quantity40GP));
 
-						BigDecimal quantity40HC = preContainers.stream().filter(e -> "40HC".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal quantity40HCTeu = preContainers.stream().filter(e -> "40HC".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						Integer quantity40HC = preContainers.stream().filter(e -> "40HC".equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(Integer.MIN_VALUE, Integer::sum);
+						BigDecimal quantity40HCSum = quantity40HCTeu.multiply(new BigDecimal(quantity40HC));
 
-						BigDecimal quantity45GP = preContainers.stream().filter(e -> "45GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal quantity45GPTeu = preContainers.stream().filter(e -> "45GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						Integer quantity45GP = preContainers.stream().filter(e -> "45GP".equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(Integer.MIN_VALUE, Integer::sum);
+						BigDecimal quantity45GPSum = quantity45GPTeu.multiply(new BigDecimal(quantity45GP));
 
-						BigDecimal quantity48GP = preContainers.stream().filter(e -> "48GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						BigDecimal quantity48GPTeu = preContainers.stream().filter(e -> "48GP".equals(e.getCntrTypeCode())).map(PreContainers::getTeu).reduce(BigDecimal.ZERO, BigDecimal::add);
+						Integer quantity48GP = preContainers.stream().filter(e -> "48GP".equals(e.getCntrTypeCode())).map(PreContainers::getQuantity).reduce(Integer.MIN_VALUE, Integer::sum);
+						BigDecimal quantity48GPSum = quantity48GPTeu.multiply(new BigDecimal(quantity48GP));
 
-						BigDecimal  quantity = quantity20GP.add(quantity40GP).add(quantity40HC).add(quantity45GP).add(quantity48GP);
+						BigDecimal quantity = quantity20GPSum.add(quantity40GPSum).add(quantity40HCSum).add(quantity45GPSum).add(quantity48GPSum);
 						if (quantity.compareTo(new BigDecimal("0")) == 0) {
 							continue;
 						}
@@ -317,7 +327,7 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 					if ("CBM".equals(items.getUnitNo())) {
 						feeCenter.setQuantity(bills.getMeasurement());
 						feeCenter.setAmount(items.getPrice().multiply(bills.getMeasurement()));
-					}else{
+					} else {
 						continue;
 					}
 				} else {

+ 12 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/controller/FinInvoicesController.java

@@ -77,6 +77,9 @@ public class FinInvoicesController extends BladeController {
 		lambdaQueryWrapper.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
 			.eq(FinInvoices::getIsDeleted, 0)
 			.eq(ObjectUtils.isNotNull(finInvoices.getBillNo()), FinInvoices::getBillNo, finInvoices.getBillNo())
+			.eq(ObjectUtils.isNotNull(finInvoices.getType()), FinInvoices::getType, finInvoices.getType())
+			.eq(ObjectUtils.isNotNull(finInvoices.getStatus()), FinInvoices::getStatus, finInvoices.getStatus())
+			.eq(ObjectUtils.isNotNull(finInvoices.getBillStatus()), FinInvoices::getBillStatus, finInvoices.getBillStatus())
 			.orderByDesc(FinInvoices::getCreateTime);
 		IPage<FinInvoices> pages = finInvoicesService.page(Condition.getPage(query), lambdaQueryWrapper);
 		return R.data(pages);
@@ -237,5 +240,14 @@ public class FinInvoicesController extends BladeController {
 		return finInvoicesService.revokeFinInvoicesDetail(finInvoices);
 	}
 
+	/**
+	 * 生成销项发票单
+	 */
+	@GetMapping("/generateFinInvoices")
+	@RepeatSubmit
+	public R generateFinInvoices(@RequestParam("billId") String billId) {
+		return finInvoicesService.generateFinInvoices(billId);
+	}
+
 
 }

+ 7 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/IFinInvoicesService.java

@@ -99,4 +99,11 @@ public interface IFinInvoicesService extends IService<FinInvoices> {
 	 * @return
 	 */
 	R revokeFinInvoicesDetail(FinInvoices finInvoices);
+
+	/**
+	 * 生成销项发票单
+	 * @param billId
+	 * @return
+	 */
+	R generateFinInvoices(String billId);
 }

+ 154 - 179
blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java

@@ -24,6 +24,7 @@ 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.basic.business.entity.BusinessType;
 import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.cur.service.IBCurrencyService;
@@ -48,6 +49,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.math.MathContext;
 import java.math.RoundingMode;
 import java.util.ArrayList;
 import java.util.Date;
@@ -133,7 +135,6 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		}
 		this.saveOrUpdate(finInvoices);
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-
 			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
 				//计算字段null值处理
 				item.setCurrentAmount(ObjectUtils.isNotNull(item.getCurrentAmount()) ? item.getCurrentAmount() : new BigDecimal("0.00"));
@@ -189,6 +190,33 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			finInvoices.setAmountLoc(amountCny.add(bCurrencyService.converterCny("USD", amountUsd)));
 			finInvoices.setAmountSub(finInvoices.getAmountLoc());
 		}
+		BigDecimal invoiceAmount = new BigDecimal("0.00");
+		if (ObjectUtils.isNotNull(finInvoices.getFinInvoiceItemDetailList())) {
+			BigDecimal taxRate = new BigDecimal("1").add(finInvoices.getTaxRate().divide(new BigDecimal("100"), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+			for (FinInvoiceItemDetail item : finInvoices.getFinInvoiceItemDetailList()) {
+				item.setPid(finInvoices.getId());
+				if (item.getId() == null) {
+					item.setCreateTime(new Date());
+					item.setCreateUser(AuthUtil.getUserId());
+					item.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						item.setCreateDept(AuthUtil.getDeptId());
+						item.setCreateDeptName(deptName);
+					}
+				} else {
+					item.setUpdateUser(AuthUtil.getUserId());
+					item.setUpdateTime(new Date());
+					item.setUpdateUserName(AuthUtil.getUserName());
+				}
+				item.setAmountRate(taxRate);
+				item.setAmountTax(item.getAmount().multiply(taxRate));
+				invoiceAmount = invoiceAmount.add(item.getAmount());
+			}
+			finInvoiceItemDetailService.saveOrUpdateBatch(finInvoices.getFinInvoiceItemDetailList());
+		}
+		if (invoiceAmount.compareTo(finInvoices.getAmountLoc()) > 0) {
+			throw new RuntimeException("开票金额大于合计金额,保存失败");
+		}
 		this.saveOrUpdate(finInvoices);
 		return R.data(finInvoices);
 	}
@@ -229,6 +257,29 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
 			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
+			List<Long> ids = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getApplySrcId).collect(Collectors.toList());
+			if (ids.size() > 0) {
+				List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
+					.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+					.eq(FinInvoicesItems::getIsDeleted, 0)
+					.in(FinInvoicesItems::getId, ids));
+				for (FinInvoicesItems item : finInvoicesItemsList) {
+					item.setGenerateInvoices("1");
+				}
+				if (finInvoicesItemsList.size() > 0) {
+					FinInvoices finInvoices1 = baseMapper.selectById(finInvoicesItemsList.get(0).getPid());
+					List<FinInvoicesItems> finInvoicesItemsList1 = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
+						.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinInvoicesItems::getIsDeleted, 0)
+						.eq(FinInvoicesItems::getGenerateInvoices, "0")
+						.eq(FinInvoicesItems::getPid, finInvoices1.getId()));
+					if (finInvoicesItemsList.size() == finInvoicesItemsList1.size()) {
+						finInvoices1.setBillStatus("1");
+						baseMapper.updateById(finInvoices1);
+					}
+					finInvoicesItemsService.saveOrUpdateBatch(finInvoicesItemsList);
+				}
+			}
 			//通过明细里账单id查询具体账单数据
 			List<Long> accIds = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getAccBillId)
 				.filter(Objects::nonNull).collect(Collectors.toList());
@@ -253,50 +304,9 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				.eq(FeeCenter::getIsDeleted, 0));
 			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 1);
 			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
-			/*List<Bills> billsList = new ArrayList<>();
-			List<Long> ids = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
-			BigDecimal idsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal idsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			List<Long> divideIds = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
-			BigDecimal divideIdsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal divideIdsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getUninvoicedAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
-				billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-					.eq(Bills::getTenantId, AuthUtil.getTenantId())
-					.eq(Bills::getIsDeleted, 0)
-					.in(Bills::getId, ids));
-			}
-			if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
-				List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-					.eq(Bills::getTenantId, AuthUtil.getTenantId())
-					.eq(Bills::getIsDeleted, 0)
-					.in(Bills::getId, divideIds));
-				billsList.addAll(divideBillsList);
-			}
-			for (Bills item : billsList) {
-				item.setBillingStatus(item.getBillingStatus() + 1);
-				BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-					.eq(FinAccBills::getBusinessBillId, item.getId())
-					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-					.eq(FinAccBills::getIsDeleted, 0)
-					.eq(FinAccBills::getAccountDc, "D")).stream()
-					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-				BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-					.eq(FinAccBills::getBusinessBillId, item.getId())
-					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-					.eq(FinAccBills::getIsDeleted, 0)
-					.eq(FinAccBills::getAccountDc, "C")).stream()
-					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-				if (item.getCheckDrStatus() != 9) {
-					Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC, detail.getType());
-					billsMapper.updateById(bills);
-				} else {
-					billsMapper.updateById(item);
-				}
-			}*/
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
 		}
-		detail.setStatus(1);
+		detail.setStatus(3);
 		baseMapper.updateById(detail);
 		return R.data(detail);
 	}
@@ -381,9 +391,9 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				item.setInvoiceById(detail.getCreateUser());
 				item.setInvoiceByName(detail.getCreateUserName());
 			} else if (count == 3) {
-				item.setAppliedAmount(item.getAppliedAmount().add(detail.getAmountLoc()));
+				item.setAppliedInvoiceAmount(item.getAppliedInvoiceAmount().add(detail.getAmountLoc()));
 			} else if (count == 4) {
-				item.setAppliedAmount(item.getAppliedAmount().subtract(detail.getAmountLoc()));
+				item.setAppliedInvoiceAmount(item.getAppliedInvoiceAmount().subtract(detail.getAmountLoc()));
 			}
 		}
 		return feeCenterList;
@@ -405,6 +415,22 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				item.setUpdateUserName(AuthUtil.getUserName());
 			}
 			finInvoicesItemsService.saveOrUpdateBatch(finInvoices.getFinInvoicesItemsList());
+			List<Long> ids = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getApplySrcId).collect(Collectors.toList());
+			if (ids.size() > 0) {
+				List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
+					.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+					.eq(FinInvoicesItems::getIsDeleted, 0)
+					.in(FinInvoicesItems::getId, ids));
+				for (FinInvoicesItems item : finInvoicesItemsList) {
+					item.setGenerateInvoices("0");
+				}
+				if (finInvoicesItemsList.size() > 0) {
+					FinInvoices finInvoices1 = baseMapper.selectById(finInvoicesItemsList.get(0).getPid());
+					finInvoices1.setBillStatus("0");
+					baseMapper.updateById(finInvoices1);
+					finInvoicesItemsService.saveOrUpdateBatch(finInvoicesItemsList);
+				}
+			}
 			List<Long> accIds = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getAccBillId)
 				.filter(Objects::nonNull).collect(Collectors.toList());
 			List<FinAccBills> finAccBillsList = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
@@ -428,49 +454,8 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			List<FeeCenter> feeCenterListNew = reconciliationFeeCenter(detail, feeCenterList, 2);
 			feeCenterService.saveOrUpdateBatch(feeCenterListNew);
 			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
-			/*List<Bills> billsList = new ArrayList<>();
-			List<Long> ids = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
-			BigDecimal idsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal idsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			List<Long> divideIds = feeCenterListNew.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
-			BigDecimal divideIdsD = feeCenterListNew.stream().filter(e -> "D".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-			BigDecimal divideIdsC = feeCenterListNew.stream().filter(e -> "C".equals(e.getDc())).map(FeeCenter::getInvoiceAmountLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-
-			if (ObjectUtils.isNotNull(ids) && ids.size() > 0) {
-				billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-					.eq(Bills::getTenantId, AuthUtil.getTenantId())
-					.eq(Bills::getIsDeleted, 0)
-					.in(Bills::getId, ids));
-			}
-			if (ObjectUtils.isNotNull(divideIds) && divideIds.size() > 0) {
-				List<Bills> divideBillsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
-					.eq(Bills::getTenantId, AuthUtil.getTenantId())
-					.eq(Bills::getIsDeleted, 0)
-					.in(Bills::getId, divideIds));
-				billsList.addAll(divideBillsList);
-			}
-			for (Bills item : billsList) {
-				if (item.getBillingStatus() == 0) {
-					throw new RuntimeException("撤销对账失败");
-				}
-				item.setBillingStatus(item.getBillingStatus() - 1);
-				BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-					.eq(FinAccBills::getBusinessBillId, item.getId())
-					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-					.eq(FinAccBills::getIsDeleted, 0)
-					.eq(FinAccBills::getAccountDc, "D")).stream()
-					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-				BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-					.eq(FinAccBills::getBusinessBillId, item.getId())
-					.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-					.eq(FinAccBills::getIsDeleted, 0)
-					.eq(FinAccBills::getAccountDc, "C")).stream()
-					.map(FinAccBills::getAmountDrLoc).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
-				Bills bills = reconciliation(item, countD, divideIdsD, countC, divideIdsC, idsD, idsC, detail.getType());
-				billsMapper.updateById(bills);
-			}*/
 		}
-		detail.setStatus(2);
+		detail.setStatus(0);
 		baseMapper.updateById(detail);
 		return R.data(detail);
 	}
@@ -483,69 +468,6 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			throw new RuntimeException("缺少必要参数");
 		}
 		FinInvoices detail = baseMapper.selectById(finInvoices.getId());
-		/*if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-			//审批数据
-			LosAuditProecessDTO auditProecessDTO = new LosAuditProecessDTO();
-			//获取审批级次
-			List<LosAuditPathsLevels> auditPathsLevels;
-			// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
-			LosAuditPathsActs pathsActs;
-			//是否开启流程
-			LambdaQueryWrapper<LosAuditPathsActs> auditPathsActsLambdaQueryWrapper = new LambdaQueryWrapper<>();
-			auditPathsActsLambdaQueryWrapper
-				.eq(LosAuditPathsActs::getIsEnable, 1)
-				.eq(LosAuditPathsActs::getFidStatus, "status")
-				.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId())
-				.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
-				.eq(LosAuditPathsActs::getActId, 1110);
-			pathsActs = auditPathsActsService.getOne(auditPathsActsLambdaQueryWrapper);
-			//获取审批信息
-			LosAuditPathsActs losAuditPathsActs = auditPathsActsService.getOne(new LambdaQueryWrapper<LosAuditPathsActs>()
-				.eq(LosAuditPathsActs::getActId, 1110)
-				.eq(LosAuditPathsActs::getFidStatus, "status")
-				.eq(LosAuditPathsActs::getSalesCompanyId, AuthUtil.getDeptId())
-				.eq(LosAuditPathsActs::getTenantId, AuthUtil.getTenantId()));
-			Long pathId = losAuditPathsActs.getPathId();
-			auditPathsLevels = auditPathsLevelsService.list(new LambdaQueryWrapper<LosAuditPathsLevels>()
-				.eq(LosAuditPathsLevels::getTenantId, AuthUtil.getTenantId()).eq(LosAuditPathsLevels::getPathId, pathId));
-			auditProecessDTO.setTimes(1);
-			auditProecessDTO.setProcessType("发票申请");
-
-			// 没开启审批流直接走 通过流程
-			if (pathsActs == null || pathsActs.getIsEnable() == 2) {
-				throw new SecurityException("当前租户未查询到审批流配置");
-			} else {
-
-				if (CollectionUtils.isEmpty(auditPathsLevels)) {
-					throw new SecurityException("开启审批失败:未查询到审批信息");
-				}
-				// 绑定审核类型
-				auditProecessDTO.setCheckType("HYCK-FPSQ");
-				// 追加跳转路由url
-				auditProecessDTO.setUrl(finInvoices.getUrl());
-				auditProecessDTO.setPageStatus(finInvoices.getPageStatus());
-				auditProecessDTO.setPageLabel(finInvoices.getPageLabel());
-				auditProecessDTO.setOrderRemark(detail.getRemarks());
-				auditProecessDTO.setPathsLevelsList(auditPathsLevels);
-				auditProecessDTO.setActId(1);
-				auditProecessDTO.setSrcBillId(detail.getId());
-				auditProecessDTO.setBillId(detail.getId());
-				auditProecessDTO.setBillNo(detail.getBillNo());
-				auditProecessDTO.setSendUserId(AuthUtil.getUserId());
-				auditProecessDTO.setSendName(AuthUtil.getUserName());
-				auditProecessDTO.setSendTime(new Date());
-				auditProecessDTO.setBillTime(detail.getCreateTime());
-				auditProecessDTO.setTenantId(AuthUtil.getTenantId());
-				auditProecessDTO.setCorpId(detail.getCorpId());
-				auditProecessDTO.setSalesCompanyId(Long.parseLong(detail.getCreateDept()));
-				auditProecessDTO.setSalesCompanyName(detail.getCreateDeptName());
-				R financeProcess = auditProecessService.createFinanceProcess(auditProecessDTO);
-				if (!financeProcess.isSuccess()) {
-					throw new SecurityException("操作失败,请联系管理员");
-				}
-			}
-			detail.setStatus(1);
-		}*/
 		List<FeeCenter> feeCenterList = new ArrayList<>();
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
 			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
@@ -559,7 +481,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 					.eq(FeeCenter::getIsDeleted, 0)
 					.eq(FeeCenter::getAccBillId, finAccBills.getId())
 					.eq(FeeCenter::getAccStatus, 1)
-					.apply("amount != stl_ttl_amount + applied_amount")
+					.apply("amount > applied_invoice_amount")
 					.orderByDesc(FeeCenter::getCreateTime));
 				BigDecimal currentStlAmount = item.getCurrentAmount();
 				for (FeeCenter e : feeCenters) {
@@ -568,15 +490,14 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 					} else {
 						//计算字段null值处理
 						e.setAmount(ObjectUtils.isNotNull(e.getAmount()) ? e.getAmount() : new BigDecimal("0.00"));
-						e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
-						if (e.getAmount().subtract(e.getAppliedAmount()).subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) > 0) {
-							e.setAppliedAmount(e.getAppliedAmount().add(currentStlAmount));
+						if (e.getAmount().subtract(e.getAppliedInvoiceAmount()).compareTo(currentStlAmount) > 0) {
+							e.setAppliedInvoiceAmount(e.getAppliedInvoiceAmount().add(currentStlAmount));
 							currentStlAmount = new BigDecimal("0.00");
-						} else if (e.getAmount().subtract(e.getAppliedAmount()).subtract(e.getStlTtlAmount()).compareTo(currentStlAmount) == 0) {
-							e.setAppliedAmount(e.getAppliedAmount().add(currentStlAmount));
+						} else if (e.getAmount().subtract(e.getAppliedInvoiceAmount()).compareTo(currentStlAmount) == 0) {
+							e.setAppliedInvoiceAmount(e.getAppliedInvoiceAmount().add(currentStlAmount));
 							currentStlAmount = new BigDecimal("0.00");
 						} else {
-							e.setAppliedAmount(e.getAmount());
+							e.setAppliedInvoiceAmount(e.getAmount());
 							currentStlAmount = currentStlAmount.subtract(e.getAmount());
 						}
 						feeCenterList.add(e);
@@ -601,19 +522,12 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			throw new RuntimeException("缺少必要参数");
 		}
 		FinInvoices detail = baseMapper.selectById(finInvoices.getId());
-	/*	if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
-			if (detail.getStatus() > 1) {
-				throw new RuntimeException("正在审核中,撤销失败");
-			}
-			R financeProcess = auditProecessService.deteleByBillId(detail.getId());
-			if (!financeProcess.isSuccess()) {
-				throw new SecurityException("操作失败,请联系管理员");
-			}
-			detail.setStatus(0);
-		}*/
 		List<FeeCenter> feeCenterList = new ArrayList<>();
 		if (ObjectUtils.isNotNull(finInvoices.getFinInvoicesItemsList())) {
 			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
+				if ("1".equals(item.getGenerateInvoices())) {
+					throw new RuntimeException("已开发票,撤销失败");
+				}
 				FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
 				if (finAccBills == null) {
 					throw new RuntimeException("未找到账单明细,操作失败");
@@ -624,7 +538,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 					.eq(FeeCenter::getIsDeleted, 0)
 					.eq(FeeCenter::getAccBillId, finAccBills.getId())
 					.eq(FeeCenter::getAccStatus, 1)
-					.apply("applied_amount != 0")
+					.apply("applied_invoice_amount != 0")
 					.orderByDesc(FeeCenter::getCreateTime));
 				BigDecimal currentStlAmount = item.getCurrentAmount();
 				for (FeeCenter e : feeCenters) {
@@ -633,16 +547,14 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 					} else {
 						//计算字段null值处理
 						e.setAmount(ObjectUtils.isNotNull(e.getAmount()) ? e.getAmount() : new BigDecimal("0.00"));
-						e.setUnsettledAmount(ObjectUtils.isNotNull(e.getUnsettledAmount()) ? e.getUnsettledAmount() : new BigDecimal("0.00"));
-						e.setStlTtlAmount(ObjectUtils.isNotNull(e.getStlTtlAmount()) ? e.getStlTtlAmount() : new BigDecimal("0.00"));
-						if (e.getAppliedAmount().compareTo(currentStlAmount) > 0) {
-							e.setAppliedAmount(e.getAppliedAmount().subtract(currentStlAmount));
+						if (e.getAppliedInvoiceAmount().compareTo(currentStlAmount) > 0) {
+							e.setAppliedInvoiceAmount(e.getAppliedInvoiceAmount().subtract(currentStlAmount));
 							currentStlAmount = new BigDecimal("0.00");
-						} else if (e.getAppliedAmount().compareTo(currentStlAmount) == 0) {
-							e.setAppliedAmount(e.getAppliedAmount().subtract(currentStlAmount));
+						} else if (e.getAppliedInvoiceAmount().compareTo(currentStlAmount) == 0) {
+							e.setAppliedInvoiceAmount(e.getAppliedInvoiceAmount().subtract(currentStlAmount));
 							currentStlAmount = new BigDecimal("0.00");
 						} else {
-							e.setAppliedAmount(new BigDecimal("0.00"));
+							e.setAppliedInvoiceAmount(new BigDecimal("0.00"));
 							currentStlAmount = currentStlAmount.subtract(e.getAmount());
 						}
 						feeCenterList.add(e);
@@ -727,10 +639,10 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			finInvoiceItemDetail.setTenantId(AuthUtil.getTenantId());
 			finInvoiceItemDetail.setPid(finInvoices.getId());
 			finInvoiceItemDetail.setNumber(new BigDecimal("1"));
-			BigDecimal amount = finInvoices.getFinInvoicesItemsList().stream().map(FinInvoicesItems::getCurrentAmountLoc).filter(Objects::nonNull)
-				.reduce(BigDecimal.ZERO, BigDecimal::add);
-			finInvoiceItemDetail.setAmount(amount);
-			finInvoiceItemDetail.setPrice(amount);
+			finInvoiceItemDetail.setAmountRate(finInvoices.getTaxRate());
+			finInvoiceItemDetail.setUnit("票");
+			finInvoiceItemDetail.setServerName(finInvoices.getServerName());
+			BigDecimal amount = new BigDecimal("0.00");
 			StringBuilder srcIds = new StringBuilder();
 			for (FinInvoicesItems item : finInvoices.getFinInvoicesItemsList()) {
 				srcIds.append(item.getId()).append(",");
@@ -738,7 +650,16 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				item.setUpdateTime(new Date());
 				item.setUpdateUser(AuthUtil.getUserId());
 				item.setUpdateUserName(AuthUtil.getUserName());
+				if ("USD".equals(item.getCurCode())) {
+					amount = amount.add(item.getAmount().multiply(finInvoices.getExrate()));
+				} else {
+					amount = amount.add(item.getAmount());
+				}
 			}
+			finInvoiceItemDetail.setAmount(amount);
+			finInvoiceItemDetail.setPrice(amount);
+			BigDecimal taxRate = new BigDecimal("1").add(finInvoices.getTaxRate().divide(new BigDecimal("100"), MathContext.DECIMAL32).setScale(2, BigDecimal.ROUND_HALF_UP));
+			finInvoiceItemDetail.setAmountTax(amount.multiply(taxRate));
 			if (srcIds.length() > 0) {
 				finInvoiceItemDetail.setSrcId(srcIds.substring(0, srcIds.length() - 1));
 			}
@@ -766,4 +687,58 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 		}
 	}
 
+	@Override
+	public R generateFinInvoices(String billId) {
+		if (ObjectUtils.isNull(billId)) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		List<FinInvoicesItems> finStlBillsItemsList = new ArrayList<>();
+		List<FinInvoiceItemDetail> finInvoiceItemDetailList = new ArrayList<>();
+		FinInvoices finInvoices = new FinInvoices();
+		finInvoices.setType("销项");
+		finInvoices.setBillDate(new Date());
+		List<FinInvoicesItems> finInvoicesItems = finInvoicesItemsService.list(new LambdaQueryWrapper<FinInvoicesItems>()
+			.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+			.eq(FinInvoicesItems::getIsDeleted, 0)
+			.eq(FinInvoicesItems::getGenerateInvoices, "0")
+			.apply("find_in_set(pid,'" + billId + "')"));
+		if (finInvoicesItems.size() > 0) {
+			List<Long> ids = finInvoicesItems.stream().map(FinInvoicesItems::getPid).distinct().collect(Collectors.toList());
+			if (ids.size() > 0) {
+				List<FinInvoices> finInvoicesList = baseMapper.selectList(new LambdaQueryWrapper<FinInvoices>()
+					.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
+					.eq(FinInvoices::getIsDeleted, 0)
+					.in(FinInvoices::getId, ids));
+				finInvoices.setApplyNo(finInvoicesList.stream().map(FinInvoices::getBillNo).distinct().collect(Collectors.joining(",")));
+			} else {
+				throw new RuntimeException("数据错误");
+			}
+			finInvoices.setCorpId(finInvoicesItems.get(0).getCorpId());
+			finInvoices.setCorpCnName(finInvoicesItems.get(0).getCorpCnName());
+			finInvoices.setCorpEnName(finInvoicesItems.get(0).getCorpEnName());
+			for (FinInvoicesItems item : finInvoicesItems) {
+				FinInvoicesItems detail = new FinInvoicesItems();
+				BeanUtil.copyProperties(item, detail);
+				detail.setId(null);
+				detail.setApplySrcId(item.getId());
+				finStlBillsItemsList.add(detail);
+			}
+			finInvoices.setFinInvoicesItemsList(finStlBillsItemsList);
+		}
+		List<FinInvoiceItemDetail> finInvoiceItemDetails = finInvoiceItemDetailService.list(new LambdaQueryWrapper<FinInvoiceItemDetail>()
+			.eq(FinInvoiceItemDetail::getTenantId, AuthUtil.getTenantId())
+			.eq(FinInvoiceItemDetail::getIsDeleted, 0)
+			.apply("find_in_set(pid,'" + billId + "')"));
+		if (finInvoiceItemDetails.size() > 0) {
+			for (FinInvoiceItemDetail item : finInvoiceItemDetails) {
+				FinInvoiceItemDetail detail = new FinInvoiceItemDetail();
+				BeanUtil.copyProperties(item, detail);
+				detail.setId(null);
+				finInvoiceItemDetailList.add(detail);
+			}
+			finInvoices.setFinInvoiceItemDetailList(finInvoiceItemDetailList);
+		}
+		return R.data(finInvoices);
+	}
+
 }

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java

@@ -79,6 +79,8 @@ public class FinStlBillsController extends BladeController {
 			.like(ObjectUtils.isNotNull(finStlBills.getCollectionSituation()), FinStlBills::getCollectionSituation, finStlBills.getCollectionSituation())
 			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessType()), FinStlBills::getBusinessType, finStlBills.getBusinessType())
 			.eq(ObjectUtils.isNotNull(finStlBills.getBusinessTypes()), FinStlBills::getBusinessTypes, finStlBills.getBusinessTypes())
+			.eq(ObjectUtils.isNotNull(finStlBills.getStatus()), FinStlBills::getStatus, finStlBills.getStatus())
+			.eq(ObjectUtils.isNotNull(finStlBills.getBillStatus()), FinStlBills::getBillStatus, finStlBills.getBillStatus())
 			.like(ObjectUtils.isNotNull(finStlBills.getBusinessNo()), FinStlBills::getBusinessNo, finStlBills.getBusinessNo())
 			.like(ObjectUtils.isNotNull(finStlBills.getAccountNo()), FinStlBills::getAccountNo, finStlBills.getAccountNo())
 			.like(ObjectUtils.isNotNull(finStlBills.getCheckNo()), FinStlBills::getCheckNo, finStlBills.getCheckNo())

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

@@ -536,6 +536,71 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		}
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			List<Long> ids = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getSrcIdInvoices).filter(Objects::nonNull).collect(Collectors.toList());
+			if (ids.size() > 0) {
+				if ("D".equals(finStlBills.getDc())) {
+					List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
+						.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinInvoicesItems::getIsDeleted, 0)
+						.in(FinInvoicesItems::getPid, ids));
+					if (finInvoicesItemsList.size() > 0) {
+						List<Long> pid = finInvoicesItemsList.stream().map(FinInvoicesItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+						List<FinInvoices> finInvoicesList = finInvoicesMapper.selectList(new LambdaQueryWrapper<FinInvoices>()
+							.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
+							.eq(FinInvoices::getIsDeleted, 0)
+							.in(FinInvoices::getId, pid));
+						List<Long> id = finInvoicesList.stream().map(FinInvoices::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+						List<FinInvoicesItems> finInvoicesItemsSum = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
+							.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+							.eq(FinInvoicesItems::getIsDeleted, 0)
+							.eq(FinInvoicesItems::getGenerateInvoices, "0")
+							.in(FinInvoicesItems::getPid, id));
+						if (finInvoicesItemsSum.size() > 0) {
+							for (FinInvoices item : finInvoicesList) {
+								List<FinInvoicesItems> invoicesItemsSum = finInvoicesItemsSum.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+								List<FinInvoicesItems> finInvoicesItems = finInvoicesItemsList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+								if (invoicesItemsSum.size() == finInvoicesItems.size()) {
+									item.setBillStatus("1");
+									finInvoicesMapper.updateById(item);
+								}
+							}
+						}
+						for (FinInvoicesItems item : finInvoicesItemsList) {
+							item.setGenerateInvoices("1");
+							finInvoicesItemsMapper.updateById(item);
+						}
+					}
+				} else {
+					List<FinStlBillsItems> finStlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+						.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinStlBillsItems::getIsDeleted, 0)
+						.in(FinStlBillsItems::getId, ids));
+					for (FinStlBillsItems item : finStlBillsItemsList) {
+						item.setSrcIdStatus("1");
+					}
+					if (finStlBillsItemsList.size() > 0) {
+						List<Long> pid = finStlBillsItemsList.stream().map(FinStlBillsItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+						List<FinStlBillsItems> finStlBillsItemsList1 = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+							.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+							.eq(FinStlBillsItems::getIsDeleted, 0)
+							.eq(FinStlBillsItems::getSrcIdStatus, "0")
+							.in(FinStlBillsItems::getId, ids));
+						List<FinStlBills> finStlBills2 = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
+							.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+							.eq(FinStlBills::getIsDeleted, 0)
+							.in(FinStlBills::getId, pid));
+						for (FinStlBills item : finStlBills2) {
+							List<FinStlBillsItems> invoicesItemsSum = finStlBillsItemsList1.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+							List<FinStlBillsItems> finInvoicesItems = finStlBillsItemsList.stream().filter(e -> e.getPid().equals(item.getId())).collect(Collectors.toList());
+							if (invoicesItemsSum.size() == finInvoicesItems.size()) {
+								item.setBillStatus("1");
+							}
+						}
+						this.updateBatchById(finStlBills2);
+						finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
+					}
+				}
+			}
 			List<FinAccBills> finAccBillsList = new ArrayList<>();
 			List<FeeCenter> feeCenterList = new ArrayList<>();
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
@@ -614,55 +679,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				finAccBills.setUpdateTime(new Date());
 				finAccBills.setUpdateUserName(AuthUtil.getUserName());
 				finAccBillsList.add(finAccBills);
-				/**-----------------------业务单据状态修改--------------------------- */
-				/*if (ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideId()) && finAccBills.getBusinessBillDivideId() != 0) {
-					Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
-					if (bills != null) {
-						bills.setBillingStatus(bills.getBillingStatus() + 1);
-						BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "D")).stream()
-							.map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "C")).stream()
-							.map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						Bills billsDetail = settlement(bills, countD, countC);
-						billsMapper.updateById(billsDetail);
-					}
-				} else {
-					Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
-					if (bills != null) {
-						bills.setBillingStatus(bills.getBillingStatus() + 1);
-						BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "D")).stream()
-							.map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "C")).stream()
-							.map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						Bills billsDetail = settlement(bills, countD, countC);
-						billsMapper.updateById(billsDetail);
-					}
-				}*/
-				/**-----------------------业务单据状态修改--------------------------- */
 				/**-----------------------费用中心数据处理--------------------------- */
 				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -757,6 +773,50 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		}
 		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
 		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			List<Long> ids = finStlBills.getFinStlBillsItemsList().stream().map(FinStlBillsItems::getSrcIdInvoices).filter(Objects::nonNull).collect(Collectors.toList());
+			if (ids.size() > 0) {
+				if ("D".equals(finStlBills.getDc())) {
+					List<FinInvoicesItems> finInvoicesItemsList = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
+						.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinInvoicesItems::getIsDeleted, 0)
+						.in(FinInvoicesItems::getPid, ids));
+					if (finInvoicesItemsList.size() > 0) {
+						List<Long> pid = finInvoicesItemsList.stream().map(FinInvoicesItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+						List<FinInvoices> finInvoicesList = finInvoicesMapper.selectList(new LambdaQueryWrapper<FinInvoices>()
+							.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
+							.eq(FinInvoices::getIsDeleted, 0)
+							.in(FinInvoices::getId, pid));
+						for (FinInvoices item : finInvoicesList) {
+							item.setBillStatus("0");
+							finInvoicesMapper.updateById(item);
+						}
+						for (FinInvoicesItems item : finInvoicesItemsList) {
+							item.setGenerateInvoices("0");
+							finInvoicesItemsMapper.updateById(item);
+						}
+					}
+				} else {
+					List<FinStlBillsItems> finStlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
+						.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+						.eq(FinStlBillsItems::getIsDeleted, 0)
+						.in(FinStlBillsItems::getId, ids));
+					for (FinStlBillsItems item : finStlBillsItemsList) {
+						item.setSrcIdStatus("0");
+					}
+					if (finStlBillsItemsList.size() > 0) {
+						List<Long> pid = finStlBillsItemsList.stream().map(FinStlBillsItems::getPid).filter(Objects::nonNull).distinct().collect(Collectors.toList());
+						List<FinStlBills> finStlBills2 = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
+							.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
+							.eq(FinStlBills::getIsDeleted, 0)
+							.in(FinStlBills::getId, pid));
+						for (FinStlBills item : finStlBills2) {
+							item.setBillStatus("0");
+						}
+						this.updateBatchById(finStlBills2);
+						finStlBillsItemsService.saveOrUpdateBatch(finStlBillsItemsList);
+					}
+				}
+			}
 			List<FinAccBills> finAccBillsList = new ArrayList<>();
 			List<FeeCenter> feeCenterList = new ArrayList<>();
 			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
@@ -850,55 +910,6 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				finAccBills.setUpdateTime(new Date());
 				finAccBills.setUpdateUserName(AuthUtil.getUserName());
 				finAccBillsList.add(finAccBills);
-				/**-----------------------业务单据状态修改--------------------------- */
-				/*if (ObjectUtils.isNotNull(finAccBills.getBusinessBillDivideId()) && finAccBills.getBusinessBillDivideId() != 0) {
-					Bills bills = billsMapper.selectById(finAccBills.getBusinessBillDivideId());
-					if (bills != null) {
-						bills.setBillingStatus(bills.getBillingStatus() + 1);
-						BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "D")).stream()
-							.map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "C")).stream()
-							.map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						Bills billsDetail = settlement(bills, countD, countC);
-						billsMapper.updateById(billsDetail);
-					}
-				} else {
-					Bills bills = billsMapper.selectById(finAccBills.getBusinessBillId());
-					if (bills != null) {
-						bills.setBillingStatus(bills.getBillingStatus() + 1);
-						BigDecimal countD = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "D")).stream()
-							.map(FinAccBills::getStlAmountDrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						BigDecimal countC = finAccBillsService.list(new LambdaQueryWrapper<FinAccBills>()
-							.eq(FinAccBills::getBusinessBillId, item.getAccBillId())
-							.eq(FinAccBills::getTenantId, AuthUtil.getTenantId())
-							.eq(FinAccBills::getIsDeleted, 0)
-							.eq(FinAccBills::getIsCleared, 9)
-							.eq(FinAccBills::getAccountDc, "C")).stream()
-							.map(FinAccBills::getStlAmountCrLoc).filter(Objects::nonNull)
-							.reduce(BigDecimal.ZERO, BigDecimal::add);
-						Bills billsDetail = settlement(bills, countD, countC);
-						billsMapper.updateById(billsDetail);
-					}
-				}*/
-				/**-----------------------业务单据状态修改--------------------------- */
 				/**-----------------------费用中心数据处理--------------------------- */
 				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -1342,6 +1353,8 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			List<FinInvoices> finInvoices = finInvoicesMapper.selectList(new LambdaQueryWrapper<FinInvoices>()
 				.eq(FinInvoices::getTenantId, AuthUtil.getTenantId())
 				.eq(FinInvoices::getIsDeleted, 0)
+				.eq(FinInvoices::getBillStatus, "0")
+				.eq(FinInvoices::getStatus, "3")
 				.apply("find_in_set(id,'" + billId + "')"));
 			if (finInvoices.size() > 0) {
 				finStlBills.setCorpId(finInvoices.get(0).getCorpId());
@@ -1356,6 +1369,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			List<FinInvoicesItems> finInvoicesItems = finInvoicesItemsMapper.selectList(new LambdaQueryWrapper<FinInvoicesItems>()
 				.eq(FinInvoicesItems::getTenantId, AuthUtil.getTenantId())
 				.eq(FinInvoicesItems::getIsDeleted, 0)
+				.eq(FinInvoicesItems::getGenerateInvoices, "0")
 				.apply("find_in_set(pid,'" + billId + "')"));
 			if (finInvoicesItems.size() > 0) {
 				for (FinInvoicesItems item : finInvoicesItems) {
@@ -1373,8 +1387,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					finStlBillsItems.setCurrentStlAmountLoc(item.getCurrentAmountLoc());
 					finStlBillsItems.setCurrentInvoiceAmount(item.getCurrentAmount());
 					finStlBillsItems.setCurrentInvoiceAmountLoc(item.getCurrentAmountLoc());
-					finStlBillsItems.setInvoiceBillId(item.getId());
-					finStlBillsItems.setInvoiceNo(item.getBillNo());
+					finStlBillsItems.setSrcIdInvoices(item.getId());
 					finStlBillsItemsList.add(finStlBillsItems);
 				}
 				finStlBills.setFinStlBillsItemsList(finStlBillsItemsList);
@@ -1383,6 +1396,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			List<FinStlBills> finStlBills1 = baseMapper.selectList(new LambdaQueryWrapper<FinStlBills>()
 				.eq(FinStlBills::getTenantId, AuthUtil.getTenantId())
 				.eq(FinStlBills::getIsDeleted, 0)
+				.eq(FinStlBills::getStatus, "3")
 				.apply("find_in_set(id,'" + billId + "')"));
 			if (finStlBills1.size() > 0) {
 				finStlBills.setCorpId(finStlBills1.get(0).getCorpId());
@@ -1396,12 +1410,14 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 			List<FinStlBillsItems> finInvoicesItems = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
 				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
 				.eq(FinStlBillsItems::getIsDeleted, 0)
+				.eq(FinStlBillsItems::getSrcIdStatus, "0")
 				.apply("find_in_set(pid,'" + billId + "')"));
 			if (finInvoicesItems.size() > 0) {
 				for (FinStlBillsItems item : finInvoicesItems) {
 					FinStlBillsItems finStlBillsItems = new FinStlBillsItems();
 					BeanUtil.copyProperties(item, finStlBillsItems);
 					finStlBillsItems.setId(null);
+					finStlBillsItems.setSrcIdInvoices(item.getId());
 					finStlBillsItemsList.add(finStlBillsItems);
 				}
 				finStlBills.setFinStlBillsItemsList(finStlBillsItemsList);