|
@@ -1,18 +1,34 @@
|
|
|
package com.fjhx.purchase.service.arrival.impl;
|
|
|
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.fjhx.common.constant.SourceConstant;
|
|
|
+import com.fjhx.item.entity.product.vo.ProductInfoVo;
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailDto;
|
|
|
+import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailSelectDto;
|
|
|
import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
|
|
|
+import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
|
|
|
+import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
|
|
|
import com.fjhx.purchase.mapper.arrival.ArrivalDetailMapper;
|
|
|
import com.fjhx.purchase.service.arrival.ArrivalDetailService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.supply.entity.supplier.po.SupplierInfo;
|
|
|
+import com.fjhx.supply.service.supplier.SupplierInfoService;
|
|
|
+import com.ruoyi.common.utils.StringUtils;
|
|
|
+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.arrival.vo.ArrivalDetailVo;
|
|
|
-import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailSelectDto;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
-import com.fjhx.purchase.entity.arrival.dto.ArrivalDetailDto;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -23,22 +39,89 @@ import java.math.BigDecimal;
|
|
|
* @author
|
|
|
* @since 2023-04-07
|
|
|
*/
|
|
|
+@DS(SourceConstant.PURCHASE)
|
|
|
@Service
|
|
|
public class ArrivalDetailServiceImpl extends ServiceImpl<ArrivalDetailMapper, ArrivalDetail> implements ArrivalDetailService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SupplierInfoService supplierInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页
|
|
|
+ * @param dto
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
public Page<ArrivalDetailVo> getPage(ArrivalDetailSelectDto dto) {
|
|
|
IWrapper<ArrivalDetail> wrapper = getWrapper();
|
|
|
- wrapper.orderByDesc("ad", ArrivalDetail::getId);
|
|
|
+ if(StringUtils.isNotEmpty(dto.getStatus())){
|
|
|
+ wrapper.eq("t1", PurchaseDetail::getStatus,dto.getStatus());
|
|
|
+ }
|
|
|
+ wrapper.orderByDesc("t1", ArrivalDetail::getCreateTime);
|
|
|
Page<ArrivalDetailVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
+ List<ArrivalDetailVo> list = page.getRecords();
|
|
|
+ if(CollectionUtils.isNotEmpty(list)){
|
|
|
+ //查询供应商
|
|
|
+ List<Long> supplyIds = list.stream().map(ArrivalDetailVo::getSupplyId).collect(Collectors.toList());
|
|
|
+ List<SupplierInfo> supplierInfoList = supplierInfoService.list(Wrappers.<SupplierInfo>query().lambda().in(SupplierInfo::getId,supplyIds));
|
|
|
+ Map<Long,List<SupplierInfo>> supplyMap = supplierInfoList.stream().distinct().collect(Collectors.groupingBy(SupplierInfo::getId));
|
|
|
+ if(MapUtils.isNotEmpty(supplyMap)){
|
|
|
+ for(ArrivalDetailVo p:list){
|
|
|
+ List<SupplierInfo> supplys = supplyMap.getOrDefault(p.getSupplyId(),null);
|
|
|
+ p.setSupplyName(supplys==null?null:supplys.get(0).getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //查询产品
|
|
|
+ List<Long> productIds = list.stream().map(ArrivalDetailVo::getBussinessId).collect(Collectors.toList());
|
|
|
+ List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
|
|
|
+ Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ if(MapUtils.isNotEmpty(productMap)) {
|
|
|
+ for(ArrivalDetailVo s:list){
|
|
|
+ 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());
|
|
|
+ s.setProductSpec(p.getSpec());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 详情--
|
|
|
+ * @param ids
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Override
|
|
|
- public ArrivalDetailVo detail(Long id) {
|
|
|
- ArrivalDetail ArrivalDetail = this.getById(id);
|
|
|
- ArrivalDetailVo result = BeanUtil.toBean(ArrivalDetail, ArrivalDetailVo.class);
|
|
|
- return result;
|
|
|
+ public List<ArrivalDetailVo> detail(List<Long> ids) {
|
|
|
+ List<ArrivalDetail> arrivalDetailList = this.list(Wrappers.<ArrivalDetail>query().lambda().in(ArrivalDetail::getId,ids));
|
|
|
+ List<ArrivalDetailVo> results = new ArrayList<>();
|
|
|
+ //查询产品
|
|
|
+ List<Long> productIds = arrivalDetailList.stream().map(ArrivalDetail::getBussinessId).collect(Collectors.toList());
|
|
|
+ List<ProductInfoVo> productInfoVos = productInfoService.getListByProductIds(productIds);
|
|
|
+ Map<Long, List<ProductInfoVo>> productMap = productInfoVos.stream().collect(Collectors.groupingBy(ProductInfoVo::getId));
|
|
|
+ if(MapUtils.isNotEmpty(productMap)) {
|
|
|
+ for(ArrivalDetail s:arrivalDetailList){
|
|
|
+ //查询出当前这款到货明细的质检总数
|
|
|
+
|
|
|
+ ArrivalDetailVo result = BeanUtil.toBean(s, ArrivalDetailVo.class);
|
|
|
+ ProductInfoVo p = productMap.get(s.getBussinessId()).get(0);
|
|
|
+ result.setProductCategory(p.getClassifyName());
|
|
|
+ result.setProductCode(p.getCode());
|
|
|
+ result.setProductUnit(p.getUnit());
|
|
|
+ result.setProductType(p.getType());
|
|
|
+ result.setProductName(p.getName());
|
|
|
+ result.setProductSpec(p.getSpec());
|
|
|
+ results.add(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return results;
|
|
|
}
|
|
|
|
|
|
@Override
|