|
@@ -17,6 +17,10 @@ import com.fjhx.common.utils.Utils;
|
|
|
import com.fjhx.customer.service.customer.CustomerService;
|
|
|
import com.fjhx.file.entity.FileInfoVo;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.entity.product.vo.ProductBomDetailVo;
|
|
|
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
|
|
|
+import com.fjhx.item.service.product.ProductBomDetailService;
|
|
|
import com.fjhx.item.service.product.ProductClassifyService;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
import com.fjhx.sale.entity.ext.dto.*;
|
|
@@ -33,6 +37,7 @@ import com.fjhx.sale.service.quotation.QuotationProductService;
|
|
|
import com.fjhx.sale.service.sale.SaleQuotationService;
|
|
|
import com.fjhx.socket.core.PushTypeEnum;
|
|
|
import com.fjhx.socket.core.WebSocketPush;
|
|
|
+import com.fjhx.tenant.utils.DeptUstil;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.core.domain.entity.SysDept;
|
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
@@ -46,6 +51,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@@ -84,6 +90,8 @@ public class ExtQuotationServiceImpl extends ServiceImpl<ExtQuotationMapper, Ext
|
|
|
private QuotationProductService quotationProductService;
|
|
|
@Autowired
|
|
|
private ProductClassifyService productClassifyService;
|
|
|
+ @Autowired
|
|
|
+ private ProductBomDetailService productBomDetailService;
|
|
|
|
|
|
@Override
|
|
|
public Page<ExtQuotationVo> getPage(ExtQuotationSelectDto dto) {
|
|
@@ -549,4 +557,77 @@ public class ExtQuotationServiceImpl extends ServiceImpl<ExtQuotationMapper, Ext
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 转订单明细 产品信息直接从产品库取
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ExtQuotationVo toContractDetail(Long id) {
|
|
|
+ ExtQuotationVo result = BeanUtil.toBean(this.getById(id), ExtQuotationVo.class);
|
|
|
+ Assert.notEmpty(result, "查询不到明细信息请检查");
|
|
|
+
|
|
|
+ //获取归属公司信息
|
|
|
+ result.setCompanyName(DeptUstil.getDeptNameMap().get(result.getCompanyId()));
|
|
|
+
|
|
|
+ //获取报价单产品id
|
|
|
+ List<ExtQuotationProductVo> extProductList = extQuotationProductService.getList(IWrapper.getWrapper().eq("eqp", ExtQuotationProduct::getSaleQuotationId, id));
|
|
|
+ List<Long> extProductIds = extProductList.stream().map(ExtQuotationProduct::getProductId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ //赋值产品信息
|
|
|
+ List<ProductInfoVo> productInfoList = productInfoService.getList(IWrapper.getWrapper().in("pi", ProductInfo::getId, extProductIds));
|
|
|
+
|
|
|
+ Map<Long, ProductInfoVo> productInfoVoMap = productInfoList.stream().collect(Collectors.toMap(ProductInfo::getId, Function.identity()));
|
|
|
+ List<ExtQuotationProductVo> quotationProductVos = new ArrayList<>();
|
|
|
+
|
|
|
+ //将产品信息转换报价单格式
|
|
|
+ for (ExtQuotationProductVo item : extProductList) {
|
|
|
+ ProductInfoVo productInfo = productInfoVoMap.get(item.getProductId());
|
|
|
+
|
|
|
+ //处理产品信息
|
|
|
+ item.setProductCode(productInfo.getCustomCode());
|
|
|
+ item.setProductName(productInfo.getName());
|
|
|
+ item.setProductLength(productInfo.getLength());
|
|
|
+ item.setProductWidth(productInfo.getWidth());
|
|
|
+ item.setProductHeight(productInfo.getHeight());
|
|
|
+ item.setProductColor(productInfo.getColor());
|
|
|
+ item.setProductClassifyId(productInfo.getProductClassifyId());
|
|
|
+ item.setProductFrontalTexture(productInfo.getFrontalTexture());
|
|
|
+ item.setProductReverseTexture(productInfo.getReverseTexture());
|
|
|
+ item.setProductNetWeight(productInfo.getNetWeight());
|
|
|
+ item.setProductUnit(productInfo.getUnit());
|
|
|
+
|
|
|
+ //处理BOM信息
|
|
|
+ List<ExtQuotationProductBomVo> extProductBomVos = new ArrayList<>();
|
|
|
+
|
|
|
+ List<ProductBomDetailVo> productBomDetailList = productInfo.getProductBomDetailList();
|
|
|
+ for (ProductBomDetailVo productBomDetail : productBomDetailList) {
|
|
|
+ ExtQuotationProductBomVo extProductBom = BeanUtil.toBean(productBomDetail, ExtQuotationProductBomVo.class);
|
|
|
+
|
|
|
+ extProductBom.setExtQuotationId(id);
|
|
|
+ extProductBom.setQuotationProductId(item.getId());
|
|
|
+
|
|
|
+ extProductBom.setProductCode(productBomDetail.getMaterialCode());
|
|
|
+ extProductBom.setProductName(productBomDetail.getMaterialName());
|
|
|
+ extProductBom.setProductLength(productBomDetail.getMaterialLength());
|
|
|
+ extProductBom.setProductWidth(productBomDetail.getMaterialWidth());
|
|
|
+ extProductBom.setProductHeight(productBomDetail.getMaterialHeight());
|
|
|
+ extProductBom.setProductColor(productBomDetail.getMaterialColor());
|
|
|
+
|
|
|
+ extProductBomVos.add(extProductBom);
|
|
|
+ }
|
|
|
+
|
|
|
+ item.setQuotationProductBomList(extProductBomVos);
|
|
|
+
|
|
|
+ quotationProductVos.add(item);
|
|
|
+ }
|
|
|
+
|
|
|
+ //赋值产品分类
|
|
|
+ productClassifyService.attributeAssign(quotationProductVos, ExtQuotationProductVo::getProductClassifyId, (item, classify) -> {
|
|
|
+ item.setProductClassifyName(classify.getName());
|
|
|
+ });
|
|
|
+
|
|
|
+ result.setQuotationProductList(quotationProductVos);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
}
|