fix 88150 打包管理-编辑金额后,确收状态没有更新

This commit is contained in:
lijiarao
2024-08-07 11:21:44 +08:00
parent 6c6e255cfe
commit 6eee05ae13
@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.common.ProjectCommon;
import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.mail.entity.PayMailBillProject;
import com.jero.mail.service.IPayMailBillProjectService;
import com.jero.mail.service.IPayMailBillService;
@@ -58,7 +60,8 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
private IPayMailBillService payMailBillService;
@Resource
private AnnualDataLockingService annualDataLockingService;
@Autowired
private ProjectDetailService projectDetailService;
@Override
public IPage<PayPackCompany> queryPageList(Page<PayPackCompany> page, PayPackCompany payPackCompany) {
return payPackCompanyMapper.queryPageList(page,payPackCompany);
@@ -236,65 +239,20 @@ public class PayPackCompanyServiceImpl extends ServiceImpl<PayPackCompanyMapper,
}
BigDecimal receivableAmount = payPackCompany.getReceivableAmount();
Integer needInvoice = payPackCompany.getNeedInvoice();
if (Objects.isNull(payPackCompany.getReceivableAmount())) {
payPackCompany.setReceivableAmount(new BigDecimal("0.00"));
}
if (Objects.isNull(payPackCompany.getPaidAmount())) {
payPackCompany.setPaidAmount(new BigDecimal("0.00"));
}
// 待确收金额没有变更 && 验证来款方式没有变更
if (receivableAmount.compareTo(payPackCompanyOld.getReceivableAmount()) == 0 &&
needInvoice.equals(payPackCompanyOld.getNeedInvoice())) {
return payPackCompany;
}
// 验证待确收金额不能小于实收金额
if (receivableAmount.compareTo(payPackCompanyOld.getPaidAmount()) < 0) {
throw new JeroBootException("待确收金额不能小于实收金额!");
}
LambdaQueryWrapper<PayMailBillProject> queryPayMailBillProject = new LambdaQueryWrapper<>();
queryPayMailBillProject.eq(PayMailBillProject::getProjectId, payPackCompanyOld.getId());
List<PayMailBillProject> 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("待确收金额不可小于实收金额,请先修改实际来款后再来修改!");
// 变更待确收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payPackCompany.getId(), receivableAmount,needInvoice);
if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){
payPackCompany.setInAccount(projectStatusVO.getInAccount());
}
}
// 到账
// 待确收金额 = 实收金额 = 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);
if(!Objects.isNull(projectStatusVO.getMakeInvoice())){
payPackCompany.setMakeInvoice(projectStatusVO.getMakeInvoice());
}
// 开票金额 = 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);
if(!Objects.isNull(projectStatusVO.getAffirmIncome())){
payPackCompany.setIncomeAffirm(projectStatusVO.getAffirmIncome());
}
}
return payPackCompany;
}
}