From 54c41bbbffd29c51762db3cc99e76f75617f2bda Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 18 八月 2025 16:44:03 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/RgvThread.java | 26 +
src/main/java/com/zy/asrs/entity/WrkMastSta.java | 18 +
src/main/java/com/zy/asrs/utils/RouteUtils.java | 63 +++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 820 +++++++++++++++++++++++++++++++++++++----------
src/main/java/com/zy/core/MainProcess.java | 7
src/main/java/com/zy/core/model/protocol/RgvProtocol.java | 19
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java | 5
src/main/resources/mapper/WrkMastStaMapper.xml | 25 +
8 files changed, 775 insertions(+), 208 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastSta.java b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
index f3a2b96..1cf409a 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastSta.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -119,9 +119,23 @@
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date bignTime;
+ /**
+ * 宸ヤ綅鏍囪
+ */
+ @ApiModelProperty(value= " 1:宸ヤ綅1 2锛氬伐浣�2 ")
+ @TableField("work_sta")
+ private Integer workSta;
+
+ /**
+ * rgv鏍囪
+ */
+ @ApiModelProperty(value= " rgv缂栧彿鏍囪 ")
+ @TableField("rgv_no")
+ private Integer rgvNo;
+
public WrkMastSta() {}
- public WrkMastSta(Long wrkNo, Integer wrkStart, Integer wrkEnd, Integer staStart, Integer staEnd, Date createTime, Date updateTime, Integer type, Integer wrkSts, Integer lineNumber, Integer wrkType, Date bignTime) {
+ public WrkMastSta(Long wrkNo, Integer wrkStart, Integer wrkEnd, Integer staStart, Integer staEnd, Date createTime, Date updateTime, Integer type, Integer wrkSts, Integer lineNumber, Integer wrkType, Date bignTime,Integer workSta, Integer rgvNo) {
this.wrkNo = wrkNo;
this.wrkStart = wrkStart;
this.wrkEnd = wrkEnd;
@@ -134,6 +148,8 @@
this.lineNumber = lineNumber;
this.wrkType = wrkType;
this.bignTime = bignTime;
+ this.workSta = workSta;
+ this.rgvNo = rgvNo;
}
// WrkMastSta wrkMastSta = new WrkMastSta(
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
index da34693..743cefb 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -31,7 +31,10 @@
/*
* 鏌ヨ涓嶅共娑夌殑鍙墽琛屼换鍔�
* */
- WrkMastSta selectNoInterfere(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds);
+ WrkMastSta selectNoInterfere(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds,@Param("workNo")Long workNo );
List<WrkMastSta> selectNoInterfereList(@Param("staStarts") List<Integer> staStarts, @Param("staEnds") List<Integer> staEnds);
+
+ WrkMastSta selectByWorkSta(@Param("workSta") Integer workSta, @Param("rgv_no") Integer rgv_no);
+
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 712baf2..d4e4613 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -2767,43 +2767,151 @@
try{
for (DevpSlave devp : slaveProperties.getDevp()) {
List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
- for (BasRgvMap rgvSlave:basRgvMaps) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
continue;
}else {
rgvProtocol = rgvProtocol.clone();
}
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgv.getId());
continue;
}
- // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔�
+ // 鍙湁褰揜GV宸ヤ綅1绛夊緟WCS纭銆佽嚜鍔�
if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)
&& rgvProtocol.getModeType() == RgvModeType.AUTO
&& (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
){
log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
- if(rgvProtocol.getTaskNo1() == 9999){
- List<Integer> staNos = Arrays.asList( 1043, 1104);
- for (Integer staNo : staNos) {
- SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
- StaProtocol staProtocol = devpThread.getStation().get(staNo);
- boolean rgvComplete = false;
- if(!staProtocol.isLoading()){
- rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);//宸ヤ綅1澶嶄綅
+ if(rgvProtocol.getTaskNo1() == 9999){ // 棰勮皟搴︿换鍔$‘璁�
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ Integer staNo = basRgvMap.getNowRoute();
+ switch (staNo){
+ case 1004: staNo = 1042; break;
+ case 1007: staNo = 1105; break;
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ boolean rgvComplete = false;
+
+ long now = System.currentTimeMillis();
+ if (staProtocol.isLoading()) {
+ rgvProtocol.setLoadingStartTime(null); // 宸插埌浣嶏紝娓呯┖鏃堕棿鎴�
+ } else {
+ if (rgvProtocol.getLoadingStartTime() == null) {
+ rgvProtocol.setLoadingStartTime(now);
}
+ }
+
+ if (staProtocol.isLoading() ||
+ (rgvProtocol.getLoadingStartTime() != null && now - rgvProtocol.getLoadingStartTime() > 10000)) {
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(), 3);
if (!rgvComplete){
- log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�",rgvProtocol.getRgvNo());
- break;
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛佺瓑寰呭叆搴撳彇璐�", rgvProtocol.getRgvNo());
}
}
}
if (rgvProtocol.getTaskNo1()!=0 && rgvProtocol.getTaskNo1()!=9999){
WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+ if(wrkMastSta.getWrkSts() == 1){//鍙栬揣纭
+ wrkMastSta.setWrkSts(2);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ break;
+ }
+ if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
+ log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
+ continue;
+ }
+
+ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+ StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (!staProtocol.isAutoing() || !staProtocol.isLoading()){
+ continue;
+ }
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue());
+ if (!Cools.isEmpty(wrkMast)){
+ if (!staProtocol.isPakMk()){
+ continue;
+ }
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
+ continue;
+ }
+ }
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1());
+ wrkMast1.setPdcType("Y");
+
+ wrkMastService.updateById(wrkMast1);
+
+ wrkMastSta.setWrkSts(3);
+ wrkMastStaMapper.updateById(wrkMastSta);
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
+ rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
+ }
+
+ else {
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
+ }
+ }
+ // 鍙湁褰揜GV宸ヤ綅2绛夊緟WCS纭銆佽嚜鍔�
+ if ((rgvProtocol.getStatusType2() == RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1)
+ ){
+ log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol);
+ if (rgvProtocol.getTaskNo2() !=0 ){
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1());
+ if(wrkMastSta.getWrkSts() == 1){//缂鸿揣纭
+ wrkMastSta.setWrkSts(2);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean rgvComplete = false;
+
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),7);
+ if (!rgvComplete){
+ log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
+ break;
+ }
+ break;
+ }
if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){
log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta);
continue;
@@ -2837,12 +2945,8 @@
boolean rgvComplete = false;
//鍙屽伐浣嶅嚭鍏ュ簱涓嶅悓宸ヤ綅澶嶄綅
- if((sourceSta >= 1001 && sourceSta <= 1035) || (sourceSta >= 2001 && sourceSta <= 2030)){
- rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
- }else{
- rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),3);
+ rgvComplete = rgvComplete((int) rgvProtocol.getRgvNo(),6);
- }
if (!rgvComplete){
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo());
break;
@@ -2857,12 +2961,16 @@
BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI());
rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471");
- rgvThread.setPakMk(true);
}
-
else {
log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo());
}
+ }
+ //褰撳皬杞︽棤浠诲姟鏃跺彇娑堥攣瀹�
+ if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0){
+ rgvThread.setPakMk(true);
+ rgvThread.setPakIn(true);
+ rgvThread.setPakOut(true);
}
}
}
@@ -2872,183 +2980,496 @@
}
/**
- * rgv鍑哄叆搴撲换鍔′笅鍙�
+ * rgv鏀捐揣浠诲姟涓嬪彂
*/
- public synchronized void rgvIoExecute(Integer mark) {
- List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
-
- for (BasRgvMap rgvSlave:basRgvMaps) {
- // 鑾峰彇鍫嗗灈鏈轰俊鎭�
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+ public synchronized void rgvOutExecute() {
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
if (rgvProtocol == null) {
continue;
}
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
+ continue;
+ }
+ //灏忚溅鏃犱换鍔℃椂璺宠繃
+ if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0){
+ continue;
+ }
+ //鍏ュ簱鏀捐揣
+ if(rgvThread.isPakIn()){
+ for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//鍏ュ簱鏀捐揣绔欑偣
+ boolean flag = false;
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ if (staProtocol == null) {
+ News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog( " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer wrkNo = 0;
+ if(rgvProtocol.getTaskNo2() != 0){
+ wrkNo = rgvProtocol.getTaskNo2();
+ }else{
+ wrkNo = rgvProtocol.getTaskNo1();
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ }
+ //鍏ュ簱鏀捐揣
+ if( rgvThread.isPakOut()){
+ for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//鍏ュ簱鏀捐揣绔欑偣
+ boolean flag = false;
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ if (staProtocol == null) {
+ News.infoNoLog( " - 1" + " - 1" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error( " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv鏀捐揣绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+ && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog( " - 1" + " - 3" + " - Rgv鍏ュ簱鏀捐揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ Integer wrkNo = 0;
+ if(rgvProtocol.getTaskNo1() != 0){
+ wrkNo = rgvProtocol.getTaskNo1();
+ }else{
+ wrkNo = rgvProtocol.getTaskNo2();
+ }
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(wrkNo));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog( " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ wrkMastSta.setWrkSts(2);
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,null); //鍛戒护涓嬪彂
+ if (sign){
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+ }
+ }
+ rgvThread.setPakRgv(true);//浼樺厛鏀捐揣瀹屾垚锛屽紑鍚璋冨害
+ }
+ }
+
+
+
+ /**
+ * rgv鍑哄叆搴撲换鍔′笅鍙�
+ */
+ public synchronized void rgvIoExecute(Integer mark) {
+ List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgv.getId());
continue;
}
- // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
- if (rgvProtocol.getStatusType() == CrnStatusType.IDLE && rgvProtocol.getTaskNo() == 0 && rgvProtocol.getModeType() == CrnModeType.AUTO
- && rgvProtocol.getLoaded() == 0 && rgvProtocol.getForkPos() == 0) {
- News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽爢鍨涙満鍏ュ嚭搴撲綔涓氫笅鍙�");
+ // 鍙湁褰揜GV绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if ((rgvProtocol.getStatusType1() == RgvStatusType.IDLE || rgvProtocol.getStatusType2() == RgvStatusType.IDLE)
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvThread.isPakMk()) {
+ News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛孯GV鍏ュ嚭搴撲綔涓氫笅鍙�");
// 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
if (rgvProtocol.getLastIo().equals("I")) {
- if (basCrnp.getInEnable().equals("Y")) {
+ if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
//mark - 1 - ....
- this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
- crnProtocol.setLastIo("O");
- } else if (basCrnp.getOutEnable().equals("Y")) {
+ this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
//mark - 2 - ....
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
- crnProtocol.setLastIo("I");
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
}
}
// 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
- else if (crnProtocol.getLastIo().equals("O")) {
- if (basCrnp.getOutEnable().equals("Y")) {
- this.locToCrnStn(crn, crnProtocol,mark); // 鍑哄簱
- crnProtocol.setLastIo("I");
- } else if (basCrnp.getInEnable().equals("Y")) {
- this.crnStnToLoc(crn, crnProtocol,mark); // 鍏ュ簱
- crnProtocol.setLastIo("O");
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("Y") && rgvThread.isPakOut()) {
+ this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("Y") && rgvThread.isPakIn()) {
+ this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
}
}
+ WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
+ if(wrkMastSta1 != null && wrkMastSta2 != null){
+ rgvThread.setPakMk(false); //灏忚溅鍙屽伐浣嶉攣瀹�
+ }
+ }
+ if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){
+ rgvPreScheduling();//鑻ユ殏鏃犱笅鍙戜换鍔¢璋冨害鎻愬墠鍒板彇璐х偣
}
+ if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getStatusType2() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO) {
+ //灏忚溅鎵ц鏀捐揣浠诲姟
+ rgvOutExecute();
+
+ }
}
-// News.infoNoLog(""+mark+" - 0"+" - 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂鎵ц瀹屾垚");
+ }
+ /**
+ * 灏忚溅鍏ュ簱浠诲姟鍙栬揣涓嬪彂
+ */
+ public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) {
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv鍏ュ簱鍙栬揣绔欑偣
+ boolean flag = false;
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+
+ if (staProtocol == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍏ュ簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍏ュ簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍏ュ簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isInEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanining());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, (int) rgvProtocol.getRgvNo());
+ boolean result = true;
+ if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //璺濈璁$畻 2妤煎崟鍏ュ簱鍙d笉闇�瑕佽绠�
+ result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//宸ヤ綅2鏀捐揣绔欑偣锛屽伐浣�1鍙栬揣绔欑偣
+ }
+ if(result){//鑻ュ皬杞﹁窛绂绘斁璐х偣璺濈杩戜簬鍙栬揣鐐瑰垯璺宠繃鍙栬揣 true璺宠繃鍙栬揣/false浼樺厛鍙栬揣
+ rgvThread.setPakRgv(false);
+ continue;
+ }
+ wrkMastSta.setWorkSta(wrkMastSta2 != null ? 1 : 2);
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+ Short direction = 2;//鍙屽伐浣嶆渶缁堟姷杈句綅缃�
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction); //鍛戒护涓嬪彂
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ rgvThread.setPakOut(false);//鍑哄簱涓嶅厑璁�
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
+ }
+ /**
+ * 灏忚溅鍑哄簱浠诲姟鍙栬揣涓嬪彂
+ */
+ public synchronized void rgvRunWrkMastOut(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){
+ for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv鍑哄簱鍙栬揣绔欑偣
+ boolean flag = false;
+ //閬嶅巻rgv鍏ュ簱鍙栬揣绔欑偣
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo());
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo());
+
+ if (staProtocol == null) {
+ News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv鍑哄簱绔欎俊鎭�(staProtocol!=null缁х画鎵ц)锛歴taProtocol=" + staProtocol);
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo());
+ if (staDetl == null) {
+ News.error("" + mark + " - 1" + " - 2" + " - 鍑哄簱 ===>>Rgv绔欑偣鍦ㄦ暟鎹簱涓嶅瓨鍦�, 绔欑偣缂栧彿={}", rgvStn.getStaNo());
+ continue;
+ }
+
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isOutEnable()
+ && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) {
+ flag = true;
+ }
+ if (!flag) {
+ News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv鍑哄簱鍙栬揣绔欎俊鎭�(浠ヤ笅闇�瑕佸叏true):"
+ + "鑷姩淇″彿" + staProtocol.isAutoing() + "鏈夌墿淇″彿" + staProtocol.isLoading()
+ + "宸ヤ綔鍙�>0" + staProtocol.getWorkNo() + "鍙叆淇″彿" + staProtocol.isOutEnable()
+ + "鑳藉叆淇″彿锛坵ms璁剧疆锛�.equals(\"Y\")" + staDetl.getCanouting());
+ continue;
+ }
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+ List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfere(route, route, Long.valueOf(staProtocol.getWorkNo()));//鏍规嵁绔欑偣宸ヤ綔鍙峰拰灏忚溅宸ヤ綔鑼冨洿妫�绱换鍔℃。
+ if( null == wrkMastSta ) {
+ News.infoNoLog("" + mark + " - 1" + " - 4" + " - 鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts0, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWorkSta(1, (int) rgvProtocol.getRgvNo());
+ wrkMastSta.setWorkSta(wrkMastSta1 != null ? 2 : 1);//鑻�1鍙峰伐浣嶆湁浠诲姟缁�2鍙峰伐浣�
+ wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
+
+ Short direction = 1;//宸ヤ綅1鏂瑰悜
+ boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta, direction); //鍛戒护涓嬪彂
+ if (sign){
+ wrkMastSta.setWrkSts(1);
+ try{
+ wrkMastStaMapper.updateById(wrkMastSta);
+ log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+ }catch (Exception e){
+ log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+ }
+ rgvThread.setPakIn(false);//鍏ュ簱涓嶅厑璁�
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+ if (!signMap){
+ log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+ }
+ } else {
+ log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+ }
+
+
+ }
}
/**
* 鎵ц灏忚溅鎼繍浠诲姟
*
* @return
*/
- public synchronized boolean rgvRunWrkMastFullSta() {
- boolean wrkEnable = false;
- try{
- List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
- for (BasRgvMap rgvSlave:basRgvMaps) {
- RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
- RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
- if (rgvProtocol == null) {
- continue;
- }else {
- rgvProtocol = rgvProtocol.clone();
- }
- BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
- if (basRgv == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
- continue;
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && !rgvProtocol.isLoaded1ing()
- && rgvProtocol.getTaskNo1() == 0
- && rgvThread.isPakMk()
- && rgvThread.isPakIn()
- ) {
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
- }
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
- if (!staNos.contains(wrkMastSta.getStaStart())) {
- continue;
- }
- boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
- wrkEnable = true;
- if (sign){
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- rgvThread.setPakMk(false);
- rgvThread.setPakOut(false);
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
- if (signMap){
- return wrkEnable;
-// break;
- }else {
- log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- Thread.sleep(500);
- }
- } else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- Thread.sleep(500);
- }
- break;
- }
- }
-
- // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣
- if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
- && rgvProtocol.getModeType() == RgvModeType.AUTO
- && !rgvProtocol.isLoaded2ing()
- && rgvProtocol.getTaskNo2() == 0
- && rgvThread.isPakMk()
- && rgvThread.isPakOut()
- ){
- BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
- if (basRgvMap == null) {
- log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
- continue;
- }
- List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
- basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
- List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
- for (WrkMastSta wrkMastSta : wrkMastStaList){
- List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
- if (staNos.contains(wrkMastSta.getStaStart())) {//闈炲叆搴撳彛锛堝嚭搴撳彛锛夐檺鍒�
- continue;
- }
- boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
- wrkEnable = true;
- if (sign){
- wrkMastSta.setWrkSts(1);
- try{
- wrkMastStaMapper.updateById(wrkMastSta);
- log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
- }catch (Exception e){
- log.error("鏇存柊灏忚溅浠诲姟澶辫触");
- }
- rgvThread.setPakMk(false);
- rgvThread.setPakOut(false);
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
- if (signMap){
- return wrkEnable;
-// break;
- }else {
- log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
- Thread.sleep(500);
- }
- } else {
- log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
- Thread.sleep(500);
- }
- break;
- }
-
- }
-
- }
- }catch (Exception e){
- log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
- }
- return wrkEnable;
- }
+// public synchronized boolean rgvRunWrkMastFullSta() {
+// boolean wrkEnable = false;
+// try{
+// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>());
+// for (BasRgvMap rgvSlave:basRgvMaps) {
+// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo());
+// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+// if (rgvProtocol == null) {
+// continue;
+// }else {
+// rgvProtocol = rgvProtocol.clone();
+// }
+// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo());
+// if (basRgv == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo());
+// continue;
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍏ュ簱鍙栬揣
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded1ing()
+// && rgvProtocol.getTaskNo1() == 0
+// && rgvThread.isPakMk()
+// && rgvThread.isPakIn()
+// ) {
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (basRgvMap == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+// continue;
+// }
+// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+// for (WrkMastSta wrkMastSta : wrkMastStaList){
+// List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+// if (!staNos.contains(wrkMastSta.getStaStart())) {
+// continue;
+// }
+// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// wrkEnable = true;
+// if (sign){
+// wrkMastSta.setWrkSts(1);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// rgvThread.setPakMk(false);
+// rgvThread.setPakOut(false);
+// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+// if (signMap){
+// return wrkEnable;
+//// break;
+// }else {
+// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// } else {
+// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// break;
+// }
+// }
+//
+// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 鍑哄簱鍙栬揣
+// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+// && rgvProtocol.getModeType() == RgvModeType.AUTO
+// && !rgvProtocol.isLoaded2ing()
+// && rgvProtocol.getTaskNo2() == 0
+// && rgvThread.isPakMk()
+// && rgvThread.isPakOut()
+// ){
+// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo());
+// if (basRgvMap == null) {
+// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo());
+// continue;
+// }
+// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
+// for (WrkMastSta wrkMastSta : wrkMastStaList){
+// List<Integer> staNos = Arrays.asList(1042, 1105, 1038, 1036, 2037);//鍏ュ簱鍙�
+// if (staNos.contains(wrkMastSta.getStaStart())) {//闈炲叆搴撳彛锛堝嚭搴撳彛锛夐檺鍒�
+// continue;
+// }
+// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂
+// wrkEnable = true;
+// if (sign){
+// wrkMastSta.setWrkSts(1);
+// try{
+// wrkMastStaMapper.updateById(wrkMastSta);
+// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛");
+// }catch (Exception e){
+// log.error("鏇存柊灏忚溅浠诲姟澶辫触");
+// }
+// rgvThread.setPakMk(false);
+// rgvThread.setPakOut(false);
+// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526");
+// if (signMap){
+// return wrkEnable;
+//// break;
+// }else {
+// log.error("璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// } else {
+// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo());
+// Thread.sleep(500);
+// }
+// break;
+// }
+//
+// }
+//
+// }
+// }catch (Exception e){
+// log.error("鎵ц灏忚溅鎼繍浠诲姟涓嬪彂澶辫触");
+// }
+// return wrkEnable;
+// }
/**
* 灏忚溅棰勮皟搴�
*/
@@ -3088,7 +3509,6 @@
// 鏍规嵁杈撻�佺嚎plc閬嶅巻
for (DevpSlave devp : slaveProperties.getDevp()) {
// 閬嶅巻鍏ュ簱鍙� 鍏ュ簱棰勮皟搴�
- for()
List<Integer> staNos = Arrays.asList(1042, 1043, 1105, 1104);
for (Integer staNo : staNos) {
SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
@@ -3098,7 +3518,7 @@
rgvCommand.setRgvNo((int) rgvProtocol.getRgvNo()); // RGV缂栧彿
rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo1(9999); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 绉诲姩
rgvCommand.setEndStaNo1(0); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
if(staNo == 1042 || staNo ==1043){
rgvCommand.setTargetPosition1(1042); //宸ヤ綅1鐩爣绔欑偣
@@ -3359,29 +3779,30 @@
/*
* 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔�
* */
- public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){
+ public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta,Short direction){
try{
- int startSta = wrkMastSta.getStaStart();
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
RgvCommand rgvCommand = new RgvCommand();
boolean pakIn1 = true;
boolean pakIn2 = true;
rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
- if(wrkMastSta.getWrkSts() == 1){//鍙栬揣
- if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
+ if(wrkMastSta.getWrkSts() == 0){//鍙栬揣
+ if(wrkMastSta.getWorkSta() == 2){//鍑哄簱RGV鍙栬揣
rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition2(wrkMastSta.getStaStart()); //宸ヤ綅2鐩爣绔欑偣
+ rgvCommand.setDirection2(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
pakIn1 = false;
}else{ //鍏ュ簱RGV鍙栬揣
rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaStart()); //宸ヤ綅1鐩爣绔欑偣
+ rgvCommand.setDirection1(direction);
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
}
if(!pakIn1){
@@ -3403,18 +3824,18 @@
}
}
if(wrkMastSta.getWrkSts() == 2) {//鏀捐揣
- if((startSta >= 1001 && startSta <= 1035) || (startSta >= 2001 && startSta <= 2030)){//鍑哄簱RGV鍙栬揣
+ if((wrkMastSta.getWorkSta() == 2)){ //宸ヤ綅2浠诲姟鏀捐揣
rgvCommand.setAckFinish2(false); // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo2(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅2宸ヤ綔鍙�
- rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setTaskStatus2(RgvTaskStatusType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣
rgvCommand.setEndStaNo2(wrkMastSta.getWrkEnd()); //宸ヤ綅2 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition2(wrkMastSta.getStaEnd()); //宸ヤ綅2鐩爣绔欑偣
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
pakIn2 = false;
- }else{ //鍏ュ簱RGV鍙栬揣
+ }else{ //宸ヤ綅1浠诲姟鏀捐揣
rgvCommand.setAckFinish1(false); // 宸ヤ綅1浠诲姟瀹屾垚纭浣�
rgvCommand.setTaskNo1(Math.toIntExact(wrkMastSta.getWrkNo())); // 宸ヤ綅1宸ヤ綔鍙�
- rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐�
+ rgvCommand.setTaskStatus1(RgvTaskStatusType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣
rgvCommand.setEndStaNo1(wrkMastSta.getWrkEnd()); //宸ヤ綅1 鏀捐揣鍚庤鍘荤殑浣嶇疆
rgvCommand.setTargetPosition1(wrkMastSta.getStaEnd()); //宸ヤ綅1鐩爣绔欑偣
rgvCommand.setCommand(true); //宸ヤ綅1浠诲姟纭
@@ -3543,6 +3964,37 @@
// }
// }
+ /**
+ * 鍙栨斁鍙栬矾寰勮绠�
+ */
+ public synchronized boolean rgvCalcDistance(Integer rgvNo, Integer outStn, Integer inStn){
+ try {
+ // 灏忚溅褰撳墠浣嶇疆
+ BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvNo);
+ Integer currPos = basRgvMap.getNowRoute(); // 鎴栬�呯敤 rgvProtocol.getRgvPosI()
+
+ if(currPos == null || outStn == null || inStn == null){
+ return false; // 鏃犳晥鏁版嵁鐩存帴鏀惧純
+ }
+
+ // 璁$畻涓ゆ璺濈
+ List<Integer> routeToOut = RouteUtils.getRouteDis(currPos, outStn);
+ List<Integer> routeToIn = RouteUtils.getRouteDis(currPos, inStn);
+
+ int distOut = (routeToOut != null) ? routeToOut.size() : Integer.MAX_VALUE;
+ int distIn = (routeToIn != null) ? routeToIn.size() : Integer.MAX_VALUE;
+
+ // 璋冭瘯鏃ュ織
+ log.info("RGV璺濈璁$畻: currPos={}, outStn={}, distOut={}, inStn={}, distIn={}",
+ currPos, outStn, distOut, inStn, distIn);
+
+ return distOut < distIn; // 鏀捐揣鐐规洿杩� 鈫� true
+ } catch (Exception e) {
+ log.error("RGV璺緞璺濈璁$畻寮傚父", e);
+ return false;
+ }
+ }
+
/*
* 灏忚溅澶嶄綅
* */
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index 67ea7ab..c43386e 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -2,8 +2,7 @@
import com.zy.core.enums.RouteCollectCountType;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
import static java.util.stream.Collectors.toList;
@@ -29,14 +28,33 @@
// add(116);add(117);
}};
-// 姝e簭
- public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
- add(161);add(157);add(153);add(149);add(119);add(124);add(113);add(112);add(107);add(106);add(101);add(100);
- }};
-// 鍙嶅簭
- public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
- add(100);add(101);add(106);add(107);add(112);add(113);add(124);add(119);add(149);add(153);add(157);add(161);
- }};
+ // RGV杞ㄩ亾姝e簭锛堜粠涓婂埌涓嬶級
+ public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = Arrays.asList(
+ 1004,1007,1010,1014,1018,1021,1024,1028,1031,1035
+ );
+
+ // 鍙嶅簭锛堢洿鎺ュ弽杞敓鎴愶級
+ public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<>(TRACK_POSITION_POSITIVE_SEQUENCE);
+ static {
+ Collections.reverse(TRACK_POSITION_REVERSE_SEQUENCE);
+ }
+
+ // 杞ㄩ亾鏄犲皠锛堟妸鏄犲皠绔欑偣鏇挎崲鎴愪富绔欑偣锛�
+ public static final Map<Integer, Integer> SITE_MAPPING = new HashMap<>();
+ static {
+ SITE_MAPPING.put(1042, 1004);
+ SITE_MAPPING.put(1105, 1007);
+ SITE_MAPPING.put(1106, 1010);
+ SITE_MAPPING.put(1041, 1024);
+ SITE_MAPPING.put(1038, 1028);
+ SITE_MAPPING.put(1036, 1035);
+ }
+
+ // 鑾峰彇杞ㄩ亾鍒楄〃涓疄闄呯珯鐐�
+ private static Integer mapSite(Integer site) {
+ return SITE_MAPPING.getOrDefault(site, site);
+ }
+
public static String zerofill(String msg, Integer count){
if (msg.length() == count){
@@ -51,6 +69,7 @@
return msgBuilder.toString();
}
}
+
/*
* 鑾峰彇骞叉秹鏈�杩滅珯鐐�
* */
@@ -75,6 +94,30 @@
return staFall.get(indexNo);
}
+ // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎
+ public static List<Integer> getRouteDis(Integer groupStart, Integer groupEnd) {
+ groupStart = mapSite(groupStart);
+ groupEnd = mapSite(groupEnd);
+
+ int startIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupStart);
+ int endIdx = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(groupEnd);
+
+ if (startIdx == -1 || endIdx == -1) return null;
+
+ boolean forward = startIdx < endIdx;
+ List<Integer> route = forward ? TRACK_POSITION_POSITIVE_SEQUENCE : TRACK_POSITION_REVERSE_SEQUENCE;
+
+ List<Integer> result = new ArrayList<>();
+ boolean addFlag = false;
+ for (Integer s : route) {
+ s = mapSite(s);
+ if (s.equals(groupStart)) addFlag = true;
+ if (addFlag) result.add(s);
+ if (s.equals(groupEnd)) break;
+ }
+ return result;
+ }
+
// 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎闆嗗悎
public static List<Integer> getRoute(Integer groupStart,Integer groupEnd){
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 4e09342..9a5ab61 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -123,13 +123,8 @@
// RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂
try{
- //RGV灏忚溅鍑哄叆鍙d笅鍙�
+ //RGV灏忚溅鍑哄叆搴撳彇璐т笅鍙�
mainService.rgvIoExecute(11);
- //灏忚溅鍙栬揣涓嬪彂
- mainService.rgvRunWrkMastFullSta();
- //灏忚溅鏀捐揣浠诲姟鏇存柊
- //灏忚溅棰勮皟搴�
- mainService.rgvPreScheduling();
}catch (Exception e){
log.error("RGV ===>> 灏忚溅浠诲姟浣滀笟涓嬪彂寮傚父"+e);
}
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index eb177fa..8e1746f 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -26,6 +26,9 @@
public RgvModeType modeType;
+ private transient Long loadingStartTime;
+
+
/**
* RGV褰撳墠鐘舵�佸伐浣�1
* 0锛氱┖闂诧紝鏃犱换鍔�
@@ -296,12 +299,16 @@
public Integer getRgvPosI(){
//闇�瑕佹牴鎹幇鍦烘敼閫� 鏍规嵁璇诲埌鐨勫�艰幏鍙栧搴旂珯鐐逛綅缃�
Map<Short,Integer> map = new HashMap<>();
- map.put((short) 1,100);map.put((short) 2,101);
- map.put((short) 3,106);map.put((short) 4,107);
- map.put((short) 5,112);map.put((short) 6,113);
- map.put((short) 7,124); map.put((short) 8,119);
- map.put((short) 9,149);map.put((short) 10,153);
- map.put((short) 11,157);map.put((short) 12,161);
+ map.put((short) 1,1004);map.put((short) 2,1007);
+ map.put((short) 3,1010);map.put((short) 4,1014);
+ map.put((short) 5,1018);map.put((short) 6,1021);
+ map.put((short) 7,1024); map.put((short) 8,1028);
+ map.put((short) 9,1031);map.put((short) 10,1035);
+ map.put((short) 11,2003);map.put((short) 12,2006);
+ map.put((short) 13,2009);map.put((short) 14,2012);
+ map.put((short) 15,2015);map.put((short) 16,2018);
+ map.put((short) 17,2021);map.put((short) 18,2024);
+ map.put((short) 19,2027);map.put((short) 20,2030);
if (RgvPos==null) return 0;
return map.get(RgvPos);
diff --git a/src/main/java/com/zy/core/thread/RgvThread.java b/src/main/java/com/zy/core/thread/RgvThread.java
index 67269ed..65736ca 100644
--- a/src/main/java/com/zy/core/thread/RgvThread.java
+++ b/src/main/java/com/zy/core/thread/RgvThread.java
@@ -57,6 +57,8 @@
private boolean PakIn = true;
//鍑哄簱鏍囪
private boolean PakOut = true;
+ //鏍规嵁璺濈璺宠繃鍙栬揣
+ private boolean PakRgv = true;
public RgvThread(RgvSlave slave) {
this.slave = slave;
@@ -119,6 +121,30 @@
command2.setCommand(false);
write2(command2);
break;
+ case 7: //宸ヤ綅1鍙栬揣纭
+ RgvCommand command3 = (RgvCommand) task.getData();
+ if (null == command3) {
+ command3 = new RgvCommand();
+ }
+ command3.setRgvNo(slave.getId()); // RGV缂栧彿
+ command3.setAckFinish1(true); // 浠诲姟瀹屾垚纭浣�
+ command3.setTaskStatus1(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
+ command3.setTargetPosition1( 0); // 婧愮珯
+ command3.setCommand(false);
+ write1(command3);
+ break;
+ case 8 :
+ RgvCommand command4 = (RgvCommand) task.getData();
+ if (null == command4) {
+ command4 = new RgvCommand();
+ }
+ command4.setRgvNo(slave.getId()); // RGV缂栧彿
+ command4.setAckFinish2(true); // 浠诲姟瀹屾垚纭浣�
+ command4.setTaskStatus2(RgvTaskStatusType.NONE); // 浠诲姟妯″紡
+ command4.setTargetPosition2( 0); // 灏忚溅鐩爣绔欐竻闆�
+ command4.setCommand(false);
+ write2(command4);
+ break;
// 鍥炲師鐐� 閬胯
case 9:
// RgvCommand commandAvoidanceXY = (RgvCommand) task.getData();
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 6997839..493ed89 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -74,6 +74,31 @@
order by line_number,id
</select>
+ <select id="selectNoInterfere" resultMap="BaseResultMap">
+ select * from asr_wrk_mast_sta
+ where 1=1
+ and (sta_start in
+ <foreach item="item" collection="staStarts" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ or sta_start = 0
+ )
+ and (sta_end in
+ <foreach item="item" collection="staEnds" index="index" separator="," open="(" close=")">
+ #{item}
+ </foreach>
+ or sta_end = 0
+ )
+ and wrk_sts=0
+ and wrk_no = #{workNo}
+ order by line_number,id
+ </select>
+ <select id="selectByWorkSta" resultMap="BaseResultMap">
+ select *
+ where work_sta = #{workSta}
+ and rgv_no = #{rgvNo}
+ </select>
+
<select id="selectAllWrkCount" resultType="java.lang.Integer">
select count(1) from asr_wrk_mast_sta
where 1=1
--
Gitblit v1.9.1