Browse Source

2024年1月4日17:30:52

纪新园 2 years ago
parent
commit
92c98156a1

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

@@ -28,7 +28,6 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -595,5 +594,38 @@ public class FinAccBills implements Serializable {
 	@TableField(exist = false)
 	private List<String> approvedDateList;
 
+	/**
+	 * 开票CNY
+	 */
+	@TableField(exist = false)
+	private BigDecimal uninvoicedAmount;
+
+	/**
+	 * 开票USD
+	 */
+	@TableField(exist = false)
+	private BigDecimal uninvoicedAmountUsd;
+
+	/**
+	 * 付费申请金额CNY
+	 */
+	@TableField(exist = false)
+	private BigDecimal appliedAmount;
+	/**
+	 * 付费申请金额USD
+	 */
+	@TableField(exist = false)
+	private BigDecimal appliedAmountUsd;
+	/**
+	 * 申请发票金额CNY
+	 */
+	@TableField(exist = false)
+	private BigDecimal appliedInvoiceAmount;
+	/**
+	 * 申请发票金额USD
+	 */
+	@TableField(exist = false)
+	private BigDecimal appliedInvoiceAmountUsd;
+
 
 }

+ 37 - 0
blade-service-api/blade-los-api/src/main/java/org/springblade/los/finance/stl/dto/FinStlBillsItemsReports.java

@@ -16,10 +16,13 @@
  */
 package org.springblade.los.finance.stl.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * 业务-财务对账单和结算单明细实体类
@@ -35,10 +38,18 @@ public class FinStlBillsItemsReports implements Serializable {
 	 */
 	private String billNo;
 	/**
+	 * 账单编号
+	 */
+	private String accBillNo;
+	/**
 	 * MB/L NO
 	 */
 	private String mblno;
 	/**
+	 * HB/L NO
+	 */
+	private String hblno;
+	/**
 	 * 集装箱箱型箱数英文, 1*20GP,2*40HC
 	 */
 	private String quantityCntrTypesDescr;
@@ -58,5 +69,31 @@ public class FinStlBillsItemsReports implements Serializable {
 	 */
 	private BigDecimal amountProfit;
 
+	/**
+	 * 金额
+	 */
+	private BigDecimal amountC;
+
+	/**
+	 * 金额usd
+	 */
+	private BigDecimal amountUsdC;
+	/**
+	 * etd
+	 */
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+	@DateTimeFormat(pattern = "yyyy-MM-dd")
+	private Date etd;
+
+	/**
+	 * 中文船名
+	 */
+	private String vesselCnName;
+
+	/**
+	 * 目的港
+	 */
+	private String podCnName;
+
 
 }

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

@@ -572,5 +572,34 @@ public class FinStlBills implements Serializable {
 	@ApiModelProperty(value = "单据状态")
 	private String billStatus;
 
+	/**
+	 * 联系人姓名
+	 */
+	@TableField(exist = false)
+	private String attnName;
+	/**
+	 * 联系人电话
+	 */
+	@TableField(exist = false)
+	private String attnTel;
+
+	/**
+	 * 联系人姓名
+	 */
+	@TableField(exist = false)
+	private String from;
+
+	/**
+	 * 联系人姓名
+	 */
+	@TableField(exist = false)
+	private String fromName;
+
+	/**
+	 * 联系人电话
+	 */
+	@TableField(exist = false)
+	private String fromTel;
+
 
 }

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

@@ -24,8 +24,12 @@ 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.corps.entity.BCorps;
+import org.springblade.los.basic.corps.entity.BCorpsAttn;
 import org.springblade.los.basic.corps.entity.BCorpsBank;
+import org.springblade.los.basic.corps.service.IBCorpsAttnService;
 import org.springblade.los.basic.corps.service.IBCorpsBankService;
+import org.springblade.los.basic.corps.service.IBCorpsService;
 import org.springblade.los.basic.cur.entity.BCurrency;
 import org.springblade.los.basic.cur.service.IBCurrencyService;
 import org.springblade.los.basic.reports.entity.Reports;
@@ -93,6 +97,8 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 
 	private final IPreContainersService preContainersService;
 
+	private final IBCorpsService bCorpsService;
+
 
 	@Override
 	public IPage<ReportsVO> selectReportsPage(IPage<ReportsVO> page, ReportsVO reports) {
@@ -875,6 +881,104 @@ public class ReportsServiceImpl extends ServiceImpl<ReportsMapper, Reports> impl
 			} else {
 				map.put("data", null);
 			}
+		} else if ("结算中心".equals(reportCode) && "付费结算".equals(groupCode)) {
+			FinStlBills finStlBills = finStlBillsService.getById(billId);
+			if (finStlBills != null) {
+				if (ObjectUtils.isNotNull(finStlBills.getCorpId())) {
+					BCorps bCorps = bCorpsService.getById(finStlBills.getCorpId());
+					if (bCorps != null){
+						finStlBills.setAttnName(bCorps.getAttnName());
+						finStlBills.setAttnTel(bCorps.getAttnTel());
+					}
+				}
+				finStlBills.setFrom("JMS");
+				finStlBills.setFromName("JMS");
+				finStlBills.setFromTel("0532-82668811");
+				List<FinStlBillsItemsReports> finStlBillsItemsReportsList = new ArrayList<>();
+				LambdaQueryWrapper<FinStlBillsItems> lambdaQueryWrapper = new LambdaQueryWrapper<FinStlBillsItems>()
+					.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+					.eq(FinStlBillsItems::getIsDeleted, 0)
+					.eq(FinStlBillsItems::getPid, finStlBills.getId());
+				List<FinStlBillsItems> finStlBillsItems = finStlBillsItemsService.list(lambdaQueryWrapper);
+				if (finStlBillsItems.size() > 0) {
+					for (FinStlBillsItems item : finStlBillsItems) {
+						FinStlBillsItemsReports finStlBillsItemsReports = new FinStlBillsItemsReports();
+						finStlBillsItemsReports.setMblno(item.getMblno());
+						finStlBillsItemsReports.setBillNo(item.getBillNo());
+						finStlBillsItemsReports.setAccBillNo(item.getAccBillNo());
+						finStlBillsItemsReports.setEtd(item.getEtd());
+						if ("D".equals(item.getDc())) {
+							if ("CNY".equals(item.getCurCode())) {
+								finStlBillsItemsReports.setAmount(item.getCurrentStlAmount());
+							} else {
+								finStlBillsItemsReports.setAmountUsd(item.getCurrentStlAmount());
+							}
+						} else {
+							if ("CNY".equals(item.getCurCode())) {
+								finStlBillsItemsReports.setAmountC(item.getCurrentStlAmount());
+							} else {
+								finStlBillsItemsReports.setAmountUsdC(item.getCurrentStlAmount());
+							}
+						}
+						finStlBillsItemsReportsList.add(finStlBillsItemsReports);
+					}
+				}
+				finStlBills.setFinStlBillsItemsReportsList(finStlBillsItemsReportsList);
+				map.put("data", finStlBills);
+			} else {
+				map.put("data", null);
+			}
+		}else if ("结算中心".equals(reportCode) && "收费结算".equals(groupCode)) {
+			FinStlBills finStlBills = finStlBillsService.getById(billId);
+			if (finStlBills != null) {
+				if (ObjectUtils.isNotNull(finStlBills.getCorpId())) {
+					BCorps bCorps = bCorpsService.getById(finStlBills.getCorpId());
+					if (bCorps != null){
+						finStlBills.setAttnName(bCorps.getAttnName());
+						finStlBills.setAttnTel(bCorps.getAttnTel());
+					}
+				}
+				finStlBills.setFrom("JMS");
+				finStlBills.setFromName("JMS");
+				finStlBills.setFromTel("0532-82668811");
+				List<FinStlBillsItemsReports> finStlBillsItemsReportsList = new ArrayList<>();
+				LambdaQueryWrapper<FinStlBillsItems> lambdaQueryWrapper = new LambdaQueryWrapper<FinStlBillsItems>()
+					.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
+					.eq(FinStlBillsItems::getIsDeleted, 0)
+					.eq(FinStlBillsItems::getPid, finStlBills.getId());
+				List<FinStlBillsItems> finStlBillsItems = finStlBillsItemsService.list(lambdaQueryWrapper);
+				if (finStlBillsItems.size() > 0) {
+					for (FinStlBillsItems item : finStlBillsItems) {
+						FinStlBillsItemsReports finStlBillsItemsReports = new FinStlBillsItemsReports();
+						finStlBillsItemsReports.setMblno(item.getMblno());
+						finStlBillsItemsReports.setHblno(item.getHblno());
+						finStlBillsItemsReports.setBillNo(item.getBillNo());
+						finStlBillsItemsReports.setAccBillNo(item.getAccBillNo());
+						finStlBillsItemsReports.setEtd(item.getEtd());
+						finStlBillsItemsReports.setVesselCnName(item.getVesselCnName()+"/"+item.getVoyageNo());
+						finStlBillsItemsReports.setQuantityCntrTypesDescr(item.getQuantityCntrTypesDescr());
+						finStlBillsItemsReports.setPodCnName(item.getPodCnName());
+						if ("D".equals(item.getDc())) {
+							if ("CNY".equals(item.getCurCode())) {
+								finStlBillsItemsReports.setAmount(item.getCurrentStlAmount());
+							} else {
+								finStlBillsItemsReports.setAmountUsd(item.getCurrentStlAmount());
+							}
+						} else {
+							if ("CNY".equals(item.getCurCode())) {
+								finStlBillsItemsReports.setAmountC(item.getCurrentStlAmount());
+							} else {
+								finStlBillsItemsReports.setAmountUsdC(item.getCurrentStlAmount());
+							}
+						}
+						finStlBillsItemsReportsList.add(finStlBillsItemsReports);
+					}
+				}
+				finStlBills.setFinStlBillsItemsReportsList(finStlBillsItemsReportsList);
+				map.put("data", finStlBills);
+			} else {
+				map.put("data", null);
+			}
 		}
 		return R.data(map);
 	}

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

@@ -1231,7 +1231,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			item.setInvoiceExrate(new BigDecimal("0.00"));
 			item.setInvoiceAmount(new BigDecimal("0.00"));
 			item.setInvoiceAmountLoc(new BigDecimal("0.00"));
-			item.setUninvoicedAmount(item.getAmount());
+			item.setUninvoicedAmount(new BigDecimal("0.00"));
+			item.setAppliedAmount(new BigDecimal("0.00"));
+			item.setAppliedInvoiceAmount(new BigDecimal("0.00"));
+			item.setReconciliationAmount(new BigDecimal("0.00"));
 			item.setInvoiceById(0L);
 			item.setInvoiceByName("");
 			item.setIsSignfor(0);
@@ -1308,7 +1311,10 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 			item.setInvoiceExrate(new BigDecimal("0.00"));
 			item.setInvoiceAmount(new BigDecimal("0.00"));
 			item.setInvoiceAmountLoc(new BigDecimal("0.00"));
-			item.setUninvoicedAmount(item.getAmount());
+			item.setUninvoicedAmount(new BigDecimal("0.00"));
+			item.setAppliedAmount(new BigDecimal("0.00"));
+			item.setAppliedInvoiceAmount(new BigDecimal("0.00"));
+			item.setReconciliationAmount(new BigDecimal("0.00"));
 			item.setInvoiceById(0L);
 			item.setInvoiceByName("");
 			item.setIsSignfor(0);

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

@@ -31,14 +31,19 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.los.business.sea.entity.Bills;
+import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.entity.FinAccBills;
 import org.springblade.los.finance.fee.entity.ListAccBillVO;
+import org.springblade.los.finance.fee.service.IFeeCenterService;
 import org.springblade.los.finance.fee.service.IFinAccBillsService;
 import org.springblade.los.finance.fee.vo.FinAccBillsVO;
+import org.springblade.los.finance.stl.entity.FinStlBillsItems;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 业务-财务账单 控制器
@@ -54,6 +59,8 @@ public class FinAccBillsController extends BladeController {
 
 	private final IFinAccBillsService finAccBillsService;
 
+	private final IFeeCenterService feeCenterService;
+
 	/**
 	 * 详情
 	 */
@@ -139,6 +146,49 @@ public class FinAccBillsController extends BladeController {
 		}
 		lambdaQueryWrapper.orderByDesc(FinAccBills::getCreateTime);
 		IPage<FinAccBills> pages = finAccBillsService.page(Condition.getPage(query), lambdaQueryWrapper);
+		String accBillNo = "";
+		if (pages.getRecords().size() > 0) {
+			accBillNo = pages.getRecords().stream().map(FinAccBills::getBillNo).distinct().collect(Collectors.joining(","));
+		}
+		List<FeeCenter> feeCenterList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
+			.eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
+			.eq(FeeCenter::getIsDeleted, 0)
+			.eq(FeeCenter::getAccStatus, 1)
+			.apply("find_in_set(acc_bill_no,'" + accBillNo + "')"));
+		for (FinAccBills item : pages.getRecords()) {
+			if (feeCenterList.size() > 0) {
+				BigDecimal uninvoicedAmount = new BigDecimal("0.00");
+				BigDecimal uninvoicedAmountUsd = new BigDecimal("0.00");
+				BigDecimal appliedAmount = new BigDecimal("0.00");
+				BigDecimal appliedAmountUsd = new BigDecimal("0.00");
+				BigDecimal appliedInvoiceAmount = new BigDecimal("0.00");
+				BigDecimal appliedInvoiceAmountUsd = new BigDecimal("0.00");
+				uninvoicedAmount = uninvoicedAmount.add(feeCenterList.stream()
+					.filter(e -> "CNY".equals(e.getCurCode())).map(FeeCenter::getUninvoicedAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setUninvoicedAmount(uninvoicedAmount);
+				uninvoicedAmountUsd = uninvoicedAmountUsd.add(feeCenterList.stream()
+					.filter(e -> "USD".equals(e.getCurCode())).map(FeeCenter::getUninvoicedAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setUninvoicedAmountUsd(uninvoicedAmountUsd);
+				appliedAmount = appliedAmount.add(feeCenterList.stream()
+					.filter(e -> "CNY".equals(e.getCurCode())).map(FeeCenter::getAppliedAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setAppliedAmount(appliedAmount);
+				appliedAmountUsd = appliedAmountUsd.add(feeCenterList.stream()
+					.filter(e -> "USD".equals(e.getCurCode())).map(FeeCenter::getAppliedAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setAppliedAmountUsd(appliedAmountUsd);
+				appliedInvoiceAmount = appliedInvoiceAmount.add(feeCenterList.stream()
+					.filter(e -> "CNY".equals(e.getCurCode())).map(FeeCenter::getAppliedInvoiceAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setAppliedInvoiceAmount(appliedInvoiceAmount);
+				appliedInvoiceAmountUsd = appliedInvoiceAmountUsd.add(feeCenterList.stream()
+					.filter(e -> "USD".equals(e.getCurCode())).map(FeeCenter::getAppliedInvoiceAmount)
+					.filter(ObjectUtils::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add));
+				item.setAppliedInvoiceAmountUsd(appliedInvoiceAmountUsd);
+			}
+		}
 		return R.data(pages);
 	}
 

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

@@ -220,7 +220,7 @@ public class FinInvoicesServiceImpl extends ServiceImpl<FinInvoicesMapper, FinIn
 			finInvoices.setAmountUsd(amountUsdD.subtract(amountUsdC));
 			finInvoices.setAmountTax(amountTaxD.subtract(amountTaxC).abs());
 			finInvoices.setAmountSub(amountCnyD.subtract(amountCnyC));
-			finInvoices.setAmountLoc(finInvoices.getAmountCny().add(bCurrencyService.converterCny("USD", finInvoices.getAmountSub())));
+			finInvoices.setAmountLoc(finInvoices.getAmountCny().add(bCurrencyService.converterCny("USD", finInvoices.getAmountUsd())));
 			finInvoices.setAmountSubLocNet(finInvoices.getAmountLoc());
 			finInvoices.setAmountSubUsd(amountUsdD.subtract(amountUsdC));
 		}

+ 3 - 1
blade-service/blade-stock/src/main/java/org/springblade/stock/service/impl/StockGoodsServiceImpl.java

@@ -463,7 +463,9 @@ public class StockGoodsServiceImpl extends ServiceImpl<StockGoodsMapper, StockGo
 
 	@Override
 	public R<Void> batchModifyLockingQuantity() {
-		List<StockGoods> list = baseMapper.selectList(new LambdaQueryWrapper<>());
+		List<StockGoods> list = baseMapper.selectList(new LambdaQueryWrapper<StockGoods>()
+			.eq(StockGoods::getTenantId, AuthUtil.getTenantId())
+			.eq(StockGoods::getIsDeleted, 0));
 		for (StockGoods stockGoods : list) {
 			List<OrderVO> orderVOList = orderDescClient.orderInventoryList("XS", stockGoods.getGoodsId(), stockGoods.getCorpId(), stockGoods.getStorageId());
 			if (ObjectUtils.isNull(orderVOList) || orderVOList.size() == 0) {

+ 1 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/controller/PurchaseOrderController.java

@@ -241,6 +241,7 @@ public class PurchaseOrderController extends BladeController {
 			queryWrapper.eq("create_freight", createFreight);
 		}
 		queryWrapper.orderByDesc("create_time");
+		queryWrapper.orderByDesc("src_order_no");
 		Page<Order> page = new Page<>(current, size);
 		IPage<Order> pages = orderService.page(page, queryWrapper);
 		List<Order> records = pages.getRecords();