|
@@ -1,5 +1,6 @@
|
|
|
package com.fjhx.purchase.service.subscribe.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.extra.spring.SpringUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.alibaba.fastjson2.JSONWriter;
|
|
@@ -17,17 +18,24 @@ import com.fjhx.common.service.coding.CodingRuleService;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.entity.product.vo.ProductInfoVo;
|
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.purchase.entity.purchase.po.Purchase;
|
|
|
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
|
|
|
+import com.fjhx.purchase.entity.subscribe.dto.DecisionAidDto;
|
|
|
import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailSelectDto;
|
|
|
import com.fjhx.purchase.entity.subscribe.dto.SubscribeDto;
|
|
|
import com.fjhx.purchase.entity.subscribe.dto.SubscribeSelectDto;
|
|
|
import com.fjhx.purchase.entity.subscribe.po.Subscribe;
|
|
|
import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
|
|
|
+import com.fjhx.purchase.entity.subscribe.vo.DecisionAidVo;
|
|
|
import com.fjhx.purchase.entity.subscribe.vo.SubscribeVo;
|
|
|
import com.fjhx.purchase.mapper.subscribe.SubscribeMapper;
|
|
|
+import com.fjhx.purchase.service.purchase.PurchaseDetailService;
|
|
|
+import com.fjhx.purchase.service.purchase.PurchaseService;
|
|
|
import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
|
|
|
import com.fjhx.purchase.service.subscribe.SubscribeService;
|
|
|
import com.fjhx.wms.entity.warehouse.po.Warehouse;
|
|
|
import com.fjhx.wms.service.warehouse.WarehouseService;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.core.domain.entity.SysDept;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
@@ -36,7 +44,9 @@ import org.apache.commons.collections4.MapUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -61,13 +71,20 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
|
|
|
private ProductInfoService productInfoService;
|
|
|
|
|
|
@Autowired
|
|
|
- WarehouseService warehouseService;
|
|
|
+ private WarehouseService warehouseService;
|
|
|
+
|
|
|
@Autowired
|
|
|
- ISysDeptService deptService;
|
|
|
+ private ISysDeptService deptService;
|
|
|
|
|
|
@Autowired
|
|
|
private CodingRuleService codingRuleService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PurchaseService purchaseService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PurchaseDetailService purchaseDetailService;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
public Page<SubscribeVo> getPage(SubscribeSelectDto dto) {
|
|
@@ -189,7 +206,7 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
|
|
|
Long deptId = json.getLong("deptId");
|
|
|
deptIds.add(deptId);
|
|
|
}
|
|
|
- if(ObjectUtils.isEmpty(deptIds)){
|
|
|
+ if (ObjectUtils.isEmpty(deptIds)) {
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
@@ -198,4 +215,56 @@ public class SubscribeServiceImpl extends ServiceImpl<SubscribeMapper, Subscribe
|
|
|
return sysDepts;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public DecisionAidVo decisionAid(DecisionAidDto dto) {
|
|
|
+ DecisionAidVo decisionAidVo = new DecisionAidVo();
|
|
|
+
|
|
|
+ Long supplyId = dto.getSupplyId();
|
|
|
+ if (supplyId != null) {
|
|
|
+ List<Purchase> purchaseList = purchaseService.list(q -> q.eq(Purchase::getSupplyId, supplyId)
|
|
|
+ .orderByDesc(BaseIdPo::getId).last("limit 3"));
|
|
|
+ decisionAidVo.setPurchaseList(purchaseList);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 产品价格
|
|
|
+ List<Long> productIdList = dto.getProductIdList();
|
|
|
+ if (ObjectUtil.isNotEmpty(productIdList)) {
|
|
|
+
|
|
|
+ Map<Long, List<PurchaseDetail>> map = purchaseDetailService.mapKGroup(PurchaseDetail::getBussinessId, q -> q
|
|
|
+ .select(PurchaseDetail::getBussinessId, PurchaseDetail::getPrice)
|
|
|
+ .in(PurchaseDetail::getBussinessId, productIdList)
|
|
|
+ .orderByDesc(BaseIdPo::getId)
|
|
|
+ );
|
|
|
+
|
|
|
+ List<DecisionAidVo.ProductPrice> productPriceList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (Long productId : productIdList) {
|
|
|
+ List<PurchaseDetail> 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(PurchaseDetail::getPrice).max(BigDecimal::compareTo).get());
|
|
|
+ productPrice.setMinPrice(contractProductList.stream().map(PurchaseDetail::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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|