fix 88150 打包管理-编辑金额后,确收状态没有更新
This commit is contained in:
+14
-56
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user