| | |
| | | /** |
| | | * 任务类型 0: 未知 1: 开门 2: 关门 3: 入硫化罐 4: 入冷却槽 5: 穿梭车进冷却槽 6: 穿梭车离开冷却槽 7: 出冷却槽 |
| | | */ |
| | | @ApiModelProperty(value= "任务类型 0: 未知 1: 开门 2: 关门 3: 入硫化罐 4: 入冷却槽 5: 穿梭车进冷却槽 6: 穿梭车离开冷却槽 7: 出冷却槽 ") |
| | | @ApiModelProperty(value= "任务类型 0: 未知 1: 开进料门 2: 关进料门 3: 开出料门 4: 关出料门 5: 入硫化罐 6: 入冷却槽 7: 穿梭车进冷却槽 8: 穿梭车离开冷却槽 9: 出冷却槽 ") |
| | | @TableField("io_type") |
| | | private Integer ioType; |
| | | |
| | | /** |
| | | * 设备 0: 未知 1: 硫化罐 2: 冷却槽 |
| | | */ |
| | | @ApiModelProperty(value= "设备 0: 未知 1: 硫化罐 2: 冷却槽 ") |
| | | @ApiModelProperty(value= "设备 0: 未知 1: 硫化罐 2: 冷却槽 3: 硫化罐==>冷却槽 ") |
| | | private Integer type; |
| | | |
| | | public WrkMastExecute() {} |
| | |
| | | this.type = type; |
| | | } |
| | | |
| | | public WrkMastExecute(BasJarMast basJarMast) { |
| | | Date now = new Date(); |
| | | this.wrkNo = basJarMast.getWrkNo(); |
| | | this.enterStaNo = basJarMast.getEnterStaNo(); //入库源站点 |
| | | this.outStaNo = basJarMast.getOutStaNo(); //入库目标站点 |
| | | this.jarEnterStaNo = basJarMast.getJarEnterStaNo(); //入硫化罐站点 |
| | | this.jarOutStaNo = basJarMast.getJarOutStaNo(); //出硫化罐站点 |
| | | // this.jarId = jarId; |
| | | this.jarRegin = basJarMast.getJarRegin();//区域 |
| | | this.status = 0; |
| | | // this.steId = steId; |
| | | // this.rgvId = rgvId; |
| | | this.ioTime = basJarMast.getIoTime(); |
| | | this.modiTime = now; |
| | | this.appeTime = now; |
| | | this.wrkType = 0; |
| | | this.wrkSts = 0; |
| | | // this.ioType = ioType; |
| | | // this.type = type; |
| | | } |
| | | |
| | | |
| | | // WrkMastExecute wrkMastExecute = new WrkMastExecute( |
| | | // null, // 工作号[非空] |
| | | // null, // 入库源站点[非空] |
| | |
| | | |
| | | List<BasJarMast> getJarMastByJarId(@Param("jarId") Integer jarId); |
| | | |
| | | BasJarMast getJarMastByJarIdMax(@Param("jarId") Integer jarId); |
| | | List<BasJarMast> getJarMastByJarIdAndStatusList(@Param("jarId") Integer jarId,@Param("statusList") List<Integer> statusList); |
| | | |
| | | BasJarMast getJarMastByJarIdMin(@Param("jarId") Integer jarId); |
| | | BasJarMast getJarMastByJarIdMax(@Param("jarId") Integer jarId,@Param("statusList") List<Integer> statusList); |
| | | |
| | | BasJarMast getJarMastByJarIdMin(@Param("jarId") Integer jarId,@Param("statusList") List<Integer> statusList); |
| | | |
| | | Integer getJarMastByJarIdCount(@Param("jarId") Integer jarId); |
| | | |
| | | Integer selectJarMastOperation1(@Param("jarId") Integer jarId); |
| | | Integer selectJarMastOperation2(@Param("jarId") Integer jarId); |
| | | Integer selectJarMastOperation3(@Param("jarId") Integer jarId); |
| | | Integer selectJarMastOperation4(@Param("jarId") Integer jarId); |
| | | Integer selectJarMastOperationByStatusList(@Param("jarId") Integer jarId,@Param("statusList") List<Integer> statusList); |
| | | |
| | | } |
| | |
| | | |
| | | List<BasJarMast> getJarMastByJarId(Integer jarId); |
| | | |
| | | List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,Integer statusStart,Integer statusEnd); |
| | | |
| | | List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,List<Integer> statusList); |
| | | |
| | | List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,Integer type); |
| | | |
| | | BasJarMast getJarMastByJarIdMax(Integer jarId); |
| | | |
| | | BasJarMast getJarMastByJarIdMax(Integer jarId,Integer statusStart,Integer statusEnd); |
| | | |
| | | BasJarMast getJarMastByJarIdMin(Integer jarId); |
| | | |
| | | BasJarMast getJarMastByJarIdMin(Integer jarId,Integer statusStart,Integer statusEnd); |
| | | |
| | | Integer getJarMastByJarIdCount(Integer jarId); |
| | | |
| | | Integer selectJarMastOperation(Integer jarId,Integer statusStart,Integer statusEnd); |
| | | |
| | | Integer selectJarMastOperation(Integer jarId,List<Integer> statusList); |
| | | |
| | | Integer selectJarMastOperation(Integer jarId,Integer type); |
| | | |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @Service("basJarMastService") |
| | |
| | | return this.baseMapper.getJarMastByJarId(jarId); |
| | | } |
| | | |
| | | @Override |
| | | public List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,Integer statusStart,Integer statusEnd) { |
| | | ArrayList<Integer> statusList = new ArrayList<>(); |
| | | for (Integer i = statusStart;i<=statusEnd;i++){ |
| | | statusList.add(i); |
| | | } |
| | | return this.baseMapper.getJarMastByJarIdAndStatusList(jarId,statusList); |
| | | } |
| | | @Override |
| | | public List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,List<Integer> statusList) { |
| | | return this.baseMapper.getJarMastByJarIdAndStatusList(jarId,statusList); |
| | | } |
| | | |
| | | @Override |
| | | public List<BasJarMast> getJarMastByJarIdAndStatusList(Integer jarId,Integer type) { |
| | | ArrayList<Integer> statusList = new ArrayList<>(); |
| | | switch (type){ |
| | | default: |
| | | statusList.add(15);//完成 输送线存在工作号《===》转历史档案 |
| | | case 5://小车移动至冷却槽任务 //出冷却槽任务 //开出料门任务 |
| | | statusList.add(10);//入冷却槽完成 |
| | | |
| | | case 4://出硫化罐任务 |
| | | statusList.add(11);//冷却中 |
| | | |
| | | if (type!=5){ |
| | | statusList.add(12);//冷却完成 |
| | | } |
| | | |
| | | statusList.add(13);//出冷却槽中 |
| | | statusList.add(14);//出冷却槽完成 |
| | | |
| | | case 3://关进料门任务 //生成初始任务 |
| | | statusList.add(4);//入硫化罐完成 |
| | | |
| | | case 2://关进料门任务 //生成初始任务 |
| | | statusList.add(0);//初始 |
| | | |
| | | case 1://开进料门任务 |
| | | statusList.add(2);//进料门打开 |
| | | |
| | | case 0://入硫化罐任务 |
| | | statusList.add(1);//开进料门中 |
| | | statusList.add(3);//入硫化罐中 |
| | | |
| | | statusList.add(5);//硫化中《===》关门完成 |
| | | |
| | | if (type!=4){ |
| | | statusList.add(6);//硫化完成 |
| | | } |
| | | |
| | | statusList.add(7);//开出料门中 |
| | | statusList.add(8);//出料门打开 |
| | | statusList.add(9);//出硫化罐中《===》入冷却槽中 |
| | | } |
| | | return this.baseMapper.getJarMastByJarIdAndStatusList(jarId,statusList); |
| | | } |
| | | |
| | | /* |
| | | * 获取jarLocDigit最大的BasJarMast |
| | | * */ |
| | | @Override |
| | | public BasJarMast getJarMastByJarIdMax(Integer jarId) { |
| | | return this.baseMapper.getJarMastByJarIdMax(jarId); |
| | | List<Integer> statusList = new ArrayList<Integer>(){{add(0);add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);add(11);add(12);add(13);add(14);add(15);}}; |
| | | return this.baseMapper.getJarMastByJarIdMax(jarId,statusList); |
| | | } |
| | | |
| | | @Override |
| | | public BasJarMast getJarMastByJarIdMax(Integer jarId,Integer statusStart,Integer statusEnd) { |
| | | ArrayList<Integer> statusList = new ArrayList<>(); |
| | | for (Integer i = statusStart;i<=statusEnd;i++){ |
| | | statusList.add(i); |
| | | } |
| | | return this.baseMapper.getJarMastByJarIdMax(jarId,statusList); |
| | | } |
| | | |
| | | /* |
| | |
| | | * */ |
| | | @Override |
| | | public BasJarMast getJarMastByJarIdMin(Integer jarId) { |
| | | return this.baseMapper.getJarMastByJarIdMin(jarId); |
| | | List<Integer> statusList = new ArrayList<Integer>(){{add(0);add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);add(11);add(12);add(13);add(14);add(15);}}; |
| | | return this.baseMapper.getJarMastByJarIdMin(jarId,statusList); |
| | | } |
| | | |
| | | /* |
| | | * 获取jarLocDigit最小的BasJarMast |
| | | * */ |
| | | @Override |
| | | public BasJarMast getJarMastByJarIdMin(Integer jarId,Integer statusStart,Integer statusEnd) { |
| | | List<Integer> statusList = new ArrayList<>(); |
| | | for (Integer i = statusStart;i<=statusEnd;i++){ |
| | | statusList.add(i); |
| | | } |
| | | return this.baseMapper.getJarMastByJarIdMin(jarId,statusList); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Integer selectJarMastOperation(Integer jarId,Integer type) { |
| | | switch (type){ |
| | | case 1: |
| | | return this.baseMapper.selectJarMastOperation1(jarId); |
| | | case 2: |
| | | return this.baseMapper.selectJarMastOperation2(jarId); |
| | | case 3: |
| | | return this.baseMapper.selectJarMastOperation3(jarId); |
| | | case 4: |
| | | return this.baseMapper.selectJarMastOperation4(jarId); |
| | | default: |
| | | return 99; |
| | | public Integer selectJarMastOperation(Integer jarId,Integer statusStart,Integer statusEnd) { |
| | | ArrayList<Integer> statusList = new ArrayList<>(); |
| | | for (Integer i = statusStart;i<=statusEnd;i++){ |
| | | statusList.add(i); |
| | | } |
| | | return this.baseMapper.selectJarMastOperationByStatusList(jarId,statusList); |
| | | } |
| | | |
| | | @Override |
| | | public Integer selectJarMastOperation(Integer jarId,List<Integer> statusList) { |
| | | return this.baseMapper.selectJarMastOperationByStatusList(jarId,statusList); |
| | | } |
| | | |
| | | @Override |
| | | public Integer selectJarMastOperation(Integer jarId,Integer type) { |
| | | ArrayList<Integer> statusList = new ArrayList<>(); |
| | | switch (type){ |
| | | default: |
| | | statusList.add(15);//完成 输送线存在工作号《===》转历史档案 |
| | | case 5://小车移动至冷却槽任务 //出冷却槽任务 //开出料门任务 |
| | | statusList.add(10);//入冷却槽完成 |
| | | |
| | | case 4://出硫化罐任务 |
| | | statusList.add(11);//冷却中 |
| | | |
| | | if (type!=5){ |
| | | statusList.add(12);//冷却完成 |
| | | } |
| | | |
| | | statusList.add(13);//出冷却槽中 |
| | | statusList.add(14);//出冷却槽完成 |
| | | |
| | | case 3://关进料门任务 //生成初始任务 |
| | | statusList.add(4);//入硫化罐完成 |
| | | |
| | | case 2://关进料门任务 //生成初始任务 |
| | | statusList.add(0);//初始 |
| | | |
| | | case 1://开进料门任务 |
| | | statusList.add(2);//进料门打开 |
| | | |
| | | case 0://入硫化罐任务 |
| | | statusList.add(1);//开进料门中 |
| | | statusList.add(3);//入硫化罐中 |
| | | |
| | | statusList.add(5);//硫化中《===》关门完成 |
| | | |
| | | if (type!=4){ |
| | | statusList.add(6);//硫化完成 |
| | | } |
| | | |
| | | statusList.add(7);//开出料门中 |
| | | statusList.add(8);//出料门打开 |
| | | statusList.add(9);//出硫化罐中《===》入冷却槽中 |
| | | } |
| | | return this.baseMapper.selectJarMastOperationByStatusList(jarId,statusList); |
| | | } |
| | | |
| | | } |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | import springfox.documentation.spring.web.json.Json; |
| | | |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | } |
| | | |
| | | /** |
| | | * Jar任务创建 |
| | | * Jar任务创建 //完成 |
| | | */ |
| | | public synchronized void jarGenerateWrkMastSta() { |
| | | public synchronized void jarMastGenerate() { |
| | | for (JarSlave jarSlave : slaveProperties.getJar()) { |
| | | try{ |
| | | if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ |
| | | continue; |
| | | } |
| | | for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){ |
| | | // 获取硫化罐入库站信息 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId()); |
| | |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){ |
| | | try{ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),1)!=0){ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),2)!=0){ |
| | | break; |
| | | } |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),1)!=0){ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),3)!=0){ |
| | | // log.error("{}号小车",jarSlave.getJarOtherId()); |
| | | break; |
| | | } |
| | | if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ |
| | | if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=14){ |
| | | break; |
| | | } |
| | | if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=7){ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,9)>=7){ |
| | | break; |
| | | } |
| | | BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId()); |
| | | if (!Objects.equals |
| | | ( |
| | | basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 4) |
| | | , |
| | | basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 9) |
| | | ) |
| | | ){ |
| | | break; |
| | | } |
| | | BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId(),0,4); |
| | | int jarLocDigit = 0; |
| | | if (Cools.isEmpty(jarMastByJarIdMax)){ |
| | | if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,4)!=0){ |
| | | break; |
| | | } |
| | | jarLocDigit = 1; |
| | | } else if (jarMastByJarIdMax.getJarLocDigit()<7){ |
| | | jarLocDigit = jarMastByJarIdMax.getJarLocDigit()+1; |
| | |
| | | if (!Cools.isEmpty(wrkMastExecute)){ |
| | | continue; |
| | | } |
| | | if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){ |
| | | if (jarMastGenerateExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){ |
| | | return; |
| | | } |
| | | }catch (Exception e){ |
| | |
| | | } |
| | | |
| | | /** |
| | | * Jar任务创建 执行 |
| | | * Jar任务创建===》执行 //完成 |
| | | */ |
| | | public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) { |
| | | public synchronized boolean jarMastGenerateExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) { |
| | | try{ |
| | | // 获取堆垛机信息 |
| | | // 获取硫化罐信息 |
| | | JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); |
| | | JarProtocol jarProtocol = jarThread.getJarProtocol(); |
| | | if (jarProtocol == null) { |
| | |
| | | if (jarOtherProtocol == null) { |
| | | return false; |
| | | } |
| | | if (jarOtherProtocol.modeType != JarModeType.AUTO){ |
| | | return false; |
| | | } |
| | | // if (jarOtherProtocol.modeType != JarModeType.AUTO){ |
| | | // return false; |
| | | // } |
| | | |
| | | BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); |
| | | if (Cools.isEmpty(basJar)){ |
| | |
| | | } |
| | | |
| | | //自动、空闲、右门关闭、 Other左门关闭 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 |
| | | && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 |
| | | && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ |
| | | if (jarProtocol.statusType == JarStatusType.IDLE || jarProtocol.statusType == JarStatusType.MOVING){ |
| | | BasJarMast basJarMast = new BasJarMast(basJar, wrkMast, jarLocDigit); |
| | |
| | | } |
| | | |
| | | /** |
| | | * Jar任务创建 执行 |
| | | * Jar任务完成 //未完成 |
| | | */ |
| | | public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) { |
| | | public synchronized boolean jarMastGenerateComplete(JarSlave jarSlave) { |
| | | try{ |
| | | // 获取堆垛机信息 |
| | | JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); |
| | |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ |
| | | |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | // log.error("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * Jar任务创建 执行 |
| | | * JarWrkMastExecute任务创建 //未完成 |
| | | * 开门、入硫化罐 |
| | | */ |
| | | public synchronized boolean jarGenerateWrkMastStaExecuteTwo(JarSlave jarSlave) { |
| | | public synchronized void jarWrkMastExecuteGenerate() { |
| | | for (JarSlave jarSlave : slaveProperties.getJar()) { |
| | | try{ |
| | | if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){ |
| | | continue; |
| | | } |
| | | List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{ |
| | | add(0); |
| | | add(2); |
| | | }}); |
| | | for (BasJarMast basJarMast : basJarMastList){ |
| | | // 获取硫化罐信息 |
| | | JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); |
| | | JarProtocol jarProtocol = jarThread.getJarProtocol(); |
| | | if (jarProtocol == null) { |
| | | break; |
| | | } |
| | | if (jarProtocol.modeType != JarModeType.AUTO){ |
| | | break; |
| | | } |
| | | |
| | | JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); |
| | | JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); |
| | | if (jarOtherProtocol == null) { |
| | | break; |
| | | } |
| | | // if (jarOtherProtocol.modeType != JarModeType.AUTO){ |
| | | // continue; |
| | | // } |
| | | |
| | | BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo()); |
| | | if (Cools.isEmpty(basJar)){ |
| | | log.error("{}号硫化罐查询设备档案无信息!!!",jarProtocol.getJarNo()); |
| | | break; |
| | | } |
| | | |
| | | //门作业 无 |
| | | //自动、空闲、右门关闭、 Other左门关闭 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 |
| | | && jarProtocol.leftDoorOpen==0 && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0 && jarProtocol.rightDoorClose==0 |
| | | && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0 && jarOtherProtocol.leftDoorClose==0){ |
| | | if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){ |
| | | //生成开门任务 OpenTheDoor |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){ |
| | | log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); |
| | | } |
| | | return; |
| | | } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){ |
| | | //生成入硫化罐任务 |
| | | if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){ |
| | | log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast)); |
| | | } |
| | | return; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } catch (Exception e){ |
| | | log.error("{}号硫化罐JarWrkMastExecute任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * JarWrkMastExecute任务创建===>执行 //未完成 |
| | | */ |
| | | public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,int[] digit) { |
| | | try{ |
| | | // 获取堆垛机信息 |
| | | JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); |
| | | JarProtocol jarProtocol = jarThread.getJarProtocol(); |
| | | if (jarProtocol == null) { |
| | | return false; |
| | | } |
| | | if (jarProtocol.modeType != JarModeType.AUTO){ |
| | | return false; |
| | | } |
| | | |
| | | JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId()); |
| | | JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol(); |
| | | if (jarOtherProtocol == null) { |
| | | return false; |
| | | } |
| | | if (jarOtherProtocol.modeType != JarModeType.AUTO){ |
| | | return false; |
| | | } |
| | | |
| | | //自动、空闲、右门关闭、 |
| | | if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){ |
| | | |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | // log.error("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2); |
| | | WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast); |
| | | wrkMastExecute.setJarId(digit[3]==2? basJar.getBurial():basJar.getJarNo()); |
| | | wrkMastExecute.setSteId(digit[0]);//穿梭板ID |
| | | wrkMastExecute.setRgvId(digit[1]);//RGV ID |
| | | wrkMastExecute.setIoType(digit[2]);//任务类型 0: 未知 1: 开进料门 2: 关进料门 3: 开出料门 4: 关出料门 5: 入硫化罐 6: 入冷却槽 7: 穿梭车进冷却槽 8: 穿梭车离开冷却槽 9: 出冷却槽 |
| | | wrkMastExecute.setType(digit[3]);//设备 0: 未知 1: 硫化罐 2: 冷却槽 3: 硫化罐==>冷却槽 |
| | | return wrkMastExecuteService.insert(wrkMastExecute); |
| | | }catch (Exception e){ |
| | | log.error("JarWrkMastExecute任务创建===>执行异常===》异常原因:"+e.getMessage()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * Jar任务执行 |
| | | */ |
| | | public synchronized void jarExecuteWrkMastSta() { |
| | | try{ |
| | | |
| | | }catch (Exception e){ |
| | | log.error("小车复位线程报错!"+e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Jar完成 |
| | | */ |
| | | public synchronized void jarCompleteWrkMastSta() { |
| | | try{ |
| | | |
| | | }catch (Exception e){ |
| | | log.error("小车复位线程报错!"+e); |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 小车取空板至工位任务 满取 |
| | | * 开门任务创建 |
| | | * */ |
| | | public synchronized boolean jarRgvTake1(Integer rgvId,WrkMastSta wrkMastSta){ |
| | | public synchronized boolean jarWrkMastExecuteGenerate2(){ |
| | | try{ |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | RgvCommand rgvCommand = new RgvCommand(); |
| | | rgvCommand.setRgvNo(rgvId); // RGV编号 |
| | | rgvCommand.setAckFinish2((short) 0); // 工位2任务完成确认位 |
| | | rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 工位2工作号 |
| | | rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_5); // 工位2任务模式: 满取 |
| | | rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //工位2起点 |
| | | rgvCommand.setCommand((short) 2); //工位2任务确认 |
| | | if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) { |
| | | //step=2,工位1、2写任务; step=4,工位1写任务; step=5,工位2写任务 |
| | | log.error("RGV命令下发失败,RGV号={},任务数据={}", rgvId, JSON.toJSON(rgvCommand)); |
| | | return false; |
| | | } else { |
| | | return true; |
| | | } |
| | | |
| | | } catch (Exception e){ |
| | | return false; |
| | | log.error("{}号硫化罐OpenTheDoorGenerate==》JarWrkMastExecute任务创建异常,异常原因={}",null,e.getMessage()); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * JarWrkMastExecute任务完成 //未完成 |
| | | */ |
| | | public synchronized void jarWrkMastExecuteGenerateComplete() { |
| | | try{ |
| | | |
| | | }catch (Exception e){ |
| | | log.error("小车复位线程报错!"+e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /* |
| | | * Rgv 移动 |
| | | * */ |
| | |
| | | mainService.ledReset(); |
| | | |
| | | /************************************JAR调度************************************/ |
| | | mainService.jarGenerateWrkMastSta(); |
| | | |
| | | //开门、入硫化罐 |
| | | mainService.jarWrkMastExecuteGenerate(); |
| | | //Jar任务创建 //完成 |
| | | mainService.jarMastGenerate(); |
| | | |
| | | |
| | | |
| | |
| | | SOS(2, "硫化中"), |
| | | WAITING1(3, "出料中"), |
| | | WAITING2(4, "停止"), |
| | | WAITING3(5, "左门打开中"), |
| | | WAITING4(6, "右门打开中"), |
| | | WAITING5(7, "左门关闭中"), |
| | | OFF_LINE(8, "右门关闭中"), |
| | | WAITING3(5, "进料门打开中"), |
| | | WAITING4(6, "出料门打开中"), |
| | | WAITING5(7, "进料门关闭中"), |
| | | OFF_LINE(8, "出料门关闭中"), |
| | | OTHER(100, "其它"), |
| | | ; |
| | | |
| | |
| | | |
| | | /** |
| | | IDLE(0, "空闲"), |
| | | MOVING(1, "作业中"), |
| | | SOS(2, "报警"), |
| | | WAITING(3, "任务完成等待WCS确认"), |
| | | MOVING(1, "入料中"), |
| | | SOS(2, "硫化中"), |
| | | WAITING1(3, "出料中"), |
| | | WAITING2(4, "停止"), |
| | | WAITING3(5, "进料门打开中"), |
| | | WAITING4(6, "出料门打开中"), |
| | | WAITING5(7, "进料门关闭中"), |
| | | OFF_LINE(8, "出料门关闭中"), |
| | | OTHER(100, "其它"), |
| | | */ |
| | | public Short status; |
| | | |
| | |
| | | |
| | | /* |
| | | * 左门状态 |
| | | * 进料门 |
| | | * */ |
| | | private boolean leftDoor; |
| | | |
| | | /* |
| | | * 右门状态 |
| | | * 出料门 |
| | | * */ |
| | | private boolean rightDoor; |
| | | |
| | | /* |
| | | * 左门可开 |
| | | * 进料门 |
| | | * */ |
| | | private boolean leftInEnable; |
| | | |
| | | /* |
| | | * 左门可关 |
| | | * 进料门 |
| | | * */ |
| | | private boolean leftOutEnable; |
| | | |
| | | /* |
| | | * 右门可开 |
| | | * 出料门 |
| | | * */ |
| | | private boolean rightInEnable; |
| | | |
| | | /* |
| | | * 右门可关 |
| | | * 出料门 |
| | | * */ |
| | | private boolean rightOutEnable; |
| | | |
| | |
| | | |
| | | /* |
| | | * open the left door |
| | | * 进料门 |
| | | * */ |
| | | public Integer leftDoorOpen; |
| | | |
| | | /* |
| | | * close the left door |
| | | * 进料门 |
| | | * */ |
| | | public Integer leftDoorClose; |
| | | |
| | | /* |
| | | * open the right door |
| | | * 出料门 |
| | | * */ |
| | | public Integer rightDoorOpen; |
| | | |
| | | /* |
| | | * close the right door |
| | | * 出料门 |
| | | * */ |
| | | public Integer rightDoorClose; |
| | | |
| | |
| | | jarProtocol = new JarProtocol(); |
| | | jarProtocol.setJarNo(slave.getId()); |
| | | } |
| | | jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 0) != 0);//左门状态 |
| | | jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//右门状态 |
| | | jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//左门可开 |
| | | jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 5) != 0);//左门可关 |
| | | jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//右门可开 |
| | | jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//右门可关 |
| | | |
| | | if (slave.getId() == 1 || slave.getId() == 3){ |
| | | jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 0) != 0);//左门状态 //出料门 |
| | | jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//右门状态 //进料门 |
| | | jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//左门可开 //出料门 |
| | | jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 6) != 0);//左门可关 //出料门 |
| | | jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//右门可开 //进料门 |
| | | jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//右门可关 //进料门 |
| | | jarProtocol.setRightDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 18));//open the left door //出料门 |
| | | jarProtocol.setRightDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 20));//close the left door //出料门 |
| | | jarProtocol.setLeftDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 22));//open the right door //进料门 |
| | | jarProtocol.setLeftDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 24));//close the right door //进料门 |
| | | } else { |
| | | jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 0) != 0);//左门状态 //进料门 |
| | | jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//右门状态 //出料门 |
| | | jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//左门可开 //进料门 |
| | | jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 6) != 0);//左门可关 //进料门 |
| | | jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//右门可开 //出料门 |
| | | jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//右门可关 //出料门 |
| | | jarProtocol.setLeftDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 18));//open the left door //进料门 |
| | | jarProtocol.setLeftDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 20));//close the left door //进料门 |
| | | jarProtocol.setRightDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 22));//open the right door //出料门 |
| | | jarProtocol.setRightDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 24));//close the right door //出料门 |
| | | } |
| | | jarProtocol.setMode((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 12));//模式 |
| | | |
| | | jarProtocol.setJarErr((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 14));//异常码 |
| | | |
| | | jarProtocol.setStatus(siemensS7Net.getByteTransform().TransInt16(result.Content, 16));//状态 |
| | | |
| | | jarProtocol.setLeftDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 18));//open the left door |
| | | |
| | | jarProtocol.setLeftDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 20));//close the left door |
| | | |
| | | jarProtocol.setRightDoorOpen((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 22));//open the right door |
| | | |
| | | jarProtocol.setRightDoorClose((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 24));//close the right door |
| | | |
| | | |
| | | jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 2);//自动 |
| | | // 根据实时信息更新数据库 |
| | |
| | | order by jar_loc_digit desc |
| | | </select> |
| | | |
| | | <select id="getJarMastByJarIdAndStatusList" resultMap="BaseResultMap"> |
| | | select * from asr_bas_jar_mast |
| | | where 1=1 |
| | | and |
| | | ( |
| | | status in |
| | | <foreach collection="statusList" item="status" index="index" open="(" close=")" separator=","> |
| | | #{status} |
| | | </foreach> |
| | | ) |
| | | and jar_id = #{jarId} |
| | | order by jar_loc_digit desc |
| | | </select> |
| | | |
| | | <select id="getJarMastByJarIdMax" resultMap="BaseResultMap"> |
| | | select top 1 * from asr_bas_jar_mast |
| | | where 1=1 |
| | | and |
| | | ( |
| | | status in |
| | | <foreach collection="statusList" item="status" index="index" open="(" close=")" separator=","> |
| | | #{status} |
| | | </foreach> |
| | | ) |
| | | and jar_id = #{jarId} |
| | | order by jar_loc_digit desc |
| | | </select> |
| | |
| | | <select id="getJarMastByJarIdMin" resultMap="BaseResultMap"> |
| | | select top 1 * from asr_bas_jar_mast |
| | | where 1=1 |
| | | and |
| | | ( |
| | | status in |
| | | <foreach collection="statusList" item="status" index="index" open="(" close=")" separator=","> |
| | | #{status} |
| | | </foreach> |
| | | ) |
| | | and jar_id = #{jarId} |
| | | order by jar_loc_digit asc |
| | | </select> |
| | |
| | | and jar_id = #{jarId} |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation1" resultType="Integer"> |
| | | <select id="selectJarMastOperationByStatusList" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and |
| | | ( |
| | | status in |
| | | <foreach collection="statusList" item="status" index="index" open="(" close=")" separator=","> |
| | | #{status} |
| | | </foreach> |
| | | ) |
| | | and jar_id = #{jarId} |
| | | and wrk_sts in (0,1,2,3) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation2" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts in (4,5,6,7) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation3" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts in (0,1,2,3) |
| | | </select> |
| | | |
| | | <select id="selectJarMastOperation4" resultType="Integer"> |
| | | select count(1) from asr_bas_jar_mast |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | and wrk_sts in (0,1,2,3) |
| | | order by jar_loc_digit desc |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | |
| | | </resultMap> |
| | | |
| | | <select id="getWrkMastByWrkNo" resultMap="BaseResultMap"> |
| | | select * from jar_wrk_mast_execute |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | </select> |
| | | |
| | | <select id="getWrkMastByJarIdCount" resultType="Integer"> |
| | | select count(1) from jar_wrk_mast_execute |
| | | where 1=1 |
| | | and jar_id = #{jarId} |
| | | </select> |
| | | |
| | | </mapper> |