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();
|
}
|
}
|
}
|
}
|
|
}
|
|
}
|