|
@@ -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)
|