From cc4b841c47e31407801ceb3c158edc2d5937b96e Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期五, 07 六月 2024 15:15:28 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 836 +++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 662 insertions(+), 174 deletions(-)
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 e77aeab..b61c654 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -109,6 +109,7 @@
@Value("${wms.url}")
private String wmsUrl;
+ private WrkMastSplitTwinServiceImpl wrkMastSplitTwinService;
/**
* 缁勬墭
@@ -1231,131 +1232,255 @@
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
- // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
+ switch (crnSlave.getId()){
+ case 1:
+ case 2:
+ crnStnToOutStnOne(crnStn);
+ continue;
+ case 3:
+ case 4:
+ case 5:
+ crnStnToOutStnTwo(crnStn,1);
+ continue;
+ case 6:
+ case 7:
+ crnStnToOutStnThree(crnStn);
+ continue;
+ default:
+ break;
}
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
- // 鏌ヨ宸ヤ綔妗�
- WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
- if (wrkMast == null) {
- continue;
+ }
+ }
+ }
+ /**
+ * 鍫嗗灈鏈虹珯鍑哄簱鍒板嚭搴撶珯
+ */
+ public synchronized boolean crnStnToOutStnOne(CrnSlave.CrnStn crnStn ) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ return false;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
+ // 鏌ヨ宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
+ if (wrkMast == null) {
+ return false;
+ }
+ // 鍒ゆ柇宸ヤ綔妗f潯浠�
+ if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
+ return false;
+ }
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
+ return false;
+ }
+
+ WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue());
+ if (!Cools.isEmpty(wrkMastCrn) && wrkMastCrn.getWrkSts().equals(12L)){
+ wrkMast = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNo().intValue());
+ } else {
+ return false;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
+ && crnProtocol.statusType == CrnStatusType.WAITING
+ && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther());
+ if (staProtocolOther == null) {
+ return false;
+ } else {
+ staProtocolOther = staProtocolOther.clone();
}
- // 鍒ゆ柇宸ヤ綔妗f潯浠�
- if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
- continue;
+ if (staProtocolOther.isAutoing() && staProtocolOther.isLoading() && (staProtocolOther.getWorkNo() == 0 || staProtocolOther.getStaNo() == null)) {
+// WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(wrkMast.getWrkNo());
+
+
+ WrkMast wrkMastOne = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoOne().intValue());
+ WrkMast wrkMastTwo = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
+ WrkMast wrkMast1 = null;
+ WrkMast wrkMast2 = null;
+ if (Utils.getRow(wrkMastOne.getSourceLocNo()) == wrkMast.getCrnNo()*4){
+ wrkMast1 = wrkMastTwo;
+ wrkMast2 = wrkMastOne;
+ }else {
+ wrkMast2 = wrkMastTwo;
+ wrkMast1 = wrkMastOne;
+ }
+
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocolOther.setWorkNo(Cools.isEmpty(wrkMast1.getWorkNoOther())? wrkMast1.getWrkNo():wrkMast1.getWorkNoOther());
+ staProtocolOther.setStaNo(wrkMast1.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocolOther))) {
+ return false;
+ }
+
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(Cools.isEmpty(wrkMast2.getWorkNoOther())? wrkMast2.getWrkNo():wrkMast2.getWorkNoOther());
+// staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
+ staProtocol.setStaNo(wrkMast2.getStaNo());
+ if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ return false;
+ }
+ boolean sign = true;
+
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ wrkMastCrn.setWrkSts(14L);
+ if (wrkMastCrnMapper.updateById(wrkMastCrn) != 0) {
+ } else {
+ sign = false;
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ wrkMastOne.setWrkSts(14L);
+ wrkMastOne.setCrnEndTime(new Date());
+ if (wrkMastMapper.updateById(wrkMastOne) != 0) {
+ } else {
+ sign = false;
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ wrkMastTwo.setWrkSts(14L);
+ wrkMastTwo.setCrnEndTime(new Date());
+ if (wrkMastMapper.updateById(wrkMastTwo) != 0) {
+ } else {
+ sign = false;
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+
+ if (sign){
+ // 澶嶄綅鍫嗗灈鏈�
+ crnThread.setResetFlag(true);
+ return true;
+ }
}
- // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ }
+ }
+ }catch (Exception e){
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [鍑哄簱绔�:{}]", crnStn.getStaNo());
+ }
+ return false;
+ }
+ public synchronized boolean crnStnToOutStnTwo(CrnSlave.CrnStn crnStn ,Integer conStation) {
+ try{
+ Date now = new Date();
+ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ return false;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
+ // 鏌ヨ宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
+ if (wrkMast == null) {
+ return false;
+ }
+ // 鍒ゆ柇宸ヤ綔妗f潯浠�
+ if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
+ return false;
+ }
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (conStation==1){
if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
// 绉诲姩涓�
- continue;
- }
- if (crnProtocol.getCrnNo()<=2){
- WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue());
- if (!Cools.isEmpty(wrkMastCrn) && wrkMastCrn.getWrkSts().equals(12L)){
- wrkMast = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNo().intValue());
- }
+ return false;
}
// 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
&& crnProtocol.statusType == CrnStatusType.WAITING
- && crnProtocol.forkPosType == CrnForkPosType.HOME) {
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- if (crnProtocol.getCrnNo()<=2){
-
- StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther());
- if (staProtocolOther == null) {
- continue;
- } else {
- staProtocolOther = staProtocolOther.clone();
+ && crnProtocol.forkPosType == CrnForkPosType.HOME
+ && crnProtocol.getLoaded()==0) {
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(wrkMast.getCrnNo(), conStation, null, 2, 3);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",wrkMast.getCrnNo(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",conStation,2,3);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ if (wrkMastSplitTwin.getWrkNo()!=wrkMast.getWrkNo().longValue()){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={},宸ヤ綔浠诲姟鍙�={},鎵ц浠诲姟鍙�={}",wrkMast.getCrnNo(),"宸ヤ綔浠诲姟涓庢墽琛屼换鍔′笉鍖归厤",conStation,2,3,wrkMast.getWrkNo(),wrkMastSplitTwin.getWrkNo());
+ return false;
}
- if (staProtocolOther.isAutoing() && staProtocolOther.isLoading() && (staProtocolOther.getWorkNo() == 0 || staProtocolOther.getStaNo() == null)) {
- WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(wrkMast.getWrkNo());
- if (Cools.isEmpty(wrkMastCrn)){
- continue;
- }
-
- WrkMast wrkMastOne = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoOne().intValue());
- WrkMast wrkMastTwo = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
- WrkMast wrkMast1 = null;
- WrkMast wrkMast2 = null;
- if (Utils.getRow(wrkMastOne.getSourceLocNo()) == wrkMast.getCrnNo()*4){
- wrkMast1 = wrkMastTwo;
- wrkMast2 = wrkMastOne;
- }else {
- wrkMast2 = wrkMastTwo;
- wrkMast1 = wrkMastOne;
- }
-
- // 涓嬪彂绔欑偣淇℃伅
- staProtocolOther.setWorkNo(Cools.isEmpty(wrkMast1.getWorkNoOther())? wrkMast1.getWrkNo():wrkMast1.getWorkNoOther());
- staProtocolOther.setStaNo(wrkMast1.getStaNo());
- if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocolOther))) {
- continue;
- }
-
- // 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(Cools.isEmpty(wrkMast2.getWorkNoOther())? wrkMast2.getWrkNo():wrkMast2.getWorkNoOther());
-// staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
- staProtocol.setStaNo(wrkMast2.getStaNo());
- if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
- continue;
- }
- boolean sign = true;
-
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMastCrn.setWrkSts(14L);
- if (wrkMastCrnMapper.updateById(wrkMastCrn) != 0) {
- } else {
- sign = false;
- log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
- }
-
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMastOne.setWrkSts(14L);
- wrkMastOne.setCrnEndTime(new Date());
- if (wrkMastMapper.updateById(wrkMastOne) != 0) {
- } else {
- sign = false;
- log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
- }
-
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMastTwo.setWrkSts(14L);
- wrkMastTwo.setCrnEndTime(new Date());
- if (wrkMastMapper.updateById(wrkMastTwo) != 0) {
- } else {
- sign = false;
- log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
- }
-
- if (sign){
- // 澶嶄綅鍫嗗灈鏈�
- crnThread.setResetFlag(true);
- }
- }
-
- }else {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
// 涓嬪彂绔欑偣淇℃伅
staProtocol.setWorkNo(wrkMast.getWrkNo());
staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
- continue;
+ return false;
}
-
// 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
wrkMast.setWrkSts(14L);
- wrkMast.setCrnEndTime(new Date());
+ wrkMast.setCrnEndTime(now);
if (wrkMastMapper.updateById(wrkMast) != 0) {
- // 澶嶄綅鍫嗗灈鏈�
- crnThread.setResetFlag(true);
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",wrkMast.getCrnNo(),"淇敼鎵ц妗f澶辫触",conStation,2,3);
+ }
+ } else {
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }else if (conStation==2){
+ if (crnProtocol.statusTypeTwo == CrnStatusType.FETCHING || crnProtocol.statusTypeTwo == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
+ return false;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNoTwo().equals(wrkMast.getWrkNo().shortValue())
+ && crnProtocol.statusTypeTwo == CrnStatusType.WAITING
+ && crnProtocol.forkPosTypeTwo == CrnForkPosType.HOME
+ && crnProtocol.getLoadedTwo()==0) {
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(wrkMast.getCrnNo(), conStation, null, 2, 3);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",wrkMast.getCrnNo(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",conStation,2,3);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ if (wrkMastSplitTwin.getWrkNo()!=wrkMast.getWrkNo().longValue()){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={},宸ヤ綔浠诲姟鍙�={},鎵ц浠诲姟鍙�={}",wrkMast.getCrnNo(),"宸ヤ綔浠诲姟涓庢墽琛屼换鍔′笉鍖归厤",conStation,2,3,wrkMast.getWrkNo(),wrkMastSplitTwin.getWrkNo());
+ return false;
+ }
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
+ if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(5, staProtocol))) {
+ return false;
+ }
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ wrkMast.setWrkSts(14L);
+ wrkMast.setCrnEndTime(now);
+ if (wrkMastMapper.updateById(wrkMast) != 0) {
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlagTwo(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",wrkMast.getCrnNo(),"淇敼鎵ц妗f澶辫触",conStation,2,3);
+ }
} else {
log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
}
@@ -1363,7 +1488,66 @@
}
}
}
+ }catch (Exception e){
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [鍑哄簱绔�:{}]", crnStn.getStaNo());
}
+ return false;
+ }
+ public synchronized boolean crnStnToOutStnThree(CrnSlave.CrnStn crnStn ) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ return false;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
+ // 鏌ヨ宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
+ if (wrkMast == null) {
+ return false;
+ }
+ // 鍒ゆ柇宸ヤ綔妗f潯浠�
+ if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
+ return false;
+ }
+ // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) {
+ // 绉诲姩涓�
+ return false;
+ }
+ // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue())
+ && crnProtocol.statusType == CrnStatusType.WAITING
+ && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 涓嬪彂绔欑偣淇℃伅
+ staProtocol.setWorkNo(wrkMast.getWrkNo());
+ staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
+ if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+ return false;
+ }
+
+ // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
+ wrkMast.setWrkSts(14L);
+ wrkMast.setCrnEndTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast) != 0) {
+ // 澶嶄綅鍫嗗灈鏈�
+ crnThread.setResetFlag(true);
+ return true;
+ } else {
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [鍑哄簱绔�:{}]", crnStn.getStaNo());
+ }
+ return false;
}
/**
@@ -1373,55 +1557,14 @@
for (CrnSlave crnSlave : slaveProperties.getCrn()) {
// 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯
for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) {
- // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅
- DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
- StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
- if (staProtocol == null) {
- continue;
- } else {
- staProtocol = staProtocol.clone();
- }
- if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) {
- // 鏌ヨ宸ヤ綔妗�
- WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId());
- if (wrkMast == null) {
+ switch (crnSlave.getId()){
+ case 3:
+ case 4:
+ case 5:
+ crnStnToOutStnTwo(crnStn,2);
continue;
- }
- // 鍒ゆ柇宸ヤ綔妗f潯浠�
- if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) {
- continue;
- }
- // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗�
- CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo());
- CrnProtocol crnProtocol = crnThread.getCrnProtocol();
- if (crnProtocol.statusTypeTwo == CrnStatusType.FETCHING || crnProtocol.statusTypeTwo == CrnStatusType.PUTTING) {
- // 绉诲姩涓�
- continue;
- }
-
- // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
- if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNoTwo().equals(wrkMast.getWrkNo().shortValue())
- && crnProtocol.statusTypeTwo == CrnStatusType.WAITING
- && crnProtocol.forkPosTypeTwo == CrnForkPosType.HOME) {
-
- // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
- // 涓嬪彂绔欑偣淇℃伅
- staProtocol.setWorkNo(wrkMast.getWrkNo());
- staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo()));
- if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
- continue;
- }
-
- // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触
- wrkMast.setWrkSts(14L);
- wrkMast.setCrnEndTime(new Date());
- if (wrkMastMapper.updateById(wrkMast) != 0) {
- // 澶嶄綅鍫嗗灈鏈�
- crnThread.setResetFlagTwo(true);
- } else {
- log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
- }
- }
+ default:
+ break;
}
}
}
@@ -3188,44 +3331,69 @@
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
+
public synchronized void storeFinished() {
for (CrnSlave crn : slaveProperties.getCrn()) {
+ switch (crn.getId()){
+ case 1:
+ case 2:
+ storeFinishedExecuteOne(crn);
+ continue;
+ case 3:
+ case 4:
+ case 5:
+ storeFinishedExecuteTwo(crn);
+ continue;
+ case 6:
+ case 7:
+ storeFinishedExecuteThree(crn);
+ continue;
+ default:
+ continue;
+ }
+ }
+ }
+ public synchronized boolean storeFinishedExecuteOne(CrnSlave crn) {
+ try{
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) {
- continue;
+ return false;
+ }
+ if (crnProtocol.modeType != CrnModeType.AUTO){
+ return false;
}
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
if (crnProtocol.getTaskNo() == 32222) {
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
- } else if (crnProtocol.getCrnNo()<3) {
+ } else {
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue());
if (wrkMastCrn == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
- continue;
+ return false;
}
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
if (wrkMast == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
- continue;
+ return false;
}
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
WrkMast wrkMastOther = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue());
if (wrkMastOther == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
- continue;
+ return false;
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
if (wrkMastCrn.getWrkSts() == 3 || (wrkMastCrn.getWrkSts() == 12 && wrkMastCrn.getIoType() == 11)) {
wrkMastCrn.setWrkSts(4L);
} else {
- continue;
+ return false;
}
Date now = new Date();
wrkMastCrn.setModiTime(now);
@@ -3241,19 +3409,134 @@
if (wrkMastCrnMapper.updateById(wrkMastCrn) > 0 && wrkMastMapper.updateById(wrkMast) > 0 && wrkMastMapper.updateById(wrkMastOther) > 0 ) {
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
+ return true;
}
+ }
+ }
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄伐浣嶄竴瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),1);
+ }
+ return false;
+ }
+ public synchronized boolean storeFinishedExecuteTwo(CrnSlave crn) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ return false;
+ }
+ if (crnProtocol.modeType != CrnModeType.AUTO){
+ return false;
+ }
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ if (crnProtocol.getTaskNo() == 32222) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ return true;
} else {
// 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
if (wrkMast == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
- continue;
+ return false;
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
wrkMast.setWrkSts(4L);
} else {
- continue;
+ return false;
+ }
+ Date now = new Date();
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ // 鍫嗗灈鏈哄浣�
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(crn.getId(), 1, null, 2, 3);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",1,2,3);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ if (wrkMastSplitTwin.getWrkNo()!=wrkMast.getWrkNo().longValue()){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={},宸ヤ綔浠诲姟鍙�={},鎵ц浠诲姟鍙�={}",crn.getId(),"宸ヤ綔浠诲姟涓庢墽琛屼换鍔′笉鍖归厤",1,2,3,wrkMast.getWrkNo(),wrkMastSplitTwin.getWrkNo());
+ return false;
+ }
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼鎵ц妗f澶辫触",1,2,3);
+ }
+ }else {
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼宸ヤ綔妗f澶辫触锛�",1,2,3);
+ }
+ }
+ return false;
+ }
+ }else if (crnProtocol.statusType == CrnStatusType.SEPARATE_WAITING && crnProtocol.getTaskNo() != 0 && crnProtocol.getLoaded()==1){
+ if (crnProtocol.getTaskNo() == 32222) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ return true;
+ } else {
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(crn.getId(), 1, null, 1, 1);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",1,1,1);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ Date now = new Date();
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈烘斁璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼鎵ц妗f澶辫触",1,2,3);
+ }
+ }
+ }
+ }
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄伐浣嶄竴瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),1);
+ }
+ return false;
+ }
+ public synchronized boolean storeFinishedExecuteThree(CrnSlave crn) {
+ try{
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ return false;
+ }
+ if (crnProtocol.modeType != CrnModeType.AUTO){
+ return false;
+ }
+ // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
+ if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
+ if (crnProtocol.getTaskNo() == 32222) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlag(true);
+ } else {
+ // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
+ if (wrkMast == null) {
+ log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
+ return false;
+ }
+ // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
+ if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
+ wrkMast.setWrkSts(4L);
+ } else {
+ return false;
}
Date now = new Date();
wrkMast.setCrnEndTime(now);
@@ -3262,25 +3545,43 @@
if (wrkMastMapper.updateById(wrkMast) > 0) {
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
+ return true;
}
}
-
}
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄伐浣嶄竴瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),1);
}
+ return false;
}
+
/**
* 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
*/
public synchronized void storeFinishedTwo() {
for (CrnSlave crn : slaveProperties.getCrn()) {
- if (crn.getId()<3 || crn.getId()>5){
- continue;
+ switch (crn.getId()){
+ case 3:
+ case 4:
+ case 5:
+ storeFinishedTwoExecute(crn);
+ continue;
+ default:
+ continue;
}
+ }
+ }
+
+ public synchronized boolean storeFinishedTwoExecute(CrnSlave crn) {
+ try{
// 鑾峰彇鍫嗗灈鏈轰俊鎭�
CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
CrnProtocol crnProtocol = crnThread.getCrnProtocol();
if (crnProtocol == null) {
- continue;
+ return false;
+ }
+ if (crnProtocol.modeType != CrnModeType.AUTO){
+ return false;
}
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.statusTypeTwo == CrnStatusType.WAITING && crnProtocol.getTaskNoTwo() != 0) {
@@ -3292,26 +3593,73 @@
WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNoTwo().intValue());
if (wrkMast == null) {
log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNoTwo());
- continue;
+ return false;
}
// 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚
if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)) {
wrkMast.setWrkSts(4L);
} else {
- continue;
+ return false;
}
Date now = new Date();
wrkMast.setCrnEndTime(now);
wrkMast.setModiTime(now);
- // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
- if (wrkMastMapper.updateById(wrkMast) > 0) {
- // 鍫嗗灈鏈哄浣�
- crnThread.setResetFlagTwo(true);
+ // 鍫嗗灈鏈哄浣�
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(crn.getId(), 2, null, 2, 3);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",2,2,3);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ if (wrkMastSplitTwin.getWrkNo()!=wrkMast.getWrkNo().longValue()){
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={},宸ヤ綔浠诲姟鍙�={},鎵ц浠诲姟鍙�={}",crn.getId(),"宸ヤ綔浠诲姟涓庢墽琛屼换鍔′笉鍖归厤",1,2,3,wrkMast.getWrkNo(),wrkMastSplitTwin.getWrkNo());
+ return false;
+ }
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastMapper.updateById(wrkMast) > 0) {
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlagTwo(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼鎵ц妗f澶辫触",2,2,3);
+ }
+ }else {
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼宸ヤ綔妗f澶辫触锛�",2,2,3);
+ }
+ }
+ return false;
+ }
+ }else if (crnProtocol.statusTypeTwo == CrnStatusType.SEPARATE_WAITING && crnProtocol.getTaskNoTwo() != 0 && crnProtocol.getLoadedTwo()==1){
+ if (crnProtocol.getTaskNoTwo() == 32222) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlagTwo(true);
+ } else {
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinMapper.getWrkMastSplitTwin(crn.getId(), 2, null, 1, 1);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",2,1,1);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ Date now = new Date();
+ wrkMastSplitTwin.setWrkSts(wrkMastSplitTwin.getWrkSts()+1);
+ wrkMastSplitTwin.setUpdateTime(now);
+ // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+ if (wrkMastSplitTwinService.updateById(wrkMastSplitTwin)) {
+ // 鍫嗗灈鏈哄浣�
+ crnThread.setResetFlagTwo(true);
+ return true;
+ }else {
+ log.error("鍫嗗灈鏈哄彇璐у畬鎴愮瓑寰呯‘璁ゅ紓甯�,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={},宸ヤ綔鐘舵��={}",crn.getId(),"淇敼鎵ц妗f澶辫触",2,2,3);
+ }
}
}
-
}
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
}
+ return false;
}
/**
@@ -5884,5 +6232,145 @@
public synchronized boolean steIoExecute(Integer sign) {
return false;
}
+ /**
+ * 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+ */
+ public synchronized void crnIoExecuteTwoExecute() {
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ try{
+ switch (crn.getId()){
+ case 3:
+ case 4:
+ case 5:
+ crnWrkMastSplitTwinExecute(crn);
+ continue;
+ default:
+ continue;
+ }
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄嚭鍏ュ簱鎵ц浠诲姟涓嬪彂鎶ラ敊,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={}",crn.getId(),e.getMessage());
+ }
+ }
+ }
+
+
+ public synchronized boolean crnWrkMastSplitTwinExecute(CrnSlave crn){
+ try{
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ return false;
+ }
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ if (basCrnp == null) {
+ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
+ return false;
+ }
+
+
+ int[] sign = new int[]{0,0};
+ // 鍙湁褰撳爢鍨涙満鑷姩鏃舵墠缁х画鎵ц
+ if (crnProtocol.getModeType() == CrnModeType.AUTO) {
+ // 鍙湁褰撳爢鍨涙満宸ヤ綅1鍙栬揣鎴栬�呮湁鐗� 骞朵笖 宸ヤ綅2鏃犱换鍔℃椂鎵嶇户缁墽琛�
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE
+ && crnProtocol.getTaskNo() == 0
+ && crnProtocol.getLoaded() == 0
+ && crnProtocol.getForkPos() == 0) {
+ sign[0] = 1;
+ sign[1] = 1;
+ } else if (crnProtocol.getStatusTypeTwo() == CrnStatusType.IDLE
+ && crnProtocol.getTaskNoTwo() == 0
+ && crnProtocol.getLoadedTwo() == 0
+ && crnProtocol.getForkPosTwo() == 0){
+ sign[0] = 1;
+ sign[1] = 2;
+ } else if (crnProtocol.getStatusType() == CrnStatusType.SEPARATE_IDLE
+ && crnProtocol.getTaskNo() == 0
+ && crnProtocol.getLoaded() == 1
+ && crnProtocol.getForkPos() == 0) {
+ sign[0] = 2;
+ sign[1] = 1;
+ } else if (crnProtocol.getStatusTypeTwo() == CrnStatusType.SEPARATE_IDLE
+ && crnProtocol.getTaskNoTwo() == 0
+ && crnProtocol.getLoadedTwo() == 1
+ && crnProtocol.getForkPosTwo() == 0){
+ sign[0] = 2;
+ sign[1] = 2;
+ }
+ }
+
+ if (sign[0]!=0){
+ List<WrkMastSplitTwin> wrkMastSplitTwinList = wrkMastSplitTwinService.getWrkMastSplitTwin(crn.getId(),sign[1],null,sign[0],0);
+ if (!wrkMastSplitTwinList.isEmpty() && wrkMastSplitTwinList.size()!=1){
+ log.error("鍫嗗灈鏈哄嚭鍏ュ簱涓嬪彂寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={},宸ヤ綔绫诲瀷={}",crn.getId(),"瀛樺湪澶氱瑪鍙墽琛屼綔涓氾紝璇峰垹闄ゆ棤鏁堜綔涓氾紒锛侊紒",sign[1],sign[0]);
+ }
+ for (WrkMastSplitTwin wrkMastSplitTwin:wrkMastSplitTwinList){
+ return sign[0] == 1? crnExecuteTakeFull(crn.getId(), wrkMastSplitTwin, sign[1]) : crnExecutePutFull(crn.getId(), wrkMastSplitTwin, sign[1]);
+ }
+ }
+ }catch (Exception e){
+ log.error("鍫嗗灈鏈哄嚭鍏ュ簱涓嬪彂鎶ラ敊,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={}",crn.getId(),e.getMessage());
+ }
+ return false;
+ }
+
+ /*
+ * 鍫嗗灈鏈哄彇璐ц嚦宸ヤ綅浠诲姟
+ * */
+ public synchronized boolean crnExecuteTakeFull(Integer crnNo,WrkMastSplitTwin wrkMastSplitTwin, Integer crnStation){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMastSplitTwin.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.SEPARATE_TAKE); // 浠诲姟妯″紡: 鍗曞彇璐�
+ crnCommand.setSourcePosX(wrkMastSplitTwin.getStartRow().shortValue()); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(wrkMastSplitTwin.getStartBay().shortValue()); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(wrkMastSplitTwin.getStartLev().shortValue()); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMastSplitTwin.getCrnNo(), new Task(crnStation==1? 2:5, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMastSplitTwin.getCrnNo(), JSON.toJSON(crnCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+ }
+ }
+
+ /*
+ * 鍫嗗灈鏈烘斁璐ц揣鑷冲嚭搴撶珯鐐逛换鍔�
+ * */
+ public synchronized boolean crnExecutePutFull(Integer crnNo,WrkMastSplitTwin wrkMastSplitTwin, Integer crnStation){
+ try{
+ // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+ // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(wrkMastSplitTwin.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+ crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+ crnCommand.setTaskMode(CrnTaskModeType.SEPARATE_PUT); // 浠诲姟妯″紡: 鍗曟斁璐�
+ crnCommand.setSourcePosX((short)0); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short)0); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short)0); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(wrkMastSplitTwin.getEndRow().shortValue()); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(wrkMastSplitTwin.getEndBay().shortValue()); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(wrkMastSplitTwin.getEndLev().shortValue()); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, wrkMastSplitTwin.getCrnNo(), new Task(crnStation==1? 2:5, crnCommand))) {
+ log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMastSplitTwin.getCrnNo(), JSON.toJSON(crnCommand));
+ return false;
+ } else {
+ return true;
+ }
+ }catch (Exception e){
+ return false;
+ }
+ }
}
--
Gitblit v1.9.1