Browse Source

利润预算表头部统计及数据列错误 利润结算表报错 到账认领搜索错误 处理

yzc 1 year ago
parent
commit
8284105f89

+ 2 - 2
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRunningWaterServiceImpl.java

@@ -33,7 +33,6 @@ import com.fjhx.tenant.service.dict.DictTenantDataService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -99,7 +98,8 @@ public class AccountRunningWaterServiceImpl extends ServiceImpl<AccountRunningWa
         if (StringUtils.isNotEmpty(dto.getKeyword())) {
             wrapper.and(wrapper1 -> wrapper1.like("arw.remarks", dto.getKeyword())
                     .or().like("arw.name", dto.getKeyword())
-                    .or().in("arw.id",dto.getAccountWaterIdList()));
+                    .or().in(ObjectUtil.isNotEmpty(dto.getAccountWaterIdList()), "arw.id", dto.getAccountWaterIdList())
+            );
         }
         if (ObjectUtil.isNotEmpty(dto.getDataType()) && dto.getDataType() == 1) {// 到账认领数据
             wrapper.eq("arw.received", 10);

+ 42 - 2
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -325,6 +325,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
         //过滤合同类型
         wrapper.eq("t1.contract_type", dto.getContractType());
+
+        //时间范围过滤
+        wrapper.ge(Contract::getCreateTime, dto.getBeginTime());
+        wrapper.le(Contract::getCreateTime, dto.getEndTime());
     }
 
     /**
@@ -473,6 +477,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     private void statisticCommon(List<ContractBudgetVo> list) {
         //取出EHSD采购所有金额和货币-通过合同ID分组
         List<Long> contractIds = list.stream().map(ContractBudgetVo::getContractId).collect(Collectors.toList());
+
+        //获取合同对应的采购信息
+        Map<Long, List<EhsdPurchase>> ehsdPurchaseMap = ehsdPurchaseService.mapKGroup(EhsdPurchase::getDataResourceId, q -> q
+                .in(EhsdPurchase::getStatus, 10, 30)
+                .in(EhsdPurchase::getDataResourceId, contractIds)
+        );
+
         List<EhsdPurchaseProductVo> ehsdAmountList = ehsdPurchaseProductService.getPurchaseByContractId(contractIds);
         Map<Long, List<EhsdPurchaseProductVo>> ehsdAmountMap = ehsdAmountList.stream().collect(Collectors.groupingBy(EhsdPurchaseProductVo::getDataResourceId));
         for (ContractBudgetVo v : list) {
@@ -494,7 +505,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                         BigDecimal money = e.getAmount();
                         //总金额
                         BigDecimal amount = rate.multiply(money);
-                        purchaseAmount = purchaseAmount.add(amount);
+//                        purchaseAmount = purchaseAmount.add(amount);
                         if (ObjectUtil.isNotEmpty(e.getProductCategoryIds())) {
                             if (e.getProductCategoryIds().contains("1685534140512616449") || e.getProductCategoryId() == 1685534140512616449L) {//包材
                                 peritectoidAmount = peritectoidAmount.add(amount);
@@ -504,6 +515,19 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                             }
                         }
                     }
+
+                    //赋值采购金额
+                    List<EhsdPurchase> contractPurchasesList = ehsdPurchaseMap.get(v.getContractId());
+                    for (EhsdPurchase ehsdPurchase : contractPurchasesList) {
+                        //获取汇率
+                        BigDecimal rate = map.getOrDefault(ehsdPurchase.getCurrency(), BigDecimal.ONE);
+                        // 获取认领金额
+                        BigDecimal money = ehsdPurchase.getAmount();
+                        //总金额
+                        BigDecimal amount = rate.multiply(money);
+                        purchaseAmount = purchaseAmount.add(amount);
+                    }
+
                     v.setEhsdSumAmount(purchaseAmount);
                     v.setPeritectoidAmount(peritectoidAmount);
                     v.setAccessoriesAmount(accessoriesAmount);
@@ -536,7 +560,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                         BigDecimal money = e.getAmount();
                         //总金额
                         BigDecimal amount = rate.multiply(money);
-                        purchaseAmount = purchaseAmount.add(amount);
+//                        purchaseAmount = purchaseAmount.add(amount);
                         if (ObjectUtil.isNotEmpty(e.getProductCategoryIds())) {
                             if (e.getProductCategoryIds().contains("1685534140512616449") || e.getProductCategoryId() == 1685534140512616449L) {//包材
                                 peritectoidAmount = peritectoidAmount.add(amount);
@@ -546,6 +570,19 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                             }
                         }
                     }
+
+                    //赋值采购金额
+                    List<EhsdPurchase> contractPurchasesList = ehsdPurchaseMap.get(v.getContractId());
+                    for (EhsdPurchase ehsdPurchase : contractPurchasesList) {
+                        //获取汇率
+                        BigDecimal rate = ehsdPurchase.getRate();
+                        // 获取认领金额
+                        BigDecimal money = ehsdPurchase.getAmount();
+                        //总金额
+                        BigDecimal amount = rate.multiply(money);
+                        purchaseAmount = purchaseAmount.add(amount);
+                    }
+
                     v.setEhsdSumAmount(purchaseAmount);
                     v.setPeritectoidAmount(peritectoidAmount);
                     v.setAccessoriesAmount(accessoriesAmount);
@@ -1772,6 +1809,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      */
     private BigDecimal getSumClaimMoney(List<ClaimContract> claimContractList, Map<String, BigDecimal> assignCurrencyRatesMap) {
         BigDecimal sumClaimMoney = BigDecimal.ZERO;
+        if (ObjectUtil.isEmpty(claimContractList)) {
+            return BigDecimal.ZERO;
+        }
         for (ClaimContract c : claimContractList) {
             BigDecimal rate = c.getRate();
             if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {