Browse Source

2024年1月25日15:20:44

纪新园 1 year ago
parent
commit
4d59d668d2
29 changed files with 373 additions and 70 deletions
  1. 14 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/aea/entity/AeaBills.java
  2. 12 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java
  3. 17 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java
  4. 5 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/ListAccBillVO.java
  5. 22 0
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/invoices/entity/FinInvoices.java
  6. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBills.java
  7. 2 2
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/entity/FinStlBillsItems.java
  8. 1 1
      blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/DecisionAnalysis.java
  9. 3 0
      blade-service/blade-los/src/main/java/org/springblade/los/Util/MagicValues.java
  10. 23 3
      blade-service/blade-los/src/main/java/org/springblade/los/basic/reports/service/impl/ReportsServiceImpl.java
  11. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/aea/controller/AeaBillsController.java
  12. 10 9
      blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java
  13. 6 0
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java
  14. 1 3
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.java
  15. 8 2
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/mapper/BillsMapper.xml
  16. 0 1
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java
  17. 12 8
      blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/impl/BillsServiceImpl.java
  18. 29 19
      blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java
  19. 2 2
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java
  20. 2 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java
  21. 18 4
      blade-service/blade-los/src/main/java/org/springblade/los/finance/invoices/service/impl/FinInvoicesServiceImpl.java
  22. 20 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/controller/FinStlBillsController.java
  23. 4 0
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java
  24. 75 5
      blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/impl/FinStlBillsServiceImpl.java
  25. 46 0
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/FinanceStatisticsController.java
  26. 1 1
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/StatisticAnalysisController.java
  27. 1 3
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/IStatisticAnalysisService.java
  28. 3 3
      blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/impl/StatisticAnalysisServiceImpl.java
  29. 29 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/PostController.java

+ 14 - 2
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/aea/entity/AeaBills.java

@@ -1092,12 +1092,12 @@ public class AeaBills implements Serializable {
 	 * 综合(是否随机,合同,发票,装箱单,配额证,许可证,产地证,手册,核销单)
 	 */
 	@ApiModelProperty(value = "综合(是否随机,合同,发票,装箱单,配额证,许可证,产地证,手册,核销单)")
-	private Integer comprehensive;
+	private String comprehensive;
 	/**
 	 * 综合其他
 	 */
 	@ApiModelProperty(value = "综合其他")
-	private Integer comprehensiveOther;
+	private String comprehensiveOther;
 
 	/**
 	 * 租户
@@ -1157,5 +1157,17 @@ public class AeaBills implements Serializable {
 	@TableField(exist = false)
 	private List<FilesCenter> filesList;
 
+	/**
+	 * 默认团队id
+	 */
+	@ApiModelProperty(value = "默认团队id")
+	private String teamId;
+
+	/**
+	 * 默认团队名
+	 */
+	@ApiModelProperty(value = "默认团队名")
+	private String teamName;
+
 
 }

+ 12 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/entity/Bills.java

@@ -1643,4 +1643,16 @@ public class Bills implements Serializable {
 	@TableField(exist = false)
 	private String profitMargin;
 
+	/**
+	 * 默认团队id
+	 */
+	@ApiModelProperty(value = "默认团队id")
+	private String teamId;
+
+	/**
+	 * 默认团队名
+	 */
+	@ApiModelProperty(value = "默认团队名")
+	private String teamName;
+
 }

+ 17 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/fee/entity/FinAccBills.java

@@ -480,6 +480,11 @@ public class FinAccBills implements Serializable {
 	@DateTimeFormat(pattern = "yyyy-MM-dd")
 	private Date invoiceDate;
 	/**
+	 * 发票状态 0 = 未开 9=已开 2 待开 3 不开
+	 */
+	@ApiModelProperty(value = "发票状态 0 = 未开 9=已开 2 待开 3 不开")
+	private Integer invoiceStatus;
+	/**
 	 * 发票日期
 	 */
 	@TableField(exist = false)
@@ -675,5 +680,17 @@ public class FinAccBills implements Serializable {
 	@ApiModelProperty(value = "已申请发票金额")
 	private BigDecimal appliedInvoiceAmountStlUsd;
 
+	/**
+	 * 默认团队id
+	 */
+	@ApiModelProperty(value = "默认团队id")
+	private String teamId;
+
+	/**
+	 * 默认团队名
+	 */
+	@ApiModelProperty(value = "默认团队名")
+	private String teamName;
+
 
 }

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

@@ -185,4 +185,9 @@ public class ListAccBillVO extends FinAccBills {
 	 */
 	private Long accId;
 
+	/**
+	 * 团队
+	 */
+	private String postId;
+
 }

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

@@ -604,5 +604,27 @@ public class FinInvoices implements Serializable {
 	@TableField(exist = false)
 	private List<FinStlBillsItemsReports> finStlBillsItemsReportsList;
 
+	/**
+	 * 应收
+	 */
+	@TableField(exist = false)
+	private BigDecimal amountD;
+	/**
+	 * 应收Usd
+	 */
+	@TableField(exist = false)
+	private BigDecimal amountDUsd;
+
+	/**
+	 * 应付
+	 */
+	@TableField(exist = false)
+	private BigDecimal amountC;
+	/**
+	 * 应付Usd
+	 */
+	@TableField(exist = false)
+	private BigDecimal amountCUsd;
+
 
 }

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

@@ -591,7 +591,7 @@ public class FinStlBills implements Serializable {
 
 	//欠费金额
 	@TableField(exist = false)
-	private BigDecimal amountOwed;
+	private String amountOwed;
 
 	/**
 	 * 单据状态

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

@@ -539,9 +539,9 @@ public class FinStlBillsItems implements Serializable {
 	@ApiModelProperty(value = "本次结算本币金额")
 	private BigDecimal currentStlAmountLoc;
 	/**
-	 * 是否开发票, 0 未处理, 1 待开 2 已开 2 不开
+	 * 是否开发票, 0 未处理, 1 待开 2 已开 3 不开
 	 */
-	@ApiModelProperty(value = "是否开发票, 0 未处理, 1 待开 2 已开 2 不开")
+	@ApiModelProperty(value = "是否开发票, 0 未处理, 1 待开 2 已开 3 不开")
 	private Integer isInvoice;
 	/**
 	 * 发票 Id

+ 1 - 1
blade-service-api/blade-los-api/src/main/java/org/springblade/los/business/sea/dto/DecisionAnalysis.java → blade-service-api/blade-los-api/src/main/java/org/springblade/los/statisticAnalysis/DecisionAnalysis.java

@@ -1,4 +1,4 @@
-package org.springblade.los.business.sea.dto;
+package org.springblade.los.statisticAnalysis;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/Util/MagicValues.java

@@ -29,6 +29,9 @@ public class MagicValues {
 	public static final String HYJK = "HYJK";
 	public static final String AMEND = "AMEND";
 	public static final String SE = "SE";
+	public static final String SI = "SI";
+	public static final String AE = "AE";
+	public static final String AI = "AI";
 	public static final String USD = "USD";
 	public static final String CNY = "CNY";
 	public static final String D = "D";

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

@@ -762,7 +762,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					finStlBills.setAgreement("否");
 				}
 				BigDecimal amountC = new BigDecimal(MagicValues.ZERO);
+				BigDecimal amountC1 = new BigDecimal(MagicValues.ZERO);
 				BigDecimal amountD = new BigDecimal(MagicValues.ZERO);
+				BigDecimal amountD1 = new BigDecimal(MagicValues.ZERO);
 				List<FeeCenter> feeCenterListC = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0)
@@ -772,6 +774,7 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					.eq(FeeCenter::getCorpId, finStlBills.getCorpId()));
 				if (feeCenterListC.size() > 0) {
 					amountC = feeCenterListC.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountC1 = feeCenterListC.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 				}
 				List<FeeCenter> feeCenterListD = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
@@ -782,8 +785,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 					.eq(FeeCenter::getCorpId, finStlBills.getCorpId()));
 				if (feeCenterListD.size() > 0) {
 					amountD = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					amountD1 = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
 				}
-				finStlBills.setAmountOwed(amountC.subtract(amountD));
+				BigDecimal amount = amountD.subtract(amountD1);
+				BigDecimal amount1 = amountC.subtract(amountC1);
+				if (amount.subtract(amount1).compareTo(new BigDecimal("0.00")) > 0) {
+					finStlBills.setAmountOwed("是");
+				} else {
+					finStlBills.setAmountOwed("否");
+				}
+
 				List<FinStlBillsItemsReports> finStlBillsItemsReportsList = new ArrayList<>();
 				LambdaQueryWrapper<FinStlBillsItems> lambdaQueryWrapper = new LambdaQueryWrapper<FinStlBillsItems>()
 					.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
@@ -818,7 +829,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							}
 							StringBuilder billCorpName = new StringBuilder();
 							StringBuilder billCorpNameAgreement = new StringBuilder();
-							for (Bills item : billsList) {
+							List<Long> billsIds = billsList.stream().map(Bills::getCorpId).distinct().collect(Collectors.toList());
+							List<Bills> billsList1 = billsList.stream().filter(e -> billsIds.contains(e.getCorpId())).collect(Collectors.toList());
+							for (Bills item : billsList1) {
 								billCorpName.append(item.getCorpCnName()).append("/");
 								AgreementPrice agreementPrice = agreementPriceList.stream().filter(e -> e.getCorpId().equals(item.getCorpId())).findFirst().orElse(null);
 								if (agreementPrice != null) {
@@ -1068,6 +1081,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						finStlBillsItemsReportsList.add(finStlBillsItemsReports);
 					}
 				}
+				finStlBills.setAmountD(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				finStlBills.setAmountDUsd(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmountUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				finStlBills.setAmountC(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmountC).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				finStlBills.setAmountCUsd(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmountUsdC).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				finStlBills.setFinStlBillsItemsReportsList(finStlBillsItemsReportsList);
 				map.put(MagicValues.DATA, finStlBills);
 			} else {
@@ -1120,6 +1137,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						finStlBillsItemsReportsList.add(finStlBillsItemsReports);
 					}
 				}
+				finStlBills.setAmountD(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmount).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				finStlBills.setAmountDUsd(finStlBillsItemsReportsList.stream().map(FinStlBillsItemsReports::getAmountUsd).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 				finStlBills.setFinStlBillsItemsReportsList(finStlBillsItemsReportsList);
 				map.put(MagicValues.DATA, finStlBills);
 			} else {
@@ -1301,7 +1320,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 			} else {
 				map.put(MagicValues.DATA, null);
 			}
-		} else if (MagicValues.AMEND.equals(reportCode) && MagicValues.SE.equals(groupCode) && MagicValues.AMEND.equals(type)) {
+		} else if (MagicValues.AMEND.equals(reportCode) && MagicValues.AMEND.equals(type)
+			&& (MagicValues.SE.equals(groupCode) || MagicValues.SI.equals(groupCode) || MagicValues.AE.equals(groupCode) || MagicValues.AI.equals(groupCode))) {
 			List<Bills> list = new ArrayList<>();
 			Amends amends = amendsService.getById(billId);
 			String profitMargin = sysClient.getParamService(MagicValues.PROFIT_MARGIN);

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/controller/AeaBillsController.java

@@ -112,6 +112,9 @@ public class AeaBillsController extends BladeController {
 			lambdaQueryWrapper.ge(AeaBills::getEta, aeaBills.getEtaList().get(0));
 			lambdaQueryWrapper.le(AeaBills::getEta, aeaBills.getEtaList().get(1));
 		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(aeaBills.getBookingAgentCnName()), i -> i.like(AeaBills::getBookingAgentCnName, aeaBills.getBookingAgentCnName()).or()
 			.like(AeaBills::getBookingAgentEnName, aeaBills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(aeaBills.getBillType()), AeaBills::getBillType, aeaBills.getBillType())
@@ -169,6 +172,9 @@ public class AeaBillsController extends BladeController {
 			lambdaQueryWrapper.ge(AeaBills::getEta, aeaBills.getEtaList().get(0));
 			lambdaQueryWrapper.le(AeaBills::getEta, aeaBills.getEtaList().get(1));
 		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(aeaBills.getBookingAgentCnName()), i -> i.like(AeaBills::getBookingAgentCnName, aeaBills.getBookingAgentCnName()).or()
 			.like(AeaBills::getBookingAgentEnName, aeaBills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(aeaBills.getBillType()), AeaBills::getBillType, aeaBills.getBillType())

+ 10 - 9
blade-service/blade-los/src/main/java/org/springblade/los/business/aea/service/impl/AeaBillsServiceImpl.java

@@ -38,8 +38,6 @@ import org.springblade.los.business.aea.service.IAeaBillsService;
 import org.springblade.los.business.aea.vo.AeaBillsVO;
 import org.springblade.los.business.files.entity.FilesCenter;
 import org.springblade.los.business.files.service.IFilesCenterService;
-import org.springblade.los.business.sea.entity.Bills;
-import org.springblade.los.business.sea.entity.PreContainers;
 import org.springblade.los.check.dto.LosAuditProecessDTO;
 import org.springblade.los.check.entity.LosAuditPathsActs;
 import org.springblade.los.check.entity.LosAuditPathsLevels;
@@ -1145,15 +1143,18 @@ public class AeaBillsServiceImpl extends ServiceImpl<AeaBillsMapper, AeaBills> i
 		) {
 			throw new RuntimeException("缺少必要参数");
 		}
-		List<AeaBills> billsList = baseMapper.selectList(new LambdaQueryWrapper<AeaBills>()
-			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), AeaBills::getBusinessType, bills.getBusinessType())
-			.eq(ObjectUtils.isNotNull(bills.getMblno()), AeaBills::getMblno, bills.getMblno())
-			.eq(ObjectUtils.isNotNull(bills.getHblno()), AeaBills::getHblno, bills.getHblno())
-			.eq(ObjectUtils.isNotNull(bills.getRefno()), AeaBills::getRefno, bills.getRefno())
+		LambdaQueryWrapper<AeaBills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getBusinessType()), AeaBills::getBusinessType, bills.getBusinessType())
+			.like(ObjectUtils.isNotNull(bills.getMblno()), AeaBills::getMblno, bills.getMblno())
+			.like(ObjectUtils.isNotNull(bills.getHblno()), AeaBills::getHblno, bills.getHblno())
+			.like(ObjectUtils.isNotNull(bills.getRefno()), AeaBills::getRefno, bills.getRefno())
 			.eq(AeaBills::getIsDeleted, 0)
 			.eq(AeaBills::getTenantId, AuthUtil.getTenantId())
-			.eq(AeaBills::getStatus, 3)
-		);
+			.eq(AeaBills::getStatus, 3);
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		List<AeaBills> billsList = baseMapper.selectList(lambdaQueryWrapper);
 		if (billsList.size() == 0) {
 			throw new RuntimeException("未查到单据信息");
 		}

+ 6 - 0
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/controller/BillsController.java

@@ -116,6 +116,9 @@ public class BillsController extends BladeController {
 			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
 			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 			.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())
@@ -170,6 +173,9 @@ public class BillsController extends BladeController {
 			lambdaQueryWrapper.ge(Bills::getEta, bills.getEtaList().get(0));
 			lambdaQueryWrapper.le(Bills::getEta, bills.getEtaList().get(1));
 		}
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
 		lambdaQueryWrapper.and(ObjectUtils.isNotNull(bills.getBookingAgentCnName()), i -> i.like(Bills::getBookingAgentCnName, bills.getBookingAgentCnName()).or()
 			.like(Bills::getBookingAgentEnName, bills.getBookingAgentCnName()))
 			.eq(ObjectUtils.isNotNull(bills.getIssueType()), Bills::getIssueType, bills.getIssueType())

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

@@ -17,13 +17,11 @@
 package org.springblade.los.business.sea.mapper;
 
 import org.apache.ibatis.annotations.Param;
-import org.springblade.core.tool.api.R;
-import org.springblade.los.business.sea.dto.DecisionAnalysis;
+import org.springblade.los.statisticAnalysis.DecisionAnalysis;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.vo.BillsVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import org.springblade.los.finance.fee.entity.FinAccBills;
 import org.springblade.los.finance.fee.entity.ListAccBillVO;
 import org.springblade.los.finance.fee.vo.FinAccBillsVO;
 

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

@@ -334,7 +334,9 @@
         WHERE
         acc.is_deleted = '0'
         AND fee.is_deleted = '0'
-
+        <if test='acc.postId != null'>
+            and find_in_set(acc.team_id,#{acc.postId})
+        </if>
         <if test='acc.type != null and acc.type != "" and acc.type == "2"'>
             and acc.amount_dr_loc > acc.stl_amount_dr_loc + fee.applied_amount
         </if>
@@ -343,6 +345,7 @@
         </if>
         <if test='acc.type != null and acc.type != "" and acc.type == "4"'>
             and fee.amount > fee.uninvoiced_amount + fee.applied_invoice_amount
+            and acc.invoice_status != 3
         </if>
         <if test='acc.type != null and acc.type != "" and acc.type == "5"'>
             and fee.voucher_status = '0'
@@ -447,7 +450,7 @@
         GROUP BY acc.bill_no
         ORDER BY acc.create_time
     </select>
-    <select id="decisionAnalysis" resultType="org.springblade.los.business.sea.dto.DecisionAnalysis">
+    <select id="decisionAnalysis" resultType="org.springblade.los.statisticAnalysis.DecisionAnalysis">
         SELECT
         corp_cn_name AS customer,
         src_cn_name AS analysis,
@@ -661,6 +664,9 @@
         <if test='acc.accId != null'>
             and acc.id = #{acc.accId}
         </if>
+        <if test='acc.postId != null'>
+            and find_in_set(acc.team_id,#{acc.postId})
+        </if>
         GROUP BY acc.bill_no
         ORDER BY acc.create_time
     </select>

+ 0 - 1
blade-service/blade-los/src/main/java/org/springblade/los/business/sea/service/IBillsService.java

@@ -17,7 +17,6 @@
 package org.springblade.los.business.sea.service;
 
 import org.springblade.core.tool.api.R;
-import org.springblade.los.business.sea.dto.DecisionAnalysis;
 import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.business.sea.vo.BillsVO;
 import com.baomidou.mybatisplus.extension.service.IService;

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

@@ -33,6 +33,7 @@ import org.springblade.los.basic.business.service.IBusinessTypeService;
 import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.billno.entity.BusinessBillNo;
 import org.springblade.los.billno.service.IBusinessBillNoService;
+import org.springblade.los.business.aea.entity.AeaBills;
 import org.springblade.los.business.files.entity.FilesCenter;
 import org.springblade.los.business.files.service.IFilesCenterService;
 import org.springblade.los.business.sea.dto.WaitingBox;
@@ -1435,16 +1436,19 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		) {
 			throw new RuntimeException("缺少必要参数");
 		}
-		List<Bills> billsList = baseMapper.selectList(new LambdaQueryWrapper<Bills>()
-			.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
-			.eq(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
-			.eq(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
-			.eq(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
-			.eq(ObjectUtils.isNotNull(bills.getRefno()), Bills::getRefno, bills.getRefno())
+		LambdaQueryWrapper<Bills> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+		lambdaQueryWrapper.eq(ObjectUtils.isNotNull(bills.getBusinessType()), Bills::getBusinessType, bills.getBusinessType())
+			.like(ObjectUtils.isNotNull(bills.getMblno()), Bills::getMblno, bills.getMblno())
+			.like(ObjectUtils.isNotNull(bills.getHblno()), Bills::getHblno, bills.getHblno())
+			.like(ObjectUtils.isNotNull(bills.getBookingNo()), Bills::getBookingNo, bills.getBookingNo())
+			.like(ObjectUtils.isNotNull(bills.getRefno()), Bills::getRefno, bills.getRefno())
 			.eq(Bills::getIsDeleted, 0)
 			.eq(Bills::getTenantId, AuthUtil.getTenantId())
-			.eq(Bills::getStatus, 3)
-		);
+			.eq(Bills::getStatus, 3);
+		if (!AuthUtil.getUserRole().contains("admin") && !AuthUtil.getUserRole().contains("财务")) {
+			lambdaQueryWrapper.apply("find_in_set(team_id,'" + AuthUtil.getPostId() + "')");
+		}
+		List<Bills> billsList = baseMapper.selectList(lambdaQueryWrapper);
 		if (billsList.size() == 0) {
 			throw new RuntimeException("未查到单据信息");
 		}

+ 29 - 19
blade-service/blade-los/src/main/java/org/springblade/los/check/service/impl/AuditProecessServiceImpl.java

@@ -361,7 +361,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
 					);
-				} if ("海运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("海运进口审核".equals(auditProecess.getProcessType())) {
 					message.setMessageBody("您有新的海运进口审核,业务单号:" + "" + proecessTemp.getBillNo() + ","
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
@@ -397,7 +398,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("海运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运出口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("海运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("海运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运进口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 
@@ -427,7 +429,6 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getPid, bills.getId()));
 				if ("MM".equals(bills.getBillType())) {
 					List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
@@ -441,7 +442,6 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 							List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 								.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 								.eq(FeeCenter::getIsDeleted, 0)
-								.eq(FeeCenter::getAccStatus, 0)
 								.in(FeeCenter::getPid, ids));
 							feeCenterList.addAll(feeCenters);
 						}
@@ -451,11 +451,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					item.setApproverId(AuthUtil.getUserId());
 					item.setApproverName(AuthUtil.getUserName());
 					item.setApproveTime(new Date());
+					item.setAuditStatus("1");
 				}
-				feeCenterService.saveOrUpdateBatch(feeCenterList);
-				if (feeCenterList.size() != 0) {
+				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> 0 == e.getAccStatus()).collect(Collectors.toList());
+				if (feeCenters.size() != 0) {
 					FinAccBills finAccBills = new FinAccBills();
-					finAccBills.setFeeCenterList(feeCenterList);
+					finAccBills.setFeeCenterList(feeCenters);
 					finAccBills.setBusinessTypeCode("HYZD");
 					finAccBills.setBillNoFormat("HYZD");
 					finAccBills.setAccountType("");
@@ -464,11 +465,15 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					finAccBills.setBookingNo(bills.getBookingNo());
 					finAccBills.setPolNamePrint(bills.getPolNamePrint());
 					finAccBills.setPodNamePrint(bills.getPodNamePrint());
+					finAccBills.setTeamId(bills.getTeamId());
+					finAccBills.setTeamName(bills.getTeamName());
 					finAccBillsService.generateBill(finAccBills);
 				}
+				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("海运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运出口审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("海运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("海运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运进口审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
@@ -501,7 +506,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("海运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运出口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("海运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("海运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的海运进口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
@@ -618,7 +624,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				message.setParameter(String.valueOf(auditProecess.getBillId()));
 				message.setMessageType(1);
 				message.setTenantId(AuthUtil.getTenantId());
-				 if ("付费申请".equals(auditProecess.getProcessType())) {
+				if ("付费申请".equals(auditProecess.getProcessType())) {
 					message.setMessageBody("您有新的付费申请,申请单号:" + "" + proecessTemp.getBillNo() + ","
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
@@ -1260,7 +1266,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
 					);
-				} if ("空运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("空运进口审核".equals(auditProecess.getProcessType())) {
 					message.setMessageBody("您有新的空运进口审核,业务单号:" + "" + proecessTemp.getBillNo() + ","
 						+ "单据日期:" + billsDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
@@ -1296,7 +1303,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("空运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运出口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("空运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("空运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运进口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 
@@ -1326,7 +1334,6 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 					.eq(FeeCenter::getIsDeleted, 0)
-					.eq(FeeCenter::getAccStatus, 0)
 					.eq(FeeCenter::getPid, bills.getId()));
 				if ("MM".equals(bills.getBillType())) {
 					List<Bills> billsList = billsMapper.selectList(new LambdaQueryWrapper<Bills>()
@@ -1340,7 +1347,6 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 							List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
 								.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
 								.eq(FeeCenter::getIsDeleted, 0)
-								.eq(FeeCenter::getAccStatus, 0)
 								.in(FeeCenter::getPid, ids));
 							feeCenterList.addAll(feeCenters);
 						}
@@ -1350,20 +1356,23 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					item.setApproverId(AuthUtil.getUserId());
 					item.setApproverName(AuthUtil.getUserName());
 					item.setApproveTime(new Date());
+					item.setAuditStatus("1");
 				}
-				feeCenterService.saveOrUpdateBatch(feeCenterList);
-				if (feeCenterList.size() != 0) {
+				List<FeeCenter> feeCenters = feeCenterList.stream().filter(e -> 0 == e.getAccStatus()).collect(Collectors.toList());
+				if (feeCenters.size() != 0) {
 					FinAccBills finAccBills = new FinAccBills();
-					finAccBills.setFeeCenterList(feeCenterList);
+					finAccBills.setFeeCenterList(feeCenters);
 					finAccBills.setBusinessTypeCode("HYZD");
 					finAccBills.setBillNoFormat("HYZD");
 					finAccBills.setAccountType("");
 					finAccBills.setRefno(bills.getRefno());
 					finAccBillsService.generateBill(finAccBills);
 				}
+				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("空运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运出口审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("空运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("空运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运进口审核已通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);
@@ -1396,7 +1405,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				feeCenterService.saveOrUpdateBatch(feeCenterList);
 				if ("空运出口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运出口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
-				} if ("空运进口审核".equals(auditProecess.getProcessType())) {
+				}
+				if ("空运进口审核".equals(auditProecess.getProcessType())) {
 					sendMessage.setMessageBody("您的空运进口审核未通过" + ",业务单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 				R save = messageClient.save(sendMessage);

+ 2 - 2
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/controller/FinAccBillsController.java

@@ -364,7 +364,7 @@ public class FinAccBillsController extends BladeController {
 					finAccBillsVOList.add(item);
 				}
 			} else if ("1".equals(type)) {
-				if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getReconciliationAmount())) != 0) {
+				if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getReconciliationAmount())) < 0) {
 					finAccBillsVOList.add(item);
 				}
 			} else if ("5".equals(type)) {
@@ -436,7 +436,7 @@ public class FinAccBillsController extends BladeController {
 					finAccBillsVOList.add(item);
 				}
 			} else if ("1".equals(type)) {
-				if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getReconciliationAmount())) != 0) {
+				if (new BigDecimal("0.00").compareTo(item.getAmount().subtract(item.getReconciliationAmount())) < 0) {
 					finAccBillsVOList.add(item);
 				}
 			} else if ("5".equals(type)) {

+ 2 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/impl/FinAccBillsServiceImpl.java

@@ -304,6 +304,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 				feeCenterItem.setAccStatus(1);
 				feeCenterItem.setAccById(AuthUtil.getUserId());
 				feeCenterItem.setAccByName(AuthUtil.getUserName());
+				feeCenterItem.setAuditStatus("2");
 				feeCenterList.add(feeCenterItem);
 			}
 		}
@@ -439,6 +440,7 @@ public class FinAccBillsServiceImpl extends ServiceImpl<FinAccBillsMapper, FinAc
 
 	@Override
 	public List<FinAccBillsVO> listAccBill(ListAccBillVO finAccBills) {
+		finAccBills.setPostId(AuthUtil.getPostId());
 		return billsMapper.listAccBill(finAccBills);
 	}
 

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

@@ -296,6 +296,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				finAccBills.setInvoiceBillNo(detail.getBillNo());
 				finAccBills.setInvoiceNo(detail.getInvoiceNo());
 				finAccBills.setInvoiceDate(detail.getInvoiceDate());
+				finAccBills.setInvoiceStatus(9);
 				finAccBills.setUpdateUser(AuthUtil.getUserId());
 				finAccBills.setUpdateTime(new Date());
 				finAccBills.setUpdateUserName(AuthUtil.getUserName());
@@ -508,6 +509,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				finAccBills.setInvoiceBillNo("");
 				finAccBills.setInvoiceNo("");
 				finAccBills.setInvoiceDate(null);
+				finAccBills.setInvoiceStatus(0);
 				finAccBills.setUpdateUser(AuthUtil.getUserId());
 				finAccBills.setUpdateTime(new Date());
 				finAccBills.setUpdateUserName(AuthUtil.getUserName());
@@ -586,14 +588,26 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 				}
 				if ("CNY".equals(item.getCurCode())){
 					BigDecimal amount = finAccBills.getAppliedInvoiceAmount().subtract(finAccBills.getAppliedInvoiceAmountStl());
-					if (item.getCurrentAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
-						throw new RuntimeException("本次申请金额大于未申请金额");
+					if ("C".equals(finAccBills.getAccountDc())){
+						if (item.getCurrentAmount().compareTo(finAccBills.getAmountCr().subtract(amount)) > 0) {
+							throw new RuntimeException("本次申请金额大于未申请金额");
+						}
+					}else{
+						if (item.getCurrentAmount().compareTo(finAccBills.getAmountDr().subtract(amount)) > 0) {
+							throw new RuntimeException("本次申请金额大于未申请金额");
+						}
 					}
 					finAccBills.setAppliedInvoiceAmount(finAccBills.getAppliedInvoiceAmount().add(item.getCurrentAmount()));
 				}else{
 					BigDecimal amount = finAccBills.getAppliedInvoiceAmountUsd().subtract(finAccBills.getAppliedInvoiceAmountStlUsd());
-					if (item.getCurrentAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
-						throw new RuntimeException("本次申请金额大于未申请金额");
+					if ("C".equals(finAccBills.getAccountDc())){
+						if (item.getCurrentAmount().compareTo(finAccBills.getAmountCrUsd().subtract(amount)) > 0) {
+							throw new RuntimeException("本次申请金额大于未申请金额");
+						}
+					}else{
+						if (item.getCurrentAmount().compareTo(finAccBills.getAmountDrUsd().subtract(amount)) > 0) {
+							throw new RuntimeException("本次申请金额大于未申请金额");
+						}
 					}
 					finAccBills.setAppliedInvoiceAmountUsd(finAccBills.getAppliedInvoiceAmountUsd().add(item.getCurrentAmount()));
 				}

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

@@ -201,6 +201,26 @@ public class FinStlBillsController extends BladeController {
 	}
 
 	/**
+	 * 是否开票 确认
+	 */
+	@PostMapping("/confirmInvoicing")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "确认", notes = "传入finStlBills")
+	public R confirmInvoicing(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.confirmInvoicing(finStlBills);
+	}
+
+	/**
+	 * 是否开票 撤销
+	 */
+	@PostMapping("/revokeInvoicing")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "撤销", notes = "传入finStlBills")
+	public R revokeInvoicing(@Valid @RequestBody FinStlBills finStlBills) {
+		return finStlBillsService.revokeInvoicing(finStlBills);
+	}
+
+	/**
 	 * 财务结算 确认
 	 */
 	@PostMapping("/confirmSettlement")

+ 4 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/stl/service/IFinStlBillsService.java

@@ -105,4 +105,8 @@ public interface IFinStlBillsService extends IService<FinStlBills> {
 	R generateFinStlBills(String billId, String dc);
 
 	FinStlBills getByDetail(FinStlBills finStlBills);
+
+	R confirmInvoicing(FinStlBills finStlBills);
+
+	R revokeInvoicing(FinStlBills finStlBills);
 }

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

@@ -33,7 +33,6 @@ import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.billno.entity.BusinessBillNo;
 import org.springblade.los.billno.service.IBusinessBillNoService;
 import org.springblade.los.business.sea.entity.Bills;
-import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.check.dto.LosAuditProecessDTO;
 import org.springblade.los.check.entity.LosAuditPathsActs;
 import org.springblade.los.check.entity.LosAuditPathsLevels;
@@ -1291,11 +1290,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 				}
 				if ("CNY".equals(item.getCurCode())) {
 					BigDecimal amount = finAccBills.getAppliedAmount().subtract(finAccBills.getAppliedAmountStl());
-					if ("D".equals(finAccBills.getAccountDc())){
+					if ("D".equals(finAccBills.getAccountDc())) {
 						if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
 							throw new RuntimeException("本次申请金额大于未申请金额");
 						}
-					}else{
+					} else {
 						if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountCrLoc().subtract(amount).subtract(finAccBills.getStlAmountCrLoc())) > 0) {
 							throw new RuntimeException("本次申请金额大于未申请金额");
 						}
@@ -1303,11 +1302,11 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 					finAccBills.setAppliedAmount(finAccBills.getAppliedAmount().add(item.getCurrentStlAmount()));
 				} else {
 					BigDecimal amount = finAccBills.getAppliedAmountUsd().subtract(finAccBills.getAppliedAmountStlUsd());
-					if ("D".equals(finAccBills.getAccountDc())){
+					if ("D".equals(finAccBills.getAccountDc())) {
 						if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountDrLoc().subtract(amount).subtract(finAccBills.getStlAmountDrLoc())) > 0) {
 							throw new RuntimeException("本次申请金额大于未申请金额");
 						}
-					}else{
+					} else {
 						if (item.getCurrentStlAmount().compareTo(finAccBills.getAmountCrLoc().subtract(amount).subtract(finAccBills.getStlAmountCrLoc())) > 0) {
 							throw new RuntimeException("本次申请金额大于未申请金额");
 						}
@@ -1592,6 +1591,7 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		for (FinStlBillsItems item : finStlBillsItemsList) {
 			ListAccBillVO finAccBills = new ListAccBillVO();
 			finAccBills.setAccId(item.getAccBillId());
+			finAccBills.setPostId(AuthUtil.getPostId());
 			FinAccBillsVO finAccBillsVO = finAccBillsService.listByAccBillId(finAccBills);
 			if (finAccBillsVO != null) {
 				item.setAppliedAmount(finAccBillsVO.getAppliedAmount());
@@ -1620,4 +1620,74 @@ public class FinStlBillsServiceImpl extends ServiceImpl<FinStlBillsMapper, FinSt
 		detail.setFinStlBillsItemsList(finStlBillsItemsList);
 		return detail;
 	}
+
+	@Override
+	public R confirmInvoicing(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			List<FeeCenter> feeCenterList = new ArrayList<>();
+			List<FinAccBills> finAccBillsList = new ArrayList<>();
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsInvoice(3);
+				FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
+				if (finAccBills == null) {
+					throw new RuntimeException("未找到账单明细,操作失败");
+				}
+				finAccBills.setInvoiceStatus(3);
+				finAccBillsList.add(finAccBills);
+				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getAccBillId, finAccBills.getId())
+					.eq(FeeCenter::getAccStatus, 1)
+					.orderByDesc(FeeCenter::getCreateTime));
+				for (FeeCenter e : feeCenters) {
+					e.setInvoiceStatus(3);
+				}
+				feeCenterList.addAll(feeCenters);
+			}
+			feeCenterService.saveOrUpdateBatch(feeCenterList);
+			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+		}
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
+
+	@Override
+	public R revokeInvoicing(FinStlBills finStlBills) {
+		if (finStlBills.getId() == null) {
+			throw new RuntimeException("缺少必要参数");
+		}
+		FinStlBills detail = baseMapper.selectById(finStlBills.getId());
+		if (ObjectUtils.isNotNull(finStlBills.getFinStlBillsItemsList())) {
+			List<FeeCenter> feeCenterList = new ArrayList<>();
+			List<FinAccBills> finAccBillsList = new ArrayList<>();
+			for (FinStlBillsItems item : finStlBills.getFinStlBillsItemsList()) {
+				item.setIsInvoice(0);
+				FinAccBills finAccBills = finAccBillsService.getById(item.getAccBillId());
+				if (finAccBills == null) {
+					throw new RuntimeException("未找到账单明细,操作失败");
+				}
+				finAccBills.setInvoiceStatus(0);
+				finAccBillsList.add(finAccBills);
+				List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+					.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+					.eq(FeeCenter::getIsDeleted, 0)
+					.eq(FeeCenter::getAccBillId, finAccBills.getId())
+					.eq(FeeCenter::getAccStatus, 1)
+					.orderByDesc(FeeCenter::getCreateTime));
+				for (FeeCenter e : feeCenters) {
+					e.setInvoiceStatus(0);
+				}
+				feeCenterList.addAll(feeCenters);
+			}
+			feeCenterService.saveOrUpdateBatch(feeCenterList);
+			finAccBillsService.saveOrUpdateBatch(finAccBillsList);
+		}
+		baseMapper.updateById(detail);
+		return R.data(detail);
+	}
 }

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

@@ -0,0 +1,46 @@
+package org.springblade.los.statisticAnalysis.controller;
+
+/**
+ * @author :jixinyuan
+ * @date : 2024/1/25
+ */
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springblade.core.tool.api.R;
+import org.springblade.los.statisticAnalysis.DecisionAnalysis;
+import org.springblade.los.statisticAnalysis.service.IStatisticAnalysisService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author :jixinyuan
+ * @date : 2023/11/29
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/financeStatistics")
+@Api(value = "财务利润分析", tags = "财务利润分析")
+public class FinanceStatisticsController {
+
+	private final IStatisticAnalysisService statisticAnalysisService;
+
+
+
+	/**
+	 * 分页 决策分析列表
+	 */
+	@GetMapping("/decisionAnalysis")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "分页", notes = "传入decisionAnalysis")
+	public R<IPage<DecisionAnalysis>> list(DecisionAnalysis decisionAnalysis, Query query) {
+		return statisticAnalysisService.decisionAnalysis(decisionAnalysis, Condition.getPage(query));
+	}
+
+}

+ 1 - 1
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/controller/StatisticAnalysisController.java

@@ -8,7 +8,7 @@ import lombok.AllArgsConstructor;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.los.business.sea.dto.DecisionAnalysis;
+import org.springblade.los.statisticAnalysis.DecisionAnalysis;
 import org.springblade.los.statisticAnalysis.service.IStatisticAnalysisService;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;

+ 1 - 3
blade-service/blade-los/src/main/java/org/springblade/los/statisticAnalysis/service/IStatisticAnalysisService.java

@@ -17,10 +17,8 @@
 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.business.sea.dto.DecisionAnalysis;
-import org.springblade.los.business.sea.vo.BillsVO;
+import org.springblade.los.statisticAnalysis.DecisionAnalysis;
 
 import java.util.List;
 import java.util.Map;

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

@@ -3,7 +3,7 @@ package org.springblade.los.statisticAnalysis.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.AllArgsConstructor;
 import org.springblade.core.tool.api.R;
-import org.springblade.los.business.sea.dto.DecisionAnalysis;
+import org.springblade.los.statisticAnalysis.DecisionAnalysis;
 import org.springblade.los.business.sea.mapper.BillsMapper;
 import org.springblade.los.statisticAnalysis.service.IStatisticAnalysisService;
 import org.springframework.stereotype.Service;
@@ -29,12 +29,12 @@ public class StatisticAnalysisServiceImpl implements IStatisticAnalysisService {
 	@Override
 	public R<List<Map<String, Object>>> decisionAnalysisByCGS() {
 		List<Map<String, Object>> list = billsMapper.decisionAnalysisByCGS();
-		return null;
+		return R.data(list);
 	}
 
 	@Override
 	public R<List<Map<String, Object>>> decisionAnalysisByYWY() {
 		List<Map<String, Object>> list = billsMapper.decisionAnalysisByYWY();
-		return null;
+		return R.data(list);
 	}
 }

+ 29 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/PostController.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.system.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
@@ -28,16 +29,20 @@ import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.secure.BladeUser;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.system.entity.Post;
 import org.springblade.system.service.IPostService;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springblade.system.vo.PostVO;
 import org.springblade.system.wrapper.PostWrapper;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 
 import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
@@ -56,6 +61,8 @@ public class PostController extends BladeController {
 
 	private final IPostService postService;
 
+	private final IUserClient userClient;
+
 	/**
 	 * 详情
 	 */
@@ -142,8 +149,29 @@ public class PostController extends BladeController {
 	@ApiOperationSupport(order = 8)
 	@ApiOperation(value = "下拉数据源", notes = "传入post")
 	public R<List<Post>> select(String tenantId, BladeUser bladeUser) {
-		List<Post> list = postService.list(Wrappers.<Post>query().lambda().eq(Post::getTenantId, Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())));
+		List<Post> list = postService.list(Wrappers.<Post>query().lambda()
+			.eq(Post::getTenantId, Func.toStrWithEmpty(tenantId, bladeUser.getTenantId())));
 		return R.data(list);
 	}
 
+
+	/**
+	 * 下拉数据源
+	 */
+	@GetMapping("/selectByUser")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "下拉数据源", notes = "传入post")
+	public R<List<Post>> selectByUser(Long userId) {
+		List<Post> list = new ArrayList<>();
+		R<User> r = userClient.userInfoById(userId);
+		if (r.isSuccess()) {
+			list = postService.list(new LambdaQueryWrapper<Post>()
+				.eq(Post::getTenantId, AuthUtil.getTenantId())
+				.eq(Post::getIsDeleted, 0)
+				.apply("find_in_set(id,'" + r.getData().getPostId() + "')"));
+		}
+		return R.data(list);
+	}
+
+
 }