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 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 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 glasses = singalGlassDao.findByApartId(matchname); List glasses = singalGlassDao.findByBatch(matchname); if (glasses.size()>0) { for (int i = 0; i < glasses.size(); i++) { List gl = singalGlassDao.findByA(matchname,glasses.get(i).getApart_id());//找到当前要匹配的玻璃 List orderes = new ArrayList(); 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(); } } } } } }