|
@@ -46,6 +46,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.zjugis.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static com.zjugis.framework.common.util.collection.CollectionUtils.convertSet;
|
|
@@ -81,6 +82,9 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
@Autowired
|
|
|
ContractService contractService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ ContractApplyService contractApplyService;
|
|
|
+
|
|
|
@Autowired
|
|
|
ContractInvoiceService contractInvoiceService;
|
|
|
|
|
@@ -124,12 +128,37 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
projectDto.setDeptIds(deptIds);
|
|
|
}
|
|
|
Page<Project> result = projectMapper.page(page, projectDto);
|
|
|
+ List<Project> records = page.getRecords();
|
|
|
+ Set<String> ids = convertSet(records, Project::getId);
|
|
|
+ List<Contract> contracts = contractService.selectByProjectIds(ids);
|
|
|
+ List<ContractApply> ContractApplys = contractApplyService.getListByProjectIds(ids);
|
|
|
+ Map<String, List<Contract>> contractMap = contracts.stream().collect(Collectors.groupingBy(Contract::getProjectId));
|
|
|
+ Map<String, List<ContractApply>> contractApplyMap = ContractApplys.stream().collect(Collectors.groupingBy(ContractApply::getProjectId));
|
|
|
// List<Project> records = result.getRecords();
|
|
|
-// records.forEach(record -> {
|
|
|
+ records.forEach(record -> {
|
|
|
// AmountDto amountDto = contractService.selectAmountByProject(record.getId());
|
|
|
// record.setContractBalance(amountDto == null?BigDecimal.ZERO: amountDto.getContractBalance());
|
|
|
// record.setReceivableAmount(amountDto == null?BigDecimal.ZERO:amountDto.getReceivableAmount());
|
|
|
-// });
|
|
|
+ List<Contract> contractList = contractMap.get(record.getId());
|
|
|
+ if (CollectionUtil.isNotEmpty(contractList)){
|
|
|
+ record.setQualityMoney(contractList.get(0).getQualityMoney());
|
|
|
+ record.setQualityMoneyStatus(contractList.get(0).getQualityMoneyStatus());
|
|
|
+ }
|
|
|
+ List<ContractApply> contractApplyList = contractApplyMap.get(record.getId());
|
|
|
+ if (CollectionUtil.isNotEmpty(contractApplyList)){
|
|
|
+ BigDecimal contractApplyAmount = new BigDecimal("0");
|
|
|
+ BigDecimal applyPayAmount = new BigDecimal("0");
|
|
|
+ for (ContractApply contractApply : contractApplyList) {
|
|
|
+ if (contractApply.getContractAmount()==null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ contractApplyAmount = contractApplyAmount.add(contractApply.getContractAmount());
|
|
|
+ applyPayAmount = applyPayAmount.add(contractApply.getPayAmount());
|
|
|
+ }
|
|
|
+ record.setContractApplyAmount(contractApplyAmount);
|
|
|
+ record.setApplyPayAmount(applyPayAmount);
|
|
|
+ }
|
|
|
+ });
|
|
|
return result;
|
|
|
|
|
|
}
|
|
@@ -265,6 +294,20 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
parent.setReceivableAmount(receivableAmount);
|
|
|
parent.setReturnAmount(returnAmount);
|
|
|
parent.setContractBalance(contractBalance);
|
|
|
+ List<ContractApply> applyList = contractApplyService.getListByProjectId(id);
|
|
|
+ BigDecimal contractApplyAmount = new BigDecimal("0");
|
|
|
+ BigDecimal applyPayAmount = new BigDecimal("0");
|
|
|
+ for (ContractApply contractApply : applyList) {
|
|
|
+ if (contractApply.getContractAmount()==null){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ contractApplyAmount = contractApplyAmount.add(contractApply.getContractAmount());
|
|
|
+ applyPayAmount = applyPayAmount.add(contractApply.getPayAmount());
|
|
|
+ }
|
|
|
+ BigDecimal applyUnPayAmount = contractApplyAmount.subtract(applyPayAmount);
|
|
|
+ parent.setContractApplyAmount(contractApplyAmount);
|
|
|
+ parent.setApplyPayAmount(applyPayAmount);
|
|
|
+ parent.setApplyUnPayAmount(applyUnPayAmount);
|
|
|
projects.remove(0);
|
|
|
parent.setChildren(projects);
|
|
|
return parent;
|