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