|
@@ -1,26 +1,36 @@
|
|
|
package com.jy.business.contract.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.jy.business.capital.dao.CapitalTransactionsDao;
|
|
|
+import com.jy.business.capital.model.entity.CapitalTransactions;
|
|
|
+import com.jy.business.capital.model.vo.CapitalTransactionsVo;
|
|
|
import com.jy.business.contract.dao.ContractDetailDao;
|
|
|
import com.jy.business.contract.dao.ContractInfoDao;
|
|
|
import com.jy.business.contract.model.dto.ContractInfoDto;
|
|
|
import com.jy.business.contract.model.dto.ContractInfoSelectDto;
|
|
|
import com.jy.business.contract.model.entity.ContractDetail;
|
|
|
import com.jy.business.contract.model.vo.ContractInfoVo;
|
|
|
+import com.jy.business.contract.model.vo.ContractStatisticsVo;
|
|
|
import com.jy.business.contract.service.ContractInfoService;
|
|
|
+import com.jy.framework.model.base.BaseIdPo;
|
|
|
import com.jy.framework.utils.AssertUtil;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
* 合同 服务实现类
|
|
|
* </p>
|
|
|
*
|
|
|
- * @author
|
|
|
+ * @author
|
|
|
* @since 2025-06-10
|
|
|
*/
|
|
|
@Service
|
|
@@ -32,6 +42,33 @@ public class ContractInfoServiceImpl implements ContractInfoService {
|
|
|
@Resource
|
|
|
private ContractDetailDao contractDetailDao;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private CapitalTransactionsDao capitalTransactionsDao;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<ContractStatisticsVo> getStatistics() {
|
|
|
+ List<ContractStatisticsVo> list = contractInfoDao.getStatistics();
|
|
|
+
|
|
|
+ int contractQuantity = 0;
|
|
|
+ BigDecimal contractAmount = BigDecimal.ZERO;
|
|
|
+ BigDecimal fundReceivedAmount = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ ContractStatisticsVo contractStatisticsVo = new ContractStatisticsVo();
|
|
|
+ for (ContractStatisticsVo item : list) {
|
|
|
+ contractQuantity = contractQuantity + item.getContractQuantity();
|
|
|
+ contractAmount = contractAmount.add(item.getContractAmount());
|
|
|
+ fundReceivedAmount = fundReceivedAmount.add(item.getFundReceivedAmount());
|
|
|
+ }
|
|
|
+
|
|
|
+ contractStatisticsVo.setContractQuantity(contractQuantity);
|
|
|
+ contractStatisticsVo.setContractAmount(contractAmount);
|
|
|
+ contractStatisticsVo.setFundReceivedAmount(fundReceivedAmount);
|
|
|
+ contractStatisticsVo.setSellerCompany("全部");
|
|
|
+
|
|
|
+ list.add(0, contractStatisticsVo);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<ContractInfoVo> getList(ContractInfoSelectDto dto) {
|
|
|
return contractInfoDao.getList(dto);
|
|
@@ -39,7 +76,37 @@ public class ContractInfoServiceImpl implements ContractInfoService {
|
|
|
|
|
|
@Override
|
|
|
public Page<ContractInfoVo> getPage(ContractInfoSelectDto dto) {
|
|
|
- return contractInfoDao.getPage(dto);
|
|
|
+ Page<ContractInfoVo> page = contractInfoDao.getPage(dto);
|
|
|
+ List<ContractInfoVo> records = page.getRecords();
|
|
|
+
|
|
|
+ if (records.isEmpty()) {
|
|
|
+ return page;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 合同id
|
|
|
+ List<Long> idList = records.stream().map(BaseIdPo::getId).toList();
|
|
|
+ Map<Long, List<CapitalTransactionsVo>> map = capitalTransactionsDao.getByContract(idList)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.groupingBy(CapitalTransactions::getContractId));
|
|
|
+
|
|
|
+ for (ContractInfoVo record : records) {
|
|
|
+ List<CapitalTransactionsVo> capitalTransactionsList = map.get(record.getId());
|
|
|
+
|
|
|
+ if (ObjectUtil.isEmpty(capitalTransactionsList)) {
|
|
|
+ record.setReceivedAmount(BigDecimal.ZERO);
|
|
|
+ record.setCapitalTransactionsList(Collections.emptyList());
|
|
|
+ } else {
|
|
|
+ record.setReceivedAmount(
|
|
|
+ capitalTransactionsList.stream()
|
|
|
+ .map(CapitalTransactions::getAmount)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add)
|
|
|
+ );
|
|
|
+
|
|
|
+ record.setCapitalTransactionsList(capitalTransactionsList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return page;
|
|
|
}
|
|
|
|
|
|
@Override
|