#
lsh
2024-06-22 ad3db22590c09649ce34189ad45d299f6c979abe
#
11个文件已修改
523 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/WrkMastExecute.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/BasJarMastService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/JarStatusType.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/JarProtocol.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/JarThread.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BasJarMastMapper.xml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastExecuteMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -142,14 +142,14 @@
    /**
     * 任务类型 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() {}
@@ -174,6 +174,28 @@
        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,    // 入库源站点[非空]
src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java
@@ -16,15 +16,14 @@
    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);
}
src/main/java/com/zy/asrs/service/BasJarMastService.java
@@ -11,12 +11,26 @@
    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);
}
src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service("basJarMastService")
@@ -24,12 +25,80 @@
        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);
    }
    /*
@@ -37,7 +106,20 @@
     * */
    @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
@@ -46,19 +128,62 @@
    }
    @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);
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -45,6 +45,7 @@
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;
@@ -4414,11 +4415,14 @@
    }
    /**
     *  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());
@@ -4430,22 +4434,34 @@
                    }
                    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;
@@ -4464,7 +4480,7 @@
                            if (!Cools.isEmpty(wrkMastExecute)){
                                continue;
                            }
                            if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){
                            if (jarMastGenerateExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){
                                return;
                            }
                        }catch (Exception e){
@@ -4480,11 +4496,11 @@
    }
    /**
     *  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) {
@@ -4499,9 +4515,9 @@
            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)){
@@ -4514,7 +4530,8 @@
            }
            //自动、空闲、右门关闭、   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);
@@ -4531,9 +4548,9 @@
    }
    /**
     *  Jar任务创建  执行
     *  Jar任务完成   //未完成
     */
    public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) {
    public synchronized boolean jarMastGenerateComplete(JarSlave jarSlave) {
        try{
            // 获取堆垛机信息
            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
@@ -4558,7 +4575,6 @@
            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
            }
        } catch (Exception e){
//            log.error("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2);
        }
@@ -4566,86 +4582,114 @@
    }
    /**
     *  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) {
                return false;
                        break;
            }
            if (jarProtocol.modeType != JarModeType.AUTO){
                return false;
                        break;
            }
            JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
            JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
            if (jarOtherProtocol == null) {
                return false;
                        break;
            }
            if (jarOtherProtocol.modeType != JarModeType.AUTO){
                return false;
//                    if (jarOtherProtocol.modeType != JarModeType.AUTO){
//                        continue;
//                    }
                    BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo());
                    if (Cools.isEmpty(basJar)){
                        log.error("{}号硫化罐查询设备档案无信息!!!",jarProtocol.getJarNo());
                        break;
            }
            //自动、空闲、右门关闭、
            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
                    //门作业  无
                    //自动、空闲、右门关闭、   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("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2);
                log.error("{}号硫化罐JarWrkMastExecute任务创建异常,异常原因={}",jarSlave.getId(),e.getMessage());
        }
        return false;
    }
    /**
     *  Jar任务执行
     */
    public synchronized void jarExecuteWrkMastSta() {
        try{
        }catch (Exception e){
            log.error("小车复位线程报错!"+e);
        }
    }
    /**
     *  Jar完成
     *  JarWrkMastExecute任务创建===>执行   //未完成
     */
    public synchronized void jarCompleteWrkMastSta() {
    public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,int[] digit) {
        try{
            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("小车复位线程报错!"+e);
            log.error("JarWrkMastExecute任务创建===>执行异常===》异常原因:"+e.getMessage());
        }
        return false;
    }
    /*
     * 小车取空板至工位任务  满取
     * 开门任务创建
     * */
    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){
            log.error("{}号硫化罐OpenTheDoorGenerate==》JarWrkMastExecute任务创建异常,异常原因={}",null,e.getMessage());
        }
            return false;
        }
    /**
     *  JarWrkMastExecute任务完成   //未完成
     */
    public synchronized void jarWrkMastExecuteGenerateComplete() {
        try{
        }catch (Exception e){
            log.error("小车复位线程报错!"+e);
    }
    }
    /*
     * Rgv  移动
     * */
src/main/java/com/zy/core/MainProcess.java
@@ -95,7 +95,11 @@
                    mainService.ledReset();
                    /************************************JAR调度************************************/
                    mainService.jarGenerateWrkMastSta();
                    //开门、入硫化罐
                    mainService.jarWrkMastExecuteGenerate();
                    //Jar任务创建  //完成
                    mainService.jarMastGenerate();
src/main/java/com/zy/core/enums/JarStatusType.java
@@ -7,10 +7,10 @@
    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, "其它"),
    ;
src/main/java/com/zy/core/model/protocol/JarProtocol.java
@@ -30,9 +30,15 @@
    /**
     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;
@@ -40,31 +46,37 @@
    /*
     * 左门状态
     * 进料门
     * */
    private boolean leftDoor;
    /*
     * 右门状态
     * 出料门
     * */
    private boolean rightDoor;
    /*
     * 左门可开
     * 进料门
     * */
    private boolean leftInEnable;
    /*
     * 左门可关
     * 进料门
     * */
    private boolean leftOutEnable;
    /*
     * 右门可开
     * 出料门
     * */
    private boolean rightInEnable;
    /*
     * 右门可关
     * 出料门
     * */
    private boolean rightOutEnable;
@@ -75,21 +87,25 @@
    /*
     * 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;
src/main/java/com/zy/core/thread/JarThread.java
@@ -123,27 +123,32 @@
                    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);//自动
                // 根据实时信息更新数据库
src/main/resources/mapper/BasJarMastMapper.xml
@@ -39,9 +39,30 @@
        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>
@@ -49,6 +70,13 @@
    <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>
@@ -59,32 +87,18 @@
        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>
src/main/resources/mapper/WrkMastExecuteMapper.xml
@@ -25,4 +25,16 @@
    </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>