| | |
| | | package com.mes.common; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.json.JSONObject; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import com.mes.device.PlcParameterObject; |
| | | 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.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; |
| | | @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 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); |
| | | 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(2001); |
| | | TaskCache taskCacheA10 = taskCacheService.selectLastOutCacheInfo(2002); |
| | | //两线各自要出的玻璃 |
| | | EdgStorageCageDetails glassInfo09 = edgStorageCageDetailsService.selectConformGlass(taskCacheA09.getGlassId(), (int) mapSettings.get("territoryPoor")); |
| | | EdgStorageCageDetails glassInfo10 = edgStorageCageDetailsService.selectConformGlass(taskCacheA10.getGlassId(), (int) mapSettings.get("territoryPoor")); |
| | | //决定线路 |
| | | if (line == 1) { |
| | | endcell = 2001; |
| | | outEdgStorageCageDetails = glassInfo09; |
| | | } else if (line == 2) { |
| | | endcell = 2002; |
| | | outEdgStorageCageDetails = glassInfo10; |
| | | } else if (line == 3) { |
| | | endcell = 2001;//默认走一号线 优化方向可根据 对比两线速度/两线当前任务情况做 |
| | | 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); |
| | | S7object.getinstance().plccontrol.WriteWord(mapParameter.get("MES_confirmation_word"), (short)1); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | while (this != null) { |
| | | boolean start = true; |
| | | 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); |
| | | // 注入mapper |
| | | // HomeService = WebSocketServer.applicationContext.getBean(HomeService.class); |
| | | // QueueMapper = WebSocketServer.applicationContext.getBean(QueueMapper.class); |
| | | // 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"))) { |
| | | |
| | | // //读取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());//高 |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | //获取测量的长,宽 |
| | | 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) { |