| | |
| | | package com.ruoyi.cwgl.service.impl; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.ruoyi.common.utils.SecurityUtils; |
| | | import com.ruoyi.cwgl.domain.EstimatedReceivableBillLog; |
| | | import com.ruoyi.cwgl.domain.PendingSettlementBusiness; |
| | | import com.ruoyi.cwgl.mapper.EstimatedReceivableMapper; |
| | | import com.ruoyi.cwgl.mapper.PendingSettlementBusinessMapper; |
| | | import com.ruoyi.cwgl.service.IEstimatedReceivableBillLogService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | private EstimatedReceivableBillMapper estimatedReceivableBillMapper; |
| | | @Autowired |
| | | private IEstimatedReceivableBillLogService logService; |
| | | @Resource |
| | | private PendingSettlementBusinessMapper pendingSettlementBusinessMapper; |
| | | @Resource |
| | | private EstimatedReceivableMapper estimatedReceivableMapper; |
| | | |
| | | |
| | | /** |
| | |
| | | public int updateEstimatedReceivableBill(EstimatedReceivableBill estimatedReceivableBill) |
| | | { |
| | | estimatedReceivableBill.setUpdateTime(DateUtils.getNowDate()); |
| | | |
| | | return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill); |
| | | } |
| | | |
| | | @Override |
| | | public int updateEstimatedReceivableBillName(EstimatedReceivableBill estimatedReceivableBill) { |
| | | EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog(); |
| | | estimatedReceivableBillLog.setCreateTime(new Date()); |
| | | estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId()); |
| | | estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername()); |
| | | estimatedReceivableBillLog.setOperation("修改账单名称为"+estimatedReceivableBill.getBillName()); |
| | | logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog); |
| | | pendingSettlementBusinessMapper.updatePendingSettlementBusinessByBillId(estimatedReceivableBill.getId(),estimatedReceivableBill.getBillName()); |
| | | return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill); |
| | | } |
| | | |
| | |
| | | Integer id = estimatedReceivableBill.getId(); |
| | | EstimatedReceivableBill oldData = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(id); |
| | | //应结算金额 |
| | | Long totalAmount = oldData.getTotalAmount()==null?0L:oldData.getTotalAmount(); |
| | | BigDecimal totalAmount = oldData.getTotalAmount()==null?BigDecimal.ZERO:oldData.getTotalAmount(); |
| | | //已结算金额 |
| | | Long settledAmount = oldData.getSettledAmount()==null?0L:oldData.getSettledAmount(); |
| | | BigDecimal settledAmount = oldData.getSettledAmount()==null?BigDecimal.ZERO:oldData.getSettledAmount(); |
| | | //当前提交金额 |
| | | Long settlementAmount = estimatedReceivableBill.getSettlementAmount(); |
| | | BigDecimal settlementAmount = estimatedReceivableBill.getSettlementAmount(); |
| | | EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog(); |
| | | |
| | | estimatedReceivableBill.setSettledAmount(settlementAmount); |
| | |
| | | estimatedReceivableBillLog.setBillId(estimatedReceivableBill.getId()); |
| | | estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername()); |
| | | estimatedReceivableBillLog.setOperation("本次提交金额"+ settlementAmount); |
| | | estimatedReceivableBillLog.setFileName(estimatedReceivableBill.getAttachment()); |
| | | logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog); |
| | | settledAmount = settledAmount+settlementAmount; |
| | | if (settledAmount>totalAmount){ |
| | | settledAmount = settledAmount.add(settlementAmount); |
| | | List<String>dispatchNos =pendingSettlementBusinessMapper.selectPendingSettlementBusinessDispatchNos(estimatedReceivableBill.getId()); |
| | | if (settledAmount.compareTo(totalAmount) > 0){ |
| | | //已结算大于应计算金额为已结算 |
| | | estimatedReceivableBill.setStatus(2); |
| | | estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,3); |
| | | }else { |
| | | //否则部分结算 |
| | | estimatedReceivableBill.setStatus(1); |
| | | estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,2); |
| | | } |
| | | return estimatedReceivableBillMapper.updateEstimatedReceivableBill(estimatedReceivableBill); |
| | | } |
| | | |
| | | @Override |
| | | public int cancelRelevancy(Integer id) { |
| | | PendingSettlementBusiness pendingSettlementBusiness = pendingSettlementBusinessMapper.selectPendingSettlementBusinessById(id); |
| | | if (pendingSettlementBusiness==null){ |
| | | throw new ServiceException("待入账业务不存在"); |
| | | } |
| | | Integer billId = pendingSettlementBusiness.getBillId(); |
| | | EstimatedReceivableBill estimatedReceivableBill = estimatedReceivableBillMapper.selectEstimatedReceivableBillById(billId); |
| | | estimatedReceivableBill.setDispatchCount(estimatedReceivableBill.getDispatchCount()-1); |
| | | //应结算金额修改 |
| | | BigDecimal totalAmount = estimatedReceivableBill.getTotalAmount(); |
| | | estimatedReceivableBill.setTotalAmount(totalAmount.subtract(pendingSettlementBusiness.getEstimatedTotalIncome())); |
| | | EstimatedReceivableBillLog estimatedReceivableBillLog = new EstimatedReceivableBillLog(); |
| | | estimatedReceivableBillLog.setCreateTime(new Date()); |
| | | estimatedReceivableBillLog.setBillId(billId); |
| | | estimatedReceivableBillLog.setCreateBy(SecurityUtils.getUsername()); |
| | | String dispatchNo = pendingSettlementBusiness.getDispatchNo(); |
| | | estimatedReceivableBillLog.setOperation("取消调度单"+ dispatchNo +"关联"); |
| | | logService.insertEstimatedReceivableBillLog(estimatedReceivableBillLog); |
| | | List<String> dispatchNos = new ArrayList<>(); |
| | | dispatchNos.add(dispatchNo); |
| | | estimatedReceivableMapper.updateEstimatedReceivableBillStatus(dispatchNos,0); |
| | | |
| | | return pendingSettlementBusinessMapper.cancelRelevancy(id); |
| | | |
| | | } |
| | | } |