package com.mes.common;
|
|
import cn.hutool.json.JSONObject;
|
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.service.TaskCacheService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
|
@Service
|
@Slf4j
|
public class PlcHomeEdg extends Thread {
|
|
|
@Autowired
|
TaskCacheService taskCacheService;
|
@Autowired
|
GlassInfoService glassInfoService;
|
@Autowired
|
EdgStorageCageService edgStorageCageService;
|
@Autowired
|
EdgStorageCageDetailsService edgStorageCageDetailsService;
|
@Resource
|
private EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
|
|
private Map<String, String> mapParameter = new HashMap<String, String>();
|
private Map<String, String> mapValue = new HashMap<String, String>();
|
private Map<String, String> mapType = new HashMap<String, String>();
|
private Map<String, Object> mapSettings = new HashMap<String, Object>();
|
|
|
private void initialize() {
|
// mapParameter.put("A06_request_word", "DB11.0"); //work
|
// 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);
|
// mapType.put("A06_request_word", "Word");
|
// mapType.put("A05_scanning_ID", "String");
|
// mapType.put("MES_confirmation_word", "Word");
|
// mapType.put("A09_glass_status", "Word");
|
// //mapType.put("A10_glass_status", "Word");
|
// mapType.put("A09_prohibit_film_production", "Word");
|
// mapType.put("A10_prohibit_film_production", "Word");
|
mapValue.put("A06_request_word", "1");//请求字
|
mapValue.put("A05_scanning_ID", "11111111111");//请求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禁止出片
|
|
}
|
|
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 Date());
|
edgStorageCageDetailsMapper.updateById(edgStorageCageDetails);
|
taskCacheService.insertTaskCache(taskCache);
|
S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 1);
|
} 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 Date());
|
taskCacheService.insertTaskCache(taskCache);
|
S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 1);
|
}
|
|
|
}
|
|
@Override
|
public void run() {
|
boolean start = true;
|
initialize();
|
log.info("当前参数值:{}", mapValue);
|
while (this != null && start) {
|
JSONObject jsonObject = new JSONObject();
|
for (String key : mapParameter.keySet()) {
|
String value = "";
|
if ("String".equals(mapType.get(key))) {
|
value = S7object.getinstance().plccontrol.readString(mapParameter.get(key));
|
} else {
|
value = S7object.getinstance().plccontrol.readWord(mapParameter.get(key)) + "";
|
}
|
mapValue.put(key, value);
|
}
|
|
S7object.getinstance().plccontrol.WriteWord(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word").getAddress(), (short)1);
|
try {
|
Thread.sleep(1000);
|
// initialize();//初始化数据
|
if ("0".equals(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word"))) {
|
//清除
|
S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short) 0);
|
} else if ("1".equals(S7object.getinstance().PlcMesObject.getPlcParameter("A06_request_word")) &&
|
"0".equals(S7object.getinstance().PlcMesObject.getPlcParameter("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"))) {
|
//09空闲 :1 10空闲 :2 都空闲:3 其他0
|
outTo(Integer.parseInt(mapValue.get("A09_glass_status")));
|
} 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(Integer.parseInt(mapValue.get("A09_glass_status")));
|
} else {
|
inTo();
|
}
|
}
|
|
|
} 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();
|
}
|
}
|
|
}
|
}
|
}
|
}
|
}
|