|
|
@@ -503,8 +503,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setBusinessType(agent.getBusinessType());
|
|
|
item.setBillNo(agent.getContractNo());
|
|
|
item.setBillDate(agent.getBusinessDate());
|
|
|
- item.setCorpId(agent.getAbroadConsignorId());
|
|
|
- item.setCorpCnName(agent.getAbroadConsignorCname());
|
|
|
+// item.setCorpId(agent.getAbroadConsignorId());
|
|
|
+// item.setCorpCnName(agent.getAbroadConsignorCname());
|
|
|
item.setBillCorpId(agent.getCorpId());
|
|
|
item.setBillCorpCnName(agent.getCorpName());
|
|
|
item.setPolId(agent.getPolId());
|
|
|
@@ -603,8 +603,8 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
item.setBusinessType(agent.getBusinessType());
|
|
|
item.setBillNo(agent.getContractNo());
|
|
|
item.setBillDate(agent.getBusinessDate());
|
|
|
- item.setCorpId(agent.getDomesticConsigneeId());
|
|
|
- item.setCorpCnName(agent.getDomesticConsigneeCname());
|
|
|
+ /*item.setCorpId(agent.getDomesticConsigneeId());
|
|
|
+ item.setCorpCnName(agent.getDomesticConsigneeCname());*/
|
|
|
item.setBillCorpId(agent.getCorpId());
|
|
|
item.setBillCorpCnName(agent.getCorpName());
|
|
|
item.setPolId(agent.getPolId());
|
|
|
@@ -1248,13 +1248,13 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
String formattedDate = sdf.format(now);
|
|
|
for (AgentItems items : agentItemsList) {
|
|
|
if (ObjectUtils.isNull(items.getPaymentRecord())) {
|
|
|
- items.setPaymentRecord("应收首付款/应收尾款/应付首付款/应付尾款");
|
|
|
+ items.setPaymentRecord("【应收首付款】,【应收尾款】,【应付首付款】,【应付尾款】");
|
|
|
}
|
|
|
if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
- String msg = "应收首付款/已收款/时间:" + formattedDate;
|
|
|
+ String msg = "应收首付款:已收款-时间:" + formattedDate;
|
|
|
items.setPaymentRecord(items.getPaymentRecord().replaceAll("应收首付款", msg));
|
|
|
} else if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
- String msg = "应收尾款/已收款/时间:" + formattedDate;
|
|
|
+ String msg = "应收尾款:已收款-时间:" + formattedDate;
|
|
|
items.setPaymentRecord(items.getPaymentRecord().replaceAll("应收尾款", msg));
|
|
|
}
|
|
|
}
|
|
|
@@ -1866,13 +1866,13 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
String formattedDate = sdf.format(now);
|
|
|
for (AgentItems items : agentItemsList) {
|
|
|
if (ObjectUtils.isNull(items.getPaymentRecord())) {
|
|
|
- items.setPaymentRecord("应收首付款/应收尾款/应付首付款/应付尾款");
|
|
|
+ items.setPaymentRecord("【应收首付款】,【应收尾款】,【应付首付款】,【应付尾款】");
|
|
|
}
|
|
|
if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
- String msg = "应付首付款/已付款/时间:" + formattedDate;
|
|
|
+ String msg = "应付首付款:已付款-时间:" + formattedDate;
|
|
|
items.setPaymentRecord(items.getPaymentRecord().replaceAll("应付首付款", msg));
|
|
|
} else if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
- String msg = "应付尾款/已付款/时间:" + formattedDate;
|
|
|
+ String msg = "应付尾款:已付款-时间:" + formattedDate;
|
|
|
items.setPaymentRecord(items.getPaymentRecord().replaceAll("应付尾款", msg));
|
|
|
}
|
|
|
}
|
|
|
@@ -3767,16 +3767,23 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
.in(AgentItems::getPid, agentIdList));
|
|
|
if (!agentItemsList.isEmpty()) {
|
|
|
for (AgentItems items : agentItemsList) {
|
|
|
- if (ObjectUtils.isNull(items.getPaymentRecord())) {
|
|
|
- items.setPaymentRecord("应收首付款/应收尾款/应付首付款/应付尾款");
|
|
|
+ if (ObjectUtils.isNotNull(items.getPaymentRecord())) {
|
|
|
+ String[] arr = items.getPaymentRecord().split(",");
|
|
|
+ String[] newArr = new String[arr.length];
|
|
|
+ for (int i = 0; i <= arr.length; i++) {
|
|
|
+ if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
+ if (arr[i].contains("应收首付款")) {
|
|
|
+ arr[i] = "【应收首付款】";
|
|
|
+ }
|
|
|
+ } else if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
+ if (arr[i].contains("应收尾款")) {
|
|
|
+ arr[i] = "【应收尾款】";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newArr[i] = arr[i];
|
|
|
+ }
|
|
|
+ items.setPaymentRecord(String.join(",", newArr));
|
|
|
}
|
|
|
- /*if (new BigDecimal("0").compareTo(firstPaidInPayment) != 0) {
|
|
|
- String msg = "应收首付款/已收款/时间:" + formattedDate;
|
|
|
- items.setPaymentRecord(items.getPaymentRecord().replaceAll("应收首付款", msg));
|
|
|
- } else if (new BigDecimal("0").compareTo(finalPaymentReceived) != 0) {
|
|
|
- String msg = "应收尾款/已收款/时间:" + formattedDate;
|
|
|
- items.setPaymentRecord(items.getPaymentRecord().replaceAll("应收尾款", msg));
|
|
|
- }*/
|
|
|
}
|
|
|
agentItemsService.updateBatchById(agentItemsList);
|
|
|
}
|
|
|
@@ -3822,12 +3829,12 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
}
|
|
|
feeCenterService.updateBatchById(feeCenters);
|
|
|
List<Long> accBillId = feeCenterList.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
|
|
|
- if (!accBillId.isEmpty()){
|
|
|
+ if (!accBillId.isEmpty()) {
|
|
|
List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
|
|
|
.eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
|
|
|
.eq(FinStlBillsItems::getIsDeleted, 0)
|
|
|
.in(FinStlBillsItems::getAccBillId, accBillId));
|
|
|
- if (!stlBillsItemsList.isEmpty()){
|
|
|
+ if (!stlBillsItemsList.isEmpty()) {
|
|
|
List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
|
|
|
finStlBillsService.removeByIds(stlPid);
|
|
|
finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
|
|
|
@@ -3839,6 +3846,207 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
return agent;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @GlobalTransactional(rollbackFor = Exception.class, timeoutMills = 12000000)
|
|
|
+ public Agent revokeConfirmThePayment(Agent agent) {
|
|
|
+ if (agent.getId() == null) {
|
|
|
+ throw new RuntimeException("缺少必要参数");
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCentersList = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getStlPid, agent.getId())
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0));
|
|
|
+ if (feeCentersList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未找到费用明细");
|
|
|
+ }
|
|
|
+ List<Long> pids = feeCentersList.stream().map(FeeCenter::getPid).distinct().collect(Collectors.toList());
|
|
|
+ List<FeeCenter> feeCentersWK = feeCentersList.stream().filter(e -> "WK".equals(e.getFeeCode())).collect(Collectors.toList());
|
|
|
+ List<FeeCenter> feeCentersSK = feeCentersList.stream().filter(e -> "SFK".equals(e.getFeeCode())).collect(Collectors.toList());
|
|
|
+ String type = "";
|
|
|
+ if (!feeCentersWK.isEmpty()) {
|
|
|
+ type = "WK";
|
|
|
+ }
|
|
|
+ if (!feeCentersSK.isEmpty()) {
|
|
|
+ type = "SFK";
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters = feeCenterService.list(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .in(FeeCenter::getPid, pids)
|
|
|
+ .apply("find_in_set(fee_code,'SXF,YDF,YFK," + type + "')")
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0));
|
|
|
+ List<FeeCenter> feeCenterListD = feeCenters.stream().filter(e -> "D".equals(e.getDc())).collect(Collectors.toList());
|
|
|
+ if (feeCenterListD.isEmpty()) {
|
|
|
+ throw new RuntimeException("未找到应收费用明细");
|
|
|
+ }
|
|
|
+ String billNo = feeCenters.stream().map(FeeCenter::getBillNo).filter(Objects::nonNull).distinct().collect(Collectors.joining(","));
|
|
|
+ List<Agent> agentList = baseMapper.selectList(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(Agent::getIsDeleted, 0)
|
|
|
+ .eq(Agent::getBusinessType, "MYDL")
|
|
|
+ .apply("find_in_set(contract_no,'" + billNo + "')"));
|
|
|
+ if (agentList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未查到贸易代理单据信息");
|
|
|
+ }
|
|
|
+ List<Long> agentIdList = agentList.stream().map(Agent::getId).distinct().collect(Collectors.toList());
|
|
|
+ BigDecimal amountD = feeCenterListD.stream().map(FeeCenter::getStlTtlAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal amount = feeCenterListD.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ List<FeeCenter> feeCenterList = feeCenters.stream().filter(e -> "C".equals(e.getDc()) && 0 == e.getStlStatus()).collect(Collectors.toList());
|
|
|
+ if (feeCenterList.isEmpty()) {
|
|
|
+ throw new RuntimeException("未找到应付费用明细");
|
|
|
+ }
|
|
|
+ BigDecimal amountC = feeCenterList.stream().map(FeeCenter::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(amountD) != 0 && amount.compareTo(amountD) == 0) {
|
|
|
+ BigDecimal amountSub = amountC.subtract(amountD);
|
|
|
+ if (amountSub.compareTo(new BigDecimal("0")) > 0) {
|
|
|
+ AdvanceCharge advanceCharge = advanceChargeService.getOne(new LambdaQueryWrapper<AdvanceCharge>()
|
|
|
+ .eq(AdvanceCharge::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AdvanceCharge::getIsDeleted, 0)
|
|
|
+ .eq(AdvanceCharge::getCorpId, agentList.get(0).getDomesticConsigneeId()));
|
|
|
+ if (advanceCharge != null) {
|
|
|
+ advanceCharge.setAdvancePaymentBalance(advanceCharge.getAdvancePaymentBalance().subtract(amountSub));
|
|
|
+ advanceCharge.setInOverpayment(advanceCharge.getInOverpayment().subtract(amountSub));
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("未找到国内收货人:" + agentList.get(0).getDomesticConsigneeCname() + "预付款信息");
|
|
|
+ }
|
|
|
+ advanceChargeService.saveOrUpdate(advanceCharge);
|
|
|
+ AdvanceChargeItem advanceChargeItem = new AdvanceChargeItem();
|
|
|
+ advanceChargeItem.setCreateUser(AuthUtil.getUserId());
|
|
|
+ advanceChargeItem.setCreateUserName(AuthUtil.getUserName());
|
|
|
+ advanceChargeItem.setCreateTime(new Date());
|
|
|
+ advanceChargeItem.setPid(advanceCharge.getId());
|
|
|
+ advanceChargeItem.setSrcId(agent.getId());
|
|
|
+ advanceChargeItem.setSrcPid(agent.getId());
|
|
|
+ advanceChargeItem.setOrderNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setOverpayment(amountSub);
|
|
|
+ advanceChargeItem.setOverpaymentType(1);
|
|
|
+ advanceChargeItem.setSrcOrderNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setBillNo(agent.getBusinessNo());
|
|
|
+ advanceChargeItem.setIdentifier(0);
|
|
|
+ advanceChargeItemService.save(advanceChargeItem);
|
|
|
+ } else if (amountSub.compareTo(new BigDecimal("0")) < 0) {
|
|
|
+ FeeCenter feeCenter = feeCenterService.getOne(new LambdaQueryWrapper<FeeCenter>()
|
|
|
+ .eq(FeeCenter::getIsDeleted, 0)
|
|
|
+ .eq(FeeCenter::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FeeCenter::getDc, "D")
|
|
|
+ .eq(FeeCenter::getPid, agentList.get(0).getId())
|
|
|
+ .eq(FeeCenter::getFeeCode, "DSK"));
|
|
|
+ if (feeCenter != null) {
|
|
|
+ if (1 == feeCenter.getAccStatus()) {
|
|
|
+ throw new RuntimeException("【代收款】费用明细已生成账单,请先撤销账单");
|
|
|
+ } else {
|
|
|
+ feeCenterService.removeById(feeCenter.getId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new RuntimeException("未找到贸易代理应收【代收款】费用明细");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ System.out.println("无差额");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BigDecimal firstActualPayment = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ BigDecimal finalPaymentInFull = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode())).map(FeeCenter::getAmountLoc)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ for (Agent item : agentList) {
|
|
|
+ if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
+ BigDecimal amountSfk = feeCenterList.stream().filter(e -> "SFK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ if (new BigDecimal("0").compareTo(amountSfk) != 0) {
|
|
|
+ item.setFirstActualPayment(new BigDecimal("0.00"));
|
|
|
+ item.setFirstActualPaymentDate(null);
|
|
|
+ item.setOrderStatus("未付汇");
|
|
|
+ item.setWhetherReceivedBalancePayment("未付汇");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
+ BigDecimal amountWk = feeCenterList.stream().filter(e -> "WK".equals(e.getFeeCode()) && item.getContractNo().equals(e.getBillNo()))
|
|
|
+ .map(FeeCenter::getAmountLoc).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ item.setFinalPaymentInFull(item.getFinalPaymentInFull().subtract(amountWk));
|
|
|
+ item.setFinalPaymentInFullDate(null);
|
|
|
+ if (item.getFinalPaymentInFull().add(amountWk).compareTo(item.getFinalPaymentPayable()) == 0) {
|
|
|
+ item.setOrderStatus("未付汇");
|
|
|
+ item.setWhetherReceivedBalancePayment("未付汇");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<AgentItems> agentItemsList = agentItemsService.list(new LambdaQueryWrapper<AgentItems>()
|
|
|
+ .eq(AgentItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(AgentItems::getIsDeleted, 0)
|
|
|
+ .in(AgentItems::getPid, agentIdList));
|
|
|
+ if (!agentItemsList.isEmpty()) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ Date now = new Date();
|
|
|
+ String formattedDate = sdf.format(now);
|
|
|
+ for (AgentItems items : agentItemsList) {
|
|
|
+ if (ObjectUtils.isNotNull(items.getPaymentRecord())) {
|
|
|
+ String[] arr = items.getPaymentRecord().split(",");
|
|
|
+ String[] newArr = new String[arr.length];
|
|
|
+ for (int i = 0; i <= arr.length; i++) {
|
|
|
+ if (new BigDecimal("0").compareTo(firstActualPayment) != 0) {
|
|
|
+ if (arr[i].contains("应付首付款")) {
|
|
|
+ arr[i] = "【应付首付款】";
|
|
|
+ }
|
|
|
+ } else if (new BigDecimal("0").compareTo(finalPaymentInFull) != 0) {
|
|
|
+ if (arr[i].contains("应付尾款")) {
|
|
|
+ arr[i] = "【应付尾款】";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ newArr[i] = arr[i];
|
|
|
+ }
|
|
|
+ items.setPaymentRecord(String.join(",", newArr));
|
|
|
+ items.setPaymentRecord("【应收首付款】,【应收尾款】,【应付首付款】,【应付尾款】");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agentItemsService.updateBatchById(agentItemsList);
|
|
|
+ }
|
|
|
+ List<FeeCenter> feeCenters1 = new ArrayList<>();
|
|
|
+ for (FeeCenter item : feeCenterList) {
|
|
|
+ if (0 == item.getStlStatus()) {
|
|
|
+ throw new RuntimeException("费用:" + item.getFeeCnName() + "已撤销");
|
|
|
+ }
|
|
|
+ //费用明细
|
|
|
+ item.setAccBillId(0L);
|
|
|
+ item.setAccBillNo("");
|
|
|
+ item.setAccDate(null);
|
|
|
+ item.setAccAmount(item.getAmount());
|
|
|
+ item.setAccStatus(1);
|
|
|
+ item.setAccById(0L);
|
|
|
+ item.setAccByName("");
|
|
|
+ item.setStlOrgAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlCurCode("");
|
|
|
+ item.setStlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlAmountLoc(new BigDecimal("0.00"));
|
|
|
+ item.setStlStatus(0);
|
|
|
+ item.setStlDate(null);
|
|
|
+ item.setStlById(0L);
|
|
|
+ item.setStlByName("");
|
|
|
+ item.setUnsettledAmount(item.getAmount());
|
|
|
+ item.setStlTtlAmount(new BigDecimal("0.00"));
|
|
|
+ item.setStlBillId(0L);
|
|
|
+ item.setStlBillNo("");
|
|
|
+ feeCenters1.add(item);
|
|
|
+ }
|
|
|
+ feeCenterService.saveOrUpdateBatch(feeCenters1);
|
|
|
+ List<Long> accBillId = feeCenters1.stream().map(FeeCenter::getAccBillId).collect(Collectors.toList());
|
|
|
+ if (!accBillId.isEmpty()) {
|
|
|
+ List<FinStlBillsItems> stlBillsItemsList = finStlBillsItemsService.list(new LambdaQueryWrapper<FinStlBillsItems>()
|
|
|
+ .eq(FinStlBillsItems::getTenantId, AuthUtil.getTenantId())
|
|
|
+ .eq(FinStlBillsItems::getIsDeleted, 0)
|
|
|
+ .in(FinStlBillsItems::getAccBillId, accBillId));
|
|
|
+ if (!stlBillsItemsList.isEmpty()) {
|
|
|
+ List<Long> stlPid = stlBillsItemsList.stream().map(FinStlBillsItems::getPid).collect(Collectors.toList());
|
|
|
+ finStlBillsService.removeByIds(stlPid);
|
|
|
+ finStlBillsItemsService.removeByIds(stlBillsItemsList.stream().map(FinStlBillsItems::getId).collect(Collectors.toList()));
|
|
|
+ }
|
|
|
+ finAccBillsService.removeByIds(accBillId);
|
|
|
+ }
|
|
|
+ this.updateBatchById(agentList);
|
|
|
+ agent.setOrderStatus("审核通过");
|
|
|
+ updateById(agent);
|
|
|
+ return agent;
|
|
|
+ }
|
|
|
+
|
|
|
private FeeCenter assemblyDataSK(String businessType, Agent detail, String type, long lineNo, int sort, long deptId, String deptName, List<BFees> feesList) {
|
|
|
FeeCenter feeCenter = new FeeCenter();
|
|
|
feeCenter.setFeeType("1");
|