src/main/java/com/zy/asrs/controller/RgvController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/BasJarMast.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/JarBurialEscalationScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/DevpSlave.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/rgv.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.Arith; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.RgvStatusType; @@ -14,8 +13,7 @@ import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.asrs.utils.VersionUtils; import com.zy.core.Slave; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.OutputQueue; import com.zy.core.cache.SlaveConnection; @@ -26,12 +24,11 @@ import com.zy.core.model.Task; import com.zy.core.model.command.RgvCommand; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.RgvThread; import com.zy.core.thread.ScaleThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -67,37 +64,29 @@ @ManagerAuth(memo = "RGV信息表") public R rgvStateTable(){ List<RgvStateTableVo> list = new ArrayList<>(); List<BasRgv> rgvs = basRgvService.selectList(new EntityWrapper<BasRgv>().orderBy("rgv_no")); for (BasRgv basRgv : rgvs) { // 表格行 RgvStateTableVo vo = new RgvStateTableVo(); vo.setRgvNo(basRgv.getRgvNo()); // RGV号 list.add(vo); // 获取RGV信息 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, basRgv.getRgvNo()); if (rgvThread == null) { continue; } RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); if (rgvProtocol == null) { continue; } vo.setStatusType(rgvProtocol.modeType.desc); // 模式状态 vo.setStatus(rgvProtocol.getStatusType().desc); // 状态 vo.setWorkNo1(rgvProtocol.getTaskNo1()); // 工位1任务号 vo.setStatus1(rgvProtocol.getStatusType1().desc); // 工位1状态 vo.setLoading1(rgvProtocol.getLoaded1()==1?"有物":"无物"); // 工位1有物 vo.setRgvPos(rgvProtocol.getRgvPos()); vo.setWalkPos(rgvProtocol.getWalkPos()==1?"不在定位":"在定位"); vo.setWorkNo2(rgvProtocol.getTaskNo2()); // 工位2任务号 vo.setStatus2(rgvProtocol.getStatusType2().desc); // 工位2状态 vo.setLoading2(rgvProtocol.getLoaded2()==0?"无物":"有物"); // 工位2有物 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2); Map<Integer, StaProtocol> station = devpThread.getStation(); int[] basRgvList =new int[]{623,624,625,626}; vo.setWarnCode(String.valueOf(rgvProtocol.getAlarm())); if (rgvProtocol.getAlarm() > 0) { BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); vo.setAlarm(rgvErr==null?"未知异常":rgvErr.getErrName()); } for (int rgvNo : basRgvList) { RgvStateTableVo vo = new RgvStateTableVo(); vo.setRgvNo(rgvNo); // 站点编号 list.add(vo); StaProtocol staProtocol = station.get(rgvNo); if (null == staProtocol) { continue; } vo.setWorkNo1(staProtocol.getWorkNo().shortValue()); // 工作号 vo.setStatusType(staProtocol.isAutoing()?"Y":"N"); // 自动 vo.setStatus(staProtocol.isLoading()?"Y":"N"); // 有物 vo.setEndRow(staProtocol.getEndRow()); // 小车目标位 vo.setNowRow(staProtocol.getNowRow()); // 小车当前位 //左:1 中: 2 右:3 (面朝入料口) vo.setStatus11(staProtocol.isRGV1()?"Y":"N"); // 工作号 vo.setStatus12(staProtocol.isRGV2()?"Y":"N"); // 工作号 vo.setStatus13(staProtocol.isRGV3()?"Y":"N"); // 工作号 vo.setStatus14(staProtocol.isRGV4()?"Y":"N"); // 工作号 vo.setStatus15(staProtocol.isRGV5()?"Y":"N"); // 工作号 vo.setStatus16(staProtocol.isRGV6()?"Y":"N"); // 工作号 // vo.setLocType1(staProtocol.isHigh() != staProtocol.isLow() && staProtocol.isLow() ? "低" : "高"); //高低库位 // vo.setLocType1(devp.getDevNo()==102 ? "高" : "低"); } return R.ok().add(list); } src/main/java/com/zy/asrs/domain/vo/RgvStateTableVo.java
@@ -19,9 +19,15 @@ // 任务号 private Short workNo1 = 0; private short endRow;//小车目标位 private short nowRow;//小车当前位 //左:1 中: 2 右:3 (面朝入料口) // 状态 private String status1 = "-"; private String status11 = "-"; private String status12 = "-"; private String status13 = "-"; private String status14 = "-"; private String status15 = "-"; private String status16 = "-"; // 有物 private String loading1 = "-"; @@ -35,8 +41,13 @@ // 任务号 private Short workNo2 = 0; // 状态 private String status2 = "-"; // // 状态 // private String status21 = "-"; // private String status22 = "-"; // private String status23 = "-"; // private String status24 = "-"; // private String status25 = "-"; // private String status26 = "-"; // 有物 private String loading2 = "-"; src/main/java/com/zy/asrs/entity/BasJarMast.java
@@ -341,7 +341,10 @@ case 5: return 4; case 6: return 10; if (this.status == 11) { return 10; } return 11; case 9: return 17; } src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -5367,8 +5367,8 @@ case 3: case 4: signExecute = jarWrkMastExecuteGenerateJar(signExecute,sign);//硫化罐任务 case 5: signExecute = jarWrkMastExecuteGenerateBurial(signExecute, sign);//冷却槽取输送线 // case 5: // signExecute = jarWrkMastExecuteGenerateBurial(signExecute, sign);//冷却槽去输送线 default: jarWrkMastExecuteGenerateSte(signExecute,sign);//小车移动 // signExecute = jarWrkMastExecuteGenerateBurial(signExecute, sign);//冷却槽取输送线 @@ -6462,12 +6462,12 @@ if (jarWrkMastExecuteActionExecute5Three(wrkMastExecute,sign)){ break; } return; continue; case 6: if (jarWrkMastExecuteActionExecute6Three(wrkMastExecute,sign)){ break; } return; continue; } } } catch (Exception e){ @@ -7202,7 +7202,7 @@ return false; } //调车 == > 取货 if (!jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT25.id,SteTaskModeType.STE_WFFH_13,false,SteAndJarUtil.getBJarNo(wrkMastExecute.getJarId()))){ if (!jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT26.id,SteTaskModeType.STE_WFFH_13,false,SteAndJarUtil.getBJarNo(wrkMastExecute.getJarId()))){ log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}", wrkMastExecute.getJarId(), JSON.toJSONString(wrkMastExecute), JSON.toJSONString(jarProtocol),sign); } @@ -7927,29 +7927,91 @@ switch (sign){ case 1: if (jarWrkMastExecuteGenerateSteComplete(sign)){ break; return; } case 2: if (jarWrkMastExecuteGenerateJarComplete(sign)){ break; return; } case 3: if (jarWrkMastExecuteGenerateRgvComplete1(sign)){ break; return; } case 4: if (jarWrkMastExecuteGenerateRgvComplete2(sign)){ break; return; } default: return; break; } jarWrkMastExecuteGenerateDevComplete(sign); }catch (Exception e){ log.error("JarWrkMastExecute任务完成报错!"+e); } } /** * JarWrkMastExecute任务完成 ===>Devp //完成 */ public synchronized boolean jarWrkMastExecuteGenerateDevComplete(Integer sign) { try{ // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { // 遍历入库口 for (DevpSlave.Sta inSta : devp.getOutJarInSta()) { SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); if (staProtocol == null) { continue; } else { staProtocol = staProtocol.clone(); } // 判断是否满足条件 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) { for (DevpSlave.Jar jar : inSta.getJarList()) { // 判断重复工作档 List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusListB(jar.getBurial(), new ArrayList<Integer>() {{ add(9); add(11); }}); if (basJarMastList.isEmpty()){ continue; } BasJarMast jarMastByWrkNo = basJarMastList.get(0); jarMastByWrkNo.setStatus(jarMastByWrkNo.getStatusComplete(6)); StaProtocol staProtocolNew = new StaProtocol(); staProtocolNew.setSiteId(staProtocol.getSiteId()); staProtocolNew.setWorkNo(basJarMastList.get(0).getWrkNo().intValue()); staProtocolNew.setStaNo(jar.getEndStaNo()); devpThread.setPakMk(staProtocolNew.getSiteId(), false,7989); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew)); if (!result) { LedErrorThreadUtil.ledErrorThread("更新plc站点信息失败!站点号:"+inSta.getStaNo(),inSta.getLed(), LedErrorAreaType.ONE_OTHER.getDesc()); throw new CoolException("更新plc站点信息失败"); } if (!basJarMastService.updateById(jarMastByWrkNo)){ log.error("硫化区域分段任务完成异常,BasJarMast={},异常信息={}",JSON.toJSONString(jarMastByWrkNo),"更新basJarMast失败"); throw new CoolException("更新basJarMast失败"); } break; } } } } return true; }catch (Exception e){ log.error("JarWrkMastExecute任务完成 ===>Ste报错!"+e); } return false; } /** * JarWrkMastExecute任务完成 ===>Ste //完成 */ public synchronized boolean jarWrkMastExecuteGenerateSteComplete(Integer sign) { src/main/java/com/zy/asrs/task/JarBurialEscalationScheduler.java
@@ -24,7 +24,7 @@ int[] jarList =new int[]{1,2,3,4,5,6}; for (int jarNo : jarList){ try{ ReturnT<String> result = jarBurialEscalationHandler.start(jarNo,10,11); ReturnT<String> result = jarBurialEscalationHandler.start(jarNo,10,17); if (result.getCode()==200){ break; } @@ -34,7 +34,7 @@ } } @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute2(){//上传开式冷却信号 int[] jarList =new int[]{1,2,3,4,5,6}; for (int jarNo : jarList){ src/main/java/com/zy/core/MainProcess.java
@@ -40,7 +40,7 @@ i++; if (i>5) i=0; j++; if (j>5) j=0; k++; if (k>6) { if (k>5) { k=0; l++; if (l>=3) l=0; src/main/java/com/zy/core/model/DevpSlave.java
@@ -21,6 +21,7 @@ private List<Sta> inSta = new ArrayList<>(); private List<Sta> inSta464 = new ArrayList<>(); private List<Sta> outJarInSta = new ArrayList<>(); private List<Sta> driveSta = new ArrayList<>(); private List<Sta> inWmsSta = new ArrayList<>(); private List<Sta> inSingleSta = new ArrayList<>(); @@ -54,6 +55,8 @@ private Integer led; private List<Jar> JarList = new ArrayList<>();//硫化罐 } @Data @@ -86,4 +89,13 @@ } @Data public static class Jar { private Integer jarNo;//jar编号 private Integer endStaNo;//jar编号 private Integer burial;//jar编号 } } src/main/resources/application.yml
@@ -386,6 +386,30 @@ staNo: 628 row: 1 # 大料箱 硫化完成 入库口1 outJarInSta[0]: staNo: 627 led: ${wcs-slave.led[1].id} JarList[0]: jarNo: 1 endStaNo: 518 burial: 5 JarList[1]: jarNo: 2 endStaNo: 518 burial: 5 # 大料箱 硫化完成 入库口2 outJarInSta[1]: staNo: 628 led: ${wcs-slave.led[1].id} JarList[0]: jarNo: 3 endStaNo: 518 burial: 6 JarList[1]: jarNo: 4 endStaNo: 518 burial: 6 # 条码扫描仪 barcode[0]: id: 1 src/main/webapp/views/rgv.html
@@ -90,18 +90,17 @@ <thead> <tr> <th>RGV</th> <th>模式</th> <th>状态</th> <th>任务号1</th> <th>自动</th> <th>有物</th> <th>小车目标位</th> <th>小车当前位</th> <th>任务号</th> <th>状态1</th> <th>有物1</th> <th>RGV位置</th> <th>走行定位</th> <th>任务号2</th> <th>状态2</th> <th>有物2</th> <th>故障代码</th> <th>故障描述</th> <th>状态3</th> <th>状态4</th> <th>状态5</th> <th>状态6</th> </tr> </thead> <tbody> @@ -114,13 +113,13 @@ <table id="rgv-msg-table"> <thead> <tr> <th>RGV</th> <th>工作号</th> <th>状态</th> <th>源站</th> <th>目标站</th> <th>源库位</th> <th>目标库位</th> <!-- <th>RGV</th>--> <!-- <th>工作号</th>--> <!-- <th>状态</th>--> <!-- <th>源站</th>--> <!-- <th>目标站</th>--> <!-- <th>源库位</th>--> <!-- <th>目标库位</th>--> <!-- <th>走行速度(m/min)</th>--> <!-- <th>升降速度(m/min)</th>--> <!-- <th>叉牙速度(m/min)</th>--> @@ -205,18 +204,18 @@ <fieldset> <legend>手动操作</legend> <div class="button-group"> <button class="item" onclick="put()">取放货</button> <button class="item" onclick="take()">取货</button> <button class="item" onclick="stockMove()">放货</button> <!-- <button class="item" onclick="put()">取放货</button>--> <!-- <button class="item" onclick="take()">取货</button>--> <!-- <button class="item" onclick="stockMove()">放货</button>--> <!-- <button class="item" onclick="siteMove()">站到站</button>--> <!-- <button class="item" onclick="bacOrigin()">回原点</button>--> <!-- <button class="item" onclick="reverseOrigin()">反原点</button>--> <!-- <button class="item" onclick="coorMove()">坐标移行</button>--> <button class="item" onclick="taskComplete()">任务完成</button> <!-- <button class="item" onclick="taskComplete()">任务完成</button>--> <!-- <button class="item" onclick="pause()">暂停</button>--> <!-- <button class="item" onclick="boot()">启动</button>--> <button class="item" onclick="clearCommand()">清除命令</button> <button class="item" onclick="handleReset()">复位</button> <!-- <button class="item" onclick="clearCommand()">清除命令</button>--> <!-- <button class="item" onclick="handleReset()">复位</button>--> </div> </fieldset> </div> @@ -312,16 +311,15 @@ setVal(tr.children("td").eq(0), table[i-1].rgvNo); setVal(tr.children("td").eq(1), table[i-1].statusType); setVal(tr.children("td").eq(2), table[i-1].status); setVal(tr.children("td").eq(3), table[i-1].workNo1); setVal(tr.children("td").eq(4), table[i-1].status1); setVal(tr.children("td").eq(5), table[i-1].loading1); setVal(tr.children("td").eq(6), table[i-1].rgvPos); setVal(tr.children("td").eq(7), table[i-1].walkPos); setVal(tr.children("td").eq(8), table[i-1].workNo2); setVal(tr.children("td").eq(9), table[i-1].status2); setVal(tr.children("td").eq(10), table[i-1].loading2); setVal(tr.children("td").eq(11), table[i-1].warnCode); setVal(tr.children("td").eq(12), table[i-1].alarm); setVal(tr.children("td").eq(3), table[i-1].endRow); setVal(tr.children("td").eq(4), table[i-1].nowRow); setVal(tr.children("td").eq(5), table[i-1].workNo1); setVal(tr.children("td").eq(6), table[i-1].status11); setVal(tr.children("td").eq(7), table[i-1].status12); setVal(tr.children("td").eq(8), table[i-1].status13); setVal(tr.children("td").eq(9), table[i-1].status14); setVal(tr.children("td").eq(10), table[i-1].status15); setVal(tr.children("td").eq(11), table[i-1].status16); } } else if (res.code === 403){ window.location.href = baseUrl+"/login";