diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java index e12304af..8f0f7ce8 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/pack/service/impl/PayPackCompanyServiceImpl.java @@ -5,7 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.api.vo.Result; +import com.jero.common.common.ProjectCommon; +import com.jero.common.enums.PaymentStatusEnum; import com.jero.common.exception.JeroBootException; +import com.jero.common.vo.ProjectStatusVO; +import com.jero.mail.entity.PayMailBill; +import com.jero.mail.entity.PayMailBillProject; +import com.jero.mail.service.IPayMailBillProjectService; +import com.jero.mail.service.IPayMailBillService; import com.jero.modules.system.service.ISysUserService; import com.jero.pack.entity.PayPackCompany; import com.jero.pack.mapper.PayPackCompanyMapper; @@ -19,6 +26,7 @@ import com.jero.temporary.entity.PayCompanyManagementTemporary; import com.jero.temporary.entity.PayContactsManagementTemporary; import com.jero.temporary.service.IPayCompanyManagementTemporaryService; import com.jero.temporary.service.IPayContactsManagementTemporaryService; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +37,7 @@ import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @Description: pay_pack_company @@ -49,6 +58,10 @@ public class PayPackCompanyServiceImpl extends ServiceImpl queryPageList(Page page, PayPackCompany payPackCompany) { @@ -98,6 +111,7 @@ public class PayPackCompanyServiceImpl extends ServiceImpl queryPayMailBillProject = new LambdaQueryWrapper<>(); + queryPayMailBillProject.eq(PayMailBillProject::getProjectId, payPackCompanyOld.getId()); + List listPayMailBillProject = payMailBillProjectService.list(queryPayMailBillProject); + // 开票金额 + BigDecimal invoice = new BigDecimal("0.00"); + if (!CollectionUtils.isEmpty(listPayMailBillProject)) { + BigDecimal b = listPayMailBillProject.stream().map(PayMailBillProject::getInvoiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + invoice = invoice.add(b); + if (receivableAmount.compareTo(invoice) < 0) { + throw new JeroBootException("待确收金额不可小于实收金额,请先修改实际来款后再来修改!"); + } + } + // 到账 + // 待确收金额 = 实收金额 = 1 + if (receivableAmount.compareTo(payPackCompanyOld.getPaidAmount()) == 0) { + payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT1); + } + // 0 = 实收金额 = 0 + if (payPackCompanyOld.getPaidAmount().compareTo(new BigDecimal("0.00")) == 0) { + payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT0); + } + // 0 < 实收金额 && 实收金额 < 待确收金额 = 2 + if (payPackCompanyOld.getPaidAmount().compareTo(new BigDecimal("0.00")) > 0 + && payPackCompanyOld.getPaidAmount().compareTo(receivableAmount) < 0) { + payPackCompany.setInAccount(ProjectCommon.IN_ACCOUNT2); + } + // 开票 + // 不需要开票 + if (Objects.equals(payPackCompanyOld.getNeedInvoice(), ProjectCommon.NEED_INVOICE0)) { + payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE0); + } else { + // 开票金额 = 待确收金额 = 1 + if (invoice.compareTo(receivableAmount) == 0) { + payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE1); + } + // 开票金额 = 0 = 0 + if (invoice.compareTo(new BigDecimal("0.00")) == 0) { + payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE0); + } + // 开票金额 > 0 && 开票金额 < 待确收金额 = 2 + if (invoice.compareTo(new BigDecimal("0.00")) > 0 && invoice.compareTo(receivableAmount) < 0) { + payPackCompany.setMakeInvoice(ProjectCommon.MAKE_INVOICE2); + } + } return payPackCompany; } }