Browse Source

2024年9月14日17:24:21

纪新园 1 year ago
parent
commit
ed5d412b04

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

@@ -466,6 +466,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		BigDecimal amountCrLoc = new BigDecimal("0.00");
 		BigDecimal amountProfitLoc = new BigDecimal("0.00");
 		List<FeeCenter> feeCenterListAll = new ArrayList<>();
+		BigDecimal exrateD = bCurrencyService.getCnyExrate("USD", "D", "1");
+		BigDecimal exrateC = bCurrencyService.getCnyExrate("USD", "C", "1");
 		//应付
 		int statusC = 0;
 		if (ObjectUtils.isNotNull(bills.getFeeCenterListC())) {
@@ -512,12 +514,11 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				} else if ("CNY".equals(item.getCurCode())) {
 					amountCr = amountCr.add(item.getAmount());
 				} else {
-					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
+					BigDecimal usd = item.getAmount().multiply(exrateC);
 					amountCrUsd = amountCrUsd.add(usd);
 				}
 				feeCenterListAll.add(item);
 			}
-//			feeCenterService.submitList(bills.getFeeCenterListC());
 		}
 		//应收
 		int statusD = 0;
@@ -565,15 +566,14 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				} else if ("CNY".equals(item.getCurCode())) {
 					amountDr = amountDr.add(item.getAmount());
 				} else {
-					BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
+					BigDecimal usd = item.getAmount().multiply(exrateD);
 					amountDrUsd = amountDrUsd.add(usd);
 				}
 				feeCenterListAll.add(item);
 			}
-//			feeCenterService.submitList(bills.getFeeCenterListD());
 		}
 		if (!feeCenterListAll.isEmpty()) {
-			feeCenterService.submitList(feeCenterListAll);
+			feeCenterService.submitListOptimization(feeCenterListAll);
 		}
 		if (0 == statusD && 0 == statusC) {
 			bills.setAccountStatus(0);
@@ -607,7 +607,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				measurement = measurement.add(details.stream().map(Bills::getMeasurement).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
 
 			}
-		} else if ("MH".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
+		}
+		else if ("MH".equals(bills.getBillType()) && ObjectUtils.isNotNull(bills.getId())) {
 			Bills details = baseMapper.selectOne(new LambdaQueryWrapper<Bills>()
 				.select(Bills::getAmountDr, Bills::getAmountCr, Bills::getAmountProfit, Bills::getAmountDrUsd, Bills::getAmountCrUsd
 					, Bills::getAmountProfitUsd, Bills::getAmountDrLoc, Bills::getAmountCrLoc, Bills::getAmountProfitLoc
@@ -639,7 +640,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						} else if ("CNY".equals(item.getCurCode())) {
 							amountCrM = amountCrM.add(item.getAmount());
 						} else {
-							BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
+							BigDecimal usd = item.getAmount().multiply(exrateC);
 							amountCrUsdM = amountCrUsdM.add(usd);
 						}
 					} else {
@@ -648,7 +649,7 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 						} else if ("CNY".equals(item.getCurCode())) {
 							amountDrM = amountDrM.add(item.getAmount());
 						} else {
-							BigDecimal usd = bCurrencyService.converter(item.getCurCode(), item.getAmount(), item.getDc(), "1");
+							BigDecimal usd = item.getAmount().multiply(exrateD);
 							amountDrUsdM = amountDrUsdM.add(usd);
 						}
 					}
@@ -680,8 +681,8 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 				//利润 = 收 - 付
 				amountProfitM = amountDrM.subtract(amountCrM);
 				amountProfitUsdM = amountDrUsdM.subtract(amountCrUsdM);
-				amountDrLocM = amountDrLocM.add(bCurrencyService.converterCny("USD", amountDrUsdM, "D", "1")).add(amountDrM);
-				amountCrLocM = amountCrLocM.add(bCurrencyService.converterCny("USD", amountCrUsdM, "C", "1")).add(amountCrM);
+				amountDrLocM = amountDrLocM.add(amountDrUsdM.multiply(exrateD)).add(amountDrM);
+				amountCrLocM = amountCrLocM.add(amountCrUsdM.multiply(exrateC)).add(amountCrM);
 				amountProfitLocM = amountDrLocM.subtract(amountCrLocM);
 				details.setAmountDr(amountDrM);
 				details.setAmountCr(amountCrM);
@@ -702,12 +703,12 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		amountProfit = amountDr.subtract(amountCr);
 		amountProfitUsd = amountDrUsd.subtract(amountCrUsd);
 		if (amountDrUsd.compareTo(new BigDecimal("0.00")) != 0) {
-			amountDrLoc = amountDrLoc.add(bCurrencyService.converterCny("USD", amountDrUsd, "D", "1")).add(amountDr);
+			amountDrLoc = amountDrLoc.add(amountDrUsd.multiply(exrateD)).add(amountDr);
 		} else {
 			amountDrLoc = amountDrLoc.add(amountDr);
 		}
 		if (amountCrUsd.compareTo(new BigDecimal("0.00")) != 0) {
-			amountCrLoc = amountCrLoc.add(bCurrencyService.converterCny("USD", amountCrUsd, "C", "1")).add(amountCr);
+			amountCrLoc = amountCrLoc.add(amountCrUsd.multiply(exrateC)).add(amountCr);
 		} else {
 			amountCrLoc = amountCrLoc.add(amountCr);
 		}
@@ -725,7 +726,6 @@ public class BillsServiceImpl extends ServiceImpl<BillsMapper, Bills> implements
 		bills.setGrossWeight(grossWeight);
 		bills.setMeasurement(measurement);
 
-
 		LocalDateTime now = LocalDateTime.now();
 		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 		String formatted = now.format(formatter);

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

@@ -3247,7 +3247,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 					if (detail == null) {
 						throw new SecurityException("审批通过失败");
 					}
-					if ("FFSQ-SK".equals(auditProecess.getPaidApplication())) {
+					if ("FFSQ-SK".equals(auditProecess.getCheckType())) {
 						detail.setFirstStatus("审核中");
 					} else {
 						detail.setBusinessStatus("审核中");
@@ -3368,7 +3368,7 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, L
 				if (detail == null) {
 					throw new SecurityException("审批通过失败");
 				}
-				if ("FFSQ-SK".equals(auditProecess.getPaidApplication())) {
+				if ("FFSQ-SK".equals(auditProecess.getCheckType())) {
 					detail.setFirstStatus("审核通过");
 				} else {
 					detail.setBusinessStatus("审核通过");

+ 3 - 0
blade-service/blade-los/src/main/java/org/springblade/los/finance/fee/service/IFeeCenterService.java

@@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.core.tool.api.R;
 import org.springblade.los.basic.corps.entity.BCorps;
 import org.springblade.los.basic.fees.entity.LosBFeesTemplate;
+import org.springblade.los.business.sea.entity.Bills;
 import org.springblade.los.finance.fee.entity.FeeCenter;
 import org.springblade.los.finance.fee.vo.FeeCenterVO;
 
@@ -72,6 +73,8 @@ public interface IFeeCenterService extends IService<FeeCenter> {
 	 */
 	R submitList(List<FeeCenter> feeCenter);
 
+	R submitListOptimization(List<FeeCenter> feeCenter);
+
 	/**
 	 * 获取费用中心单据客户列表
 	 * @param billId

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

@@ -874,6 +874,99 @@ public class FeeCenterServiceImpl extends ServiceImpl<FeeCenterMapper, FeeCenter
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public R submitListOptimization(List<FeeCenter> list) {
+		String deptId = "";
+		String deptName = "";
+		String branchId = deptUtils.getDeptPid() + "";
+		//获取部门ids对应中文名
+		if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+			deptId = AuthUtil.getDeptId();
+			R<List<String>> res = sysClient.getDeptNames(AuthUtil.getDeptId());
+			if (res.isSuccess() && ObjectUtils.isNotNull(res.getData())) {
+				deptName = String.join(",", res.getData());
+			}
+		}
+		BigDecimal exrateD = bCurrencyService.getCnyExrate("USD", "D", "1");
+		BigDecimal exrateC = bCurrencyService.getCnyExrate("USD", "C", "1");
+		List<FeeCenter> feeCenterList = new ArrayList<>();
+		if (ObjectUtils.isNotNull(list) && !list.isEmpty()) {
+			for (FeeCenter feeCenter : list) {
+				if (feeCenter.getId() == null) {
+					feeCenter.setCreateTime(new Date());
+					feeCenter.setCreateUser(AuthUtil.getUserId());
+					feeCenter.setCreateUserName(AuthUtil.getUserName());
+					if (ObjectUtils.isNotNull(AuthUtil.getDeptId())) {
+						feeCenter.setCreateDept(deptId);
+						feeCenter.setBranchId(branchId);
+						feeCenter.setCreateDeptName(deptName);
+					}
+				} else {
+					feeCenter.setUpdateUser(AuthUtil.getUserId());
+					feeCenter.setUpdateTime(new Date());
+					feeCenter.setUpdateUserName(AuthUtil.getUserName());
+				}
+
+				/** --------------------金额计算-------------------------**/
+				// 去税金额 = 数量quantity * 单价price
+				BigDecimal amountNet = new BigDecimal("0.00");
+				// 税额 = 去税金额amountNet * 税率taxRateSum
+				BigDecimal amountTax = new BigDecimal("0.00");
+				// 金额,amountTax + 去税金额amountNet - 折扣金额amountDiscount
+				BigDecimal amount = new BigDecimal("0.00");
+				//总税率  = 税率taxRate + 附加税率surchargeRate
+				BigDecimal taxRate = new BigDecimal("0.00");
+				// 税率 = 总税率/100
+				BigDecimal taxRateSum = new BigDecimal("0.00");
+
+				//计算字段null值处理
+				feeCenter.setQuantity(ObjectUtils.isNotNull(feeCenter.getQuantity()) ? feeCenter.getQuantity() : new BigDecimal("0.00"));
+				feeCenter.setPrice(ObjectUtils.isNotNull(feeCenter.getPrice()) ? feeCenter.getPrice() : new BigDecimal("0.00"));
+				feeCenter.setSurchargeRate(ObjectUtils.isNotNull(feeCenter.getSurchargeRate()) ? feeCenter.getSurchargeRate() : new BigDecimal("0.00"));
+				feeCenter.setTaxRate(ObjectUtils.isNotNull(feeCenter.getTaxRate()) ? feeCenter.getTaxRate() : new BigDecimal("0.00"));
+				feeCenter.setAmountDiscount(ObjectUtils.isNotNull(feeCenter.getAmountDiscount()) ? feeCenter.getAmountDiscount() : new BigDecimal("0.00"));
+				feeCenter.setStlTtlAmount(ObjectUtils.isNotNull(feeCenter.getStlTtlAmount()) ? feeCenter.getStlTtlAmount() : new BigDecimal("0.00"));
+
+				amountNet = amountNet.add(feeCenter.getQuantity().multiply(feeCenter.getPrice()))
+					.setScale(2, RoundingMode.HALF_UP);
+				taxRate = taxRate.add(feeCenter.getTaxRate()).add(feeCenter.getSurchargeRate());
+				taxRateSum = taxRateSum.add(taxRate.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP));
+				amountTax = amountTax.add(amountNet.multiply(taxRateSum)).setScale(2, RoundingMode.HALF_UP);
+				amount = amount.add(amountNet.add(amountTax).subtract(feeCenter.getAmountDiscount()));
+
+				//判断是否是本位币
+				if ("CNY".equals(feeCenter.getCurCode())) {
+					feeCenter.setAmountNetLoc(amountNet);
+					feeCenter.setAmountTaxLoc(amountTax);
+					feeCenter.setAmountLoc(amount);
+					feeCenter.setAmountDiscountLoc(amount);
+				} else {
+					if ("D".equals(feeCenter.getDc())) {
+						feeCenter.setAmountNetLoc(amountNet.multiply(exrateD));
+						feeCenter.setAmountTaxLoc(amountTax.multiply(exrateD));
+						feeCenter.setAmountLoc(amount.multiply(exrateD));
+						feeCenter.setAmountDiscountLoc(amount.multiply(exrateD));
+					} else {
+						feeCenter.setAmountNetLoc(amountNet.multiply(exrateC));
+						feeCenter.setAmountTaxLoc(amountTax.multiply(exrateC));
+						feeCenter.setAmountLoc(amount.multiply(exrateC));
+						feeCenter.setAmountDiscountLoc(amount.multiply(exrateC));
+					}
+				}
+				feeCenter.setAmountNet(amountNet);
+				feeCenter.setAmountTax(amountTax);
+				feeCenter.setAmount(amount);
+				feeCenter.setUnsettledAmount(feeCenter.getAmount().subtract(feeCenter.getStlTtlAmount()));
+				feeCenterList.add(feeCenter);
+			}
+			this.saveOrUpdateBatch(feeCenterList);
+		} else {
+			R.fail("请选择明细");
+		}
+		return R.data(list);
+	}
+
+	@Override
 	public List<BCorps> getFeeCenterCorpIds(Long billId, String dc, String type) {
 		List<Long> corpIds = new ArrayList<>();
 		if ("HYCK".equals(type) || "HYJK".equals(type)) {

+ 4 - 1
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -192,6 +192,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
 						.eq(Agent::getTenantId, AuthUtil.getTenantId())
 						.eq(Agent::getIsDeleted, 0)
+						.eq(Agent::getOrderStatus, "已确认")
 						.in(Agent::getId, ids));
 					if (!agentList.isEmpty()) {
 						for (Agent item : agentList) {
@@ -1027,6 +1028,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			item.setWhetherClearance(null);
 			item.setWhetherDispatchCar(null);
 			item.setWhetherComplete(null);
+			item.setClearanceSpeedOfProgress(null);
+			item.setPaymentRecord(null);
 		}
 		agentNew.setAgentItemsList(!agentItemsList.isEmpty() ? agentItemsList : new ArrayList<>());
 		agentNew.setFilesCenterList(new ArrayList<>());
@@ -1667,7 +1670,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		String checkType = "FFSQ-SK";
 		String fidStatus = "first_status";
 		declare.setApplyForPayment("1");
-		declare.setOrderStatus("已申请首付款");
+//		declare.setOrderStatus("已申请首付款");
 		//获取审批级次
 		List<LosAuditPathsLevels> auditPathsLevels;
 		// 判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过