Browse Source

贸易代理 2024年8月5日13:49:46

纪新园 1 year ago
parent
commit
5d952799f8

+ 3 - 3
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/Agent.java

@@ -281,10 +281,10 @@ public class Agent implements Serializable {
 	@ApiModelProperty(value = "货值结算")
 	private BigDecimal goodsValueStl;
 	/**
-	 * 预付比例
+	 * 付款方式
 	 */
-	@ApiModelProperty(value = "预付比例")
-	private BigDecimal advanceRatio;
+	@ApiModelProperty(value = "付款方式")
+	private String advanceRatio;
 	/**
 	 * 预付金额
 	 */

+ 3 - 3
blade-service-api/blade-los-api/src/main/java/org/springblade/los/trade/entity/AgentView.java

@@ -99,10 +99,10 @@ public class AgentView implements Serializable {
 	@ApiModelProperty(value = "货值")
 	private BigDecimal goodsValue;
 	/**
-	 * 预付比例
+	 * 付款方式
 	 */
-	@ApiModelProperty(value = "预付比例")
-	private BigDecimal advanceRatio;
+	@ApiModelProperty(value = "付款方式")
+	private String advanceRatio;
 	/**
 	 * 预付金额
 	 */

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

@@ -24,6 +24,7 @@ import org.springblade.system.entity.Dept;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 贸易代理表实体类
@@ -120,5 +121,10 @@ public class AgentSKReport implements Serializable {
 
 	private String paymentMethod;
 
+	/**
+	 * 收款记录
+	 */
+	private List<Map<String,Object>> mapList;
+
 
 }

+ 104 - 42
blade-service/blade-los/src/main/java/org/springblade/los/trade/service/impl/AgentServiceImpl.java

@@ -224,7 +224,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			List<FinStlBillsItems> finStlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
 				.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
 				.eq(FinStlBillsItems::getIsDeleted, 0)
-				.apply("find_in_set(" + detail.getContractNo() + ",bill_no)"));
+				.apply("find_in_set('" + detail.getContractNo() + "',bill_no)"));
 			if (!finStlBillsItemsList.isEmpty()) {
 				List<Long> ids = finStlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
 				List<FinStlBills> finStlBillsList = finStlBillsService.list(new LambdaQueryWrapper<FinStlBills>()
@@ -480,7 +480,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 		if ("MYDL-STL".equals(agent.getBusinessType())) {
 			if (ObjectUtils.isNotNull(serviceCharge)) {
 				BigDecimal serviceChargeAmount = new BigDecimal("1").divide(new BigDecimal(serviceCharge), serviceCharge.length(), RoundingMode.HALF_UP);
-				BigDecimal amount = serviceChargeAmount.multiply(agent.getActualAmount());
+				BigDecimal amount = serviceChargeAmount.multiply(agent.getActualAmount()).setScale(2, RoundingMode.HALF_UP);
 				if (amount.compareTo(new BigDecimal("1000")) > 0) {
 					agent.setServiceCharge(new BigDecimal("1000"));
 				} else {
@@ -1241,12 +1241,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(AdvanceCharge::getIsDeleted, 0)
 				.eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
 			if (advanceCharge != null) {
-				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().add(advanceChargeAmount));
-				if (new BigDecimal("0").compareTo(advanceChargeAmount) < 0) {
-					advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().add(advanceChargeAmount.abs()));
-				} else {
-					advanceCharge.setInOverpayment(advanceCharge.getOutOverpaymen().add(advanceChargeAmount.abs()));
-				}
+				advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(advanceChargeAmount));
+				advanceCharge.setOutOverpaymen(advanceCharge.getOutOverpaymen().subtract(advanceChargeAmount));
 				advanceChargeService.updateById(advanceCharge);
 			}
 		}
@@ -3096,27 +3092,27 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 	@Override
 	public R getReportDataTrade(String billId, String reportCode, String groupCode, String itemIds, String type) {
 		Map<String, Object> map = new HashMap<>();
-		R<Dept> res = sysClient.getDept(deptUtils.getDeptPid());
-		Dept dept;
-		if (res.isSuccess() && res.getData() != null) {
-			dept = res.getData();
-			String status = sysClient.getParamServiceNew("is.update.default");
-			if ("1".equals(status)) {
-				R<User> resUser = userClient.userInfoById(AuthUtil.getUserId());
-				if (resUser.isSuccess() && resUser.getData() != null) {
-					dept.setEmail(resUser.getData().getEmail());
-					dept.setTel(resUser.getData().getPhone());
-					dept.setContacts(resUser.getData().getRealName());
-				}
-			}
-		} else {
-			throw new RuntimeException("获取报表表头数据失败");
-		}
 		if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.ORDER_ALLOCATION.equals(groupCode) && MagicValues.MYDL.equals(type)) {
 			Agent agent = baseMapper.selectById(billId);
 			DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
 			AgentReport agentReport = new AgentReport();
 			if (agent != null) {
+				R<Dept> res = sysClient.getDept(agent.getAffiliatedCompanyId());
+				Dept dept;
+				if (res.isSuccess() && res.getData() != null) {
+					dept = res.getData();
+					String status = sysClient.getParamServiceNew("is.update.default");
+					if ("1".equals(status)) {
+						R<User> resUser = userClient.userInfoById(AuthUtil.getUserId());
+						if (resUser.isSuccess() && resUser.getData() != null) {
+							dept.setEmail(resUser.getData().getEmail());
+							dept.setTel(resUser.getData().getPhone());
+							dept.setContacts(resUser.getData().getRealName());
+						}
+					}
+				} else {
+					throw new RuntimeException("获取报表表头数据失败");
+				}
 				agentReport.setContractNo(agent.getContractNo());
 				// todo 发票
 				List<AgentFpReport> agentFpReportList = new ArrayList<>();
@@ -3223,8 +3219,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				AgentZzsReport agentZzsReport = new AgentZzsReport();
 				agentZzsReportList.add(agentZzsReport);
 				agentReport.setAgentZzsReportList(agentZzsReportList);
+				agentReport.setDept(dept);
 			}
-			agentReport.setDept(dept);
 			agentReport.setAgentDReportList(ObjectUtils.isNull(agentReport.getAgentDReportList()) ? new ArrayList<>() : agentReport.getAgentDReportList());
 			agentReport.setAgentCReportList(ObjectUtils.isNull(agentReport.getAgentCReportList()) ? new ArrayList<>() : agentReport.getAgentCReportList());
 			agentReport.setAgentFpReportList(ObjectUtils.isNull(agentReport.getAgentFpReportList()) ? new ArrayList<>() : agentReport.getAgentFpReportList());
@@ -3238,8 +3234,24 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			map.put(MagicValues.DATA, agentReport);
 		} else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.THE_FIRST_ONE.equals(groupCode) && MagicValues.MYDL.equals(type)) {
 			Agent agent = baseMapper.selectById(billId);
-			DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
 			if (agent != null) {
+				R<Dept> res = sysClient.getDept(agent.getAffiliatedCompanyId());
+				Dept dept;
+				if (res.isSuccess() && res.getData() != null) {
+					dept = res.getData();
+					String status = sysClient.getParamServiceNew("is.update.default");
+					if ("1".equals(status)) {
+						R<User> resUser = userClient.userInfoById(AuthUtil.getUserId());
+						if (resUser.isSuccess() && resUser.getData() != null) {
+							dept.setEmail(resUser.getData().getEmail());
+							dept.setTel(resUser.getData().getPhone());
+							dept.setContacts(resUser.getData().getRealName());
+						}
+					}
+				} else {
+					throw new RuntimeException("获取报表表头数据失败");
+				}
 				List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
 					.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
 					.eq(AgentItems::getIsDeleted, 0)
@@ -3261,6 +3273,23 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					}
 				}
 				AgentSKReport agentSKReport = new AgentSKReport();
+				List<Map<String, Object>> mapList = new ArrayList<>();
+				List<Long> stlPids = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())
+					&& "D".equals(e.getDc())).map(FeeCenter::getStlPid)
+					.filter(Objects::nonNull).distinct().collect(Collectors.toList());
+				List<Agent> agentList1 = agentList.stream().filter(e-> stlPids.contains(e.getId())).collect(Collectors.toList());
+				for (Agent item : agentList1) {
+					Map<String, Object> map1 = new HashMap<>();
+					map1.put("time", dateFormat.format(item.getBusinessDate()));
+					BigDecimal remainingAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())
+							&& "D".equals(e.getDc()) && "1".equals(e.getFeeType()) && item.getId().equals(e.getStlPid()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					map1.put("amount", item.getActualAmount().add(item.getPostElectricFee())
+						.add(item.getServiceCharge()).subtract(remainingAmount));
+					mapList.add(map1);
+				}
+				agentSKReport.setMapList(mapList.isEmpty() ? new ArrayList<>() : mapList);
+				agentSKReport.setPaymentMethod(agent.getAdvanceRatio());
 				agentSKReport.setContractNo(agent.getContractNo());
 				agentSKReport.setPrepaidTime(dateFormat.format(agent.getBusinessDate()));
 				agentSKReport.setSkAmountUsd(agent.getPrepaidAmount());
@@ -3285,7 +3314,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						.findFirst().ifPresent(feeCentersYFK ->
 							agentSKReport.setRemainingAmount(ObjectUtils.isNotNull(feeCentersYFK.getAmount()) ? feeCentersYFK.getAmount()
 								: new BigDecimal("0.00")));
-				}else{
+				} else {
 					agentSKReport.setAmount(new BigDecimal("0.00"));
 					agentSKReport.setPostElectricFee(new BigDecimal("0.00"));
 					agentSKReport.setServiceCharge(new BigDecimal("0.00"));
@@ -3293,7 +3322,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				}
 				agentSKReport.setSumAmount(agentSKReport.getAmount().add(agentSKReport.getPostElectricFee()
 					.add(agentSKReport.getServiceCharge()).subtract(ObjectUtils.isNotNull(agentSKReport.getRemainingAmount())
-					?agentSKReport.getRemainingAmount():new BigDecimal("0.00"))));
+						? agentSKReport.getRemainingAmount() : new BigDecimal("0.00"))));
 				FeeCenter feeCentersC = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())
 					&& "C".equals(e.getDc()) && "1".equals(e.getFeeType())).findFirst().orElse(null);
 				if (feeCentersC != null) {
@@ -3313,7 +3342,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 						agentList.stream().filter(e -> e.getId().equals(feeCentersC.getStlPid())).findFirst()
 							.ifPresent(detail -> agentSKReport.setRealityTime(dateFormat.format(detail.getBusinessDate())));
 					}
-				}else{
+				} else {
 					agentSKReport.setRealityAmount(new BigDecimal("0.00"));
 					agentSKReport.setRealityPostElectricFee(new BigDecimal("0.00"));
 					agentSKReport.setRealityServiceCharge(new BigDecimal("0.00"));
@@ -3322,7 +3351,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					.add(agentSKReport.getRealityServiceCharge())));
 				agentSKReport.setRepairAmount(agentSKReport.getRealitySumAmount().subtract(agentSKReport.getSumAmount())
 					.subtract(ObjectUtils.isNotNull(agentSKReport.getRemainingAmount())
-						?agentSKReport.getRemainingAmount():new BigDecimal("0.00")));
+						? agentSKReport.getRemainingAmount() : new BigDecimal("0.00")));
 				agentSKReport.setAgentItems(agentItemsList);
 				agentSKReport.setDept(dept);
 				map.put(MagicValues.DATA, agentSKReport);
@@ -3331,8 +3360,24 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 			}
 		} else if (MagicValues.BUSINESS.equals(reportCode) && MagicValues.BALANCE_PAYMENT.equals(groupCode) && MagicValues.MYDL.equals(type)) {
 			Agent agent = baseMapper.selectById(billId);
-			DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+			DateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd");
 			if (agent != null) {
+				R<Dept> res = sysClient.getDept(agent.getAffiliatedCompanyId());
+				Dept dept;
+				if (res.isSuccess() && res.getData() != null) {
+					dept = res.getData();
+					String status = sysClient.getParamServiceNew("is.update.default");
+					if ("1".equals(status)) {
+						R<User> resUser = userClient.userInfoById(AuthUtil.getUserId());
+						if (resUser.isSuccess() && resUser.getData() != null) {
+							dept.setEmail(resUser.getData().getEmail());
+							dept.setTel(resUser.getData().getPhone());
+							dept.setContacts(resUser.getData().getRealName());
+						}
+					}
+				} else {
+					throw new RuntimeException("获取报表表头数据失败");
+				}
 				List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
 					.eq(AgentItems::getTenantId, AuthUtil.getTenantId())
 					.eq(AgentItems::getIsDeleted, 0)
@@ -3354,6 +3399,23 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					}
 				}
 				AgentSKReport agentSKReport = new AgentSKReport();
+				List<Map<String, Object>> mapList = new ArrayList<>();
+				List<Long> stlPids = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())
+						&& "D".equals(e.getDc())).map(FeeCenter::getStlPid)
+					.filter(Objects::nonNull).distinct().collect(Collectors.toList());
+				List<Agent> agentList1 = agentList.stream().filter(e-> stlPids.contains(e.getId())).collect(Collectors.toList());
+				for (Agent item : agentList1) {
+					Map<String, Object> map1 = new HashMap<>();
+					map1.put("time", dateFormat.format(item.getBusinessDate()));
+					BigDecimal remainingAmount = feeCenterList.stream().filter(e -> "YFK".equals(e.getFeeCode())
+							&& "D".equals(e.getDc()) && "2".equals(e.getFeeType()) && item.getId().equals(e.getStlPid()))
+						.map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+					map1.put("amount", item.getActualAmount().add(item.getPostElectricFee())
+						.add(item.getServiceCharge()).subtract(remainingAmount));
+					mapList.add(map1);
+				}
+				agentSKReport.setMapList(mapList.isEmpty() ? new ArrayList<>() : mapList);
+				agentSKReport.setPaymentMethod(agent.getAdvanceRatio());
 				agentSKReport.setContractNo(agent.getContractNo());
 				agentSKReport.setPrepaidTime(dateFormat.format(agent.getBusinessDate()));
 				agentSKReport.setSkAmountUsd(agent.getPrepaidAmount());
@@ -3361,8 +3423,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					&& "D".equals(e.getDc()) && "2".equals(e.getFeeType())).collect(Collectors.toList());
 				if (!feeCenters.isEmpty()) {
 					agentSKReport.setExchangeRate(feeCenters.get(0).getExrate());
-					agentSKReport.setAmount(feeCenters.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
-					agentSKReport.setAmountUsd(feeCenters.stream().map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO,BigDecimal::add));
+					agentSKReport.setAmount(feeCenters.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+					agentSKReport.setAmountUsd(feeCenters.stream().map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add));
 					List<Long> feeIds = feeCenters.stream().map(FeeCenter::getId).collect(Collectors.toList());
 					feeCenterList.stream().filter(e -> "YDF".equals(e.getFeeCode())
 							&& "D".equals(e.getDc()) && "2".equals(e.getFeeType()) && feeIds.contains(e.getSrcItemId()))
@@ -3392,7 +3454,7 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 					&& "C".equals(e.getDc()) && "2".equals(e.getFeeType())).collect(Collectors.toList());
 				if (!feeCentersC.isEmpty()) {
 					agentSKReport.setRealityExchangeRate(feeCentersC.get(0).getStlExrate());
-					agentSKReport.setRealityAmount(feeCentersC.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO,BigDecimal::add));
+					agentSKReport.setRealityAmount(feeCentersC.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
 					List<Long> feeIds = feeCentersC.stream().map(FeeCenter::getId).collect(Collectors.toList());
 					feeCenterList.stream().filter(e -> "YDF".equals(e.getFeeCode())
 							&& "C".equals(e.getDc()) && "2".equals(e.getFeeType()) && feeIds.contains(e.getSrcItemId()))
@@ -3515,8 +3577,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(AdvanceCharge::getIsDeleted, 0)
 				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
 			if (advanceCharge != null) {
-				feeCenter.setPrice(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
-				feeCenter.setAmount(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
+				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
+				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;
 			} else {
 				return null;
@@ -3618,8 +3680,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(AdvanceCharge::getIsDeleted, 0)
 				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
 			if (advanceCharge != null) {
-				feeCenter.setPrice(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
-				feeCenter.setAmount(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
+				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
+				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;
 			} else {
 				return null;
@@ -3716,8 +3778,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(AdvanceCharge::getIsDeleted, 0)
 				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
 			if (advanceCharge != null) {
-				feeCenter.setPrice(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
-				feeCenter.setAmount(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
+				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
+				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;
 			} else {
 				return null;
@@ -3819,8 +3881,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
 				.eq(AdvanceCharge::getIsDeleted, 0)
 				.eq(AdvanceCharge::getCorpId, detail.getDomesticConsigneeId()));
 			if (advanceCharge != null) {
-				feeCenter.setPrice(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
-				feeCenter.setAmount(new BigDecimal("0").subtract(advanceCharge.getAdvancePaymentBalance()));
+				feeCenter.setPrice(advanceCharge.getAdvancePaymentBalance());
+				feeCenter.setAmount(advanceCharge.getAdvancePaymentBalance());
 				return feeCenter;
 			} else {
 				return null;