|
@@ -1,9 +1,18 @@
|
|
|
package com.fjhx.purchase.service.subscribe.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+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.subscribe.po.SubscribeDetail;
|
|
|
import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
|
|
|
import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.obs.services.internal.ServiceException;
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.fjhx.purchase.entity.subscribe.vo.SubscribeDetailVo;
|
|
@@ -12,6 +21,9 @@ import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.fjhx.purchase.entity.subscribe.dto.SubscribeDetailDto;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -24,19 +36,85 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
@Service
|
|
|
public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMapper, SubscribeDetail> implements SubscribeDetailService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
public Page<SubscribeDetailVo> getPage(SubscribeDetailSelectDto dto) {
|
|
|
+ Map<Long,List<ProductInfoVo>> productMap;
|
|
|
+ List<Long> productIds = new ArrayList<>();
|
|
|
IWrapper<SubscribeDetail> wrapper = getWrapper();
|
|
|
- wrapper.orderByDesc("sd", SubscribeDetail::getId);
|
|
|
+ //搜索条件-----当产品数据量多得情况下会影响查询得速度。超过1000条mybatisplus在in查询得时候会报错
|
|
|
+ if(ObjectUtil.isNotEmpty(dto.getProductType())){//如果类型存在带入类型查询
|
|
|
+ List<ProductInfoVo> productList = productInfoService.getListByProductType(dto.getProductType());
|
|
|
+ if(CollectionUtils.isEmpty(productList)){
|
|
|
+ return new Page<>();
|
|
|
+ }else{
|
|
|
+ productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ }else{//不存在查所有
|
|
|
+ List<ProductInfoVo> productList = productInfoService.getListByProductType(null);
|
|
|
+ productMap = productList.stream().distinct().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ }
|
|
|
+ if(ObjectUtil.isNotEmpty(dto.getStatus())){
|
|
|
+ wrapper.in("t1",SubscribeDetail::getStatus, Arrays.asList(dto.getStatus().split(",")));
|
|
|
+ }
|
|
|
+ if(CollectionUtils.isNotEmpty(productIds)){
|
|
|
+ wrapper.in("t1",SubscribeDetail::getBussinessId,productIds);
|
|
|
+ }
|
|
|
+ wrapper.orderByDesc("t1", SubscribeDetail::getCreateTime);
|
|
|
Page<SubscribeDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<SubscribeDetailVo> list = page.getRecords();
|
|
|
+ if(CollectionUtils.isNotEmpty(list)&&MapUtils.isNotEmpty(productMap)){
|
|
|
+ for(SubscribeDetailVo s:list){
|
|
|
+ List<ProductInfoVo> productInfos = productMap.getOrDefault(s.getBussinessId(), null);
|
|
|
+ if(ObjectUtil.isNotEmpty(productInfos)){
|
|
|
+ ProductInfoVo vo = productInfos.get(0);
|
|
|
+ s.setProductCode(vo.getCode());
|
|
|
+ s.setProductName(vo.getName());
|
|
|
+ s.setProductType(vo.getType());
|
|
|
+ s.setProductCategory(vo.getClassifyName());
|
|
|
+ s.setProductUnit(vo.getUnit());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据IDS获取明细
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
- public SubscribeDetailVo detail(Long id) {
|
|
|
- SubscribeDetail SubscribeDetail = this.getById(id);
|
|
|
- SubscribeDetailVo result = BeanUtil.toBean(SubscribeDetail, SubscribeDetailVo.class);
|
|
|
- return result;
|
|
|
+ public List<SubscribeDetailVo> detail(List<Long> ids) {
|
|
|
+ if(CollectionUtils.isEmpty(ids)){
|
|
|
+ throw new ServiceException("参数异常");
|
|
|
+ }
|
|
|
+ List<SubscribeDetailVo> list = baseMapper.getDetail(ids);
|
|
|
+ if(CollectionUtils.isNotEmpty(list)){
|
|
|
+ //根据申购businessId取出所有产品
|
|
|
+ List<Long> productIds = list.stream().map(SubscribeDetail::getBussinessId).collect(Collectors.toList());
|
|
|
+ List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
|
|
|
+ Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ for(SubscribeDetail s:list){
|
|
|
+ if(MapUtils.isNotEmpty(productMap)){
|
|
|
+ ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
|
|
|
+ s.setProductCategory(p.getClassifyName());
|
|
|
+ s.setProductCode(p.getCode());
|
|
|
+ s.setProductUnit(p.getUnit());
|
|
|
+ s.setProductType(p.getType());
|
|
|
+ s.setProductName(p.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
@Override
|