严智鑫
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
package com.northglass.service.glass;
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
import org.apache.poi.xssf.usermodel.XSSFSheet;
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.GlassArrangeState;
import com.northglass.constants.StateConstants.ManufactureBatchState;
import com.northglass.constants.StateConstants.sendGlassState;
import com.northglass.entity.CardNumber;
import com.northglass.entity.Glass;
import com.northglass.entity.GlassOrder;
import com.northglass.entity.SingalGlass;
import com.northglass.repository.CardNumberDao;
import com.northglass.repository.GlassDao;
import com.northglass.repository.ManufactureBatchDao;
import com.northglass.repository.SingalGlassDao;
import com.northglass.util.ExcelUtil;
 
@Component
@Transactional
public class GlassService {
 
    private static final Logger LOGGER = LoggerFactory.getLogger(GlassService.class);
 
    private static final int DATA_START_ROW = 1;
 
    private static final int MANUFACTURER_COLUMN = 2;
    private static final int APART_ID_COLUMN = 4;
    private static final int ORDER_NUMBER_COLUMN = 6;
    private static final int PIECE_SIGN_COLUMN = 7;
    private static final int PIECE_COLUMN = 8;
    private static final int LENGTH_COLUMN = 11;
    private static final int WIDTH_COLUMN = 10;
    private static final int CUSTOMER_COLUMN = 20;
    private static final int APPLICATION_COLUMN = 21;
    private static final int FLOOR_NUMBER = 22;
    private static final int PRODUCTION_COLUMN = 23;
    private static final int SINGLE_COLUMN = 24;
    private static final int REMARK_COLUMN = 29;
 
    private static final String COLOR = "Low_E";
 
    private String glasscolor = "";
 
    @Autowired
    private GlassDao glassDao;
    
    @Autowired
    private CardNumberDao cardNumberDao;
 
    @Autowired
    private ManufactureBatchDao manufactureBatchDao;
    
    @Autowired
    private SingalGlassDao singalGlassDao;
 
    public Glass save(Glass glass) {
        return glassDao.save(glass);
    }
 
    public Glass getById(Long id) {
        return glassDao.findOne(id);
    }
 
    public List<Glass> findAll() {
        return glassDao.findAll();
    }
 
    public String parseGlassExcel(File excelFile, String manufacture_batch) throws IOException {
        LOGGER.debug("> Start parseGlassExcel");
 
        ExcelUtil excel = new ExcelUtil(excelFile.getAbsolutePath());
        XSSFSheet sheet = excel.getSheet(0);
 
//        ManufactureBatch manufactureBatch = manufactureBatchDao.findWaitingManufactureBatch();
//        String manufacture_batch = manufactureBatch.getNumber();
        for (int i = DATA_START_ROW; i <= sheet.getLastRowNum(); i++) {
            String apart_id = excel.getStringValueAt(sheet, i, APART_ID_COLUMN);// 得到流程卡号
            String order_number = excel.getStringValueAt(sheet, i, ORDER_NUMBER_COLUMN);// 得到订单序号
            String piece_sign = excel.getStringValueAt(sheet, i, PIECE_SIGN_COLUMN);// 得到片标记
            int pieces = Integer.parseInt(excel.getStringValueAt(sheet, i, PIECE_COLUMN));// 得到数量
            double length = Double.parseDouble(excel.getStringValueAt(sheet, i, LENGTH_COLUMN));// 得到长度
            double width = Double.parseDouble(excel.getStringValueAt(sheet, i, WIDTH_COLUMN));// 得到高度
            String customer = excel.getStringValueAt(sheet, i, CUSTOMER_COLUMN);// 得到客户名称
            String application = excel.getStringValueAt(sheet, i, APPLICATION_COLUMN);// 得到项目名称
            String floor_number = excel.getStringValueAt(sheet, i, FLOOR_NUMBER);// 得到楼层编号
            String production = excel.getStringValueAt(sheet, i, PRODUCTION_COLUMN);// 得到成品名称
            String single = excel.getStringValueAt(sheet, i, SINGLE_COLUMN);// 得到单品名称
            double thickness = Double.parseDouble(single.substring(0, single.indexOf("m")));// 得到单品名称中的厚度
            if (single.contains("CLR")) {
                glasscolor = GlassService.COLOR;
            } else {
                glasscolor = "white";
            }
            String remark = excel.getStringValueAt(sheet, i, REMARK_COLUMN);// 得到明细备注
 
            Glass glass = new Glass(GlassArrangeState.MEASURE, 0, length, width, thickness, glasscolor, customer,
                    GlassArrangeState.MEASURE, "", apart_id, manufacture_batch, pieces, 0,0, null, application,
                    production, floor_number, order_number, piece_sign, remark,sendGlassState.NOTSEND,sendGlassState.NOTSEND);
            glassDao.save(glass);
            List<CardNumber> cardNumbers = cardNumberDao.findAll();
            if (cardNumbers.size()>0) {
                for (int j = 0; j < cardNumbers.size(); j++) {
                    CardNumber cardNumber = cardNumbers.get(j);
                    if (cardNumber.getNumber().equals(apart_id)) {
                        break;
                    }
                    if (j == cardNumbers.size() - 1) {
                        CardNumber cardNumber1 = new CardNumber(apart_id,ManufactureBatchState.WAITING);
                        cardNumberDao.save(cardNumber1);
                    }
                }
            }else{
                CardNumber cardNumber = new CardNumber(apart_id,ManufactureBatchState.WAITING);
                cardNumberDao.save(cardNumber);
            }
        }
 
        // 添加任务
        String custom = excel.getStringValueAt(sheet, 2, CUSTOMER_COLUMN);
        LOGGER.debug("> End parseGlassExcel");
        return "success";
    }
    
    private void setGlassOrder(String matchname){
//        List<SingalGlass> glasses = singalGlassDao.findByApartId(matchname);
        List<SingalGlass> glasses = singalGlassDao.findByBatch(matchname);
        if (glasses.size()>0) {
            for (int i = 0; i < glasses.size(); i++) {
                List<SingalGlass> gl = singalGlassDao.findByA(matchname,glasses.get(i).getApart_id());//找到当前要匹配的玻璃
                List<GlassOrder> orderes = new ArrayList<GlassOrder>();
                for (int j = 0; j < gl.size()-1; j++) {
                    
                    if (gl.get(j).getGlassId() == gl.get(j+1).getGlassId()
                            &&gl.get(j).getLength() == gl.get(j+1).getLength()
                            &&gl.get(j).getWidth() == gl.get(j+1).getWidth()
                            &&gl.get(j).getId().equals(gl.get(j+1).getId())) {
                        GlassOrder order = new GlassOrder();
                    }else {
                        GlassOrder order = new GlassOrder();
                    }
                }
            }
        }
        
    }
 
}