Parcourir la source

销售合同待采购数量问题处理

yzc il y a 1 an
Parent
commit
75326729af

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/purchase/EhsdPurchaseProductMapper.java

@@ -42,4 +42,6 @@ public interface EhsdPurchaseProductMapper extends BaseMapper<EhsdPurchaseProduc
     List<EhsdPurchaseProductVo> getListByContractId(Long contractId);
 
     boolean updatePurchaseId(@Param("id")Long id ,@Param("newId")Long newId,@Param("userId")Long userId);
+
+    List<EhsdPurchaseProduct>getPurchaseProductByContractProductIds(List<Long> dataResourceIds);
 }

+ 43 - 0
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductServiceImpl.java

@@ -23,9 +23,11 @@ import com.fjhx.sale.entity.contract.dto.ContractProductSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 import com.fjhx.sale.mapper.contract.ContractProductMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
+import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
@@ -79,6 +81,8 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     private ClaimContractService claimContractService;
     @Autowired
     private ISysUserService userService;
+    @Autowired
+    private EhsdPurchaseProductService ehsdPurchaseProductService;
 
     /**
      * 分页
@@ -226,6 +230,26 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             productClassifyService.attributeAssign(list, ContractProductVo::getProductCategoryId, (item, productClassify) -> {
                 item.setProductCategory(productClassify.getName());
             });
+
+            //重新赋值待采购数量
+            List<Long> contractProductIds = list.stream().map(ContractProduct::getId).collect(Collectors.toList());
+            List<EhsdPurchaseProduct> purchaseProducts = ehsdPurchaseProductService.getPurchaseProductByContractProductIds(contractProductIds);
+            if (ObjectUtil.isNotEmpty(purchaseProducts)) {
+                Map<Long, List<EhsdPurchaseProduct>> collect = purchaseProducts.stream()
+                        .filter(item->ObjectUtil.isNotEmpty(item.getDataResourceId()))
+                        .collect(Collectors.groupingBy(EhsdPurchaseProduct::getDataResourceId));
+                for (ContractProduct contractProduct : list) {
+                    List<EhsdPurchaseProduct> ehsdPurchaseProductList = collect.get(contractProduct.getId());
+                    if (ObjectUtil.isEmpty(ehsdPurchaseProductList)) {
+                        contractProduct.setExpendQuantity(BigDecimal.ZERO);
+                        continue;
+                    }
+                    BigDecimal purchaseQuantity = ehsdPurchaseProductList.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal subtract = contractProduct.getQuantity().subtract(purchaseQuantity);
+                    contractProduct.setExpendQuantity(subtract);
+                }
+            }
+
         }
         return page;
     }
@@ -328,6 +352,25 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             });
             //赋值业务员名称
             UserUtil.assignmentNickName(list, ContractProductVo::getCreateUser, ContractProductVo::setUserName);
+
+            //重新赋值待采购数量
+            List<Long> contractProductIds = list.stream().map(ContractProduct::getId).collect(Collectors.toList());
+            List<EhsdPurchaseProduct> purchaseProducts = ehsdPurchaseProductService.getPurchaseProductByContractProductIds(contractProductIds);
+            if (ObjectUtil.isNotEmpty(purchaseProducts)) {
+                Map<Long, List<EhsdPurchaseProduct>> collect = purchaseProducts.stream()
+                        .filter(item->ObjectUtil.isNotEmpty(item.getDataResourceId()))
+                        .collect(Collectors.groupingBy(EhsdPurchaseProduct::getDataResourceId));
+                for (ContractProduct contractProduct : list) {
+                    List<EhsdPurchaseProduct> ehsdPurchaseProductList = collect.get(contractProduct.getId());
+                    if (ObjectUtil.isEmpty(ehsdPurchaseProductList)) {
+                        contractProduct.setExpendQuantity(BigDecimal.ZERO);
+                        continue;
+                    }
+                    BigDecimal purchaseQuantity = ehsdPurchaseProductList.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    BigDecimal subtract = contractProduct.getQuantity().subtract(purchaseQuantity);
+                    contractProduct.setExpendQuantity(subtract);
+                }
+            }
         }
         return page;
     }

+ 66 - 47
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -18,7 +18,6 @@ import com.fjhx.account.entity.account.vo.AccountRequestFundsDetailVo;
 import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.account.entity.tax.po.TaxRefundDetails;
 import com.fjhx.account.service.account.AccountManagementService;
-import com.fjhx.account.service.account.AccountPaymentService;
 import com.fjhx.account.service.account.AccountRequestFundsDetailService;
 import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.area.service.SetCustomizeAreaId;
@@ -51,7 +50,6 @@ import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.quality.po.QualityDetail;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.pay.PayDetailService;
-import com.fjhx.purchase.service.pay.PayService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.quality.QualityDetailService;
@@ -68,9 +66,9 @@ import com.fjhx.sale.entity.contract.po.ContractProject;
 import com.fjhx.sale.entity.contract.po.ContractShipment;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
-import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -242,7 +240,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
         IWrapper<Contract> wrapper = getWrapper();
         wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
-        wrapper.ne("t1", Contract::getIsShow,1);
+        wrapper.ne("t1", Contract::getIsShow, 1);
         return pageCommon(dto, wrapper);
     }
 
@@ -409,7 +407,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                             (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission().multiply(new BigDecimal(map.getOrDefault(v.getCommissionCurrency(), BigDecimal.ONE).toString()))).add
                             (v.getOther() == null ? BigDecimal.ZERO : v.getOther().multiply(new BigDecimal(map.getOrDefault(v.getOtherCurrency(), BigDecimal.ONE).toString()))).add
                             (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
-                            );
+                    );
                     //处理退税金额
                     handleRefundTax(v);
                     v.setRmbContractAmount(v.getAmount().multiply(new BigDecimal(map.getOrDefault(v.getCurrency(), BigDecimal.ONE).toString())));
@@ -432,14 +430,14 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                     v.setExpenditureAmount(
                             v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().add
-                            (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee()).add
-                            (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee()).add
-                            (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee()).add
-                            (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack()).add
-                            (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission()).add
-                            (v.getOther() == null ? BigDecimal.ZERO : v.getOther()).add
-                            (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
-                            );
+                                    (v.getCustomsFee() == null ? BigDecimal.ZERO : v.getCustomsFee()).add
+                                    (v.getAgencyFee() == null ? BigDecimal.ZERO : v.getAgencyFee()).add
+                                    (v.getPortMixedFee() == null ? BigDecimal.ZERO : v.getPortMixedFee()).add
+                                    (v.getInspectionRedPack() == null ? BigDecimal.ZERO : v.getInspectionRedPack()).add
+                                    (v.getCommission() == null ? BigDecimal.ZERO : v.getCommission()).add
+                                    (v.getOther() == null ? BigDecimal.ZERO : v.getOther()).add
+                                    (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
+                    );
                     //处理退税金额
                     handleRefundTax(v);
                     v.setRmbContractAmount(v.getAmount().multiply(rate));
@@ -484,13 +482,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         List<Long> contractIds = list.stream().map(ContractBudgetVo::getContractId).collect(Collectors.toList());
         //通过合同ID查询到退税数据
         List<TaxRefundDetails> refundDetails = taxRefundDetailsService.getSumMoneyByContractIds(contractIds);
-        Map<Long,List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
+        Map<Long, List<TaxRefundDetails>> refundDetailsMap = refundDetails.stream().collect(Collectors.groupingBy(TaxRefundDetails::getContractId));
         //通过合同ID查询到到账认领数据
-        List<ClaimContract> claimContractList = claimContractService.list(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getContractId,contractIds));
-        Map<Long,List<ClaimContract>> claimMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
+        List<ClaimContract> claimContractList = claimContractService.list(Wrappers.<ClaimContract>query().lambda().in(ClaimContract::getContractId, contractIds));
+        Map<Long, List<ClaimContract>> claimMap = claimContractList.stream().collect(Collectors.groupingBy(ClaimContract::getContractId));
         //通过合同ID查询到采购合同
-        List<EhsdPurchase> purchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda().in(EhsdPurchase::getDataResourceId,contractIds));
-        Map<Long,List<EhsdPurchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(EhsdPurchase::getDataResourceId));
+        List<EhsdPurchase> purchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda().in(EhsdPurchase::getDataResourceId, contractIds));
+        Map<Long, List<EhsdPurchase>> purchaseMap = purchaseList.stream().collect(Collectors.groupingBy(EhsdPurchase::getDataResourceId));
         for (ContractBudgetVo v : list) {
             v.setOtherIncomeAmount(BigDecimal.ZERO);//暂时先设置其他收入为0
             if (StringUtils.isNotEmpty(v.getCurrencyRateJson())) {//如果此条合同有汇率了
@@ -503,11 +501,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                  * 处理退税金额
                  */
                 v.setRefundableAmount(BigDecimal.ZERO);
-                List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(),null);
-                if(CollectionUtils.isNotEmpty(rList)){
+                List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(), null);
+                if (CollectionUtils.isNotEmpty(rList)) {
                     BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
                         //获取汇率
-                        BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(),BigDecimal.ONE);
+                        BigDecimal rate = assignCurrencyRatesMap.getOrDefault(taxRefundDetails.getCurrency(), BigDecimal.ONE);
                         // 获取认领金额
                         BigDecimal money = taxRefundDetails.getAmount();
                         // 返回兑人民币后金额
@@ -516,9 +514,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     v.setRefundableAmount(taxReturnMoney);
                 }
                 //处理到账总金额
-                v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(),null),assignCurrencyRatesMap));
+                v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(), null), assignCurrencyRatesMap));
                 //采购合同总金额
-                getSumPurchaseContractMoney(v,purchaseMap.getOrDefault(v.getContractId(),null),assignCurrencyRatesMap);
+                getSumPurchaseContractMoney(v, purchaseMap.getOrDefault(v.getContractId(), null), assignCurrencyRatesMap);
                 //支出费用
                 this.getGroupTypeMoney(v, assignCurrencyRatesMap);
             } else {
@@ -527,8 +525,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                  * 处理退税金额
                  */
                 v.setRefundableAmount(BigDecimal.ZERO);
-                List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(),null);
-                if(CollectionUtils.isNotEmpty(rList)){
+                List<TaxRefundDetails> rList = refundDetailsMap.getOrDefault(v.getContractId(), null);
+                if (CollectionUtils.isNotEmpty(rList)) {
                     BigDecimal taxReturnMoney = rList.stream().map(taxRefundDetails -> {
                         //获取汇率
                         BigDecimal rate = taxRefundDetails.getRate();
@@ -540,9 +538,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     v.setRefundableAmount(taxReturnMoney);
                 }
                 //处理到账总金额
-                v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(),null),null));
+                v.setSumClaimMoney(getSumClaimMoney(claimMap.getOrDefault(v.getContractId(), null), null));
                 //采购合同总金额
-                getSumPurchaseContractMoney(v,purchaseMap.getOrDefault(v.getContractId(),null),null);
+                getSumPurchaseContractMoney(v, purchaseMap.getOrDefault(v.getContractId(), null), null);
                 //支出费用
                 this.getGroupTypeMoney(v, null);
             }
@@ -564,9 +562,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             //计算毛利 收入-支出
             v.setGross(v.getIncomeAmount().subtract(v.getExpenditureAmount()));
             //计算毛利率 毛利/收入
-            if(v.getGross().compareTo(BigDecimal.ZERO)==0){
+            if (v.getGross().compareTo(BigDecimal.ZERO) == 0) {
                 v.setGrossRate(BigDecimal.ZERO);
-            }else{
+            } else {
                 v.setGrossRate(v.getGross().divide(v.getIncomeAmount(), RoundingMode.CEILING).multiply(new BigDecimal("100")));
             }
         }
@@ -607,6 +605,24 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             item.setProductCode(product.getCode());
             item.setProductUnit(product.getUnit());
         });
+        //重新赋值待采购数量
+        List<Long> contractProductIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
+        List<EhsdPurchaseProduct> purchaseProducts = ehsdPurchaseProductService.getPurchaseProductByContractProductIds(contractProductIds);
+        if (ObjectUtil.isNotEmpty(purchaseProducts)) {
+            Map<Long, List<EhsdPurchaseProduct>> collect = purchaseProducts.stream()
+                    .filter(item->ObjectUtil.isNotEmpty(item.getDataResourceId()))
+                    .collect(Collectors.groupingBy(EhsdPurchaseProduct::getDataResourceId));
+            for (ContractProduct contractProduct : contractProductList) {
+                List<EhsdPurchaseProduct> ehsdPurchaseProductList = collect.get(contractProduct.getId());
+                if (ObjectUtil.isEmpty(ehsdPurchaseProductList)) {
+                    contractProduct.setExpendQuantity(BigDecimal.ZERO);
+                    continue;
+                }
+                BigDecimal purchaseQuantity = ehsdPurchaseProductList.stream().map(EhsdPurchaseProduct::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal subtract = contractProduct.getQuantity().subtract(purchaseQuantity);
+                contractProduct.setExpendQuantity(subtract);
+            }
+        }
         result.setContractProductList(contractProductList);
 
         List<ContractProject> contractProjectList = contractProjectService.list(q -> q.eq(ContractProject::getContractId, id));
@@ -1531,40 +1547,42 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      * @param assignCurrencyRatesMap 汇率JSON
      * @return
      */
-    private BigDecimal getSumClaimMoney(List<ClaimContract> claimContractList,Map<String, BigDecimal> assignCurrencyRatesMap) {
+    private BigDecimal getSumClaimMoney(List<ClaimContract> claimContractList, Map<String, BigDecimal> assignCurrencyRatesMap) {
         BigDecimal sumClaimMoney = BigDecimal.ZERO;
-        if(CollectionUtils.isEmpty(claimContractList)){
+        if (CollectionUtils.isEmpty(claimContractList)) {
             return BigDecimal.ZERO;
         }
-        if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
+        if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
             for (ClaimContract c : claimContractList) {
-                sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(),BigDecimal.ONE)));
+                sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(), BigDecimal.ONE)));
             }
-        }else{
+        } else {
             for (ClaimContract c : claimContractList) {
                 sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(c.getRate()));
             }
         }
         return sumClaimMoney;
     }
+
     /**
      * 统采购合同总金额
+     *
      * @param v
      * @param purchaseList
      * @param assignCurrencyRatesMap 汇率JSON
      * @return
      */
-    private void getSumPurchaseContractMoney(ContractBudgetVo v,List<EhsdPurchase> purchaseList,Map<String, BigDecimal> assignCurrencyRatesMap) {
+    private void getSumPurchaseContractMoney(ContractBudgetVo v, List<EhsdPurchase> purchaseList, Map<String, BigDecimal> assignCurrencyRatesMap) {
         BigDecimal purchaseSumMoney = BigDecimal.ZERO;
-        if(CollectionUtils.isEmpty(purchaseList)){
+        if (CollectionUtils.isEmpty(purchaseList)) {
             v.setSumPurchaseContractMoney(BigDecimal.ZERO);
             v.setAccountPaid(BigDecimal.ZERO);
             return;
         }
         List<Long> purchaseIds = purchaseList.stream().map(EhsdPurchase::getId).collect(Collectors.toList());
-        if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
+        if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
             for (EhsdPurchase c : purchaseList) {
-                purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(),BigDecimal.ONE)));
+                purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(assignCurrencyRatesMap.getOrDefault(c.getCurrency(), BigDecimal.ONE)));
             }
             /**
              * 处理支付款金额
@@ -1573,7 +1591,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             if (CollectionUtils.isNotEmpty(payList)) {
                 BigDecimal payAmount = payList.stream().map(pay -> {
                     //获取汇率
-                    BigDecimal rate = assignCurrencyRatesMap.getOrDefault(pay.getCurrency(),BigDecimal.ONE);
+                    BigDecimal rate = assignCurrencyRatesMap.getOrDefault(pay.getCurrency(), BigDecimal.ONE);
                     // 获取认领金额
                     BigDecimal money = pay.getAmount();
                     // 返回兑人民币后金额
@@ -1581,7 +1599,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 }).reduce(BigDecimal.ZERO, BigDecimal::add);
                 v.setAccountPaid(payAmount);
             }
-        }else{
+        } else {
             for (EhsdPurchase c : purchaseList) {
                 purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(c.getRate()));
             }
@@ -1593,7 +1611,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             if (CollectionUtils.isNotEmpty(payList)) {
                 BigDecimal payAmount = payList.stream().map(pay -> {
                     //获取汇率
-                    BigDecimal rate = pay.getRate()==null?BigDecimal.ONE:pay.getRate();
+                    BigDecimal rate = pay.getRate() == null ? BigDecimal.ONE : pay.getRate();
                     // 获取认领金额
                     BigDecimal money = pay.getAmount();
                     // 返回兑人民币后金额
@@ -1666,10 +1684,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
         for (AccountRequestFundsDetailVo c : list) {
             String costType = c.getCostType() == null ? "" : c.getCostType();
-            BigDecimal rate ;
-            if(MapUtils.isNotEmpty(currencyRatesMap)){
-                rate = currencyRatesMap.getOrDefault(c.getCurrency(),null);
-            }else{
+            BigDecimal rate;
+            if (MapUtils.isNotEmpty(currencyRatesMap)) {
+                rate = currencyRatesMap.getOrDefault(c.getCurrency(), null);
+            } else {
                 rate = c.getRate();
             }
             switch (costType) {
@@ -1763,6 +1781,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
     /**
      * 修改合同
+     *
      * @param contract
      */
     @Transactional(rollbackFor = Exception.class)
@@ -1778,7 +1797,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      * @param v
      */
     private void handleRefundTax(ContractBudgetVo v) {
-        if(ObjectUtil.isNotEmpty(v.getEhsdSumAmount())){
+        if (ObjectUtil.isNotEmpty(v.getEhsdSumAmount())) {
             // 税额/100
             double d = 0.13;
             //付货款 * 税额
@@ -1791,7 +1810,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             d1 = rt.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
             String s1 = new BigDecimal(String.valueOf(d1)).toPlainString();
             v.setRefundableAmount(new BigDecimal(s1));
-        }else{
+        } else {
             v.setRefundableAmount(BigDecimal.ZERO);
         }
 

+ 1 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseProductService.java

@@ -61,4 +61,5 @@ public interface EhsdPurchaseProductService extends BaseService<EhsdPurchaseProd
      */
     List<EhsdPurchaseProductVo> getListByContractId(Long contractId);
 
+    List<EhsdPurchaseProduct>getPurchaseProductByContractProductIds(List<Long> dataResourceIds);
 }

+ 9 - 3
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseProductServiceImpl.java

@@ -12,9 +12,7 @@ import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.List;
-import java.util.Map;
 
 
 /**
@@ -22,7 +20,7 @@ import java.util.Map;
  * ehsd采购产品表 服务实现类
  * </p>
  *
- * @author 
+ * @author
  * @since 2023-05-17
  */
 @Service
@@ -78,5 +76,13 @@ public class EhsdPurchaseProductServiceImpl extends ServiceImpl<EhsdPurchaseProd
         return baseMapper.getListByContractId(contractId);
     }
 
+    /**
+     * 根据采购合同明细id获取采购明细数据
+     */
+    @Override
+    public List<EhsdPurchaseProduct>getPurchaseProductByContractProductIds(List<Long> dataResourceIds){
+        return baseMapper.getPurchaseProductByContractProductIds(dataResourceIds);
+    }
+
 
 }

+ 29 - 22
hx-sale/src/main/resources/mapper/contract/ContractMapper.xml

@@ -163,36 +163,40 @@
                arw.create_time,
                ap.type,
                arw.currency,
-               arw.amount,
-               arw.remarks,
+               pad.money          amount,
+               pad.remark         remarks,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM contract c
-                 JOIN bytesailing_purchase.purchase p ON p.data_resource_id = c.id
-                 JOIN bytesailing_purchase.pay_detail pad
-        ON pad.purchase_id = p.id
-            JOIN bytesailing_purchase.pay pa ON pad.pay_id = pa.id
-            JOIN bytesailing_account.account_payment ap ON ap.business_id = pa.id
-            JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id
-            LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
-        WHERE
-            c.id = #{contractId}
+                 JOIN bytesailing_purchase.purchase p ON p.data_resource_id = c.id AND p.del_flag = 0
+                 JOIN bytesailing_purchase.pay_detail `pad` ON pad.purchase_id = p.id AND pad.del_flag = 0
+                 JOIN bytesailing_purchase.pay pa ON pad.pay_id = pa.id AND pa.del_flag = 0
+                 JOIN bytesailing_account.account_payment ap ON ap.business_id = pa.id AND ap.del_flag = 0
+                 JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
+                 LEFT JOIN bytesailing_account.account_management am
+                           ON arw.account_management_id = am.id AND am.del_flag = 0
+        WHERE c.id = #{contractId}
         UNION ALL
         SELECT arw.id,
                arw.create_time,
                ap.type,
                arw.currency,
-               arw.amount,
-               arw.remarks,
+               arfd.amount,
+               arfd.remarks,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM contract c
-                 JOIN bytesailing_account.account_request_funds_detail arfd ON arfd.contract_id = c.id
-                 JOIN bytesailing_account.account_payment ap ON ap.business_id = arfd.account_request_funds_id
-                 JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id
-                 LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
+                 JOIN bytesailing_account.account_request_funds_detail arfd
+                      ON arfd.contract_id = c.id AND arfd.del_flag = 0
+                 JOIN bytesailing_account.account_payment ap
+                      ON ap.business_id = arfd.account_request_funds_id AND ap.del_flag = 0
+                 JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
+                 LEFT JOIN bytesailing_account.account_management am
+                           ON arw.account_management_id = am.id AND am.del_flag = 0
         WHERE c.id = #{contractId}
         UNION ALL
         SELECT arw.id,
@@ -203,13 +207,16 @@
                arw.remarks,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM bytesailing_account.account_running_water arw
                  JOIN claim cl ON cl.business_id = arw.id
                  JOIN claim_contract clc ON clc.claim_id = cl.id
                  JOIN contract c ON clc.contract_id = c.id
-                 LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
-        WHERE c.id = #{contractId}
+                 LEFT JOIN bytesailing_account.account_management am
+                           ON arw.account_management_id = am.id AND am.del_flag = 0
+        WHERE arw.del_flag = 0
+          AND c.id = #{contractId}
     </select>
     <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
         SELECT

+ 5 - 2
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -47,7 +47,8 @@
                     t1.expend_quantity AS expendQuantity,
                     t2.sell_corporation_id,
                     t2.buy_corporation_id,
-                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
+                    t1.quantity
                 FROM
                     contract_product t1
                 LEFT JOIN contract t2 ON t1.contract_id = t2.id
@@ -71,7 +72,8 @@
                     t1.expend_quantity AS expendQuantity,
                     t2.sell_corporation_id,
                     t2.buy_corporation_id,
-                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime
+                    ( SELECT create_time FROM claim_contract WHERE contract_id = t2.id ORDER BY create_time DESC LIMIT 1 ) AS claimTime,
+                    t1.quantity
                 FROM
                     sample_product t1
                     LEFT JOIN sample t2 ON t1.sample_id = t2.id
@@ -195,6 +197,7 @@
             t2.user_name AS userName,
             t2.version AS contractVersion,
             t2.buy_corporation_id buyCorporationId,
+            t1.quantity,
             <!-- 待采购数量-->
             t1.expend_quantity AS expendQuantity,
             <!-- 交接单时间-->

+ 13 - 0
hx-sale/src/main/resources/mapper/purchase/EhsdPurchaseProductMapper.xml

@@ -58,4 +58,17 @@
         WHERE
             t1.contract_id = #{contractId}
     </select>
+    <select id="getPurchaseProductByContractProductIds" resultType="com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct">
+        SELECT
+            pp.*
+        FROM
+            ehsd_purchase_product pp
+                LEFT JOIN ehsd_purchase p ON pp.purchase_id = p.id
+        WHERE
+            (p.`status` = 30
+           OR p.`status` = 10)
+        <foreach collection="dataResourceIds" item="dataResourceId" open="AND pp.data_resource_id IN (" separator="," close=")">
+            #{dataResourceId}
+        </foreach>
+    </select>
 </mapper>