platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/controller/PaymentOffsetController.java
@@ -52,7 +52,7 @@ wrapper.like(StrUtil.isNotBlank(paymentOffset.getBusGuestName()),PaymentOffset::getBusGuestName,paymentOffset.getBusGuestName()); wrapper.like(StrUtil.isNotBlank(paymentOffset.getContractName()),PaymentOffset::getContractName,paymentOffset.getContractName()); wrapper.orderByDesc(PaymentOffset::getCreateTime); return R.ok(paymentOffsetService.page(page, wrapper)); return R.ok(paymentOffsetService.pageByScope(page, wrapper)); } platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/PaymentOffsetService.java
@@ -1,10 +1,10 @@ package com.by4cloud.platformx.business.service; import com.baomidou.mybatisplus.extension.service.IService; import com.by4cloud.platformx.business.entity.PaymentOffset; import com.by4cloud.platformx.common.core.util.R; import com.by4cloud.platformx.common.data.mybatis.IIService; public interface PaymentOffsetService extends IService<PaymentOffset> { public interface PaymentOffsetService extends IIService<PaymentOffset> { R add(PaymentOffset paymentOffset); } platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractPaymentScheduleProcessServiceImpl.java
@@ -176,6 +176,18 @@ currentConfim.setTotalAmount(lastTotal.subtract(currentConfim.getReceivableAmount())); if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(currentConfim); //更新当前阶段付款情况 if (lastTotal.compareTo(new BigDecimal("0"))>0){ if (currentConfim.getTotalAmount().compareTo(new BigDecimal("0"))>=0) { schedule.setPaymentStatus(2); schedule.setPlannedAmount(schedule.getPlannedAmount()); contractPaymentScheduleMapper.updateById(schedule); }else { schedule.setPaymentStatus(1); schedule.setPlannedAmount(lastTotal); } } } //查询是否有后续阶段 @@ -213,6 +225,7 @@ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount())); if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(newConfim); } } @@ -265,6 +278,17 @@ currentConfim.setTotalAmount(lastTotal.subtract(currentConfim.getReceivableAmount())); if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(currentConfim); //更新当前阶段付款情况 if (lastTotal.compareTo(new BigDecimal("0"))>0){ if (currentConfim.getTotalAmount().compareTo(new BigDecimal("0"))>=0) { schedule.setPaymentStatus(2); schedule.setPlannedAmount(schedule.getPlannedAmount()); contractPaymentScheduleMapper.updateById(schedule); }else { schedule.setPaymentStatus(1); schedule.setPlannedAmount(lastTotal); } } } //查询是否有后续阶段 @@ -302,6 +326,17 @@ newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount())); if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(newConfim); //更新当前阶段付款情况 if (lastNewTotal.compareTo(new BigDecimal("0"))>0){ if (newConfim.getTotalAmount().compareTo(new BigDecimal("0"))>=0) { schedule.setPaymentStatus(2); schedule.setPlannedAmount(schedule.getPlannedAmount()); contractPaymentScheduleMapper.updateById(schedule); }else { schedule.setPaymentStatus(1); schedule.setPlannedAmount(lastNewTotal); } } } } platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/ContractServiceImpl.java
@@ -108,7 +108,7 @@ } if (contractPaymentScheduleAddDTO.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { schedule.setPaymentStatus(0); }else { } else { schedule.setPaymentStatus(3); } schedule.setContractId(contract.getId()); @@ -177,7 +177,7 @@ schedule.setStageOrder(currentIndex); if (contractPaymentScheduleAddDTO.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { schedule.setPaymentStatus(0); }else { } else { schedule.setPaymentStatus(3); } contractPaymentScheduleMapper.insert(schedule); @@ -367,26 +367,32 @@ } } if (ArrayUtil.isNotEmpty(outAmountList.toArray())) { BigDecimal currentSum = new BigDecimal("0"); for (BigDecimal currentAmount : outAmountList ) { currentSum = currentSum.add(currentAmount); //新增当前合同 资金转入 PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount", "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount"); inConfirm.setBusinessType("资金转入"); inConfirm.setConfirmTime(new Date()); inConfirm.setTransationAmount(currentSum.subtract(currentAmount)); inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentSum)); if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) { inConfirm.setAdvanceAmount(inConfirm.getTotalAmount()); } else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) { inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1"))); } paymentConfirmMapper.insert(inConfirm); BigDecimal currentInSum = outAmountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add); //新增当前合同 资金转入 PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount", "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount"); inConfirm.setBusinessType("资金转入"); inConfirm.setConfirmTime(new Date()); inConfirm.setTransationAmount(currentInSum); inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentInSum)); //更新当前阶段实际收款 和 收款状态 schedule.setActualAmount(inConfirm.getTransationAmount()); schedule.setPaymentStatus(2); if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0){ inConfirm.setAdvanceAmount(inConfirm.getTotalAmount()); }else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) { inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1"))); schedule.setActualAmount(currentInSum); schedule.setPaymentStatus(1); } paymentConfirmMapper.insert(inConfirm); //更新当前阶段实际收款 和 收款状态 contractPaymentScheduleMapper.updateById(schedule); } }else { paymentConfirmMapper.insert(paymentConfirm); } } @@ -395,7 +401,7 @@ List<ContractPaymentSchedule> scheduleList = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery() .lt(ContractPaymentSchedule::getEffectiveEndDate, DateUtil.today()) .ne(ContractPaymentSchedule::getPaymentStatus, "2") .ne(ContractPaymentSchedule::getPaymentStatus,3)); .ne(ContractPaymentSchedule::getPaymentStatus, 3)); if (ArrayUtil.isNotEmpty(scheduleList.toArray())) { scheduleList.stream().forEach(contractPaymentSchedule -> { Contract contract = baseMapper.selectById(contractPaymentSchedule.getContractId()); platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/OutBoundServiceImpl.java
@@ -62,11 +62,11 @@ return R.failed("没有查询到相关合同订单"); } List<String> erpCodeList = subjectMatterList.stream().map(ContractSubjectMatter::getMaterialCode).collect(Collectors.toList()); BigDecimal orderNum = subjectMatterList.stream().filter(item ->item.getDeliveryStatus()!=2) .map(item ->item.getDeliveryStatus()==0?item.getQuantity():item.getRemainingQuantity()) BigDecimal orderNum = subjectMatterList.stream().filter(item -> item.getDeliveryStatus() != 2) .map(item -> item.getDeliveryStatus() == 0 ? item.getQuantity() : item.getRemainingQuantity()) .reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal outTotal = addDTO.getSubjectMatterList().stream() .filter(item->erpCodeList.contains(item.getSubjectMatterCode())) .filter(item -> erpCodeList.contains(item.getSubjectMatterCode())) .map(OutSubjectMatterAddDTO::getOutBoundNum) .filter(num -> num != null) // 过滤掉 null 值,防止 NullPointerException .reduce(BigDecimal.ZERO, BigDecimal::add); @@ -102,7 +102,7 @@ contractSubjectMatterMapper.updateById(subjectMatter); currentOutMap.put(subjectMatter.getContractId(), subjectMatter); //新增合同出库历史 saveContractOutBound(contract, addDTO, subjectMatter,outBound.getId()); saveContractOutBound(contract, addDTO, subjectMatter, outBound.getId()); } else { BigDecimal currentOut = remainNum.add(subjectMatter.getRemainingQuantity()); subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum)); @@ -113,7 +113,7 @@ contractSubjectMatterMapper.updateById(subjectMatter); currentOutMap.put(subjectMatter.getContractId(), subjectMatter); //新增合同出库历史 saveContractOutBound(contract, addDTO, subjectMatter,outBound.getId()); saveContractOutBound(contract, addDTO, subjectMatter, outBound.getId()); break; } @@ -129,7 +129,7 @@ contractSubjectMatterMapper.updateById(subjectMatter); currentOutMap.put(subjectMatter.getContractId(), subjectMatter); //新增合同出库历史 saveContractOutBound(contract, addDTO, subjectMatter,outBound.getId()); saveContractOutBound(contract, addDTO, subjectMatter, outBound.getId()); } else { BigDecimal currentOut = remainNum.add(subjectMatter.getQuantity()); subjectMatter.setDeliveredQuantity(subjectMatter.getQuantity().add(remainNum)); @@ -140,7 +140,7 @@ contractSubjectMatterMapper.updateById(subjectMatter); currentOutMap.put(subjectMatter.getContractId(), subjectMatter); //新增合同出库历史 saveContractOutBound(contract, addDTO, subjectMatter,outBound.getId()); saveContractOutBound(contract, addDTO, subjectMatter, outBound.getId()); break; } } @@ -200,41 +200,41 @@ //查询之前所有发货前应收 List<PaymentConfirm> fhConfirmList = paymentConfirmMapper.selectList(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId()) .eq(PaymentConfirm::getScheduleId,schedule.getId()).orderByDesc(PaymentConfirm::getCreateTime)); BigDecimal fhTotalAmount = fhConfirmList.stream().map(item->item.getTransationAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); .eq(PaymentConfirm::getScheduleId, schedule.getId()).orderByDesc(PaymentConfirm::getCreateTime)); BigDecimal fhTotalAmount = fhConfirmList.stream().map(item -> item.getTransationAmount()).reduce(BigDecimal.ZERO, BigDecimal::add); //本次发货前应收 出库总额 - 所有发货前应收 paymentConfirm.setTransationAmount(paymentConfirm.getTransationAmount().subtract(fhTotalAmount)); paymentConfirm.setReceivableAmount(paymentConfirm.getTransationAmount()); paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount())); if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(paymentConfirm); } } else { //不存在发货应收 出库总额 paymentConfirm.setTotalAmount(lastConfirm.getTotalAmount().subtract(paymentConfirm.getTransationAmount())); if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(paymentConfirm); } } } else { //无之前阶段应收 paymentConfirm.setTotalAmount(paymentConfirm.getTransationAmount().multiply(new BigDecimal("-1"))); if(schedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { if (schedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(paymentConfirm); //客户付款完成合同 List<Contract> customerCompleteContractList = contractMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getPartyAId, contract.getPartyAId()) .eq(Contract::getPartyBId, SecurityUtils.getUser().getCompId()).apply(" amount = paid_amount")); if (ArrayUtil.isNotEmpty(customerCompleteContractList)){ if (ArrayUtil.isNotEmpty(customerCompleteContractList)) { List<BigDecimal> outAmountList = new ArrayList<>(); for (Contract completeContract:customerCompleteContractList for (Contract completeContract : customerCompleteContractList ) { PaymentConfirm contractLastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,completeContract.getId()) PaymentConfirm contractLastConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, completeContract.getId()) .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1")); //查询客户付款完成合同中最后明细金额 有预收转入当前合同 if (contractLastConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>0){ if (contractLastConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0) { //新增完成付款合同 资金转出 PaymentConfirm outConfirm = BeanUtil.copyProperties(contractLastConfirm,PaymentConfirm.class,"id","transationAmount", "advanceAmount","receivableAmount","overdueAmount","totalAmount"); PaymentConfirm outConfirm = BeanUtil.copyProperties(contractLastConfirm, PaymentConfirm.class, "id", "transationAmount", "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount"); outConfirm.setBusinessType("资金转出"); outConfirm.setConfirmTime(new Date()); outConfirm.setTransationAmount(contractLastConfirm.getTotalAmount()); @@ -243,25 +243,28 @@ outAmountList.add(outConfirm.getTransationAmount()); } } if (ArrayUtil.isNotEmpty(outAmountList.toArray())){ BigDecimal currentSum = new BigDecimal("0"); for (BigDecimal currentAmount:outAmountList ) { currentSum=currentSum.add(currentAmount); //新增当前合同 资金转入 PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm,PaymentConfirm.class,"id","transationAmount", "advanceAmount","receivableAmount","overdueAmount","totalAmount"); inConfirm.setBusinessType("资金转入"); inConfirm.setConfirmTime(new Date()); inConfirm.setTransationAmount(currentSum.subtract(currentAmount)); inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentSum)); if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>0){ inConfirm.setAdvanceAmount(inConfirm.getTotalAmount()); }else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0"))<0){ inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1"))); } paymentConfirmMapper.insert(inConfirm); if (ArrayUtil.isNotEmpty(outAmountList.toArray())) { BigDecimal currentInSum = outAmountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add); //新增当前合同 资金转入 PaymentConfirm inConfirm = BeanUtil.copyProperties(paymentConfirm, PaymentConfirm.class, "id", "transationAmount", "advanceAmount", "receivableAmount", "overdueAmount", "totalAmount"); inConfirm.setBusinessType("资金转入"); inConfirm.setConfirmTime(new Date()); inConfirm.setTransationAmount(currentInSum); inConfirm.setTotalAmount(paymentConfirm.getTotalAmount().add(currentInSum)); //更新当前阶段实际收款 和 收款状态 schedule.setActualAmount(inConfirm.getTransationAmount()); schedule.setPaymentStatus(2); if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) > 0){ inConfirm.setAdvanceAmount(inConfirm.getTotalAmount()); }else if (inConfirm.getTotalAmount().compareTo(new BigDecimal("0")) < 0) { inConfirm.setReceivableAmount(inConfirm.getTotalAmount().multiply(new BigDecimal("-1"))); schedule.setActualAmount(paymentConfirm.getTotalAmount().subtract(currentInSum)); schedule.setPaymentStatus(1); } paymentConfirmMapper.insert(inConfirm); //更新当前阶段实际收款 和 收款状态 scheduleMapper.updateById(schedule); } } } @@ -332,7 +335,7 @@ lastNewTotal = lastNewConfirm.getTotalAmount(); } newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount())); if(endSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0")) > 0) { paymentConfirmMapper.insert(newConfim); } } @@ -352,9 +355,9 @@ contract.setNextScheduleName("无"); contractMapper.updateById(contract); //当前为合同最后阶段 PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId()) PaymentConfirm lastNewConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId()) .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1")); if (lastNewConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>=0){ if (lastNewConfirm.getTotalAmount().compareTo(new BigDecimal("0")) >= 0) { //有预付且超过应收 关闭合同状态 contract.setContractStatus(3); contractMapper.updateById(contract); @@ -367,7 +370,7 @@ return R.ok(); } private void saveContractOutBound(Contract contract, OutBoundAddDTO addDTO, ContractSubjectMatter subjectMatter,Long outBoundId) { private void saveContractOutBound(Contract contract, OutBoundAddDTO addDTO, ContractSubjectMatter subjectMatter, Long outBoundId) { ContractOutBound contractOutBound = new ContractOutBound(); contractOutBound.setContractId(contract.getId()); contractOutBound.setContractName(contract.getContractName()); platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/PaymentConfirmServiceImpl.java
@@ -253,19 +253,25 @@ List<Contract> advanceContractList = new ArrayList<>(); //付款时间 Date payDate = addDTO.getConfirmTime(); for (Contract contract : customerContractList) { Iterator<Contract> iterator = customerContractList.iterator(); while (iterator.hasNext()) { Contract contract = iterator.next(); PaymentConfirm lastConfirm = baseMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId()) .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1")); BigDecimal lastTotal = new BigDecimal("0"); if (ObjUtil.isNotNull(lastConfirm)) { lastTotal = lastConfirm.getTotalAmount(); }else { } //合同最近明细总额为0 或 > 0 情况下 if (lastTotal.compareTo(new BigDecimal("0")) >= 0) { log.info("当前合同号:{},明细总额无应收款", contract.getContractNo()); advanceContractList.add(contract); continue; if (iterator.hasNext()) { continue; } } transtionRemainAmount = transtionRemainAmount.add(lastTotal); @@ -281,9 +287,16 @@ entity.setBusGuestName(customer.getCompanyName()); entity.setBusinessType("客户付款"); if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { entity.setTransationAmount(lastTotal.multiply(new BigDecimal("-1"))); entity.setTotalAmount(new BigDecimal("0")); entity.setConfirmTime(payDate); // 判断是否是最后一个 if (!iterator.hasNext()) { entity.setTransationAmount(transtionRemainAmount.subtract(lastTotal)); entity.setAdvanceAmount(transtionRemainAmount); entity.setTotalAmount(transtionRemainAmount); }else { entity.setTransationAmount(lastTotal.multiply(new BigDecimal("-1"))); entity.setTotalAmount(new BigDecimal("0")); } baseMapper.insert(entity); payContractList.add(contract); } else if (transtionRemainAmount.compareTo(new BigDecimal("0")) == 0) { @@ -371,10 +384,10 @@ // if (payComScheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))) { // contract.setContractStatus(3); // } contractService.updateById(contract); if (contract.getAmount().compareTo(contract.getPaidAmount()) == 0) { contract.setBillingStatus("2"); contract.setContractStatus(3); contractService.updateById(contract); payCompleteContractList.add(contract); } //付款 且 付款未全付 @@ -385,28 +398,28 @@ }); //客户预付有剩余 且 有预付款的合同 if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { if (ArrayUtil.isNotEmpty(payNoCompleteContractList.toArray())){ //余额 放到付款未完成合同 预收 Contract lastContract = payNoCompleteContractList.get(0); //保存明细 saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); } if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isNotEmpty(advanceContractList.toArray())){ //客户预付有剩余 没有预付款的合同 Contract lastContract = advanceContractList.get(0); //保存明细 saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); } if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isEmpty(advanceContractList.toArray()) &&ArrayUtil.isNotEmpty(payCompleteContractList.toArray())) { //客户预付有剩余 没有预付款的合同 Contract lastContract = payCompleteContractList.get(payCompleteContractList.size() - 1); //保存明细 saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); } } // if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { // if (ArrayUtil.isNotEmpty(payNoCompleteContractList.toArray())){ // //余额 放到付款未完成合同 预收 // Contract lastContract = payNoCompleteContractList.get(0); // //保存明细 // saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); // } // if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isNotEmpty(advanceContractList.toArray())){ // //客户预付有剩余 没有预付款的合同 // Contract lastContract = advanceContractList.get(0); // //保存明细 // saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); // } // if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isEmpty(advanceContractList.toArray()) // &&ArrayUtil.isNotEmpty(payCompleteContractList.toArray())) { // //客户预付有剩余 没有预付款的合同 // Contract lastContract = payCompleteContractList.get(payCompleteContractList.size() - 1); // //保存明细 // saveNewPaymentConfirm(customer,null,lastContract,transtionRemainAmount,payDate); // // } // } } return R.ok(); } @@ -569,7 +582,9 @@ List<Contract> advanceContractList = new ArrayList<>(); //付款时间 Date payDate = DateUtil.parse(record.getString("billDate"), DatePattern.NORM_DATETIME_FORMAT); for (Contract contract : contractList) { Iterator<Contract> iterator = contractList.iterator(); while (iterator.hasNext()) { Contract contract = iterator.next(); PaymentConfirm lastConfirm = baseMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId, contract.getId()) .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1")); BigDecimal lastTotal = new BigDecimal("0"); @@ -601,9 +616,16 @@ entity.setPayType(record.get("bodyItemSettleModeName") != null ? record.getString("bodyItemSettleModeName").contains("承兑汇票") ? 1 : 0 : null); entity.setBipId(record.getString("id")); if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { entity.setTransationAmount(lastTotal.multiply(new BigDecimal("-1"))); entity.setTotalAmount(new BigDecimal("0")); entity.setConfirmTime(payDate); // 判断是否是最后一个 if (!iterator.hasNext()) { entity.setTransationAmount(transtionRemainAmount.subtract(lastTotal)); entity.setAdvanceAmount(transtionRemainAmount); entity.setTotalAmount(transtionRemainAmount); }else { entity.setTransationAmount(lastTotal.multiply(new BigDecimal("-1"))); entity.setTotalAmount(new BigDecimal("0")); } baseMapper.insert(entity); } else if (transtionRemainAmount.compareTo(new BigDecimal("0")) == 0) { entity.setTransationAmount(lastTotal.multiply(new BigDecimal("-1"))); @@ -683,11 +705,17 @@ BigDecimal payTotal = payComScheduleList.stream().map(item->StrUtil.equals(item.getPaymentStatus() + "", "0") ? item.getPlannedAmount() : item.getActualAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); contract.setPaidAmount(payTotal); if (payComScheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))) { contract.setContractStatus(3); } contractService.updateById(contract); // if (payComScheduleList.stream().allMatch(item -> Objects.equals(item.getPaymentStatus(), 2))) { // contract.setContractStatus(3); // } // contractService.updateById(contract); // if (contract.getAmount().compareTo(contract.getPaidAmount()) == 0) { // payCompleteContractList.add(contract); // } if (contract.getAmount().compareTo(contract.getPaidAmount()) == 0) { contract.setBillingStatus("2"); contract.setContractStatus(3); contractService.updateById(contract); payCompleteContractList.add(contract); } //付款 且 付款未全付 @@ -698,28 +726,28 @@ }); //客户预付有剩余 且 有预付款的合同 if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { if (ArrayUtil.isNotEmpty(payNoCompleteContractList.toArray())){ //余额 放到付款未完成合同 预收 Contract lastContract = payNoCompleteContractList.get(payNoCompleteContractList.size() - 1); //保存明细 saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); } if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isNotEmpty(advanceContractList.toArray())){ //客户预付有剩余 没有预付款的合同 Contract lastContract = payNoCompleteContractList.get(payNoCompleteContractList.size() - 1); //保存明细 saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); } if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isEmpty(advanceContractList.toArray()) &&ArrayUtil.isNotEmpty(payCompleteContractList.toArray())) { //客户预付有剩余 没有预付款的合同 Contract lastContract = payCompleteContractList.get(payCompleteContractList.size() - 1); //保存明细 saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); } } // if (transtionRemainAmount.compareTo(new BigDecimal("0")) > 0) { // if (ArrayUtil.isNotEmpty(payNoCompleteContractList.toArray())){ // //余额 放到付款未完成合同 预收 // Contract lastContract = payNoCompleteContractList.get(payNoCompleteContractList.size() - 1); // //保存明细 // saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); // } // if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isNotEmpty(advanceContractList.toArray())){ // //客户预付有剩余 没有预付款的合同 // Contract lastContract = payNoCompleteContractList.get(payNoCompleteContractList.size() - 1); // //保存明细 // saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); // } // if (ArrayUtil.isEmpty(payNoCompleteContractList.toArray())&&ArrayUtil.isEmpty(advanceContractList.toArray()) // &&ArrayUtil.isNotEmpty(payCompleteContractList.toArray())) { // //客户预付有剩余 没有预付款的合同 // Contract lastContract = payCompleteContractList.get(payCompleteContractList.size() - 1); // //保存明细 // saveNewPaymentConfirm(customer,record,lastContract,transtionRemainAmount,payDate); // // } // } } private Boolean savePaymentSlip(BusinessCustomer customer, JSONObject record,SysDept dept) {