master:入库单列表获取需求抵扣明细列表;

pull/1121/head
liujiang 2025-05-16 00:37:34 +08:00
parent 847f492fab
commit b8ecc6ff3a
9 changed files with 357 additions and 53 deletions

View File

@ -0,0 +1,43 @@
package com.ruoyi.web.controller.xkt;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.controller.XktBaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.web.controller.xkt.vo.storeProductDemand.StoreProdDemandQuantityVO;
import com.ruoyi.web.controller.xkt.vo.storeProductStorageDemandDeduct.StoreProdStorageDemandDeductVO;
import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Controller
*
* @author ruoyi
* @date 2025-03-26
*/
@Api(tags = "档口商品入库抵扣需求")
@RestController
@RequiredArgsConstructor
@RequestMapping("/rest/v1/storages-demand-deducts")
public class StoreProductStorageDemandDeductController extends XktBaseController {
final IStoreProductStorageDemandDeducteService prodStorageDemandDeductService;
/**
*
*/
@ApiOperation(value = "入库单列表获取抵扣需求明细", httpMethod = "GET", response = R.class)
@GetMapping(value = "/{storeId}/{storageCode}")
public R<StoreProdStorageDemandDeductVO> getStorageDemandDeductList(@PathVariable ("storeId") Long storeId, @PathVariable("storageCode") String storageCode) {
return R.ok(BeanUtil.toBean(prodStorageDemandDeductService.getStorageDemandDeductList(storeId, storageCode), StoreProdStorageDemandDeductVO.class));
}
}

View File

@ -1,21 +0,0 @@
package com.ruoyi.web.controller.xkt;
import com.ruoyi.common.core.controller.XktBaseController;
import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Controller
*
* @author ruoyi
* @date 2025-03-26
*/
@RestController
@RequestMapping("/rest/v1/storages-demand-deductes")
public class StoreProductStorageDemandDeducteController extends XktBaseController {
@Autowired
private IStoreProductStorageDemandDeducteService storeProductStorageDemandDeducteService;
}

View File

@ -17,7 +17,7 @@ import java.util.List;
@Builder
public class StoreProdDemandQuantityVO {
@ApiModelProperty(value = "货号")
@ApiModelProperty(value = "档口ID")
private Long storeId;
@ApiModelProperty(value = "档口商品ID")
private Long storeProdId;

View File

@ -0,0 +1,82 @@
package com.ruoyi.web.controller.xkt.vo.storeProductStorageDemandDeduct;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("入库单获取入库单据抵扣需求明细")
@Data
@Builder
public class StoreProdStorageDemandDeductVO {
@ApiModelProperty(name = "入库code")
private String storageCode;
@ApiModelProperty(name = "入库类型 1 PROD_STORAGE 其它入库 2 OTHER_STORAGE 维修入库 3 REPAIR_STORAGE")
private Integer storageType;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "入库总数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")
private BigDecimal produceAmount;
@ApiModelProperty(name = "抵扣明细列表")
List<SPSDDDemandDetailVO> detailList;
@Data
@ApiModel(value = "抵扣明细列表")
@Accessors(chain = true)
public static class SPSDDDemandDetailVO {
@ApiModelProperty("档口入库需求抵扣ID")
private Long spsddId;
@ApiModelProperty(value = "货号")
private String prodArtNum;
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(value = "需求code列表")
List<String> demandCodeList;
@ApiModelProperty(value = "数量对比列")
private List<String> compareStrList;
@ApiModelProperty(value = "尺码为30的数量")
private List<String> size30List;
@ApiModelProperty(value = "尺码为31的数量")
private List<String> size31List;
@ApiModelProperty(value = "尺码为32的数量")
private List<String> size32List;
@ApiModelProperty(value = "尺码为33的数量")
private List<String> size33List;
@ApiModelProperty(value = "尺码为34的数量")
private List<String> size34List;
@ApiModelProperty(value = "尺码为35的数量")
private List<String> size35List;
@ApiModelProperty(value = "尺码为36的数量")
private List<String> size36List;
@ApiModelProperty(value = "尺码为37的数量")
private List<String> size37List;
@ApiModelProperty(value = "尺码为38的数量")
private List<String> size38List;
@ApiModelProperty(value = "尺码为39的数量")
private List<String> size39List;
@ApiModelProperty(value = "尺码为40的数量")
private List<String> size40List;
@ApiModelProperty(value = "尺码为41的数量")
private List<String> size41List;
@ApiModelProperty(value = "尺码为42的数量")
private List<String> size42List;
@ApiModelProperty(value = "尺码为43的数量")
private List<String> size43List;
}
}

View File

@ -34,32 +34,32 @@ public class StoreProdDemandQuantityDTO {
@ApiModelProperty(value = "数量对比列")
private List<String> compareStrList;
@ApiModelProperty(value = "尺码为30的数量")
private List<String> size30List;
private List<Integer> size30List;
@ApiModelProperty(value = "尺码为31的数量")
private List<String> size31List;
private List<Integer> size31List;
@ApiModelProperty(value = "尺码为32的数量")
private List<String> size32List;
private List<Integer> size32List;
@ApiModelProperty(value = "尺码为33的数量")
private List<String> size33List;
private List<Integer> size33List;
@ApiModelProperty(value = "尺码为34的数量")
private List<String> size34List;
private List<Integer> size34List;
@ApiModelProperty(value = "尺码为35的数量")
private List<String> size35List;
private List<Integer> size35List;
@ApiModelProperty(value = "尺码为36的数量")
private List<String> size36List;
private List<Integer> size36List;
@ApiModelProperty(value = "尺码为37的数量")
private List<String> size37List;
private List<Integer> size37List;
@ApiModelProperty(value = "尺码为38的数量")
private List<String> size38List;
private List<Integer> size38List;
@ApiModelProperty(value = "尺码为39的数量")
private List<String> size39List;
private List<Integer> size39List;
@ApiModelProperty(value = "尺码为40的数量")
private List<String> size40List;
private List<Integer> size40List;
@ApiModelProperty(value = "尺码为41的数量")
private List<String> size41List;
private List<Integer> size41List;
@ApiModelProperty(value = "尺码为42的数量")
private List<String> size42List;
private List<Integer> size42List;
@ApiModelProperty(value = "尺码为43的数量")
private List<String> size43List;
private List<Integer> size43List;
}

View File

@ -0,0 +1,84 @@
package com.ruoyi.xkt.dto.storeProductStorageDemandDeduct;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* @author liujiang
* @version v1.0
* @date 2025/3/27 15:12
*/
@ApiModel("入库单获取入库单据抵扣需求明细")
@Data
@Builder
@Accessors(chain = true)
public class StoreProdStorageDemandDeductDTO {
@ApiModelProperty(name = "入库code")
private String storageCode;
@ApiModelProperty(name = "入库类型 1 PROD_STORAGE 其它入库 2 OTHER_STORAGE 维修入库 3 REPAIR_STORAGE")
private Integer storageType;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(name = "入库总数量")
private Integer quantity;
@ApiModelProperty(name = "生产成本金额")
private BigDecimal produceAmount;
@ApiModelProperty(name = "抵扣明细列表")
List<SPSDDDemandDetailDTO> detailList;
@Data
@ApiModel(value = "抵扣明细列表")
@Accessors(chain = true)
@Builder
public static class SPSDDDemandDetailDTO {
@ApiModelProperty("档口入库需求抵扣ID")
private Long spsddId;
@ApiModelProperty(value = "货号")
private String prodArtNum;
@ApiModelProperty(value = "颜色")
private String colorName;
@ApiModelProperty(value = "需求code列表")
List<String> demandCodeList;
@ApiModelProperty(value = "数量对比列")
private List<String> compareStrList;
@ApiModelProperty(value = "尺码为30的数量")
private List<Integer> size30List;
@ApiModelProperty(value = "尺码为31的数量")
private List<Integer> size31List;
@ApiModelProperty(value = "尺码为32的数量")
private List<Integer> size32List;
@ApiModelProperty(value = "尺码为33的数量")
private List<Integer> size33List;
@ApiModelProperty(value = "尺码为34的数量")
private List<Integer> size34List;
@ApiModelProperty(value = "尺码为35的数量")
private List<Integer> size35List;
@ApiModelProperty(value = "尺码为36的数量")
private List<Integer> size36List;
@ApiModelProperty(value = "尺码为37的数量")
private List<Integer> size37List;
@ApiModelProperty(value = "尺码为38的数量")
private List<Integer> size38List;
@ApiModelProperty(value = "尺码为39的数量")
private List<Integer> size39List;
@ApiModelProperty(value = "尺码为40的数量")
private List<Integer> size40List;
@ApiModelProperty(value = "尺码为41的数量")
private List<Integer> size41List;
@ApiModelProperty(value = "尺码为42的数量")
private List<Integer> size42List;
@ApiModelProperty(value = "尺码为43的数量")
private List<Integer> size43List;
}
}

View File

@ -1,5 +1,9 @@
package com.ruoyi.xkt.service;
import com.ruoyi.xkt.dto.storeProductStorageDemandDeduct.StoreProdStorageDemandDeductDTO;
import java.util.List;
/**
* Service
*
@ -8,4 +12,13 @@ package com.ruoyi.xkt.service;
*/
public interface IStoreProductStorageDemandDeducteService {
/**
*
*
* @param storeId ID
* @param storageCode
* @return List<StoreProdStorageDemandDeductDTO>
*/
StoreProdStorageDemandDeductDTO getStorageDemandDeductList(Long storeId, String storageCode);
}

View File

@ -99,20 +99,20 @@ public class StoreProductDemandServiceImpl implements IStoreProductDemandService
Integer size41Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize41).reduce(0, Integer::sum)).orElse(0);
Integer size42Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize42).reduce(0, Integer::sum)).orElse(0);
Integer size43Demand = Optional.ofNullable(demandDetailList).map(x -> x.stream().map(StoreProductDemandDetail::getSize43).reduce(0, Integer::sum)).orElse(0);
List<String> size30List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize30()) ? stock.getSize30().toString() : Constants.UNDELETED, size30Demand.toString());
List<String> size31List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize31()) ? stock.getSize31().toString() : Constants.UNDELETED, size31Demand.toString());
List<String> size32List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize32()) ? stock.getSize32().toString() : Constants.UNDELETED, size32Demand.toString());
List<String> size33List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize33()) ? stock.getSize33().toString() : Constants.UNDELETED, size33Demand.toString());
List<String> size34List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize34()) ? stock.getSize34().toString() : Constants.UNDELETED, size34Demand.toString());
List<String> size35List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize35()) ? stock.getSize35().toString() : Constants.UNDELETED, size35Demand.toString());
List<String> size36List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize36()) ? stock.getSize36().toString() : Constants.UNDELETED, size36Demand.toString());
List<String> size37List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize37()) ? stock.getSize37().toString() : Constants.UNDELETED, size37Demand.toString());
List<String> size38List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize38()) ? stock.getSize38().toString() : Constants.UNDELETED, size38Demand.toString());
List<String> size39List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize39()) ? stock.getSize39().toString() : Constants.UNDELETED, size39Demand.toString());
List<String> size40List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize40()) ? stock.getSize40().toString() : Constants.UNDELETED, size40Demand.toString());
List<String> size41List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize41()) ? stock.getSize41().toString() : Constants.UNDELETED, size41Demand.toString());
List<String> size42List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize42()) ? stock.getSize42().toString() : Constants.UNDELETED, size42Demand.toString());
List<String> size43List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize43()) ? stock.getSize43().toString() : Constants.UNDELETED, size43Demand.toString());
List<Integer> size30List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize30()) ? stock.getSize30() : 0, size30Demand);
List<Integer> size31List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize31()) ? stock.getSize31() : 0, size31Demand);
List<Integer> size32List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize32()) ? stock.getSize32() : 0, size32Demand);
List<Integer> size33List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize33()) ? stock.getSize33() : 0, size33Demand);
List<Integer> size34List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize34()) ? stock.getSize34() : 0, size34Demand);
List<Integer> size35List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize35()) ? stock.getSize35() : 0, size35Demand);
List<Integer> size36List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize36()) ? stock.getSize36() : 0, size36Demand);
List<Integer> size37List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize37()) ? stock.getSize37() : 0, size37Demand);
List<Integer> size38List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize38()) ? stock.getSize38() : 0, size38Demand);
List<Integer> size39List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize39()) ? stock.getSize39() : 0, size39Demand);
List<Integer> size40List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize40()) ? stock.getSize40() : 0, size40Demand);
List<Integer> size41List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize41()) ? stock.getSize41() : 0, size41Demand);
List<Integer> size42List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize42()) ? stock.getSize42() : 0, size42Demand);
List<Integer> size43List = Arrays.asList(ObjectUtils.isNotEmpty(stock) && ObjectUtils.isNotEmpty(stock.getSize43()) ? stock.getSize43() : 0, size43Demand);
return StoreProdDemandQuantityDTO.builder().storeId(storeId).storeProdId(storeProd.getId()).storeProdColorId(prodColor.getId())
.prodArtNum(storeProd.getProdArtNum()).colorName(prodColor.getColorName()).compareStrList(compareStrList)
// 判断 demandDetailList 中是否有 createTime 为当天的对象

View File

@ -1,9 +1,28 @@
package com.ruoyi.xkt.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.xkt.domain.StoreProductStorage;
import com.ruoyi.xkt.domain.StoreProductStorageDemandDeduct;
import com.ruoyi.xkt.domain.StoreProductStorageDetail;
import com.ruoyi.xkt.dto.storeProductStorageDemandDeduct.StoreProdStorageDemandDeductDTO;
import com.ruoyi.xkt.mapper.StoreProductStorageDemandDeductMapper;
import com.ruoyi.xkt.mapper.StoreProductStorageDetailMapper;
import com.ruoyi.xkt.mapper.StoreProductStorageMapper;
import com.ruoyi.xkt.service.IStoreProductStorageDemandDeducteService;
import org.springframework.beans.factory.annotation.Autowired;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.common.constant.Constants.*;
/**
* Service
@ -12,9 +31,93 @@ import org.springframework.stereotype.Service;
* @date 2025-03-26
*/
@Service
@RequiredArgsConstructor
public class StoreProductStorageDemandDeducteServiceImpl implements IStoreProductStorageDemandDeducteService {
@Autowired
private StoreProductStorageDemandDeductMapper storeProductStorageDemandDeducteMapper;
final StoreProductStorageMapper prodStorageMapper;
final StoreProductStorageDetailMapper productStorageDetailMapper;
final StoreProductStorageDemandDeductMapper prodStorageDemandDeductMapper;
/**
*
*
* @param storeId ID
* @param storageCode
* @return List<StoreProdStorageDemandDeductDTO>
*/
@Override
@Transactional(readOnly = true)
public StoreProdStorageDemandDeductDTO getStorageDemandDeductList(Long storeId, String storageCode) {
// 根据storageCode找到入库单
StoreProductStorage storage = Optional.ofNullable(this.prodStorageMapper.selectOne(new LambdaQueryWrapper<StoreProductStorage>()
.eq(StoreProductStorage::getCode, storageCode).eq(StoreProductStorage::getStoreId, storeId)
.eq(StoreProductStorage::getDelFlag, Constants.UNDELETED)))
.orElseThrow(() -> new ServiceException("档口商品入库不存在!", HttpStatus.ERROR));
List<StoreProductStorageDetail> storageDetailList = this.productStorageDetailMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDetail>()
.eq(StoreProductStorageDetail::getStoreProdStorId, storage.getId()).eq(StoreProductStorageDetail::getDelFlag, Constants.UNDELETED));
List<StoreProductStorageDemandDeduct> demandDeductList = this.prodStorageDemandDeductMapper.selectList(new LambdaQueryWrapper<StoreProductStorageDemandDeduct>()
.eq(StoreProductStorageDemandDeduct::getStorageCode, storageCode).eq(StoreProductStorageDemandDeduct::getDelFlag, Constants.UNDELETED));
StoreProdStorageDemandDeductDTO dto = BeanUtil.toBean(storage, StoreProdStorageDemandDeductDTO.class).setStorageCode(storageCode);
if (CollectionUtils.isEmpty(demandDeductList)) {
return dto;
}
Map<Long, List<StoreProductStorageDemandDeduct>> demandDeductMap = demandDeductList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getStoreProdStorageDetailId));
List<StoreProdStorageDemandDeductDTO.SPSDDDemandDetailDTO> demandDetailDTOList = storageDetailList.stream().map(storageDetail -> {
List<StoreProductStorageDemandDeduct> demandDetailList = demandDeductMap.get(storageDetail.getId());
if (CollectionUtils.isEmpty(demandDetailList)) {
return StoreProdStorageDemandDeductDTO.SPSDDDemandDetailDTO.builder()
.prodArtNum(storageDetail.getProdArtNum()).colorName(storageDetail.getColorName())
.build();
}
// 抵扣的需求明细列表 再按照code进行分类
Map<String, List<StoreProductStorageDemandDeduct>> demandSizeMap = demandDetailList.stream().collect(Collectors.groupingBy(StoreProductStorageDemandDeduct::getDemandCode));
// 生产需求单号列
final List<String> demandCodeList = new ArrayList<String>(){{
add("");
// 生产需求单号列表
demandDetailList.stream().map(StoreProductStorageDemandDeduct::getDemandCode).distinct().sorted(Comparator.comparing(x -> x)).forEach(this::add);
}};
// 初始化数量对比 列
List<String> compareNumStrList = new ArrayList<String>(){{
add("入库数量");
// 根据生产需求单号数量 生成 对应的 抵扣数量
demandDetailList.stream().map(StoreProductStorageDemandDeduct::getDemandCode).distinct().forEach(x -> this.add("抵扣需求数量"));
}};
return StoreProdStorageDemandDeductDTO.SPSDDDemandDetailDTO.builder().spsddId(storageDetail.getId())
.prodArtNum(storageDetail.getProdArtNum()).colorName(storageDetail.getColorName())
.demandCodeList(demandCodeList).compareStrList(compareNumStrList)
.size30List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_30))
.size31List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_31))
.size32List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_32))
.size33List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_33))
.size34List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_34))
.size35List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_35))
.size36List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_36))
.size37List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_37))
.size38List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_38))
.size39List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_39))
.size40List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_40))
.size41List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_41))
.size42List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_42))
.size43List(this.getSizeQuantityList(demandCodeList, demandSizeMap, SIZE_43))
.build();
}).collect(Collectors.toList());
return dto.setDetailList(demandDetailDTOList);
}
private List<Integer> getSizeQuantityList(List<String> demandCodeList, Map<String, List<StoreProductStorageDemandDeduct>> demandSizeMap, Integer size) {
// 每一个尺码的数量对比明细
return demandCodeList.stream().map(demandCode -> {
List<StoreProductStorageDemandDeduct> demandSizeList = demandSizeMap.get(demandCode);
return CollectionUtils.isEmpty(demandSizeList) ? 0
: demandSizeList.stream().filter(x -> Objects.equals(x.getSize(), size))
.map(x -> ObjectUtils.defaultIfNull(x.getQuantity(), 0)).reduce(0, Integer::sum);
}).collect(Collectors.toList());
}
}