package com.northglass.service.shelfmanager;
|
|
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileOutputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.InputStreamReader;
|
import java.io.OutputStream;
|
import java.nio.charset.StandardCharsets;
|
import java.text.DecimalFormat;
|
import java.text.NumberFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Collections;
|
import java.util.Date;
|
import java.util.Enumeration;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Locale;
|
import java.util.Map;
|
import java.util.Properties;
|
import java.util.Set;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Sort.Direction;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
import com.northglass.constants.GlassColor;
|
import com.northglass.constants.ShelfTaskFlag;
|
import com.northglass.constants.ShelfTaskType;
|
import com.northglass.constants.StateConstants.ConnectState;
|
import com.northglass.constants.StateConstants.LoadMachineRackState;
|
import com.northglass.constants.StateConstants.RackState;
|
import com.northglass.constants.StateConstants.RawPackageTxtState;
|
import com.northglass.constants.StateConstants.ShelfHoistState;
|
import com.northglass.constants.StateConstants.ShelfRankState;
|
import com.northglass.constants.StateConstants.ShelfTaskState;
|
import com.northglass.constants.StateConstants.TaskState;
|
import com.northglass.entity.ArrangeMachineRank;
|
import com.northglass.entity.CountMachineSort;
|
import com.northglass.entity.DummyCut;
|
import com.northglass.entity.DummyGlass;
|
import com.northglass.entity.DummyRack;
|
import com.northglass.entity.DummyTime;
|
import com.northglass.entity.Glass;
|
import com.northglass.entity.GlassCommer;
|
import com.northglass.entity.GlassNumberColor;
|
import com.northglass.entity.GlassOrder;
|
import com.northglass.entity.LoadMachineFixRack;
|
import com.northglass.entity.LoadMachineRack;
|
import com.northglass.entity.LoadMachineTask;
|
import com.northglass.entity.OptPattern;
|
import com.northglass.entity.ProdLineState;
|
import com.northglass.entity.Rank;
|
import com.northglass.entity.RankFit;
|
import com.northglass.entity.RawPackage;
|
import com.northglass.entity.RawPackageTxt;
|
import com.northglass.entity.Shelf;
|
import com.northglass.entity.ShelfHoist;
|
import com.northglass.entity.ShelfRank;
|
import com.northglass.entity.ShelfStatu;
|
import com.northglass.entity.ShelfTask;
|
import com.northglass.entity.SingalGlass;
|
import com.northglass.repository.ArrangeMachineRankDao;
|
import com.northglass.repository.BreakReportDao;
|
import com.northglass.repository.CountMachineSortDao;
|
import com.northglass.repository.CountMachineTaskDao;
|
import com.northglass.repository.CutMachineTaskDao;
|
import com.northglass.repository.GaoliweiMachineTaskDao;
|
import com.northglass.repository.GlassCommerDao;
|
import com.northglass.repository.GlassDao;
|
import com.northglass.repository.GlassNumberColorDao;
|
import com.northglass.repository.GlassOrderDao;
|
import com.northglass.repository.LoadMachineFixRackDao;
|
import com.northglass.repository.LoadMachineRackDao;
|
import com.northglass.repository.LoadMachineTaskDao;
|
import com.northglass.repository.OptPatternDao;
|
import com.northglass.repository.ProdLineStateDao;
|
import com.northglass.repository.RankDao;
|
import com.northglass.repository.RankFitDao;
|
import com.northglass.repository.RawPackageDao;
|
import com.northglass.repository.RawPackageTxtDao;
|
import com.northglass.repository.ReportTaskDao;
|
import com.northglass.repository.ShelfDao;
|
import com.northglass.repository.ShelfHoistDao;
|
import com.northglass.repository.ShelfRankDao;
|
import com.northglass.repository.ShelfStatuDao;
|
import com.northglass.repository.ShelfTaskDao;
|
import com.northglass.repository.SingalGlassDao;
|
import com.northglass.service.device.DeviceService;
|
import com.northglass.service.glass.GlassService;
|
import com.northglass.service.loadmachinerack.LoadMachineRackService;
|
import com.northglass.service.optpattern.OptPatternService;
|
import com.northglass.service.shelf.ShelfService;
|
import com.northglass.util.HexUtil;
|
|
import net.sf.ehcache.search.aggregator.Count;
|
import net.sf.json.JSON;
|
import net.sf.json.JSONObject;
|
import net.sf.json.JsonConfig;
|
import net.sf.json.util.PropertyFilter;
|
|
@Component
|
@Transactional
|
public class ShelfManagerService {
|
|
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(ShelfManagerService.class);
|
|
@Autowired
|
private RawPackageTxtDao rawPackageTxtDao;
|
|
@Autowired
|
private OptPatternDao optPatternDao;
|
|
@Autowired
|
private ShelfStatuDao shelfStatuDao;
|
|
@Autowired
|
private RawPackageDao rawPackageDao;
|
|
@Autowired
|
private OptPatternService optPatternService;
|
|
@Autowired
|
private ShelfRankDao shelfRankDao;
|
|
@Autowired
|
private ShelfHoistDao shelfHoistDao;
|
|
@Autowired
|
private ShelfTaskDao shelfTaskDao;
|
|
@Autowired
|
private ShelfDao shelfDao;
|
|
@Autowired
|
private LoadMachineTaskDao loadMachineTaskDao;
|
|
@Autowired
|
LoadMachineRackDao loadMachineRackDao;
|
|
@Autowired
|
ProdLineStateDao prodLineStateDao;
|
|
@Autowired
|
ReportTaskDao reportTaskDao;
|
|
@Autowired
|
BreakReportDao breakReportDao;
|
|
@Autowired
|
private GlassNumberColorDao glassNumberColorDao;
|
|
@Autowired
|
private ShelfService service;
|
|
|
@Autowired
|
private DeviceService deviceService;
|
|
@Autowired
|
private LoadMachineRackService loadMachineRackService;
|
|
@Autowired
|
private GlassDao glassDao;
|
|
@Autowired
|
private GlassService glassService;
|
|
@Autowired
|
private SingalGlassDao singalGlassDao;
|
|
@Autowired
|
private CountMachineTaskDao countMachineTaskDao;
|
|
@Autowired
|
private LoadMachineFixRackDao loadMachineFixRackDao;
|
|
@Autowired
|
private GlassCommerDao glassCommerDao;
|
|
@Autowired
|
private RankDao rankDao;
|
|
@Autowired
|
private CutMachineTaskDao cutMachineTaskDao;
|
|
@Autowired
|
private GaoliweiMachineTaskDao gaoliweiMachineTaskDao;
|
|
@Autowired
|
private GlassOrderDao glassOrderDao;
|
|
@Autowired
|
private ArrangeMachineRankDao arrangeMachineRankDao;
|
|
@Autowired
|
private CountMachineSortDao countMachineSortDao;
|
|
@Autowired
|
private RankFitDao rankFitDao;
|
|
private static String st;
|
|
private static String sttr;
|
|
// private static String []laji;
|
|
private static int tb;
|
|
private static double time = 0;
|
|
/**
|
* 加载硬盘上文件夹中的所有原片信息
|
*
|
* @param request
|
*/
|
|
@SuppressWarnings("unused")
|
public void getRawPackage(HttpServletRequest request) {
|
LOGGER.debug("开始getRawPackage方法");
|
String filepath = "D://test";
|
File file = new File(filepath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
if (file.isDirectory()) {
|
// 如果file是文件夹
|
String[] filelist = file.list();
|
for (int i = 0; i < filelist.length; i++) {
|
String fileName = filelist[i];
|
File readfile = new File(filepath + File.separator + filelist[i]);
|
if (!readfile.isDirectory()) {
|
continue;
|
}
|
String[] optOrExcelNames = readfile.list();
|
String uploadExcelResult = null;
|
String uploadOptResult = null;
|
// 如果一个文件夹里面文件数量不是2个或者不是opt和EXCEL,就不读取文件夹内的内容!
|
if (optOrExcelNames.length != 2) {
|
continue;
|
}
|
if (!((optOrExcelNames[0].substring(optOrExcelNames[0].lastIndexOf(".") + 1).equals("opt")
|
&& (optOrExcelNames[1].substring(optOrExcelNames[1].lastIndexOf(".") + 1).equals("xlsx")))
|
|| (optOrExcelNames[0].substring(optOrExcelNames[0].lastIndexOf(".") + 1).equals("xlsx")
|
&& optOrExcelNames[1].substring(optOrExcelNames[1].lastIndexOf(".") + 1)
|
.equals("opt")))) {
|
continue;
|
}
|
// 如果文件夹里面的文件是opt或者EXCEL,就开始解析
|
for (int j = 0; j < optOrExcelNames.length; j++) {
|
boolean bn = false;
|
String name = optOrExcelNames[j];
|
File newfile = new File(filepath + File.separator + filelist[i] + File.separator + name);
|
// 避免重复导入相同的任务
|
List<RawPackageTxt> rawPackageTxts = rawPackageTxtDao.findAll();
|
for (RawPackageTxt rawPackageTxt : rawPackageTxts) {
|
if (fileName.equals(rawPackageTxt.getTxt_name())) {
|
bn = true;
|
break;
|
}
|
}
|
if (!bn) {
|
if (name.substring(name.lastIndexOf(".") + 1).equals("xlsx")) {
|
try {
|
uploadExcelResult = glassService.parseGlassExcel(newfile, fileName);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
}
|
// 只有当Excel解析成功才能去解析opt
|
if ("success".equals(uploadExcelResult)) {
|
LOGGER.debug("Excel解析完成");
|
for (int k = 0; k < optOrExcelNames.length; k++) {
|
String name = optOrExcelNames[k];
|
File newfile = new File(filepath + File.separator + filelist[i] + File.separator + name);
|
if (name.substring(name.lastIndexOf(".") + 1).equals("opt")
|
|| name.substring(name.lastIndexOf(".") + 1).equals("OPT")) {
|
uploadOptResult = optPatternService.processOptFile(newfile.getAbsolutePath(), fileName);
|
}
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* 得到所有的txt任务
|
*
|
* @return
|
*/
|
public String getRawPackageTxt() {
|
List<RawPackageTxt> txtes = rawPackageTxtDao.findAll();// 得到所有等待分配的任务
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
// 遍历txt对象
|
for (int i = 0; i < txtes.size(); i++) {
|
if (txtes.get(i).getStatus().equals(RawPackageTxtState.WAIT_ASSIGNE)) {
|
html.append("<tr>");
|
html.append("<td>").append(String.valueOf(i + 1)).append("</td>");
|
html.append("<td>").append("<a href='/gmms2/shelfmanager/filename/").append(txtes.get(i).getTxt_name())
|
.append("'>").append(txtes.get(i).getTxt_name()).append("<a>").append("</td>");
|
html.append("<td>").append(txtes.get(i).getStatus()).append("</td>");
|
String string = getglassstatu(txtes.get(i));
|
html.append("<td style='color:#f00;'>").append(string).append("</td>");
|
html.append("<td>").append(formatTime(txtes.get(i).getCreateTime())).append("</td>");
|
html.append("<td>");
|
html.append("<img alt='logo' class='downTask' src='").append("/gmms2/static/images/down.png")
|
.append("'").append("style='height: 45px").append("'>");
|
html.append("</td>");
|
|
html.append("</tr>");
|
}
|
}
|
|
return html.toString();// 返回table
|
}
|
|
public String getRawPackageTxtesWait() {
|
|
StringBuffer html = new StringBuffer();
|
|
List<RawPackageTxt> Txtes = rawPackageTxtDao.findWaitingAssignedTasks();
|
|
// 拼接div
|
for (int i = 0; i < Txtes.size(); i++) {
|
html.append("<lable><input type='checkbox' name='push' id='").append(Txtes.get(i).getId())
|
.append("'style='margin-left: 6px'>");
|
|
html.append("<span style='position:relative;width: 140px; height: 122px;'>");
|
|
html.append("<a href='/gmms2/shelfmanager/filename/").append(Txtes.get(i).getTxt_name()).append("'>");
|
html.append("<img src='").append("/gmms2/static/images/f5.png").append("'>");
|
html.append("</a>");
|
|
html.append(
|
"<span style='line-height:12px; position:absolute; top:50%; left:50%; margin-left:-24px; margin-top:-6px;font-weight: bolder;'>");
|
html.append(Txtes.get(i).getTxt_name());
|
html.append("</span>");
|
|
html.append("</span>");
|
|
html.append("</label>");
|
}
|
|
return html.toString();
|
}
|
|
public boolean isCenterDisplay() {//没有已下发任务和等待下发任务时为 true, 否则为false
|
//等待下发的任务
|
List<RawPackageTxt> txtesWait = rawPackageTxtDao.findByStatus(RawPackageTxtState.WAIT_ASSIGNE);
|
//已下发的任务
|
List<RawPackageTxt> txtesSend = rawPackageTxtDao.findByStatus(RawPackageTxtState.SENDED);
|
|
if (txtesWait != null && txtesWait.size() != 0) {
|
return true;
|
}
|
|
else if (txtesSend != null && txtesSend.size() != 0) {
|
return true;
|
}
|
|
return false;
|
}
|
|
private String getglassstatu(RawPackageTxt rawPackageTxt) {
|
List<OptPattern> nowlist = getopt(rawPackageTxt.getTxt_name());
|
LOGGER.debug("nowlist:" + nowlist.toString());
|
List<OptPattern> optlist = new ArrayList<OptPattern>();
|
List<OptPattern> optlist2 = new ArrayList<OptPattern>();
|
for (int h = 0; h < nowlist.size(); h++) {
|
OptPattern now = nowlist.get(h);
|
// 找到对应的玻璃架
|
List<ShelfRank> ranks = shelfRankDao.findInWorkRanks16(now.getWidth(), now.getHeight(),
|
now.getGlassThickness(), now.getColor());
|
LOGGER.debug("rank:" + ranks.toString());
|
if (ranks.size() > 0) {
|
|
int t = 0;
|
for (int i = 0; i < ranks.size(); i++) {
|
t = t + ranks.get(i).getRawPackage().getLeftPieces();
|
}
|
if (now.getPieces() > t) {
|
optlist.add(now);
|
} else {
|
optlist2.add(now);
|
}
|
} else {
|
optlist.add(now);
|
}
|
}
|
if (optlist.size() > 0 && optlist2.size() > 0) {
|
return "部分满足";
|
} else if (optlist.size() > 0 && optlist2.size() == 0) {
|
return "不满足";
|
} else if (optlist.size() == 0 && optlist2.size() > 0) {
|
return "满足";
|
}
|
return null;
|
}
|
|
/**
|
* 得到库存百分数
|
*
|
* @return
|
*/
|
|
public String getcount() {
|
int freeSize = shelfRankDao.findFreeRanks().size();
|
int complete = shelfRankDao.findAll().size() - freeSize;// 库存料架数
|
int total = shelfRankDao.findAll().size();
|
return complete + "/" + total;
|
}
|
|
/**
|
* 得到库存百分数
|
*
|
* @return
|
*/
|
public String getPrecent() {
|
//占用料架 进度条
|
int freeSize = shelfRankDao.findFreeRanks().size();
|
|
int complete = shelfRankDao.findAll().size() - freeSize;// 库存料架数
|
int total = shelfRankDao.findAll().size();
|
|
NumberFormat numberFormat = NumberFormat.getPercentInstance(Locale.CHINA);
|
numberFormat.setMaximumFractionDigits(2);
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
double number = (double) complete / (double) total * 100;
|
|
if (number <= 50) {
|
html.append("<div class='progress'>");
|
html.append(" <div class='progress-bar progress-bar-striped' style='width:")
|
.append(numberFormat.format((double) complete / (double) total)).append("'>");
|
html.append("<span>" + complete + '/' + total + "</span>");
|
html.append("</div>");
|
html.append("</div>");
|
}
|
|
if (number > 50 && number <= 80) {
|
html.append("<div class='progress'>");
|
html.append(" <div class='progress-bar progress-bar-warning progress-bar-striped' style='width:")
|
.append(numberFormat.format((double) complete / (double) total)).append("'>");
|
html.append("<span>" + complete + '/' + total + "</span>");
|
html.append("</div>");
|
html.append("</div>");
|
}
|
|
if (number > 80) {
|
html.append("<div class='progress'>");
|
html.append(" <div class='progress-bar progress-bar-danger progress-bar-striped' style='width:")
|
.append(numberFormat.format((double) complete / (double) total)).append("'>");
|
html.append("<span>" + complete + '/' + total + "</span>");
|
html.append("</div>");
|
html.append("</div>");
|
}
|
return html.toString();// 返回百分比
|
}
|
|
/**
|
* 得到料架详情
|
*
|
* @return
|
*/
|
/******************************************搞定****************************************************/
|
public String getShelfRankInfo() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
List<ShelfRank> ranks = shelfRankDao.findAll();
|
for (ShelfRank rank : ranks) {//仓储料架信息--已有玻璃的的架子圆柱模块
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rank.getState().equals(ShelfRankState.IN_WORK)) {//仓储料架信息--使用中的架子圆柱模块
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
Date enterDate = rawPackage.getCreateTime();
|
long between = new Date().getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
|
html.append("<td><div class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
|
html.append("<span style='margin-top: opx'>").append(rank.getPieces()).append("</span>");
|
if (days < 3) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' style=' height:"
|
+ percent + "%'")
|
.append("<span>" + leftPieces + '/' + Pieces + "</span>").append("</div>");
|
} else if (days >= 3 && days < 7) {
|
html.append("<div class='progress-bar progress-bar-striped progress-bar-green' style=' height:"
|
+ percent + "%'").append("<span>" + leftPieces + '/' + Pieces + "</span>")
|
.append("</div>");
|
} else {
|
html.append(
|
"<div class='progress-bar progress-bar-danger progress-bar-striped progress-bar-red' style=' height:"
|
+ percent + "%'")
|
.append("<span>" + leftPieces + '/' + Pieces + "</span>").append("</div>");
|
}
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<td><div class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
html.append("<span style='margin-top: opx'>").append(rank.getPieces()).append("</span>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' style='height: 0%'>");
|
html.append("</div>");
|
}
|
|
} else if (rank.getState().equals(ShelfRankState.IN_WORKING)
|
|| rank.getState().equals(ShelfRankState.ON_WAITING)) {//仓储料架信息--正在使用或等待使用的架子圆柱模块
|
// 含有原片信息
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
html.append("<td><div class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
|
html.append("<span style='margin-top: opx'>").append(rank.getPieces()).append("</span>");
|
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-yellow progress-bar-aqua' style=' height:"
|
+ percent + "%'")
|
.append("<span>" + leftPieces + '/' + Pieces + "</span>").append("</div>");
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<td><div class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
html.append("<span style='margin-top: opx'>").append(rank.getPieces()).append("</span>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' style='height: 0%'>");
|
html.append("</div>");
|
}
|
} else if (rank.getState().equals(ShelfRankState.FREE)) {//仓储料架信息--空闲的架子圆柱模块
|
html.append("<td><div class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
html.append("<span style='margin-top: opx'>").append(rank.getPieces()).append("</span>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' style='height: 0%'>");
|
html.append("</div>");
|
}
|
|
html.append("</div>");
|
html.append("<div>");
|
html.append(rank.getNumber());
|
html.append("</div>");
|
html.append("</td>");
|
}
|
return html.toString();// 返回料架信息
|
}
|
|
public String getShelfRankInfso() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
Date nowDate = new Date();
|
List<ShelfRank> ranks = shelfRankDao.findAll();
|
html.append("<table><tr>");
|
for (ShelfRank rank : ranks) {
|
if (!rank.getState().equals(ShelfRankState.FREE)) {
|
// 料架不空闲
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rawPackage != null) {
|
// 含有原片信息
|
int leftPieces = rawPackage.getLeftPieces();
|
int pieces = rawPackage.getPieces();
|
|
Date enterDate = rawPackage.getCreateTime();
|
long between = nowDate.getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
// 计算片数百分比用于设置柱状图高度
|
double per = leftPieces * 1.0 / pieces * 1.0;
|
DecimalFormat df = new DecimalFormat("0%");
|
String percent = df.format(per);
|
html.append("<td><div class='progress vertical active'id='xianshi' val='").append(rank.getNumber())
|
.append("' style='width: 21px;background-color: gray; '>");
|
if (days < 2) {
|
// 2天之内用过
|
// 在内层嵌入DIV
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' role='progressbar' aria-valuenow='");
|
} else if (days >= 2 && days < 4) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-green' role='progressbar' aria-valuenow='");
|
} else if (days >= 4 && days < 7) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-yellow' role='progressbar' aria-valuenow='");
|
} else {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red' role='progressbar' aria-valuenow='");
|
}
|
html.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ")
|
.append(percent).append("'>");
|
html.append("</div>");
|
} else {
|
// 没有原片
|
if (rank.getState().equals(ShelfRankState.NOT_WORK)) {
|
html.append(
|
"<td><div class='progress vertical active' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 100%'>");
|
html.append("</div>");
|
} else {
|
html.append(
|
"<td><div class='progress vertical active' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 0%'>");
|
html.append("</div>");
|
}
|
}
|
|
} else {
|
// 没有原片
|
html.append("<td><div class='progress vertical active' style='width: 21px;background-color: gray; '>");
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 0%'>");
|
html.append("</div>");
|
}
|
html.append("</div></td>");
|
}
|
|
html.append("</tr><tr>");
|
for (ShelfRank rank1 : ranks) {
|
html.append("<td>").append(rank1.getNumber()).append("</td>");
|
}
|
html.append("</tr></table>");
|
return html.toString();// 返回料架信息
|
}
|
|
// 吊装位和上片位的具体显示信息
|
public String getLoadAndShelfHoistInfo() {
|
StringBuffer html = new StringBuffer();
|
// List<ShelfHoist> shelfHoistes = shelfHoistDao.findAll();
|
List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findAll();
|
for (LoadMachineRack loadMachineRack : loadMachineRacks) {
|
RawPackage rawPackage1 = loadMachineRack.getRawPackage();
|
html.append(" <div class='progress-group'><span class='progress-text'>");
|
html.append("上片位").append(loadMachineRack.getNumber());
|
if (rawPackage1 != null) {
|
LOGGER.debug("id:" + rawPackage1.getId());
|
ShelfRank shelfRank = shelfRankDao.findRankByRawId(rawPackage1.getId());
|
html.append(" 使用仓位:" + shelfRank.getNumber());
|
}
|
|
int leftPieces = 0;
|
int pieces = 0;
|
String percent = "0";
|
if (rawPackage1 != null) {
|
leftPieces = rawPackage1.getLeftPieces();
|
pieces = rawPackage1.getPieces();
|
double per = leftPieces * 1.0 / pieces * 1.0;
|
DecimalFormat df = new DecimalFormat("0%");
|
percent = df.format(per);
|
}
|
html.append("</span><span class='progress-number'><b>").append(leftPieces).append("</b>/").append(pieces)
|
.append("</span>");
|
html.append("<div class='progress sm'><div class='progress-bar progress-bar-aqua' style='width: ")
|
.append(percent).append("'></div></div></div>");
|
}
|
|
return html.toString();
|
}
|
|
// 吊装位的具体显示信息
|
public String getShelfHoistInfo() {
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
/*
|
* ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
*
|
* if (shelfHoist.getState().equals(ShelfRankState.IN_WORK) ||
|
* shelfHoist.getState().equals(ShelfRankState.IN_WORKING)) { RawPackage
|
* rawPackage = shelfHoist.getRawPackage(); // 含有原片信息 if (rawPackage !=
|
* null) { int leftPieces = rawPackage.getPieces(); int completePieces =
|
* rawPackage.getLeftPieces();
|
*
|
* long between = new Date().getTime() -
|
* rawPackage.getCreateTime().getTime(); long days = between / (1000 *
|
* 60 * 60 * 24); // 计算片数百分比用于设置柱状图高度 double percent = (double)
|
* completePieces / (double) leftPieces * 100;
|
*
|
* html.append("<td><div class='progress vertical active' value='"
|
* ).append(shelfHoist.getNumber()) .append(
|
* "'style='width: 21px;background-color: gray;'>");
|
*
|
* html.append("<span style='margin-top: opx'></span>");
|
*
|
* if (days < 2) { html.append(
|
* "<div class='progress-bar progress-br-primary progress-bar-striped progress-bar-aqua' style=' height:"
|
* + percent + "%'") .append("<span>" + (completePieces) + '/' +
|
* leftPieces + "</span>").append("</div>"); } else if (days >= 2 &&
|
* days < 4) { html.append(
|
* "<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-green'style=' height:"
|
* + percent + "%'") .append("<span>" + (completePieces) + '/' +
|
* leftPieces + "</span>").append("</div>"); } else if (days >= 4 &&
|
* days < 7) { html.append(
|
* "<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-yellow'style='height:"
|
* + percent + "%'") .append("<span>" + (completePieces) + '/' +
|
* leftPieces + "</span>").append("</div>"); } else { html.append(
|
* "<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red'style=' height:"
|
* + percent + "%'") .append("<span>" + (completePieces) + '/' +
|
* leftPieces + "</span>").append("</div>"); } } }
|
*
|
* // 没有原片 if (shelfHoist.getState().equals(ShelfRankState.FREE)) {
|
* html.append(
|
* "<td><div class='progress vertical active' style='width: 21px;background-color: gray;'"
|
* ); html.append("<span style='margin-top: opx'></span>"); html.append(
|
* "<div class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%'>"
|
* ); html.append("</div>"); } html.append("</div>");
|
* html.append("<div>"); html.append(shelfHoist.getNumber());
|
* html.append("</div>"); html.append("</td>");
|
*/
|
return html.toString();
|
}
|
|
/**
|
* 上片位的具体显示信息
|
*
|
* @return
|
*/
|
/*************************************搞定********************************************************/
|
public String getLoadMachineRackInfo() {
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
List<LoadMachineRack> rackes = loadMachineRackDao.findAll();
|
|
for (LoadMachineRack rack : rackes) {
|
if (rack.getState().equals(ShelfRankState.IN_WORKING)) {
|
RawPackage rawPackage = rack.getRawPackage();
|
// 含有原片信息
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getPieces();
|
int completePieces = rawPackage.getLeftPieces();
|
|
long between = new Date().getTime() - rawPackage.getCreateTime().getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) (completePieces) / (double) leftPieces * 100;
|
|
html.append("<td><div class='progress vertical active' value='").append(rack.getNumber())
|
.append("'style='width: 21px;background-color: gray;'>");
|
|
html.append("<span style='margin-top: opx'></span>");
|
|
if (days < 2) {
|
html.append(
|
"<div class='progress-bar progress-br-primary progress-bar-striped progress-bar-aqua' style=' height:"
|
+ percent + "%'")
|
.append("<span>" + (completePieces) + '/' + leftPieces + "</span>").append("</div>");
|
} else if (days >= 2 && days < 4) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-green'style=' height:"
|
+ percent + "%'")
|
.append("<span>" + (completePieces) + '/' + leftPieces + "</span>").append("</div>");
|
} else if (days >= 4 && days < 7) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-yellow'style='height:"
|
+ percent + "%'")
|
.append("<span>" + (completePieces) + '/' + leftPieces + "</span>").append("</div>");
|
} else {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red'style=' height:"
|
+ percent + "%'")
|
.append("<span>" + (completePieces) + '/' + leftPieces + "</span>").append("</div>");
|
}
|
}
|
|
}
|
|
// 没有原片
|
if (rack.getState().equals(ShelfRankState.FREE)) {
|
html.append("<td><div class='progress vertical active' style='width: 21px;background-color: gray;'");
|
html.append("<span style='margin-top: opx'></span>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%'>");
|
html.append("</div>");
|
}
|
html.append("</div>");
|
html.append("<div>");
|
html.append(rack.getNumber());
|
html.append("</div></td>");
|
}
|
|
return html.toString();
|
}
|
|
/**
|
* 得到料架详情包含料架链接
|
*
|
* @return
|
*/
|
public String getNewShelfRankInfo() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
Date nowDate = new Date();
|
List<ShelfRank> ranks = shelfRankDao.findAll();
|
html.append("<table><tr>");
|
for (ShelfRank rank : ranks) {
|
if (!rank.getState().equals(ShelfRankState.FREE)) {
|
// 料架不空闲
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rawPackage != null) {
|
// 含有原片信息
|
int leftPieces = rawPackage.getLeftPieces();
|
int pieces = rawPackage.getPieces();
|
|
Date enterDate = rawPackage.getCreateTime();
|
long between = nowDate.getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
// 计算片数百分比用于设置柱状图高度
|
double per = leftPieces * 1.0 / pieces * 1.0;
|
DecimalFormat df = new DecimalFormat("0%");
|
String percent = df.format(per);
|
html.append("<td><div class='progress vertical active' id='xianshi' val='")
|
.append(rank.getRawPackage().getLeftPieces())
|
.append("' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
// html.append("<div>").append(rank.getRawPackage().getLeftPieces()).append("</div>");
|
// html.append("<div>").append("/").append(rank.getRawPackage().getPieces()).append("</div>");
|
if (days < 2) {
|
// 2天之内用过
|
// 在内层嵌入DIV
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' role='progressbar' aria-valuenow='");
|
} else if (days >= 2 && days < 4) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-green' role='progressbar' aria-valuenow='");
|
} else if (days >= 4 && days < 7) {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-yellow' role='progressbar' aria-valuenow='");
|
} else {
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red' role='progressbar' aria-valuenow='");
|
}
|
html.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ")
|
.append(percent).append("'>");
|
html.append("</div>");
|
} else {
|
// 没有原片
|
if (rank.getState().equals(ShelfRankState.NOT_WORK)) {
|
html.append(
|
"<td><div class='progress vertical active' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
html.append(
|
"<div class='progress-bar color-palette progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 100%'>");
|
html.append("</div>");
|
} else {
|
html.append(
|
"<td><div class='progress vertical active' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 0%'>");
|
html.append("</div>");
|
}
|
|
}
|
|
} else {
|
// 没有原片
|
html.append(
|
"<td><div class='progress vertical active' style='width: 21px;background-color: gray; ' onclick='myFunction(")
|
.append(rank.getId()).append(")'>");
|
html.append(
|
"<div class='progress-bar progress-bar-primary progress-bar-striped' role='progressbar' aria-valuenow='0' aria-valuemin='0' aria-valuemax='40' style='height: 0%'>");
|
html.append("</div>");
|
}
|
html.append("</div></td>");
|
}
|
|
html.append("</tr><tr>");
|
for (ShelfRank rank1 : ranks) {
|
html.append("<td>").append(rank1.getNumber()).append("</td>");
|
}
|
html.append("</tr></table>");
|
return html.toString();// 返回料架信息
|
|
}
|
//
|
// StringBuffer html = new StringBuffer();// 实例化缓存
|
// Date nowDate = new Date();
|
// List<ShelfRank> ranks = shelfRankDao.findAll();
|
// html.append("<table><tr>");
|
// for(ShelfRank rank:ranks){
|
// if(!rank.getState().equals(ShelfRankState.FREE)){
|
// //料架不空闲
|
// RawPackage rawPackage = rank.getRawPackage();
|
// if(rawPackage!=null){
|
// //含有原片信息
|
// int leftPieces = rawPackage.getLeftPieces();
|
// int pieces = rawPackage.getPieces();
|
//
|
// Date enterDate = rawPackage.getCreateTime();
|
// long between = nowDate.getTime() - enterDate.getTime();
|
// long days = between / (1000 * 60 * 60 * 24);
|
// //计算片数百分比用于设置柱状图高度
|
// double per = leftPieces*1.0/pieces*1.0;
|
// DecimalFormat df = new DecimalFormat("0%");
|
// String percent = df.format(per);
|
//// html.append("<td><a").append("
|
// href='/gmms/shelf/findRank/").append(rank.getId()).append("'></a>");
|
// html.append("<div class='progress vertical active' id='xianshi'
|
// val='").append(rank.getRawPackage().getLeftPieces());
|
// html.append("' style='width: 21px;background-color: gray;
|
// '>");//onclick='xinxi(").append(rank.getId()).append(")'>");
|
// html.append("<div>").append(rank.getRawPackage().getLeftPieces()).append("</div>");
|
// html.append("<div>").append("/").append(rank.getRawPackage().getPieces()).append("</div>");
|
//
|
// if(days<2){
|
// //2天之内用过
|
// //在内层嵌入DIV
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped progress-bar-aqua' role='progressbar'
|
// aria-valuenow='");
|
// }else if(days>=2 && days<4){
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped progress-bar-green' role='progressbar'
|
// aria-valuenow='");
|
// }else if(days>=4 && days<7){
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped progress-bar-yellow' role='progressbar'
|
// aria-valuenow='");
|
// }else{
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped progress-bar-red' role='progressbar'
|
// aria-valuenow='");
|
// }
|
//
|
// html.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40'
|
// style='height: ").append(percent).append("'>" );
|
//
|
// html.append("</div>");
|
// }else{
|
// //没有原片
|
// html.append("<td><div class='progress vertical active' style='width:
|
// 21px;background-color: gray;
|
// '>");//onclick='xinxi(").append(rank.getId()).append(")'>");
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped' role='progressbar' aria-valuenow='0'
|
// aria-valuemin='0' aria-valuemax='40' style='height: 0%'>" );
|
// html.append("</div>");
|
// }
|
//
|
// }else{
|
// //没有原片
|
// html.append("<td><div class='progress vertical active' style='width:
|
// 21px;background-color: gray; '>");//
|
// onclick='xinxi(").append(rank.getId()).append(")'>");
|
// html.append("<div class='progress-bar progress-bar-primary
|
// progress-bar-striped' role='progressbar' aria-valuenow='0'
|
// aria-valuemin='0' aria-valuemax='40' style='height: 0%'>" );
|
// html.append("</div>");
|
// }
|
//// html.append("onclick='window.location='/gmms2/shelf/findRank/").append(rank.getId()).append("'';");
|
// html.append("</div></td>");
|
// }
|
//
|
// html.append("</tr><tr>");
|
// for(ShelfRank rank1:ranks){
|
// html.append("<td>").append(rank1.getNumber()).append("</td>");
|
// }
|
// html.append("</tr></table>");
|
// return html.toString();// 返回料架信息
|
// }
|
|
/**
|
* 得到吊装位和上片位的具体显示信息及链接
|
*
|
* @return
|
*/
|
public String getNewLoadAndShelfHoistInfo() {
|
StringBuffer html = new StringBuffer();
|
List<ShelfHoist> shelfHoistes = shelfHoistDao.findAll();
|
List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findAll();
|
for (ShelfHoist shelfHoist : shelfHoistes) {
|
html.append(" <div class='progress-group'><span class='progress-text'>");
|
html.append("吊装位").append(shelfHoist.getNumber());
|
RawPackage rawPackage1 = shelfHoist.getRawPackage();
|
int leftPieces = 0;
|
int pieces = 0;
|
String percent = "0";
|
if (rawPackage1 != null) {
|
leftPieces = rawPackage1.getLeftPieces();
|
pieces = rawPackage1.getPieces();
|
double per = leftPieces * 1.0 / pieces * 1.0;
|
DecimalFormat df = new DecimalFormat("0%");
|
percent = df.format(per);
|
}
|
html.append("</span><span class='progress-number'><b>").append(leftPieces).append("</b>/").append(pieces)
|
.append("</span>");
|
html.append("<div class='progress sm'><div class='progress-bar progress-bar-aqua' style='width: ")
|
.append(percent).append("'></div></div></div>");
|
}
|
for (LoadMachineRack loadMachineRack : loadMachineRacks) {
|
RawPackage rawPackage1 = loadMachineRack.getRawPackage();
|
html.append(" <div class='progress-group'><span class='progress-text'>");
|
html.append("上片位").append(loadMachineRack.getNumber());
|
if (rawPackage1 != null) {
|
LOGGER.debug("id:" + rawPackage1.getId());
|
ShelfRank shelfRank = shelfRankDao.findRankByRawId(rawPackage1.getId());
|
html.append(" 使用仓位:" + shelfRank.getNumber());
|
}
|
int leftPieces = 0;
|
int pieces = 0;
|
String percent = "0";
|
if (rawPackage1 != null) {
|
leftPieces = rawPackage1.getLeftPieces();
|
pieces = rawPackage1.getPieces();
|
double per = leftPieces * 1.0 / pieces * 1.0;
|
DecimalFormat df = new DecimalFormat("0%");
|
percent = df.format(per);
|
}
|
html.append("</span><span class='progress-number'><b>").append(leftPieces).append("</b>/").append(pieces)
|
.append("</span>");
|
html.append("<div class='progress sm'><div class='progress-bar progress-bar-aqua' style='width: ")
|
.append(percent).append("'></div></div></div>");
|
}
|
|
return html.toString();
|
}
|
|
public List<OptPattern> getopt(String txt_name) {
|
List<OptPattern> nowlist = new ArrayList<OptPattern>();// 存放已经加的原片
|
|
// 得到当前任务的所有optPattern
|
List<OptPattern> OptPatterns = optPatternDao.findOptPatternByBatchNumber(txt_name);
|
|
List<OptPattern> cahcelist = new ArrayList<OptPattern>();
|
int s = 0;
|
cc: for (; s < OptPatterns.size();) {
|
OptPattern optPattern3 = OptPatterns.get(s);
|
double width3 = optPattern3.getWidth();
|
double height3 = optPattern3.getHeight();
|
double thickness3 = optPattern3.getGlassThickness();
|
String color3 = optPattern3.getColor();
|
OptPattern optPattern = new OptPattern(optPattern3.getGlassId(), optPattern3.getGlassDescription(),
|
thickness3, optPattern3.getPieces(), width3, height3, color3, "");
|
if (cahcelist.size() != 0) {
|
if (cahcelist.contains(optPattern3)) {
|
// 含有此对象,以下一个对象作为基准
|
s++;
|
continue cc;
|
}
|
}
|
|
// 拿下一个pattern对象
|
int m = s + 1;
|
dd: for (; m < OptPatterns.size();) {
|
OptPattern optPattern4 = OptPatterns.get(m);
|
double width4 = optPattern4.getWidth();
|
double height4 = optPattern4.getHeight();
|
double thickness4 = optPattern4.getGlassThickness();
|
String color4 = optPattern4.getColor();
|
|
if (width3 == width4 && height3 == height4 && thickness3 == thickness4 && color3.equals(color4)) {
|
optPattern.setPieces(optPattern.getPieces() + optPattern4.getPieces());
|
if (nowlist.contains(optPattern)) {
|
nowlist.remove(optPattern);
|
}
|
nowlist.add(optPattern);
|
cahcelist.add(optPattern4);
|
m++;
|
} else {
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
m++;
|
continue dd;
|
}
|
}
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
s++;
|
continue cc;
|
}
|
return nowlist;
|
}
|
|
/**
|
* 当有任务被下发时
|
*
|
* @param txt_name
|
* @return
|
*/
|
|
public String leftToRight(String txt_name) {
|
// 当前任务是否已被选中
|
RawPackageTxt statetxt = rawPackageTxtDao.findByTxtName(txt_name);
|
LOGGER.debug("txt_name:" + txt_name);
|
if (statetxt.getStatus().equals(RawPackageTxtState.SENDED)) {
|
return "success";
|
}
|
|
statetxt.setStatus(RawPackageTxtState.SENDED);// 改变任务状态
|
|
statetxt.setCreateTime(new Date());// 生成下发任务的时间
|
|
rawPackageTxtDao.save(statetxt);
|
|
List<OptPattern> nowlist = new ArrayList<OptPattern>();// 存放已经加的原片
|
|
// 得到当前任务的所有optPattern
|
List<OptPattern> OptPatterns = optPatternDao.findOptPatternByBatchNumber(txt_name);
|
|
List<OptPattern> cahcelist = new ArrayList<OptPattern>();
|
int s = 0;
|
cc: for (; s < OptPatterns.size();) {
|
OptPattern optPattern3 = OptPatterns.get(s);
|
double width3 = optPattern3.getWidth();
|
double height3 = optPattern3.getHeight();
|
double thickness3 = optPattern3.getGlassThickness();
|
String color3 = optPattern3.getColor();
|
OptPattern optPattern = new OptPattern(optPattern3.getGlassId(), optPattern3.getGlassDescription(),
|
thickness3, optPattern3.getPieces(), width3, height3, color3, "");
|
if (cahcelist.size() != 0) {
|
if (cahcelist.contains(optPattern3)) {
|
// 含有此对象,以下一个对象作为基准
|
s++;
|
continue cc;
|
}
|
}
|
|
// 拿下一个pattern对象
|
int m = s + 1;
|
dd: for (; m < OptPatterns.size();) {
|
OptPattern optPattern4 = OptPatterns.get(m);
|
double width4 = optPattern4.getWidth();
|
double height4 = optPattern4.getHeight();
|
double thickness4 = optPattern4.getGlassThickness();
|
String color4 = optPattern4.getColor();
|
|
if (width3 == width4 && height3 == height4 && thickness3 == thickness4 && color3.equals(color4)) {
|
optPattern.setPieces(optPattern.getPieces() + optPattern4.getPieces());
|
if (nowlist.contains(optPattern)) {
|
nowlist.remove(optPattern);
|
}
|
nowlist.add(optPattern);
|
cahcelist.add(optPattern4);
|
m++;
|
} else {
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
m++;
|
continue dd;
|
}
|
}
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
s++;
|
continue cc;
|
}
|
|
List<OptPattern> optlist = new ArrayList<OptPattern>();
|
List<OptPattern> optlist2 = new ArrayList<OptPattern>();
|
// 创建吊装任务
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
for (int h = 0; h < nowlist.size(); h++) {
|
OptPattern now = nowlist.get(h);
|
// 找到对应的玻璃架
|
List<ShelfRank> ranks = shelfRankDao.findInWorkRanks16(now.getWidth(), now.getHeight(),
|
now.getGlassThickness(), now.getColor());
|
if (ranks.size() > 0) {
|
int t = 0;
|
for (int i = 0; i < ranks.size(); i++) {
|
t = t + ranks.get(i).getRawPackage().getLeftPieces();
|
}
|
if (now.getPieces() > t) {// 需要吊装
|
optlist.add(now);
|
} else {// 原片库中有玻璃
|
optlist2.add(now);
|
}
|
} else {
|
optlist.add(now);
|
}
|
}
|
// 得到所有空闲中的料架
|
List<ShelfRank> freeRanks = shelfRankDao.findFreeRanks();
|
|
if (freeRanks.size() >= optlist.size()) {
|
if (optlist.size() > 0) {
|
for (int h = 0; h < optlist.size(); h++) {
|
OptPattern now = nowlist.get(h);
|
RawPackage rawPackage = new RawPackage(now.getGlassId(), now.getPieces(), ShelfRankState.ON_WAITING,
|
now.getWidth(), now.getHeight(), now.getGlassThickness(), now.getColor(), 0,
|
GlassColor.GENERAL_FLAG, new Date(), statetxt);
|
rawPackageDao.save(rawPackage);
|
|
ShelfRank shelfRank = freeRanks.get(h);
|
shelfRank.setState(ShelfRankState.ON_WAITING);
|
// shelfRank.setUsestatu(RackState.USE_INWORK);
|
shelfRank.setRawPackage(rawPackage);
|
/*
|
* shelfRank.setColor(rawPackage.getColor());
|
* shelfRank.setGlassId(rawPackage.getGlassId());
|
* shelfRank.setLength(rawPackage.getHeight());
|
* shelfRank.setPieces(rawPackage.getPieces());
|
* shelfRank.setThickness(rawPackage.getThickness());
|
* shelfRank.setWidth(rawPackage.getWidth());
|
* shelfRank.setCreateTime(rawPackage.getCreateTime());
|
* shelfRank.setLastestTime(new Date());
|
*/
|
shelfRankDao.save(shelfRank);
|
|
// 创建三个吊装任务
|
/*
|
* ShelfTask displayInfo = new
|
* ShelfTask(ShelfTaskState.WAITING,
|
* ShelfTaskType.DISPLAY_INFO, new Date(),
|
* ShelfTaskFlag.SHELF_FLAG, shelfHoist, shelfRank);
|
*/
|
ShelfTask fromEmptyRankToHoist = new ShelfTask(ShelfTaskState.WAITING,
|
ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST, new Date(), ShelfTaskFlag.SHELF_FLAG, shelfHoist,
|
shelfRank);
|
ShelfTask fromHoistToRank = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_HOIST_TO_RANK,
|
new Date(), ShelfTaskFlag.SHELF_FLAG, shelfHoist, shelfRank);
|
|
// shelfTaskDao.save(displayInfo);
|
shelfTaskDao.save(fromEmptyRankToHoist);
|
shelfTaskDao.save(fromHoistToRank);
|
}
|
}
|
if (optlist2.size() > 0) {
|
for (int i = 0; i < optlist2.size(); i++) {
|
OptPattern now = optlist2.get(i);
|
// 找到对应的玻璃架
|
List<ShelfRank> ranks = shelfRankDao.findInWorkRanks16(now.getWidth(), now.getHeight(),
|
now.getGlassThickness(), now.getColor());
|
List<ShelfRank> ranks2 = new ArrayList<ShelfRank>();
|
ShelfRank rank = ranks.get(0);
|
// 排序,获得最少的玻璃料架,使用
|
for (int j = 1; j < ranks.size(); j++) {
|
ShelfRank sRank = ranks.get(j);
|
if (rank.getRawPackage().getLeftPieces() > sRank.getRawPackage().getLeftPieces()) {
|
rank = sRank;
|
}
|
}
|
ranks2.add(rank);
|
int pieces = now.getPieces();
|
for (int a = 0; a < ranks.size(); a++) {
|
ShelfRank shelfRank = ranks2.get(a);
|
// shelfRank.setUsestatu(RackState.USE_INWORK);
|
shelfRankDao.save(shelfRank);
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
rawPackage.setRawPackageTxt(statetxt);
|
rawPackageDao.save(rawPackage);
|
if (pieces > shelfRank.getRawPackage().getLeftPieces()) {
|
pieces = pieces - shelfRank.getRawPackage().getLeftPieces();
|
} else {
|
break;
|
}
|
}
|
}
|
}
|
|
return "success";
|
} else if (optlist.size() != 0 && freeRanks.size() < optlist.size()) {
|
statetxt.setStatus(RawPackageTxtState.WAIT_ASSIGNE);// 改变任务状态
|
statetxt.setCreateTime(new Date());
|
rawPackageTxtDao.save(statetxt);
|
return "fail";// 此时料架已满
|
}
|
return "";
|
}
|
|
/**
|
* 当任务从右边列表移动到左边列表时
|
*
|
* @param txt_name
|
* @return
|
*/
|
public String rightToLeft(String txt_name) {
|
|
RawPackageTxt statetxt = rawPackageTxtDao.findByTxtName(txt_name);
|
|
// 得到当前任务所有规格的pattern
|
List<RawPackage> rawPackagees = statetxt.getRawPackagees();
|
|
if (rawPackagees.size() != 0) {
|
for (RawPackage rawPackage : rawPackagees) {
|
|
ShelfRank shelfRank = rawPackage.getShelfRank();
|
if (shelfRank.getState().equals(ShelfRankState.ON_WAITING)) {
|
shelfRank.setState(ShelfRankState.FREE);
|
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);
|
|
shelfHoistDao.findAll().get(0).setState(ShelfHoistState.FREE);
|
shelfHoistDao.findAll().get(0).setRawPackage(null);
|
shelfHoistDao.save(shelfHoistDao.findAll().get(0));
|
|
rawPackageDao.delete(rawPackage);// 将原片删除
|
|
// 删除吊装任务
|
Set<ShelfTask> shelfTaskes = shelfRank.getShelfTaskes();
|
Iterator<ShelfTask> iterator = shelfTaskes.iterator();
|
while (iterator.hasNext()) {
|
shelfTaskDao.delete(iterator.next());
|
}
|
}
|
shelfRank.setUsestatu(null);
|
shelfRankDao.save(shelfRank);
|
|
}
|
}
|
|
// 当前任务变成等待分配
|
statetxt.setStatus(RawPackageTxtState.WAIT_ASSIGNE);
|
|
return "success";
|
}
|
|
/**
|
* 显示HMI
|
*
|
* @return
|
*/
|
public RawPackage showHmi() {
|
List<ShelfTask> shelfTaskes = shelfTaskDao.findWaitingAndWorkingTasks();// 得到所有等待中的仓储任务
|
if (shelfTaskes.size() != 0) {
|
ShelfTask shelfTask = shelfTaskes.get(0);
|
if (shelfTask != null && shelfTask.getShelfRank() != null
|
&& shelfTask.getShelfRank().getRawPackage() != null) {
|
RawPackage rawPackage = shelfTask.getShelfRank().getRawPackage();
|
return rawPackage;
|
}
|
}
|
|
return null;
|
}
|
|
/**
|
*
|
* hmi输入框是否显示
|
*
|
*/
|
public boolean isDisplayInput() {
|
List<ShelfTask> shelfTaskes = shelfTaskDao.findCompletedTasksByFlag(ShelfTaskFlag.SHELF_FLAG);// 得到所有等待中的仓储任务
|
if (shelfTaskes.size() != 0) {
|
ShelfTask shelfTask = shelfTaskes.get(shelfTaskes.size() - 1);
|
if (shelfTask != null && shelfTask.getTaskType().equals(ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST)) {
|
return true;
|
}
|
}
|
return false;
|
}
|
|
/**
|
* 显示吊装任务
|
*
|
* @return
|
*/
|
public String showTask(HttpServletRequest request) {
|
StringBuffer html = new StringBuffer();
|
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
|
if (workingTask != null) {
|
|
// 从空位到吊装位和从仓位到吊装位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_RANK_TO_HOIST)) {
|
Long shelfRankId = workingTask.getShelfRank().getId();
|
html.append("<span style='font-size: 25px'>").append("来自:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getShelfRank().getNumber()).append("'").append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号仓位!").append("</span>");
|
}
|
|
// 从吊装位回仓位和从吊装位回空仓位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_RANK)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_EMPTY_RANK)) {
|
Long shelfRankId = workingTask.getShelfRank().getId();
|
html.append("<span style='font-size: 25px'>").append("去往:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getShelfRank().getNumber()).append("'").append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号仓位!").append("</span>");
|
}
|
|
// 从仓位到上片位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK)) {
|
Long shelfRankId = workingTask.getShelfRank().getId();
|
html.append("<span style='font-size: 25px'>").append("从:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getShelfRank().getNumber()).append("'").append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号仓位").append("</span>");
|
html.append("<span style='font-size: 25px'>").append("到:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getLoadMachineRack().getNumber()).append("'")
|
.append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号上片位!").append("</span>");
|
}
|
|
// 从上片位回仓位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK)) {
|
Long shelfRankId = workingTask.getShelfRank().getId();
|
html.append("<span style='font-size: 25px'>").append("从:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getLoadMachineRack().getNumber()).append("'")
|
.append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号上片位!").append("</span>");
|
html.append("<span style='font-size: 25px'>").append("到:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getShelfRank().getNumber()).append("'").append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号仓位").append("</span>");
|
}
|
|
// 从吊装位到上片位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_LOAD_MACHINE_RACK)) {
|
html.append("<span style='font-size: 25px'>").append("去往:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getLoadMachineRack().getNumber()).append("'")
|
.append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号上片位!").append("</span>");
|
}
|
|
// 从上片位回 吊装位
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_HOIST)) {
|
html.append("<span style='font-size: 25px'>").append("来自:").append("</span>");
|
html.append("<input type='button' class='btn btn-primary btn-large' value='")
|
.append(workingTask.getLoadMachineRack().getNumber()).append("'")
|
.append("style='margin: 20px'>");
|
html.append("<span style='font-size: 25px'>").append("号上片位!").append("</span>");
|
}
|
}
|
|
// 没有正在工作的任务
|
else {
|
html.append("<span style='font-size: 25px'>").append("当前无任务!").append("</span>");
|
}
|
|
return html.toString();
|
}
|
|
/**
|
* HMI中输入数值
|
*
|
* @param pieces
|
* @return
|
*/
|
public String hmiProcess(int pieces) {
|
ShelfTask waitTask = shelfTaskDao.findWaitingTasksByFlag(ShelfTaskFlag.SHELF_FLAG).get(0);
|
if (waitTask != null && waitTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_RANK)
|
&& waitTask.getShelfRank().getRawPackage().getLeftPieces() == 0) {
|
RawPackage rawPackage = waitTask.getShelfRank().getRawPackage();
|
rawPackage.setLeftPieces(pieces);
|
rawPackageDao.save(rawPackage);
|
|
if (pieces == 0) {
|
waitTask.setMessage("1");
|
waitTask = shelfTaskDao.save(waitTask);
|
return "";
|
}
|
// 当需要吊装的数量大于实际吊装的数量时,再次创建吊装任务
|
if ((rawPackage.getPieces() - rawPackage.getLeftPieces()) > 0 && pieces != 0) {
|
List<ShelfRank> shelfRankes = shelfRankDao.findFreeRanks();
|
if (shelfRankes.size() != 0) {
|
RawPackage raw = new RawPackage(rawPackage.getGlassId(),
|
rawPackage.getPieces() - rawPackage.getLeftPieces(), rawPackage.getState(),
|
rawPackage.getWidth(), rawPackage.getHeight(), rawPackage.getThickness(),
|
rawPackage.getColor(), 0, rawPackage.getComment(), new Date());
|
rawPackageDao.save(raw);
|
ShelfRank shelfRank = shelfRankes.get(0);
|
shelfRank.setState(ShelfRankState.ON_WAITING);
|
shelfRank.setRawPackage(raw);
|
shelfRank.setColor(raw.getColor());
|
shelfRank.setGlassId(raw.getGlassId());
|
shelfRank.setLength(raw.getHeight());
|
shelfRank.setPieces(raw.getPieces());
|
shelfRank.setThickness(raw.getThickness());
|
shelfRank.setWidth(raw.getWidth());
|
shelfRank.setCreateTime(raw.getCreateTime());
|
|
shelfRank.setLastestTime(new Date());
|
shelfRankDao.save(shelfRank);
|
// 修改rank里面的玻璃数据
|
Rank rank = rankDao.findbyShelfRank(shelfRank.getId());
|
rank.setFlag("1");
|
rank.setPieces(pieces);
|
rankDao.save(rank);
|
// 创建吊装任务(原片不够用,继续吊装功能暂时舍弃)
|
// ShelfTask fromEmptyRankToHoist = new
|
// ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST, new Date(),
|
// ShelfTaskFlag.SHELF_FLAG,
|
// shelfHoistDao.findAll().get(0), shelfRank);
|
// ShelfTask fromHoistToRank = new
|
// ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_HOIST_TO_RANK,
|
// new Date(), ShelfTaskFlag.SHELF_FLAG,
|
// shelfHoistDao.findAll().get(0), shelfRank);
|
|
// shelfTaskDao.save(fromEmptyRankToHoist);
|
// shelfTaskDao.save(fromHoistToRank);
|
}
|
} else {
|
rawPackage.setPieces(pieces);
|
rawPackageDao.save(rawPackage);
|
}
|
return "success";
|
}
|
|
return "fail";
|
}
|
|
/**
|
* 显示吊装任务
|
*
|
* @return
|
*/
|
public String getShelfTaskHtml() {
|
StringBuffer html = new StringBuffer();
|
|
ShelfTask inWorkTask = shelfTaskDao.findInWorkTask();
|
if (inWorkTask != null) {
|
html.append("<tr class='info'>");
|
html.append("<td>").append(inWorkTask.getDescription()).append("</td>");
|
html.append("<td>").append(inWorkTask.getState()).append("</td>");
|
html.append("<td>").append(formatTime(inWorkTask.getCreateTime())).append("</td>");
|
html.append("<td>").append(formatTime(inWorkTask.getStartTime())).append("</td>");
|
html.append("<td>").append(formatTime(inWorkTask.getCompleteTime())).append("</td>");
|
html.append("</tr>");
|
}
|
|
List<ShelfTask> waitingTaskList = shelfTaskDao.findWaitingTasks();
|
if (waitingTaskList.size() != 0) {
|
for (ShelfTask shelfTask : waitingTaskList) {
|
if (shelfTask != null) {
|
html.append("<tr class='warning'>");
|
html.append("<td>").append(shelfTask.getDescription()).append("</td>");
|
html.append("<td>").append(shelfTask.getState()).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getCreateTime())).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getStartTime())).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getCompleteTime())).append("</td>");
|
html.append("</tr>");
|
}
|
}
|
}
|
|
List<ShelfTask> completedTaskList = shelfTaskDao.findCompletedTasks();
|
for (ShelfTask shelfTask : completedTaskList) {
|
html.append("<tr>");
|
html.append("<td>").append(shelfTask.getDescription()).append("</td>");
|
html.append("<td>").append(shelfTask.getState()).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getCreateTime())).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getStartTime())).append("</td>");
|
html.append("<td>").append(formatTime(shelfTask.getCompleteTime())).append("</td>");
|
html.append("</tr>");
|
}
|
|
return html.toString();
|
}
|
|
private String formatTime(Date time) {
|
if (time == null) {
|
return "";
|
}
|
|
return dateFormat.format(time);
|
}
|
|
/**
|
* 出库以料架上玻璃的数量少于4片或时间超过两天
|
*
|
* @return
|
*/
|
public List<RawPackage> exitRankAmount() {
|
|
List<RawPackage> InWorkRawPackage = rawPackageDao.findInWorkRawPackage();// 得到使用中的原片
|
|
List<RawPackage> rawPackages = new ArrayList<RawPackage>();
|
|
for (int i = 0; i < InWorkRawPackage.size(); i++) {
|
int leftPieces = InWorkRawPackage.get(i).getLeftPieces();
|
|
Date enterDate = InWorkRawPackage.get(i).getCreateTime();
|
Date nowDate = new Date();
|
|
long between = nowDate.getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
if (leftPieces != 0) {
|
if (leftPieces <= 4 || days >= 2) {
|
// InWorkRawPackage.remove(InWorkRawPackage.get(i));//剔除不符合条件的原片
|
// i--;
|
rawPackages.add(InWorkRawPackage.get(i));
|
}
|
}
|
}
|
|
return rawPackages;
|
}
|
|
// /**
|
// * 出库以料架上玻璃的数量少于4片或时间超过两天
|
// *
|
// * @return
|
// */
|
// public JSON exitRankAmount() {
|
//
|
// List<RawPackage> InWorkRawPackage =
|
// rawPackageDao.findInWorkRawPackage();// 得到使用中的原片
|
//
|
// List<RawPackage> rawPackages = new ArrayList<RawPackage>();
|
//
|
// for (int i = 0; i < InWorkRawPackage.size(); i++) {
|
// int leftPieces = InWorkRawPackage.get(i).getLeftPieces();
|
//
|
// Date enterDate = InWorkRawPackage.get(i).getCreateTime();
|
// Date nowDate = new Date();
|
//
|
// long between = nowDate.getTime() - enterDate.getTime();
|
// long days = between / (1000 * 60 * 60 * 24);
|
//
|
// if (leftPieces != 0) {
|
// if (leftPieces <= 4 || days >= 2) {
|
// // InWorkRawPackage.remove(InWorkRawPackage.get(i));//剔除不符合条件的原片
|
// // i--;
|
// rawPackages.add(InWorkRawPackage.get(i));
|
// }
|
// }
|
// }
|
//
|
// JsonConfig cfg = new JsonConfig();
|
// cfg.setJsonPropertyFilter(new PropertyFilter() {
|
// public boolean apply(Object source, String name, Object value) {
|
// if (name.equals("rawPackageTxt") || name.equals("shelfRank")) {
|
// return true;
|
// } else {
|
// return false;
|
// }
|
// }
|
// });
|
//
|
// // 转化成json格式的数据
|
// // JSONArray jsonRawPackage =
|
// // JSONArray.fromObject(InWorkRawPackage,cfg);
|
//
|
// JSONArray jsonRawPackage = JSONArray.fromObject(rawPackages, cfg);
|
//
|
// return jsonRawPackage;
|
// }
|
|
/**
|
* 出库操作方法
|
*
|
* @param ids
|
*/
|
public void exitSeparate(String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
for (String id : strId) {
|
ShelfRank shelfRank = shelfRankDao.findOne(Long.valueOf(id));
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
if (rawPackage != null) {
|
rawPackage.setState(ShelfRankState.ON_EXIT);
|
rawPackageDao.save(rawPackage);
|
shelfRank.setState(ShelfRankState.ON_EXIT);
|
shelfRankDao.save(shelfRank);
|
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
|
// 创建出库任务
|
ShelfTask fromRankToHoistTask = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_RANK_TO_HOIST,
|
new Date(), "0", shelfHoist, shelfRank);
|
ShelfTask fromHoistToEmptyRankTask = new ShelfTask(ShelfTaskState.WAITING,
|
ShelfTaskType.FROM_HOIST_TO_EMPTY_RANK, new Date(), "0", shelfHoist, shelfRank);
|
|
shelfTaskDao.save(fromRankToHoistTask);
|
shelfTaskDao.save(fromHoistToEmptyRankTask);
|
Rank rank = new Rank(rawPackage.getGlassId(), rawPackage.getLeftPieces(), rawPackage.getWidth(),
|
rawPackage.getHeight(), rawPackage.getThickness(), rawPackage.getColor(),
|
rawPackage.getManufacturer(), rawPackage.getCreateTime(), shelfRank);
|
rank.setFlag("1");
|
rank.setType("退库");
|
rank.setEndtime(new Date());
|
rankDao.save(rank);
|
}
|
|
}
|
}
|
|
/**
|
* 库存信息
|
*
|
* @return
|
*/
|
public String getShelfRank() {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm;ss");
|
// 获取仓库中所有使用中的料架
|
List<ShelfRank> shelfRanks = shelfRankDao.findInWorkRanks();
|
StringBuffer Html = new StringBuffer();
|
if (shelfRanks.size() != 0) {
|
// 获取每个料架上的rawpackage
|
for (ShelfRank shelfRank : shelfRanks) {
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
if (rawPackage != null && rawPackage.getLeftPieces() > 0) {
|
Html.append("<tr>");
|
Html.append("<td>").append(shelfRank.getNumber()).append("</td>");
|
Html.append("<td>").append(rawPackage.getGlassId()).append("</td>");
|
Html.append("<td>").append(rawPackage.getWidth()).append("</td>");
|
Html.append("<td>").append(rawPackage.getHeight()).append("</td>");
|
Html.append("<td>").append(rawPackage.getThickness()).append("</td>");
|
Html.append("<td>").append(rawPackage.getColor()).append("</td>");
|
Html.append("<td>").append(rawPackage.getLeftPieces()).append("</td>");
|
try {
|
long s1 = format.parse(format.format(rawPackage.getCreateTime())).getTime();
|
long s2 = System.currentTimeMillis();
|
int hour = (int) ((s2 - s1) / 1000 / 60 / 60);
|
Html.append("<td>").append(String.valueOf(hour)).append("</td>");
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
|
Html.append("</tr>");
|
}
|
}
|
}
|
return Html.toString();
|
}
|
|
/**
|
* 根据条件筛查符合条件的料架
|
*
|
* @return
|
*/
|
public String filtrate(HttpServletRequest request) {
|
String glassId = request.getParameter("glassId");
|
String widthParam = request.getParameter("width");
|
String heightParam = request.getParameter("height");
|
String thicknessParam = request.getParameter("thickness");
|
String colorParam = request.getParameter("color");
|
|
if (widthParam == null) {
|
widthParam = "";
|
}
|
if (heightParam == null) {
|
heightParam = "";
|
}
|
if (thicknessParam == null) {
|
thicknessParam = "";
|
}
|
if (colorParam == null) {
|
colorParam = "";
|
}
|
|
// 拼接页面
|
StringBuffer Html = new StringBuffer();
|
|
// 新建集合存放符合条件的对象
|
List<ShelfRank> shelfRanks = new ArrayList<ShelfRank>();
|
|
// 都没值的情况
|
if (widthParam == "" && heightParam == "" && thicknessParam == "" && colorParam == "") {
|
// 获取仓库中所有使用中的料架
|
shelfRanks = shelfRankDao.findInWorkRanks();
|
}
|
// 一个有值得情况
|
if (widthParam != "" && heightParam == "" && thicknessParam == "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks1(Double.valueOf(widthParam));
|
}
|
|
if (widthParam == "" && heightParam != "" && thicknessParam == "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks2(Double.valueOf(heightParam));
|
}
|
|
if (widthParam == "" && heightParam == "" && thicknessParam != "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks3(Double.valueOf(thicknessParam));
|
}
|
if (widthParam == "" && heightParam == "" && thicknessParam == "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks4(colorParam);
|
}
|
// 两个有值的情况
|
if (widthParam != "" && heightParam != "" && thicknessParam == "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks5(Double.valueOf(widthParam), Double.valueOf(heightParam));
|
}
|
if (widthParam != "" && heightParam == "" && thicknessParam != "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks6(Double.valueOf(widthParam), Double.valueOf(thicknessParam));
|
}
|
if (widthParam != "" && heightParam == "" && thicknessParam == "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks7(Double.valueOf(widthParam), colorParam);
|
}
|
if (widthParam == "" && heightParam != "" && thicknessParam != "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks8(Double.valueOf(heightParam), Double.valueOf(thicknessParam));
|
}
|
if (widthParam == "" && heightParam != "" && thicknessParam == "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks9(Double.valueOf(heightParam), colorParam);
|
}
|
if (widthParam == "" && heightParam == "" && thicknessParam != "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks9(Double.valueOf(thicknessParam), colorParam);
|
}
|
// 三个有值的情况
|
if (widthParam != "" && heightParam != "" && thicknessParam != "" && colorParam == "") {
|
shelfRanks = shelfRankDao.findInWorkRanks11(Double.valueOf(widthParam), Double.valueOf(heightParam),
|
Double.valueOf(thicknessParam));
|
}
|
if (widthParam != "" && heightParam != "" && thicknessParam == "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks12(Double.valueOf(widthParam), Double.valueOf(heightParam),
|
colorParam);
|
}
|
if (widthParam != "" && heightParam == "" && thicknessParam != "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks13(Double.valueOf(widthParam), Double.valueOf(thicknessParam),
|
colorParam);
|
}
|
if (widthParam == "" && heightParam != "" && thicknessParam != "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks14(Double.valueOf(heightParam), Double.valueOf(thicknessParam),
|
colorParam);
|
}
|
// 四个都有值得情况
|
if (widthParam != "" && heightParam != "" && thicknessParam != "" && colorParam != "") {
|
shelfRanks = shelfRankDao.findInWorkRanks15(Double.valueOf(widthParam), Double.valueOf(heightParam),
|
Double.valueOf(thicknessParam), colorParam);
|
}
|
|
if (shelfRanks.size() != 0) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
// 获取每个料架上的rawpackage
|
for (ShelfRank shelfRank : shelfRanks) {
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
|
if (glassId != "") {
|
// 符合条件才拼接
|
if (!glassId.equalsIgnoreCase(rawPackage.getGlassId())) {
|
// 如果不符合条件,开始下次循环
|
continue;
|
}
|
}
|
|
if (rawPackage != null && rawPackage.getLeftPieces() > 0) {
|
Html.append("<tr>");
|
Html.append("<td>").append(shelfRank.getNumber()).append("</td>");
|
Html.append("<td>").append(rawPackage.getGlassId()).append("</td>");
|
Html.append("<td>").append(rawPackage.getWidth()).append("</td>");
|
Html.append("<td>").append(rawPackage.getHeight()).append("</td>");
|
Html.append("<td>").append(rawPackage.getThickness()).append("</td>");
|
Html.append("<td>").append(rawPackage.getColor()).append("</td>");
|
Html.append("<td>").append(rawPackage.getLeftPieces()).append("</td>");
|
long s1;
|
try {
|
s1 = format.parse(format.format(rawPackage.getCreateTime())).getTime();
|
long s2 = System.currentTimeMillis();
|
int hour = (int) ((s2 - s1) / 1000 / 60 / 60);
|
Html.append("<td>").append(String.valueOf(hour)).append("</td>");
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
|
Html.append("</tr>");
|
}
|
}
|
}
|
return Html.toString();
|
}
|
|
/**
|
* 根据opt文件名查询当前所有原片的信息
|
*
|
* @param filename
|
* @return
|
*/
|
public List<OptPattern> fileName(String filename) {
|
List<OptPattern> optPatternes = optPatternDao.findOptPatternByBatchNumber(filename);
|
return optPatternes;
|
}
|
|
public Long getTxtId(String filename) {
|
RawPackageTxt txt = rawPackageTxtDao.findByTxtName(filename);
|
if (txt != null) {
|
return txt.getId();
|
}
|
return 0L;
|
}
|
|
/**
|
* 查询所有已下发的opt文件
|
*
|
* @return
|
*/
|
public String assigned() {
|
List<RawPackageTxt> rawPackagetxtes = rawPackageTxtDao.findByStatus(RawPackageTxtState.SENDED);
|
|
NumberFormat numberFormat = NumberFormat.getPercentInstance(Locale.CHINA);
|
numberFormat.setMaximumFractionDigits(2);
|
|
StringBuffer html = new StringBuffer();
|
|
if (rawPackagetxtes.size() != 0) {
|
for (int i = 0; i < rawPackagetxtes.size(); i++) {
|
int complete = rawPackagetxtes.get(i).getRawPackagees().size();
|
int total = shelfRankDao.findAll().size();
|
String precent = numberFormat.format((double) complete / (double) total);// 得到库存百分比
|
|
html.append("<tr>");
|
html.append("<td>").append(String.valueOf(i + 1)).append("</td>");
|
html.append("<td>").append(rawPackagetxtes.get(i).getTxt_name()).append("</td>");
|
html.append("<td>").append(rawPackagetxtes.get(i).getStatus()).append("</td>");
|
html.append("<td>").append(formatTime(rawPackagetxtes.get(i).getCreateTime())).append("</td>");
|
html.append("<td>");
|
html.append("<img alt='logo' class='cancel' src='").append("/gmms2/static/images/cancel.png")
|
.append("'").append("style='height: 35px").append("'>");
|
html.append("</td>");
|
html.append("<td colspan='2'>");
|
html.append("<div class='progress progress-striped active'>");
|
html.append(" <div class='bar' style='width:").append(precent).append("'>");
|
html.append(precent);
|
html.append("</div>");
|
html.append("</div>");
|
html.append("</td>");
|
html.append("</tr>");
|
}
|
}
|
return html.toString();
|
}
|
/*****************************************************************************************/
|
public String getRawPackageTxtesSend() {
|
//文件显示 底部文件夹 右边
|
StringBuffer html = new StringBuffer();
|
|
List<RawPackageTxt> Txtes = rawPackageTxtDao.findByStatus(RawPackageTxtState.SENDED);
|
List<RawPackageTxt> workTxtes = rawPackageTxtDao.findByAcceptAndWorking();
|
if (Txtes.size() > 0) {
|
for (int i = 0; i < Txtes.size(); i++) {
|
html.append("<lable><input type='checkbox' name='reverse' id='").append(Txtes.get(i).getId())
|
.append("'style='margin-left: 4px'>");
|
|
html.append("<span style='position:relative;width: 140px; height: 122px;'>");
|
|
html.append("<a href='/gmms2/shelfmanager/filename/").append(Txtes.get(i).getTxt_name()).append("'>");
|
html.append("<img src='").append("/gmms2/static/images/f3.png").append("'>");
|
html.append("</a>");
|
|
html.append(
|
"<span style='line-height:12px; position:absolute; top:50%; left:50%; margin-left:-24px; margin-top:-6px;font-weight: bolder;'>");
|
html.append(Txtes.get(i).getTxt_name());
|
html.append("</span>");
|
|
html.append("</span>");
|
|
html.append("</label>");
|
}
|
}
|
|
if (workTxtes.size() > 0) {
|
for (int i = 0; i < workTxtes.size(); i++) {
|
// html.append("<lable><input type='checkbox' name='reverse'
|
// id='").append(workTxtes.get(i).getId()).append("'style='margin-left:
|
// 4px'>");
|
|
html.append("<lable><span style='position:relative;width: 140px; height: 122px;'>");
|
|
html.append("<a href='/gmms2/shelfmanager/filename/").append(workTxtes.get(i).getTxt_name())
|
.append("'>");
|
html.append("<img src='").append("/gmms2/static/images/f3.png").append("'>");
|
html.append("</a>");
|
|
html.append(
|
"<span style='line-height:12px; position:absolute; top:50%; left:50%; margin-left:-24px; margin-top:-6px;font-weight: bolder;'>");
|
html.append(workTxtes.get(i).getTxt_name()).append(workTxtes.get(i).getStatus());
|
html.append("</span>");
|
html.append("</span>");
|
html.append("</label>");
|
}
|
}
|
|
return html.toString();
|
}
|
|
/**
|
* 生成ByteArrayOutputStream对象
|
*
|
* @param request
|
* @return
|
*/
|
@SuppressWarnings("deprecation")
|
public ByteArrayOutputStream generateByteArrayOutputStream(HttpServletRequest request) {
|
// 创建Excel文件的sheet
|
HSSFWorkbook workBook = new HSSFWorkbook();
|
HSSFSheet sheet = workBook.createSheet("rank");
|
HSSFRow row = sheet.createRow(0);
|
// 设置表头
|
row.createCell(0).setCellValue("库位号");
|
row.createCell(1).setCellValue("GlassId");
|
row.createCell(2).setCellValue("长度");
|
row.createCell(3).setCellValue("宽度");
|
row.createCell(4).setCellValue("厚度");
|
row.createCell(5).setCellValue("膜系");
|
row.createCell(6).setCellValue("片数");
|
row.createCell(7).setCellValue("创建时间");
|
row.createCell(8).setCellValue("最近使用时间");
|
row.createCell(9).setCellValue("多久没用/天");
|
|
// 获取仓库中所有使用中的料架
|
List<ShelfRank> shelfRanks = shelfRankDao.findInWorkRanks();
|
if (shelfRanks.size() != 0) {
|
for (ShelfRank shelfRank : shelfRanks) {
|
if (shelfRank.getRawPackage() != null && shelfRank.getRawPackage().getLeftPieces() != 0) {
|
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
|
dataRow.createCell(0).setCellValue(shelfRank.getNumber());
|
dataRow.createCell(1).setCellValue(shelfRank.getRawPackage().getGlassId());
|
dataRow.createCell(2).setCellValue(shelfRank.getRawPackage().getHeight());
|
dataRow.createCell(3).setCellValue(shelfRank.getRawPackage().getWidth());
|
dataRow.createCell(4).setCellValue(shelfRank.getRawPackage().getThickness());
|
dataRow.createCell(5).setCellValue(shelfRank.getRawPackage().getColor());
|
dataRow.createCell(6).setCellValue(shelfRank.getRawPackage().getLeftPieces());
|
dataRow.createCell(7).setCellValue(shelfRank.getRawPackage().getCreateTime());
|
dataRow.createCell(8).setCellValue(shelfRank.getLastestTime());
|
long curentTime = System.currentTimeMillis();
|
long lastTime = shelfRank.getLastestTime().getTime();
|
int day = (int) ((curentTime - lastTime) / 1000 / 60 / 60 / 24);
|
dataRow.createCell(9).setCellValue(day);
|
}
|
}
|
}
|
|
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
|
try {
|
workBook.write(byteOut);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return byteOut;
|
|
}
|
|
/**
|
* 下载Excel
|
*
|
* @param request
|
* @param response
|
*/
|
public void generateExcelFile(HttpServletRequest request, HttpServletResponse response) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
|
String fileName = "料架_" + format.format(new Date()) + ".xls";
|
response.setContentType("application/vnd.ms-excel");
|
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
ByteArrayOutputStream byteOut = generateByteArrayOutputStream(request);
|
InputStream input = new ByteArrayInputStream(byteOut.toByteArray());
|
byte[] buffer = new byte[1024];
|
try {
|
OutputStream outputStream = response.getOutputStream();
|
int len = 0;
|
while ((len = input.read(buffer)) != -1) {
|
outputStream.write(buffer, 0, len);
|
}
|
outputStream.flush();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 小车异常
|
*/
|
public String shuttleException() {
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
if (workingTask != null) {
|
if (workingTask.getTaskType().equals(ShelfTaskType.DISPLAY_INFO)) {
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
workingTask = service.saveShelfTask(workingTask);
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_RANK_TO_HOIST)) {
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
// 设置吊装位状态
|
ShelfHoist hoist = workingTask.getShelfHoist();
|
if (hoist != null) {
|
hoist.setRawPackage(workingTask.getShelfRank().getRawPackage());
|
hoist.setState(ShelfRankState.IN_WORK);
|
service.saveShelfHoist(hoist);
|
}
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_RANK)) {
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
// 设置仓位状态
|
ShelfRank rank = workingTask.getShelfRank();
|
RawPackage rawpackage = rank.getRawPackage();
|
|
if (rank != null && rawpackage != null && rawpackage.getLeftPieces() == 0) {
|
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);
|
|
rank.setState(ShelfRankState.FREE);// 设置仓位为空闲
|
rawpackage.setState(ShelfRankState.FREE);// 设置原片为空闲
|
}
|
if (rank != null && rawpackage != null && rawpackage.getLeftPieces() != 0) {
|
rank.setState(ShelfRankState.IN_WORK);// 设置料架状态
|
rawpackage.setState(ShelfRankState.IN_WORK);// 设置原片状态
|
rawpackage.setCreateTime(new Date());
|
}
|
|
// 设置吊装位状态
|
ShelfHoist hoist = workingTask.getShelfHoist();
|
if (hoist != null) {
|
hoist.setRawPackage(null);
|
hoist.setState(ShelfHoistState.FREE);
|
service.saveShelfHoist(hoist);
|
}
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_EMPTY_RANK)) {
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
// 设置原片状态
|
workingTask.getShelfRank().getRawPackage().setState(ShelfRankState.FREE);
|
rawPackageDao.save(workingTask.getShelfRank().getRawPackage());
|
|
// 设置仓位状态
|
ShelfRank rank = workingTask.getShelfRank();
|
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);
|
rank.setState(ShelfRankState.FREE);
|
service.saveShelfRank(rank);
|
|
// 设置吊装位状态
|
ShelfHoist hoist = workingTask.getShelfHoist();
|
if (hoist != null) {
|
hoist.setRawPackage(null);
|
hoist.setState(ShelfHoistState.FREE);
|
service.saveShelfHoist(hoist);
|
}
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK)) {
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
LoadMachineRack loadMachineRack = workingTask.getLoadMachineRack();
|
RawPackage rawPackage = workingTask.getShelfRank().getRawPackage();
|
|
LOGGER.debug("rawPackage: " + (rawPackage == null ? null : rawPackage.getDescription()));
|
loadMachineRack.setRawPackage(rawPackage);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORKING);
|
loadMachineRackService.saveLoadMachineRack(loadMachineRack);
|
|
ShelfRank shelfRank = workingTask.getShelfRank();
|
shelfRank.setState(ShelfRankState.IN_WORKING);// 修改料架状态
|
shelfRankDao.save(shelfRank);
|
|
rawPackage.setState(ShelfRankState.IN_WORKING);// 修改料架上原片状态
|
rawPackageDao.save(rawPackage);
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK)) {
|
// 设置当前上片位上的原片为空,状态为空闲
|
if (workingTask.getLoadMachineRack() != null) {
|
workingTask.getLoadMachineRack().setRawPackage(null);
|
workingTask.getLoadMachineRack().setState(ShelfRankState.FREE);
|
loadMachineRackService.saveLoadMachineRack(workingTask.getLoadMachineRack());
|
}
|
|
// 设置仓位状态
|
ShelfRank rank = workingTask.getShelfRank();
|
RawPackage rawpackage = rank.getRawPackage();
|
|
if (rank != null && rawpackage != null && rawpackage.getLeftPieces() == 0) {
|
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);
|
rank.setState(ShelfRankState.FREE);// 设置仓位为空闲
|
rawpackage.setState(ShelfRankState.FREE);// 设置原片为空闲
|
}
|
if (rank != null && rawpackage != null && rawpackage.getLeftPieces() != 0) {
|
rank.setState(ShelfRankState.IN_WORK);// 设置料架状态
|
rawpackage.setState(ShelfRankState.IN_WORK);// 设置原片状态
|
rawpackage.setCreateTime(new Date());
|
}
|
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_LOAD_MACHINE_RACK)) {
|
//LOGGER.debug("workingTask: " + workingTask.getDescription());
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
LoadMachineRack loadMachineRack = workingTask.getLoadMachineRack();
|
ShelfHoist shelfHoist = workingTask.getShelfHoist();
|
RawPackage rawPackage = shelfHoist.getRawPackage();
|
|
//LOGGER.debug("rawPackage: " + (rawPackage == null ? null : rawPackage.getDescription()));
|
loadMachineRack.setRawPackage(rawPackage);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORKING);
|
loadMachineRackService.saveLoadMachineRack(loadMachineRack);
|
|
ShelfRank shelfRank = shelfHoist.getRawPackage().getShelfRank();
|
shelfRank.setState(ShelfRankState.IN_WORKING);// 修改料架状态
|
shelfRankDao.save(shelfRank);
|
|
rawPackage.setState(ShelfRankState.IN_WORKING);// 修改料架上原片状态
|
rawPackageDao.save(rawPackage);
|
|
shelfHoist.setState(ShelfHoistState.FREE);
|
shelfHoist.setRawPackage(null);// 修改吊装位状态
|
shelfHoistDao.save(shelfHoist);
|
|
return "";
|
}
|
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_HOIST)) {
|
// 设置吊装位状态
|
ShelfHoist hoist = workingTask.getShelfHoist();
|
if (hoist != null) {
|
hoist.setState(ShelfRankState.IN_WORK);
|
service.saveShelfHoist(hoist);
|
}
|
|
// 设置当前上片位上的原片为空,状态为空闲
|
if (workingTask.getLoadMachineRack() != null) {
|
workingTask.getLoadMachineRack().setRawPackage(null);
|
workingTask.getLoadMachineRack().setState(ShelfRankState.FREE);
|
loadMachineRackService.saveLoadMachineRack(workingTask.getLoadMachineRack());
|
}
|
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
return "";
|
}
|
}
|
|
return "";
|
}
|
|
/**
|
* 显示所有种类的玻璃
|
*/
|
public String getGlassNumberColor() {
|
List<GlassNumberColor> colores = glassNumberColorDao.findAll();
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
String temp = "";
|
for (int i = 0; i < colores.size(); i++) {
|
html.append("<tr>");
|
html.append("<td style='width: 10px'><input type='checkbox' id='").append(colores.get(i).getId())
|
.append("'></td>");
|
html.append("<td>").append(String.valueOf(i + 1)).append("</td>");
|
html.append("<td>").append(colores.get(i).getGlassId()).append("</td>");
|
|
String flag = colores.get(i).getFlag();
|
if (flag.equals("1")) {
|
temp = GlassColor.PACKAGE;
|
}
|
if (flag.equals("0")) {
|
temp = GlassColor.NOT_PACKAGE;
|
}
|
|
html.append("<td>").append(temp).append("</td>");
|
html.append("</tr>");
|
}
|
|
return html.toString();// 返回table
|
}
|
|
/**
|
* 删除全部测试数据
|
*/
|
public void deleteTestDataAll() {
|
shelfTaskDao.deleteAll();
|
|
List<LoadMachineRack> loadMachineRackes = loadMachineRackDao.findAll();
|
for (LoadMachineRack rack : loadMachineRackes) {
|
rack.setRawPackage(null);
|
rack.setMessage("");
|
rack.setState(ShelfRankState.FREE);
|
}
|
countMachineTaskDao.deleteAll();
|
gaoliweiMachineTaskDao.deleteAll();
|
glassDao.deleteAll();
|
singalGlassDao.deleteAll();
|
loadMachineTaskDao.deleteAll();
|
singalGlassDao.deleteAll();
|
// 将任务统计表清空
|
reportTaskDao.deleteAll();
|
cutMachineTaskDao.deleteAll();
|
optPatternDao.deleteAll();
|
List<ProdLineState> findAll = prodLineStateDao.findAll();
|
for (ProdLineState pro : findAll) {
|
pro.setState(false);
|
}
|
|
List<ShelfRank> shelfRankes = shelfRankDao.findAll();
|
for (ShelfRank rank : shelfRankes) {
|
rank.setState(ShelfRankState.FREE);
|
rank.setUsestatu(null);
|
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);
|
}
|
|
List<ShelfHoist> ShelfHoistes = shelfHoistDao.findAll();
|
for (ShelfHoist hoist : ShelfHoistes) {
|
hoist.setState(ShelfHoistState.FREE);
|
hoist.setRawPackage(null);
|
}
|
|
rawPackageDao.deleteAll();
|
|
// cuttingOptPatternDao.deleteAll();
|
rawPackageTxtDao.deleteAll();
|
|
// 破损管理表清空
|
breakReportDao.deleteAll();
|
|
}
|
|
/**
|
* 删除部分测试数据
|
*/
|
public void deleteTestData() {
|
shelfTaskDao.deleteAll();
|
|
// List<LoadMachineRack> loadMachineRackes =
|
// loadMachineRackDao.findAll();
|
// for (LoadMachineRack rack : loadMachineRackes) {
|
// rack.setRawPackage(null);
|
// rack.setMessage("");
|
// rack.setState(ShelfRankState.FREE);
|
// }
|
countMachineTaskDao.deleteAll();
|
glassDao.deleteAll();
|
loadMachineTaskDao.deleteAll();
|
singalGlassDao.deleteAll();
|
optPatternDao.deleteAll();
|
List<ProdLineState> findAll = prodLineStateDao.findAll();
|
for (ProdLineState pro : findAll) {
|
pro.setState(false);
|
}
|
|
// List<ShelfRank> shelfRankes = shelfRankDao.findAll();
|
// for (ShelfRank rank : shelfRankes) {
|
// rank.setState(ShelfRankState.FREE);
|
// rank.setUsestatu(null);
|
// 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);
|
// }
|
|
List<ShelfHoist> ShelfHoistes = shelfHoistDao.findAll();
|
for (ShelfHoist hoist : ShelfHoistes) {
|
hoist.setState(ShelfHoistState.FREE);
|
hoist.setRawPackage(null);
|
}
|
|
List<RawPackage> rawPackages = rawPackageDao.findAll();
|
if (rawPackages.size() > 0) {
|
for (RawPackage rawPackage : rawPackages) {
|
if (rawPackage.getState().equals(RackState.ON_WAITING)) {
|
ShelfRank rank = shelfRankDao.findRankByRawId(rawPackage.getId());
|
if (rank != null) {
|
rank.setState(ShelfRankState.FREE);
|
rank.setUsestatu(null);
|
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);
|
}
|
}
|
rawPackage.setRawPackageTxt(null);
|
rawPackageDao.save(rawPackage);
|
}
|
}
|
// rawPackageDao.deleteAll();
|
|
// cuttingOptPatternDao.deleteAll();
|
rawPackageTxtDao.deleteAll();
|
|
// 将任务统计表清空
|
reportTaskDao.deleteAll();
|
// 破损管理表清空
|
breakReportDao.deleteAll();
|
|
}
|
|
/**
|
* cancel任务
|
*
|
* @param rawpackagetxtIds
|
* @return
|
*/
|
public String cancel(String rawpackagetxtIds) {
|
//LOGGER.debug("batchDeleteRawpackagetxts: " + rawpackagetxtIds);
|
|
String[] rawpackagetxtIdArray = rawpackagetxtIds.split(";");
|
|
for (String rawpackagetxtId : rawpackagetxtIdArray) {
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findOne(Long.parseLong(rawpackagetxtId));
|
//LOGGER.debug("sssssssssssssss" + rawPackageTxt.getTxt_name());
|
List<SingalGlass> singalGlasses = singalGlassDao.findByBatch(rawPackageTxt.getTxt_name());
|
//LOGGER.debug("ddddddddddddddddddd" + singalGlasses.size());
|
if (singalGlasses.size() > 0) {
|
singalGlassDao.delete(singalGlasses);
|
}
|
List<Glass> glasses = glassDao.findByBatch(rawPackageTxt.getTxt_name());
|
if (glasses.size() > 0) {
|
glassDao.delete(glasses);
|
}
|
List<OptPattern> optPatterns = optPatternDao.findById(rawPackageTxt.getId());
|
if (optPatterns.size() > 0) {
|
optPatternDao.delete(optPatterns);
|
}
|
rawPackageTxtDao.delete(rawPackageTxt);
|
}
|
|
return "success";
|
}
|
|
/**
|
* 当有任务下发时
|
*
|
* @param rawpackagetxtIds
|
* @return
|
*/
|
|
public String push(String rawpackagetxtIds) {
|
//LOGGER.debug("> Start batchDeleteRanks");
|
//LOGGER.debug("batchDeleteRawpackagetxts: " + rawpackagetxtIds);
|
|
String[] rawpackagetxtIdArray = rawpackagetxtIds.split(";");
|
|
for (String rawpackagetxtId : rawpackagetxtIdArray) {
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findOne(Long.parseLong(rawpackagetxtId));
|
// 当前任务是否已被选中
|
if (rawPackageTxt.getStatus().equals(RawPackageTxtState.SENDED)) {
|
continue;
|
}
|
|
/**
|
* 合并pattern
|
*/
|
List<OptPattern> nowlist = new ArrayList<OptPattern>();// 存放已经加的原片
|
|
// 得到当前任务的所有optPattern
|
List<OptPattern> OptPatterns = optPatternDao.findOptPatternByBatchNumber(rawPackageTxt.getTxt_name());
|
|
rawPackageTxt.setStatus(RawPackageTxtState.SENDED);// 改变任务状态
|
rawPackageTxt.setCreateTime(new Date());// 生成下发任务的时间
|
rawPackageTxtDao.save(rawPackageTxt);
|
|
List<OptPattern> cahcelist = new ArrayList<OptPattern>();
|
int s = 0;
|
cc: for (; s < OptPatterns.size();) {
|
OptPattern optPattern3 = OptPatterns.get(s);
|
double width3 = optPattern3.getWidth();
|
double height3 = optPattern3.getHeight();
|
double thickness3 = optPattern3.getGlassThickness();
|
String glassId3 = optPattern3.getGlassId();
|
OptPattern optPattern = new OptPattern(glassId3, optPattern3.getGlassDescription(), thickness3,
|
optPattern3.getPieces(), width3, height3, optPattern3.getColor(), optPattern3.getBatch());
|
if (cahcelist.size() != 0) {
|
if (cahcelist.contains(optPattern3)) {
|
// 含有此对象,以下一个对象作为基准
|
s++;
|
continue cc;
|
}
|
}
|
|
// 拿下一个pattern对象
|
int m = s + 1;
|
dd: for (; m < OptPatterns.size();) {
|
OptPattern optPattern4 = OptPatterns.get(m);
|
double width4 = optPattern4.getWidth();
|
double height4 = optPattern4.getHeight();
|
double thickness4 = optPattern4.getGlassThickness();
|
String glassId4 = optPattern4.getGlassId();
|
|
if (width3 == width4 && height3 == height4 && thickness3 == thickness4
|
&& glassId3.equals(glassId4)) {
|
optPattern.setPieces(optPattern.getPieces() + optPattern4.getPieces());
|
if (nowlist.contains(optPattern)) {
|
nowlist.remove(optPattern);
|
}
|
nowlist.add(optPattern);
|
cahcelist.add(optPattern4);
|
m++;
|
} else {
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
m++;
|
continue dd;
|
}
|
}
|
if (!nowlist.contains(optPattern)) {
|
nowlist.add(optPattern);
|
}
|
s++;
|
continue cc;
|
}
|
// //得到所有使用中的料架
|
// List<ShelfRank> workingRanks = shelfRankDao.findInWorkRanks();
|
//
|
// for(int h=0;h<nowlist.size();h++){
|
// int count=0;
|
// for(int r=0;r<workingRanks.size(); r++){
|
// RawPackage rawPackage = workingRanks.get(r).getRawPackage();
|
// if(rawPackage.getRawPackageTxt()!=null){
|
// if(rawPackage.getGlassId().equals(nowlist.get(h).getGlassId())
|
// &&rawPackage.getWidth()==nowlist.get(h).getWidth()
|
// &&rawPackage.getHeight()==nowlist.get(h).getHeight()
|
// &&rawPackage.getThickness()==nowlist.get(h).getGlassThickness()){
|
// //count=count+rawPackage.getLeftPieces()+rawPackage.getCompletePieces()-rawPackage.getPieces();
|
// count=count+rawPackage.getPieces();
|
// }
|
// }else{
|
// if(rawPackage.getGlassId().equals(nowlist.get(h).getGlassId())
|
// &&rawPackage.getWidth()==nowlist.get(h).getWidth()
|
// &&rawPackage.getHeight()==nowlist.get(h).getHeight()
|
// &&rawPackage.getThickness()==nowlist.get(h).getGlassThickness()){
|
// //count=count+rawPackage.getLeftPieces();
|
// count=count+rawPackage.getPieces();
|
// }
|
// }
|
// }
|
//
|
//
|
// if(count>=nowlist.get(h).getPieces()){
|
//
|
// continue;
|
// }
|
//
|
// RawPackage rawPackage=new RawPackage();
|
// rawPackage.setGlassId(nowlist.get(h).getGlassId());
|
// rawPackage.setColor(nowlist.get(h).getColor());
|
// rawPackage.setWidth(nowlist.get(h).getWidth());
|
// rawPackage.setHeight(nowlist.get(h).getHeight());
|
// rawPackage.setThickness(nowlist.get(h).getGlassThickness());
|
// rawPackage.setPieces(nowlist.get(h).getPieces()-count);
|
//
|
// //之前是rawPackage.setStatus(RawPackageState.ON_WAITING);
|
// rawPackage.setState(RawPackageState.TO_HOIST);
|
// rawPackage.setCreateTime(new Date());
|
// rawPackage.setRawPackageTxt(rawPackageTxt);
|
// rawPackageDao.save(rawPackage);
|
// }
|
//
|
// //得到所有空闲中的料架
|
// List<ShelfRank> freeRanks = shelfRankDao.findFreeRanks();
|
//
|
// //创建吊装任务
|
// List<RawPackage> rawPackageList =
|
// rawPackageTxt.getRawPackagees();
|
//
|
// ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
//
|
// if(rawPackageList.size()!=0&&freeRanks.size()>=rawPackageList.size()){
|
// for(int i=0; i<rawPackageList.size(); i++){
|
// ShelfRank shelfRank = freeRanks.get(i);
|
// shelfRank.setState(ShelfRankState.ON_WAITING);
|
// // shelfRank.setUsestatu(RackState.USE_INWORK);
|
// shelfRank.setRawPackage(rawPackageList.get(i));
|
// shelfRank.setColor(rawPackageList.get(i).getColor());
|
// shelfRank.setGlassId(rawPackageList.get(i).getGlassId());
|
// shelfRank.setLength(rawPackageList.get(i).getHeight());
|
// shelfRank.setPieces(rawPackageList.get(i).getPieces());
|
// shelfRank.setThickness(rawPackageList.get(i).getThickness());
|
// shelfRank.setWidth(rawPackageList.get(i).getWidth());
|
// shelfRank.setCreateTime(rawPackageList.get(i).getCreateTime());
|
// shelfRankDao.save(shelfRank);
|
//
|
// rawPackageList.get(i).setShelfRank(shelfRank);
|
// rawPackageDao.save(rawPackageList.get(i));
|
//
|
// //创建两个吊装任务
|
// ShelfTask fromEmptyRankToHoist = new
|
// ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST, new Date(),
|
// ShelfTaskFlag.SHELF_FLAG,shelfHoist, shelfRank);
|
// ShelfTask fromHoistToRank = new ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_HOIST_TO_RANK, new
|
// Date(),ShelfTaskFlag.SHELF_FLAG, shelfHoist, shelfRank);
|
//
|
// shelfTaskDao.save(fromEmptyRankToHoist);
|
// shelfTaskDao.save(fromHoistToRank);
|
// }
|
// }
|
//
|
// if(rawPackageList.size()!=0&&freeRanks.size()<rawPackageList.size()){
|
// rawPackageList.clear();
|
//
|
// for(RawPackage raw: rawPackageList){
|
// rawPackageDao.delete(raw);
|
// }
|
//
|
// rawPackageTxt.setStatus(RawPackageTxtState.WAIT_ASSIGNE);//改变任务状态
|
// rawPackageTxt.setCreateTime(new Date());
|
// rawPackageTxtDao.save(rawPackageTxt);
|
//
|
// return "fail"+rawPackageTxt.getTxt_name();//此时料架已满
|
// }
|
//
|
// }
|
//
|
// return "success";
|
List<OptPattern> optlist = new ArrayList<OptPattern>();
|
List<OptPattern> optlist2 = new ArrayList<OptPattern>();
|
// 创建吊装任务
|
// ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
for (int h = 0; h < nowlist.size(); h++) {
|
OptPattern now = nowlist.get(h);
|
// 找到对应的玻璃架
|
List<ShelfRank> ranks = shelfRankDao.findInWorkRanks16(now.getWidth(), now.getHeight(),
|
now.getGlassThickness(), now.getColor());
|
List<LoadMachineRack> racks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId(1L);
|
if (racks.size() > 0) {
|
for (LoadMachineRack rack : racks) {
|
if (rack.getState() != ShelfRankState.FREE && rack.getRawPackage() != null) {
|
RawPackage rawPackage = rack.getRawPackage();
|
if (rawPackage.getHeight() == now.getHeight() && rawPackage.getWidth() == now.getWidth()
|
&& rawPackage.getColor().equals(now.getColor())
|
&& rawPackage.getThickness() == now.getGlassThickness()) {
|
ShelfRank shelfRank = shelfRankDao.findRankByRawId(rawPackage.getId());
|
ranks.add(shelfRank);
|
}
|
|
}
|
}
|
}
|
if (ranks.size() > 0) {
|
int t = 0;
|
for (int i = 0; i < ranks.size(); i++) {
|
t = t + ranks.get(i).getRawPackage().getLeftPieces();
|
}
|
if (now.getPieces() > t) {// 需要吊装
|
optlist.add(now);
|
} else {// 原片库中有玻璃
|
optlist2.add(now);
|
}
|
} else {
|
optlist.add(now);
|
}
|
}
|
// 得到所有空闲中的料架
|
List<ShelfRank> freeRanks = shelfRankDao.findFreeRanks();
|
|
// if (freeRanks.size() >= optlist.size()) {
|
// if (optlist.size() > 0) {
|
// for (int h = 0; h < optlist.size(); h++) {
|
// OptPattern now = optlist.get(h);
|
// RawPackage rawPackage = new RawPackage(now.getGlassId(),
|
// now.getPieces(),
|
// ShelfRankState.ON_WAITING, now.getWidth(), now.getHeight(),
|
// now.getGlassThickness(),
|
// now.getColor(), 0, GlassColor.GENERAL_FLAG, new Date(),
|
// rawPackageTxt);
|
// rawPackageDao.save(rawPackage);
|
//
|
// ShelfRank shelfRank = freeRanks.get(h);
|
// shelfRank.setState(ShelfRankState.ON_WAITING);
|
// // shelfRank.setUsestatu(RackState.USE_INWORK);
|
// shelfRank.setRawPackage(rawPackage);
|
// /*shelfRank.setColor(rawPackage.getColor());
|
// shelfRank.setGlassId(rawPackage.getGlassId());
|
// shelfRank.setLength(rawPackage.getHeight());
|
// shelfRank.setPieces(rawPackage.getPieces());
|
// shelfRank.setThickness(rawPackage.getThickness());
|
// shelfRank.setWidth(rawPackage.getWidth());
|
// shelfRank.setCreateTime(rawPackage.getCreateTime());
|
// shelfRank.setLastestTime(new Date());*/
|
// shelfRankDao.save(shelfRank);
|
//
|
// // 创建三个吊装任务
|
// /*
|
// * ShelfTask displayInfo = new
|
// * ShelfTask(ShelfTaskState.WAITING,
|
// * ShelfTaskType.DISPLAY_INFO, new Date(),
|
// * ShelfTaskFlag.SHELF_FLAG, shelfHoist, shelfRank);
|
// */
|
// ShelfTask fromEmptyRankToHoist = new
|
// ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST, new Date(),
|
// ShelfTaskFlag.SHELF_FLAG,
|
// shelfHoist, shelfRank);
|
// ShelfTask fromHoistToRank = new ShelfTask(ShelfTaskState.WAITING,
|
// ShelfTaskType.FROM_HOIST_TO_RANK, new Date(),
|
// ShelfTaskFlag.SHELF_FLAG, shelfHoist,
|
// shelfRank);
|
//
|
// // shelfTaskDao.save(displayInfo);
|
// shelfTaskDao.save(fromEmptyRankToHoist);
|
// shelfTaskDao.save(fromHoistToRank);
|
// }
|
// }
|
//// if (optlist2.size() > 0) {
|
//// for (int i = 0; i < optlist2.size(); i++) {
|
//// OptPattern now = optlist2.get(i);
|
//// // 找到对应的玻璃架
|
//// List<ShelfRank> ranks =
|
// shelfRankDao.findInWorkRanks16(now.getWidth(), now.getHeight(),
|
//// now.getGlassThickness(), now.getColor());
|
//// List<ShelfRank> ranks2 = new ArrayList<ShelfRank>();
|
//// ShelfRank rank = ranks.get(0);
|
//// // 排序,获得最少的玻璃料架,使用
|
//// for (int j = 1; j < ranks.size(); j++) {
|
//// ShelfRank sRank = ranks.get(j);
|
//// if (rank.getRawPackage().getLeftPieces() >
|
// sRank.getRawPackage().getLeftPieces()) {
|
//// rank = sRank;
|
//// }
|
//// }
|
//// ranks2.add(rank);
|
//// int pieces = now.getPieces();
|
//// for (int a = 0; a < ranks.size(); a++) {
|
//// ShelfRank shelfRank = ranks2.get(a);
|
//// // shelfRank.setUsestatu(RackState.USE_INWORK);
|
//// shelfRankDao.save(shelfRank);
|
//// RawPackage rawPackage = shelfRank.getRawPackage();
|
//// rawPackage.setRawPackageTxt(rawPackageTxt);
|
//// rawPackageDao.save(rawPackage);
|
//// if (pieces > shelfRank.getRawPackage().getLeftPieces()) {
|
//// pieces = pieces - shelfRank.getRawPackage().getLeftPieces();
|
//// } else {
|
//// break;
|
//// }
|
//// }
|
//// }
|
//// }
|
//
|
// return "success";
|
// } else if (optlist.size() != 0 && freeRanks.size() <
|
// optlist.size()) {
|
// rawPackageTxt.setStatus(RawPackageTxtState.WAIT_ASSIGNE);//
|
// 改变任务状态
|
// rawPackageTxt.setCreateTime(new Date());
|
// rawPackageTxtDao.save(rawPackageTxt);
|
// return "fail";// 此时料架已满
|
// }
|
}
|
return "success";
|
}
|
|
/**
|
* 退回任务时
|
*
|
* @param rawpackagetxtId
|
*/
|
public String reverse(String rawpackagetxtId) {
|
|
String[] rawpackagetxtIdArray = rawpackagetxtId.split(";");
|
for (String Id : rawpackagetxtIdArray) {
|
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findOne(Long.parseLong(Id));
|
List<RawPackage> rawPackagees = rawPackageTxt.getRawPackagees();
|
// 当前任务变成等待分配
|
rawPackageTxt.setStatus(RawPackageTxtState.WAIT_ASSIGNE);
|
|
}
|
|
return "success";
|
}
|
|
/**
|
* 空闲中的料架
|
*
|
* @return
|
*/
|
public List<String> getFreeShelfRankNumberList() {
|
List<ShelfRank> freeShelfRanks = shelfRankDao.findFreeRanks();
|
List<String> result = new ArrayList<String>();
|
|
// 生成list
|
for (ShelfRank shelfRank : freeShelfRanks) {
|
result.add(shelfRank.getNumber());
|
}
|
return result;
|
}
|
|
// 得到glassid的option
|
public String getoptionHtml() {
|
List<String> lists = new ArrayList<String>();
|
StringBuffer html = new StringBuffer();
|
List<ShelfRank> shelfRanks = shelfRankDao.findAll();
|
for (ShelfRank shelfRank : shelfRanks) {
|
if ((!lists.contains(shelfRank.getGlassId()))
|
&& (shelfRank.getGlassId() != "" && shelfRank.getGlassId() != null)) {
|
lists.add(shelfRank.getGlassId());
|
}
|
}
|
for (String s : lists) {
|
html.append("<option>").append(s).append("</option>");
|
}
|
return html.toString();
|
}
|
public String getLoadsHtmls(String id) {
|
StringBuffer html = new StringBuffer();
|
try {
|
List<LoadMachineRack> rackes =loadMachineRackDao.findLoadMachineRacksByLoadMachineId(Long.valueOf(id));
|
for (LoadMachineRack loadMachineRack:rackes) {
|
html.append("<li><a href=\"#\" onclick=\"$('#toRankId').val('"+loadMachineRack.getNumber()+"')\">"+loadMachineRack.getNumber()+"</a></li>");
|
}
|
} catch (Exception e) {
|
html.append("数据异常");
|
// TODO: handle exception
|
}
|
return html.toString();
|
}
|
// 得到颜色膜系的option
|
public String getcolorHtml() {
|
StringBuffer html = new StringBuffer();
|
List<GlassNumberColor> colors = glassNumberColorDao.findAll();
|
// 生成list
|
for (GlassNumberColor color : colors) {
|
html.append("<option>").append(color.getGlassId()).append("</option>");
|
}
|
return html.toString();
|
}
|
|
public List<ShelfRank> selectAll(Integer start, Integer length) {
|
Pageable pageable = new PageRequest(start / length, length, Direction.ASC, "id");
|
Page<ShelfRank> lists = shelfRankDao.findNotUsedRanks(pageable);
|
List<ShelfRank> misakaList = lists.getContent();
|
//LOGGER.debug(misakaList.toString());
|
return misakaList;
|
}
|
|
public int selectCount() {
|
int count = shelfRankDao.countNotUseRanks();
|
return count;
|
}
|
|
public List<ShelfRank> selectAll1(Integer start, Integer length, String thickness) {
|
Pageable pageable = new PageRequest(start / length, length, Direction.ASC, "id");
|
Page<ShelfRank> lists = shelfRankDao.findNotUsedRanks1(Double.valueOf(thickness), pageable);
|
List<ShelfRank> misakaList = lists.getContent();
|
//LOGGER.debug(lists.toString());
|
return misakaList;
|
}
|
|
public int selectCount1(String thickness) {
|
int count = shelfRankDao.countNotUseRanks1(Double.valueOf(thickness));
|
return count;
|
}
|
|
public List<ShelfRank> selectAll2(Integer start, Integer length, String glassId) {
|
Pageable pageable = new PageRequest(start / length, length, Direction.ASC, "id");
|
Page<ShelfRank> lists = shelfRankDao.findNotUsedRanks2(glassId, pageable);
|
List<ShelfRank> misakaList = lists.getContent();
|
//LOGGER.debug(lists.toString());
|
return misakaList;
|
}
|
|
public int selectCount2(String glassId) {
|
int count = shelfRankDao.countNotUseRanks2(glassId);
|
return count;
|
}
|
|
public List<ShelfRank> selectAll3(Integer start, Integer length, String thickness, String glassId) {
|
Pageable pageable = new PageRequest(start / length, length, Direction.ASC, "id");
|
Page<ShelfRank> lists = shelfRankDao.findNotUsedRanks3(Double.valueOf(thickness), glassId, pageable);
|
List<ShelfRank> misakaList = lists.getContent();
|
//LOGGER.debug(lists.toString());
|
return misakaList;
|
}
|
|
public int selectCount3(String thickness, String glassId) {
|
int count = shelfRankDao.countNotUseRanks3(Double.valueOf(thickness), glassId);
|
return count;
|
}
|
|
/**
|
* 删除原片
|
*/
|
public void deleteBtn(String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
|
for (String id : strId) {
|
ShelfRank shelfRank = shelfRankDao.findOne(Long.valueOf(id));
|
shelfRank.setState(ShelfRankState.FREE);
|
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.setPrecent(null);
|
shelfRankDao.save(shelfRank);
|
}
|
}
|
|
/**
|
* 修改料架状态
|
*/
|
public void updateshelfrank(String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
|
for (String id : strId) {
|
ShelfRank shelfRank = shelfRankDao.findOne(Long.valueOf(id));
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
shelfRankDao.save(shelfRank);
|
}
|
}
|
|
public void updateshelfrank1(String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
|
for (String id : strId) {
|
ShelfTask shelfTask = shelfTaskDao.findOne(Long.valueOf(id));
|
shelfTask.setState("已完成");
|
shelfTaskDao.save(shelfTask);
|
}
|
}
|
|
/**
|
* 禁用或启用料架
|
*/
|
public void stopOrStart(String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
|
for (String id : strId) {
|
|
ShelfRank shelfRank = shelfRankDao.findOne(Long.valueOf(id));
|
if (shelfRank.getFlag().equals("1")) {
|
shelfRank.setFlag("0");
|
} else {
|
shelfRank.setFlag("1");
|
// shelfRank.setState(ShelfRankState.FREE);
|
// 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);
|
}
|
shelfRankDao.save(shelfRank);
|
}
|
}
|
|
/**
|
* 下载料架Excel形式
|
*
|
* @param request
|
* @param response
|
*/
|
public void exportExcelFile(HttpServletRequest request, HttpServletResponse response) {
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
|
String fileName = "rank_" + format.format(new Date()) + ".xls";
|
|
// 初始化格式
|
response.setContentType("application/vnd.ms-excel");
|
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
// 开始写入
|
ByteArrayOutputStream byteOut = generateByteArrayOutputStream(request);
|
InputStream input = new ByteArrayInputStream(byteOut.toByteArray());
|
|
byte[] buffer = new byte[1024];
|
|
try {
|
OutputStream outputStream = response.getOutputStream();
|
int len = 0;
|
while ((len = input.read(buffer)) != -1) {
|
outputStream.write(buffer, 0, len);
|
}
|
outputStream.flush();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 根据料架号查找料架
|
*
|
* @param value
|
* @return
|
*/
|
public JSON findByNumber(String value) {
|
ShelfRank shelfrank = shelfRankDao.findShelfRankByNumber(value);
|
JsonConfig cfg = new JsonConfig();
|
cfg.setJsonPropertyFilter(new PropertyFilter() {
|
public boolean apply(Object source, String name, Object value) {
|
if (name.equals("shelfTaskes") || name.equals("rawPackage")) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
});
|
JSONObject jsonShelfRank = JSONObject.fromObject(shelfrank, cfg);
|
return jsonShelfRank;
|
}
|
|
public JSONObject findByNumbers() {
|
ShelfTask shelfTask = shelfTaskDao.findInWorkTask();
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(shelfTask!=null){
|
param1.put("size","1");
|
param1.put("state",shelfTask.getState());
|
param1.put("tackType",shelfTask.getTaskType());
|
param1.put("flag",shelfTask.getFlag());
|
param1.put("shelfRankId",shelfTask.getShelfRank().getId());
|
param1.put("loadMachineRackId",shelfTask.getLoadMachineRack().getNumber());
|
h.putAll(param1);
|
}
|
|
return h;
|
|
|
}
|
|
public JSONObject findByNumberload1s() {
|
LoadMachineTask loadMachineTask1 = loadMachineTaskDao.findByStatework1();
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
|
if(loadMachineTask1!=null&&loadMachineTask1.getLoadMachineRack()!=null){
|
param1.put("loadsize1","1");
|
param1.put("loadstate1",loadMachineTask1.getState());
|
param1.put("loadMachineId1",loadMachineTask1.getLoadMachine().getId());
|
param1.put("loadMachineRackNumber1",loadMachineTask1.getLoadMachineRack().getNumber());
|
h.putAll(param1);
|
}
|
|
return h;
|
|
|
}
|
|
public JSONObject findByNumberload2s() {
|
LoadMachineTask loadMachineTask2 = loadMachineTaskDao.findByStatework2();
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(loadMachineTask2!=null&&loadMachineTask2.getLoadMachineRack()!=null){
|
param1.put("loadsize2","1");
|
param1.put("loadstate2",loadMachineTask2.getState());
|
param1.put("loadMachineId2",loadMachineTask2.getLoadMachine().getId());
|
param1.put("loadMachineRackNumber2",loadMachineTask2.getLoadMachineRack().getNumber());
|
h.putAll(param1);
|
}
|
|
return h;
|
|
|
}
|
|
|
|
|
/* 根据机器名称,word长度获取所有的信息。使用方法:通过【下标】获取16进制的一个字
|
* 用途:机器IO信号读取
|
* @param machineName
|
* @param index
|
* @return
|
*/
|
public String[] GetMachineSign(String machineName,int index){
|
ShelfStatu machinestu=shelfStatuDao.findByMachine(machineName);
|
String message=machinestu.getMessage();
|
String []InfoTex =new String[index];
|
for(int i=0;i<index;i++){
|
InfoTex[i]=message.substring(0,4);
|
message=message.substring(4);
|
}
|
return InfoTex;
|
}
|
|
|
|
public JSONObject cut1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("cut1");
|
ShelfStatu statu1=shelfStatuDao.findByMachine("load1");
|
String str=statu.getMessage();
|
String str1=statu1.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String result1[]= deviceService.GetResultTexts(str1,45);
|
String cut1start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[39]).charAt(2));//切割机入口光电
|
String cut1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(4));//切割机出口光电
|
String cut1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(14));//切割机电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("cutsize1","1");
|
param1.put("cutstartsignal1",cut1start);
|
param1.put("cutstopsignal1",cut1stop);
|
param1.put("cutactionsignal1",cut1action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject cut2(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("cut2");
|
ShelfStatu statu1=shelfStatuDao.findByMachine("load2");
|
String str=statu.getMessage();
|
String str1=statu1.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String result1[]= deviceService.GetResultTexts(str1,45);
|
String cut2start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[39]).charAt(2));//切割机入口光电
|
String cut2stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(4));//切割机出口光电
|
String cut2action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(14));//切割机电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("cutsize2","1");
|
param1.put("cutstartsignal2",cut2start);
|
param1.put("cutstopsignal2",cut2stop);
|
param1.put("cutactionsignal2",cut2action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject floatationsignal(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("stacker");
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,34);
|
String floastart=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[21]).charAt(7));//气浮台入口光电
|
String floastop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[21]).charAt(11));//过度台出口光电
|
String floaaction1=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[31]).charAt(3));//过度台电机输送运行信号
|
String floaaction=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[31]).charAt(0));//气浮台电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("floasize","1");
|
param1.put("floastartsignal",floastart);
|
param1.put("floastopsignal",floastop);
|
param1.put("floaactionsignal",floaaction);
|
param1.put("floaactionsignal1",floaaction1);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject stacker(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("stacker");
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,34);
|
String stackerstart=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[21]).charAt(1));//堆高机入口光电
|
String stackerstop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[21]).charAt(3));//堆高机出口光电
|
String stackeraction=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[31]).charAt(6));//堆高机电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("stackersize","1");
|
param1.put("stackerstartsignal",stackerstart);
|
param1.put("stackerstopsignal",stackerstop);
|
param1.put("stackeractionsignal",stackeraction);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
|
public JSONObject transfer1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("transfer1");
|
ShelfStatu statu1=shelfStatuDao.findByMachine("stacker");
|
String str=statu.getMessage();
|
String str1=statu1.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String result1[]= deviceService.GetResultTexts(str1,34);
|
String stackerstop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[21]).charAt(3));//堆高机出口光电
|
String stackeraction=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[31]).charAt(6));//堆高机电机输送运行信号
|
String transfer1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(1));//转向台-1到位信号
|
String transfer1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(8));//转向台-1电机运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("transfer1size","1");
|
param1.put("transfer1startsignal",stackerstop);
|
param1.put("transfer1stopsignal",transfer1stop);
|
param1.put("transfer1stackeractionsignal",stackeraction);
|
param1.put("transfer1actionsignal",transfer1action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject transfer2(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("transfer2");
|
ShelfStatu statu1=shelfStatuDao.findByMachine("liedown");
|
String str=statu.getMessage();
|
String str1=statu1.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String result1[]= deviceService.GetResultTexts(str1,45);
|
String liedown1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[36]).charAt(3));//立转卧出口光电
|
String liedown1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result1[37]).charAt(13));//立转卧电机输送运行信号
|
String transfer2stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(1));//转向台-2到位信号
|
String transfer2action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(8));//转向台-2电机运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("transfer2size","1");
|
param1.put("transfer2startsignal",liedown1stop);
|
param1.put("transfer2stopsignal",transfer2stop);
|
param1.put("transfer2liedown1actionsignal",liedown1action);
|
param1.put("transfer2actionsignal",transfer2action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
|
public JSONObject downlie1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("downlie");
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String downlie1start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(1));//卧转立入口光电
|
String downlie1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(3));//卧转立出口光电
|
String downlie1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(13));//堆高机电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("downlie1size","1");
|
param1.put("downlie1startsignal",downlie1start);
|
param1.put("downlie1stopsignal",downlie1stop);
|
param1.put("downlie1actionsignal",downlie1action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject downlie1piantai(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("downlie");
|
|
ShelfStatu statu1=shelfStatuDao.findByMachine("gaoliwei1");
|
String str1=statu1.getMessage();
|
String result1[]= ResultTexts(str1);
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String jiqishou2=GetBinForFloat(result1[27]);//一号机器手的信号
|
String downlie1piantaistart=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(3));//卧转立片台入口光电
|
/*String downlie1piantaistop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(12));//卧转立片台出口光电
|
*/ String downlie1piantaiaction=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(14));//片台电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("downlie1piantaisize","1");
|
param1.put("downlie1piantaistartsignal",downlie1piantaistart);
|
param1.put("downlie1piantaistopsignal",jiqishou2);
|
param1.put("downlie1piantaiactionsignal",downlie1piantaiaction);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject liedown1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("liedown");
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String liedown1start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(1));//立转卧入口光电
|
String liedown1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(3));//立转卧出口光电
|
String liedown1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(13));//立转卧电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("liedown1size","1");
|
param1.put("liedown1startsignal",liedown1start);
|
param1.put("liedown1stopsignal",liedown1stop);
|
param1.put("liedown1actionsignal",liedown1action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
|
public JSONObject liedown1piantai(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("liedown");
|
|
ShelfStatu statu1=shelfStatuDao.findByMachine("gaoliwei1");
|
String str1=statu1.getMessage();
|
String result1[]= ResultTexts(str1);
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,45);
|
String jiqishou1=GetBinForFloat(result1[39]);//五号机器手的信号
|
/*String liedown1piantaistart=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(10));//立转卧片台入口光电
|
*/ String liedown1piantaistop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[36]).charAt(12));//立转卧片台出口光电
|
String liedown1piantaiaction=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[37]).charAt(14));//立转卧片台电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("liedown1piantaisize","1");
|
param1.put("liedown1piantaistartsignal",jiqishou1);
|
param1.put("liedown1piantaistopsignal",liedown1piantaistop);
|
param1.put("liedown1piantaiactionsignal",liedown1piantaiaction);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject edge1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("edge1");
|
|
String str=statu.getMessage();
|
String result[]= deviceService.GetResultTexts(str,6);
|
String edge1start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(12));//一号磨边机入口光电
|
String edge1stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(13));//一号磨边机出口光电
|
String edge1action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(8));//一号磨边机电机输送运行信号
|
String edge2start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(14));//二号磨边机入口光电
|
String edge2stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(15));//二号磨边机出口光电
|
String edge2action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(9));//二号磨边机电机输送运行信号
|
String edge3start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[3]).charAt(0));//三号磨边机入口光电
|
String edge3stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[3]).charAt(1));//三号磨边机出口光电
|
String edge3action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(10));//三号磨边机电机输送运行信号
|
String edge4start=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[3]).charAt(2));//四号磨边机入口光电
|
String edge4stop=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[3]).charAt(3));//四号磨边机出口光电
|
String edge4action=HexUtil.getReturnStr(HexUtil.GetHextoBinReverse(result[2]).charAt(11));//四号磨边机电机输送运行信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("edgesize","1");
|
param1.put("edge1startsignal",edge1start);
|
param1.put("edge1stopsignal",edge1stop);
|
param1.put("edge1actionsignal",edge1action);
|
param1.put("edge2startsignal",edge2start);
|
param1.put("edge2stopsignal",edge2stop);
|
param1.put("edge2actionsignal",edge2action);
|
param1.put("edge3startsignal",edge3start);
|
param1.put("edge3stopsignal",edge3stop);
|
param1.put("edge3actionsignal",edge3action);
|
param1.put("edge4startsignal",edge4start);
|
param1.put("edge4stopsignal",edge4stop);
|
param1.put("edge4actionsignal",edge4action);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
public JSONObject gaoliwei1(){
|
ShelfStatu statu=shelfStatuDao.findByMachine("gaoliwei1");
|
|
String str=statu.getMessage();
|
String result[]= ResultTexts(str);
|
String jiqishou1=GetBinForFloat(result[27]);//一号机器手的信号
|
String jiqishou2=GetBinForFloat(result[39]);//五号机器手的信号
|
JSONObject h=new JSONObject();
|
Map<String, Object> param1=new HashMap<String, Object>();
|
if(statu!=null){
|
param1.put("jiqishou1",jiqishou1);
|
param1.put("jiqishou2",jiqishou2);
|
h.putAll(param1);
|
}
|
return h;
|
|
}
|
|
//得到所有的55个字
|
private String[] ResultTexts(String Str) {
|
String []InfoTex =new String[45];
|
for(int i=0;i<45;i++){
|
InfoTex[i]=Str.substring(0,8);
|
Str=Str.substring(8);
|
}
|
return InfoTex;
|
|
}
|
|
private String GetBinForFloat(String bin){
|
|
Float value = Float.intBitsToFloat(Integer.valueOf(bin.trim(), 16));
|
String result=Float.toString(value);
|
|
|
return result;
|
}
|
|
/**
|
* 根据料架号保存料架
|
*
|
* @param rawPackage
|
* @param shelfRankNumber
|
*/
|
public void SaveShelfRankByNumber(RawPackage rawPackage, String shelfRankNumber) {
|
rawPackage.setLeftPieces(rawPackage.getPieces());
|
rawPackage.setShelfRank(shelfRankDao.findShelfRankByNumber(shelfRankNumber));
|
rawPackage.setState(ShelfRankState.ON_WAITING);
|
rawPackage.setCreateTime(new Date());
|
String glassid = (int) rawPackage.getThickness() + rawPackage.getColor();
|
rawPackage.setGlassId(glassid);
|
rawPackage = rawPackageDao.save(rawPackage);
|
// 初始化料架
|
ShelfRank shelfRank = shelfRankDao.findShelfRankByNumber(shelfRankNumber);
|
shelfRank.setPrecent(rawPackage.getManufacturer());
|
shelfRank.setState(ShelfRankState.ON_WAITING);
|
shelfRank.setRawPackage(rawPackage);
|
shelfRank.setColor(rawPackage.getColor());
|
shelfRank.setGlassId(rawPackage.getGlassId());
|
shelfRank.setLength(rawPackage.getHeight());
|
shelfRank.setPieces(rawPackage.getPieces());
|
shelfRank.setThickness(rawPackage.getThickness());
|
shelfRank.setWidth(rawPackage.getWidth());
|
shelfRank.setCreateTime(rawPackage.getCreateTime());
|
shelfRankDao.save(shelfRank);
|
Rank rank = new Rank(glassid, rawPackage.getPieces(), rawPackage.getWidth(), rawPackage.getHeight(),
|
rawPackage.getThickness(), rawPackage.getColor(), rawPackage.getManufacturer(), new Date(), shelfRank);
|
rank.setFlag("0");
|
rank.setType("进库");
|
rank.setEndtime(new Date());
|
rankDao.save(rank);
|
rankDao.save(rank);
|
// 创建吊装任务
|
ShelfTask fromEmptyRankToHoist = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST,
|
new Date(), ShelfTaskFlag.SHELF_FLAG, shelfHoistDao.findAll().get(0), shelfRank);
|
ShelfTask fromHoistToRank = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_HOIST_TO_RANK, new Date(),
|
ShelfTaskFlag.SHELF_FLAG, shelfHoistDao.findAll().get(0), shelfRank);
|
|
shelfTaskDao.save(fromEmptyRankToHoist);
|
shelfTaskDao.save(fromHoistToRank);
|
// 进行统计任务
|
// saveexcel(shelfRank,rawPackage);
|
|
}
|
|
@SuppressWarnings("resource")
|
private void saveexcel(ShelfRank shelfRank, RawPackage rawPackage) {
|
//LOGGER.debug("开始读取数据!");
|
String filepath = "D://Excel";
|
File file = new File(filepath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
String[] fileName = file.list();
|
Date currentTime = new Date();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
|
String dateString = formatter.format(currentTime);
|
//LOGGER.debug("dateString:" + dateString);
|
for (int i = 0; i < fileName.length; i++) {
|
String name = fileName[i];
|
// String []string= name.split(".");
|
//LOGGER.debug("name:" + name);
|
if (name.contains(dateString)) {
|
File newFile = new File("D://Excel" + File.separator + name);
|
try {
|
//LOGGER.debug("进入相等判断");
|
parseExcelFile(shelfRank.getNumber(), newFile, name, rawPackage);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
break;
|
}
|
if (i == fileName.length - 1) {
|
//LOGGER.debug("进入最新excel添加!");
|
String newname = dateString + ".xls";
|
String path = "D:\\Excel";
|
File files = new File(path);
|
if (files.exists()) {
|
files.deleteOnExit();
|
files = new File(path);
|
}
|
ByteArrayOutputStream byteOut = getUseStream(shelfRank.getNumber(), rawPackage);
|
InputStream input = new ByteArrayInputStream(byteOut.toByteArray());
|
byte[] buffer = new byte[1024];
|
|
try {
|
OutputStream outputStream = null;
|
outputStream = new FileOutputStream(files.toString() + "\\" + newname);
|
int len = 0;
|
while ((len = input.read(buffer)) != -1) {
|
outputStream.write(buffer, 0, len);
|
}
|
input.close();
|
outputStream.flush();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
private ByteArrayOutputStream getUseStream(String number, RawPackage rawPackage) {
|
HSSFWorkbook workBook = new HSSFWorkbook();
|
HSSFSheet sheet = workBook.createSheet("仓储");
|
HSSFRow row = sheet.createRow(0);
|
row.createCell(0).setCellValue("自动仓储原片进出库报表 ");
|
// 设置表头
|
row = sheet.createRow(1);
|
row.createCell(0).setCellValue("序号");
|
row.createCell(1).setCellValue("库位号");
|
row.createCell(2).setCellValue("GlassId");
|
row.createCell(3).setCellValue("长度(mm)");
|
row.createCell(4).setCellValue("高度(mm)");
|
row.createCell(5).setCellValue("厚度(mm)");
|
row.createCell(6).setCellValue("数量");
|
row.createCell(7).setCellValue("平方");
|
row.createCell(8).setCellValue("进库时间");
|
row.createCell(9).setCellValue("出库时间");
|
row.createCell(10).setCellValue("原片厂家");
|
row = sheet.createRow(2);
|
row.createCell(0).setCellValue(1);
|
row.createCell(1).setCellValue(number);
|
row.createCell(2).setCellValue(rawPackage.getGlassId());
|
row.createCell(3).setCellValue(rawPackage.getWidth());
|
row.createCell(4).setCellValue(rawPackage.getHeight());
|
row.createCell(5).setCellValue(rawPackage.getThickness());
|
row.createCell(6).setCellValue(rawPackage.getPieces());
|
double area = (rawPackage.getWidth() / 1000) * (rawPackage.getHeight() / 1000) * rawPackage.getPieces();
|
row.createCell(7).setCellValue(area);
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
|
String dateString = formatter.format(rawPackage.getCreateTime());
|
row.createCell(8).setCellValue(dateString);
|
row.createCell(10).setCellValue(rawPackage.getManufacturer());
|
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
|
try {
|
workBook.write(byteOut);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return byteOut;
|
}
|
|
private void parseExcelFile(String number, File newFile, String name, RawPackage rawPackage) throws IOException {
|
//LOGGER.debug("进入添加excel操作");
|
FileInputStream fs = new FileInputStream("D://Excel" + File.separator + name); // 获取head.xls
|
POIFSFileSystem ps = new POIFSFileSystem(fs); // 使用POI提供的方法得到excel的信息
|
HSSFWorkbook wb = new HSSFWorkbook(ps);
|
HSSFSheet sheet = wb.getSheetAt(0); // 获取到工作表,因为一个excel可能有多个工作表
|
HSSFRow row = sheet.getRow(0);
|
FileOutputStream out = new FileOutputStream("D://Excel" + File.separator + name); // 向head.xls中写数据
|
for (int i = 2; i < 50; i++) {
|
row = sheet.getRow(i);
|
if (row == null) {
|
row = sheet.createRow(i);
|
row.createCell(0).setCellValue(i - 1);
|
row.createCell(1).setCellValue(number);
|
row.createCell(2).setCellValue(rawPackage.getGlassId());
|
row.createCell(3).setCellValue(rawPackage.getWidth());
|
row.createCell(4).setCellValue(rawPackage.getHeight());
|
row.createCell(5).setCellValue(rawPackage.getThickness());
|
row.createCell(6).setCellValue(rawPackage.getPieces());
|
double area = (rawPackage.getWidth() / 1000) * (rawPackage.getHeight() / 1000) * rawPackage.getPieces();
|
row.createCell(7).setCellValue(area);
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm");
|
String dateString = formatter.format(rawPackage.getCreateTime());
|
row.createCell(8).setCellValue(dateString);
|
row.createCell(10).setCellValue(rawPackage.getManufacturer());
|
break;
|
}
|
|
}
|
|
fs.close();
|
out.flush();
|
wb.write(out);
|
out.close();
|
}
|
|
/**
|
* 增加原片
|
*/
|
public void addrawPackage(RawPackage addrawPackage, String ids) {
|
String[] strId = ids.split(";");// 得到含有id值的数组
|
|
// 开始遍历
|
for (String id : strId) {
|
ShelfRank rank = shelfRankDao.findOne(Long.valueOf(id));
|
if (!rank.getState().equals(ShelfRankState.FREE)) {
|
if (addrawPackage.getPieces() != 0) {
|
rank.setPieces(addrawPackage.getPieces());
|
rank.setPrecent(addrawPackage.getManufacturer());
|
shelfRankDao.save(rank);
|
RawPackage rawPackage = rank.getRawPackage();
|
rawPackage.setLeftPieces(addrawPackage.getPieces());
|
rawPackageDao.save(rawPackage);
|
}
|
} else {
|
addrawPackage.setLeftPieces(addrawPackage.getPieces());
|
addrawPackage.setShelfRank(shelfRankDao.findOne(Long.valueOf(id)));
|
addrawPackage.setState(ShelfRankState.IN_WORK);
|
addrawPackage.setCreateTime(new Date());
|
addrawPackage.setGlassId(addrawPackage.getThickness() + addrawPackage.getColor());
|
|
addrawPackage = rawPackageDao.save(addrawPackage);
|
|
ShelfRank shelfRank = shelfRankDao.findOne(Long.valueOf(id));
|
shelfRank.setPrecent(addrawPackage.getManufacturer());
|
// update料架
|
shelfRank.setRawPackage(addrawPackage);
|
shelfRank.setColor(addrawPackage.getColor());
|
shelfRank.setGlassId(addrawPackage.getGlassId());
|
shelfRank.setLength(addrawPackage.getHeight());
|
shelfRank.setPieces(addrawPackage.getPieces());
|
shelfRank.setThickness(addrawPackage.getThickness());
|
shelfRank.setWidth(addrawPackage.getWidth());
|
shelfRank.setCreateTime(addrawPackage.getCreateTime());
|
shelfRank.setState(ShelfRankState.IN_WORK);
|
shelfRankDao.save(shelfRank);
|
}
|
|
}
|
}
|
|
public List<ShelfTask> findShelfTask() {
|
List<ShelfTask> shelfTasks = new ArrayList<ShelfTask>();
|
List<ShelfTask> waitingTasks = shelfTaskDao.findWaitingTasks();
|
List<ShelfTask> completedTasks = shelfTaskDao.findCompletedTasks();
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
if (completedTasks.size() > 0) {
|
shelfTasks.add(completedTasks.get(completedTasks.size() - 1));
|
}
|
if (workingTask != null) {
|
shelfTasks.add(workingTask);
|
}
|
if (waitingTasks.size() > 0) {
|
for (ShelfTask task : waitingTasks) {
|
shelfTasks.add(task);
|
}
|
}
|
return shelfTasks;
|
}
|
|
public ShelfTask findTask() {
|
List<ShelfTask> task = shelfTaskDao.findtask(1L);
|
if (task.size() > 0) {
|
return task.get(0);
|
}
|
return null;
|
}
|
|
public String findShelfTaskHtml() {
|
StringBuffer html = new StringBuffer();
|
List<ShelfTask> shelfTasks = new ArrayList<ShelfTask>();
|
List<ShelfTask> waitingTasks = shelfTaskDao.findWaitingTasks();
|
List<ShelfTask> completedTasks = shelfTaskDao.findCompletedTasks();
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
if (completedTasks.size() > 0) {
|
shelfTasks.add(completedTasks.get(completedTasks.size() - 1));
|
}
|
if (workingTask != null) {
|
shelfTasks.add(workingTask);
|
}
|
if (waitingTasks.size() > 0) {
|
for (ShelfTask task : waitingTasks) {
|
shelfTasks.add(task);
|
}
|
}
|
return html.toString();
|
}
|
|
public ShelfTask findWorkingShelfTask() {
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
return workingTask;
|
}
|
|
public void finishWorkingShelfTask() {
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
if (workingTask != null && !workingTask.equals("")) {
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK)) {
|
ShelfRank shelfRank = workingTask.getShelfRank();
|
// 获取上片位对象
|
LoadMachineRack loadMachineRack = workingTask.getLoadMachineRack();
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK)) {
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
shelfRankDao.save(shelfRank);
|
// 将原片信息关联到上片位
|
loadMachineRack.setRawPackage(shelfRank.getRawPackage());
|
loadMachineRack.setState(LoadMachineRackState.IN_WORKING);
|
loadMachineRackDao.save(loadMachineRack);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
} else {
|
// 从上片位到仓位
|
// 设置仓位状态
|
if (loadMachineRack.getRawPackage().getLeftPieces() == 0) {
|
// 料架上没有原片,设置仓位状态为空闲
|
shelfRank.setState(ShelfRankState.FREE);
|
shelfRank.setColor(null);
|
shelfRank.setPieces(0);
|
shelfRank.setGlassId(null);
|
shelfRank.setLength(null);
|
shelfRank.setWidth(null);
|
shelfRank.setThickness(null);
|
shelfRank.setRawPackage(null);
|
} else {
|
// 料架上有原片,设置仓位状态为使用中
|
shelfRank.setState(ShelfRankState.IN_WORK);
|
shelfRank.setPieces(loadMachineRack.getRawPackage().getLeftPieces());
|
}
|
// 设置上片位状态和原片信息
|
loadMachineRack.setState(LoadMachineRackState.FREE);
|
loadMachineRack.setRawPackage(null);
|
loadMachineRackDao.save(loadMachineRack);
|
|
}
|
// shelfRank.setRawPackage(null);
|
shelfRankDao.save(shelfRank);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
|
} else if (workingTask.getTaskType().equals(ShelfTaskType.FROM_EMPTY_RANK_TO_HOIST)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_RANK_TO_HOIST)) {
|
// 设置吊装位关联原片
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
shelfHoist.setRawPackage(workingTask.getShelfRank().getRawPackage());
|
// 设置吊装位状态
|
shelfHoist.setState(ShelfHoistState.IN_WORKING);
|
shelfHoistDao.save(shelfHoist);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
} else if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_EMPTY_RANK)
|
|| workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_RANK)) {
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_RANK)) {
|
ShelfRank shelfRank = workingTask.getShelfRank();
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
shelfRank.setState(ShelfRankState.IN_WORK);
|
shelfRank.setColor(rawPackage.getColor());
|
shelfRank.setGlassId(rawPackage.getGlassId());
|
shelfRank.setLength(rawPackage.getHeight());
|
shelfRank.setThickness(rawPackage.getThickness());
|
shelfRank.setWidth(rawPackage.getWidth());
|
shelfRank.setCreateTime(rawPackage.getCreateTime());
|
shelfRank.setLastestTime(new Date());
|
shelfRank.setPieces(shelfRank.getRawPackage().getLeftPieces());
|
shelfRankDao.save(shelfRank);
|
|
// 吊装位设置
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
shelfHoist.setState(ShelfHoistState.FREE);
|
shelfHoist.setRawPackage(null);
|
shelfHoistDao.save(shelfHoist);
|
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
} else {
|
ShelfRank shelfRank = workingTask.getShelfRank();
|
shelfRank.setState(ShelfRankState.FREE);
|
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);
|
shelfRankDao.save(shelfRank);
|
|
// 吊装位设置
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
shelfHoist.setState(ShelfHoistState.FREE);
|
shelfHoist.setRawPackage(null);
|
shelfHoistDao.save(shelfHoist);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
}
|
} else {
|
if (workingTask.getTaskType().equals(ShelfTaskType.FROM_HOIST_TO_LOAD_MACHINE_RACK)) {
|
// 设置吊装位的信息
|
// 吊装位设置
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
shelfHoist.setState(ShelfHoistState.FREE);
|
shelfHoist.setRawPackage(null);
|
shelfHoistDao.save(shelfHoist);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
} else {
|
// 从上片位到吊装位
|
// 上片位对象
|
LoadMachineRack loadrack = workingTask.getLoadMachineRack();
|
// 吊装位对象
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);
|
|
// 设置吊装位信息
|
|
shelfHoist.setState(ShelfHoistState.IN_WORKING);
|
shelfHoist.setRawPackage(loadrack.getRawPackage());
|
shelfHoistDao.save(shelfHoist);
|
|
// 设置上片位信息
|
|
loadrack.setState(LoadMachineRackState.FREE);
|
loadrack.setRawPackage(null);
|
loadMachineRackDao.save(loadrack);
|
workingTask.setState(ShelfTaskState.COMPLETED);
|
workingTask.setCompleteTime(new Date());
|
service.saveShelfTask(workingTask);
|
}
|
}
|
}
|
}
|
|
public void againshelftask() {
|
ShelfTask workingTask = shelfTaskDao.findInWorkTask();
|
if (workingTask != null) {
|
workingTask.setState(ShelfTaskState.WAITING);
|
shelfTaskDao.save(workingTask);
|
}
|
|
}
|
|
public String getstatus() {
|
StringBuffer html = new StringBuffer();
|
Shelf shelf = shelfDao.findOne(1L);
|
String status = shelf.getConnectState();
|
if (status.equals(ConnectState.CONNECTED)) {
|
html.append("<span class='badge bg-green'>").append(status).append("</span>");
|
} else if (status.equals(ConnectState.CONNECTING)) {
|
html.append("<span class='badge bg-yellow'>").append(status).append("</span>");
|
} else {
|
html.append("<span class='badge'>").append(status).append("</span>");
|
}
|
return html.toString();
|
}
|
|
/**
|
* @author 司家旺 作用:查找所有颜色膜系的名称
|
*
|
*/
|
/**
|
* 空闲中的料架
|
*
|
* @return
|
*/
|
public List<String> getColorList() {
|
List<GlassNumberColor> colors = glassNumberColorDao.findAll();
|
List<String> result = new ArrayList<String>();
|
|
// 生成list
|
for (GlassNumberColor color : colors) {
|
result.add(color.getGlassId());
|
}
|
return result;
|
}
|
|
public List<String> getGlassNameList() {
|
List<GlassCommer> names = glassCommerDao.findAll();
|
List<String> result = new ArrayList<String>();
|
|
// 生成list
|
for (GlassCommer name : names) {
|
result.add(name.getName());
|
}
|
return result;
|
}
|
|
public Map<String, Object> getmap() {
|
Map<String, Object> param = new HashMap<String, Object>();
|
List<ShelfTask> shelfTaskes = shelfTaskDao.findWaitingAndWorkingTasks();// 得到所有等待中的仓储任务
|
if (shelfTaskes.size() != 0) {
|
ShelfTask shelfTask = shelfTaskes.get(0);
|
if (shelfTask != null && shelfTask.getShelfRank() != null
|
&& shelfTask.getShelfRank().getRawPackage() != null) {
|
RawPackage rawPackage = shelfTask.getShelfRank().getRawPackage();
|
param.put("shelfTask", shelfTask);
|
param.put("rawPackage", rawPackage);
|
if (rawPackage.getLeftPieces() > 0) {
|
param.put("isok", true);
|
} else {
|
param.put("isok", false);
|
}
|
}
|
}
|
return param;
|
}
|
|
public String addtask(HttpServletRequest request) {
|
Long fromId = Long.valueOf(request.getParameter("shelfid"));
|
String toId = request.getParameter("rankid");
|
LoadMachineRack rack = loadMachineRackDao.findLoadMachineRacksByRankNumber(toId);
|
ShelfRank rank = shelfRankDao.findOne(fromId);
|
if (rank == null) {
|
return "errStartPosition";
|
}
|
System.out.println(rank.getId());
|
System.out.println(rank.getState());
|
System.out.println(rank.getState().equals(RackState.IN_WORK) && rack.getState().equals(RackState.FREE));
|
if (rank.getState().equals(RackState.IN_WORK) || rack.getState().equals(RackState.FREE)) {
|
// 创建任务
|
ShelfTask fromLoadMachineRackToShelfRack = shelfTaskDao
|
.findWorkingShelfTaskFromShelfRackToLoadMachineRack(rank.getId(),
|
rack.getId());
|
// 若没创建,则新建从上片位到货架的任务
|
if (fromLoadMachineRackToShelfRack == null) {
|
ShelfTask task = new ShelfTask(TaskState.WAITING, ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK,
|
new Date(), "1", rank, rack);
|
rank.setState(RackState.IN_WORKING);
|
shelfRankDao.save(rank);
|
rack.setRawPackage(rank.getRawPackage());
|
rack.setState(LoadMachineRackState.IN_WORK);
|
shelfTaskDao.save(task);
|
return "ok";
|
}else{
|
return "任务已存在!";
|
}
|
|
} else {
|
//LOGGER.debug("创建任务失败,该料架已被预定!");
|
return "创建任务失败,该料架已被预定,或者上片位已有料架!";
|
}
|
}
|
|
public String getLoadMachineRankHtml(long l) {
|
StringBuffer html = new StringBuffer();
|
List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId(l);
|
if (loadMachineRacks.size() > 0) {
|
for (LoadMachineRack loadMachineRack : loadMachineRacks) {
|
html.append("<tr><td>上片位").append(loadMachineRack.getNumber()).append("</td>");
|
if (loadMachineRack.getState().equals(RackState.FREE)) {
|
html.append("<td>").append(RackState.FREE).append("</td>");
|
} else {
|
if (loadMachineRack.getRawPackage() != null) {
|
ShelfRank rank = shelfRankDao.findRankByRawId(loadMachineRack.getRawPackage().getId());
|
html.append("<td>").append("【").append(rank.getNumber()).append("号】")
|
.append(loadMachineRack.getRawPackage().getDescription()).append("</td>");
|
} else {
|
html.append("<td>").append(loadMachineRack.getState()).append("</td>");
|
}
|
|
}
|
|
}
|
}
|
html.append("</tr>");
|
return html.toString();
|
}
|
|
/**
|
* 根据料架号手动出库
|
*
|
* @param id
|
*/
|
public void exitload(String id) {
|
LoadMachineRack rack = loadMachineRackDao.findOne(Long.valueOf(id));
|
if (!rack.getState().equals(RackState.ON_EXIT)) {
|
rack.setState(RackState.ON_EXIT);
|
loadMachineRackDao.save(rack);
|
RawPackage rawPackage = rack.getRawPackage();
|
if (rawPackage != null) {
|
ShelfRank rank = shelfRankDao.findRankByRawId(rawPackage.getId());
|
ShelfTask task = new ShelfTask(TaskState.WAITING, ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK,
|
new Date(), "1", rank, rack);
|
shelfTaskDao.save(task);
|
}
|
}
|
|
}
|
|
/**
|
* 根据料架号手动保存上片位料架
|
*
|
* @param rawPackage
|
* @param shelfRankNumber
|
* @param ids
|
*/
|
public void addAction(RawPackage rawPackage, String shelfRankNumber, String ids) {
|
ShelfRank shelfRank = shelfRankDao.findShelfRankByNumber(shelfRankNumber);
|
// RawPackage raw = shelfRank.getRawPackage();
|
LoadMachineRack rack = loadMachineRackDao.findOne(Long.valueOf(ids));
|
// if (!shelfRank.getState().equals(RackState.FREE) && raw != null) {
|
// if (rawPackage.getPieces() == 0) {
|
// shelfRank.setState(ShelfRankState.FREE);
|
// shelfRank.setRawPackage(null);
|
// shelfRank.setColor(null);
|
// shelfRank.setGlassId(null);
|
// shelfRank.setLength(null);
|
// shelfRank.setPieces(null);
|
// shelfRank.setThickness(null);
|
// shelfRank.setWidth(null);
|
// rack.setRawPackage(null);
|
// rack.setState(ShelfRankState.FREE);
|
// shelfRankDao.save(shelfRank);
|
// loadMachineRackDao.save(rack);
|
// }else {
|
// shelfRank.setPieces(rawPackage.getPieces());
|
// raw.setLeftPieces(rawPackage.getPieces());
|
// shelfRankDao.save(shelfRank);
|
// rawPackageDao.save(raw);
|
// }
|
// }else{
|
rawPackage.setLeftPieces(rawPackage.getPieces());
|
rawPackage.setState(ShelfRankState.IN_WORKING);
|
rawPackage.setCreateTime(new Date());
|
rawPackage.setGlassId((int) rawPackage.getThickness() + rawPackage.getColor());
|
rawPackage = rawPackageDao.save(rawPackage);
|
// 初始化料架
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
shelfRank.setRawPackage(rawPackage);
|
shelfRank.setColor(rawPackage.getColor());
|
shelfRank.setGlassId(rawPackage.getGlassId());
|
shelfRank.setLength(rawPackage.getHeight());
|
shelfRank.setPieces(rawPackage.getPieces());
|
shelfRank.setThickness(rawPackage.getThickness());
|
shelfRank.setWidth(rawPackage.getWidth());
|
shelfRank.setCreateTime(rawPackage.getCreateTime());
|
shelfRankDao.save(shelfRank);
|
|
rack.setRawPackage(rawPackage);
|
rack.setState(RackState.IN_WORKING);
|
loadMachineRackDao.save(rack);
|
}
|
|
public void modifyAction(String pieces, String ids) {
|
LoadMachineRack rack = loadMachineRackDao.findOne(Long.valueOf(ids));
|
RawPackage rawPackage = rack.getRawPackage();
|
if (rawPackage != null) {
|
ShelfRank shelfRank = shelfRankDao.findRankByRawId(rawPackage.getId());
|
int pic = Integer.parseInt(pieces);
|
/*if (pic == 0) {
|
shelfRank.setState(ShelfRankState.FREE);
|
shelfRank.setRawPackage(null);
|
shelfRank.setColor(null);
|
shelfRank.setGlassId(null);
|
shelfRank.setLength(null);
|
shelfRank.setPieces(null);
|
shelfRank.setThickness(null);
|
shelfRank.setWidth(null);
|
rack.setRawPackage(null);
|
rack.setState(ShelfRankState.FREE);
|
shelfRankDao.save(shelfRank);
|
loadMachineRackDao.save(rack);
|
} else {
|
rawPackage.setLeftPieces(pic);
|
shelfRank.setPieces(pic);
|
shelfRankDao.save(shelfRank);
|
rawPackageDao.save(rawPackage);
|
}*/
|
rawPackage.setLeftPieces(pic);
|
rawPackageDao.save(rawPackage);
|
} else {
|
rack.setState(RackState.FREE);
|
loadMachineRackDao.save(rack);
|
}
|
|
}
|
|
public void deletetask() {
|
List<ShelfTask> tasks = shelfTaskDao.findShelfTaskFromShelfRackToHoist();
|
if (tasks.size() > 0) {
|
for (ShelfTask task : tasks) {
|
// 先删除料架信息
|
ShelfRank shelfRank = task.getShelfRank();
|
shelfRank.setState(ShelfRankState.FREE);
|
shelfRank.setRawPackage(null);
|
shelfRank.setColor(null);
|
shelfRank.setGlassId(null);
|
shelfRank.setLength(null);
|
shelfRank.setPieces(null);
|
shelfRank.setThickness(null);
|
shelfRank.setWidth(null);
|
shelfTaskDao.delete(task);
|
}
|
}
|
ShelfHoist hoist = shelfHoistDao.findOne(1L);
|
hoist.setState(RackState.FREE);
|
hoist.setRawPackage(null);
|
shelfHoistDao.save(hoist);
|
}
|
|
public List<ShelfRank> findRankList(String color, String glassThickness) {
|
return shelfRankDao.findInWorkRanks10(Double.parseDouble(glassThickness), color);
|
}
|
|
public void deletetloadask() {
|
List<ShelfTask> waitingTasks = shelfTaskDao.findWaitingTasksByFlag("1");
|
ShelfTask inWorkTask = shelfTaskDao.findInWorkTasksByFlag("1");
|
if (inWorkTask != null) {
|
waitingTasks.add(inWorkTask);
|
}
|
if (waitingTasks.size() > 0) {
|
for (ShelfTask task : waitingTasks) {
|
if (task.getTaskType().equals(ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK)) {
|
LoadMachineRack rack = task.getLoadMachineRack();
|
if (rack.getRawPackage() == null) {
|
rack.setState(ShelfRankState.FREE);
|
} else {
|
rack.setState(ShelfRankState.IN_WORKING);
|
}
|
|
} else if (task.getTaskType().equals(ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK)) {
|
ShelfRank rank = task.getShelfRank();
|
LoadMachineRack rack = task.getLoadMachineRack();
|
rank.setState(ShelfRankState.IN_WORK);
|
rack.setRawPackage(null);
|
rack.setState(ShelfRankState.FREE);
|
}
|
shelfTaskDao.delete(task);
|
}
|
}
|
}
|
|
public String lackGlassHtml() {
|
StringBuffer html = new StringBuffer();
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup("1");
|
if (rawPackageTxt != null) {
|
List<OptPattern> optPatterns = new ArrayList<OptPattern>();
|
List<OptPattern> optPatternes = optPatternDao.findOptPatternByBatchNumber(rawPackageTxt.getTxt_name());
|
if (optPatternes.size() > 0) {
|
for (OptPattern optPattern : optPatternes) {
|
if (optPattern.getPieces() > optPattern.getCompletedPieces()) {
|
if (optPatterns.size() > 0) {
|
for (int i = 0; i < optPatterns.size(); i++) {
|
OptPattern opt = optPatterns.get(i);
|
if (opt.getWidth() == optPattern.getWidth()
|
&& opt.getHeight() == optPattern.getHeight()) {
|
opt.setPieces(
|
opt.getPieces() + optPattern.getPieces() - optPattern.getCompletedPieces());
|
break;
|
}
|
if (i == optPatterns.size() - 1) {
|
optPatterns.add(new OptPattern(optPattern.getOptId(), optPattern.getGlassId(),
|
optPattern.getDescription(), optPattern.getGlassThickness(),
|
optPattern.getPieces() - optPattern.getCompletedPieces(), 0,
|
optPattern.getWidth(), optPattern.getHeight(), "等待中", optPattern.getColor(),
|
optPattern.getContent(), optPattern.getBatch(), optPattern.getGroups(),
|
optPattern.getRawPackageTxt()));
|
break;
|
}
|
}
|
|
} else {
|
optPatterns.add(new OptPattern(optPattern.getOptId(), optPattern.getGlassId(),
|
optPattern.getDescription(), optPattern.getGlassThickness(),
|
optPattern.getPieces() - optPattern.getCompletedPieces(), 0, optPattern.getWidth(),
|
optPattern.getHeight(), "等待中", optPattern.getColor(), optPattern.getContent(),
|
optPattern.getBatch(), optPattern.getGroups(), optPattern.getRawPackageTxt()));
|
}
|
}
|
|
}
|
}
|
List<ShelfRank> shelfRanks = shelfRankDao.findInWorkRankAndInWorkingRanks();
|
List<RawPackage> rawPackageLack = new ArrayList<RawPackage>();
|
for (OptPattern opt : optPatterns) {
|
// 初始化这种规格剩余片数
|
int sum = 0;
|
// 初始化当前规格原片需要切割的片数
|
int pieces = opt.getPieces();
|
for (ShelfRank shelfRank : shelfRanks) {
|
RawPackage shelfRankRawPackage = shelfRank.getRawPackage();
|
|
if ((shelfRankRawPackage.getWidth() == opt.getWidth()
|
&& shelfRankRawPackage.getHeight() == opt.getHeight()
|
&& shelfRankRawPackage.getThickness() == opt.getGlassThickness()
|
&& shelfRankRawPackage.getColor().equals(opt.getColor()))||
|
(shelfRankRawPackage.getWidth() == opt.getHeight()
|
&& shelfRankRawPackage.getHeight() == opt.getWidth()
|
&& shelfRankRawPackage.getThickness() == opt.getGlassThickness()
|
&& shelfRankRawPackage.getColor().equals(opt.getColor()))) {
|
sum = sum + shelfRankRawPackage.getLeftPieces();
|
}
|
continue;
|
}
|
if (pieces > sum) {
|
rawPackageLack.add(new RawPackage(opt.getGlassId(), pieces - sum, opt.getWidth(), opt.getHeight(),
|
opt.getGlassThickness(), opt.getColor()));
|
}
|
}
|
if (rawPackageLack.size() > 0) {
|
String string = "当前共有: " + rawPackageLack.size() + " 种原片规格缺失:";
|
for (RawPackage raw : rawPackageLack) {
|
string += "<div>" + raw.getThickness() + "mm " + raw.getColor() + " [" + raw.getWidth() + "*"
|
+ raw.getHeight() + "]" + raw.getPieces() + "片</div>";
|
}
|
return string;
|
} else {
|
return "";
|
}
|
}
|
|
return html.toString();
|
}
|
|
public void addFixAction(LoadMachineFixRack loadMachineFixRack, String ids) {
|
LoadMachineFixRack rack = loadMachineFixRackDao.findOne(Long.valueOf(ids));
|
rack.setColor(loadMachineFixRack.getColor());
|
rack.setWidth(loadMachineFixRack.getWidth());
|
rack.setHeight(loadMachineFixRack.getHeight());
|
rack.setThickness(loadMachineFixRack.getThickness());
|
rack.setPieces(loadMachineFixRack.getPieces());
|
rack.setLeftPieces(loadMachineFixRack.getPieces());
|
rack.setCreateTime(new Date());
|
rack.setState(RackState.IN_WORK);
|
loadMachineFixRackDao.save(rack);
|
}
|
|
/***
|
*
|
* 功能:仓储库里面的数据合并成最新的信息
|
*
|
* @author northglass 2019年4月2日
|
**/
|
public String getAllShelf() {
|
StringBuffer html = new StringBuffer();
|
List<ShelfRank> shelfs = shelfRankDao.findInWorkRankAndInWorkingRanks();
|
List<ShelfRank> ranks = new ArrayList<ShelfRank>();
|
if (shelfs.size() > 0) {
|
for (ShelfRank shelfrank : shelfs) {
|
if (ranks.size() < 1) {
|
ranks.add(new ShelfRank(shelfrank.getNumber(), shelfrank.getPieces(), shelfrank.getWidth(),
|
shelfrank.getLength(), shelfrank.getThickness(), shelfrank.getColor(),
|
shelfrank.getCreateTime()));
|
continue;
|
} else {
|
for (int i = 0; i < ranks.size(); i++) {
|
ShelfRank rank = ranks.get(i);
|
if (rank != null) {
|
if (shelfrank.getColor().equals(rank.getColor())
|
&& String.valueOf(shelfrank.getThickness())
|
.equals(String.valueOf(rank.getThickness()))
|
&& String.valueOf(shelfrank.getWidth()).equals(String.valueOf(rank.getWidth()))
|
&& String.valueOf(rank.getLength()).equals(String.valueOf(rank.getLength()))) {
|
rank.setPieces(rank.getPieces() + shelfrank.getPieces());
|
break;
|
}
|
if (i == ranks.size() - 1) {
|
ranks.add(new ShelfRank(shelfrank.getNumber(), shelfrank.getPieces(),
|
shelfrank.getWidth(), shelfrank.getLength(), shelfrank.getThickness(),
|
shelfrank.getColor(), shelfrank.getCreateTime()));
|
break;
|
}
|
|
}
|
}
|
|
}
|
}
|
}
|
if (ranks.size() > 0) {
|
//LOGGER.debug("ranks.size()=" + ranks.size());
|
int i = 1;
|
for (ShelfRank rank : ranks) {
|
html.append("<tr><td>").append(i).append("</td><td>").append(rank.getColor()).append("</td><td>")
|
.append(rank.getThickness()).append("</td><td>").append(rank.getLength());
|
html.append("</td><td>").append(rank.getWidth()).append("</td><td>").append(rank.getPieces())
|
.append("</td></tr>");
|
i++;
|
}
|
}
|
return html.toString();
|
}
|
|
public void addglass() {
|
try {
|
Glass glass = glassDao.findOne(2313L);
|
int string = glassDao.saveById(glass.getFlag(), glass.getId());
|
//LOGGER.debug("shuliang" + string);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
public List<Rank> getrankList() {
|
List<Rank> ranks = rankDao.findAll();
|
if (ranks.size() > 10) {
|
List<Rank> rankList = new ArrayList<Rank>();
|
for (int i = ranks.size() - 1; i > ranks.size() - 11; i--) {
|
rankList.add(ranks.get(i));
|
}
|
return rankList;
|
} else {
|
return ranks;
|
}
|
}
|
|
/***
|
* 问题:查询吊装或者退库是原片的数量 2019年8月6日
|
*
|
* @author 司家旺
|
* @throws ParseException
|
*
|
****/
|
public List<Rank> selectrank(HttpServletRequest request) throws ParseException {
|
String starttime = request.getParameter("starttime");// 01/02/2017代表2017年1月2号
|
String completetime = request.getParameter("completetime");
|
|
Date startDate = null;
|
Date completeDate = null;
|
// 将时间格式化
|
if (starttime != null && !"".equals(starttime)) {
|
// 已经确定了格式,直接截取
|
String month = starttime.substring(0, 2);
|
String day = starttime.substring(3, 5);
|
String year = starttime.substring(6, starttime.length());
|
|
// 转换成2017-02-01格式
|
String startTime = year + "-" + month + "-" + day;
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
startDate = sdf.parse(startTime);
|
}
|
|
// 将时间格式化
|
if (completetime != null && !"".equals(completetime)) {
|
// 已经确定了格式,直接截取
|
String day = completetime.substring(0, 2);
|
String month = completetime.substring(3, 5);
|
String year = completetime.substring(6, completetime.length());
|
|
// 转换成2017-02-01格式
|
String completeTime = year + "-" + month + "-" + day;
|
|
// 将时间转换成timestemp类型
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
completeDate = sdf.parse(completeTime);
|
}
|
List<Rank> ranks = rankDao.findRanksByStartTimeAndCompleteTime(startDate, completeDate);
|
return ranks;
|
}
|
|
public List<DummyTime> getChange(String line) {
|
// 查找面积最大的优先出
|
RawPackageTxt txt = rawPackageTxtDao.findAcceptedByGroup(line);
|
List<DummyRack> rackes = new ArrayList<DummyRack>();
|
if (txt != null) {
|
List<GlassOrder> orderes = glassOrderDao.findByBatch(txt.getTxt_name());
|
if (orderes.size() > 0) {
|
List<GlassOrder> orders = new ArrayList<GlassOrder>();
|
// 获得料架的个数,而且找出其中五个最先出来的那个
|
for (int i = 0; i < orderes.size(); i++) {
|
if (i == 0) {
|
orders.add(orderes.get(i));
|
} else {
|
for (int j = 0; j < orders.size(); j++) {
|
if (orders.get(j).getApart_id().equals(orderes.get(i).getApart_id())) {
|
break;
|
}
|
if (j == orders.size() - 1) {
|
orders.add(orderes.get(i));
|
}
|
}
|
}
|
}
|
RankFit fit = rankFitDao.findOne(1L);
|
int b= fit.getRanknumber();
|
for (int i = 0; i < b; i++) {
|
String tString= String.valueOf(i);
|
DummyRack rack = new DummyRack(0.0, 0.0, tString, 0);
|
rackes.add(rack);
|
}
|
List<DummyTime> ds = getpaixu(orders,rackes);
|
while(ds ==null){
|
b=b+5;
|
for (int i = 0; i < b; i++) {
|
String tString= String.valueOf(i);
|
DummyRack rack = new DummyRack(0.0, 0.0, tString, 0);
|
rackes.add(rack);
|
}
|
ds = getpaixu(orders,rackes);
|
}
|
return ds;
|
}
|
}
|
return null;
|
|
// 找出第一个要出来的数据,最大的先出,调序
|
// 找位置
|
//
|
|
}
|
|
private List<DummyTime> getpaixu(List<GlassOrder> orders,List<DummyRack> rackes) {
|
String string = "";
|
List<GlassOrder> ods = new ArrayList<GlassOrder>();
|
while (orders.size() > 0) {
|
if (orders.size() > 1) {
|
int s = 0;
|
for (int i = 1; i < orders.size(); i++) {
|
double area = orders.get(0).getLength() * orders.get(0).getWidth();
|
double area1 = orders.get(i).getLength() * orders.get(i).getWidth();
|
if (area < area1) {
|
s = i;
|
}
|
if (i == orders.size() - 1) {
|
ods.add(orders.get(s));
|
orders.remove(s);
|
}
|
}
|
} else {
|
ods.add(orders.get(0));
|
orders.remove(0);
|
}
|
|
}
|
|
for (int i = 0; i < ods.size(); i++) {
|
if (i != 0) {
|
string = string + "&&" + ods.get(i).getApart_id();
|
} else {
|
string = ods.get(i).getApart_id();
|
}
|
|
}
|
// 排列组合
|
String string2[] = string.split("&&");
|
// 对当前的长宽进行排序
|
// 虚拟料架//用当前的料架计算(弃用),用于参数设置,比较方便简单。
|
// List<ArrangeMachineRank> rankes = arrangeMachineRankDao.findAll();
|
List<DummyGlass> glasses = new ArrayList<DummyGlass>();// 模拟玻璃进出队列数据
|
// 总体数据表
|
List<GlassOrder> glassOrders = glassOrderDao.findByBatch(ods.get(0).getManufacture_batch());
|
for (int j = 0; j < glassOrders.size(); j++) {
|
GlassOrder order = glassOrders.get(j);
|
DummyGlass glass = new DummyGlass(order.getWidth(), order.getLength(), order.getApart_id(),
|
order.getPieces(), order.getManufacture_batch(), "待识别", 0);
|
glasses.add(glass);
|
}
|
// 虚拟切割
|
RawPackageTxt txt = rawPackageTxtDao.findByTxtName(ods.get(0).getManufacture_batch());
|
List<OptPattern> optPatterns = optPatternDao.findById(txt.getId());
|
List<DummyCut> cuts = new ArrayList<DummyCut>();
|
for (int i = 0; i < optPatterns.size(); i++) {
|
OptPattern cutt = optPatterns.get(i);
|
DummyCut cut = new DummyCut(String.valueOf(cutt.getId()), cutt.getPieces(), 0, "等待中");
|
cuts.add(cut);
|
}
|
st = "";
|
time = 0;
|
sttr = "";
|
tb =0;
|
String [] laji = new String[string2.length];
|
String []cutsort = new String[string2.length];
|
DummyTime dummyTime = enterArrange(laji, string2,string2.length, ods.get(0).getManufacture_batch(), rackes,cuts,cutsort);
|
List<DummyTime> dummyTs = new ArrayList<DummyTime>();
|
if (dummyTime ==null) {
|
return null;
|
}else {
|
dummyTs.add(dummyTime);
|
return dummyTs;
|
}
|
|
}
|
|
/****
|
*
|
* 2020年8月13日
|
* @param laji
|
*
|
* @param glasses2
|
*
|
* @param string2
|
* 料架集合
|
* @param length
|
* @param number
|
* 订单号
|
* @param rackes
|
* 虚拟料架
|
* @param cuts
|
* @param cutsort
|
*
|
*
|
*
|
******/
|
// 得到最初的顺序,来轮询
|
@SuppressWarnings({ "unused", "unchecked" })
|
private DummyTime enterArrange(String[] laji, String[] string2, int length, String number, List<DummyRack> rackes, List<DummyCut> cuts, String[] cutsorts) {
|
if (string2 != null) {
|
for (int i = 0; i < string2.length; i++) {
|
laji[length-string2.length] = string2[i];
|
Map<String, Object> team = apartSure(string2[i], number, rackes,cuts,cutsorts);
|
List<DummyRack> rs = (List<DummyRack>) team.get("rackes");
|
// glasses2 = (List<DummyGlass>) team.get("glasses");
|
String cutsort = (String) team.get("cutsort");
|
cutsorts[length - string2.length] = cutsort;
|
if (rs != null) {
|
// 返回的没有爆仓,这条路继续可以走下去
|
List<DummyCut> allcuts = (List<DummyCut>) team.get("cuts");
|
if (allcuts.size()==0) {
|
if (string2.length>1) {
|
for (int j = 0; j < string2.length; j++) {
|
if (j!=i) {
|
laji[length-string2.length+j] = string2[j];
|
}
|
}
|
}
|
for(int j = 0; j < laji.length; j++){
|
if (j!=0) {
|
sttr = sttr+"*"+laji[j];
|
}else {
|
sttr = laji[j];
|
}
|
}
|
for(int j = 0; j < cutsorts.length; j++){
|
if (j!=0) {
|
if (!"".equals(cutsorts[j]) && cutsorts[j] !=null) {
|
st = st+"&A&"+cutsorts[j];
|
}
|
}else {
|
st = cutsorts[j];
|
}
|
}
|
string2 =null;
|
return new DummyTime(sttr, time, st, String.valueOf(tb));
|
}
|
if (string2 == null) {
|
return new DummyTime(sttr, time, st, String.valueOf(tb));
|
}
|
String[] stt = string2;
|
stt[i] = stt[stt.length - 1];
|
// 数组缩容
|
|
if (stt.length > 1) {
|
stt = Arrays.copyOf(stt, stt.length - 1);// 删除当前的元素,在进行排位
|
}
|
int[] chushi = new int[stt.length];
|
for (int j = 0; j < stt.length; j++) {
|
List<GlassOrder> glassOrders = glassOrderDao.findByApartAndBatch(number, stt[j]);
|
List<DummyGlass> glasses = new ArrayList<DummyGlass>();// 模拟玻璃进出队列数据
|
for (int t = 0; t < glassOrders.size(); t++) {
|
GlassOrder order = glassOrders.get(t);
|
if (glasses.size()>0) {
|
for (int k = 0; k < glasses.size(); k++) {
|
DummyGlass dgDummyGlass = glasses.get(k);
|
if (order.getWidth() == dgDummyGlass.getWidth() && order.getLength() == dgDummyGlass.getLength()) {
|
dgDummyGlass.setPieces(order.getPieces()+dgDummyGlass.getPieces());
|
break;
|
}
|
if (k == glasses.size()-1) {
|
DummyGlass glass = new DummyGlass(order.getWidth(), order.getLength(), order.getApart_id(),
|
order.getPieces(), order.getManufacture_batch(), "待识别", 0);
|
glasses.add(glass);
|
break;
|
}
|
}
|
}else {
|
DummyGlass glass = new DummyGlass(order.getWidth(), order.getLength(), order.getApart_id(),
|
order.getPieces(), order.getManufacture_batch(), "待识别", 0);
|
glasses.add(glass);
|
}
|
}
|
int sum = 0;
|
|
for (int k2 = 0; k2 < glasses.size(); k2++){
|
DummyGlass glass = glasses.get(k2);
|
for (int k = 0; k < rs.size(); k++) {
|
DummyRack rack = rs.get(k);
|
if (rack.getLength() != 0 && rack.getWidth() != 0) {
|
if (rack.getLength() == glass.getLength() && rack.getWidth() == glass.getWidth()) {
|
if (glass.getStatu().equals("待识别")) {
|
if (glass.getPieces() > glass.getCompletePieces() + rack.getPieces()) {
|
glass.setCompletePieces(glass.getCompletePieces() + rack.getPieces());
|
sum = sum + rack.getPieces();
|
} else {
|
sum = sum + glass.getPieces() - glass.getCompletePieces();
|
glass.setCompletePieces(glass.getPieces());
|
glass.setStatu("已识别");
|
break;
|
}
|
}
|
}
|
}
|
}
|
}
|
chushi[j] = sum;
|
}
|
// 对收集到的数据进行排序,变成一个新的数组
|
|
String[] string = getsort(chushi, stt);
|
if (string.length != 0) {
|
DummyTime s= enterArrange(laji, string,length, number, rs,allcuts,cutsorts);
|
if (s != null) {
|
return s;
|
}
|
} else {
|
return new DummyTime(sttr, time, st, String.valueOf(tb));
|
}
|
|
} else {// 爆仓,下面的可以继续循环
|
//LOGGER.debug("失败!"+string2.length);
|
continue;
|
}
|
}
|
// DummyTime dummyTime = new DummyTime("无法识别", 0, "80", "0");
|
DummyTime dummyTime = null;
|
return dummyTime;
|
}
|
|
DummyTime dummyTime = null;
|
return dummyTime;
|
|
}
|
|
private String[] getsort(int[] arr, String[] a) {
|
int []b= new int[arr.length];
|
for (int i = 0; i < arr.length; i++) {
|
b[i] = arr[i];
|
}
|
String[] adc = new String[a.length];
|
for (int i = 1; i < arr.length; i++) { //第一层for循环,用来控制冒泡的次数
|
for (int j = 0; j < arr.length-1; j++) { //第二层for循环,用来控制冒泡一层层到最后
|
//如果前一个数比后一个数大,两者调换 ,意味着泡泡向上走了一层
|
if (arr[j] < arr[j+1] ){
|
int temp = arr[j];
|
arr[j] = arr[j+1];
|
arr[j+1] = temp;
|
}
|
}
|
}
|
List<Integer> iL = new ArrayList<Integer>();;
|
for (int i = 0; i < arr.length; i++) {
|
for (int j = 0; j < b.length; j++) {
|
if (!iL.contains(j) && arr[i] == b[j]) {
|
adc[i] = a[j];
|
iL.add(j);
|
break;
|
}
|
}
|
}
|
|
return adc;
|
}
|
|
private Map<String, Object> apartSure(String string, String number,
|
List<DummyRack> rackes, List<DummyCut> cuts, String[] cutsorts) {
|
// Map<String, Object> param=new HashMap<String, Object>();
|
List<DummyGlass> gorders = new ArrayList<DummyGlass>();// 模拟玻璃进出队列数据
|
List<GlassOrder> gOrders = glassOrderDao.findByApartAndBatch(number, string);
|
// 下片数据表
|
DummyGlass gtDummyGlass = null;
|
for (int j = 0; j < gOrders.size(); j++) {// 单个料架
|
GlassOrder order = gOrders.get(j);
|
if (j==0) {
|
DummyGlass glass = new DummyGlass(order.getWidth(), order.getLength(), order.getApart_id(),
|
order.getPieces(), order.getManufacture_batch(), "待识别", 0);
|
gtDummyGlass = glass;
|
gorders.add(glass);
|
}else {
|
if (gtDummyGlass.getLength() == order.getLength() && gtDummyGlass.getWidth() == order.getWidth()) {
|
gtDummyGlass.setPieces(gtDummyGlass.getPieces()+order.getPieces());
|
}else {
|
DummyGlass glass = new DummyGlass(order.getWidth(), order.getLength(), order.getApart_id(),
|
order.getPieces(), order.getManufacture_batch(), "待识别", 0);
|
gtDummyGlass = glass;
|
gorders.add(glass);
|
}
|
}
|
|
|
|
}
|
|
return duijie(gorders, rackes, cuts, cutsorts);
|
}
|
|
private Map<String, Object> duijie(List<DummyGlass> gorders, List<DummyRack> raks,
|
List<DummyCut> nowcuts, String[] cutsorts) {
|
List<DummyCut> cuts = new ArrayList<DummyCut>();
|
for (int i = 0; i < nowcuts.size(); i++) {
|
DummyCut cDummyCut = nowcuts.get(i);
|
DummyCut cut = new DummyCut(cDummyCut.getOptid(),cDummyCut.getPieces(),cDummyCut.getCompletepieces(),cDummyCut.getStatus());
|
cuts.add(cut);
|
}
|
List<DummyRack> rackes = new ArrayList<DummyRack>();
|
for (int i = 0; i < raks.size(); i++) {
|
DummyRack rack= raks.get(i);
|
DummyRack rg= new DummyRack(rack.getLength(),rack.getWidth(),rack.getNumber(),rack.getPieces());
|
rackes.add(rg);
|
}
|
Map<String, Object> param = new HashMap<String, Object>();
|
DecimalFormat df1 = new DecimalFormat("0");
|
String name="";
|
//对RANK进行二次的排列,解除当前所需要出的玻璃
|
for (int i = 0; i < gorders.size(); i++) {// rack更新
|
DummyGlass glass2 = gorders.get(i);
|
for (int j = 0; j < rackes.size(); j++) {
|
DummyRack rack = rackes.get(j);
|
if (rack.getLength() == glass2.getLength() && rack.getWidth() == glass2.getWidth()) {
|
if (glass2.getPieces() - glass2.getCompletePieces() > rack.getPieces()) {
|
glass2.setCompletePieces(glass2.getCompletePieces() + rack.getPieces());
|
rack.setPieces(0);
|
rack.setLength(0);
|
rack.setWidth(0);
|
} else if (glass2.getPieces() - glass2.getCompletePieces() == rack.getPieces()) {
|
glass2.setCompletePieces(glass2.getPieces());
|
glass2.setStatu("已识别");
|
rack.setPieces(0);
|
rack.setLength(0);
|
rack.setWidth(0);
|
// gorders.remove(glass2);
|
break;
|
} else if (glass2.getPieces() - glass2.getCompletePieces() < rack.getPieces()) {
|
// glass2.setCompletePieces(glass2.getPieces());
|
glass2.setStatu("已识别");
|
rack.setPieces(rack.getPieces() - glass2.getPieces() + glass2.getCompletePieces());
|
// gorders.remove(glass2);
|
break;
|
}
|
time +=0.5;
|
}
|
}
|
if (glass2.getStatu().equals("待识别")) {
|
break;
|
}
|
}
|
while (gorders.size() > 0) {
|
int c = 0;
|
DummyGlass glass = gorders.get(0);
|
for (int i = 0; i < gorders.size(); i++) {
|
if (gorders.get(i).getStatu().equals("待识别")) {
|
glass = gorders.get(i);
|
c = i;// 从第N个开始的
|
break;
|
}
|
if (i == gorders.size() - 1) {
|
param.put("rackes", rackes);
|
// param.put("glasses", glasses);
|
param.put("cuts", cuts);
|
param.put("cutsort", name);
|
return param;
|
}
|
}
|
// 查找第一个切割文件
|
List<SingalGlass> sg = singalGlassDao.findByLength(glass.getTxtname(), glass.getLength(), glass.getWidth(),
|
glass.getApatrid());
|
// 查找第一个切割文件
|
Long id = 0L;
|
if (sg.size() > 0) {
|
for (int i = 0; i < sg.size(); i++) {
|
OptPattern optPattern = sg.get(i).getOptPattern();// 找到当前的版
|
if (cuts.size() == 0) {
|
param.put("rackes", rackes);
|
// param.put("glasses", glasses);
|
param.put("cuts", cuts);
|
param.put("cutsort", name);
|
return param;
|
}
|
for (int j = 0; j < cuts.size(); j++) {
|
DummyCut dCut = cuts.get(j);// 切割原件
|
if (dCut.getStatus().equals("等待中")
|
&& optPattern.getId().equals(Long.parseLong(dCut.getOptid()))) {
|
id = optPattern.getId();
|
dCut.setCompletepieces(dCut.getCompletepieces() + 1);
|
if (dCut.getPieces() == dCut.getCompletepieces()) {
|
dCut.setStatus("已完成");
|
cuts.remove(dCut);
|
}
|
break;
|
}
|
}
|
if (id != 0L) {
|
break;
|
}
|
if (i == sg.size() - 1) {
|
// 没有得到结果
|
// 查不同料架,同样大小。但是可以切割的料架
|
List<SingalGlass> sgt = singalGlassDao.findByLength(glass.getTxtname(), glass.getLength(),
|
glass.getWidth());
|
// 先统计几个料架信息
|
for (int t = 0; t < sgt.size(); t++) {
|
for (int j = 0; j < cuts.size(); j++) {
|
DummyCut dCut = cuts.get(j);// 切割原件
|
if (dCut.getStatus().equals("等待中")
|
&& sgt.get(t).getOptPattern().getId().equals(Long.parseLong(dCut.getOptid()))) {
|
id = Long.parseLong(dCut.getOptid());
|
dCut.setCompletepieces(dCut.getCompletepieces() + 1);
|
if (dCut.getPieces() == dCut.getCompletepieces()) {
|
dCut.setStatus("已完成");
|
cuts.remove(dCut);
|
}
|
break;
|
}
|
}
|
if (id != 0L) {
|
break;
|
}
|
}
|
}
|
if (id != 0L) {
|
break;
|
}
|
}
|
}
|
List<SingalGlass> singalGlasses = singalGlassDao.findByOptPattern(id);
|
if ("".equals(name)) {
|
name = name + id;
|
} else {
|
name = name + "&A&" + id;
|
}
|
int sum = 0;
|
for (int i = 0; i < singalGlasses.size(); i++) {
|
// 类似于测量,把当前按玻璃按序进入测量台中。
|
SingalGlass singalGlass = singalGlasses.get(i);
|
int pieces = singalGlass.getPieces();
|
sum += pieces;
|
// 当前的料架处理(只进片)
|
for (int n = 0; n < singalGlass.getPieces(); n++) {
|
int b = -1;
|
for (int j = 0; j < rackes.size(); j++) {
|
DummyRack rack = rackes.get(j);
|
/***
|
* 条件:对于当前的料架信息, 长宽不为0,直接添加当前的glass信息
|
* 当前料架,长宽不为0,且长款相等时。料架长度是否合适,不合适下一个,合适添加数量
|
*
|
* 错误,超过80理片笼
|
*
|
*****/
|
if (rack.getLength() == 0 && rack.getWidth() == 0) {
|
if (b < 0) {
|
b = j;
|
}
|
}
|
if (rack.getLength() == singalGlass.getLength() && rack.getWidth() == singalGlass.getWidth()
|
&& (rack.getLength() + 200) * rack.getPieces() + rack.getLength() < 4400 && rack.getPieces()<3) {
|
rack.setPieces(rack.getPieces() + 1);
|
break;
|
}
|
if (j == rackes.size() - 1) {
|
if (b > -1) {
|
DummyRack rack1 = rackes.get(b);
|
rack1.setLength(singalGlass.getLength());
|
rack1.setWidth(singalGlass.getWidth());
|
rack1.setPieces(1);
|
break;
|
} else {
|
param.put("rackes", null);
|
// param.put("glasses", glasses);
|
param.put("cutsort", name);
|
return param;
|
}
|
}
|
}
|
}
|
}
|
int s = 0;
|
for (int i = c; i < gorders.size(); i++) {// rack更新
|
int total = 0;
|
DummyGlass glass2 = gorders.get(i);
|
for (int j = 0; j < rackes.size(); j++) {
|
DummyRack rack = rackes.get(j);
|
if (rack.getLength() != 0 && rack.getWidth() != 0) {
|
total++;
|
}
|
if (rack.getLength() == glass2.getLength() && rack.getWidth() == glass2.getWidth()) {
|
s += 1;
|
if (glass2.getPieces() - glass2.getCompletePieces() > rack.getPieces()) {
|
glass2.setCompletePieces(glass2.getCompletePieces() + rack.getPieces());
|
rack.setPieces(0);
|
rack.setLength(0);
|
rack.setWidth(0);
|
} else if (glass2.getPieces() - glass2.getCompletePieces() == rack.getPieces()) {
|
glass2.setCompletePieces(glass2.getPieces());
|
glass2.setStatu("已识别");
|
rack.setPieces(0);
|
rack.setLength(0);
|
rack.setWidth(0);
|
// gorders.remove(glass2);
|
break;
|
} else if (glass2.getPieces() - glass2.getCompletePieces() < rack.getPieces()) {
|
glass2.setCompletePieces(glass2.getPieces());
|
glass2.setStatu("已识别");
|
rack.setPieces(rack.getPieces() - glass2.getPieces() + glass2.getCompletePieces());
|
// gorders.remove(glass2);
|
break;
|
}
|
}
|
}
|
if (tb < total) {
|
tb = total;
|
}
|
if (glass2.getStatu().equals("待识别")) {
|
break;
|
}
|
}
|
time += (double) sum / (double) 4;
|
time += (double) s / (double) 3;
|
|
}
|
time = Double.parseDouble(df1.format(time));
|
param.put("rackes", rackes);
|
// param.put("glasses", glasses);
|
param.put("cuts", cuts);
|
param.put("cutsort", name);
|
return param;
|
}
|
|
/****
|
*
|
*
|
* 方法,进去的是玻璃数,出来的是过程。
|
*
|
* 排列组合(时间代价太长,暂时舍弃) tring s List<Integer> iL String[] is int m数组 String txt
|
***/
|
|
public String getSure(String sort, String number) {
|
if(number.equals("无法识别")){
|
return null;
|
}
|
String[] string = sort.split("&A&");// 得到当前的切割参数
|
List<LoadMachineTask> loadMachineTaskes = loadMachineTaskDao.findAll();
|
if (loadMachineTaskes.size() > 0) {
|
CountMachineSort machineSort = countMachineSortDao.findOne(1L);
|
machineSort.setAllsort(number);
|
machineSort.setNowsort(number);
|
machineSort.setTxtname(loadMachineTaskes.get(0).getOptPattern().getRawPackageTxt().getTxt_name());
|
countMachineSortDao.save(machineSort);
|
for (int i = 0; i < loadMachineTaskes.size(); i++) {
|
LoadMachineTask loadMachineTask = loadMachineTaskes.get(i);
|
loadMachineTask.setNumber(0);
|
loadMachineTaskDao.save(loadMachineTask);
|
}
|
}
|
int m = 1;
|
for (int i = 0; i < string.length; i++) {
|
if ("".equals(string[i]) || "null".equals(string[i])) {
|
//LOGGER.debug("继续!");
|
continue;
|
}
|
int s=0;
|
if (i>0) {
|
for (int j = 0; j < i; j++) {
|
if (string[i].equals(string[j])) {
|
s++;
|
}
|
}
|
}
|
|
List<LoadMachineTask> ltask = loadMachineTaskDao.findByOptId(Long.parseLong(string[i]));
|
LoadMachineTask task = ltask.get(s);
|
task.setNumber(m++);
|
loadMachineTaskDao.save(task);
|
}
|
return null;
|
}
|
|
|
public List<ShelfTask> dongtaixianshigetmap() {
|
List<ShelfTask> shelfTaskes = shelfTaskDao.findWaitingTasks();// 得到所有等待中的仓储任务
|
try {
|
if(shelfTaskes!=null){
|
List<ShelfTask> Taskes=new ArrayList<ShelfTask>();
|
Taskes.add(shelfTaskes.get(0));
|
Taskes.get(0).getShelfRank().getId();
|
return Taskes;
|
}
|
return null;
|
} catch (Exception e) {
|
return null;
|
// TODO: handle exception
|
}
|
|
|
}
|
|
/**
|
* 动态显示料架实时状况
|
*
|
* @return
|
*/
|
/******************************************搞定****************************************************/
|
public String getShelfRankInfos() {
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
List<ShelfRank> ranks = shelfRankDao.shelfranktopten();
|
for (int i=0;i<ranks.size();i++) {//仓储料架信息--已有玻璃的的架子圆柱模块
|
ShelfRank rank=ranks.get(i);
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rank.getState().equals(ShelfRankState.IN_WORK)) {//仓储料架信息--使用中的架子圆柱模块
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
Date enterDate = rawPackage.getCreateTime();
|
long between = new Date().getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
|
html.append("<div id='qaz"+(i+1)+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
html.append(
|
"<div id='plm"+(i+1)+"' class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+(i+1)+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+(i+1)+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
} else if (rank.getState().equals(ShelfRankState.IN_WORKING)
|
|| rank.getState().equals(ShelfRankState.ON_WAITING)) {//仓储料架信息--正在使用或等待使用的架子圆柱模块
|
// 含有原片信息
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
html.append("<div id='qaz"+(i+1)+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
html.append(
|
"<div id='plm"+(i+1)+"' class='progress-bar progress-bar-primary progress-bar-yellow progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: white;'")
|
.append("<span></span>").append("</div>");
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+(i+1)+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+(i+1)+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: white;'>");
|
html.append("</div>");
|
}
|
} else if (rank.getState().equals(ShelfRankState.FREE)) {//仓储料架信息--空闲的架子圆柱模块
|
html.append("<div id='qaz"+(i+1)+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+(i+1)+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
html.append("</div>");
|
}
|
return html.toString();// 返回料架信息
|
}
|
|
|
public String getShelfRankInfos1() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
List<ShelfRank> ranks = shelfRankDao.shelfranktopsixteen();
|
for (int i=0;i<ranks.size();i++) {//仓储料架信息--已有玻璃的的架子圆柱模块
|
ShelfRank rank=ranks.get(i);
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rank.getState().equals(ShelfRankState.IN_WORK)) {//仓储料架信息--使用中的架子圆柱模块
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
Date enterDate = rawPackage.getCreateTime();
|
long between = new Date().getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
} else if (rank.getState().equals(ShelfRankState.IN_WORKING)
|
|| rank.getState().equals(ShelfRankState.ON_WAITING)) {//仓储料架信息--正在使用或等待使用的架子圆柱模块
|
// 含有原片信息
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
|
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar progress-bar-primary progress-bar-yellow progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: white;'")
|
.append("<span></span>").append("</div>");
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: white;'>");
|
html.append("</div>");
|
}
|
} else if (rank.getState().equals(ShelfRankState.FREE)) {//仓储料架信息--空闲的架子圆柱模块
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
html.append("</div>");
|
}
|
return html.toString();// 返回料架信息
|
}
|
|
|
|
public String getShelfRankInfos2() {
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
List<ShelfRank> ranks = shelfRankDao.shelfranktopeight();
|
for (int i=0;i<ranks.size();i++) {//仓储料架信息--已有玻璃的的架子圆柱模块
|
ShelfRank rank=ranks.get(i);
|
RawPackage rawPackage = rank.getRawPackage();
|
if (rank.getState().equals(ShelfRankState.IN_WORK)) {//仓储料架信息--使用中的架子圆柱模块
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
Date enterDate = rawPackage.getCreateTime();
|
long between = new Date().getTime() - enterDate.getTime();
|
long days = between / (1000 * 60 * 60 * 24);
|
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
} else if (rank.getState().equals(ShelfRankState.IN_WORKING)
|
|| rank.getState().equals(ShelfRankState.ON_WAITING)) {//仓储料架信息--正在使用或等待使用的架子圆柱模块
|
// 含有原片信息
|
if (rawPackage != null) {
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
// 计算片数百分比用于设置柱状图高度
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
|
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar progress-bar-primary progress-bar-yellow progress-bar-aqua' style=' width:"
|
+ percent + "%;background-color: white;'")
|
.append("<span></span>").append("</div>");
|
} else {
|
rank.setState(ShelfRankState.FREE);
|
shelfRankDao.save(rank);
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: white;'>");
|
html.append("</div>");
|
}
|
} else if (rank.getState().equals(ShelfRankState.FREE)) {//仓储料架信息--空闲的架子圆柱模块
|
html.append("<div id='qaz"+rank.getId()+"' class='progress vertical active ' value='").append(rank.getNumber())
|
.append("'style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+rank.getId()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;background-color: steelblue;'>");
|
html.append("</div>");
|
}
|
|
html.append("</div>");
|
}
|
return html.toString();// 返回料架信息
|
}
|
|
public String shelfRankInfosloadrack1() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
LoadMachineRack load = loadMachineRackDao.findLoadMachineRacksByRankOne();
|
|
if(load!=null){
|
|
if(load.getState().equals(ShelfRankState.IN_WORKING)){
|
RawPackage rawPackage = load.getRawPackage();
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
/*ShelfRank arank = shelfRankDao.findshelfbyRawpackageId(load.getRawPackage().getId());*/
|
|
html.append("<div id='qaz"+load.getNumber()+"' value="+load.getNumber()+" class='progress vertical active' style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar progress-bar-primary progress-bar-striped ' style=' width:"
|
+ percent + "%;height: 11px; background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
html.append("</div>");
|
}else if(load.getState().equals(ShelfRankState.FREE)){
|
html.append("<div id='qaz"+load.getNumber()+"' class='progress vertical active ' value="+load.getNumber()+" style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;height: 11px;background-color: white;'></div>");
|
html.append("</div>");
|
}
|
}
|
|
|
return html.toString();// 返回料架信息
|
|
}
|
|
|
public String shelfRankInfosloadrack2() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
LoadMachineRack load = loadMachineRackDao.findLoadMachineRacksByRankTwo();
|
if(load!=null){
|
|
if(load.getState().equals(ShelfRankState.IN_WORKING)){
|
RawPackage rawPackage = load.getRawPackage();
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
/*ShelfRank arank = shelfRankDao.findshelfbyRawpackageId(load.getRawPackage().getId());*/
|
|
html.append("<div id='qaz"+load.getNumber()+"' value="+load.getNumber()+" class='progress vertical active' style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar progress-bar-primary progress-bar-striped ' style=' width:"
|
+ percent + "%;height: 11px; background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
html.append("</div>");
|
}else if(load.getState().equals(ShelfRankState.FREE)){
|
html.append("<div id='qaz"+load.getNumber()+"' class='progress vertical active ' value="+load.getNumber()+" style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;height: 11px;background-color: white;'></div>");
|
html.append("</div>");
|
}
|
}
|
|
|
return html.toString();// 返回料架信息
|
}
|
|
public String shelfRankInfosloadrack3() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
LoadMachineRack load = loadMachineRackDao.findLoadMachineRacksByRankThree();
|
|
if(load!=null){
|
|
if(load.getState().equals(ShelfRankState.IN_WORKING)){
|
RawPackage rawPackage = load.getRawPackage();
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
/*ShelfRank arank = shelfRankDao.findshelfbyRawpackageId(load.getRawPackage().getId());*/
|
|
html.append("<div id='qaz"+load.getNumber()+"' value="+load.getNumber()+" class='progress vertical active' style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar progress-bar-primary progress-bar-striped ' style=' width:"
|
+ percent + "%;height: 11px; background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
html.append("</div>");
|
}else if(load.getState().equals(ShelfRankState.FREE)){
|
html.append("<div id='qaz"+load.getNumber()+"' class='progress vertical active ' value="+load.getNumber()+" style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;height: 11px;background-color: white;'></div>");
|
html.append("</div>");
|
}
|
}
|
|
|
return html.toString();// 返回料架信息
|
}
|
|
public String shelfRankInfosloadrack4() {
|
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
LoadMachineRack load = loadMachineRackDao.findLoadMachineRacksByRankFour();
|
|
if(load!=null){
|
|
if(load.getState().equals(ShelfRankState.IN_WORKING)){
|
RawPackage rawPackage = load.getRawPackage();
|
int leftPieces = rawPackage.getLeftPieces();
|
int Pieces = rawPackage.getPieces();
|
|
double percent = (double) leftPieces / (double) Pieces * 100;
|
/*ShelfRank arank = shelfRankDao.findshelfbyRawpackageId(load.getRawPackage().getId());*/
|
|
html.append("<div id='qaz"+load.getNumber()+"' value="+load.getNumber()+" class='progress vertical active' style='background-color: gray;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar progress-bar-primary progress-bar-striped ' style=' width:"
|
+ percent + "%;height: 11px; background-color: steelblue;'")
|
.append("<span></span>").append("</div>");
|
|
html.append("</div>");
|
}else if(load.getState().equals(ShelfRankState.FREE)){
|
html.append("<div id='qaz"+load.getNumber()+"' class='progress vertical active ' value="+load.getNumber()+" style='background-color: white;'>");
|
|
html.append(
|
"<div id='plm"+load.getNumber()+"' class='progress-bar color-palette progress-bar-striped' role='progressbar' style='width: 0%;height: 11px;background-color: white;'></div>");
|
html.append("</div>");
|
}
|
}
|
|
return html.toString();// 返回料架信息
|
}
|
|
|
|
|
|
|
}
|