Преглед изворни кода

Merge remote-tracking branch 'origin/feature_baisuilai_zx' into feature_baisuilai_zhufanhao

dfsfs пре 1 година
родитељ
комит
ae46c4e600
15 измењених фајлова са 304 додато и 29 уклоњено
  1. 21 0
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/BionutritionDocBaseDTO.java
  2. 2 0
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/BionutritionDocHeaderDTO.java
  3. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/BionutritionDocDetailBaseDTO.java
  4. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/FinishedProductReceiptDetailDTO.java
  5. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/ProductionPickingListDetailDTO.java
  6. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/ProductionReturnOrderDetailDTO.java
  7. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/PurchaseReceiptDetailDTO.java
  8. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/SaleOutboundOrderDetailDTO.java
  9. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/SaleReturnOrderDetailDTO.java
  10. 1 1
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/header/ProductionPickingListHeaderDTO.java
  11. 5 0
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/BionutritionDocDetailsService.java
  12. 30 0
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/impl/BionutritionDocDetailsServiceImpl.java
  13. 124 11
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/impl/BionutritionDocHeaderServiceImpl.java
  14. 55 6
      warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/util/BionutritionDocUtil.java
  15. 59 4
      warewms-base/src/main/java/com/ruoyi/base/constant/type/BizEnum.java

+ 21 - 0
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/BionutritionDocBaseDTO.java

@@ -0,0 +1,21 @@
+package com.ruoyi.ams.bionutrition.doc.dto;
+
+import com.ruoyi.ams.bionutrition.doc.dto.detail.BionutritionDocDetailsBaseDTO;
+import com.ruoyi.ams.bionutrition.doc.dto.header.BionutritionDocHeaderBaseDTO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class BionutritionDocBaseDTO implements Serializable {
+
+    private static final long serialVersionUID = -7953644964862229377L;
+
+    @ApiModelProperty("单据头")
+    private BionutritionDocHeaderBaseDTO bionutritionDocHeaderBaseDTO;
+
+    @ApiModelProperty("单据明细")
+    private List<BionutritionDocDetailsBaseDTO> bionutritionDocDetailsBaseDTOList;
+}

+ 2 - 0
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/BionutritionDocHeaderDTO.java

@@ -7,6 +7,8 @@ import lombok.Data;
 @Data
 public class BionutritionDocHeaderDTO extends WarewmsExtDTO {
 
+    private static final long serialVersionUID = -7632867533076485979L;
+
     @ApiModelProperty("单据号")
     private String docNo;
 

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/BionutritionDocDetailBaseDTO.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
-public class BionutritionDocDetailBaseDTO extends WarewmsExtDTO {
+public class BionutritionDocDetailsBaseDTO extends WarewmsExtDTO {
 
     private static final long serialVersionUID = 1102255580263279150L;
 

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/FinishedProductReceiptDetailDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class FinishedProductReceiptDetailDTO extends BionutritionDocDetailBaseDTO {
+public class FinishedProductReceiptDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("产品批号")
     private String productLotNumber;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/ProductionPickingListDetailDTO.java

@@ -7,7 +7,7 @@ import lombok.Data;
  * 生产领料单明细
  */
 @Data
-public class ProductionPickingListDetailDTO extends BionutritionDocDetailBaseDTO {
+public class ProductionPickingReceiptDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("进厂批号")
     private String incomeLotNumber;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/ProductionReturnOrderDetailDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class ProductionReturnOrderDetailDTO extends BionutritionDocDetailBaseDTO {
+public class ProductionReturnOrderDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("进厂批号")
     private String incomeLotNumber;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/PurchaseReceiptDetailDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class PurchaseReceiptDetailDTO extends BionutritionDocDetailBaseDTO {
+public class PurchaseReceiptDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("原厂批号")
     private String originalLotNumber;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/SaleOutboundOrderDetailDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class SaleOutboundOrderDetailDTO extends BionutritionDocDetailBaseDTO {
+public class SaleOutboundOrderDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("产品名称")
     private String productName;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/detail/SaleReturnOrderDetailDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class SaleReturnOrderDetailDTO extends BionutritionDocDetailBaseDTO {
+public class SaleReturnOrderDetailsDTO extends BionutritionDocDetailsBaseDTO {
 
     @ApiModelProperty("产品批号")
     private String productLotNumber;

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/dto/header/ProductionPickingListHeaderDTO.java

@@ -8,7 +8,7 @@ import lombok.Data;
  */
 
 @Data
-public class ProductionPickingListHeaderDTO extends BionutritionDocHeaderBaseDTO {
+public class ProductionPickingReceiptHeaderDTO extends BionutritionDocHeaderBaseDTO {
 
     @ApiModelProperty("部门名称")
     private String dept;

+ 5 - 0
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/BionutritionDocDetailsService.java

@@ -4,6 +4,8 @@ import com.ruoyi.ams.bionutrition.doc.domain.BionutritionDocDetails;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.framework.service.CrudService;
 
+import java.util.List;
+
 /**
  * 分配查询Service接口
  *
@@ -12,4 +14,7 @@ import com.ruoyi.framework.service.CrudService;
  */
 public interface BionutritionDocDetailsService extends CrudService<BionutritionDocDetails, BionutritionDocDetailsDTO> {
 
+    List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(String docHeaderId);
+
+    List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(List<String> docHeaderIdList);
 }

+ 30 - 0
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/impl/BionutritionDocDetailsServiceImpl.java

@@ -1,13 +1,18 @@
 package com.ruoyi.ams.bionutrition.doc.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.collect.Lists;
 import com.ruoyi.ams.bionutrition.doc.domain.BionutritionDocDetails;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.ams.bionutrition.doc.mapper.BionutritionDocDetailsMapper;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocDetailsService;
+import com.ruoyi.common.utils.ConvertUtils;
 import com.ruoyi.framework.service.impl.CrudServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -21,9 +26,34 @@ public class BionutritionDocDetailsServiceImpl extends CrudServiceImpl<Bionutrit
 
 
 
+    @Override
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(String docHeaderId){
+        return getBionutritionDocDetailsDTOList(Lists.newArrayList(docHeaderId), Lists.newArrayList());
+    }
+
+    @Override
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(List<String> docHeaderIdList){
+        return getBionutritionDocDetailsDTOList(docHeaderIdList, Lists.newArrayList());
+    }
 
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(List<String> docHeaderIdList, String skuCode){
+        return getBionutritionDocDetailsDTOList(docHeaderIdList, Lists.newArrayList(skuCode));
+    }
 
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(String docHeaderId, String skuCode){
+        return getBionutritionDocDetailsDTOList(Lists.newArrayList(docHeaderId), Lists.newArrayList(skuCode));
+    }
 
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(String docHeaderId, List<String> skuCodeList){
+        return getBionutritionDocDetailsDTOList(Lists.newArrayList(docHeaderId), skuCodeList);
+    }
+
+    public List<BionutritionDocDetailsDTO> getBionutritionDocDetailsDTOList(List<String> docHeaderIdList, List<String> skuCodeList){
+        List<BionutritionDocDetails> bionutritionDocDetailsList = baseDao.selectList(Wrappers.<BionutritionDocDetails>lambdaQuery()
+                .in(CollectionUtil.isNotEmpty(docHeaderIdList), BionutritionDocDetails::getDocHeaderId, docHeaderIdList)
+                .in(CollectionUtil.isNotEmpty(skuCodeList), BionutritionDocDetails::getSkuCode, skuCodeList));
+        return ConvertUtils.sourceToTarget(bionutritionDocDetailsList, BionutritionDocDetailsDTO.class);
+    }
 
     @Override
     public QueryWrapper<BionutritionDocDetails> getWrapper(Map<String, Object> params) {

+ 124 - 11
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/service/impl/BionutritionDocHeaderServiceImpl.java

@@ -1,47 +1,160 @@
 package com.ruoyi.ams.bionutrition.doc.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.google.common.collect.Lists;
 import com.ruoyi.ams.bionutrition.doc.domain.BionutritionDocHeader;
+import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocBaseDTO;
+import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocHeaderDTO;
+import com.ruoyi.ams.bionutrition.doc.dto.detail.BionutritionDocDetailsBaseDTO;
+import com.ruoyi.ams.bionutrition.doc.dto.header.BionutritionDocHeaderBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.mapper.BionutritionDocHeaderMapper;
+import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocDetailsService;
 import com.ruoyi.ams.bionutrition.doc.service.BionutritionDocHeaderService;
+import com.ruoyi.ams.bionutrition.doc.util.BionutritionDocUtil;
 import com.ruoyi.common.utils.ConvertUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.service.impl.CrudServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class BionutritionDocHeaderServiceImpl extends CrudServiceImpl<BionutritionDocHeaderMapper, BionutritionDocHeader, BionutritionDocHeaderDTO> implements BionutritionDocHeaderService {
 
+    @Autowired
+    private BionutritionDocDetailsService bionutritionDocDetailsService;
+
+    /**
+     * 构建类型单据内容(单个)
+     * @param docNo
+     * @return
+     */
+    public BionutritionDocBaseDTO buildBionutritionDocBaseDTOByDocNo(String docNo){
+        BionutritionDocHeaderDTO bionutritionDocHeaderDTO = getBionutritionDocHeaderDTOListByDocNo(docNo);
+        return buildBionutritionDocBaseDTO(bionutritionDocHeaderDTO);
+    }
+
+    /**
+     * 构建类型单据内容(单个)
+     * @param id
+     * @return
+     */
+    public BionutritionDocBaseDTO buildBionutritionDocBaseDTOById(String id){
+        BionutritionDocHeaderDTO bionutritionDocHeaderDTO = getBionutritionDocHeaderDTOListById(id);
+        return buildBionutritionDocBaseDTO(bionutritionDocHeaderDTO);
+    }
+
+    /**
+     * 构建类型单据内容(单个)
+     * @param bionutritionDocHeaderDTO
+     * @return
+     */
+    public BionutritionDocBaseDTO buildBionutritionDocBaseDTO(BionutritionDocHeaderDTO bionutritionDocHeaderDTO){
+        BionutritionDocHeaderBaseDTO bionutritionDocHeaderBaseDTO = BionutritionDocUtil.buildBionutritionDocHeaderDTO(bionutritionDocHeaderDTO);
+        List<BionutritionDocDetailsDTO> bionutritionDocDetailsDTOList = bionutritionDocDetailsService.getBionutritionDocDetailsDTOList(
+                bionutritionDocHeaderBaseDTO.getId());
+        List<BionutritionDocDetailsBaseDTO> bionutritionDocDetailsBaseDTOList = BionutritionDocUtil.buildBionutritionDocDetailsDTOList(
+                bionutritionDocHeaderDTO.getDocType(), bionutritionDocDetailsDTOList);
+        BionutritionDocBaseDTO bionutritionDocBaseDTO = new BionutritionDocBaseDTO();
+        bionutritionDocBaseDTO.setBionutritionDocHeaderBaseDTO(bionutritionDocHeaderBaseDTO);
+        bionutritionDocBaseDTO.setBionutritionDocDetailsBaseDTOList(bionutritionDocDetailsBaseDTOList);
+        return bionutritionDocBaseDTO;
+    }
+
+    public List<BionutritionDocBaseDTO> buildBionutritionDocBaseDTOByDocNoList(List<String> docNoList){
+        List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList = getBionutritionDocHeaderDTOListByDocNo(docNoList);
+        List<String> docTypeList = bionutritionDocHeaderDTOList.stream().map(item -> item.getDocType()).distinct().collect(Collectors.toList());
+        return NumberUtil.isGreater(BigDecimal.valueOf(docTypeList.size()), BigDecimal.ONE) ?
+                buildBionutritionDocDifferentTypeList(bionutritionDocHeaderDTOList) : buildBionutritionDocSameTypeList(bionutritionDocHeaderDTOList);
+    }
+
+    public List<BionutritionDocBaseDTO> buildBionutritionDocBaseDTOByIdList(List<String> idList){
+        List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList = getBionutritionDocHeaderDTOList(idList);
+        List<String> docTypeList = bionutritionDocHeaderDTOList.stream().map(item -> item.getDocType()).distinct().collect(Collectors.toList());
+        return NumberUtil.isGreater(BigDecimal.valueOf(docTypeList.size()), BigDecimal.ONE) ?
+                buildBionutritionDocDifferentTypeList(bionutritionDocHeaderDTOList) : buildBionutritionDocSameTypeList(bionutritionDocHeaderDTOList);
+    }
+
+    /**
+     * 构建类型单据内容(多个 相同类型单据)
+     * @param bionutritionDocHeaderDTOList
+     * @return
+     */
+    public List<BionutritionDocBaseDTO> buildBionutritionDocSameTypeList(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList){
+        List<BionutritionDocHeaderBaseDTO> bionutritionDocHeaderBaseDTOList = BionutritionDocUtil.buildBionutritionDocHeaderDTOList(bionutritionDocHeaderDTOList);
+        List<BionutritionDocDetailsDTO> bionutritionDocDetailsDTOList = bionutritionDocDetailsService.getBionutritionDocDetailsDTOList(
+                bionutritionDocHeaderDTOList.stream().map(BionutritionDocHeaderDTO::getDocNo).collect(Collectors.toList()));
+        List<BionutritionDocDetailsBaseDTO> bionutritionDocDetailsBaseDTOList = BionutritionDocUtil.buildBionutritionDocDetailsDTOList(
+                bionutritionDocHeaderDTOList.stream().findFirst().get().getDocType(), bionutritionDocDetailsDTOList);
+        List<BionutritionDocBaseDTO> bionutritionDocBaseDTOList = new ArrayList<>();
+        bionutritionDocHeaderBaseDTOList.forEach(item -> {
+            BionutritionDocBaseDTO bionutritionDocBaseDTO = new BionutritionDocBaseDTO();
+            bionutritionDocBaseDTO.setBionutritionDocHeaderBaseDTO(item);
+            bionutritionDocBaseDTO.setBionutritionDocDetailsBaseDTOList(bionutritionDocDetailsBaseDTOList.stream()
+                    .filter(bionutritionDocDetailsBaseDTO -> StringUtils.equals(item.getId(), bionutritionDocDetailsBaseDTO.getDocHeaderId())).collect(Collectors.toList()));
+            bionutritionDocBaseDTOList.add(bionutritionDocBaseDTO);
+        });
+        return bionutritionDocBaseDTOList;
+    }
+
+    /**
+     * 构建类型单据内容(多个 不同类型单据)
+     * @param bionutritionDocHeaderDTOList
+     * @return
+     */
+    public List<BionutritionDocBaseDTO> buildBionutritionDocDifferentTypeList(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList){
+        Map<String, List<BionutritionDocHeaderBaseDTO>> bionutritionDocHeaderMap = BionutritionDocUtil.buildBionutritionDocHeaderDTOByDocTypeMap(bionutritionDocHeaderDTOList);
+        List<BionutritionDocDetailsDTO> bionutritionDocDetailsDTOList = bionutritionDocDetailsService.getBionutritionDocDetailsDTOList(
+                bionutritionDocHeaderDTOList.stream().map(BionutritionDocHeaderDTO::getDocNo).collect(Collectors.toList()));
+        Map<String, List<BionutritionDocDetailsDTO>> bionutritionDocDetailsMap = bionutritionDocHeaderMap.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey,
+                item -> bionutritionDocDetailsDTOList.stream().filter(detail -> item.getValue().stream().anyMatch(header ->
+                        StringUtils.equals(header.getId(), detail.getDocHeaderId()))).collect(Collectors.toList())));
+        List<BionutritionDocDetailsBaseDTO> bionutritionDocDetailsList = BionutritionDocUtil.buildBionutritionDocDetailsDTOList(bionutritionDocDetailsMap);
+        List<BionutritionDocHeaderBaseDTO> bionutritionDocHeaderList = new ArrayList<>();
+        bionutritionDocHeaderMap.forEach((key, value) -> bionutritionDocHeaderList.addAll(value));
+        return bionutritionDocHeaderList.stream().map(item -> {
+            BionutritionDocBaseDTO bionutritionDocBaseDTO = new BionutritionDocBaseDTO();
+            bionutritionDocBaseDTO.setBionutritionDocHeaderBaseDTO(item);
+            bionutritionDocBaseDTO.setBionutritionDocDetailsBaseDTOList(bionutritionDocDetailsList.stream().filter(detail ->
+                    StringUtils.equals(item.getId(), detail.getDocHeaderId())).collect(Collectors.toList()));
+            return bionutritionDocBaseDTO;
+        }).collect(Collectors.toList());
+    }
+
 
 
-    public List<BionutritionDocHeaderDTO> getBslDocHeaderDTOListByDocNo(String docNo) {
-        return getBslDocHeaderDTOList(null, Lists.newArrayList(docNo), null);
+    public BionutritionDocHeaderDTO getBionutritionDocHeaderDTOListByDocNo(String docNo) {
+        return getBionutritionDocHeaderDTOList(null, Lists.newArrayList(docNo), null)
+                .stream().findFirst().orElseGet(() -> new BionutritionDocHeaderDTO());
     }
 
-    public List<BionutritionDocHeaderDTO> getBslDocHeaderDTOListByDocNo(List<String> docNoList) {
-        return getBslDocHeaderDTOList(null, docNoList, null);
+    public BionutritionDocHeaderDTO getBionutritionDocHeaderDTOListById(String id) {
+        return getBionutritionDocHeaderDTOList(Lists.newArrayList(id), null, null)
+                .stream().findFirst().orElseGet(() -> new BionutritionDocHeaderDTO());
     }
 
-    public List<BionutritionDocHeaderDTO> getBslDocHeaderDTOListById(String id) {
-        return getBslDocHeaderDTOList(Lists.newArrayList(id), null, null);
+    public List<BionutritionDocHeaderDTO> getBionutritionDocHeaderDTOListByDocNo(List<String> docNoList) {
+        return getBionutritionDocHeaderDTOList(null, docNoList, null);
     }
 
-    public List<BionutritionDocHeaderDTO> getBslDocHeaderDTOList(List<String> idList) {
-        return getBslDocHeaderDTOList(idList, null, null);
+    public List<BionutritionDocHeaderDTO> getBionutritionDocHeaderDTOList(List<String> idList) {
+        return getBionutritionDocHeaderDTOList(idList, null, null);
     }
 
-    public List<BionutritionDocHeaderDTO> getBslDocHeaderDTOList(String docType) {
-        return getBslDocHeaderDTOList(null, null, docType);
+    public List<BionutritionDocHeaderDTO> getBionutritionDocHeaderDTOList(String docType) {
+        return getBionutritionDocHeaderDTOList(null, null, docType);
     }
 
-    private List<BionutritionDocHeaderDTO> getBslDocHeaderDTOList(List<String> idList, List<String> docNoList, String docType) {
+    private List<BionutritionDocHeaderDTO> getBionutritionDocHeaderDTOList(List<String> idList, List<String> docNoList, String docType) {
         List<BionutritionDocHeader> bionutritionDocHeaderList = baseDao.selectList(Wrappers.<BionutritionDocHeader>lambdaQuery()
                 .in(CollectionUtil.isNotEmpty(idList), BionutritionDocHeader::getId, idList)
                 .in(CollectionUtil.isNotEmpty(docNoList), BionutritionDocHeader::getDocNo, docNoList)

+ 55 - 6
warewms-ams/src/main/java/com/ruoyi/ams/bionutrition/doc/util/BionutritionDocUtil.java

@@ -2,7 +2,9 @@ package com.ruoyi.ams.bionutrition.doc.util;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocDetailsDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.BionutritionDocHeaderDTO;
+import com.ruoyi.ams.bionutrition.doc.dto.detail.BionutritionDocDetailsBaseDTO;
 import com.ruoyi.ams.bionutrition.doc.dto.header.BionutritionDocHeaderBaseDTO;
 import com.ruoyi.base.constant.type.BizEnum;
 import com.ruoyi.common.constant.base.EnumUtils;
@@ -12,6 +14,7 @@ import io.jsonwebtoken.lang.Assert;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -19,6 +22,52 @@ import java.util.stream.Collectors;
 @Slf4j
 public class BionutritionDocUtil {
 
+    /**
+     * 获取单类型单据明细
+     *
+     * @param bionutritionDocDetailsDTO
+     * @return
+     */
+    @SneakyThrows
+    public static <E extends BionutritionDocDetailsBaseDTO> E buildBionutritionDocDetailsDTO(String docType, BionutritionDocDetailsDTO bionutritionDocDetailsDTO) {
+        Assert.isTrue(ObjectUtil.isNotNull(bionutritionDocDetailsDTO), "bionutritionDocDetailsDTO is null");
+        Assert.isTrue(StringUtils.isNotBlank(docType), "docType is null");
+        BizEnum.BionutritionDetailDocTypeEnum bslDocTypeEnum = EnumUtils.getEnumByCode(docType, BizEnum.BionutritionDetailDocTypeEnum.class);
+        Class<E> docClass = (Class<E>) Class.forName(bslDocTypeEnum.getClassName());
+        return ConvertUtils.sourceToTarget(bionutritionDocDetailsDTO, docClass);
+    }
+
+    /**
+     * 获取单类型单据明细
+     * @param docType
+     * @param bionutritionDocDetailsDTOList
+     * @return
+     * @param <E>
+     */
+    @SneakyThrows
+    public static <E extends BionutritionDocDetailsBaseDTO> List<E> buildBionutritionDocDetailsDTOList(String docType, List<BionutritionDocDetailsDTO> bionutritionDocDetailsDTOList) {
+        Assert.isTrue(CollectionUtil.isNotEmpty(bionutritionDocDetailsDTOList), "bionutritionDocDetailsDTOList is null");
+        Assert.isTrue(StringUtils.isNotBlank(docType), "docType is null");
+        return bionutritionDocDetailsDTOList.stream().map(item -> (E) buildBionutritionDocDetailsDTO(docType, item)).collect(Collectors.toList());
+    }
+
+    /**
+     * 多类型单据单头根据类型分类
+     *
+     * @param bionutritionDocDetailsDTOMap
+     * @return
+     */
+    @SneakyThrows
+    public static <E extends BionutritionDocDetailsBaseDTO> List<E> buildBionutritionDocDetailsDTOList(Map<String, List<BionutritionDocDetailsDTO>> bionutritionDocDetailsDTOMap) {
+        Assert.isTrue(CollectionUtil.isNotEmpty(bionutritionDocDetailsDTOMap), "bionutritionDocDetailsDTOMap is null");
+        List<E> result = new ArrayList<>();
+        bionutritionDocDetailsDTOMap.forEach((key, value) -> {
+            List<E> bionutritionDocDetailsBaseDTOList = buildBionutritionDocDetailsDTOList(key, value);
+            result.addAll(bionutritionDocDetailsBaseDTOList);
+        });
+        return result;
+    }
+
     /**
      * 获取单类型单据单头
      *
@@ -26,10 +75,10 @@ public class BionutritionDocUtil {
      * @return
      */
     @SneakyThrows
-    public static <E extends BionutritionDocHeaderBaseDTO> E buildBslDocHeaderDTO(BionutritionDocHeaderDTO bionutritionDocHeaderDTO) {
+    public static <E extends BionutritionDocHeaderBaseDTO> E buildBionutritionDocHeaderDTO(BionutritionDocHeaderDTO bionutritionDocHeaderDTO) {
         Assert.isTrue(ObjectUtil.isNotNull(bionutritionDocHeaderDTO), "bslDocHeaderDTO is null");
         Assert.isTrue(StringUtils.isNotEmpty(bionutritionDocHeaderDTO.getDocType()), "bslDocHeaderDTO docType is blank");
-        BizEnum.BslDocTypeEnum bslDocTypeEnum = EnumUtils.getEnumByCode(bionutritionDocHeaderDTO.getDocType(), BizEnum.BslDocTypeEnum.class);
+        BizEnum.BionutritionHeaderDocTypeEnum bslDocTypeEnum = EnumUtils.getEnumByCode(bionutritionDocHeaderDTO.getDocType(), BizEnum.BionutritionHeaderDocTypeEnum.class);
         Class<E> docClass = (Class<E>) Class.forName(bslDocTypeEnum.getClassName());
         return ConvertUtils.sourceToTarget(bionutritionDocHeaderDTO, docClass);
     }
@@ -41,14 +90,14 @@ public class BionutritionDocUtil {
      * @return
      */
     @SneakyThrows
-    public static <E extends BionutritionDocHeaderBaseDTO> List<E> buildBslDocHeaderDTOList(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList) {
+    public static <E extends BionutritionDocHeaderBaseDTO> List<E> buildBionutritionDocHeaderDTOList(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList) {
         Assert.isTrue(CollectionUtil.isNotEmpty(bionutritionDocHeaderDTOList), "bslDocHeaderDTOList is empty");
         Assert.isTrue(CollectionUtil.isEmpty(bionutritionDocHeaderDTOList.stream().filter(item -> StringUtils.isBlank(item.getDocType())).collect(Collectors.toList()))
                 , "bslDocHeaderDTOList is have bslDocHeaderDTO docType is blank");
         BionutritionDocHeaderDTO bionutritionDocHeaderDTO = bionutritionDocHeaderDTOList.stream().findFirst().orElseGet(() -> null);
         Assert.isTrue(bionutritionDocHeaderDTOList.stream().allMatch(item -> item.getDocType().equals(bionutritionDocHeaderDTO.getDocType())),
                 "bslDocHeaderDTOList docType is not the same type");
-        return bionutritionDocHeaderDTOList.stream().map(item -> (E) buildBslDocHeaderDTO(item)).collect(Collectors.toList());
+        return bionutritionDocHeaderDTOList.stream().map(item -> (E) buildBionutritionDocHeaderDTO(item)).collect(Collectors.toList());
     }
 
     /**
@@ -58,9 +107,9 @@ public class BionutritionDocUtil {
      * @return
      */
     @SneakyThrows
-    public static <E extends BionutritionDocHeaderBaseDTO> Map<String, List<E>> buildBslDocHeaderDTOByDocTypeMap(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList) {
+    public static <E extends BionutritionDocHeaderBaseDTO> Map<String, List<E>> buildBionutritionDocHeaderDTOByDocTypeMap(List<BionutritionDocHeaderDTO> bionutritionDocHeaderDTOList) {
         Assert.isTrue(CollectionUtil.isNotEmpty(bionutritionDocHeaderDTOList), "bslDocHeaderDTOList is empty");
-        return bionutritionDocHeaderDTOList.stream().map(item -> (E) buildBslDocHeaderDTO(item)).collect(Collectors.groupingBy(BionutritionDocHeaderBaseDTO::getDocType));
+        return bionutritionDocHeaderDTOList.stream().map(item -> (E) buildBionutritionDocHeaderDTO(item)).collect(Collectors.groupingBy(BionutritionDocHeaderBaseDTO::getDocType));
     }
 
 

+ 59 - 4
warewms-base/src/main/java/com/ruoyi/base/constant/type/BizEnum.java

@@ -60,8 +60,10 @@ public class BizEnum {
         }
     }
 
-
-    public enum BslDocTypeEnum implements IBaseEnum {
+    /**
+     * 单据类型, 类型对应单据头指向类
+     */
+    public enum BionutritionHeaderDocTypeEnum implements IBaseEnum {
         /**
          * 成品入库单
          */
@@ -69,7 +71,7 @@ public class BizEnum {
         /**
          * 生产领料单
          */
-        PRODUCTION_PICKING_LIST("ProductionPickingList", "com.ruoyi.ams.bionutrition.doc.dto.header.ProductionPickingListHeaderDTO"),
+        PRODUCTION_PICKING_RECEIPT("ProductionPickingReceipt", "com.ruoyi.ams.bionutrition.doc.dto.header.ProductionPickingReceiptHeaderDTO"),
         /**
          * 生产退库单
          */
@@ -91,7 +93,60 @@ public class BizEnum {
 
         private String className;
 
-        BslDocTypeEnum(String docType, String className) {
+        BionutritionHeaderDocTypeEnum(String docType, String className) {
+            this.docType = docType;
+            this.className = className;
+        }
+
+        public String getClassName() {
+            return className;
+        }
+
+        public String getDocType() {
+            return docType;
+        }
+
+        @Override
+        public String getCode() {
+            return getDocType();
+        }
+
+    }
+
+    /**
+     * 单据类型, 类型对应单据明细指向类
+     */
+    public enum BionutritionDetailDocTypeEnum implements IBaseEnum {
+        /**
+         * 成品入库单
+         */
+        FINISHED_PRODUCT_RECEIPT("FinishedProductReceipt", "com.ruoyi.ams.bionutrition.doc.dto.detail.FinishedProductReceiptDetailsDTO"),
+        /**
+         * 生产领料单
+         */
+        PRODUCTION_PICKING_RECEIPT("ProductionPickingReceipt", "com.ruoyi.ams.bionutrition.doc.dto.detail.ProductionPickingReceiptDetailsDTO"),
+        /**
+         * 生产退库单
+         */
+        PRODUCTION_RETURN_ORDER("ProductionReturnOrder", "com.ruoyi.ams.bionutrition.doc.dto.detail.ProductionReturnOrderDetailsDTO"),
+        /**
+         * 采购收货单
+         */
+        PURCHASE_RECEIPT("PurchaseReceipt", "com.ruoyi.ams.bionutrition.doc.dto.detail.PurchaseReceiptDetailsDTO"),
+        /**
+         * 销售出库单
+         */
+        SALE_OUTBOUND_ORDER("SaleOutboundOrder", "com.ruoyi.ams.bionutrition.doc.dto.detail.SaleOutboundOrderDetailsDTO"),
+        /**
+         * 销售退库单
+         */
+        SALE_RETURN_ORDER("SaleReturnOrder", "com.ruoyi.ams.bionutrition.doc.dto.detail.SaleReturnOrderDetailsDTO");
+
+        private String docType;
+
+        private String className;
+
+        BionutritionDetailDocTypeEnum(String docType, String className) {
             this.docType = docType;
             this.className = className;
         }