| | |
| | | contract.setPartyBId(SecurityUtils.getUser().getCompId()); |
| | | contract.setPartyB(SecurityUtils.getUser().getCompName()); |
| | | contract.setContractNo(ContractNumberGenerator.generateContractNumber()); |
| | | contract.setPaidAmount(new BigDecimal("0")); |
| | | contract.setBillingStatus("0"); |
| | | contract.setErpPushFlag("0"); |
| | | List<Contract> contracts; |
| | |
| | | contract.setContractNo(ContractNumberGenerator.generateContractNumber()); |
| | | contract.setBillingStatus("0"); |
| | | contract.setErpPushFlag("0"); |
| | | contract.setPaidAmount(new BigDecimal("0")); |
| | | List<Contract> contracts; |
| | | contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,contract.getContractNo())); |
| | | while (ArrayUtil.isNotEmpty(contracts.toArray())){ |
| | |
| | | lastNewTotal = lastNewConfirm.getTotalAmount(); |
| | | } |
| | | paymentConfirm.setTotalAmount(lastNewTotal.subtract(paymentConfirm.getReceivableAmount())); |
| | | if (fitstSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0){ |
| | | paymentConfirmMapper.insert(paymentConfirm); |
| | | } |
| | | //新增合同履约记录 |
| | | ContractPaymentScheduleProcess process = new ContractPaymentScheduleProcess(); |
| | | process.setContractId(contract.getId()); |
| | |
| | | //当前为合同最后阶段 |
| | | PaymentConfirm newConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getContractId,contract.getId()) |
| | | .orderByDesc(PaymentConfirm::getCreateTime).last("limit 1")); |
| | | if (newConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>=0){ |
| | | if (ObjUtil.isNotNull(newConfirm)&&newConfirm.getTotalAmount().compareTo(new BigDecimal("0"))>=0){ |
| | | //有预付且超过应收 关闭合同状态 |
| | | contract.setContractStatus(3); |
| | | baseMapper.updateById(contract); |
| | |
| | | lastNewTotal = lastNewConfirm.getTotalAmount(); |
| | | } |
| | | paymentConfirm.setTotalAmount(lastNewTotal.subtract(paymentConfirm.getReceivableAmount())); |
| | | if (fitstSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { |
| | | paymentConfirmMapper.insert(paymentConfirm); |
| | | } |
| | | } |
| | | //查询是否有后续阶段 |
| | | List<ContractPaymentSchedule> afterSchedule = contractPaymentScheduleMapper.selectList(Wrappers.<ContractPaymentSchedule>lambdaQuery() |
| | |
| | | lastNewTotal = lastNewConfirm.getTotalAmount(); |
| | | } |
| | | newConfim.setTotalAmount(lastNewTotal.subtract(newConfim.getReceivableAmount())); |
| | | if (endSchedule.getPaymentRatio().compareTo(new BigDecimal("0"))>0) { |
| | | paymentConfirmMapper.insert(newConfim); |
| | | } |
| | | } |
| | | //更新合同下个阶段 |
| | | contract.setNextScheduleName(endSchedule.getStageName()); |
| | |
| | | //判断当前阶段是否已生成上阶段应收超期 |
| | | PaymentConfirm oiverdueConfirm = paymentConfirmMapper.selectOne(Wrappers.<PaymentConfirm>lambdaQuery().eq(PaymentConfirm::getScheduleId, contractPaymentSchedule.getId()) |
| | | .eq(PaymentConfirm::getBusinessType, "应收超期")); |
| | | if (ObjUtil.isNull(oiverdueConfirm)) { |
| | | if (ObjUtil.isNull(oiverdueConfirm)&&overdueConfirm.getTransationAmount().compareTo(new BigDecimal("0"))>0) { |
| | | overdueConfirm.setCompId(contractPaymentSchedule.getCompId()); |
| | | paymentConfirmMapper.insert(overdueConfirm); |
| | | } |
| | |
| | | .eq(CurrentOverdue::getScheduleId,currentOverdue.getScheduleId()).last("limit 1")); |
| | | if (ObjUtil.isNull(overdue)){ |
| | | currentOverdue.setCompId(contractPaymentSchedule.getCompId()); |
| | | if (currentOverdue.getReceivableAmount().compareTo(new BigDecimal("0"))>0){ |
| | | currentOverdueMapper.insert(currentOverdue); |
| | | } |
| | | }else { |
| | | overdue.setOverdueDuration(BigDecimal.valueOf(DateUtil.betweenDay(contractPaymentSchedule.getEffectiveEndDate(),new Date(),true))); |
| | | currentOverdueMapper.updateById(overdue); |
| | |
| | | baseMapper.updateById(contract); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R copyNewContract(Long id) { |
| | | Contract oldContract = baseMapper.selectById(id); |
| | | Contract newContract = BeanUtil.copyProperties(oldContract,Contract.class,"id","createTime"); |
| | | newContract.setContractNo(ContractNumberGenerator.generateContractNumber()); |
| | | newContract.setPaidAmount(new BigDecimal("0")); |
| | | newContract.setBillingStatus("0"); |
| | | newContract.setErpPushFlag("0"); |
| | | List<Contract> contracts; |
| | | contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,newContract.getContractNo())); |
| | | while (ArrayUtil.isNotEmpty(contracts.toArray())){ |
| | | newContract.setContractNo(ContractNumberGenerator.generateContractNumber()); |
| | | contracts = baseMapper.selectList(Wrappers.<Contract>lambdaQuery().eq(Contract::getContractNo,newContract.getContractNo())); |
| | | } |
| | | baseMapper.insert(newContract); |
| | | return R.ok(); |
| | | } |
| | | } |