收入合同已收金额变更

This commit is contained in:
梁琦涛
2021-10-26 18:58:19 +08:00
parent 244d75f283
commit 7065ec5edd
3 changed files with 72 additions and 39 deletions
@@ -456,8 +456,15 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
if(!Objects.isNull(p.getChargeUse())){
p.setChargeUse_dictText(sysBaseAPI.translateDict("payment_charge_use",String.valueOf(p.getChargeUse())));
}
if(Objects.isNull(p.getPaidAmount())){
p.setPaidAmount(new BigDecimal("0.00"));
}
});
BigDecimal b = listProject.stream().map(ProjectOutput::getPaidAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
payIncomeContractDetailOutput.setAmountReceived(b);
payIncomeContractDetailOutput.setListProject(listProject);
}else{
payIncomeContractDetailOutput.setAmountReceived(new BigDecimal("0.00"));
}
return Result.OK(payIncomeContractDetailOutput);
}
@@ -520,8 +527,15 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
if(!Objects.isNull(p.getChargeUse())){
p.setChargeUse_dictText(sysBaseAPI.translateDict("payment_charge_use",String.valueOf(p.getChargeUse())));
}
if(Objects.isNull(p.getPaidAmount())){
p.setPaidAmount(new BigDecimal("0.00"));
}
});
BigDecimal b = listProject.stream().map(ProjectOutput::getPaidAmount).reduce(BigDecimal.ZERO,BigDecimal::add);
payIncomeContractDetailOutput.setAmountReceived(b);
payIncomeContractDetailOutput.setListProject(listProject);
}else{
payIncomeContractDetailOutput.setAmountReceived(new BigDecimal("0.00"));
}
if(!CollectionUtils.isEmpty(listArchive)){
payIncomeContractDetailOutput.setListArchive(listArchive);
@@ -571,34 +585,55 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
LambdaQueryWrapper<PayIncomeContractInstallment> query = new LambdaQueryWrapper<>();
query.in(PayIncomeContractInstallment::getContractId,listId);
List<PayIncomeContractInstallment> listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(query);
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
exportList.forEach(p->{
String str = JSON.toJSONString(p);
Map<String,String> map = JSONObject.parseObject(str,Map.class);
map.put("contractDate",DateUtils.date2Str(p.getContractDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("terminationDate",DateUtils.date2Str(p.getTerminationDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("opening",sysBaseAPI.translateDict("yn",String.valueOf(p.getOpening())));
map.put("accountStatus",sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(p.getAccountStatus())));
map.put("pack",sysBaseAPI.translateDict("yn",String.valueOf(p.getPack())));
List<PayIncomeContractInstallment> listSub = listPayIncomeContractInstallment.stream().filter(item->
Objects.equals(p.getId(),item.getContractId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listSub)){
exportList.forEach(p->{
if(Objects.isNull(p.getAccountsReceivableAmount())){
p.setAccountsReceivableAmount(new BigDecimal("0.00"));
}
if(Objects.isNull(p.getAmountReceived())){
p.setAmountReceived(new BigDecimal("0.00"));
}
p.setOutstandingAmount(p.getAccountsReceivableAmount().subtract(p.getAmountReceived()));
// 已收全款
if(p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) == 0
|| p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) < 0){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS3);
}
// 部分收款
if(p.getOutstandingAmount().compareTo(new BigDecimal("0.00")) > 0 && p.getOutstandingAmount().compareTo(p.getAccountsReceivableAmount()) < 0){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS2);
}
// 待收款
if(p.getOutstandingAmount().compareTo(p.getAccountsReceivableAmount()) == 0 && p.getAccountsReceivableAmount().compareTo(new BigDecimal("0.00")) > 0 ){
p.setAccountStatus(PayIncomeContractCommon.ACCOUNT_STATUS1);
}
String str = JSON.toJSONString(p);
Map<String,String> map = JSONObject.parseObject(str,Map.class);
map.put("contractDate",DateUtils.date2Str(p.getContractDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("terminationDate",DateUtils.date2Str(p.getTerminationDate(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("opening",sysBaseAPI.translateDict("yn",String.valueOf(p.getOpening())));
map.put("accountStatus",sysBaseAPI.translateDict("revenue_contract_account_status",String.valueOf(p.getAccountStatus())));
map.put("pack",sysBaseAPI.translateDict("yn",String.valueOf(p.getPack())));
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)) {
List<PayIncomeContractInstallment> listSub = listPayIncomeContractInstallment.stream().filter(item ->
Objects.equals(p.getId(), item.getContractId())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(listSub)) {
int count = mapCount.get("count");
if(count < listSub.size()){
mapCount.put("count",listSub.size());
if (count < listSub.size()) {
mapCount.put("count", listSub.size());
}
listSub.forEach(p1->{
listSub.forEach(p1 -> {
int n = listSub.indexOf(p1) + 1;
map.put("phaseName" + n,p1.getPhaseName());
map.put("accountsReceivableAmount" + n,Objects.isNull(p1.getAccountsReceivableAmount()) ? "" : String.valueOf(p1.getAccountsReceivableAmount()));
map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("paidAmount" + n,Objects.isNull(p1.getPaidAmount()) ? "" : String.valueOf(p1.getPaidAmount()));
map.put("paidTime" + n,DateUtils.date2Str(p1.getPaidTime(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("phaseName" + n, p1.getPhaseName());
map.put("accountsReceivableAmount" + n, Objects.isNull(p1.getAccountsReceivableAmount()) ? "" : String.valueOf(p1.getAccountsReceivableAmount()));
map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(), new SimpleDateFormat("yyyy-MM-dd")));
map.put("paidAmount" + n, Objects.isNull(p1.getPaidAmount()) ? "" : String.valueOf(p1.getPaidAmount()));
map.put("paidTime" + n, DateUtils.date2Str(p1.getPaidTime(), new SimpleDateFormat("yyyy-MM-dd")));
});
}
list.add(map);
});
}
}
});
}else{
throw new JeroBootException("数据为空!");
}
@@ -231,9 +231,6 @@
pic.termination_date AS terminationDate,
pic.contract_time_points AS contractTimePoints,
pic.accounts_receivable_amount AS accountsReceivableAmount,
pic.amount_received AS amountReceived,
pic.outstanding_amount AS outstandingAmount,
pic.account_status AS accountStatus,
pic.contract_payment_times AS contractPaymentTimes,
pic.pack,
pic.pack_year AS packYear,
@@ -248,26 +245,27 @@
where contract_id = pic.id AND accounts_receivable_time is not null AND accounts_receivable_time &lt; DATE_FORMAT( NOW(), '%Y-%m-%d' )
AND accounts_receivable_amount != 0 AND accounts_receivable_amount > if(paid_amount is null or paid_amount = '',0,paid_amount)
) AS chargeStatus,
GROUP_CONCAT(project.projectName ORDER BY project.id DESC) AS associatedProject
GROUP_CONCAT(project.projectName ORDER BY project.id DESC) AS associatedProject,
sum(project.paid_amount) as amountReceived
FROM pay_income_contract pic
LEFT JOIN pay_income_contract_associated pica ON pica.contract_id = pic.id
LEFT JOIN
(
SELECT id,charge_project AS projectName FROM pay_common_project
SELECT id,charge_project AS projectName,paid_amount FROM pay_common_project
UNION ALL
SELECT pwgs.id,pwg.working_group_project AS projectName FROM pay_working_group_subitem pwgs
SELECT pwgs.id,pwg.working_group_project AS projectName,paid_amount FROM pay_working_group_subitem pwgs
LEFT JOIN pay_working_group pwg ON pwg.id = pwgs.working_group_id
WHERE pwg.working_group_project IS NOT NULL AND pwg.working_group_project != ''
UNION ALL
SELECT sit.id,meeting.meeting_name AS projectName FROM pay_meeting meeting
SELECT sit.id,meeting.meeting_name AS projectName,paid_amount FROM pay_meeting meeting
INNER JOIN pay_meeting_situation sit ON meeting.id = sit.meeting_id
WHERE meeting.meeting_name IS NOT NULL AND meeting.meeting_name != ''
UNION ALL
SELECT msub.id,pmp.project_name AS projectName FROM pay_member_project pmp
SELECT msub.id,pmp.project_name AS projectName,paid_amount FROM pay_member_project pmp
INNER JOIN pay_member_project_subitem msub ON pmp.id = msub.project_id
WHERE pmp.project_name IS NOT NULL AND pmp.project_name != ''
UNION ALL
SELECT tmsub.id,tmember.project_name AS projectName FROM tb_member_project tmember
SELECT tmsub.id,tmember.project_name AS projectName,paid_amount FROM tb_member_project tmember
INNER JOIN tb_member_project_subitem tmsub ON tmember.id=tmsub.project_id
where tmember.project_name IS NOT NULL AND tmember.project_name != ''
) project ON project.id = pica.project_id
@@ -138,10 +138,10 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("已收金额大于应收金额!");
}
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!");
// }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
throw new JeroBootException(msgPayIncomeContract.toString());
@@ -235,10 +235,10 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(Objects.isNull(input.getContract())){
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("已收金额大于应收金额!");
}
// if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
// && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
// throw new JeroBootException("已收金额大于应收金额!");
// }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContract)){
throw new JeroBootException(msgPayIncomeContract.toString());