package com.mes.downstorage.service;
|
|
import com.mes.common.PLCAutoMes;
|
import com.mes.common.S7control;
|
import com.mes.device.PlcParameterObject;
|
|
import com.mes.downglassinfo.entity.DownGlassTask;
|
import com.mes.downglassinfo.service.DownGlassTaskService;
|
import com.mes.downstorage.entity.DownStorageCageDetails;
|
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
|
import com.mes.downworkstation.mapper.DownWorkstationMapper;
|
import com.mes.tools.WebSocketServer;
|
import com.mes.glassinfo.entity.GlassInfo;
|
import com.mes.glassinfo.service.GlassInfoService;
|
import lombok.Data;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
|
|
@Data
|
@Service
|
public class DownGlassCacheLogic {
|
//下片前理片
|
public static final String RESULT_IN = "1";
|
public static final String RESULT_OUT = "2";
|
public static final String RESULT_IN_OUT = "3";
|
@Autowired
|
private DownStorageCageDetailsMapper selectInfo;
|
private GlassInfoService GlassInfoService;
|
private DownStorageCageService downStorageCageService;
|
private DownGlassTaskService downGlassTaskService;
|
|
/**
|
* @param Number //识别逻辑 不交互
|
*/
|
|
// public void identify(String Number) {
|
// //查询任务
|
// PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
|
// S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
|
// String s = S7control.getinstance().ReadWord("DB14.26", 1).get(0) + "";
|
// boolean isexist = isExist(Number);
|
// if (isexist) {
|
// //存在逻辑 1.添加信息 2.回复PLC存在
|
// //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
|
// } else {
|
// //不存在逻辑 1.回复PLC不存在
|
// //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
|
// }
|
// }
|
|
public void process() {
|
String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
|
String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
|
|
// 进片请求
|
if (RESULT_IN.equals(result)) {
|
processInto(number);
|
}
|
// 出片请求
|
else if (RESULT_OUT.equals(result)) {
|
processOut();
|
}
|
// 进出片请求
|
else if (RESULT_IN_OUT.equals(result)) {
|
// 先出后进
|
if (!processOut()) {
|
processInto(number);
|
}
|
}
|
}
|
|
|
/**
|
* @param Number
|
* @return //下片前理片 进
|
*/
|
|
public boolean processInto(String Number) {
|
GlassInfoService = WebSocketServer.applicationContext.getBean(GlassInfoService.class);
|
downStorageCageService = WebSocketServer.applicationContext.getBean(DownStorageCageService.class);
|
|
//按id查询玻璃信息表里的玻璃
|
GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
|
PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
|
//存在此玻璃编号
|
if (GlassInfo != null) {
|
//同钢化版图内的栅格号 找到相同版图id并且大于前面的顺序的空格
|
List<DownStorageCageDetails> list = selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(), GlassInfo.getTemperingFeedSequence(), GlassInfo.getWidth());
|
//空栅格号
|
if (list.size() == 0) {
|
//查询笼子内空闲
|
list = selectInfo.SelectCacheLeisure();
|
}
|
//小于此玻璃钢化版图序号的栅格号
|
if (list.size() == 0) {
|
list = selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperingLayoutId(), GlassInfo.getWidth());
|
}
|
if (list.size() > 0) {
|
//存在空格
|
//1.生成任务: 起始位置0 结束位置this.slot 任务类型 1 (进片任务)
|
//2.回复 1进片
|
DownStorageCageDetails item = list.get(0);
|
selectInfo.insertCacheTask(GlassInfo.getId() + "", "0", item.getSlot() + "", "1", GlassInfo.getWidth(), GlassInfo.getHeight(), GlassInfo.getFilmsid(), GlassInfo.getThickness(), GlassInfo.getFlowcardId());
|
|
S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(), (short) 1);
|
//完成后插入小片数据到缓存表
|
return true;
|
}
|
|
} else {
|
// ID编号不存在 不处理/回复PLC 进行报警提示
|
}
|
//返回结果
|
return false;
|
}
|
|
//理片 出
|
public boolean processOut() {
|
// 查询任务
|
String G06 = S7control.getinstance().ReadWord("DB14.56", 1).get(0) + "";
|
String G11 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
|
String G13 = S7control.getinstance().ReadWord("DB14.58", 1).get(0) + "";
|
PlcParameterObject plcmes = PLCAutoMes.PlcMesObject;
|
log.println("666"); ;
|
List<DownStorageCageDetails> list = selectInfo.SelectCacheOut(1, 5);
|
List<DownStorageCageDetails> list2 = selectInfo.SelectCacheOut(6, 10);
|
List<DownStorageCageDetails> list3 = selectInfo.SelectCacheOut(1, 10);
|
// 优先 超出尺寸优先人工出片 人工处理
|
if (!list3.isEmpty()) {
|
DownStorageCageDetails item3 = list3.get(0);
|
if (item3.getHeight() >= 1 && item3.getWidth() >= 1) {
|
|
String endcell = "13";
|
String SendEndcell = "1";
|
|
selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}
|
}
|
|
//同时请求 优先后端出片
|
else if (!list3.isEmpty()) {
|
DownStorageCageDetails item3 = list3.get(0);
|
if (G06.equals("0") && G11.equals("0")) {
|
|
String endcell = "11";
|
String SendEndcell = "1";
|
|
selectInfo.insertCacheTask(item3.getGlassId() + "", "0", endcell, "2", item3.getWidth(), item3.getHeight(), item3.getFilmsid(), item3.getThickness(), item3.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}
|
}
|
// 按照顺序符合前端出片
|
else if (!list.isEmpty()) {
|
DownStorageCageDetails item = list.get(0);
|
if (G06.equals("0") && G11.equals("1")) {
|
// 出到 G06
|
selectInfo.insertCacheTask(item.getGlassId() + "", "0", "06", "2", item.getWidth(), item.getHeight(), item.getFilmsid(), item.getThickness(), item.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}
|
// 按照顺序符合后端出片
|
} else if (!list2.isEmpty()) {
|
DownStorageCageDetails item2 = list2.get(0);
|
if (G06.equals("1") && G11.equals("0")) {
|
// 出到 G11
|
selectInfo.insertCacheTask(item2.getGlassId() + "", "0", "11", "2", item2.getWidth(), item2.getHeight(), item2.getFilmsid(), item2.getThickness(), item2.getFlowCardId());
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
|
S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
|
return true;
|
}
|
|
}
|
|
|
// 返回结果
|
return false;
|
}
|
|
|
|
/**
|
* @param Number
|
* //磨边 不交互 理片和磨边机自己交互
|
*/
|
|
|
/**
|
* @param Number
|
* @return 查询消息队列里此玻璃ID的数据
|
*/
|
public boolean selectMessageId(String Number) {
|
//查询是否存在
|
|
GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
|
if (GlassInfo == null) {
|
//返回 不存在
|
return false;
|
|
}
|
//返回 存在
|
return true;
|
}
|
|
/**
|
* @param Number
|
* @return 删除消息队列里此玻璃ID的数据
|
*/
|
|
public boolean deleteMessageId(String Number) {
|
//查询是否存在
|
GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
|
if (GlassInfo == null) {
|
//返回 不存在
|
return false;
|
}
|
//返回 存在
|
return true;
|
}
|
|
|
/**
|
* @param Number
|
* @return //是否存在此编号玻璃
|
*/
|
public boolean isExist(String Number) {
|
//查询是否存在
|
GlassInfo GlassInfo = GlassInfoService.selectGlassId(Number);
|
if (GlassInfo == null) {
|
//返回 不存在
|
return false;
|
}
|
//返回 存在
|
return true;
|
}
|
|
}
|