严智鑫
2024-05-07 0ec03c977e15aa7ac16c08e4fa4f0d4c901d19ee
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package com.mes.edgstoragecage.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.query.MPJQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.mes.edgstoragecage.entity.EdgStorageCage;
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
import com.mes.pp.entity.OptimizeDetail;
import com.mes.pp.entity.OptimizeLayout;
import com.mes.pp.mapper.OptimizeDetailMapper;
import com.mes.taskcache.entity.TaskCache;
import com.mes.uppattenusage.entity.UpPattenUsage;
import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Objects;
 
/**
 * <p>
 * 服务实现类
 * </p>
 *
 * @author zhoush
 * @since 2024-04-07
 */
@Service
public class EdgStorageCageDetailsServiceImpl extends MPJBaseServiceImpl<EdgStorageCageDetailsMapper, EdgStorageCageDetails> implements EdgStorageCageDetailsService {
 
    @Autowired
    UpPattenUsageMapper upPattenUsageMapper;
    @Autowired
    OptimizeDetailMapper optimizeDetailMapper;
 
    @Autowired
    EdgStorageCageMapper edgStorageCageMapper;
 
    /**
     * 识别   拿走:200/破损:201
     * @param glassId
     * @param ControlsId
     * @return
     */
    public boolean identWorn(String glassId, int ControlsId) {
        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId,glassId));
        if (edgStorageCageDetails.size() == 1) {
            EdgStorageCageDetails item=edgStorageCageDetails.get(0);
            item.setState(ControlsId);
            baseMapper.update(edgStorageCageDetails.get(0), new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId,glassId));
            return true;
        }
//            Sql版本
//        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
//        if (edgStorageCageDetails.size() == 1) {
//            EdgStorageCageDetails item=edgStorageCageDetails.get(0);
//            item.setState(ControlsId);
//            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
//            return true;
//        }
        return false;
    }
 
    /**
     * 获取 切割当前版图
     * @return
     */
    @Override
    public List<Map<String, Object>> selectCutTerritory() {
        List<UpPattenUsage> upPattenUsage=upPattenUsageMapper.selectList(new MPJLambdaWrapper<UpPattenUsage>()
                .selectAll(UpPattenUsage.class)
                .eq(UpPattenUsage::getState, 1));
 
        if(!upPattenUsage.isEmpty()){
            UpPattenUsage upPattenUsage1=upPattenUsage.get(0);
            return optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                    .selectAll(OptimizeDetail.class)
                    .selectAs(OptimizeLayout::getWidth,"olWidth")
                    .selectAs(OptimizeLayout::getWidth,"olHeight")
                    .leftJoin(OptimizeLayout.class,on->on
                            .eq(OptimizeLayout::getProjectNo,OptimizeDetail::getProjectNo)
                            .eq(OptimizeLayout::getStockId,OptimizeDetail::getStockId))
                    .eq(OptimizeDetail::getProjectNo, upPattenUsage1.getEngineeringId())
                    .eq(OptimizeDetail::getStockId,upPattenUsage1.getLayoutSequence())
            );
 
//            Sql版本
//            return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
//                    .select("ol.width as olwidth","ol.height as olheight")
//                    .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
//                    .eq("t.project_no", upPattenUsage1.getEngineeringId())
//                    .eq("t.stock_id",upPattenUsage1.getLayoutSequence())
//            );
        }
        return null;
    }
 
    /**
     * 获取 工程下的当前版图
     * @param current
     * @return
     */
    @Override
    public List<Map<String, Object>> selectCurrentCutTerritory(String current) {
 
        return optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                .selectAll(OptimizeDetail.class)
                .selectAs(OptimizeLayout::getWidth,"olWidth")
                .selectAs(OptimizeLayout::getWidth,"olHeight")
                .leftJoin(OptimizeLayout.class,on->on
                        .eq(OptimizeLayout::getProjectNo,OptimizeDetail::getProjectNo)
                        .eq(OptimizeLayout::getStockId,OptimizeDetail::getStockId))
                .eq(OptimizeDetail::getProjectNo, current)
        );
//Sql版本
//        return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
//                .select("ol.width as olwidth","ol.height as olheight")
//                .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
//                .eq("t.project_no",current)
//        );
    }
 
    /**
     * 查询笼内版图差值范围内的  此尺寸玻璃  如无则按照 钢化版图序号 以及玻璃序号
     * @param glassId
     * @param poor
     * @return
     */
    @Override
    public EdgStorageCageDetails selectConformGlass(String glassId, int poor){
        //1.去笼内查询此尺寸的玻璃 目前版图差值内的玻璃  是否有同尺寸的
        //1.1 有同尺寸的 则生成同尺寸的任务
        //1.2 无同尺寸的 则生成版图顺序最小的出片
        EdgStorageCageDetails edgStorageCageDetails= baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                .selectAll(EdgStorageCageDetails.class)
                .eq(EdgStorageCageDetails::getGlassId,glassId)
        );
        List<EdgStorageCageDetails> listEdgStorageCageDetails= baseMapper.selectList(new LambdaQueryWrapper<EdgStorageCageDetails>()
                .lt(EdgStorageCageDetails::getState,200)
                .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
        );
        EdgStorageCageDetails minTemperingLayoutId=new EdgStorageCageDetails();
        if(!listEdgStorageCageDetails.isEmpty()){
            minTemperingLayoutId=listEdgStorageCageDetails.get(0);
        }
        EdgStorageCageDetails result=new EdgStorageCageDetails();
        if(edgStorageCageDetails!=null&&minTemperingLayoutId!=null){
            result=edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class,new MPJLambdaWrapper<EdgStorageCage>()
                    .selectAll(EdgStorageCageDetails.class)
                    .leftJoin(EdgStorageCageDetails.class,on->on
                            .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
                            .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
                    .isNotNull(EdgStorageCageDetails::getSlot)
                    .eq(EdgStorageCageDetails::getWidth,edgStorageCageDetails.getWidth())
                    .eq(EdgStorageCageDetails::getHeight,edgStorageCageDetails.getHeight())
                    .ge(EdgStorageCageDetails::getTemperingLayoutId,minTemperingLayoutId.getTemperingLayoutId())
                    .le(EdgStorageCageDetails::getTemperingLayoutId,minTemperingLayoutId.getTemperingLayoutId()+poor)
                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
            );
        }
 
        if (result==null){
            result=edgStorageCageMapper.selectJoinOne(EdgStorageCageDetails.class,new MPJLambdaWrapper<EdgStorageCage>()
                    .selectAll(EdgStorageCageDetails.class)
                    .leftJoin(EdgStorageCageDetails.class,on->on
                            .eq(EdgStorageCageDetails::getDeviceId,EdgStorageCage::getDeviceId)
                            .eq(EdgStorageCageDetails::getSlot,EdgStorageCage::getSlot))
                    .isNotNull(EdgStorageCageDetails::getSlot)
                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId,EdgStorageCageDetails::getTemperingFeedSequence)
            );
        }
        return result;
    }
 
}