master:入库单列表获取需求抵扣明细列表;
parent
847f492fab
commit
b8ecc6ff3a
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 为当天的对象
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue