|  |  |  | 
|---|
|  |  |  | private CrnController crnController; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SiteController siteController; | 
|---|
|  |  |  | //出库站点至112循环站点 | 
|---|
|  |  |  | @Synchronized | 
|---|
|  |  |  | public void shiftTargetToCyclePoint() throws IOException, InterruptedException{ | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | public void shiftTargetToCyclePoint() throws IOException, InterruptedException { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | for (DevpSlave devp : slaveProperties.getDevp()) { | 
|---|
|  |  |  | for (DevpSlave.Sta outSta : devp.getOutSta()) { | 
|---|
|  |  |  | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); | 
|---|
|  |  |  | StaProtocol staProtocol = devpThread.getStation().get(outSta.getStaNo()); | 
|---|
|  |  |  | StaProtocol staProtocol1 = devpThread.getStation().get(1001); | 
|---|
|  |  |  | StaProtocol staProtocol2 = devpThread.getStation().get(1002); | 
|---|
|  |  |  | StaProtocol staProtocol3 = devpThread.getStation().get(1003); | 
|---|
|  |  |  | StaProtocol staProtocol4 = devpThread.getStation().get(1004); | 
|---|
|  |  |  | StaProtocol staProtocol6 = devpThread.getStation().get(111); | 
|---|
|  |  |  | if (devpThread == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | StaProtocol staProtocol = getClonedStation(devpThread, outSta.getStaNo()); | 
|---|
|  |  |  | if (staProtocol == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol = staProtocol.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol1 == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol1 = staProtocol1.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol2 == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol2 = staProtocol2.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol3 == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol3 = staProtocol3.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol4 == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol4 = staProtocol4.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (staProtocol6 == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol6 = staProtocol6.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | boolean result = false; | 
|---|
|  |  |  | switch(outSta.getStaNo()){ | 
|---|
|  |  |  | case 105: if (staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105){ | 
|---|
|  |  |  | result = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case 107: if (staProtocol2.isLoading()){ | 
|---|
|  |  |  | result = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case 109: if (staProtocol3.isLoading()){ | 
|---|
|  |  |  | result = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | case 110: if ((staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || ((staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111))){ | 
|---|
|  |  |  | result = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | default: break; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取其他相关站点 | 
|---|
|  |  |  | StaProtocol staProtocol1 = getClonedStation(devpThread, 1001); | 
|---|
|  |  |  | StaProtocol staProtocol2 = getClonedStation(devpThread, 1002); | 
|---|
|  |  |  | StaProtocol staProtocol3 = getClonedStation(devpThread, 1003); | 
|---|
|  |  |  | StaProtocol staProtocol4 = getClonedStation(devpThread, 1004); | 
|---|
|  |  |  | StaProtocol staProtocol6 = getClonedStation(devpThread, 111); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | boolean result = false; | 
|---|
|  |  |  | switch (outSta.getStaNo()) { | 
|---|
|  |  |  | case 105: | 
|---|
|  |  |  | result = (staProtocol1 != null && staProtocol1.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 105); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 107: | 
|---|
|  |  |  | result = (staProtocol2 != null && staProtocol2.isLoading()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 109: | 
|---|
|  |  |  | result = (staProtocol3 != null && staProtocol3.isLoading()); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 110: | 
|---|
|  |  |  | result = ((staProtocol4 != null && staProtocol4.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 110) || | 
|---|
|  |  |  | (staProtocol6 != null && staProtocol6.isLoading() && staProtocol.isLoading() && staProtocol.getStaNo() == 111)); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | default: | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(result){ | 
|---|
|  |  |  | if(staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109){ | 
|---|
|  |  |  | StaProtocol staProtocol5 = devpThread.getStation().get(staProtocol.getSiteId() - 1); | 
|---|
|  |  |  | if (staProtocol5== null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol5 = staProtocol5.clone(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if((staProtocol5.isLoading() && staProtocol5.getStaNo() == 107) || ((staProtocol5.isLoading() && staProtocol5.getStaNo() == 109))){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (result) { | 
|---|
|  |  |  | if (staProtocol.getSiteId() == 107 || staProtocol.getSiteId() == 109) { | 
|---|
|  |  |  | StaProtocol staProtocol5 = getClonedStation(devpThread, staProtocol.getSiteId() - 1); | 
|---|
|  |  |  | if (staProtocol5 != null && (staProtocol5.isLoading() && (staProtocol5.getStaNo() == 107 || staProtocol5.getStaNo() == 109))) { | 
|---|
|  |  |  | staProtocol5.setStaNo((short) 112); | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol5)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol.setStaNo((short) 112); | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e) { | 
|---|
|  |  |  | log.error("generateStoreWrkFile e", e); | 
|---|
|  |  |  | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("shiftTargetToCyclePoint error", e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取站点并克隆 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private StaProtocol getClonedStation(DevpThread devpThread, int staNo) { | 
|---|
|  |  |  | StaProtocol staProtocol = devpThread.getStation().get(staNo); | 
|---|
|  |  |  | return (staProtocol != null) ? staProtocol.clone() : null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //112循环站点至出库站 | 
|---|
|  |  |  | public synchronized void shiftCyclePointToTarget() throws IOException, InterruptedException{ | 
|---|
|  |  |  | try{ | 
|---|