wzy
2021-11-30 0e5aaeba97021c289485a652ec6af0bb37f92af7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.xzx.gc.order.service;
 
import cn.hutool.core.collection.CollUtil;
import com.xzx.gc.common.constant.Constants;
import com.xzx.gc.entity.PackageGoodsInfo;
import com.xzx.gc.order.mapper.PackageGoodsInfoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
 
import java.util.List;
import java.util.stream.Collectors;
 
@Service
@Transactional
public class PackageGoodsInfoService {
    @Autowired
    private PackageGoodsInfoMapper packageGoodsInfoMapper;
 
    public PackageGoodsInfo findById(Long id) {
        return packageGoodsInfoMapper.selectByPrimaryKey(id);
    }
 
 
    public List<PackageGoodsInfo> findByPackageId(String packageId) {
        Example example = new Example(PackageGoodsInfo.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andIsNotNull("parentId");
        criteria.andEqualTo("packageId", packageId);
        criteria.andEqualTo("delFlag", Constants.DEL_NOT_FLAG);
 
        List<PackageGoodsInfo> packageGoodsInfos = packageGoodsInfoMapper.selectByExample(example);
        packageGoodsInfos=changeData(packageGoodsInfos);
        return packageGoodsInfos;
    }
 
    public PackageGoodsInfo findByPackageIdAndItemType(String packageId,String itemType) {
        Example example = new Example(PackageGoodsInfo.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("packageId", packageId);
        criteria.andEqualTo("itemType",itemType);
        criteria.andEqualTo("delFlag", Constants.DEL_NOT_FLAG);
        PackageGoodsInfo packageGoodsInfos = packageGoodsInfoMapper.selectOneByExample(example);
        return packageGoodsInfos;
    }
 
    public PackageGoodsInfo findByPackageIdAndItemTypeForBidden(String packageId,String itemType) {
        Example example = new Example(PackageGoodsInfo.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("packageId", packageId);
        criteria.andEqualTo("itemType",itemType);
        List<PackageGoodsInfo> packageGoodsInfos = packageGoodsInfoMapper.selectByExample(example);
        return packageGoodsInfos.get(0);
    }
 
    /**
     *    处理数据 以合伙人优先(partner_id不为-1) 运营员次 partner为-1
     * @param packageGoodsInfos
     * @return
     */
    private List<PackageGoodsInfo>  changeData( List<PackageGoodsInfo> packageGoodsInfos){
        //取出任意一条数据判断是否存在多条 。如果存在多条 则忽略partner_id为-1的。
        if(CollUtil.isNotEmpty(packageGoodsInfos)){
            String itemType = packageGoodsInfos.get(0).getItemType();
            long count = packageGoodsInfos.stream().filter(x -> x.getItemType().equals(itemType)).count();
            if(count>1){
                packageGoodsInfos.removeIf(x->Constants.DEFAULT_ID.equals(x.getPartnerId()));
            }
        }
        return packageGoodsInfos;
    }
 
 
 
    /**
     * 查找所有子类的itemType集合
     * @param packageId
     * @param itemType
     * @return
     */
    public List<String> findChildItemTypeByType(String packageId,String itemType){
        PackageGoodsInfo packageGoodsInfo =   findByPackageIdAndItemType(packageId,itemType);
        long parentId = packageGoodsInfo.getId();
        List<PackageGoodsInfo> byParentId = findByParentId(parentId);
        return byParentId.stream().map(x->x.getItemType()).collect(Collectors.toList());
    }
 
 
    /**
     * 根据父Id查找子类
     * @param parentId
     * @return
     */
    public List<PackageGoodsInfo> findByParentId(Long parentId){
        PackageGoodsInfo packageGoodsInfo=new PackageGoodsInfo();
        packageGoodsInfo.setParentId(parentId);
        packageGoodsInfo.setDelFlag(Constants.DEL_NOT_FLAG);
        List<PackageGoodsInfo> list = packageGoodsInfoMapper.select(packageGoodsInfo);
        return  list;
    }
 
 
}