自动化立体仓库 - WCS系统
#
lsh
2024-06-27 bb8e4e0583cc57206a11f0374598424acf96946e
#
10个文件已修改
411 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/BasJarMast.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastExecute.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastExecuteService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 288 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SteThread.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastExecuteMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/BasJarMast.java
@@ -293,5 +293,9 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
    }
    public Integer getStatusComplete(){
        return this.status+1;
    }
}
src/main/java/com/zy/asrs/entity/WrkMastExecute.java
@@ -144,10 +144,10 @@
     * 0:初始  wrk_sts
     * 1:RGV小车避让、2:避让完成、3:开门中、4:开门完成、5:更新完成    //io_type = 1、3
     * 1:RGV小车避让、2:避让完成、3:关门中、4:关门完成、5:更新完成    //io_type = 2、4
     * 1:RGV小车移动、2:RGV小车到位、3:rgv取货、4:rgv取货完成、5:Ste穿梭版入硫化罐、6:入罐完成、7:更新完成   //io_type = 5
     * 1:RGV小车移动、2:RGV小车到位、3:Ste穿梭版取货、4:取货完成等待下一步、5:Ste穿梭版放货至冷却池、6:放货完成、7:更新完成   //io_type = 6
     * 1:RGV小车移动、2:RGV小车到位、3:Ste穿梭版移动中、4:移动完成、5:更新完成   //io_type = 7、8
     * 1:Ste穿梭版取放货中、2:放货完成等待下一步、3:输送线任务下发完成、4:更新完成   //io_type = 9
     * 1:RGV小车移动、2:RGV小车到位、3:rgv取货、4:rgv取货完成、5:Ste穿梭版入硫化罐、6:入罐完成、7:更新完成   //io_type = 5   STE  A面穿梭车
     * 1:RGV小车移动、2:RGV小车到位、3:Ste穿梭版取货、4:取货完成等待下一步、5:Ste穿梭版放货至冷却池、6:放货完成、7:更新完成   //io_type = 6  STE  B面穿梭车
     * 1:RGV小车移动、2:RGV小车到位、3:Ste穿梭版移动中、4:移动完成、5:更新完成   //io_type = 7  B=>C   、8 C=>B
     * 1:Ste穿梭版取放货中、2:放货完成等待下一步、3:输送线任务下发完成、4:更新完成   //io_type = 9   STE   末端输送线
     * 1:RGV小车移动、2:RGV小车到位、3:Ste穿梭版移动中、4:移动完成、5:更新完成   //io_type = 10、11
     */
    @ApiModelProperty(value= "工作状态")
@@ -155,7 +155,7 @@
    private Integer wrkSts;
    /**
     * 任务类型 0: 未知  1: 开进料门  2: 关进料门  3: 开出料门  4: 关出料门  5: 入硫化罐  6: 入冷却槽  7: 穿梭车进冷却槽  8: 穿梭车离开冷却槽  9: 出冷却槽 10:A=>B 11:B=>A
     * 任务类型 0: 未知  1: 开进料门  2: 关进料门  3: 开出料门  4: 关出料门  5: 入硫化罐  6: 入冷却槽  7: 穿梭车进冷却槽  B=>C  8: 穿梭车离开冷却槽 C=>B  9: 出冷却槽 10:A=>B 11:B=>A
     */
    @ApiModelProperty(value= "任务类型 0: 未知  1: 开进料门  2: 关进料门  3: 开出料门  4: 关出料门  5: 入硫化罐  6: 入冷却槽  7: 穿梭车进冷却槽  8: 穿梭车离开冷却槽  9: 出冷却槽 10:A=>B 11:B=>A ")
    @TableField("io_type")
@@ -275,25 +275,36 @@
        return null;
    }
    /**
     * 任务类型 0: 未知  1: 开进料门  2: 关进料门  3: 开出料门  4: 关出料门  5: 入硫化罐  6: 入冷却槽  7: 穿梭车进冷却槽  B=>C  8: 穿梭车离开冷却槽 C=>B  9: 出冷却槽 10:A=>B 11:B=>A
     */
    public String getIoType$(){
        if (null == this.ioType){ return null; }
        switch (this.ioType){
            case 0:
                return this.ioType+":未知";
            case 1:
                return this.ioType+":开门";
                return this.ioType+":开进料门";
            case 2:
                return this.ioType+":关门";
                return this.ioType+":关进料门";
            case 3:
                return this.ioType+":入硫化罐";
                return this.ioType+":开出料门";
            case 4:
                return this.ioType+":入冷却槽";
                return this.ioType+":关出料门";
            case 5:
                return this.ioType+":穿梭车进冷却槽";
                return this.ioType+":入硫化罐";
            case 6:
                return this.ioType+":穿梭车离开冷却槽";
                return this.ioType+":入冷却槽";
            case 7:
                return this.ioType+":穿梭车进冷却槽:B=>C";
            case 8:
                return this.ioType+":穿梭车离开冷却槽:C=>B";
            case 9:
                return this.ioType+":出冷却槽";
            case 10:
                return this.ioType+":A=>B";
            case 11:
                return this.ioType+":B=>A";
            default:
                return String.valueOf(this.ioType);
        }
@@ -313,5 +324,9 @@
        }
    }
    public Integer getWrkStsComplete(){
        return this.wrkSts+1;
    }
}
src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java
@@ -27,4 +27,8 @@
    Integer getWrkMastExecuteByJarIdCount(@Param("jarId") Integer jarId);
    Integer selectNoStart(@Param("jarRegin") Integer jarRegin);
    WrkMastExecute selectStart(@Param("jarRegin") Integer jarRegin);
}
src/main/java/com/zy/asrs/service/WrkMastExecuteService.java
@@ -19,4 +19,8 @@
    Integer getWrkMastExecuteByJarIdCount(Integer jarId);
    Integer selectNoStart(Integer jarRegin);
    WrkMastExecute selectStart(Integer jarRegin);
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -23,6 +23,7 @@
import com.zy.common.utils.RgvUtils;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
import com.zy.core.Slave;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.*;
@@ -54,6 +55,8 @@
public class MainServiceImpl {
    public static final long COMMAND_TIMEOUT = 5 * 1000;
//    private static final int[][] execute = new int[][]{{1,4},{2,4},{3,4},{4,4},{5,6},{6,6},{7,4},{8,4},{9,3},{10,4},{11,4}};
    private static final int[][] execute = new int[][]{{1,4},{2,4},{3,4},{4,4},{5,6},{6,6},{9,3},{10,4},{11,4}};
    @Autowired
    private CommonService commonService;
@@ -4544,35 +4547,35 @@
    }
    /**
     *  Jar任务完成   //未完成
     *  Jar任务完成   //完成
     */
    public synchronized boolean jarMastGenerateComplete(JarSlave jarSlave) {
    public synchronized boolean jarMastGenerateComplete() {
        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){
            for (int[] ex : execute){
                try{
                    WrkMastExecute wrkMastExecuteSou = new WrkMastExecute();
                    wrkMastExecuteSou.setIoType(ex[0]);
                    wrkMastExecuteSou.setWrkSts(ex[1]);
                    wrkMastExecuteSou.setWrkType(1);
                    List<WrkMastExecute> wrkMastExecuteList = wrkMastExecuteService.selectWrkMastExecuteByWrk(wrkMastExecuteSou);
                    for (WrkMastExecute wrkMastExecute : wrkMastExecuteList){
                        BasJarMast jarMastByWrkNo = basJarMastService.getJarMastByWrkNo(wrkMastExecute.getWrkNo());
                        jarMastByWrkNo.setStatus(jarMastByWrkNo.getStatusComplete());
                        if (!basJarMastService.updateById(jarMastByWrkNo)){
                            log.error("硫化区域分段任务完成异常,BasJarMast={},异常信息={}",JSON.toJSONString(jarMastByWrkNo),"更新basJarMast失败");
                        }
                        wrkMastExecute.setWrkSts(wrkMastExecute.getWrkStsComplete());
                        wrkMastExecute.setWrkType(2);
                        if (!wrkMastExecuteService.updateById(wrkMastExecute)){
                            log.error("硫化区域分段任务完成异常,wrkMastExecute={},异常信息={}",JSON.toJSONString(wrkMastExecute),"更新wrkMastExecute失败");
                        }
                    }
                }catch (Exception e){
                    log.error("硫化区域分段任务完成异常,execute={},异常信息={}",JSON.toJSONString(ex),e.getMessage());
                }
            }
        } catch (Exception e){
//            log.error("堆垛机工位二完成等待确认异常,堆垛机号={},异常信息={},工位号={}",crn.getId(),e.getMessage(),2);
            log.error("硫化区域分段任务完成异常,异常信息={}",e.getMessage());
        }
        return false;
    }
@@ -4594,10 +4597,13 @@
                default:
                    jarWrkMastExecuteGenerateSte(signExecute,sign);//小车移动
            }
            if (!signExecute[0] && !signExecute[1]){
                //Ste移动
                jarMastMove();
            }
        } catch (Exception e){
            log.error("硫化区域分段任务创建异常,异常信息={}",e.getMessage());
        }
    }
    public synchronized boolean[] jarWrkMastExecuteGenerateJar(boolean[] signExecute,Integer sign) {
@@ -4787,10 +4793,10 @@
                add(2);
            }});
            //判断小车状态
            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1,SteStatusType.IDLE)){
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1,SteStatusType.IDLE)){
//                return false;
//            }
            for (BasJarMast basJarMast : basJarMastList){
                JarSlave.StaStn staStn = null;
@@ -4899,10 +4905,10 @@
            if (Cools.isEmpty(basJarMastSign)){
                return false;
            }
            //判断小车状态
            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1,SteStatusType.IDLE)){
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),1,SteStatusType.IDLE)){
//                return false;
//            }
            JarSlave.RgvStn rgvStn = jarSlave.getJarInRgv().get(0);
@@ -4971,10 +4977,10 @@
            if (Cools.isEmpty(basJarMastSign)){
                return false;
            }
            //判断小车状态
            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarInSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
//                return false;
//            }
            //判断RGV状态
            JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0);
@@ -5041,10 +5047,10 @@
            if (Cools.isEmpty(jarMastByJarIdMin)){
                return false;
            }
            //判断小车状态
            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
//                return false;
//            }
            //判断RGV状态
            JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0);
@@ -5112,10 +5118,10 @@
                return false;
            }
            //判断小车状态
            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(jarSlave.getJarOutSte().get(0).getSteNo(),2,SteStatusType.IDLE)){
//                return false;
//            }
            //判断RGV状态
            JarSlave.RgvStn rgvStn = jarSlave.getJarOutRgv().get(0);
@@ -5248,6 +5254,25 @@
     *  JarWrkMastExecute任务创建===>执行   //完成
     */
    public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,Integer id,int[] digit) {
        try {
            WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast);
            wrkMastExecute.setJarId(id);
            wrkMastExecute.setSteId(digit[0]);//穿梭板ID
            wrkMastExecute.setRgvId(basJar.getEnterRgvNo());//RGV ID  enter
            wrkMastExecute.setRgvEndId(basJar.getOutRgvNo());//RGV ID  out
            wrkMastExecute.setIoType(digit[2]);//任务类型 0: 未知  1: 开进料门  2: 关进料门  3: 开出料门  4: 关出料门  5: 入硫化罐  6: 入冷却槽  7: 穿梭车进冷却槽  8: 穿梭车离开冷却槽  9: 出冷却槽 10:A=>B 11:B=>A
            wrkMastExecute.setType(digit[3]);//设备  0: 未知  1: 硫化罐  2: 冷却槽  3: 硫化罐==>冷却槽
            return wrkMastExecuteService.insert(wrkMastExecute);
        } catch (Exception e) {
            log.error("JarWrkMastExecute任务创建===>执行异常===》异常原因:"+e.getMessage());
        }
        return false;
    }
    /**
     *  JarWrkMastExecute任务创建===>执行   //完成
     */
    public synchronized boolean jarWrkMastExecuteGenerateExecuteMove(BasJar basJar,BasJarMast basJarMast,Integer id,int[] digit) {
        try {
            WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast);
            wrkMastExecute.setJarId(id);
@@ -5701,11 +5726,6 @@
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1)){
//                return false;
//            }
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
            StaProtocol staProtocolRGV = devpThread.getStation().get(basJar.getEnterRgvNo());
            if (staProtocolRGV == null) {
@@ -5739,12 +5759,12 @@
                //自动、空闲、  进料们打开需关闭
                if (jarProtocol.isAutoing() && jarProtocol.jarErr==0 && jarProtocol.isLeftDoor() && jarProtocol.isRightDoor()
                        && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
                    //判断小车状态
                    if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                        return false;
                    }
                    if (SteAndJarUtil.steAndJarNowRow(staProtocolRGV.getNowRow() , jarProtocol.getJarNo())){
                        //判断小车状态
                        if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                            return false;
                        }
                        //调车  == > 取货
                        if (!jarRgvGetTake(wrkMastExecute
                                ,SteAndJarUtil.getRgvStaRow(wrkMastExecute.getJarEnterStaNo())==1
@@ -5919,11 +5939,6 @@
                return false;
            }
//            //判断小车状态
//            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1)){
//                return false;
//            }
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 2);
            StaProtocol staProtocolRGV = devpThread.getStation().get(basJar.getEnterRgvNo());
            if (staProtocolRGV == null) {
@@ -5958,12 +5973,13 @@
                //自动、空闲、
                if (jarProtocol.isAutoing() && jarProtocol.jarErr==0 && jarProtocol.isLeftDoor() && jarProtocol.isRightDoor()
                        && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0){
                    //判断小车状态
                    if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                        return false;
                    }
                    if (SteAndJarUtil.steAndJarNowRow(staProtocolRGV.getNowRow() , jarProtocol.getJarNo())){
                        //判断小车状态
                        if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                            return false;
                        }
                        //调车  == > 取货
                        if (!jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT21.id,SteTaskModeType.STE_WFQH_12,false)){
                            log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}",
@@ -6113,7 +6129,8 @@
    /**
     *  JarWrkMastExecute任务==>下发 //完成
     *  7:穿梭车进冷却槽\8:穿梭车离开冷却槽
     *  7:穿梭车进冷却槽   7  B=>C
     *  8:穿梭车离开冷却槽  8 C=>B
     *  任务下发
     */
    public synchronized boolean jarWrkMastExecuteActionExecute7(WrkMastExecute wrkMastExecute,Integer sign) {
@@ -6199,10 +6216,10 @@
                    if (SteAndJarUtil.steAndJarNowRow(staProtocolRGV.getNowRow() , jarProtocolOther.getJarNo())){
                        //判断小车状态
                        if (wrkMastExecute.getIoType()==7){
                        if (wrkMastExecute.getIoType()==7){  //7  B=>C
                            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                                //调车  == > 移动
                                if (!jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT26.id,SteTaskModeType.STE_WFQH_12,false)){
                                if (jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT26.id,SteTaskModeType.STE_WFQH_12,false)){
                                    log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}",
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
@@ -6212,7 +6229,7 @@
                                    log.error("穿梭板Ste命令下发失败===>更新wrkMastExecute失败,jar号={},任务数据={},硫化罐数据={},sign={}",
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            } else if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),3,SteStatusType.IDLE)){
                            } else if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),3,SteStatusType.IDLE)){
                                wrkMastExecute.setWrkType(1);
                                wrkMastExecute.setWrkSts(4);
                                if (!wrkMastExecuteService.updateById(wrkMastExecute)){
@@ -6220,8 +6237,8 @@
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            }
                        } else {
                            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),3,SteStatusType.IDLE)){
                        } else { //8 C=>B
                            if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),3,SteStatusType.IDLE)){
                                //调车  == > 移动
                                if (!jarSteTake(wrkMastExecute,SteLocaType.POINT26.id,SteLocaType.POINT23.id,SteTaskModeType.STE_WFQH_12,false)){
                                    log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}",
@@ -6233,7 +6250,7 @@
                                    log.error("穿梭板Ste命令下发失败===>更新wrkMastExecute失败,jar号={},任务数据={},硫化罐数据={},sign={}",
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            } else if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                            } else if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                                wrkMastExecute.setWrkType(1);
                                wrkMastExecute.setWrkSts(4);
                                if (!wrkMastExecuteService.updateById(wrkMastExecute)){
@@ -6502,8 +6519,8 @@
                    if (SteAndJarUtil.steAndJarNowRow(staProtocolRGV.getNowRow() , jarProtocol.getJarNo())){
                        //判断小车状态
                        if (wrkMastExecute.getIoType()==10){
                            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                        if (wrkMastExecute.getIoType()==10){//10:A=>B
                            if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                                //调车  == > 移动
                                if (!jarSteTake(wrkMastExecute,SteLocaType.POINT20.id,SteLocaType.POINT23.id,SteTaskModeType.STE_WFQH_12,false)){
                                    log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}",
@@ -6515,7 +6532,7 @@
                                    log.error("穿梭板Ste命令下发失败===>更新wrkMastExecute失败,jar号={},任务数据={},硫化罐数据={},sign={}",
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            } else if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                            } else if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                                wrkMastExecute.setWrkType(1);
                                wrkMastExecute.setWrkSts(4);
                                if (!wrkMastExecuteService.updateById(wrkMastExecute)){
@@ -6523,8 +6540,8 @@
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            }
                        } else {
                            if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                        } else {//11:B=>A
                            if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),2,SteStatusType.IDLE)){
                                //调车  == > 移动
                                if (!jarSteTake(wrkMastExecute,SteLocaType.POINT23.id,SteLocaType.POINT20.id,SteTaskModeType.STE_WFQH_12,false)){
                                    log.error("穿梭板Ste命令下发失败,ste号={},任务数据={},硫化罐数据={},sign={}",
@@ -6536,7 +6553,7 @@
                                    log.error("穿梭板Ste命令下发失败===>更新wrkMastExecute失败,jar号={},任务数据={},硫化罐数据={},sign={}",
                                            wrkMastExecute.getSteId(), JSON.toJSON(wrkMastExecute), JSON.toJSON(jarProtocol),sign);
                                }
                            } else if (!jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                            } else if (jarWrkMastExecuteGenerateSteStatus(basJar.getEnterSteNo(),1,SteStatusType.IDLE)){
                                wrkMastExecute.setWrkType(1);
                                wrkMastExecute.setWrkSts(4);
                                if (!wrkMastExecuteService.updateById(wrkMastExecute)){
@@ -6680,7 +6697,7 @@
    }
    /**
     *  JarWrkMastExecute任务完成   //未完成
     *  JarWrkMastExecute任务完成   //完成
     */
    public synchronized void jarWrkMastExecuteGenerateComplete(Integer sign) {
        try{
@@ -7043,4 +7060,115 @@
        return false;
    }
    /**
     *  Jar任务  穿梭车移动任务   //完成
     */
    public synchronized boolean jarMastMove() {
        try{
            for (SteSlave steSlave : slaveProperties.getSte()){
                SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steSlave.getId());
                if (steThread == null) {
                    continue;
                }
                SteProtocol steProtocol = steThread.getSteProtocol();
                if (steProtocol == null) {
                    continue;
                }
                Integer integer = wrkMastExecuteService.selectNoStart(steSlave.getId());
                if (integer!=0){
                    continue;
                }
                try{
                    if (jarWrkMastExecuteGenerateSteStatus(steSlave.getId(),1,SteStatusType.IDLE)){
                        List<WrkMastExecute> wrkMastExecutes = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 5, null);
                        if (wrkMastExecutes.isEmpty()){
                            List<WrkMastExecute> wrkMastExecutesB = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 6, null);
                            List<WrkMastExecute> wrkMastExecutesC = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 9, null);
                            if (!wrkMastExecutesB.isEmpty() || !wrkMastExecutesC.isEmpty()){
                                WrkMastExecute wrkMastExecute = !wrkMastExecutesB.isEmpty() ? wrkMastExecutesB.get(0) : wrkMastExecutesC.get(0);
                                BasJar basJar = basJarMapper.selectById(wrkMastExecute.getJarId());
                                if (Cools.isEmpty(basJar)){
                                    log.error("{}号硫化罐查询设备档案无信息!!!",wrkMastExecute.getJarId());
                                    return false;
                                }
                                BasJarMast jarMastByWrkNo = basJarMastService.getJarMastByWrkNo(wrkMastExecute.getWrkNo());
                                //A==>B
                                if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),10,1})){
                                    log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo));
                                }
                                continue;
                            }
                        }
                    } else if (jarWrkMastExecuteGenerateSteStatus(steSlave.getId(),2,SteStatusType.IDLE)){
                        List<WrkMastExecute> wrkMastExecutes = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 6, null);
                        if (wrkMastExecutes.isEmpty()){
                            List<WrkMastExecute> wrkMastExecutesA = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 5, null);
                            List<WrkMastExecute> wrkMastExecutesC = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 9, null);
                            if (!wrkMastExecutesA.isEmpty()){
                                WrkMastExecute wrkMastExecute = wrkMastExecutesA.get(0);
                                BasJar basJar = basJarMapper.selectById(wrkMastExecute.getJarId());
                                if (Cools.isEmpty(basJar)){
                                    log.error("{}号硫化罐查询设备档案无信息!!!",wrkMastExecute.getJarId());
                                    return false;
                                }
                                BasJarMast jarMastByWrkNo = basJarMastService.getJarMastByWrkNo(wrkMastExecute.getWrkNo());
                                //B==>A
                                if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),11,1})){
                                    log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo));
                                }
                                continue;
                            }
                            if (!wrkMastExecutesC.isEmpty()){
                                WrkMastExecute wrkMastExecute = wrkMastExecutesC.get(0);
                                BasJar basJar = basJarMapper.selectById(wrkMastExecute.getJarId());
                                if (Cools.isEmpty(basJar)){
                                    log.error("{}号硫化罐查询设备档案无信息!!!",wrkMastExecute.getJarId());
                                    return false;
                                }
                                BasJarMast jarMastByWrkNo = basJarMastService.getJarMastByWrkNo(wrkMastExecute.getWrkNo());
                                //B==>C
                                if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),7,1})){
                                    log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo));
                                }
                                continue;
                            }
                        }
                    } else if (jarWrkMastExecuteGenerateSteStatus(steSlave.getId(),3,SteStatusType.IDLE)){
                        List<WrkMastExecute> wrkMastExecutes = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 9, null);
                        if (wrkMastExecutes.isEmpty()){
                            List<WrkMastExecute> wrkMastExecutesB = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 9, null);
                            List<WrkMastExecute> wrkMastExecutesA = wrkMastExecuteService.selectWrkMastExecuteByTypeAndIoTyperAndWrkType(null, 6, null);
                            if (!wrkMastExecutesB.isEmpty() || !wrkMastExecutesA.isEmpty()){
                                WrkMastExecute wrkMastExecute = !wrkMastExecutesB.isEmpty() ? wrkMastExecutesB.get(0) : wrkMastExecutesA.get(0);
                                BasJar basJar = basJarMapper.selectById(wrkMastExecute.getJarId());
                                if (Cools.isEmpty(basJar)){
                                    log.error("{}号硫化罐查询设备档案无信息!!!",wrkMastExecute.getJarId());
                                    return false;
                                }
                                BasJarMast jarMastByWrkNo = basJarMastService.getJarMastByWrkNo(wrkMastExecute.getWrkNo());
                                //C==>B
                                if (!jarWrkMastExecuteGenerateExecute(basJar,jarMastByWrkNo,basJar.getJarNo(),new int[]{basJar.getOutSteNo(),basJar.getOutRgvNo(),8,1})){
                                    log.error("JarWrkMastExecute任务创建===>执行异常===》异常数据:BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(jarMastByWrkNo));
                                }
                                continue;
                            }
                        }
                    }
                }catch (Exception e){
                    log.error("硫化区域分段任务完成异常,steProtocol={},异常信息={}",JSON.toJSONString(steProtocol),e.getMessage());
                }
                WrkMastExecute wrkMastExecute = wrkMastExecuteService.selectStart(steSlave.getId());
            }
        } catch (Exception e){
            log.error("硫化区域分段任务完成异常,异常信息={}",e.getMessage());
        }
        return false;
    }
}
src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java
@@ -40,4 +40,14 @@
    public Integer getWrkMastExecuteByJarIdCount(Integer jarId) {
        return this.baseMapper.getWrkMastExecuteByJarIdCount(jarId);
    }
    @Override
    public Integer selectNoStart(Integer jarRegin) {
        return this.baseMapper.selectNoStart(jarRegin);
    }
    @Override
    public WrkMastExecute selectStart(Integer jarRegin) {
        return this.baseMapper.selectStart(jarRegin);
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -108,8 +108,12 @@
                    mainService.jarWrkMastExecuteGenerate(k);
                    //JarWrkMastExecute任务执行
                    mainService.jarWrkMastExecuteAction(k,j);
                    //Jar任务创建  //完成
                    //Jar任务创建
                    mainService.jarMastGenerate();
                    //Jar任务完成
                    mainService.jarMastGenerateComplete();
                    /************************************JAR调度************************************/
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -12,6 +12,7 @@
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
import com.zy.core.DevpThread;
import com.zy.core.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
@@ -573,28 +574,42 @@
        if (null == staProtocol) {
            return;
        }
        News.error("RGV写入命令"+JSON.toJSONString(staProtocol));
        boolean rgv6 = staProtocol.isRGV6();
        OperateResult result1 = null;
        OperateResult result2 = null;
        String resultV1 = "";
        String resultV2 = "";
        String resultV3 = "";
        short resultS1 = 1;
        short resultS2 = 2;
        switch (staProtocol.getSiteId()){
            case 623:
                resultV1 = "DB100.1830";
                resultV2 = "DB100.1826";
                resultV3 = "DB100.1828";
                break;
            case 624:
                resultV1 = "DB100.1840";
                resultV2 = "DB100.1826";
                resultV3 = "DB100.1828";
                break;
            case 625:
                resultV1 = "DB100.1850";
                resultV2 = "DB100.1826";
                resultV3 = "DB100.1828";
                break;
            case 626:
                resultV1 = "DB100.1860";
                resultV2 = "DB100.1826";
                resultV3 = "DB100.1828";
                break;
            default:
                return;
        }
        siemensS7Net.Write(resultV2, (short) 0);
        siemensS7Net.Write(resultV3, (short) 0);
        result1 = siemensS7Net.Write(resultV1, resultS1);
        //硫化罐任务写入后,回读一次,看是否成功
@@ -689,26 +704,33 @@
        if (null == staProtocol) {
            return;
        }
        News.error("RGV写入命令"+JSON.toJSONString(staProtocol));
        boolean rgv4 = staProtocol.isRGV4();
        boolean rgv5 = staProtocol.isRGV5();
        OperateResult result1 = null;
        OperateResult result2 = null;
        String resultV1 = "";
        String resultV2 = "";
        short resultS1 = 1;
        short resultS2 = 2;
        if (rgv4){
            switch (staProtocol.getSiteId()){
                case 623:
                    resultV1 = "DB100.1826";
                    resultV2 = "DB100.1830";
                    break;
                case 624:
                    resultV1 = "DB100.1836";
                    resultV2 = "DB100.1840";
                    break;
                case 625:
                    resultV1 = "DB100.1846";
                    resultV2 = "DB100.1850";
                    break;
                case 626:
                    resultV1 = "DB100.1856";
                    resultV2 = "DB100.1860";
                    break;
                default:
                    return;
@@ -717,20 +739,25 @@
            switch (staProtocol.getSiteId()){
                case 623:
                    resultV1 = "DB100.1828";
                    resultV2 = "DB100.1830";
                    break;
                case 624:
                    resultV1 = "DB100.1838";
                    resultV2 = "DB100.1840";
                    break;
                case 625:
                    resultV1 = "DB100.1848";
                    resultV2 = "DB100.1850";
                    break;
                case 626:
                    resultV1 = "DB100.1858";
                    resultV2 = "DB100.1860";
                    break;
                default:
                    return;
            }
        }
        siemensS7Net.Write(resultV2, (short) 0);
        result1 = siemensS7Net.Write(resultV1, resultS1);
        //硫化罐任务写入后,回读一次,看是否成功
        try {
@@ -824,22 +851,24 @@
        OperateResult result2 = null;
        String resultV1 = "";
        String resultV2 = "";
        News.error("RGV写入命令"+JSON.toJSONString(staProtocol));
        switch (staProtocol.getSiteId()){
            case 623:
                resultV1 = "DB100.1824";
                resultV2 = "DB100.1828";
                resultV2 = "DB100.1834";
                break;
            case 624:
                resultV1 = "DB100.1828";
                resultV1 = "DB100.1834";
                resultV2 = "DB100.1824";
                break;
            case 625:
                resultV1 = "DB100.1832";
                resultV2 = "DB100.1836";
                resultV1 = "DB100.1844";
                resultV2 = "DB100.1854";
                break;
            case 626:
                resultV1 = "DB100.1836";
                resultV2 = "DB100.1832";
                resultV1 = "DB100.1854";
                resultV2 = "DB100.1844";
                break;
            default:
                return;
src/main/java/com/zy/core/thread/SteThread.java
@@ -218,6 +218,8 @@
        }
        command.setSteNo(slave.getId());
        OperateResult result = null;
        News.error("穿梭车写入命令"+JSON.toJSONString(command));
        // 开始任务
        if (!command.getComplete()) {
            //组织任务前,先清空写任务确认位,以及任务完成确认位
@@ -226,6 +228,7 @@
            siemensS7Net.Write("DB100.12", (short) 0);//起始点位
            siemensS7Net.Write("DB100.14", (short) 0);//目的点位
            siemensS7Net.Write("DB100.16.0", false);//任务开始确认位
            siemensS7Net.Write("DB100.16.1", false);//任务完成确认位
//            siemensS7Net.Write("DB100.18", (short) 0);//硫化罐号
            // 1.任务号
            OperateResult result0 = siemensS7Net.Write("DB100.2", command.getTaskNo().shortValue());
src/main/resources/mapper/WrkMastExecuteMapper.xml
@@ -101,4 +101,18 @@
        and jar_id = #{jarId}
    </select>
    <select id="selectNoStart" resultType="Integer">
        select count(1) from jar_wrk_mast_execute
        where 1=1
        and jar_regin = #{jarRegin}
        and wrk_type != 0
    </select>
    <select id="selectStart" resultMap="BaseResultMap">
        select top 1 * from jar_wrk_mast_execute
        where 1=1
        and jar_regin = #{jarRegin}
        and wrk_type = 0
    </select>
</mapper>