严智鑫
2025-11-13 945bc394f40d8af1072a53da9a94f24207124e6d
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
183
184
185
186
187
188
189
package com.northglass.service.shelfrank;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
 
import com.northglass.constants.StateConstants.RackState;
import com.northglass.constants.StateConstants.ShelfRankState;
import com.northglass.entity.LoadMachineRack;
import com.northglass.entity.OptPattern;
import com.northglass.entity.RawPackage;
import com.northglass.entity.ShelfRank;
import com.northglass.repository.RawPackageDao;
import com.northglass.repository.ShelfRankDao;
import com.northglass.repository.ShelfTaskDao;
 
@Component
@Transactional
public class ShelfRankService {
 
    private static final Logger LOGGER = LoggerFactory.getLogger(ShelfRankService.class);
 
    @Autowired
    private ShelfRankDao shelfRankDao;
 
    @Autowired
    private RawPackageDao rawPackageDao;
 
    @Autowired
    private ShelfTaskDao shelfTaskDao;
 
    public ShelfRank save(ShelfRank shelfRank) {
        if (shelfRank.getState() == null || shelfRank.getState().equals("")) {
            shelfRank.setState(ShelfRankState.FREE);
        }
 
        if (shelfRank.getRawPackage() == null) {
            shelfRank.setRawPackage(null);
            shelfRank.setColor(null);
            shelfRank.setCompletePieces(null);
            shelfRank.setGlassId(null);
            shelfRank.setLength(null);
            shelfRank.setPieces(null);
            shelfRank.setPrecent(null);
            shelfRank.setThickness(null);
            shelfRank.setWidth(null);
            shelfRank.setCreateTime(null);
        }
 
        shelfRank = shelfRankDao.save(shelfRank);
        return shelfRank;
    }
 
    public void batchDeleteRanks(String shelfRankIds) {
        LOGGER.debug("> Start batchDeleteRanks");
        LOGGER.debug("shelfRankIds: " + shelfRankIds);
 
        String[] shelfRankIdArray = shelfRankIds.split(";");
        for (String shelfRankId : shelfRankIdArray) {
            delete(Long.parseLong(shelfRankId));
        }
 
        LOGGER.debug("> End batchDeleteRanks");
    }
 
    public void delete(Long shelfRankId) {
        ShelfRank shelfRank = shelfRankDao.findOne(shelfRankId);
        if (shelfRank != null) {
            shelfRankDao.delete(shelfRankId);
 
        }
    }
 
    public void deleteRawPackageForRank(Long shelfRankId) {
        ShelfRank rank = getById(shelfRankId);
        RawPackage rawPackage = rank.getRawPackage();
 
        rank.setState(ShelfRankState.FREE);
        rank.setRawPackage(null);
        rank.setColor(null);
        rank.setCompletePieces(null);
        rank.setGlassId(null);
        rank.setLength(null);
        rank.setPieces(null);
        rank.setPrecent(null);
        rank.setThickness(null);
        rank.setWidth(null);
        rank.setCreateTime(null);
        shelfRankDao.save(rank);
 
        rawPackageDao.delete(rawPackage);
    }
 
    public ShelfRank getById(Long id) {
        return shelfRankDao.findOne(id);
    }
    public boolean isCopyOptPattern(LoadMachineRack loadrack,OptPattern pattern) {
        try {
            String manufacture=loadrack.getRawPackage().getManufacturer()+"";
            String Optmanufacture=pattern.getRawPackageTxt().getManufacture()+"";
            if(manufacture.equals(Optmanufacture)){
                if ((loadrack.getRawPackage().getWidth() == pattern.getWidth() 
                        && loadrack.getRawPackage().getHeight() == pattern.getHeight()
                        && loadrack.getRawPackage().getThickness() == pattern.getGlassThickness()
                        && loadrack.getRawPackage().getColor().equals(pattern.getColor()) 
                        && loadrack.getRawPackage().getLeftPieces() > 0)
                        ||(loadrack.getRawPackage().getWidth() == pattern.getHeight() 
                        && loadrack.getRawPackage().getHeight() == pattern.getWidth()
                        && loadrack.getRawPackage().getThickness() == pattern.getGlassThickness()
                        && loadrack.getRawPackage().getColor().equals(pattern.getColor()) 
                        && loadrack.getRawPackage().getLeftPieces() > 0)) 
                    {
                        return true;
                    }
            }            
        } catch (Exception e) {
            // TODO: handle exception
        }
        return false;
    }
    /**
     * 根据Pattern的宽度、高度、厚度和膜系去匹配货架上的原片
     * 
     * @param pattern
     * @return 若匹配,则返回相应货架;若不匹配,则返回null。
     */
    public ShelfRank getShelfRankByOptPattern(OptPattern pattern) {
        List<ShelfRank> shelfRankList = shelfRankDao.findInWorkRanks();
        List<ShelfRank> shelfRankes = new ArrayList<ShelfRank>();// 新建list集合,用来存放满足上片条件的仓位
        List<ShelfRank> shelfRankes2 = new ArrayList<ShelfRank>();
        if (shelfRankList.size() > 0) {
            for (ShelfRank rank : shelfRankList) {
                RawPackage rawPackage = rank.getRawPackage();
                String manufacture=rawPackage.getManufacturer()+"";
                String Optmanufacture=pattern.getRawPackageTxt().getManufacture()+"";
                if (rawPackage != null && pattern != null&&manufacture.equals(Optmanufacture)) {
                    if ((rawPackage.getWidth() == pattern.getWidth() && rawPackage.getHeight() == pattern.getHeight()
                            && rawPackage.getThickness() == pattern.getGlassThickness()
                            && rawPackage.getColor().equals(pattern.getColor()) && rawPackage.getLeftPieces() > 0
                            && rank.getFlag().equals("1"))||(rawPackage.getWidth() == pattern.getHeight() && rawPackage.getHeight() == pattern.getWidth()
                            && rawPackage.getThickness() == pattern.getGlassThickness()
                            && rawPackage.getColor().equals(pattern.getColor()) && rawPackage.getLeftPieces() > 0
                            && rank.getFlag().equals("1"))) {
                        shelfRankes.add(rank);
                    }
                }
            }
            // 得到片数最少的仓位
            if (shelfRankes.size() != 0) {
                ShelfRank minShelfRank = shelfRankes.get(0);
                for (int i = 0; i < shelfRankes.size(); i++) {
                    if (shelfRankes.get(i).getRawPackage().getLeftPieces() < minShelfRank.getRawPackage().getLeftPieces()) 
                    {
                        minShelfRank = shelfRankes.get(i);
                    }else if(shelfRankes.get(i).getRawPackage().getLeftPieces() == minShelfRank.getRawPackage().getLeftPieces()){
                        if(shelfRankes.get(i).getRawPackage().getCreateTime().compareTo(minShelfRank.getRawPackage().getCreateTime())!=-1){
                            minShelfRank = shelfRankes.get(i);
                        }
                    }                    
                }
                return minShelfRank;
            }
        }
        return null;
    }
 
    public ShelfRank findrack(OptPattern optPattern) {
        List<ShelfRank> shelfRankes = shelfRankDao.findAll();
        for (ShelfRank shelfRank : shelfRankes) {
            if (!shelfRank.getState().equals("空闲") && shelfRank.getPieces()>0) {
                if ((optPattern.getHeight() == shelfRank.getRawPackage().getHeight()
                        && optPattern.getWidth() == shelfRank.getRawPackage().getWidth())
                        || (optPattern.getHeight() == shelfRank.getRawPackage().getWidth()
                                && optPattern.getWidth() == shelfRank.getRawPackage().getHeight())) {
                    return shelfRank;
                }
            }
        }
        LOGGER.debug("无玻璃匹配!");
        // optPattern.getHeight()
        return null;
    }
}