| | |
| | | import com.zy.asrs.domain.enums.WorkNoType; |
| | | import com.zy.asrs.domain.param.CrnOperatorParam; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.TaskCreateParam; |
| | | import com.zy.asrs.mapper.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.*; |
| | |
| | | private CrnController crnController; |
| | | @Autowired |
| | | private BasDevpPositionService basDevpPositionService; |
| | | @Autowired |
| | | private OpenService openService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | |
| | | CrnSlave crnSlave = new CrnSlave(crn); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!"); |
| | | continue; |
| | | } |
| | | |
| | |
| | | if (!taskWrks.isEmpty()) { |
| | | continue; |
| | | } |
| | | List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getLaneNo()).orderBy("COMPLETE_TIME",true)); |
| | | List<TaskWrkLog> taskWrkLogs = taskWrkLogService.selectList(new EntityWrapper<TaskWrkLog>().eq("CRN_NO",crnProtocol.getLaneNo()).orderBy("COMPLETE_TIME",false)); |
| | | if (!taskWrkLogs.isEmpty()) { |
| | | TaskWrkLog taskWrkLog = taskWrkLogs.get(0); |
| | | Date completeTime = taskWrkLog.getCompleteTime(); |
| | | if (completeTime==null){ |
| | | completeTime = taskWrkLog.getCancelTime(); |
| | | boolean signT = false; |
| | | for (TaskWrkLog taskWrkLog : taskWrkLogs){ |
| | | Date completeTime = taskWrkLog.getCompleteTime(); |
| | | if (completeTime==null){ |
| | | completeTime = taskWrkLog.getModiTime(); |
| | | continue; |
| | | } |
| | | long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(completeTime, new Date()); |
| | | if (differenceInSeconds <= 60*2*1000) { |
| | | signT = true; |
| | | break; |
| | | } else { |
| | | signT = false; |
| | | break; |
| | | } |
| | | } |
| | | long differenceInSeconds = TimeCalculatorUtils.differenceInMilliseconds(completeTime, new Date()); |
| | | if (differenceInSeconds <= 60*10*1000) { |
| | | return; |
| | | if (signT){ |
| | | continue; |
| | | } |
| | | } |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | |
| | | } |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("堆垛机5分钟无任务则回到源点失败"); |
| | | log.error("堆垛机10分钟无任务则回到源点失败"); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | CrnSlave crn = new CrnSlave(crnSlave); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!"); |
| | | continue; |
| | | } |
| | | |
| | |
| | | |
| | | CrnSlave crn = new CrnSlave(crnSlave); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!"); |
| | | continue; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 堆垛机站出库到出库站 |
| | | */ |
| | | public boolean crnStnDEMOStop2() { |
| | | int signHpMk = 0; |
| | | for (CrnSlave crn : slaveProperties.getCrn()) { |
| | | |
| | | // 获取堆垛机信息 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol == null) { |
| | | continue; |
| | | } |
| | | BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); |
| | | if (basCrnp == null) { |
| | | log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); |
| | | continue; |
| | | } |
| | | |
| | | if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){ |
| | | signHpMk++; |
| | | } |
| | | } |
| | | if (signHpMk == slaveProperties.getCrn().size()){ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 堆垛机站出库到出库站 |
| | | */ |
| | | public boolean crnStnDEMOStop3() { |
| | | int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>().eq("io_type",4)); |
| | | if (selectCount>0) { |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * 演示模式启动 |
| | | */ |
| | | public boolean crnStnDEMOOpen0() { |
| | | for (CrnSlave crn : slaveProperties.getCrn()) { |
| | | |
| | | // 获取堆垛机信息 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol == null) { |
| | | continue; |
| | | } |
| | | BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); |
| | | if (basCrnp == null) { |
| | | log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); |
| | | continue; |
| | | } |
| | | |
| | | if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){ |
| | | continue; |
| | | } |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 演示模式启动 |
| | | */ |
| | | public boolean crnStnDEMOOpen1() { |
| | | int selectCount = taskWrkService.selectCount(new EntityWrapper<TaskWrk>()); |
| | | if (selectCount>0) { |
| | | return false; |
| | | } |
| | | for (CrnSlave crn : slaveProperties.getCrn()) { |
| | | |
| | | // 获取堆垛机信息 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol == null) { |
| | | continue; |
| | | } |
| | | BasCrnp basCrnp = basCrnpService.selectById(crn.getId()); |
| | | if (basCrnp == null) { |
| | | log.error("{}号堆垛机尚未在数据库进行维护!", crn.getId()); |
| | | continue; |
| | | } |
| | | |
| | | if (Cools.isEmpty(basCrnp.getHpMk()) || !basCrnp.getHpMk().equals("Y")){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "存在其它堆垛机开启演示模式!"); |
| | | continue; |
| | | } |
| | | |
| | | CrnSlave crnSlave = new CrnSlave(crn); |
| | | if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ |
| | | CrnErrCache.updateCrnErr(crnProtocol.getCrnNo(), "堆垛机巷道号异常!"); |
| | | continue; |
| | | } |
| | | |
| | | if (!crn.getId().equals(crnProtocol.getLaneNo())) { |
| | | for (CrnSlave crnOther : slaveProperties.getCrn()) { |
| | | if (crnOther.getId().equals(crnProtocol.getLaneNo())) { |
| | | crnSlave.updateCrnInStn(crnOther); |
| | | } |
| | | } |
| | | } |
| | | for (String locNo : crnProtocol.getLocMastDemoList()){ |
| | | LocMast locMast = locMastService.selectByLocNo(locNo); |
| | | TaskCreateParam taskCreateParam = new TaskCreateParam(crnSlave,locMast); |
| | | openService.taskCreate(taskCreateParam); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | |
| | | } |