Browse Source

华翰海运出口报表金额计算问题、amend数据不显示问题优化

liyuan 8 months ago
parent
commit
a557728e1d

+ 16 - 0
blade-common/src/main/java/org/springblade/common/enums/CommonEnum.java

@@ -13,11 +13,27 @@ public enum CommonEnum {
 	ONE("1"),
 
 	/**
+	 * 2
+	 */
+	TWO("2"),
+
+	/**
+	 * 4
+	 */
+	FOUR("4"),
+
+	/**
 	 * 0
 	 */
 	ZERO("0"),
 
 	/**
+	 * 审核通过
+	 * 后续可以单例一个审核枚举
+	 */
+	AUDIT_SUCCESSFUL("通过"),
+
+	/**
 	 * 是否分支管理
 	 */
 	WHETHER_BRANCH_MANAGEMENT("whether.branch.management"),

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

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.AllArgsConstructor;
+import org.springblade.common.enums.CommonEnum;
 import org.springblade.common.utils.NumToWords;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -47,6 +48,7 @@ import org.springblade.los.business.customsDeclaration.service.ICustomsDeclarati
 import org.springblade.los.business.sea.dto.ContainersReports;
 import org.springblade.los.business.sea.entity.*;
 import org.springblade.los.business.sea.service.*;
+import org.springblade.los.enums.AmendType;
 import org.springblade.los.finance.agreement.entity.AgreementPrice;
 import org.springblade.los.finance.agreement.entity.AgreementPriceItems;
 import org.springblade.los.finance.agreement.service.IAgreementPriceItemsService;
@@ -3047,6 +3049,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 								Comparator.comparing(f -> f.getFeeId() + f.getCorpId() + f.getCurCode() + f.getDc()))), ArrayList::new));
 						List<FeeCenterReports> feeCenterReportList = new ArrayList<>();
 						for (FeeCenter fee : feeCenters) {
+/*							if (AmendType.isAmendType(fee.getBusinessType()) && !CommonEnum.FOUR.info.equals(fee.getAuditStatus())) {
+								// 是 amend 类型并没审核通过的不计入
+								continue;
+							}*/
 							FeeCenterReports feeCenterReports = new FeeCenterReports();
 							feeCenterReports.setRemarks(fee.getRemarks());
 							feeCenterReports.setPid(bills.getId());
@@ -3563,6 +3569,10 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						if (item.equals(bills)) {
 							// 当前单据,计算 ProfitStatus
 							for (FeeCenter fee : allFeeCenter) {
+/*								if (AmendType.isAmendType(fee.getBusinessType()) && !CommonEnum.FOUR.info.equals(fee.getAuditStatus())) {
+									// 是 amend 类型并没审核通过的不计入
+									continue;
+								}*/
 								if (MagicValues.C.equals(fee.getDc()) && "P/S".equals(fee.getFeeCode())) {
 									// if("USD".equals(fee.getCurCode())){
 									sumOFPS = sumOFPS.add(fee.getAmountLoc()).setScale(2, BigDecimal.ROUND_HALF_UP);
@@ -3586,8 +3596,16 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 									sumLocCr = sumLocCr.add(fee.getAmountLoc()).setScale(2, BigDecimal.ROUND_HALF_UP);
 								}
 							}
-
-
+							bills.setAmountDrUsd(sumUSDDr);
+							bills.setAmountDr(sumCNYDr);
+							bills.setAmountCrUsd(sumUSDCr);
+							bills.setAmountCr(sumCNYCr);
+							bills.setAmountProfit(bills.getAmountDr().subtract(bills.getAmountCr()));
+							bills.setAmountProfitUsd(bills.getAmountDrUsd().subtract(bills.getAmountCrUsd()));
+							bills.setAmountProfitLoc(bills.getAmountProfit().add(bills.getAmountProfitUsd().multiply(bills.getRate())));
+							BigDecimal dAll = bills.getAmountDr().add(bills.getAmountDrUsd().multiply(bills.getRate()));
+							bills.setGrossMargin(bills.getAmountProfitLoc().compareTo(BigDecimal.ZERO) == 0 || dAll.compareTo(BigDecimal.ZERO) == 0 ?
+									BigDecimal.ZERO: bills.getAmountProfitLoc().divide(dAll, 4, RoundingMode.HALF_UP));
 							BigDecimal sumProfitUSD = sumUSDDr.subtract(sumUSDCr).setScale(2, BigDecimal.ROUND_HALF_UP);
 							BigDecimal sumProfitCNY = sumCNYDr.subtract(sumCNYCr).setScale(2, BigDecimal.ROUND_HALF_UP);
 							BigDecimal sumProfitLoc = sumLocDr.subtract(sumLocCr).setScale(2, BigDecimal.ROUND_HALF_UP);
@@ -6063,9 +6081,9 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 						/*	List<FeeCenterReports> feeCenters = feeCenterReportsList.stream()
 								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
 									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));*/
-							List<FeeCenterReports> feeCenters1 = feeCenterReportsList1.stream()
+/*							List<FeeCenterReports> feeCenters1 = feeCenterReportsList1.stream()
 								.collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
-									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));
+									Comparator.comparing(FeeCenterReports::getFeeCnName))), ArrayList::new));*/
 							BigDecimal amountDr = new BigDecimal("0.00");
 							BigDecimal amountCr = new BigDecimal("0.00");
 							BigDecimal amountDrUsd = new BigDecimal("0.00");
@@ -6247,10 +6265,11 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 							BigDecimal amountDrCny = ibCurrencyService.converterCny(MagicValues.USD, amountDrUsd, MagicValues.D, "1");
 							BigDecimal amountCrCny = ibCurrencyService.converterCny(MagicValues.USD, amountCrUsd, MagicValues.C, "1");
 							item.setAmountProfitLoc(amountDr.subtract(amountCr).add(amountDrCny.subtract(amountCrCny)));
-							for (FeeCenterReports fee : feeCenters1) {
-								FeeCenterReports feeReports = feeCenterReportsList1.stream()
+							for (FeeCenterReports fee : feeCenterReportsList1) {
+/*								FeeCenterReports feeReports = feeCenterReportsList1.stream()
 									.filter(e -> e.getFeeCnName().equals(fee.getFeeCnName()))
-									.findFirst().orElse(null);
+									.findFirst().orElse(null);*/
+								FeeCenterReports feeReports = fee;
 								FeeCenterReports feeCenterReports1 = new FeeCenterReports();
 								feeCenterReports1.setFeeCnName(fee.getFeeCnName());
 								feeCenterReports1.setHblno(fee.getHblno());

+ 48 - 0
blade-service/blade-los/src/main/java/org/springblade/los/enums/AmendType.java

@@ -0,0 +1,48 @@
+package org.springblade.los.enums;
+
+/**
+ * @author Rain
+ */
+
+public enum AmendType {
+
+
+	/**
+	 * 海运出口
+	 */
+	SEA("SEA", "海运出口"),
+
+	/**
+	 * 海运进口
+	 */
+	SIA("SIA", "海运进口"),
+
+	/**
+	 * 空运出口
+	 */
+	AEA("AEA", "空运出口"),
+
+	/**
+	 * 空运进口
+	 */
+	AIA("AIA", "空运进口");
+
+	public final String info;
+
+	public final String name;
+
+	AmendType(String info, String name) {
+		this.info = info;
+		this.name = name;
+	}
+
+	public static boolean isAmendType(String info){
+		for (AmendType type : AmendType.values()) {
+			if (type.info.equals(info)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+}