Просмотр исходного кода

君海:1.货款付费-确认付款接口增加其他费用明细生成账单并结算逻辑
2.重新绘制汇款通知报表样式
3.货款收费-汇款通知报表接口计算公式修改并增加费用字段
华翰:1.报表打印MB/L 付款方式也同HB/L 付款方式一样转换成英文

纪新园 10 месяцев назад
Родитель
Сommit
dc2d68b783

+ 45 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/report/AgentFeeReport.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.los.trade.report;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.system.entity.Dept;
 
@@ -55,6 +56,10 @@ public class AgentFeeReport implements Serializable {
 	 */
 	private BigDecimal remainingAmount;
 	/**
+	 * 之前需补金额
+	 */
+	private BigDecimal beforeRepairAmount;
+	/**
 	 * 总计金额
 	 */
 	private BigDecimal sumAmount;
@@ -114,5 +119,45 @@ public class AgentFeeReport implements Serializable {
 	 */
 	private BigDecimal discountAmountSub;
 
+	/**
+	 * 贸易代理费
+	 */
+	private BigDecimal tradeAgencyAmount;
+
+	/**
+	 * 其他费用
+	 */
+	private BigDecimal otherAmount;
+
+	/**
+	 * 增值税
+	 */
+	private BigDecimal valueAddedTax;
+
+	/**
+	 * 关税
+	 */
+	private BigDecimal tariff;
+
+	/**
+	 * 实付贸易代理费
+	 */
+	private BigDecimal realityTradeAgencyAmount;
+
+	/**
+	 * 实付其他费用
+	 */
+	private BigDecimal realityOtherAmount;
+
+	/**
+	 * 实付增值税
+	 */
+	private BigDecimal realityValueAddedTax;
+
+	/**
+	 * 实付关税
+	 */
+	private BigDecimal realityTariff;
+
 
 }

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

@@ -1146,7 +1146,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						throw new RuntimeException("请先维护费用");
 					}
 					list.add(0, bills);
-				} else if (MagicValues.MH.equals(bills.getBillType())) {
+				}
+				else if (MagicValues.MH.equals(bills.getBillType())) {
 					// 分单
 					Bills details = billsService.getOne(new LambdaQueryWrapper<Bills>()
 						.eq(Bills::getId, bills.getMasterId())
@@ -1777,6 +1778,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				if (resDictBiz.isSuccess() && ObjectUtils.isNotNull(resDictBiz.getData())) {
 					bills.setHpaymode(resDictBiz.getData().getRemark());
 				}
+				R<DictBiz> resDictBizM = dictBizClient.getDictBiz("payment_method_los", bills.getMpaymode(), AuthUtil.getTenantId());
+				if (resDictBizM.isSuccess() && ObjectUtils.isNotNull(resDictBizM.getData())) {
+					bills.setMpaymode(resDictBizM.getData().getRemark());
+				}
 				R<DictBiz> resDictBiz1 = dictBizClient.getDictBiz("issue_type_F", bills.getIssueType(), AuthUtil.getTenantId());
 				if (resDictBiz1.isSuccess() && ObjectUtils.isNotNull(resDictBiz1.getData())) {
 					bills.setIssueType(resDictBiz1.getData().getRemark());
@@ -1942,6 +1947,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				if (resDictBiz.isSuccess() && ObjectUtils.isNotNull(resDictBiz.getData())) {
 					bills.setHpaymode(resDictBiz.getData().getRemark());
 				}
+				R<DictBiz> resDictBizM = dictBizClient.getDictBiz("payment_method_los", bills.getMpaymode(), AuthUtil.getTenantId());
+				if (resDictBizM.isSuccess() && ObjectUtils.isNotNull(resDictBizM.getData())) {
+					bills.setMpaymode(resDictBizM.getData().getRemark());
+				}
 				R<DictBiz> resDictBiz1 = dictBizClient.getDictBiz("issue_type_F", bills.getIssueType(), AuthUtil.getTenantId());
 				if (resDictBiz1.isSuccess() && ObjectUtils.isNotNull(resDictBiz1.getData())) {
 					bills.setIssueType(resDictBiz1.getData().getRemark());
@@ -2838,6 +2847,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 				if (resDictBiz.isSuccess() && ObjectUtils.isNotNull(resDictBiz.getData())) {
 					bills.setHpaymode(resDictBiz.getData().getRemark());
 				}
+				R<DictBiz> resDictBizM = dictBizClient.getDictBiz("payment_method_los", bills.getMpaymode(), AuthUtil.getTenantId());
+				if (resDictBizM.isSuccess() && ObjectUtils.isNotNull(resDictBizM.getData())) {
+					bills.setMpaymode(resDictBizM.getData().getRemark());
+				}
 				R<DictBiz> resDictBiz1 = dictBizClient.getDictBiz("issue_type_F", bills.getIssueType(), AuthUtil.getTenantId());
 				if (resDictBiz1.isSuccess() && ObjectUtils.isNotNull(resDictBiz1.getData())) {
 					bills.setIssueType(resDictBiz1.getData().getRemark());

+ 69 - 13
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -1889,7 +1889,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		List<FinAccBills> finAccBills = new ArrayList<>();
 		List<FinStlBillsItems> stlBillsItemsList = new ArrayList<>();
 		List<FeeCenter> feeCenters1 = new ArrayList<>();
-		for (FeeCenter item : feeCenterList) {
+		for (FeeCenter item : feeCentersList) {
 			if (1 == item.getStlStatus()) {
 				throw new RuntimeException("费用:" + item.getFeeCnName() + "已确认");
 			}
@@ -3190,6 +3190,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		}
 		stlAgent.setTradeAgencyAmount(tradeAgencyAmount);
 		stlAgent.setOtherAmount(otherAmount);
+		stlAgent.setValueAddedTax(valueAddedTax);
+		stlAgent.setTariff(tariff);
 		baseMapper.updateById(stlAgent);
 		feeCenterService.saveOrUpdateBatch(feeCenterList);
 		//给角色为财务的人发送消息
@@ -3471,7 +3473,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0));
 				if (feeCenterList.isEmpty()) {
-					throw new RuntimeException("请先维护首款费用信息");
+					throw new RuntimeException("请先维护应收费用信息");
 				}
 				List<Long> ids = feeCenterList.stream().map(FeeCenter::getPid).filter(Objects::nonNull).collect(Collectors.toList());
 				List<FeeCenter> feeCenterListC = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
@@ -3480,9 +3482,17 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					.apply("stl_pid is not null")
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0));
-				if (feeCenterList.isEmpty()) {
-					throw new RuntimeException("请先维护首款费用信息");
+				if (feeCenterListC.isEmpty()) {
+					throw new RuntimeException("请先维护应付费用信息");
 				}
+				agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 				List<AgentRecordReport> reportList = new ArrayList<>();
 				List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
 						"1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
@@ -3636,13 +3646,32 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
 					}
 				}
+				BigDecimal remainingAmount = feeCenterList.stream().filter(e -> e.getFeeCode().equals("YFK")).map(FeeCenter::getAmount).filter(Objects::nonNull)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				if (new BigDecimal("0.00").compareTo(remainingAmount) < 0) {
+					agentFeeReport.setRemainingAmount(remainingAmount);
+					agentFeeReport.setBeforeRepairAmount(new BigDecimal("0.00"));
+				} else if (new BigDecimal("0.00").compareTo(remainingAmount) > 0) {
+					agentFeeReport.setRemainingAmount(new BigDecimal("0.00"));
+					agentFeeReport.setBeforeRepairAmount(remainingAmount.abs());
+				} else {
+					agentFeeReport.setRemainingAmount(new BigDecimal("0.00"));
+					agentFeeReport.setBeforeRepairAmount(new BigDecimal("0.00"));
+				}
+				agentFeeReport.setRealitySumAmount(agentFeeReport.getRealitySumAmount().add(agentFeeReport.getRealityOtherAmount())
+					.add(agentFeeReport.getRealityTariff()).add(agentFeeReport.getRealityTradeAgencyAmount())
+					.add(agentFeeReport.getRealityValueAddedTax()).add(agentFeeReport.getBeforeRepairAmount())
+					.subtract(agentFeeReport.getRemainingAmount()));
 				agentFeeReport.setPostElectricFee(agent.getPostElectricFee());
 				agentFeeReport.setServiceCharge(agent.getServiceCharge());
-				agentFeeReport.setSumAmount(agent.getActualAmount());
-				agentFeeReport.setRemainingAmount(feeCenterList.stream().filter(e -> e.getFeeCode().equals("YFK")).map(FeeCenter::getAmount).filter(Objects::nonNull)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRepairAmount(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getSumAmount())
+				agentFeeReport.setOtherAmount(agent.getOtherAmount());
+				agentFeeReport.setTariff(agent.getTariff());
+				agentFeeReport.setValueAddedTax(agent.getValueAddedTax());
+				agentFeeReport.setTradeAgencyAmount(agent.getTradeAgencyAmount());
+				agentFeeReport.setSumAmount(agent.getActualAmount().add(agent.getOtherAmount()).add(agent.getTariff())
+					.add(agent.getValueAddedTax()).add(agent.getTradeAgencyAmount()).add(agentFeeReport.getBeforeRepairAmount())
 					.subtract(agentFeeReport.getRemainingAmount()));
+				agentFeeReport.setRepairAmount(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getSumAmount()));
 				if (new BigDecimal("0.00").compareTo(agentFeeReport.getRepairAmount()) > 0) {
 					agentFeeReport.setSurplusAmount(agentFeeReport.getRepairAmount().abs());
 					agentFeeReport.setRepairAmount(agentFeeReport.getRepairAmount().abs());
@@ -3652,7 +3681,6 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				}
 				agentFeeReport.setDate(dateFormat.format(agent.getBusinessDate()));
 				agentFeeReport.setPaymentMethod(agent.getAdvanceRatio());
-
 				agentFeeReport.setReportPostElectricFee(agentFeeReport.getRealityPostElectricFee());
 				BigDecimal discountAmount = reportList.stream().map(AgentRecordReport::getDiscountAmount)
 					.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -3762,6 +3790,14 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						}
 					}
 				}
+				agentFeeReport.setRealityOtherAmount(feeCenterListC.stream().filter(e -> !"SXF,YDF,YFK,WK,SFK,DLF,ZZS,GS".contains(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityTariff(feeCenterListC.stream().filter(e -> "GS".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityValueAddedTax(feeCenterListC.stream().filter(e -> "ZZS".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+				agentFeeReport.setRealityTradeAgencyAmount(feeCenterListC.stream().filter(e -> "DLF".equals(e.getFeeCode()))
+					.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 				List<AgentRecordReport> reportList = new ArrayList<>();
 				List<FeeCenter> feeCentersSk = feeCenterList.stream().filter(e -> ObjectUtils.isNotNull(e.getFeeType()) &&
 						"1".equals(e.getFeeType()) && "SFK".equals(e.getFeeCode()))
@@ -3915,13 +3951,33 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentFeeReport.setRealitySumAmount(realityAmount.add(agentFeeReport.getRealityPostElectricFee()).add(agentFeeReport.getRealityServiceCharge()));
 					}
 				}
+				BigDecimal remainingAmount = feeCenterList.stream().filter(e -> e.getFeeCode().equals("YFK")).map(FeeCenter::getAmount).filter(Objects::nonNull)
+					.reduce(BigDecimal.ZERO, BigDecimal::add);
+				agentFeeReport.setRemainingAmount(remainingAmount);
+				if (new BigDecimal("0.00").compareTo(remainingAmount) < 0) {
+					agentFeeReport.setRemainingAmount(remainingAmount);
+					agentFeeReport.setBeforeRepairAmount(new BigDecimal("0.00"));
+				} else if (new BigDecimal("0.00").compareTo(remainingAmount) > 0) {
+					agentFeeReport.setRemainingAmount(new BigDecimal("0.00"));
+					agentFeeReport.setBeforeRepairAmount(remainingAmount.abs());
+				} else {
+					agentFeeReport.setRemainingAmount(new BigDecimal("0.00"));
+					agentFeeReport.setBeforeRepairAmount(new BigDecimal("0.00"));
+				}
+				agentFeeReport.setRealitySumAmount(agentFeeReport.getRealitySumAmount().add(agentFeeReport.getRealityOtherAmount())
+					.add(agentFeeReport.getRealityTariff()).add(agentFeeReport.getRealityTradeAgencyAmount())
+					.add(agentFeeReport.getRealityValueAddedTax()).add(agentFeeReport.getBeforeRepairAmount())
+					.subtract(agentFeeReport.getRemainingAmount()));
 				agentFeeReport.setPostElectricFee(agent.getPostElectricFee());
 				agentFeeReport.setServiceCharge(agent.getServiceCharge());
-				agentFeeReport.setSumAmount(agent.getActualAmount());
-				agentFeeReport.setRemainingAmount(feeCenterList.stream().filter(e -> e.getFeeCode().equals("YFK")).map(FeeCenter::getAmount).filter(Objects::nonNull)
-					.reduce(BigDecimal.ZERO, BigDecimal::add));
-				agentFeeReport.setRepairAmount(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getSumAmount())
+				agentFeeReport.setOtherAmount(agent.getOtherAmount());
+				agentFeeReport.setTariff(agent.getTariff());
+				agentFeeReport.setValueAddedTax(agent.getValueAddedTax());
+				agentFeeReport.setTradeAgencyAmount(agent.getTradeAgencyAmount());
+				agentFeeReport.setSumAmount(agent.getActualAmount().add(agent.getOtherAmount()).add(agent.getTariff())
+					.add(agent.getValueAddedTax()).add(agent.getTradeAgencyAmount()).add(agentFeeReport.getBeforeRepairAmount())
 					.subtract(agentFeeReport.getRemainingAmount()));
+				agentFeeReport.setRepairAmount(agentFeeReport.getRealitySumAmount().subtract(agentFeeReport.getSumAmount()));
 				if (new BigDecimal("0.00").compareTo(agentFeeReport.getRepairAmount()) > 0) {
 					agentFeeReport.setSurplusAmount(agentFeeReport.getRepairAmount().abs());
 					agentFeeReport.setRepairAmount(agentFeeReport.getRepairAmount().abs());