package com.mes.common;
|
import cn.hutool.core.date.DateTime;
|
import cn.hutool.json.JSONObject;
|
import com.github.yulichang.query.MPJLambdaQueryWrapper;
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
import com.mes.edgstoragecage.entity.EdgStorageCage;
|
import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
|
import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
|
import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
|
import com.mes.edgstoragecage.service.EdgStorageCageService;
|
import com.mes.glassinfo.entity.GlassInfo;
|
import com.mes.glassinfo.service.GlassInfoService;
|
import com.mes.taskcache.entity.TaskCache;
|
import com.mes.taskcache.mapper.TaskCacheMapper;
|
import com.mes.taskcache.service.TaskCacheService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service
|
@Slf4j
|
public class PlcHomeEdg extends Thread {
|
|
|
|
@Autowired
|
TaskCacheService taskCacheService;
|
@Autowired
|
GlassInfoService glassInfoService;
|
@Autowired
|
EdgStorageCageService edgStorageCageService;
|
@Autowired
|
EdgStorageCageDetailsService edgStorageCageDetailsService;
|
@Autowired
|
private EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
|
|
private Map<String,String> mapParameter=new HashMap<String,String>();
|
private Map<String,String> mapValue=new HashMap<String,String>();
|
private Map<String,Object> mapSettings=new HashMap<String,Object>();
|
|
|
private void initialize(){
|
mapParameter.put("A06_request_word","DB11.0");
|
mapParameter.put("A05_scanning_ID","DB11.2");
|
mapParameter.put("MES_confirmation_word","DB11.40");
|
mapParameter.put("A09_glass_status","DB11.70");
|
mapParameter.put("A10_glass_status","DB11.72");
|
mapParameter.put("A09_prohibit_film_production","DB11.74");
|
mapParameter.put("A10_prohibit_film_production","DB11.76");
|
mapSettings.put("territoryPoor",3);
|
|
// mapValue.put("A06_request_word","1");//请求字
|
// mapValue.put("A05_scanning_ID","7");//请求ID
|
// mapValue.put("MES_confirmation_word","0");//MES发送字
|
// mapValue.put("A09_glass_status","0");//A09玻璃状态
|
// mapValue.put("A10_glass_status","0");//A09玻璃状态
|
// mapValue.put("A09_prohibit_film_production","0");//A9禁止出片
|
// mapValue.put("A10_prohibit_film_production","0");//A10禁止出片
|
for (String key:mapParameter.keySet()){
|
String value=S7object.getinstance().plccontrol.readString(mapParameter.get(key));
|
mapValue.put(key,value);
|
}
|
}
|
private void inTo(){
|
List<GlassInfo> glassInfos=glassInfoService.selectId(mapValue.get("A05_scanning_ID"));
|
if(glassInfos.size()<1){
|
log.info("此玻璃编号不存在");
|
}else if(glassInfos.size()==1){
|
//添加进片任务 查找空格
|
log.info("正常");
|
List<EdgStorageCage> list=edgStorageCageService.selectCacheEmpty();
|
|
if(list.size()>1){
|
EdgStorageCageDetails edgStorageCageDetails=edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>()
|
.eq(EdgStorageCageDetails::getGlassId,glassInfos.get(0).getGlassId()));
|
edgStorageCageDetails.setState(200);
|
|
TaskCache taskCache=new TaskCache();
|
EdgStorageCage edgStorageCage=list.get(0);
|
taskCache.setGlassId(glassInfos.get(0).getGlassId());
|
taskCache.setTaskStatus(0);
|
taskCache.setStartCell(0);
|
taskCache.setEndCell(edgStorageCage.getSlot());
|
taskCache.setTaskType(1);
|
taskCache.setCreateTime(new DateTime());
|
edgStorageCageDetailsMapper.updateById(edgStorageCageDetails);
|
taskCacheService.insertTaskCache(taskCache);
|
}else{
|
log.info("不存在空格");
|
}
|
}else{
|
log.info("此玻璃编号存在多个");
|
}
|
}
|
private void outTo(int line){
|
int endcell=0;
|
EdgStorageCageDetails outEdgStorageCageDetails=new EdgStorageCageDetails();
|
TaskCache taskCacheA09=taskCacheService.selectLastOutCacheInfo("");
|
TaskCache taskCacheA10=taskCacheService.selectLastOutCacheInfo("");
|
//两线各自要出的玻璃
|
EdgStorageCageDetails glassInfo09=edgStorageCageDetailsService.selectConformGlass(taskCacheA09.getGlassId(),(int)mapSettings.get("territoryPoor"));
|
EdgStorageCageDetails glassInfo10=edgStorageCageDetailsService.selectConformGlass(taskCacheA10.getGlassId(),(int)mapSettings.get("territoryPoor"));
|
//决定线路
|
if(line==1){
|
endcell=9000;
|
outEdgStorageCageDetails=glassInfo09;
|
}else if(line==2){
|
endcell=1000;
|
outEdgStorageCageDetails=glassInfo10;
|
}else if(line==3){
|
endcell=9000;//默认走一号线 优化方向可根据 对比两线速度/两线当前任务情况做
|
outEdgStorageCageDetails=glassInfo09;
|
}
|
if(outEdgStorageCageDetails!=null&&endcell>0){
|
TaskCache taskCache=new TaskCache();
|
taskCache.setGlassId(outEdgStorageCageDetails.getGlassId());
|
taskCache.setTaskStatus(0);
|
taskCache.setStartCell(outEdgStorageCageDetails.getSlot());
|
taskCache.setEndCell(endcell);
|
taskCache.setTaskType(2);
|
taskCache.setCreateTime(new DateTime());
|
taskCacheService.insertTaskCache(taskCache);
|
}
|
|
|
|
|
}
|
@Override
|
public void run() {
|
boolean start=true;
|
while (this != null&&start) {
|
JSONObject jsonObject = new JSONObject();
|
try {
|
Thread.sleep(1000);
|
taskCacheService = WebSocketServer.applicationContext.getBean(TaskCacheService.class);
|
glassInfoService = WebSocketServer.applicationContext.getBean(GlassInfoService.class);
|
edgStorageCageService = WebSocketServer.applicationContext.getBean(EdgStorageCageService.class);
|
edgStorageCageDetailsMapper = WebSocketServer.applicationContext.getBean(EdgStorageCageDetailsMapper.class);
|
initialize();//初始化数据
|
log.info("当前参数值:{}",mapValue);
|
if("0".equals(mapValue.get("A06_request_word"))){
|
//清除
|
//S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"),(short) 0);
|
}else if("1".equals(mapValue.get("A06_request_word"))&&
|
"0".equals(mapValue.get("MES_confirmation_word")))
|
{
|
|
inTo();
|
}else if("2".equals(mapValue.get("A06_request_word"))&&
|
"0".equals(mapValue.get("MES_confirmation_word"))&&
|
(
|
"0".equals(mapValue.get("A09_glass_status"))||
|
"0".equals(mapValue.get("A10_glass_status"))
|
)
|
){
|
|
outTo(3);
|
}else if("3".equals(mapValue.get("A06_request_word"))&&
|
"0".equals(mapValue.get("MES_confirmation_word"))){
|
|
if("0".equals(mapValue.get("A09_glass_status"))||"0".equals(mapValue.get("A10_glass_status"))){
|
outTo(3);
|
}else{
|
inTo();
|
}
|
}
|
|
|
// List<String> address2=new ArrayList<String>();
|
// address.add("");
|
// List<String> list2= S7object.getinstance().plccontrol.readStrings(address);
|
// PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
|
// log.info("plcmes:{}",plcmes);
|
// S7object.getinstance().plccontrol.WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
|
|
// taskCacheMapper = WebSocketServer.applicationContext.getBean(TaskCacheMapper.class);
|
// List<TaskCache> list=taskCacheMapper.selectList(null);
|
// log.info("数据{}",list);
|
// 注入mapper
|
// HomeService = WebSocketServer.applicationContext.getBean(HomeService.class);
|
// QueueMapper = WebSocketServer.applicationContext.getBean(QueueMapper.class);
|
|
|
// //读取DB105区文件
|
// PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
|
//
|
// String PlcRequest=plcmes.getPlcParameter("GaToMES").getValue();//请求
|
// String MesSend=plcmes.getPlcParameter("MESToGaStatus").getValue();//发送
|
// double width=Double.valueOf(plcmes.getPlcParameter("width").getValue());//宽
|
// double height=Double.valueOf(plcmes.getPlcParameter("Height").getValue());//高
|
|
//获取测量的长,宽
|
boolean istest = true;
|
// String PlcRequest = "1";
|
// String MesSend = "0";
|
// double width = 516;
|
// double height = 507;
|
//System.out.println(111);
|
// //查询当前订单任务
|
//List<FlowCard> OrderTask = storageCageService.SelectOrderTask();
|
//jsonObject.append("OrderTask", OrderTask);
|
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
// log.info("推数据");
|
// jsonObject.append("params", new short[] { 30, 40, });
|
ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
|
if (sendwServer != null) {
|
for (WebSocketServer webserver : sendwServer) {
|
webserver.sendMessage(jsonObject.toString());
|
if (webserver != null) {
|
|
List<String> messages = webserver.getMessages();
|
|
if (!messages.isEmpty()) {
|
// // 将最后一个消息转换为整数类型的列表
|
webserver.clearMessages();
|
}
|
}
|
|
}
|
}
|
}
|
}
|
}
|