Browse Source

Merge remote-tracking branch 'origin/master'

caozj 1 year ago
parent
commit
550955c377

+ 26 - 7
hx-sale/src/main/java/com/fjhx/sale/controller/sample/SampleController.java

@@ -1,14 +1,9 @@
 package com.fjhx.sale.controller.sample;
 package com.fjhx.sale.controller.sample;
 
 
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
-import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
-import com.ruoyi.common.utils.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.sale.entity.sample.vo.SampleVo;
 import com.fjhx.sale.entity.sample.vo.SampleVo;
@@ -93,4 +88,28 @@ public class SampleController {
         return sampleService.getSamplePdfInfo(dto.getId());
         return sampleService.getSamplePdfInfo(dto.getId());
     }
     }
 
 
+    /**
+     * 获取合同相关的所有版本列表
+     */
+    @PostMapping("/getVersionList")
+    public List<SampleVo> getVersionList(@RequestBody ContractDto dto) {
+        return sampleService.getVersionList(dto.getId());
+    }
+
+    /**
+     * 获取样品单id获取所有采购id
+     */
+    @PostMapping("/getPurchaseListBySampleId")
+    public List<EhsdPurchase> getPurchaseListBySampleId(@RequestBody ContractDto dto) {
+        return sampleService.getPurchaseListBySampleId(dto.getId());
+    }
+
+    /**
+     * 根据样品单id获取合同的资金流水信息
+     */
+    @PostMapping("/getAccountRunningWaterBySampleId")
+    public List<AccountRunningWaterVo> getAccountRunningWaterBySampleId(@RequestBody ContractDto dto) {
+        return sampleService.getAccountRunningWaterBySampleId(dto.getId());
+    }
+
 }
 }

+ 5 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/sample/vo/SampleVo.java

@@ -86,4 +86,9 @@ public class SampleVo extends Sample {
 
 
     private List<SampleShipmentVo> sampleShipmentLists;
     private List<SampleShipmentVo> sampleShipmentLists;
 
 
+    /**
+     * 流程id
+     */
+    private Long flowId;
+
 }
 }

+ 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);
     List<EhsdPurchaseProductVo> getListByContractId(Long contractId);
 
 
     boolean updatePurchaseId(@Param("id")Long id ,@Param("newId")Long newId,@Param("userId")Long userId);
     boolean updatePurchaseId(@Param("id")Long id ,@Param("newId")Long newId,@Param("userId")Long userId);
+
+    List<EhsdPurchaseProduct>getPurchaseProductByContractProductIds(List<Long> dataResourceIds);
 }
 }

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/sample/SampleMapper.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.mapper.sample;
 package com.fjhx.sale.mapper.sample;
 
 
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -8,6 +9,8 @@ import com.fjhx.sale.entity.sample.vo.SampleVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.util.List;
+
 
 
 /**
 /**
  * <p>
  * <p>
@@ -33,4 +36,9 @@ public interface SampleMapper extends BaseMapper<Sample> {
     Page<ContractProductVo> sampleHandoverList(@Param("page") Page<Object> page, @Param("ew") IWrapper<Sample> wrapper);
     Page<ContractProductVo> sampleHandoverList(@Param("page") Page<Object> page, @Param("ew") IWrapper<Sample> wrapper);
 
 
     void updateSample(Sample sample);
     void updateSample(Sample sample);
+
+    /**
+     * 根据合同id获取合同的资金流水信息
+     */
+    List<AccountRunningWaterVo> getAccountRunningWaterBySampleId(@Param("sampleId") Long sampleId);
 }
 }

+ 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.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 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.mapper.contract.ContractProductMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
 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.core.domain.entity.SysUser;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -79,6 +81,8 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
     private ClaimContractService claimContractService;
     private ClaimContractService claimContractService;
     @Autowired
     @Autowired
     private ISysUserService userService;
     private ISysUserService userService;
+    @Autowired
+    private EhsdPurchaseProductService ehsdPurchaseProductService;
 
 
     /**
     /**
      * 分页
      * 分页
@@ -226,6 +230,26 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             productClassifyService.attributeAssign(list, ContractProductVo::getProductCategoryId, (item, productClassify) -> {
             productClassifyService.attributeAssign(list, ContractProductVo::getProductCategoryId, (item, productClassify) -> {
                 item.setProductCategory(productClassify.getName());
                 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;
         return page;
     }
     }
@@ -328,6 +352,25 @@ public class ContractProductServiceImpl extends ServiceImpl<ContractProductMappe
             });
             });
             //赋值业务员名称
             //赋值业务员名称
             UserUtil.assignmentNickName(list, ContractProductVo::getCreateUser, ContractProductVo::setUserName);
             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;
         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.account.vo.AccountRunningWaterVo;
 import com.fjhx.account.entity.tax.po.TaxRefundDetails;
 import com.fjhx.account.entity.tax.po.TaxRefundDetails;
 import com.fjhx.account.service.account.AccountManagementService;
 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.account.AccountRequestFundsDetailService;
 import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.area.service.SetCustomizeAreaId;
 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.entity.quality.po.QualityDetail;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 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.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.quality.QualityDetailService;
 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.po.ContractShipment;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.contract.vo.*;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 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.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 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.mapper.contract.ContractMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.contract.ContractProductService;
@@ -242,7 +240,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
 
         IWrapper<Contract> wrapper = getWrapper();
         IWrapper<Contract> wrapper = getWrapper();
         wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
         wrapper.in("t1", Contract::getBuyCorporationId, authIdList);
-        wrapper.ne("t1", Contract::getIsShow,1);
+        wrapper.ne("t1", Contract::getIsShow, 1);
         return pageCommon(dto, wrapper);
         return pageCommon(dto, wrapper);
     }
     }
 
 
@@ -410,7 +408,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.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.getOther() == null ? BigDecimal.ZERO : v.getOther().multiply(new BigDecimal(map.getOrDefault(v.getOtherCurrency(), BigDecimal.ONE).toString()))).add
                             (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
                             (v.getEhsdSumAmount() == null ? BigDecimal.ZERO : v.getEhsdSumAmount())
-                            );
+                    );
                     //处理退税金额
                     //处理退税金额
                     handleRefundTax(v);
                     handleRefundTax(v);
                     v.setRmbContractAmount(v.getAmount().multiply(new BigDecimal(map.getOrDefault(v.getCurrency(), BigDecimal.ONE).toString())));
                     v.setRmbContractAmount(v.getAmount().multiply(new BigDecimal(map.getOrDefault(v.getCurrency(), BigDecimal.ONE).toString())));
@@ -433,14 +431,14 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                     //计算支出总计 除合同金额(转人民币)+应退税金额(转人民币) 其他金额相加
                     v.setExpenditureAmount(
                     v.setExpenditureAmount(
                             v.getTrailerFee() == null ? BigDecimal.ZERO : v.getTrailerFee().add
                             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);
                     handleRefundTax(v);
                     v.setRmbContractAmount(v.getAmount().multiply(rate));
                     v.setRmbContractAmount(v.getAmount().multiply(rate));
@@ -485,13 +483,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         List<Long> contractIds = list.stream().map(ContractBudgetVo::getContractId).collect(Collectors.toList());
         List<Long> contractIds = list.stream().map(ContractBudgetVo::getContractId).collect(Collectors.toList());
         //通过合同ID查询到退税数据
         //通过合同ID查询到退税数据
         List<TaxRefundDetails> refundDetails = taxRefundDetailsService.getSumMoneyByContractIds(contractIds);
         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查询到到账认领数据
         //通过合同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查询到采购合同
         //通过合同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) {
         for (ContractBudgetVo v : list) {
             v.setOtherIncomeAmount(BigDecimal.ZERO);//暂时先设置其他收入为0
             v.setOtherIncomeAmount(BigDecimal.ZERO);//暂时先设置其他收入为0
             if (StringUtils.isNotEmpty(v.getCurrencyRateJson())) {//如果此条合同有汇率了
             if (StringUtils.isNotEmpty(v.getCurrencyRateJson())) {//如果此条合同有汇率了
@@ -504,11 +502,11 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                  * 处理退税金额
                  * 处理退税金额
                  */
                  */
                 v.setRefundableAmount(BigDecimal.ZERO);
                 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 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();
                         BigDecimal money = taxRefundDetails.getAmount();
                         // 返回兑人民币后金额
                         // 返回兑人民币后金额
@@ -517,9 +515,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     v.setRefundableAmount(taxReturnMoney);
                     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);
                 this.getGroupTypeMoney(v, assignCurrencyRatesMap);
             } else {
             } else {
@@ -528,8 +526,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                  * 处理退税金额
                  * 处理退税金额
                  */
                  */
                 v.setRefundableAmount(BigDecimal.ZERO);
                 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 taxReturnMoney = rList.stream().map(taxRefundDetails -> {
                         //获取汇率
                         //获取汇率
                         BigDecimal rate = taxRefundDetails.getRate();
                         BigDecimal rate = taxRefundDetails.getRate();
@@ -541,9 +539,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                     v.setRefundableAmount(taxReturnMoney);
                     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);
                 this.getGroupTypeMoney(v, null);
             }
             }
@@ -565,9 +563,9 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             //计算毛利 收入-支出
             //计算毛利 收入-支出
             v.setGross(v.getIncomeAmount().subtract(v.getExpenditureAmount()));
             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);
                 v.setGrossRate(BigDecimal.ZERO);
-            }else{
+            } else {
                 v.setGrossRate(v.getGross().divide(v.getIncomeAmount(), RoundingMode.CEILING).multiply(new BigDecimal("100")));
                 v.setGrossRate(v.getGross().divide(v.getIncomeAmount(), RoundingMode.CEILING).multiply(new BigDecimal("100")));
             }
             }
         }
         }
@@ -608,6 +606,24 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             item.setProductCode(product.getCode());
             item.setProductCode(product.getCode());
             item.setProductUnit(product.getUnit());
             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);
         result.setContractProductList(contractProductList);
 
 
         List<ContractProject> contractProjectList = contractProjectService.list(q -> q.eq(ContractProject::getContractId, id));
         List<ContractProject> contractProjectList = contractProjectService.list(q -> q.eq(ContractProject::getContractId, id));
@@ -1532,40 +1548,42 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      * @param assignCurrencyRatesMap 汇率JSON
      * @param assignCurrencyRatesMap 汇率JSON
      * @return
      * @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;
         BigDecimal sumClaimMoney = BigDecimal.ZERO;
-        if(CollectionUtils.isEmpty(claimContractList)){
+        if (CollectionUtils.isEmpty(claimContractList)) {
             return BigDecimal.ZERO;
             return BigDecimal.ZERO;
         }
         }
-        if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
+        if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
             for (ClaimContract c : claimContractList) {
             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) {
             for (ClaimContract c : claimContractList) {
                 sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(c.getRate()));
                 sumClaimMoney = sumClaimMoney.add(c.getMoney().multiply(c.getRate()));
             }
             }
         }
         }
         return sumClaimMoney;
         return sumClaimMoney;
     }
     }
+
     /**
     /**
      * 统采购合同总金额
      * 统采购合同总金额
+     *
      * @param v
      * @param v
      * @param purchaseList
      * @param purchaseList
      * @param assignCurrencyRatesMap 汇率JSON
      * @param assignCurrencyRatesMap 汇率JSON
      * @return
      * @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;
         BigDecimal purchaseSumMoney = BigDecimal.ZERO;
-        if(CollectionUtils.isEmpty(purchaseList)){
+        if (CollectionUtils.isEmpty(purchaseList)) {
             v.setSumPurchaseContractMoney(BigDecimal.ZERO);
             v.setSumPurchaseContractMoney(BigDecimal.ZERO);
             v.setAccountPaid(BigDecimal.ZERO);
             v.setAccountPaid(BigDecimal.ZERO);
             return;
             return;
         }
         }
         List<Long> purchaseIds = purchaseList.stream().map(EhsdPurchase::getId).collect(Collectors.toList());
         List<Long> purchaseIds = purchaseList.stream().map(EhsdPurchase::getId).collect(Collectors.toList());
-        if(MapUtils.isNotEmpty(assignCurrencyRatesMap)){
+        if (MapUtils.isNotEmpty(assignCurrencyRatesMap)) {
             for (EhsdPurchase c : purchaseList) {
             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)));
             }
             }
             /**
             /**
              * 处理支付款金额
              * 处理支付款金额
@@ -1574,7 +1592,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             if (CollectionUtils.isNotEmpty(payList)) {
             if (CollectionUtils.isNotEmpty(payList)) {
                 BigDecimal payAmount = payList.stream().map(pay -> {
                 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();
                     BigDecimal money = pay.getAmount();
                     // 返回兑人民币后金额
                     // 返回兑人民币后金额
@@ -1582,7 +1600,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 }).reduce(BigDecimal.ZERO, BigDecimal::add);
                 }).reduce(BigDecimal.ZERO, BigDecimal::add);
                 v.setAccountPaid(payAmount);
                 v.setAccountPaid(payAmount);
             }
             }
-        }else{
+        } else {
             for (EhsdPurchase c : purchaseList) {
             for (EhsdPurchase c : purchaseList) {
                 purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(c.getRate()));
                 purchaseSumMoney = purchaseSumMoney.add(c.getAmount().multiply(c.getRate()));
             }
             }
@@ -1594,7 +1612,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             if (CollectionUtils.isNotEmpty(payList)) {
             if (CollectionUtils.isNotEmpty(payList)) {
                 BigDecimal payAmount = payList.stream().map(pay -> {
                 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();
                     BigDecimal money = pay.getAmount();
                     // 返回兑人民币后金额
                     // 返回兑人民币后金额
@@ -1667,10 +1685,10 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
 
         for (AccountRequestFundsDetailVo c : list) {
         for (AccountRequestFundsDetailVo c : list) {
             String costType = c.getCostType() == null ? "" : c.getCostType();
             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();
                 rate = c.getRate();
             }
             }
             switch (costType) {
             switch (costType) {
@@ -1764,6 +1782,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
 
     /**
     /**
      * 修改合同
      * 修改合同
+     *
      * @param contract
      * @param contract
      */
      */
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
@@ -1779,7 +1798,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
      * @param v
      * @param v
      */
      */
     private void handleRefundTax(ContractBudgetVo v) {
     private void handleRefundTax(ContractBudgetVo v) {
-        if(ObjectUtil.isNotEmpty(v.getEhsdSumAmount())){
+        if (ObjectUtil.isNotEmpty(v.getEhsdSumAmount())) {
             // 税额/100
             // 税额/100
             double d = 0.13;
             double d = 0.13;
             //付货款 * 税额
             //付货款 * 税额
@@ -1792,7 +1811,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             d1 = rt.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
             d1 = rt.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
             String s1 = new BigDecimal(String.valueOf(d1)).toPlainString();
             String s1 = new BigDecimal(String.valueOf(d1)).toPlainString();
             v.setRefundableAmount(new BigDecimal(s1));
             v.setRefundableAmount(new BigDecimal(s1));
-        }else{
+        } else {
             v.setRefundableAmount(BigDecimal.ZERO);
             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<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 com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
-import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
-import java.util.Map;
 
 
 
 
 /**
 /**
@@ -22,7 +20,7 @@ import java.util.Map;
  * ehsd采购产品表 服务实现类
  * ehsd采购产品表 服务实现类
  * </p>
  * </p>
  *
  *
- * @author 
+ * @author
  * @since 2023-05-17
  * @since 2023-05-17
  */
  */
 @Service
 @Service
@@ -78,5 +76,13 @@ public class EhsdPurchaseProductServiceImpl extends ServiceImpl<EhsdPurchaseProd
         return baseMapper.getListByContractId(contractId);
         return baseMapper.getListByContractId(contractId);
     }
     }
 
 
+    /**
+     * 根据采购合同明细id获取采购明细数据
+     */
+    @Override
+    public List<EhsdPurchaseProduct>getPurchaseProductByContractProductIds(List<Long> dataResourceIds){
+        return baseMapper.getPurchaseProductByContractProductIds(dataResourceIds);
+    }
+
 
 
 }
 }

+ 19 - 0
hx-sale/src/main/java/com/fjhx/sale/service/sample/SampleService.java

@@ -1,6 +1,8 @@
 package com.fjhx.sale.service.sample;
 package com.fjhx.sale.service.sample;
 
 
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
 import com.ruoyi.common.core.service.BaseService;
 import com.ruoyi.common.core.service.BaseService;
@@ -9,6 +11,8 @@ import com.fjhx.sale.entity.sample.vo.SampleVo;
 import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
 import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 
 
+import java.util.List;
+
 
 
 /**
 /**
  * <p>
  * <p>
@@ -58,4 +62,19 @@ public interface SampleService extends BaseService<Sample> {
     SamplePdfInfoVo getSamplePdfInfo(Long id);
     SamplePdfInfoVo getSamplePdfInfo(Long id);
 
 
     void updateSample(Sample sample);
     void updateSample(Sample sample);
+
+    /**
+     * 获取样品单相关的所有版本列表
+     */
+    List<SampleVo> getVersionList(Long id);
+
+    /**
+     * 获取合同相关的所有采购合同版本列表
+     */
+    List<EhsdPurchase> getPurchaseListBySampleId(Long id);
+
+    /**
+     * 根据合同id获取合同的资金流水信息
+     */
+    List<AccountRunningWaterVo> getAccountRunningWaterBySampleId(Long sampleId);
 }
 }

+ 47 - 5
hx-sale/src/main/java/com/fjhx/sale/service/sample/impl/SampleServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.account.entity.account.po.AccountManagement;
 import com.fjhx.account.entity.account.po.AccountManagement;
+import com.fjhx.account.entity.account.vo.AccountRunningWaterVo;
 import com.fjhx.account.service.account.AccountManagementService;
 import com.fjhx.account.service.account.AccountManagementService;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.constant.SourceConstant;
@@ -22,6 +23,7 @@ import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.file.entity.FileInfoVo;
 import com.fjhx.file.entity.FileInfoVo;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.file.utils.ObsFileUtil;
+import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.entity.product.po.ProductInfo;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.mail.entity.enterprise.po.EnterpriseDomain;
 import com.fjhx.mail.entity.enterprise.po.EnterpriseDomain;
@@ -32,6 +34,7 @@ import com.fjhx.mail.service.enterprise.EnterpriseMailboxService;
 import com.fjhx.mail.service.personal.PersonalMailboxService;
 import com.fjhx.mail.service.personal.PersonalMailboxService;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.contract.vo.ContractProductVo;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
 import com.fjhx.sale.entity.sample.dto.SampleSelectDto;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.po.Sample;
@@ -39,10 +42,10 @@ import com.fjhx.sale.entity.sample.po.SampleProduct;
 import com.fjhx.sale.entity.sample.po.SampleProject;
 import com.fjhx.sale.entity.sample.po.SampleProject;
 import com.fjhx.sale.entity.sample.po.SampleShipment;
 import com.fjhx.sale.entity.sample.po.SampleShipment;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
 import com.fjhx.sale.entity.sample.vo.SamplePdfInfoVo;
-import com.fjhx.sale.entity.sample.vo.SampleProductVo;
 import com.fjhx.sale.entity.sample.vo.SampleShipmentVo;
 import com.fjhx.sale.entity.sample.vo.SampleShipmentVo;
 import com.fjhx.sale.entity.sample.vo.SampleVo;
 import com.fjhx.sale.entity.sample.vo.SampleVo;
 import com.fjhx.sale.mapper.sample.SampleMapper;
 import com.fjhx.sale.mapper.sample.SampleMapper;
+import com.fjhx.sale.service.purchase.EhsdPurchaseService;
 import com.fjhx.sale.service.sample.SampleProductService;
 import com.fjhx.sale.service.sample.SampleProductService;
 import com.fjhx.sale.service.sample.SampleProjectService;
 import com.fjhx.sale.service.sample.SampleProjectService;
 import com.fjhx.sale.service.sample.SampleService;
 import com.fjhx.sale.service.sample.SampleService;
@@ -63,10 +66,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -114,6 +114,10 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
     private SampleShipmentService sampleShipmentService;
     private SampleShipmentService sampleShipmentService;
     @Autowired
     @Autowired
     private ContractTemplateService contractTemplateService;
     private ContractTemplateService contractTemplateService;
+    @Autowired
+    private FlowExampleService flowExampleService;
+    @Autowired
+    private EhsdPurchaseService purchaseService;
 
 
 
 
     /**
     /**
@@ -566,4 +570,42 @@ public class SampleServiceImpl extends ServiceImpl<SampleMapper, Sample> impleme
         contractPdfInfoVo.setBeneficiaryAddress(sample.getBeneficiaryAddress());
         contractPdfInfoVo.setBeneficiaryAddress(sample.getBeneficiaryAddress());
     }
     }
 
 
+    /**
+     * 获取样品单相关的所有版本列表
+     */
+    @Override
+    public List<SampleVo> getVersionList(Long id) {
+        List<Sample> sampleList = new ArrayList<>();
+
+        while (true) {
+            Sample sample = this.getById(id);
+            Assert.notEmpty(sample, "查询不到合同信息,id:" + id);
+            sampleList.add(sample);
+            if (ObjectUtil.isEmpty(sample.getOldSampleId())) {
+                break;
+            }
+            id = sample.getOldSampleId();
+        }
+        List<SampleVo> sampleVos = BeanUtil.copyToList(sampleList, SampleVo.class);
+        // 赋值流程id
+        flowExampleService.setFlowId(sampleVos, SampleVo::setFlowId);
+        return sampleVos;
+    }
+
+    /**
+     * 获取合同相关的所有采购合同版本列表
+     */
+    @Override
+    public List<EhsdPurchase> getPurchaseListBySampleId(Long id) {
+        return purchaseService.list(q -> q.eq(EhsdPurchase::getDataResourceId, id));
+    }
+
+    /**
+     * 根据合同id获取合同的资金流水信息
+     */
+    @Override
+    public List<AccountRunningWaterVo> getAccountRunningWaterBySampleId(Long sampleId) {
+        return baseMapper.getAccountRunningWaterBySampleId(sampleId);
+    }
+
 }
 }

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

@@ -163,36 +163,40 @@
                arw.create_time,
                arw.create_time,
                ap.type,
                ap.type,
                arw.currency,
                arw.currency,
-               arw.amount,
-               arw.remarks,
+               pad.money          amount,
+               pad.remark         remarks,
                am.`name`          accountManagementName,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM contract c
         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
         UNION ALL
         SELECT arw.id,
         SELECT arw.id,
                arw.create_time,
                arw.create_time,
                ap.type,
                ap.type,
                arw.currency,
                arw.currency,
-               arw.amount,
-               arw.remarks,
+               arfd.amount,
+               arfd.remarks,
                am.`name`          accountManagementName,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM contract c
         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}
         WHERE c.id = #{contractId}
         UNION ALL
         UNION ALL
         SELECT arw.id,
         SELECT arw.id,
@@ -203,13 +207,16 @@
                arw.remarks,
                arw.remarks,
                am.`name`          accountManagementName,
                am.`name`          accountManagementName,
                am.account_opening accountManagementOpening,
                am.account_opening accountManagementOpening,
-               arw.`name`
+               arw.`name`,
+               arw.status
         FROM bytesailing_account.account_running_water arw
         FROM bytesailing_account.account_running_water arw
                  JOIN claim cl ON cl.business_id = arw.id
                  JOIN claim cl ON cl.business_id = arw.id
                  JOIN claim_contract clc ON clc.claim_id = cl.id
                  JOIN claim_contract clc ON clc.claim_id = cl.id
                  JOIN contract c ON clc.contract_id = c.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>
     <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
     <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
         SELECT
         SELECT

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

@@ -47,7 +47,8 @@
                     t1.expend_quantity AS expendQuantity,
                     t1.expend_quantity AS expendQuantity,
                     t2.sell_corporation_id,
                     t2.sell_corporation_id,
                     t2.buy_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
                 FROM
                     contract_product t1
                     contract_product t1
                 LEFT JOIN contract t2 ON t1.contract_id = t2.id
                 LEFT JOIN contract t2 ON t1.contract_id = t2.id
@@ -71,7 +72,8 @@
                     t1.expend_quantity AS expendQuantity,
                     t1.expend_quantity AS expendQuantity,
                     t2.sell_corporation_id,
                     t2.sell_corporation_id,
                     t2.buy_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
                 FROM
                     sample_product t1
                     sample_product t1
                     LEFT JOIN sample t2 ON t1.sample_id = t2.id
                     LEFT JOIN sample t2 ON t1.sample_id = t2.id
@@ -195,6 +197,7 @@
             t2.user_name AS userName,
             t2.user_name AS userName,
             t2.version AS contractVersion,
             t2.version AS contractVersion,
             t2.buy_corporation_id buyCorporationId,
             t2.buy_corporation_id buyCorporationId,
+            t1.quantity,
             <!-- 待采购数量-->
             <!-- 待采购数量-->
             t1.expend_quantity AS expendQuantity,
             t1.expend_quantity AS expendQuantity,
             <!-- 交接单时间-->
             <!-- 交接单时间-->

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

@@ -58,4 +58,17 @@
         WHERE
         WHERE
             t1.contract_id = #{contractId}
             t1.contract_id = #{contractId}
     </select>
     </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>
 </mapper>

+ 62 - 0
hx-sale/src/main/resources/mapper/sample/SampleMapper.xml

@@ -63,4 +63,66 @@
         where id = #{upId}
         where id = #{upId}
     </update>
     </update>
 
 
+    <select id="getAccountRunningWaterBySampleId"
+            resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
+        SELECT arw.id,
+               arw.create_time,
+               ap.type,
+               arw.currency,
+               pad.money          amount,
+               pad.remark         remarks,
+               am.`name`          accountManagementName,
+               am.account_opening accountManagementOpening,
+               arw.`name`,
+               arw.status
+        FROM sample s
+                 JOIN bytesailing_purchase.purchase p ON p.data_resource_id = s.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 s.id = #{sampleId}
+        UNION ALL
+        SELECT arw.id,
+               arw.create_time,
+               ap.type,
+               arw.currency,
+               arfd.amount,
+               arfd.remarks,
+               am.`name`          accountManagementName,
+               am.account_opening accountManagementOpening,
+               arw.`name`,
+               arw.status
+        FROM sample s
+                 JOIN bytesailing_account.account_request_funds_detail arfd
+                      ON arfd.contract_id = s.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 s.id = #{sampleId}
+        UNION ALL
+        SELECT arw.id,
+               arw.create_time,
+               30                 type,
+               arw.currency,
+               clc.money,
+               arw.remarks,
+               am.`name`          accountManagementName,
+               am.account_opening accountManagementOpening,
+               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 sample s ON clc.contract_id = s.id
+                 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 s.id = #{sampleId}
+    </select>
+
 </mapper>
 </mapper>