瀏覽代碼

Merge branch 'master' into test

# Conflicts:
#	hx-purchase/src/main/java/com/fjhx/purchase/controller/purchase/PurchaseController.java
yzc 1 年之前
父節點
當前提交
660734ea3e

+ 2 - 0
hx-common/src/main/java/com/fjhx/common/service/coding/impl/CodingRuleServiceImpl.java

@@ -241,9 +241,11 @@ public class CodingRuleServiceImpl extends ServiceImpl<CodingRuleMapper, CodingR
     }
 
     private String getCountryCode(Long countryId) {
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
         CustomizeArea customizeArea = customizeAreaService.getOne(q -> q
                 .eq(BaseIdPo::getId, countryId)
                 .eq(CustomizeArea::getLevelCode, 1));
+        DynamicDataSourceContextHolder.poll();
 
         if (customizeArea == null) {
             throw new ServiceException("国家为空");

+ 1 - 1
hx-sale/src/main/java/com/fjhx/sale/service/claim/impl/ClaimContractServiceImpl.java

@@ -64,7 +64,7 @@ public class ClaimContractServiceImpl extends ServiceImpl<ClaimContractMapper, C
     @Override
     public List<ClaimContract> getListByContractIds(List<Long> contractIds) {
         IWrapper<ClaimContract> wrapper = getWrapper();
-        wrapper.eq("t1.contract_id", contractIds);
+        wrapper.in("t1.contract_id", contractIds);
         return baseMapper.getListByContractIds(wrapper);
     }
 

+ 89 - 51
hx-sale/src/main/java/com/fjhx/sale/service/statement/impl/SaleStatementServiceImpl.java

@@ -13,6 +13,7 @@ import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.common.entity.currency.po.CurrencyRate;
 import com.fjhx.common.service.currency.CurrencyRateService;
 import com.fjhx.customer.service.customer.CustomerService;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
@@ -94,11 +95,11 @@ public class SaleStatementServiceImpl implements SaleStatementService {
         // 获取税率明细
         Map<Long, Map<String, BigDecimal>> detailsRateMap = getDetailsRateMap(records, defaultRateMap);
 
-        // 赋值合同到账
+        //赋值合同到账金额、退税金额、采购金额
         setContractArrivalAndRefundMoney(list);
 
-        // 赋值采购合同金额和支付货款
-        setPurchaseAmountAndPayForGoods(list, detailsRateMap);
+//        // 赋值采购合同金额和支付货款
+//        setPurchaseAmountAndPayForGoods(list, detailsRateMap);
 
         // 计算
         calculation(list);
@@ -185,7 +186,7 @@ public class SaleStatementServiceImpl implements SaleStatementService {
     }
 
     /**
-     * 赋值合同到账金额
+     * 赋值合同到账金额、退税金额、采购金额
      */
     private void setContractArrivalAndRefundMoney(List<ProfitSettlementVo> list) {
 
@@ -255,6 +256,10 @@ public class SaleStatementServiceImpl implements SaleStatementService {
         List<TaxRefundDetails> refundDetails = taxRefundDetailsService.getSumMoneyByContractIds(contractIdList);
         Map<Long,List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
 
+        //通过合同IDS查询出采购数据
+        List<Purchase> purchaseList = purchaseService.list(q -> q.in(Purchase::getDataResourceId, contractIdList).ge(Purchase::getPurchaseStatus, PurchaseStatusEnum.PASS.getKey()).lt(Purchase::getPurchaseStatus, PurchaseStatusEnum.CENCELLATION.getKey()));
+        Map<Long,List<Purchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(Purchase::getDataResourceId));
+
         for(ProfitSettlementVo p:list){
             if(StringUtil.isNotEmpty(p.getCurrencyRateJson())){//取设置的汇率
                 List<CurrencyRate> assignCurrencyRatesList = JSON.parseArray(p.getCurrencyRateJson(), CurrencyRate.class);
@@ -289,6 +294,21 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                     }).reduce(BigDecimal.ZERO, BigDecimal::add);
                     p.setTaxReturnMoney(taxReturnMoney);
                 }
+                /**
+                 * 处理采购金额
+                 */
+                List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(),null);
+                if(CollectionUtils.isNotEmpty(pList)){
+                    BigDecimal purchaseAmount = pList.stream().map(purchase -> {
+                        //获取汇率
+                        BigDecimal rate = assignCurrencyRatesMap.getOrDefault(purchase.getCurrency(),BigDecimal.ONE);
+                        // 获取认领金额
+                        BigDecimal money = purchase.getAmount();
+                        // 返回兑人民币后金额
+                        return rate.multiply(money);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    p.setPurchaseAmount(purchaseAmount);
+                }
             }else{//取数据汇率
                 /**
                  * 处理到账金额
@@ -324,6 +344,21 @@ public class SaleStatementServiceImpl implements SaleStatementService {
                     }).reduce(BigDecimal.ZERO, BigDecimal::add);
                     p.setTaxReturnMoney(taxReturnMoney);
                 }
+                /**
+                 * 处理采购金额
+                 */
+                List<Purchase> pList = purchaseMap.getOrDefault(p.getContractId(),null);
+                if(CollectionUtils.isNotEmpty(pList)){
+                    BigDecimal purchaseAmount = pList.stream().map(purchase -> {
+                        //获取汇率
+                        BigDecimal rate = purchase.getRate()==null?BigDecimal.ZERO:purchase.getRate();
+                        // 获取认领金额
+                        BigDecimal money = purchase.getAmount()==null?BigDecimal.ZERO:purchase.getAmount();
+                        // 返回兑人民币后金额
+                        return rate.multiply(money);
+                    }).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    p.setPurchaseAmount(purchaseAmount);
+                }
             }
         }
 
@@ -334,57 +369,60 @@ public class SaleStatementServiceImpl implements SaleStatementService {
      */
     private void setPurchaseAmountAndPayForGoods(
             List<ProfitSettlementVo> list, Map<Long, Map<String, BigDecimal>> detailsRateMap) {
+//
+//        // 合同id
+//        List<Long> contractIdList = list.stream().map(ProfitSettlementVo::getContractId).collect(Collectors.toList());
+//
+//        List<Purchase> purchaseList = purchaseService.list(q -> q.in(Purchase::getDataResourceId, contractIdList));
+//
+//        Map<Long,List<Purchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(Purchase::getDataResourceId));
+//        if (purchaseList.size() == 0) {
+//            purchaseList.forEach(item -> item.setAmount(BigDecimal.ZERO));
+//            return;
+//        }
 
-        // 合同id
-        List<Long> contractIdList = list.stream().map(ProfitSettlementVo::getContractId).collect(Collectors.toList());
-
-        List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(q -> q.in(PurchaseDetail::getDataResourceId, contractIdList));
-        if (purchaseDetailList.size() == 0) {
-            list.forEach(item -> item.setPurchaseAmount(BigDecimal.ZERO));
-            return;
-        }
-
-        List<Long> purchaseIdList = purchaseDetailList.stream().map(PurchaseDetail::getPurchaseId).collect(Collectors.toList());
-        List<Purchase> purchaseList = purchaseService.listByIds(purchaseIdList);
-
-        // 采购id 币种 map
-        Map<Long, String> purchaseIdCurrencyMap = purchaseList.stream()
-                .collect(Collectors.toMap(BaseIdPo::getId, Purchase::getCurrency));
-
-        // 合同id 申购单列表 map
-        Map<Long, List<PurchaseDetail>> contractIdPurchaseDetailListMap = purchaseDetailList.stream()
-                .collect(Collectors.groupingBy(PurchaseDetail::getDataResourceId));
-
-        for (ProfitSettlementVo profitSettlementVo : list) {
-
-            // 合同id
-            Long contractId = profitSettlementVo.getContractId();
-
-            // 申购单
-            List<PurchaseDetail> itemPurchaseDetailList = contractIdPurchaseDetailListMap.getOrDefault(contractId, new ArrayList<>());
-
-            // 汇率币种map
-            Map<String, BigDecimal> map = detailsRateMap.getOrDefault(contractId, new HashMap<>());
-
-            BigDecimal purchaseAmount = itemPurchaseDetailList.stream().map(purchaseDetail -> {
-
-                // 根据申购单id获取币种
-                String currency = purchaseIdCurrencyMap.get(purchaseDetail.getPurchaseId());
-
-                // 根据币种获取汇率
-                BigDecimal rate = map.getOrDefault(currency, BigDecimal.ONE);
-
-                // 获取申购金额
-                BigDecimal money = purchaseDetail.getAmount();
-
-                // 返回兑人民币后金额
-                return rate.multiply(money);
+//        List<Long> purchaseIdList = purchaseDetailList.stream().map(PurchaseDetail::getPurchaseId).collect(Collectors.toList());
+//        List<Purchase> purchaseList = purchaseService.listByIds(purchaseIdList);
 
-            }).reduce(BigDecimal.ZERO, BigDecimal::add);
+//        // 采购id 币种 map
+//        Map<Long, String> purchaseIdCurrencyMap = purchaseList.stream()
+//                .collect(Collectors.toMap(BaseIdPo::getId, Purchase::getCurrency));
 
-            profitSettlementVo.setPurchaseAmount(purchaseAmount);
+//        // 合同id 申购单列表 map
+//        Map<Long, List<PurchaseDetail>> contractIdPurchaseDetailListMap = purchaseDetailList.stream()
+//                .collect(Collectors.groupingBy(PurchaseDetail::getDataResourceId));
 
-        }
+//        for (ProfitSettlementVo profitSettlementVo : list) {
+//
+//            // 合同id
+//            Long contractId = profitSettlementVo.getContractId();
+//            List<Purchase> pList = purchaseMap.getOrDefault(contractId,null);
+//
+////            // 申购单
+////            List<PurchaseDetail> itemPurchaseDetailList = contractIdPurchaseDetailListMap.getOrDefault(contractId, new ArrayList<>());
+//
+//            // 汇率币种map
+//            Map<String, BigDecimal> map = detailsRateMap.getOrDefault(contractId, new HashMap<>());
+//
+//            BigDecimal purchaseAmount = itemPurchaseDetailList.stream().map(purchaseDetail -> {
+//
+//                // 根据申购单id获取币种
+//                String currency = purchaseIdCurrencyMap.get(purchaseDetail.getPurchaseId());
+//
+//                // 根据币种获取汇率
+//                BigDecimal rate = map.getOrDefault(currency, BigDecimal.ONE);
+//
+//                // 获取申购金额
+//                BigDecimal money = purchaseDetail.getAmount();
+//
+//                // 返回兑人民币后金额
+//                return rate.multiply(money);
+//
+//            }).reduce(BigDecimal.ZERO, BigDecimal::add);
+//
+//            profitSettlementVo.setPurchaseAmount(purchaseAmount);
+//
+//        }
 
     }