|
@@ -41,13 +41,11 @@ import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
|
|
|
import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
|
|
|
import com.fjhx.sale.entity.contract.dto.ContractDto;
|
|
|
import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
|
|
|
+import com.fjhx.sale.entity.contract.dto.DecisionAidDto;
|
|
|
import com.fjhx.sale.entity.contract.po.Contract;
|
|
|
import com.fjhx.sale.entity.contract.po.ContractProduct;
|
|
|
import com.fjhx.sale.entity.contract.po.ContractProject;
|
|
|
-import com.fjhx.sale.entity.contract.vo.ContractBudgetVo;
|
|
|
-import com.fjhx.sale.entity.contract.vo.ContractDocumentaryVo;
|
|
|
-import com.fjhx.sale.entity.contract.vo.ContractPdfInfoVo;
|
|
|
-import com.fjhx.sale.entity.contract.vo.ContractVo;
|
|
|
+import com.fjhx.sale.entity.contract.vo.*;
|
|
|
import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
|
|
|
import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
|
|
|
import com.fjhx.sale.mapper.contract.ContractMapper;
|
|
@@ -708,6 +706,65 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public DecisionAidVo decisionAid(DecisionAidDto dto) {
|
|
|
+ DecisionAidVo decisionAidVo = new DecisionAidVo();
|
|
|
+
|
|
|
+ // 最近合同
|
|
|
+ Long buyCorporationId = dto.getBuyCorporationId();
|
|
|
+ if (buyCorporationId != null) {
|
|
|
+ List<Contract> list = list(q -> q
|
|
|
+ .eq(Contract::getBuyCorporationId, buyCorporationId)
|
|
|
+ .eq(Contract::getStatus, FlowStatusEnum.PASS.getKey())
|
|
|
+ .orderByDesc(BaseIdPo::getId)
|
|
|
+ .last("limit 3")
|
|
|
+ );
|
|
|
+ decisionAidVo.setLastContractList(list);
|
|
|
+ } else {
|
|
|
+ decisionAidVo.setLastContractList(Collections.emptyList());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 产品价格
|
|
|
+ List<Long> productIdList = dto.getProductIdList();
|
|
|
+ if (ObjectUtil.isNotEmpty(productIdList)) {
|
|
|
+
|
|
|
+ Map<Long, List<ContractProduct>> map = contractProductService.mapKGroup(ContractProduct::getProductId, q -> q
|
|
|
+ .select(ContractProduct::getProductId, ContractProduct::getPrice)
|
|
|
+ .in(ContractProduct::getProductId, productIdList)
|
|
|
+ .orderByDesc(BaseIdPo::getId)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<DecisionAidVo.ProductPrice> productPriceList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Long productId : productIdList) {
|
|
|
+ List<ContractProduct> contractProductList = map.get(productId);
|
|
|
+ DecisionAidVo.ProductPrice productPrice = new DecisionAidVo.ProductPrice();
|
|
|
+ productPrice.setId(productId);
|
|
|
+ if (ObjectUtil.isNotEmpty(contractProductList)) {
|
|
|
+ productPrice.setLastPrice(contractProductList.get(0).getPrice());
|
|
|
+ productPrice.setMaxPrice(contractProductList.stream().map(ContractProduct::getPrice).max(BigDecimal::compareTo).get());
|
|
|
+ productPrice.setMinPrice(contractProductList.stream().map(ContractProduct::getPrice).min(BigDecimal::compareTo).get());
|
|
|
+ } else {
|
|
|
+ productPrice.setLastPrice(BigDecimal.ZERO);
|
|
|
+ productPrice.setMaxPrice(BigDecimal.ZERO);
|
|
|
+ productPrice.setMinPrice(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ productPriceList.add(productPrice);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ productInfoService.attributeAssign(productPriceList, DecisionAidVo.ProductPrice::getId, (item, product) -> {
|
|
|
+ item.setName(product.getName());
|
|
|
+ });
|
|
|
+
|
|
|
+ decisionAidVo.setProductPriceList(productPriceList);
|
|
|
+ } else {
|
|
|
+ decisionAidVo.setProductPriceList(Collections.emptyList());
|
|
|
+ }
|
|
|
+
|
|
|
+ return decisionAidVo;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 赋值外销合同信息
|