package com.zy.core; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.core.properties.SystemProperties; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PreDestroy; import java.util.ArrayList; /** * WCS主流程 * Created by vincent on 2020/8/6 */ @Data @Slf4j @Component public class MainProcess { @Autowired private MainServiceImpl mainService; // 所属线程 private Thread thread; // 频率 private int i = 0; private int j = 0; private int k = 0; /** * =====>> 开始工作 */ public void start(){ thread = new Thread(() -> { while (!Thread.currentThread().isInterrupted()) { try { // 间隔 Thread.sleep(1000); // 系统运行状态判断 if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } //初始化RGV地图 // mainService.initRgvMap(); //刷新RGV地图 // mainService.refreshRgvMap(); // 演示 // mainService.crnDemoOfLocMove1(); // 入出库模式切换函数 // mainService.ioConvert(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 mainService.generateStoreWrkFile(); // 组托 mainService.generateStoreWrkFileSingle(); // 组托 双工位单伸 小料箱 mainService.generateStoreWrkFileLarge(); // 组托 双工位单伸 大料箱 // 入库 ===>> 码垛位获取空板条码信息 // mainService.generateStoreWrkFileFull2LouM(); // 组托 mainService.generateStoreWrkFile0(); // WMS入库 // 拣料、并板、盘点再入库 // mainService.stnToCrnStnPick(); // 拣料、并板、盘点再入库拆盘区 1楼拆垛位置 // mainService.stnToCrnStnPick2(); // 2楼212呼叫空板 // mainService.stnToCrnStnPick3Auto(i); // 出库 ===>> 堆垛机出库站到出库站 mainService.crnStnToOutStn(); // 入出库 ===>> 堆垛机入出库作业下发 mainService.crnIoExecute(); // 入出库增强 ===>> 堆垛机命令下发后,异步修改工作档状态 // mainService.crnIoWrkMast(); // 入库 ===>> 执行对工作档的完成操作 mainService.storeFinished(); // /////////////////////////////////////RGV调度///////////////////////////////////// // i++; // k++; // if (i<7) { // // RGV ===>> 小车任务作业下发 // try{ // boolean rgvIoExecuteSign = mainService.rgvIoExecute(i); // if (rgvIoExecuteSign){ // k = 0; // } else if (k>7){ // k = 0; // mainService.rgvRunWrkMastEmptyStaAvoidance();//避让 // } // }catch (Exception e){ // log.error("RGV ===>> 小车任务作业下发异常"+e); // } // }else { // i = 0; // } // //完成小车任务 // mainService.rgvCompleteWrkMastSta(); // /////////////////////////////////////RGV调度///////////////////////////////////// // // 异常信息记录 // mainService.recErr(); // 入库 ===>> 空栈板初始化入库 // mainService.storeEmptyPlt(); // 入库 ===>> 空栈板初始化入库 mainService.storeEmptyPltSingle(); // // 入库 ===>> 空栈板初始化入库,1楼叠盘机空板入库 // mainService.storeEmptyPlt3(); // // 入库 ===>> 空栈板初始化入库,1楼叠盘机叠盘 // mainService.storeEmptyPlt2(); // // 拣料、并板、盘点再入库拆盘区 1楼拆垛位置 空板叠盘 // mainService.storeEmptyPlt4(); // 出库 ===>> 工作档信息写入led显示器 mainService.ledExecute(); // 其他 ===>> LED显示器复位,显示默认信息 mainService.ledReset(); // // 其他 ===>> 入出库模式切换 // i++; // if (i > 1) { // mainService.ioConvert(); // i = 0; // } //码垛位自动补充空板:驱动拆盘机输出托盘 // mainService.dischargingMachineOutputTray(); // //拆盘机处空板扫码,驱动托盘向码垛位,不入库 // mainService.scanBarcodeEmptyBoard(); // //码垛完成驱动托盘下一步扫码入库 // mainService.stackingCompletionDriveTray(); // //拆垛完成继续下一步 出库至月台出库口 // mainService.stackingCompletionDriveTray2(); // //贴标完成继续下一步 //// mainService.stackingCompletionDriveTray3(); // //拆垛完成继续下一步 运行途中自动避让空板 // mainService.stackingCompletionDriveTray4(); // //拆垛完成托盘继续下一步 // mainService.stackingCompletionDriveTrayOk2(); // //退货码垛完成托盘继续下一步 // mainService.stackingCompletionDriveTrayOk3(); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); } @PreDestroy public void shutDown(){ if (thread != null) thread.interrupt(); } }