package com.northglass.service.message;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.northglass.entity.ArrangeMachine;
|
import com.northglass.entity.ArrangeMachineRank;
|
import com.northglass.entity.ArrangeMachineTask;
|
import com.northglass.entity.CountMachineSort;
|
import com.northglass.entity.CountRank;
|
import com.northglass.entity.Glass;
|
import com.northglass.entity.GlassOrder;
|
import com.northglass.entity.RawPackageTxt;
|
import com.northglass.entity.ShelfStatu;
|
import com.northglass.entity.TougheningGlass;
|
import com.northglass.repository.ArrangeMachineRankDao;
|
import com.northglass.repository.ArrangeMachineTaskDao;
|
import com.northglass.repository.CountMachineSortDao;
|
import com.northglass.repository.CountRankDao;
|
import com.northglass.repository.GlassOrderDao;
|
import com.northglass.repository.RawPackageTxtDao;
|
import com.northglass.repository.ShelfStatuDao;
|
import com.northglass.repository.TougheningGlassDao;
|
import com.northglass.service.arrangemachine.ArrangeMachineService;
|
import com.northglass.service.identifymachine.IdentifyMachineService;
|
import com.northglass.util.HexUtil;
|
|
@Component
|
@Transactional
|
public class ArrangeMachineMessageProcessor extends AbstractMessageProcessor {
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(ArrangeMachineMessageProcessor.class);
|
|
@Autowired
|
private TougheningGlassDao tougheningGlassDao;
|
|
@Autowired
|
private ArrangeMachineTaskDao arrangeMachineTaskDao;
|
|
@Autowired
|
private ArrangeMachineService arrangeMachineService;
|
|
@Autowired
|
private GlassOrderDao glassOrderDao;
|
|
@Autowired
|
private RawPackageTxtDao rawPackageTxtDao;
|
|
@Autowired
|
private ArrangeMachineRankDao arrangeMachineRankDao;
|
|
@Autowired
|
private ShelfStatuDao shelfStatuDao;
|
|
@Autowired
|
private CountRankDao countRankDao;
|
|
@Autowired
|
private CountMachineSortDao countMachineSortDao;
|
|
@Autowired
|
private IdentifyMachineService identifyMachineService;
|
|
// 请求信号
|
private static final int TASK_ASK_START = 18;
|
private static final int TASK_ASK_END = 21;
|
// 请求ID
|
private static final int TASK_ASK_TD_START = 22;
|
private static final int TASK_ASK_ID_END = 25;
|
|
// 任务汇报字
|
private static final int TASK_FINISH_PLC_START = 38;
|
private static final int TASK_FINISH_PLC_END = 41;
|
|
// 任务汇报ID
|
private static final int TASK_FINISH_PLC_ID_START = 50;
|
private static final int TASK_FINISH_PLC_ID_END = 53;
|
|
// 任务发送字
|
private static final int TASK_MES_START = 58;
|
private static final int TASK_MES_END = 61;
|
|
// 任务确认字
|
private static final int TASK_SURE_START = 98;
|
private static final int TASK_SURE_END = 101;
|
|
// 任务报警字
|
private static final int TASK_WARN_START = 138;
|
private static final int TASK_WARN_END = 141;
|
|
// 完成步骤
|
private static final int FINISH_STEP_START = 178;
|
private static final int FINISH_STEP_END = 181;
|
|
public String generateReturnMessage(String sendMessageHex, ArrangeMachine arrangeMachine) {
|
if (sendMessageHex.length() == 24) {
|
String string = sendMessageHex.substring(8, 16);
|
if (string.equals("00060010")) {
|
LOGGER.debug("上次消息发送成功!");
|
return "";
|
} else {
|
LOGGER.debug("上次消息发送失败!");
|
return "";
|
}
|
} else if (sendMessageHex.length() == 198) {
|
// 请求信号
|
String taskAsk = sendMessageHex.substring(TASK_ASK_START, TASK_ASK_END + 1);
|
// 请求ID
|
String taskIdAsk = sendMessageHex.substring(TASK_ASK_TD_START, TASK_ASK_ID_END + 1);
|
// 1号请求ID
|
String taskOneAsk = sendMessageHex.substring(26, 29 + 1);
|
// 2号请求ID
|
String taskTwoAsk = sendMessageHex.substring(30, 33 + 1);
|
// 3号请求ID
|
String taskThreeAsk = sendMessageHex.substring(34, 37 + 1);
|
// 任务汇报字1
|
String taskFinish = sendMessageHex.substring(TASK_FINISH_PLC_START, TASK_FINISH_PLC_END + 1);
|
// 任务汇报字2
|
String taskTwoFinish = sendMessageHex.substring(42, 45 + 1);
|
// 任务汇报字3
|
String taskThreeFinish = sendMessageHex.substring(46, 49 + 1);
|
// 任务汇报字ID
|
String taskFinishId = sendMessageHex.substring(TASK_FINISH_PLC_ID_START, TASK_FINISH_PLC_ID_END + 1);
|
// 任务发送字
|
String taskMes = sendMessageHex.substring(TASK_MES_START, TASK_MES_END + 1);
|
// 任务确认字
|
String taskSure = sendMessageHex.substring(TASK_SURE_START, TASK_SURE_END + 1);
|
// 任务报警字
|
String taskWarning = sendMessageHex.substring(TASK_WARN_START, TASK_WARN_END + 1);
|
// 完成步骤
|
String finishStep = sendMessageHex.substring(FINISH_STEP_START, FINISH_STEP_END + 1);
|
String mes = sendMessageHex.substring(TASK_ASK_START, 198);// 信息
|
|
LOGGER.debug("请求信号:" + taskAsk + "| 请求ID:" + taskIdAsk + "| 任务汇报字:" + taskFinish + "| 任务汇报字ID:"
|
+ taskFinishId + "| 任务发送字:" + taskMes + "| 任务确认字:" + taskSure + "| 任务报警字:" + taskWarning + "| 完成步骤:"
|
+ finishStep);
|
|
ShelfStatu statu = shelfStatuDao.findByMachine("arrange");
|
statu.setMessage(mes);
|
statu.setPlcid(taskAsk);
|
statu.setMesid(taskMes);
|
statu.setErrorstate(taskWarning);
|
statu.setLoadfinish(finishStep);
|
statu.setSetTime(new Date());
|
shelfStatuDao.save(statu);
|
List<RawPackageTxt> txtes = rawPackageTxtDao.findByAcceptAndWorking();
|
RawPackageTxt txt = null;
|
if (txtes.size() > 0) {
|
txt = txtes.get(0);
|
} else {
|
LOGGER.debug("暂时没有任务,请等待!");
|
return "";
|
}
|
List<TougheningGlass> tougheningGlasses = tougheningGlassDao.findWaitingGlass();
|
List<ArrangeMachineTask> taskes = arrangeMachineTaskDao.findWaitingTasks();// 等待任务
|
List<ArrangeMachineTask> entertaskes = arrangeMachineTaskDao.findWaitingInTasks();// 入片任务
|
List<ArrangeMachineTask> exittaskes = arrangeMachineTaskDao.findWaitingOutTasks();// 出片任务
|
List<ArrangeMachineTask> inWorktaskes = arrangeMachineTaskDao.findInWorkTask();// 工作任务
|
List<ArrangeMachineTask> exitworktaskes = arrangeMachineTaskDao.findWorkingInTasks();// 入片工作任务
|
// 完成比对
|
if (taskFinish.equals("0001") || taskFinish.equals("0002")) {// 完成或破损
|
if (taskSure.equals("0000")) {
|
if (inWorktaskes.size() > 0) {
|
for (int i = 0; i < inWorktaskes.size(); i++) {
|
ArrangeMachineTask task = inWorktaskes.get(i);
|
String id = taskFinish;
|
if (i == 1) {
|
id = taskTwoFinish;
|
} else if (i == 2) {
|
id = taskThreeFinish;
|
}
|
if (id.equals("0001")) {
|
if (task.getTaskType().equals("ENTER_RANK")) {
|
task.setState("已完成");
|
task.setCompleteTime(new Date());
|
arrangeMachineTaskDao.save(task);
|
ArrangeMachineRank rank = task.getArrangeMachineRank();
|
LOGGER.debug("rank应用!");
|
rank.setState("使用中");
|
arrangeMachineRankDao.save(rank);
|
}
|
} else if (id.equals("0002")) {// 破损
|
if (task.getTaskType().equals("ENTER_RANK")) {
|
task.setState("已完成");
|
task.setCompleteTime(new Date());
|
// 对应的进片信息破损
|
Glass glass = task.getTougheningGlass().getGlass();
|
identifyMachineService.ps(glass);
|
arrangeMachineTaskDao.save(task);
|
ArrangeMachineRank rank = task.getArrangeMachineRank();
|
if (rank.getPieces() == 1) {
|
rank.setState("空闲");
|
rank.setTougheningGlass(null);
|
} else {
|
rank.setPieces(rank.getPieces() - 1);
|
rank.setState("使用中");
|
}
|
arrangeMachineRankDao.save(rank);
|
} else if (task.getTaskType().equals("EXIT_RANK")) {
|
ArrangeMachineRank rank = task.getArrangeMachineRank();
|
task.setState("已完成");
|
task.setCompleteTime(new Date());
|
// 出片破损,得找对
|
arrangeMachineTaskDao.save(task);
|
// 创造新的磨边程序
|
rank.setPieces(rank.getPieces() - 1);
|
if (rank.getPieces() == 0) {
|
rank.setState("空闲");
|
rank.setTougheningGlass(null);
|
arrangeMachineRankDao.save(rank);
|
}
|
}
|
}
|
}
|
}
|
return sendMessage("00010000", "0014");
|
}
|
} else {
|
if (taskSure.equals("0001")) {
|
return sendMessage("00000000", "0014");
|
}
|
}
|
|
if (taskAsk.equals("0000")) {
|
if (taskMes.equals("0001")) {
|
if (taskes.size() > 0) {
|
for (int i = 0; i < taskes.size(); i++) {
|
ArrangeMachineTask task = taskes.get(i);
|
task.setStartTime(new Date());
|
task.setState("正在工作");
|
arrangeMachineTaskDao.save(task);
|
}
|
}
|
return sendMessage("000000000000" + "00000000" + "00000000" + "00000000", "000a");
|
}
|
} else if (taskAsk.equals("0004")) {// 出入都可以
|
if (taskMes.equals("0001")) {
|
return "";
|
} else {
|
if (taskes.size() > 0) {
|
if (exittaskes.size() > 0) {
|
String message = "000100000002";
|
for (int i = 0; i < exittaskes.size(); i++) {
|
ArrangeMachineTask task = exittaskes.get(i);
|
int rack = Integer.parseInt(task.getArrangeMachineRank().getId().toString());
|
message = message + HexUtil.intTo2ByteHex(rack)
|
+ HexUtil.intTo2ByteHex(task.getTougheningGlass().getSendid());
|
}
|
return sendMessage(message, "000a");
|
} else {
|
if (!taskOneAsk.equals("0000")) {
|
String message = "000100000001";
|
for (int i = 0; i < entertaskes.size(); i++) {
|
ArrangeMachineTask task = entertaskes.get(i);
|
int rack = Integer.parseInt(task.getArrangeMachineRank().getId().toString());
|
message = message + HexUtil.intTo2ByteHex(rack) + "0000";
|
}
|
return sendMessage(message, "000a");
|
}
|
}
|
} else {
|
CountMachineSort sort = countMachineSortDao.findOne(1L);
|
String sot = sort.getNowsort();
|
String[] name = sot.split("\\*");
|
List<GlassOrder> orders = new ArrayList<GlassOrder>();
|
if (name.length > 0) {
|
for (int i = 0; i < name.length; i++) {
|
orders = glassOrderDao.findByApartAndBatch(txt.getTxt_name(), name[i]);
|
if (orders != null && orders.size() > 0) {
|
break;
|
}
|
if (i == name.length - 1) {
|
orders = null;
|
break;
|
}
|
String string = sot.replaceAll(name[i] + "\\*", "");
|
sort.setNowsort(string);
|
countMachineSortDao.save(sort);
|
}
|
}
|
|
// 出片请求(得到当前是A架,并且没有出片结束的队列。),或者是不是过片
|
if (orders != null && orders.size() > 0) {
|
GlassOrder order = orders.get(0);
|
// 查找类似的
|
List<ArrangeMachineRank> rankes = arrangeMachineRankDao.findInWorkRank();
|
if (rankes.size() > 0) {
|
for (int i = 0; i < rankes.size(); i++) {
|
ArrangeMachineRank rank = rankes.get(i);
|
if ((order.getLength() == rank.getTougheningGlass().getActualLength()
|
&& order.getWidth() == rank.getTougheningGlass().getActualWidth())
|
|| (order.getLength() == rank.getTougheningGlass().getActualWidth() && order
|
.getWidth() == rank.getTougheningGlass().getActualLength())) {// 长宽一致,就可以
|
if (rank.getPieces() > 0) {
|
int pieces = rank.getPieces();
|
if (order.getPieces() - order.getCompletePieces() < pieces) {
|
pieces = order.getPieces() - order.getCompletePieces();
|
}
|
for (int j = 0; j < pieces; j++) {
|
rank.setState("等待出库");
|
arrangeMachineRankDao.save(rank);
|
if (order.getRank() == null) {
|
CountRank countRank = countRankDao.findOne(1L);
|
String apart = order.getApart_id();
|
List<GlassOrder> ods = glassOrderDao
|
.findByApartAndBatch(txt.getTxt_name(), apart);
|
LOGGER.debug("落架号:" + apart);
|
LOGGER.debug("ods.size():" + ods.size());
|
if (countRank.getState().equals("1")) {
|
countRank.setState("2");
|
} else {
|
countRank.setState("1");
|
}
|
countRankDao.save(countRank);
|
if (ods.size() > 0) {
|
for (int k = 0; k < ods.size(); k++) {
|
GlassOrder glassOrder = ods.get(k);
|
glassOrder.setRank(countRank.getState());
|
glassOrderDao.save(glassOrder);
|
}
|
}
|
}
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1",
|
"EXIT_RANK", new Date(), rank.getTougheningGlass(), rank);
|
task.setRank(order.getRank());
|
arrangeMachineTaskDao.save(task);
|
order.setCompletePieces(order.getCompletePieces() + 1);
|
if (order.getPieces() == order.getCompletePieces()) {
|
order.setState("已完成");
|
}
|
glassOrderDao.save(order);
|
|
}
|
}
|
return "";
|
}
|
}
|
}
|
}
|
// 入片请求
|
if (tougheningGlasses.size() > 0) {
|
if (!taskOneAsk.equals("0000")) {
|
List<ArrangeMachineRank> rankes = arrangeMachineRankDao.findInWorkRanks();
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskOneAsk));
|
glass.setState("运行中");
|
tougheningGlassDao.save(glass);
|
ArrangeMachineRank rks = arrangeMachineService.getrank(glass);
|
LOGGER.debug("rks="+rks);
|
if (rks == null) {
|
// 多出口使用
|
LOGGER.debug("1");
|
for (int i = 1; i < name.length; i++) {
|
List<GlassOrder> gos = glassOrderDao.findByApartAndBatch(txt.getTxt_name(),
|
name[i]);
|
LOGGER.debug("2");
|
if (gos.size() > 0) {// 新添加
|
GlassOrder os = gos.get(0);
|
LOGGER.debug("3");
|
for (int t = 0; t < rankes.size(); t++) {
|
ArrangeMachineRank rank = rankes.get(t);
|
if ((os.getLength() == rank.getTougheningGlass().getActualLength()
|
&& os.getWidth() == rank.getTougheningGlass().getActualWidth())
|
|| (os.getLength() == rank.getTougheningGlass().getActualWidth()
|
&& os.getWidth() == rank.getTougheningGlass()
|
.getActualLength())) {
|
LOGGER.debug("4");
|
// 长宽一致,就可以
|
if (rank.getPieces() > 0) {
|
int pieces = rank.getPieces();
|
if (os.getPieces() - os.getCompletePieces() < pieces) {
|
pieces = os.getPieces() - os.getCompletePieces();
|
}
|
LOGGER.debug("5");
|
for (int j = 0; j < pieces; j++) {
|
rank.setState("等待出库");
|
arrangeMachineRankDao.save(rank);
|
if (os.getRank() == null) {
|
String apart = os.getApart_id();
|
List<GlassOrder> ods = glassOrderDao
|
.findByApartAndBatch(txt.getTxt_name(), apart);
|
if (ods.size() > 0) {
|
for (int k = 0; k < ods.size(); k++) {
|
GlassOrder glassOrder = ods.get(k);
|
glassOrder.setRank("3");
|
glassOrderDao.save(glassOrder);
|
}
|
}
|
}
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1",
|
"EXIT_RANK", new Date(), rank.getTougheningGlass(),
|
rank);
|
task.setRank(os.getRank());
|
arrangeMachineTaskDao.save(task);
|
os.setCompletePieces(os.getCompletePieces() + 1);
|
if (os.getPieces() == os.getCompletePieces()) {
|
os.setState("已完成");
|
}
|
glassOrderDao.save(os);
|
}
|
}
|
LOGGER.debug("6");
|
break;
|
}
|
}
|
}
|
}
|
}else{
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rks);
|
arrangeMachineTaskDao.save(task);
|
rks.setPieces(rks.getPieces() + 1);
|
if (rks.getState().equals("空闲")) {
|
rks.setState("等待使用");
|
rks.setTougheningGlass(task.getTougheningGlass());
|
}
|
arrangeMachineRankDao.save(rks);
|
}
|
|
}
|
if (!taskTwoAsk.equals("0000")) {
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskTwoAsk));
|
glass.setState("运行中");
|
tougheningGlassDao.save(glass);
|
ArrangeMachineRank rank = arrangeMachineService.getrank(glass);
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rank);
|
arrangeMachineTaskDao.save(task);
|
rank.setPieces(rank.getPieces() + 1);
|
if (rank.getState().equals("空闲")) {
|
rank.setState("等待使用");
|
rank.setTougheningGlass(task.getTougheningGlass());
|
}
|
arrangeMachineRankDao.save(rank);
|
}
|
if (!taskThreeAsk.equals("0000")) {
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskThreeAsk));
|
glass.setState("运行中");
|
tougheningGlassDao.save(glass);
|
ArrangeMachineRank rank = arrangeMachineService.getrank(glass);
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rank);
|
arrangeMachineTaskDao.save(task);
|
rank.setPieces(rank.getPieces() + 1);
|
if (rank.getState().equals("空闲")) {
|
rank.setState("等待使用");
|
rank.setTougheningGlass(task.getTougheningGlass());
|
}
|
arrangeMachineRankDao.save(rank);
|
}
|
}
|
}
|
}
|
} else if (taskAsk.equals("0003")) {// 仅仅可以出片
|
if (taskMes.equals("0001")) {
|
LOGGER.debug("消息已经发送,等待中");
|
return "";
|
}
|
if (exitworktaskes.size() > 0) {
|
LOGGER.debug("当前任务正在进行,不进行操作!");
|
return "";
|
}
|
if (exittaskes.size() > 0) {
|
String message = "000100000002";
|
for (int i = 0; i < exittaskes.size(); i++) {
|
ArrangeMachineTask task = exittaskes.get(i);
|
int rack = Integer.parseInt(task.getArrangeMachineRank().getId().toString());
|
message = message + HexUtil.intTo2ByteHex(rack)
|
+ HexUtil.intTo2ByteHex(task.getTougheningGlass().getSendid());
|
// task.setStartTime(new Date());
|
// task.setState("正在工作");
|
// arrangeMachineTaskDao.save(task);
|
}
|
return sendMessage(message, "000a");
|
} else {
|
// 出片顺序做主(暂定)单独表确定
|
CountMachineSort sort = countMachineSortDao.findOne(1L);
|
String sot = sort.getNowsort();
|
if (sot.length() > 0) {
|
String[] name = sot.split("\\*");
|
List<GlassOrder> orders = new ArrayList<GlassOrder>();
|
if (name.length > 0) {
|
for (int i = 0; i < name.length; i++) {
|
orders = glassOrderDao.findByApartAndBatch(txt.getTxt_name(), name[i]);
|
if (orders != null && orders.size() > 0) {
|
break;
|
}
|
if (i == name.length - 1) {
|
orders = null;
|
break;
|
}
|
String string = sot.replaceAll(name[i] + "\\*", "");
|
sort.setNowsort(string);
|
countMachineSortDao.save(sort);
|
}
|
}
|
if (orders != null && orders.size() > 0) {
|
GlassOrder order = orders.get(0);
|
// 查找类似的
|
List<ArrangeMachineRank> rankes = arrangeMachineRankDao.findInWorkRanks();
|
LOGGER.debug("rankes:" + rankes.size());
|
int taskid = 0;
|
if (rankes.size() > 0) {
|
for (int i = 0; i < rankes.size(); i++) {
|
ArrangeMachineRank rank = rankes.get(i);
|
if ((order.getLength() == rank.getTougheningGlass().getActualLength()
|
&& order.getWidth() == rank.getTougheningGlass().getActualWidth())
|
|| (order.getLength() == rank.getTougheningGlass().getActualWidth() && order
|
.getWidth() == rank.getTougheningGlass().getActualLength())) {// 长宽一致,就可以
|
if (rank.getPieces() > 0) {
|
int pieces = rank.getPieces();
|
LOGGER.debug("pieces:" + pieces);
|
if (order.getPieces() - order.getCompletePieces() < pieces) {
|
pieces = order.getPieces() - order.getCompletePieces();
|
}
|
for (int j = 0; j < pieces; j++) {
|
rank.setState("等待出库");
|
arrangeMachineRankDao.save(rank);
|
if (order.getRank() == null) {
|
CountRank countRank = countRankDao.findOne(1L);
|
String apart = order.getApart_id();
|
List<GlassOrder> ods = glassOrderDao
|
.findByApartAndBatch(txt.getTxt_name(), apart);
|
LOGGER.debug("落架号:" + apart);
|
LOGGER.debug("ods.size():" + ods.size());
|
if (countRank.getState().equals("1")) {
|
countRank.setState("2");
|
} else {
|
countRank.setState("1");
|
}
|
countRankDao.save(countRank);
|
if (ods.size() > 0) {
|
for (int k = 0; k < ods.size(); k++) {
|
GlassOrder glassOrder = ods.get(k);
|
glassOrder.setRank(countRank.getState());
|
glassOrderDao.save(glassOrder);
|
}
|
}
|
}
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1",
|
"EXIT_RANK", new Date(), rank.getTougheningGlass(), rank);
|
task.setRank(order.getRank());
|
arrangeMachineTaskDao.save(task);
|
order.setCompletePieces(order.getCompletePieces() + 1);
|
if (order.getPieces() == order.getCompletePieces()) {
|
order.setState("已完成");
|
}
|
glassOrderDao.save(order);
|
}
|
}
|
taskid = 1;
|
break;
|
}
|
}
|
|
// 多出口使用
|
List<ArrangeMachineRank> rkes = arrangeMachineRankDao.findFreeRanks();// 找是不是有空余的玻璃
|
if (taskid == 0 && rkes.size() == 0) {// 当前料架已满,且当前的落架位没有能出的玻璃
|
for (int i = 1; i < name.length; i++) {
|
List<GlassOrder> gos = glassOrderDao.findByApartAndBatch(txt.getTxt_name(),
|
name[i]);
|
if (gos.size() > 0) {// 新添加
|
GlassOrder os = gos.get(0);
|
for (int a = 0; a < rankes.size(); a++) {
|
ArrangeMachineRank rank = rankes.get(a);
|
if ((os.getLength() == rank.getTougheningGlass().getActualLength()
|
&& os.getWidth() == rank.getTougheningGlass().getActualWidth())
|
|| (os.getLength() == rank.getTougheningGlass().getActualWidth()
|
&& os.getWidth() == rank.getTougheningGlass()
|
.getActualLength())) {// 长宽一致,就可以
|
if (rank.getPieces() > 0) {
|
int pieces = rank.getPieces();
|
if (os.getPieces() - os.getCompletePieces() < pieces) {
|
pieces = os.getPieces() - os.getCompletePieces();
|
}
|
for (int j = 0; j < pieces; j++) {
|
rank.setState("等待出库");
|
arrangeMachineRankDao.save(rank);
|
if (order.getRank() == null) {
|
String apart = os.getApart_id();
|
List<GlassOrder> ods = glassOrderDao
|
.findByApartAndBatch(txt.getTxt_name(), apart);
|
if (ods.size() > 0) {
|
for (int k = 0; k < ods.size(); k++) {
|
GlassOrder glassOrder = ods.get(k);
|
glassOrder.setRank("3");
|
glassOrderDao.save(glassOrder);
|
}
|
}
|
}
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1",
|
"EXIT_RANK", new Date(), rank.getTougheningGlass(),
|
rank);
|
task.setRank(os.getRank());
|
arrangeMachineTaskDao.save(task);
|
os.setCompletePieces(os.getCompletePieces() + 1);
|
if (os.getPieces() == os.getCompletePieces()) {
|
os.setState("已完成");
|
}
|
glassOrderDao.save(os);
|
}
|
}
|
LOGGER.debug("查找完毕!");
|
return "";
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
} else {
|
LOGGER.debug("当前的数据出片顺序出现故障,为空,请查看原因!数据:" + sot);
|
return "";
|
}
|
}
|
}
|
|
if (taskAsk.equals("0002")) {// 仅仅只能入片,查看是否有入片任务
|
if (entertaskes.size() > 0) {// 有入片任务
|
// 入片时,直接找ID
|
if (taskMes.equals("0001")) {
|
LOGGER.debug("消息已经发送,等待中");
|
return "";
|
}
|
if (!taskOneAsk.equals("0000")) {
|
String message = "000100000001";
|
for (int i = 0; i < entertaskes.size(); i++) {
|
ArrangeMachineTask task = entertaskes.get(i);
|
int rack = Integer.parseInt(task.getArrangeMachineRank().getId().toString());
|
message = message + HexUtil.intTo2ByteHex(rack) + "0000";
|
}
|
return sendMessage(message, "000a");
|
}
|
} else {// 没有入片任务,看能否产生相应的入片任务
|
if (tougheningGlasses.size() > 0) {
|
|
// 请求入片任务之前,得需要看看我们是不是可以下片任务,有的话,等待,没有的话可以进行出片预测
|
List<GlassOrder> orders = glassOrderDao.findByBatch(txt.getTxt_name());
|
if (orders.size() > 0 && inWorktaskes.size() > 0) {
|
LOGGER.debug("orders.size:" + orders.size());
|
GlassOrder order = orders.get(0);
|
// 查找类似的
|
List<ArrangeMachineRank> rankes = arrangeMachineRankDao.findInWorkRanks();
|
if (rankes.size() > 0) {
|
LOGGER.debug("rankes.size:" + rankes.size());
|
for (int i = 0; i < rankes.size(); i++) {
|
LOGGER.debug("i:" + i);
|
ArrangeMachineRank rank = rankes.get(i);
|
if ((order.getLength() == rank.getTougheningGlass().getActualLength()
|
&& order.getWidth() == rank.getTougheningGlass().getActualWidth())
|
|| (order.getLength() == rank.getTougheningGlass().getActualWidth() && order
|
.getWidth() == rank.getTougheningGlass().getActualLength())) {// 长宽一致,就可以
|
LOGGER.debug("当前可能有下片任务,暂时不进入进片任务!");
|
return "";
|
}
|
}
|
}
|
}
|
|
if (!taskOneAsk.equals("0000")) {
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskOneAsk));
|
// TougheningGlass glass = tougheningGlasses.get(0);
|
glass.setState("运行中");
|
tougheningGlassDao.save(glass);
|
ArrangeMachineRank rank = arrangeMachineService.getrank(glass);
|
if (rank !=null) {
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rank);
|
arrangeMachineTaskDao.save(task);
|
|
rank.setPieces(rank.getPieces() + 1);
|
if (rank.getState().equals("空闲")) {
|
rank.setState("等待使用");
|
rank.setTougheningGlass(glass);
|
}
|
arrangeMachineRankDao.save(rank);
|
}else {
|
LOGGER.debug("等待位置!!");
|
return "";
|
}
|
|
}
|
if (!taskTwoAsk.equals("0000")) {
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskTwoAsk));
|
ArrangeMachineRank rank = arrangeMachineService.getrank(glass);
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rank);
|
arrangeMachineTaskDao.save(task);
|
rank.setPieces(rank.getPieces() + 1);
|
if (rank.getState().equals("空闲")) {
|
rank.setState("等待使用");
|
rank.setTougheningGlass(task.getTougheningGlass());
|
}
|
arrangeMachineRankDao.save(rank);
|
}
|
if (!taskThreeAsk.equals("0000")) {
|
TougheningGlass glass = tougheningGlassDao.findtaskid(HexUtil.hexToInt(taskThreeAsk));
|
ArrangeMachineRank rank = arrangeMachineService.getrank(glass);
|
ArrangeMachineTask task = new ArrangeMachineTask("等待中", "1", "ENTER_RANK", new Date(),
|
glass, rank);
|
arrangeMachineTaskDao.save(task);
|
rank.setPieces(rank.getPieces() + 1);
|
if (rank.getState().equals("空闲")) {
|
rank.setState("等待使用");
|
rank.setTougheningGlass(task.getTougheningGlass());
|
}
|
arrangeMachineRankDao.save(rank);
|
}
|
}
|
}
|
}
|
|
return "";
|
} else {
|
LOGGER.debug("接收的信息和设置的不一致,请查找原因,长度为:" + sendMessageHex.length());
|
return "";
|
}
|
}
|
|
/**
|
* 消息发送
|
*
|
* @param task
|
* @return
|
*/
|
private String sendMessage(String senddate, String address) {
|
String Herd = "0010" + address;
|
int length = senddate.length() / 4;
|
String dates = Herd + HexUtil.intTo2ByteHex(length) + HexUtil.intTo1ByteHex(length * 2) + senddate;
|
int lengths = dates.length() / 2;
|
String date = "00000000" + HexUtil.intTo2ByteHex(lengths) + dates;
|
LOGGER.debug("发送信息内容:" + date);
|
return date;
|
}
|
}
|