package com.northglass.service.standalone;
|
|
import java.text.DecimalFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
|
import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.ui.Model;
|
|
import com.northglass.constants.GlassColor;
|
import com.northglass.constants.ShelfTaskFlag;
|
import com.northglass.constants.ShelfTaskType;
|
import com.northglass.constants.StateConstants;
|
import com.northglass.constants.StateConstants.LoadMachineRackState;
|
import com.northglass.constants.StateConstants.ShelfRankState;
|
import com.northglass.constants.StateConstants.ShelfTaskState;
|
import com.northglass.entity.GlassNumberColor;
|
import com.northglass.entity.LoadMachine;
|
import com.northglass.entity.LoadMachineRack;
|
import com.northglass.entity.ProdLineState;
|
import com.northglass.entity.RawPackage;
|
import com.northglass.entity.RawPackageTxt;
|
import com.northglass.entity.ShelfHoist;
|
import com.northglass.entity.ShelfRank;
|
import com.northglass.entity.ShelfTask;
|
import com.northglass.repository.GlassNumberColorDao;
|
import com.northglass.repository.LoadMachineDao;
|
import com.northglass.repository.LoadMachineRackDao;
|
import com.northglass.repository.ProdLineStateDao;
|
import com.northglass.repository.RawPackageDao;
|
import com.northglass.repository.RawPackageTxtDao;
|
import com.northglass.repository.ShelfHoistDao;
|
import com.northglass.repository.ShelfRankDao;
|
import com.northglass.repository.ShelfTaskDao;
|
import com.northglass.service.manage.ManageService;
|
import com.northglass.service.shelfmanager.ShelfManagerService;
|
|
@Component
|
@Transactional
|
public class StandAloneService {
|
private static final Logger LOGGER = LoggerFactory.getLogger(StandAloneService.class);
|
|
@Autowired
|
ShelfRankDao shelfRankDao;
|
|
@Autowired
|
LoadMachineRackDao loadMachineRackDao;
|
|
@Autowired
|
LoadMachineDao loadMachineDao;
|
|
@Autowired
|
ShelfHoistDao shelfHoistDao;
|
|
@Autowired
|
ShelfTaskDao shelfTaskDao;
|
|
@Autowired
|
ProdLineStateDao prodLineStateDao;
|
|
@Autowired
|
RawPackageTxtDao rawPackageTxtDao;
|
|
@Autowired
|
GlassNumberColorDao glassNumberColorDao;
|
|
@Autowired
|
RawPackageDao rawPackageDao;
|
|
@Autowired
|
ShelfManagerService shelfManagerService;
|
|
@Autowired
|
ManageService manageService;
|
|
/**
|
* 进入单机模式前判断
|
*/
|
public String intoPage(String loadmachineid,Model model){
|
//查看当前产线上是否有未完成的任务
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup(loadmachineid);
|
if(rawPackageTxt!=null){
|
return "standalone/startStandalonePage";
|
}
|
ProdLineState prodline = prodLineStateDao.findById(Integer.valueOf(loadmachineid));
|
if(prodline!=null){
|
if(!prodline.isStandalonestate()){
|
//有值且值为1,说明是点击开启按钮触发的
|
prodline.setStandalonestate(true);//将单机状态改为TRUE
|
prodLineStateDao.save(prodline);
|
}
|
}
|
if(!prodline.isStandalonestate()){
|
return "standalone/startStandalonePage";
|
}
|
StringBuffer html = new StringBuffer();
|
html.append("<option>").append(loadmachineid).append("</option>");
|
model.addAttribute("idHtml",html.toString());
|
model.addAttribute("getLoadsHtmls",shelfManagerService.getLoadsHtmls(loadmachineid));
|
model.addAttribute("shelfRanksHtml", this.getPageHtml(loadmachineid));
|
model.addAttribute("optionHtml",shelfManagerService.getcolorHtml());
|
model.addAttribute("shelfRankNumberList", shelfManagerService.getFreeShelfRankNumberList());
|
model.addAttribute("getColorList", shelfManagerService.getColorList());
|
model.addAttribute("loadMachineHtml", shelfManagerService.getLoadMachineRankHtml(Long.valueOf(loadmachineid)));
|
model.addAttribute("shelftasks", shelfManagerService.findShelfTask());
|
return "standalone/shelfRankPage";
|
|
}
|
|
/**
|
* 查找当前产线上的任务
|
* @return
|
*/
|
public String getTaskCurrentLine(HttpServletRequest request,String loadmachineId,Model model){
|
//查看当前产线上是否有未完成的任务
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup(loadmachineId);
|
if(rawPackageTxt!=null){
|
return "standalone/err";
|
}
|
//拼接料架信息
|
model.addAttribute("shelfRanksHtml", this.filtrate(request));
|
model.addAttribute("loadMachineHtml", this.getLoadMachineRankHtml(Long.valueOf(loadmachineId)));
|
return "standalone/shelfRankPage";
|
}
|
|
/**
|
* 退库前剩余原片
|
* @return
|
*/
|
public String exitShelfEnterLeftPieces(HttpServletRequest request,String loadmachineId,Model model){
|
//查看当前产线上是否有未完成的任务
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup(loadmachineId);
|
if(rawPackageTxt!=null){
|
return "standalone/err";
|
}
|
model.addAttribute("LoadMachineRack", this.getLoadMachineRack(request));
|
return "standalone/enterLeftPieces";
|
}
|
|
/**
|
* 退库
|
* @return
|
*/
|
public String exitShelf(HttpServletRequest request,String loadmachineId,Model model){
|
//查看当前产线上是否有未完成的任务
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup(loadmachineId);
|
if(rawPackageTxt!=null){
|
return "standalone/err";
|
}
|
|
if(loadmachineId.equals("1")){
|
model.addAttribute("shelfRanksHtml", this.filtrate(request));
|
model.addAttribute("loadMachineHtml", this.exitShelfTaskHtml(request, 1));
|
return "standalone/shelfRankPage";
|
}else{
|
model.addAttribute("shelfRanksHtml", this.filtrate(request));
|
model.addAttribute("loadMachineHtml", this.exitShelfTaskHtml(request, 2));
|
return "standalone/shelfRankPage2";
|
}
|
|
}
|
|
/**
|
* 创建料架任务接口
|
* @return
|
*/
|
public String createLoadTask(HttpServletRequest request,String loadmachineId,Model model){
|
//查看当前产线上是否有未完成的任务
|
RawPackageTxt rawPackageTxt = rawPackageTxtDao.findAcceptedByGroup(loadmachineId);
|
if(rawPackageTxt!=null){
|
return "standalone/err";
|
}
|
if(loadmachineId.equals("1")){
|
return this.createLoadTask1(request)?"standalone/success":"standalone/fail";
|
}else{
|
return this.createLoadTask2(request)?"standalone/success":"standalone/fail";
|
}
|
|
}
|
|
/**
|
* 退出单机模式接口
|
* @return
|
*/
|
public String endSingleMachine(HttpServletRequest request,Model model){
|
//处理产线1
|
//将list集合拿出
|
//将1号产线单机模式设置为false
|
int id=Integer.valueOf(request.getParameter("id"));
|
ProdLineState state = prodLineStateDao.findById(id);
|
state.setStandalonestate(false);
|
prodLineStateDao.save(state);
|
return "redirect:/standalonemanage/intopages";
|
//将2号产线单机模式设置为false
|
}
|
|
// /**
|
// * 返回料架信息
|
// * @return
|
// */
|
// public String getPageHtml(){
|
// //获取仓库中所有使用中的料架
|
// List<ShelfRank> shelfRanks = shelfRankDao.findInWorkRanks();
|
//
|
// StringBuffer pageHtml = new StringBuffer();
|
// if(shelfRanks.size()!=0){
|
// //获取每个料架上的rawpackage
|
// for(ShelfRank shelfRank:shelfRanks){
|
// RawPackage rawPackage = shelfRank.getRawPackage();
|
// if(rawPackage!=null){
|
// int leftPieces = rawPackage.getLeftPieces();
|
// if(leftPieces>0){
|
// String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
// //获取原片特殊标记基表数据
|
// GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
// String flag = "0" ;//默认不是特殊玻璃
|
// if(glassNumberColor!=null){
|
// //将当前对象所属的flag赋值
|
// flag = glassNumberColor.getFlag();
|
// }
|
// if(flag.equals("1")){
|
// //特殊玻璃,这一行记录背景色发送改变
|
// pageHtml.append("<tr style='color: red;'>");
|
// pageHtml.append("<td>").append("No.").append(shelfRank.getNumber()).append("Rack").append(" ").append("Glass Id:").append(rawPackage.getGlassId()).append(" ").append("Glass Specification:");
|
// pageHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
// pageHtml.append(rawPackage.getThickness()).append(" ").append("color:").append(rawPackage.getColor());
|
// pageHtml.append(" ").append("surplus pieces:").append(rawPackage.getLeftPieces()).append("</td>");
|
// pageHtml.append("</tr>");
|
// }else{
|
// pageHtml.append("<tr>");
|
// pageHtml.append("<td>").append("No.").append(shelfRank.getNumber()).append("Rack").append(" ").append("Glass Id:").append(rawPackage.getGlassId()).append(" ").append("Glass Specification:");
|
// pageHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
// pageHtml.append(rawPackage.getThickness()).append(" ").append("color:").append(rawPackage.getColor());
|
// pageHtml.append(" ").append("surplus pieces:").append(rawPackage.getLeftPieces()).append("</td>");
|
// pageHtml.append("</tr>");
|
// }
|
//
|
// }
|
// }
|
// }
|
// return pageHtml.toString();
|
//
|
// }
|
//
|
// return null;
|
//
|
// }
|
|
/**
|
* 返回料架信息
|
* @return
|
*/
|
public String getPageHtml(String loadmachineId){
|
StringBuffer html = new StringBuffer();// 实例化缓存
|
|
//获取仓库中所有使用中的料架
|
List<ShelfRank> ranks = shelfRankDao.findAll();
|
|
for(ShelfRank rank:ranks){
|
html.append("<div class='progress vertical active' style='width: 20px;background-color: gray; '>");
|
//料架不空闲
|
RawPackage rawPackage = rank.getRawPackage();
|
if(rawPackage!=null ){
|
//含有原片信息
|
String state = rawPackage.getState();
|
|
int leftPieces = rawPackage.getLeftPieces();
|
|
//计算片数百分比用于设置柱状图高度
|
double per = leftPieces*1.0/40;
|
DecimalFormat df = new DecimalFormat("0%");
|
String percent = df.format(per);
|
|
if(state.equals(ShelfRankState.IN_WORKING)){
|
//正在使用
|
if(loadmachineId.equals("1")){
|
html.append("<span>")
|
.append("<a href='../standalonemanage/getrawinfo?machine=1&id=").append(rawPackage.getId()).append("'>")
|
.append(rank.getNumber()).append("</a>").append("</span>");
|
html.append("<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red' role='progressbar' aria-valuenow='")
|
.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ").append(percent).append("'>" );
|
html.append("</div>");
|
|
|
// html.append("<a href='../standalonemanage/getrawinfo?machine=1&id=").append(rawPackage.getId()).append("'>");
|
// html.append("<div style='height: ").append(rawPackage.getLeftPieces()*7).append("px;background-color: red;'>");
|
// html.append("</div>");
|
// html.append("</a>");
|
}else{
|
html.append("<span>")
|
.append("<a href='../standalonemanage/getrawinfo?machine=2&id=").append(rawPackage.getId()).append("'>")
|
.append(rank.getNumber()).append("</a>").append("</span>");
|
html.append("<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-red' role='progressbar' aria-valuenow='")
|
.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ").append(percent).append("'>" );
|
html.append("</div>");
|
|
|
|
// html.append("<a href='../standalonemanage/getrawinfo?machine=2&id=").append(rawPackage.getId()).append("'>");
|
// html.append("<div style='height: ").append(rawPackage.getLeftPieces()*7).append("px;background-color: red;'>");
|
// html.append("</div>");
|
// html.append("</a>");
|
|
}
|
|
|
}else{
|
if(loadmachineId.equals("1")){
|
html.append("<span>")
|
.append("<a href='../standalonemanage/getrawinfo?machine=1&id=").append(rawPackage.getId()).append("'>")
|
.append(rank.getNumber()).append("</a>").append("</span>");
|
html.append("<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' role='progressbar' aria-valuenow='")
|
.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ").append(percent).append("'>" );
|
html.append("</div>");
|
|
|
// html.append("<a href='../standalonemanage/getrawinfo?machine=1&id=").append(rawPackage.getId()).append("'>");
|
// html.append("<div style='height: ").append(rawPackage.getLeftPieces()*7).append("px;background-color: green;'>");
|
// html.append("</div>");
|
// html.append("</a>");
|
}else{
|
html.append("<span>")
|
.append("<a href='../standalonemanage/getrawinfo?machine=2&id=").append(rawPackage.getId()).append("'>")
|
.append(rank.getNumber()).append("</a>").append("</span>");
|
html.append("<div class='progress-bar progress-bar-primary progress-bar-striped progress-bar-aqua' role='progressbar' aria-valuenow='")
|
.append(leftPieces).append("' aria-valuemin='0' aria-valuemax='40' style='height: ").append(percent).append("'>" );
|
html.append("</div>");
|
|
|
// html.append("<a href='../standalonemanage/getrawinfo?machine=2&id=").append(rawPackage.getId()).append("'>");
|
// html.append("<div style='height: ").append(rawPackage.getLeftPieces()*7).append("px;background-color: green;'>");
|
// html.append("</div>");
|
// html.append("</a>");
|
}
|
|
}
|
}else{
|
//没有原片
|
html.append("<span>").append(rank.getNumber()).append("</span>");
|
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 style='height: 210px;background-color: white;'>");
|
// html.append("</div>");
|
}
|
html.append("</div>");
|
}
|
|
|
return html.toString();// 返回料架信息
|
}
|
|
|
/**
|
* 查看料架信息
|
* @param model
|
* @param request
|
* @return
|
*/
|
public String getRawInfo(Model model,HttpServletRequest request){
|
|
//获取原片id
|
String rawId = request.getParameter("id");
|
Long rawid = Long.valueOf(rawId);
|
|
StringBuffer html = new StringBuffer();
|
|
RawPackage raw = rawPackageDao.findOne(rawid);
|
if(raw!=null){
|
Long id = raw.getId();
|
//当前在几号料架上
|
String number = raw.getShelfRank().getNumber();
|
double width = raw.getWidth();
|
double height = raw.getHeight();
|
double thickness = raw.getThickness();
|
String color = raw.getColor();
|
int leftPieces = raw.getLeftPieces();
|
|
html.append("<table style='width:400px;height:500px;'>");
|
|
html.append("<tr>");
|
html.append("<td>").append("ID").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(id).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("料架号").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(number).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("宽度").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(width).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("高度").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(height).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("厚度").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(thickness).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("颜色").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(color).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("<tr>");
|
html.append("<td>").append("余片").append("</td>");
|
html.append("<td>").append("<input type='text' style='text-align:center;' readonly='readonly' value='").append(leftPieces).append("'").append("</td>");
|
html.append("</tr>");
|
|
html.append("</table>");
|
}
|
|
return html.toString();
|
|
|
|
}
|
|
|
/**
|
* 根据id获取上片位的对象(1号)
|
* @return
|
*/
|
|
public LoadMachineRack getLoadMachineRack(HttpServletRequest request){
|
String number = request.getParameter("rankId");
|
|
LoadMachineRack loadMachineRack = loadMachineRackDao.findLoadMachineRacksByRankNumber(number);
|
//获取上片位的number,加以处理
|
if(number.equals("101")){
|
number="1";
|
}
|
if(number.equals("102")){
|
number="2";
|
}
|
//创建一个新对象,将原对象的需要的值赋给他
|
LoadMachineRack loadMachineRank = new LoadMachineRack();
|
loadMachineRank.setNumber(number);
|
loadMachineRank.setRawPackage(loadMachineRack.getRawPackage());
|
|
return loadMachineRank;
|
|
}
|
|
/**
|
* 根据id获取上片位的对象(2号)
|
* @return
|
*/
|
|
public LoadMachineRack getLoadMachineRack2(HttpServletRequest request){
|
String number = request.getParameter("rankId");
|
|
LoadMachineRack loadMachineRack = loadMachineRackDao.findLoadMachineRacksByRankNumber(number);
|
//获取上片位的number,加以处理
|
if(number.equals("103")){
|
number="1";
|
}
|
if(number.equals("104")){
|
number="2";
|
}
|
//创建一个新对象,将原对象的需要的值赋给他
|
LoadMachineRack loadMachineRank = new LoadMachineRack();
|
loadMachineRank.setNumber(number);
|
loadMachineRank.setRawPackage(loadMachineRack.getRawPackage());
|
|
return loadMachineRank;
|
|
}
|
|
|
|
|
/**
|
* 获取1号机上片位的信息
|
* @return
|
*/
|
public String getLoadMachineRankHtml(long loadMachineId){
|
//根据上片机获取所有的上片位对象
|
List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId(loadMachineId);
|
|
StringBuffer loadMachineRankHtml = new StringBuffer();
|
|
for(LoadMachineRack loadMachineRack:loadMachineRacks){
|
//将number显示成1和2
|
String rackid = loadMachineRack.getNumber();
|
if(rackid.equals("101")){
|
rackid="1";
|
}
|
if(rackid.equals("102")){
|
rackid="2";
|
}
|
RawPackage rawPackage = loadMachineRack.getRawPackage();
|
|
String state = loadMachineRack.getState();
|
//当工位状态为正在工作,说明此时工位才真正有玻璃
|
if(state!=null && state.equals(ShelfRankState.IN_WORKING)){
|
if(rawPackage!=null){
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='60%'>").append(" ").append("规格:");
|
loadMachineRankHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
loadMachineRankHtml.append(rawPackage.getThickness()).append(" ").append("颜色:").append(rawPackage.getColor());
|
loadMachineRankHtml.append(" ").append("剩余片数:").append(rawPackage.getLeftPieces()).append("</td>").append("  ");
|
//获取是否已经存在当前退库任务
|
Long loadMachineRackId = loadMachineRack.getId();
|
Long shelfRankId = loadMachineRack.getRawPackage().getShelfRank().getId();
|
Long shelfHoistId = shelfHoistDao.findOne((long) 1).getId();//目前就一个吊装位
|
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
|
//判断是不是特殊玻璃,是特殊玻璃,查看是否有从上片位到吊装位和从吊装位到仓位的任务,如果不是特殊玻璃,查看是否有从上片位到仓位的任务
|
if(flag.equals("1")){
|
//特殊玻璃
|
ShelfTask fromLoadMachineRackToHoist = shelfTaskDao.findExitShelfTaskFromLoadMachineRackToHoist(loadMachineRackId, shelfHoistId);
|
ShelfTask fromHoistToshelfRack = shelfTaskDao.findExitShelfTaskFromHoistToshelfRack(shelfHoistId, shelfRankId);
|
if(fromLoadMachineRackToHoist==null && fromHoistToshelfRack==null){
|
//没有当前退库任务时才拼接退库按钮
|
loadMachineRankHtml.append("<td align='left'>").append("<a href='/gmms/standalonemanage/exitShelfEnterLeftPieces?rankId=").append(loadMachineRack.getNumber()).append("'>").append("退库").append("</a>").append("</td>");
|
}
|
}else{
|
//非特殊玻璃
|
ShelfTask shelfTask = shelfTaskDao.findExitShelfTaskFromLoadMachineRackToShelfRack(loadMachineRackId, shelfRankId);
|
if(shelfTask==null || "".equals(shelfTask)){
|
//没有当前退库任务,才拼接退库按钮
|
loadMachineRankHtml.append("<td align='left'>").append("<a href='/gmms/standalonemanage/exitShelfEnterLeftPieces?rankId=").append(loadMachineRack.getNumber()).append("'>").append("退库").append("</a>").append("</td>");
|
}
|
}
|
|
loadMachineRankHtml.append("</tr>");
|
}else{
|
//工位上无原片
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='80%'>").append(" ").append(loadMachineRack.getState()).append("</td>");
|
loadMachineRankHtml.append("</tr>");
|
}
|
}else{
|
//工位上没有原片
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='80%'>").append(" ").append(loadMachineRack.getState()).append("</td>");
|
loadMachineRankHtml.append("</tr>");
|
}
|
|
}
|
return loadMachineRankHtml.toString();
|
|
}
|
|
/**
|
* 获取2号机上片位的信息
|
* @return
|
*/
|
public String getLoadMachineRankHtml2(long loadMachineId){
|
//根据上片机获取所有的上片位对象
|
List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId(loadMachineId);
|
|
StringBuffer loadMachineRankHtml = new StringBuffer();
|
|
for(LoadMachineRack loadMachineRack:loadMachineRacks){
|
RawPackage rawPackage = loadMachineRack.getRawPackage();
|
String rackid = loadMachineRack.getNumber();
|
if(rackid.equalsIgnoreCase("103")){
|
rackid="1";
|
}
|
if(rackid.equalsIgnoreCase("104")){
|
rackid="2";
|
}
|
//工位状态
|
String state = loadMachineRack.getState();
|
//工位状态为In Using时说明才有原片
|
if(state.equals(ShelfRankState.IN_WORKING)){
|
if(rawPackage!=null){
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='60%'>").append(" ").append("Glass Specification:");
|
loadMachineRankHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
loadMachineRankHtml.append(rawPackage.getThickness()).append(" ").append("color:").append(rawPackage.getColor());
|
loadMachineRankHtml.append(" ").append("Left Glass Pieces:").append(rawPackage.getLeftPieces()).append("</td>").append("  ");
|
//获取是否已经存在当前退库任务
|
Long loadMachineRackId = loadMachineRack.getId();
|
Long shelfRankId = loadMachineRack.getRawPackage().getShelfRank().getId();
|
Long shelfHoistId = shelfHoistDao.findOne((long) 1).getId();//目前就一个吊装位
|
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
//判断是不是特殊玻璃,是特殊玻璃,查看是否有从上片位到吊装位和从吊装位到仓位的任务,如果不是特殊玻璃,查看是否有从上片位到仓位的任务
|
if(flag.equals("1")){
|
//特殊玻璃
|
ShelfTask fromLoadMachineRackToHoist = shelfTaskDao.findExitShelfTaskFromLoadMachineRackToHoist(loadMachineRackId, shelfHoistId);
|
ShelfTask fromHoistToshelfRack = shelfTaskDao.findExitShelfTaskFromHoistToshelfRack(shelfHoistId, shelfRankId);
|
if(fromLoadMachineRackToHoist==null && fromHoistToshelfRack==null){
|
//没有当前退库任务且工位状态为In Using,拼接退库按钮
|
loadMachineRankHtml.append("<td align='left'>").append("<a href='/gmms/standalonemanage/exitShelfEnterLeftPieces2?rankId=").append(loadMachineRack.getNumber()).append("'>").append("Cancelling Storages").append("</a>").append("</td>");
|
}
|
}else{
|
//非特殊玻璃
|
ShelfTask shelfTask = shelfTaskDao.findExitShelfTaskFromLoadMachineRackToShelfRack(loadMachineRackId, shelfRankId);
|
if(shelfTask==null || "".equals(shelfTask)){
|
//没有当前退库任务且工位状态为In Using,拼接退库按钮
|
loadMachineRankHtml.append("<td align='left'>").append("<a href='/gmms/standalonemanage/exitShelfEnterLeftPieces2?rankId=").append(loadMachineRack.getNumber()).append("'>").append("Cancelling Storages").append("</a>").append("</td>");
|
}
|
}
|
loadMachineRankHtml.append("</tr>");
|
}else{
|
//没有原片
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='80%'>").append(" ").append(loadMachineRack.getState()).append("</td>");
|
loadMachineRankHtml.append("</tr>");
|
}
|
}else{
|
//没有原片
|
loadMachineRankHtml.append("<tr>");
|
loadMachineRankHtml.append("<td width='20%'>").append("No.").append(rackid).append("</td>");
|
loadMachineRankHtml.append("<td width='80%'>").append(" ").append(loadMachineRack.getState()).append("</td>");
|
loadMachineRankHtml.append("</tr>");
|
}
|
|
}
|
return loadMachineRankHtml.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(glassId==null){
|
glassId = "";
|
}
|
if(widthParam==null){
|
widthParam = "";
|
}
|
if(heightParam==null){
|
heightParam = "";
|
}
|
if(thicknessParam==null){
|
thicknessParam = "";
|
}
|
if(colorParam==null){
|
colorParam = "";
|
}
|
|
//拼接页面
|
StringBuffer pageHtml = 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){
|
//获取每个料架上的rawpackage
|
for(ShelfRank shelfRank:shelfRanks){
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
if(rawPackage!=null){
|
String glassId2 = rawPackage.getGlassId();
|
if(glassId!=""){
|
//符合条件才拼接
|
if(!glassId.equals(glassId2)){
|
//如果不符合条件,开始下次循环
|
continue;
|
}
|
}
|
int leftPieces = rawPackage.getLeftPieces();
|
if(leftPieces>0){
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
//是否是特殊玻璃
|
if(flag.equals("1")){
|
//特殊玻璃,这一行记录背景色发送改变
|
pageHtml.append("<tr style='color: red;'>");
|
pageHtml.append("<td>").append("No.").append(shelfRank.getNumber()).append("Rack").append(" ").append("Glass Id:").append(rawPackage.getGlassId()).append(" ").append("描述:");
|
pageHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
pageHtml.append(rawPackage.getThickness()).append(" ").append("颜色:").append(rawPackage.getColor());
|
pageHtml.append(" ").append("余片:").append(rawPackage.getLeftPieces()).append("</td>");
|
pageHtml.append("</tr>");
|
|
}else{
|
//非特殊玻璃,正常色
|
pageHtml.append("<tr>");
|
pageHtml.append("<td>").append("No.").append(shelfRank.getNumber()).append("Rack").append(" ").append("Glass Id:").append(rawPackage.getGlassId()).append(" ").append("Glass Specification:");
|
pageHtml.append(rawPackage.getWidth()).append("*").append(rawPackage.getHeight()).append("*");
|
pageHtml.append(rawPackage.getThickness()).append(" ").append("color:").append(rawPackage.getColor());
|
pageHtml.append(" ").append("Left Glass Pieces:").append(rawPackage.getLeftPieces()).append("</td>");
|
pageHtml.append("</tr>");
|
}
|
|
}
|
}
|
}
|
return pageHtml.toString();
|
|
}
|
|
return null;
|
|
}
|
|
/**
|
* 处理上片位的id
|
*/
|
public String dealLoadMachineRackId(HttpServletRequest request){
|
//获取需要退库的上片位(1代表01,2代表04)
|
String loadRankId = request.getParameter("loadMachineRackNumber");
|
//对上片位id进行分析
|
if(loadRankId.equals("1")){
|
loadRankId="101";
|
}
|
if(loadRankId.equals("2")){
|
loadRankId="102";
|
}
|
return loadRankId;
|
|
}
|
|
/**
|
* 处理上片位的id(2号)
|
*/
|
public String dealLoadMachineRackId2(HttpServletRequest request){
|
//获取需要退库的上片位(1代表02,2代表05)
|
String loadRankId = request.getParameter("loadMachineRackNumber");
|
//对上片位id进行分析
|
if(loadRankId.equals("1")){
|
loadRankId="103";
|
}
|
if(loadRankId.equals("2")){
|
loadRankId="104";
|
}
|
return loadRankId;
|
|
}
|
|
/**
|
* 退库任务
|
* @return
|
*/
|
public String exitShelfTaskHtml(HttpServletRequest request,long loadMachineId){
|
String loadRankId = null;
|
if(loadMachineId==1){
|
loadRankId = this.dealLoadMachineRackId(request);
|
}
|
if(loadMachineId==2){
|
loadRankId = this.dealLoadMachineRackId2(request);
|
}
|
String usedpieces = request.getParameter("usedPieces");
|
int piece = 0;
|
if(usedpieces!=null && !"".equals(usedpieces)){
|
piece = Integer.valueOf(usedpieces);
|
}else{
|
LOGGER.debug("输入的使用片数为空!");
|
throw new RuntimeException("输入的使用片数为空!");
|
}
|
if(loadRankId==null){
|
LOGGER.debug("上片位为空!");
|
throw new RuntimeException("上片位为空!");
|
}
|
LoadMachineRack loadMachineRack = loadMachineRackDao.findLoadMachineRacksByRankNumber(loadRankId);
|
ShelfRank shelfRank = loadMachineRack.getRawPackage().getShelfRank();
|
ShelfHoist shelfHoist = shelfHoistDao.findAll().get(0);//获取吊装位,目前只有一个
|
if(loadMachineRack!=null){
|
//建立从上片位到仓位的任务
|
loadMachineRack.getRawPackage().setLeftPieces(loadMachineRack.getRawPackage().getLeftPieces()-piece);
|
|
RawPackage rawPackage = loadMachineRack.getRawPackage();
|
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
if(flag.equals("1")){
|
//特殊玻璃(先回吊装位再回仓位)
|
ShelfTask fromLoadMachineRackToHoist = new ShelfTask(StateConstants.TaskState.WAITING, ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_HOIST, new Date(), ShelfTaskFlag.LOAD_FLAG, shelfHoist, loadMachineRack);
|
ShelfTask fromHoistToShelfRank = new ShelfTask(StateConstants.TaskState.WAITING, ShelfTaskType.FROM_HOIST_TO_RANK, new Date(), ShelfTaskFlag.LOAD_FLAG, shelfHoist, shelfRank);
|
shelfTaskDao.save(fromLoadMachineRackToHoist);
|
shelfTaskDao.save(fromHoistToShelfRank);
|
}else{
|
ShelfTask fromLoadMachineRackToShelfRank = new ShelfTask(StateConstants.TaskState.WAITING, ShelfTaskType.FROM_LOAD_MACHINE_RACK_TO_SHELF_RACK, new Date(), ShelfTaskFlag.LOAD_FLAG,shelfRank, loadMachineRack);
|
shelfTaskDao.save(fromLoadMachineRackToShelfRank);
|
}
|
}
|
|
String loadMachineRankHtml = null;
|
if(loadMachineId==1){
|
loadMachineRankHtml = this.getLoadMachineRankHtml(loadMachineId);
|
}
|
if(loadMachineId==2){
|
loadMachineRankHtml = this.getLoadMachineRankHtml2(loadMachineId);
|
}
|
|
|
return loadMachineRankHtml;
|
|
}
|
|
|
|
/**
|
* 调度页面
|
* @return
|
*/
|
public String getDispatchHtml(Long loadMachineId){
|
//找到属于当前产线的所有料架对象
|
LoadMachine loadMachine = loadMachineDao.findOne(loadMachineId);
|
List<LoadMachineRack> loadMachineRacks = loadMachine.getLoadMachineRacks();
|
|
int i = 1;
|
String temp = "loadMachineRackId";
|
Map<String, Long> rankIdMap = new HashMap<String, Long>();
|
|
for(LoadMachineRack rank:loadMachineRacks){
|
|
temp = temp+String.valueOf(i);
|
Long id = rank.getId();
|
|
rankIdMap.put(temp, id);
|
temp = "loadMachineRackId";
|
i++;
|
}
|
|
Long loadMachineRackId1 = rankIdMap.get("loadMachineRackId1");
|
Long loadMachineRackId2 = rankIdMap.get("loadMachineRackId2");
|
//符合当前产线的料架号下所有的退库任务和上片任务
|
List<ShelfTask> shelfTasks = shelfTaskDao.findDispatchTasks(loadMachineRackId1, loadMachineRackId2);
|
if(shelfTasks.size()!=0){
|
|
StringBuffer dispatchHtml = new StringBuffer();
|
|
for(ShelfTask task:shelfTasks){
|
dispatchHtml.append("<tr>");
|
dispatchHtml.append("<td>").append(task.getTaskType()).append("</td>");
|
dispatchHtml.append("<td>").append(" ").append(task.getState()).append("</td>");
|
dispatchHtml.append("<td align='center'>").append(" ").append(task.getCreateTime()).append("</td>");
|
String number = task.getLoadMachineRack().getNumber();
|
if(number.equals("101")){
|
number="1";
|
}
|
if(number.equals("102")){
|
number="2";
|
}
|
if(number.equals("103")){
|
number="1";
|
}
|
if(number.equals("104")){
|
number="2";
|
}
|
dispatchHtml.append("<td align='center'>").append(" ").append(number).append("</td>");
|
if(task.getShelfRank()!=null){
|
dispatchHtml.append("<td align='center'>").append(" ").append(task.getShelfRank().getNumber()).append("</td>");
|
}else{
|
dispatchHtml.append("<td align='center'>").append(" ").append("</td>");
|
}
|
dispatchHtml.append("</tr>");
|
}
|
|
return dispatchHtml.toString();
|
}
|
|
|
|
return null;
|
|
}
|
|
/**
|
* 校验输入的仓位和上片位是否合法
|
*/
|
public String checkLoadRankTask(HttpServletRequest request,Long loadMachineId){
|
Long fromId = Long.valueOf(request.getParameter("shelfid"));
|
Long toId = Long.valueOf(request.getParameter("rankid"));
|
|
Long fromid = fromId/1;//取整
|
Long toid = toId/1;
|
//判断是否为整数
|
if(fromId != fromid || toId != toid){
|
return "invalid number";
|
}
|
|
//拿到所有的仓位号,工位号,以及吊装位号
|
List<ShelfRank> shelfRanks = shelfRankDao.findAll();
|
Long firstShelfRankId = shelfRanks.get(0).getId();//最小仓位号
|
Long lastShelfRankId = shelfRanks.get(shelfRanks.size()-1).getId();//最大仓位号
|
|
List<LoadMachineRack> lineOneloadMachineRacks = loadMachineDao.findOne((long) 1).getLoadMachineRacks();
|
List<LoadMachineRack> lineTwoloadMachineRacks = loadMachineDao.findOne((long) 2).getLoadMachineRacks();
|
|
//起始位值必须是仓位号,终止位必须是当前产线下的上片位号
|
if(loadMachineId==1){
|
//一号线
|
if(fromId>=firstShelfRankId && fromId<=lastShelfRankId){
|
//起始位输入正确
|
if(toId==Long.valueOf(lineOneloadMachineRacks.get(0).getNumber()) || toId==Long.valueOf(lineOneloadMachineRacks.get(1).getNumber())){
|
//找到需要上片的上片位
|
LoadMachineRack rack = loadMachineRackDao.findLoadMachineRacksByRankNumber(String.valueOf(toId));
|
String state = rack.getState();
|
if(!LoadMachineRackState.FREE.equals(state)){
|
return "当前工位正在使用!";
|
}
|
//终止位正确
|
//查找输入的仓位对象
|
ShelfRank shelfRank = shelfRankDao.findOne(fromId);
|
//料架不为空,且不能为In Using 状态
|
if(shelfRank!=null && !ShelfRankState.IN_WORKING.equals(shelfRank.getState())){
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
if(rawPackage!=null){
|
//有原片对象
|
int leftPieces = rawPackage.getLeftPieces();
|
if(leftPieces>0){
|
//原片数量大于0
|
}else{
|
return "当前料架无原片";
|
}
|
}else{
|
return "当前料架无原片";
|
}
|
}else{
|
return "无料架或者当前料架被占用";
|
}
|
}else{
|
//终止位输入错误
|
return "errEndPosition";
|
}
|
}else{
|
//起始位输入错误
|
return "errStartPosition";
|
}
|
}
|
if(loadMachineId==2){
|
//二号线
|
if(fromId>=firstShelfRankId && fromId<=lastShelfRankId){
|
//起始位输入正确
|
if(toId==Long.valueOf(lineTwoloadMachineRacks.get(0).getNumber()) || toId==Long.valueOf(lineTwoloadMachineRacks.get(1).getNumber())){
|
//找到需要上片的上片位
|
LoadMachineRack rack = loadMachineRackDao.findLoadMachineRacksByRankNumber(String.valueOf(toId));
|
String state = rack.getState();
|
if(!LoadMachineRackState.FREE.equals(state)){
|
return "当前工位正在使用!";
|
}
|
//终止位正确(103、104)
|
//查找输入的仓位对象
|
ShelfRank shelfRank = shelfRankDao.findOne(fromId);
|
if(shelfRank!=null && !ShelfRankState.IN_WORKING.equals(shelfRank.getState())){
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
if(rawPackage!=null){
|
//有原片对象
|
int leftPieces = rawPackage.getLeftPieces();
|
if(leftPieces>0){
|
//原片数量大于0
|
}else{
|
return "当前料架无原片";
|
}
|
}else{
|
return "当前料架无原片";
|
}
|
}else{
|
return "无料架或当前料架被占用";
|
}
|
}else{
|
//终止位输入错误
|
return "errEndPosition";
|
}
|
}else{
|
//起始位输入错误
|
return "errStartPosition";
|
}
|
|
|
}
|
return "ok";
|
}
|
|
/**
|
* 创建单机模式料架任务(1号)
|
* @return
|
*/
|
public boolean createLoadTask1(HttpServletRequest request){
|
|
Long fromId = Long.valueOf(request.getParameter("shelfid"));
|
Long toId = Long.valueOf(request.getParameter("rankid"));
|
|
//所有最小和最大的仓位号
|
List<ShelfRank> shelfRanks = shelfRankDao.findAll();
|
Long minId = shelfRanks.get(0).getId();//拿到最小的仓位号
|
Long maxId = shelfRanks.get(shelfRanks.size()-1).getId();//拿到最大的仓位号
|
|
//拿到当前产线的工位号
|
List<LoadMachineRack> loadMachineRacks = loadMachineDao.findOne((long) 1).getLoadMachineRacks();
|
Long oneLoadmachineRack = Long.valueOf(loadMachineRacks.get(0).getNumber());//101
|
Long twoLoadmachineRack = Long.valueOf(loadMachineRacks.get(1).getNumber());//102
|
|
//拿到吊装位号
|
ShelfHoist shelfHoist = shelfHoistDao.findOne((long) 1);
|
|
//根据输入的起始和结束位置判断任务类型
|
if(fromId>=minId && fromId<=maxId){
|
//起始位是仓位
|
ShelfRank shelfRank = shelfRankDao.findOne(fromId);
|
if(toId==oneLoadmachineRack || toId==twoLoadmachineRack){
|
//到达位是101号工位或102号工位
|
//拿到上片位对象
|
LoadMachineRack loadMachineRack = loadMachineRackDao.findLoadMachineRacksByRankNumber(String.valueOf(toId));
|
//属于上片任务,判断原片是否是特殊玻璃
|
if(shelfRank.getRawPackage()!=null){
|
//有原片
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
if(flag.equals("1")){
|
ShelfTask fromRankToHoist =new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_RANK_TO_HOIST, new Date(),ShelfTaskFlag.LOAD_FLAG, shelfHoist, shelfRank);
|
ShelfTask fromHoistToLoadMachineRack = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_HOIST_TO_LOAD_MACHINE_RACK, new Date(), ShelfTaskFlag.LOAD_FLAG, shelfHoist, loadMachineRack);
|
shelfRank.setLastestTime(new Date());
|
shelfTaskDao.save(fromRankToHoist);
|
shelfTaskDao.save(fromHoistToLoadMachineRack);
|
|
//将仓位和上片位的状态改变
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORK);
|
|
return true;
|
}else{
|
ShelfTask fromShelfRackToLoadMachineRack =new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK, new Date(),ShelfTaskFlag.LOAD_FLAG, shelfRank, loadMachineRack);
|
shelfTaskDao.save(fromShelfRackToLoadMachineRack);
|
shelfRank.setLastestTime(new Date());
|
//将仓位和上片位的状态改变
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORK);
|
|
return true;
|
}
|
}
|
}
|
}
|
return false;
|
|
|
}
|
/**
|
* 创建单机模式料架任务(2号)
|
* @return
|
*/
|
public boolean createLoadTask2(HttpServletRequest request){
|
|
|
Long fromId = Long.valueOf(request.getParameter("shelfid"));
|
Long toId = Long.valueOf(request.getParameter("rankid"));
|
|
//所有最小和最大的仓位号
|
List<ShelfRank> shelfRanks = shelfRankDao.findAll();
|
Long minId = shelfRanks.get(0).getId();//拿到最小的仓位号
|
Long maxId = shelfRanks.get(shelfRanks.size()-1).getId();//拿到最大的仓位号
|
|
//拿到当前产线的工位号
|
List<LoadMachineRack> loadMachineRacks = loadMachineDao.findOne((long) 2).getLoadMachineRacks();
|
Long oneLoadmachineRack = Long.valueOf(loadMachineRacks.get(0).getNumber());//103
|
Long twoLoadmachineRack = Long.valueOf(loadMachineRacks.get(1).getNumber());//104
|
|
//拿到吊装位号
|
ShelfHoist shelfHoist = shelfHoistDao.findOne((long) 1);
|
|
//根据输入的起始和结束位置判断任务类型
|
if(fromId>=minId && fromId<=maxId){
|
//起始位是仓位
|
ShelfRank shelfRank = shelfRankDao.findOne(fromId);
|
if(toId==oneLoadmachineRack || toId==twoLoadmachineRack){
|
//到达位是103号工位或104号工位
|
//拿到上片位对象
|
LoadMachineRack loadMachineRack = loadMachineRackDao.findLoadMachineRacksByRankNumber(String.valueOf(toId));
|
//属于上片任务,判断原片是否是特殊玻璃
|
if(shelfRank.getRawPackage()!=null){
|
//有原片
|
RawPackage rawPackage = shelfRank.getRawPackage();
|
|
//截取当前原片的颜色前三位
|
String specialFlag = rawPackage.getColor().substring(GlassColor.START_INDEX, GlassColor.END_INDEX);
|
//获取特殊玻璃基表数据
|
GlassNumberColor glassNumberColor = glassNumberColorDao.findGlassNumberColorByGlassId(specialFlag);
|
String flag = "0";//初始化特殊标志
|
if(glassNumberColor!=null){
|
flag = glassNumberColor.getFlag();
|
}
|
|
if(flag.equals("1")){
|
ShelfTask fromRankToHoist =new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_RANK_TO_HOIST, new Date(),ShelfTaskFlag.LOAD_FLAG, shelfHoist, shelfRank);
|
ShelfTask fromHoistToLoadMachineRack = new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_HOIST_TO_LOAD_MACHINE_RACK, new Date(), ShelfTaskFlag.LOAD_FLAG, shelfHoist, loadMachineRack);
|
|
shelfTaskDao.save(fromRankToHoist);
|
shelfTaskDao.save(fromHoistToLoadMachineRack);
|
|
//将仓位和上片位的状态改变
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORK);
|
|
return true;
|
}else{
|
ShelfTask fromShelfRackToLoadMachineRack =new ShelfTask(ShelfTaskState.WAITING, ShelfTaskType.FROM_SHELF_RACK_TO_LOAD_MACHINE_RACK, new Date(),ShelfTaskFlag.LOAD_FLAG, shelfRank, loadMachineRack);
|
shelfTaskDao.save(fromShelfRackToLoadMachineRack);
|
|
//将仓位和上片位的状态改变
|
shelfRank.setState(ShelfRankState.IN_WORKING);
|
loadMachineRack.setState(LoadMachineRackState.IN_WORK);
|
|
return true;
|
}
|
}
|
}
|
}
|
return false;
|
|
}
|
|
/**
|
* 退出单机模式前的处理(是否需要输入料架上剩余原片数量)
|
* @param request
|
* @return
|
*/
|
public Map<String,List<LoadMachineRack>> endSingleMachineModel(HttpServletRequest request){
|
Map<String,List<LoadMachineRack>> map = new HashMap<String, List<LoadMachineRack>>();//存放产线编号和料架集合
|
|
List<LoadMachineRack> rackList1 = new ArrayList<LoadMachineRack>();//存放1号产线上的工位信息
|
List<LoadMachineRack> rackList2 = new ArrayList<LoadMachineRack>();//存放2号产线上的工位信息
|
|
//获取是哪条产线
|
String prodLine = request.getParameter("prodLine");
|
// if(prodLine.equals("1")){
|
//
|
// //判断产线1上片位是否有料架,如果有,输入使用的原片数量
|
// List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId((long) 1);
|
// if(loadMachineRacks.size()!=0){
|
// //目前已知就两个工位
|
// LoadMachineRack loadMachineRack1 = loadMachineRacks.get(0);
|
// LoadMachineRack loadMachineRack2 = loadMachineRacks.get(1);
|
// RawPackage rawPackage1 = loadMachineRack1.getRawPackage();
|
// RawPackage rawPackage2 = loadMachineRack2.getRawPackage();
|
//
|
//
|
// LoadMachineRack rack1 = new LoadMachineRack();
|
// if(loadMachineRack1.getNumber().equals("101")){
|
// rack1.setNumber("1");
|
// String state = loadMachineRack1.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //工位状态为正在使用,说明才有原片
|
// rack1.setRawPackage(rawPackage1);
|
// }else{
|
// rack1.setRawPackage(null);
|
// }
|
// }
|
// if(loadMachineRack1.getNumber().equals("102")){
|
// rack1.setNumber("2");
|
// String state = loadMachineRack1.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //工位状态为正在使用,说明才有原片
|
// rack1.setRawPackage(rawPackage1);
|
// }else{
|
// rack1.setRawPackage(null);
|
// }
|
// }
|
//
|
// rackList1.add(rack1);
|
//
|
//
|
// LoadMachineRack rack2 = new LoadMachineRack();
|
// if(loadMachineRack2.getNumber().equals("101")){
|
// rack2.setNumber("1");
|
// String state = loadMachineRack2.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //工位状态为正在使用,说明才有原片
|
// rack2.setRawPackage(rawPackage2);
|
// }else{
|
// rack2.setRawPackage(null);
|
// }
|
// }
|
// if(loadMachineRack2.getNumber().equals("102")){
|
// rack2.setNumber("2");
|
// String state = loadMachineRack2.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //工位状态为正在使用,说明才有原片
|
// rack2.setRawPackage(rawPackage2);
|
// }else{
|
// rack2.setRawPackage(null);
|
// }
|
// }
|
//
|
// rackList1.add(rack2);
|
//
|
// map.put("1", rackList1);
|
//
|
// }else{
|
// LOGGER.debug("1号产线工位为空!");
|
// throw new RuntimeException("1号产线工位为空!");
|
// }
|
//
|
// }else if(prodLine.equals("2")){
|
// //判断产线2上片位是否还有料架,如果有,输入使用的原片数量
|
// List<LoadMachineRack> loadMachineRacks = loadMachineRackDao.findLoadMachineRacksByLoadMachineId((long) 2);
|
// if(loadMachineRacks.size()!=0){
|
// //目前已知就两个工位
|
// LoadMachineRack loadMachineRack1 = loadMachineRacks.get(0);
|
// LoadMachineRack loadMachineRack2 = loadMachineRacks.get(1);
|
// RawPackage rawPackage1 = loadMachineRack1.getRawPackage();
|
// RawPackage rawPackage2 = loadMachineRack2.getRawPackage();
|
//
|
//
|
// LoadMachineRack rack1 = new LoadMachineRack();
|
// if(loadMachineRack1.getNumber().equals("103")){
|
// rack1.setNumber("1");
|
// String state = loadMachineRack1.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //有原片才给值
|
// rack1.setRawPackage(rawPackage1);
|
// }else{
|
// rack1.setRawPackage(null);
|
// }
|
// }
|
// if(loadMachineRack1.getNumber().equals("104")){
|
// rack1.setNumber("2");
|
// String state = loadMachineRack1.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //有原片才给值
|
// rack1.setRawPackage(rawPackage1);
|
// }else{
|
// rack1.setRawPackage(null);
|
// }
|
// }
|
//
|
// rackList2.add(rack1);
|
//
|
// LoadMachineRack rack2 = new LoadMachineRack();
|
// if(loadMachineRack2.getNumber().equals("103")){
|
// rack2.setNumber("1");
|
// String state = loadMachineRack2.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //有原片才给值
|
// rack2.setRawPackage(rawPackage2);
|
// }else{
|
// rack2.setRawPackage(null);
|
// }
|
// }
|
// if(loadMachineRack2.getNumber().equals("104")){
|
// rack2.setNumber("2");
|
// String state = loadMachineRack2.getState();
|
// if(state.equals(ShelfRankState.IN_WORKING)){
|
// //有原片才给值
|
// rack2.setRawPackage(rawPackage2);
|
// }else{
|
// rack2.setRawPackage(null);
|
// }
|
// }
|
//
|
// rackList2.add(rack2);
|
//
|
// map.put("2", rackList2);
|
//
|
// }else{
|
// LOGGER.debug("2号产线工位为空!");
|
// throw new RuntimeException("2号产线工位为空!");
|
// }
|
//
|
//
|
// }else{
|
// LOGGER.debug("产线不存在!");
|
// throw new RuntimeException("产线不存在-->产线:"+prodLine);
|
// }
|
return map;
|
|
}
|
|
/**
|
* 输入剩余原片数量后退出单机
|
*/
|
public String endSingleModel(HttpServletRequest request){
|
|
String prodLine = request.getParameter("prodline");
|
String usedPieces1 = request.getParameter("usedPieces1");
|
String usedPieces2 = request.getParameter("usedPieces2");
|
|
if(prodLine.equals("1")){
|
//产线1
|
//找到该产线工位上是否有料架
|
LoadMachineRack rack1 = loadMachineRackDao.findOne((long) 1);//01号工位
|
LoadMachineRack rack2 = loadMachineRackDao.findOne((long) 2);//04号工位
|
|
if(rack1.getRawPackage()!=null){
|
//01号工位有原片
|
if(rack1.getRawPackage().getLeftPieces()<Integer.parseInt(usedPieces1)){
|
//如果原片数量小于使用掉的原片数量,说明输入有误
|
throw new RuntimeException("1号工位使用原片数量输入有误!");
|
}
|
rack1.getRawPackage().setLeftPieces(rack1.getRawPackage().getLeftPieces()-Integer.parseInt(usedPieces1));
|
}
|
if(rack2.getRawPackage()!=null){
|
//04号工位有原片
|
if(rack2.getRawPackage().getLeftPieces()<Integer.parseInt(usedPieces2)){
|
//如果原片数量小于使用掉的原片数量,说明输入有误
|
throw new RuntimeException("2号工位使用原片数量输入有误!");
|
}
|
rack2.getRawPackage().setLeftPieces(rack2.getRawPackage().getLeftPieces()-Integer.parseInt(usedPieces2));
|
}
|
//设置产线单机模式状态
|
ProdLineState lineOne = prodLineStateDao.findById(1);
|
lineOne.setStandalonestate(false);
|
prodLineStateDao.save(lineOne);
|
return "standalone/stopSingleSuccess";
|
}else if(prodLine.equals("2")){
|
//产线2
|
//找到该产线工位上是否有料架
|
LoadMachineRack rack1 = loadMachineRackDao.findOne((long) 3);//02号工位
|
LoadMachineRack rack2 = loadMachineRackDao.findOne((long) 4);//05号工位
|
|
if(rack1.getRawPackage()!=null){
|
//02号工位有原片
|
if(rack1.getRawPackage().getLeftPieces()<Integer.parseInt(usedPieces1)){
|
//如果原片数量小于使用掉的原片数量,说明输入有误
|
throw new RuntimeException("1号工位使用原片数量输入有误!");
|
}
|
rack1.getRawPackage().setLeftPieces(rack1.getRawPackage().getLeftPieces()-Integer.parseInt(usedPieces1));
|
}
|
if(rack2.getRawPackage()!=null){
|
//05号工位有原片
|
if(rack2.getRawPackage().getLeftPieces()<Integer.parseInt(usedPieces2)){
|
//如果原片数量小于使用掉的原片数量,说明输入有误
|
throw new RuntimeException("2号工位使用原片数量输入有误!");
|
}
|
rack2.getRawPackage().setLeftPieces(rack2.getRawPackage().getLeftPieces()-Integer.parseInt(usedPieces2));
|
}
|
//设置产线单机模式状态
|
ProdLineState lineOne = prodLineStateDao.findById(2);
|
lineOne.setStandalonestate(false);
|
prodLineStateDao.save(lineOne);
|
return "standalone/stopSingleSuccess";
|
}
|
return "standalone/stopSingleFail";
|
}
|
|
}
|