dubin
1 天以前 0e10bf39c53b0b79cbdc051ddb10845d361042c3
src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -95,6 +95,9 @@
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${open-door.site}")
    private String openDoorSite;
    public Integer wrkNo = 9901;
    /**
@@ -689,6 +692,7 @@
                        if (wrkMast.getSourceStaNo() == 106 && wrkMast.getWrkSts() == 12L) {
                            wrkMast.setWrkSts(16L);
                            wrkMast.setCrnNo(1);
                            wrkMast.setIoPri(14D); // 优先级提升
                            if (wrkMast.getStaNo() == 107) {
                                wrkMast.setSourceStaNo(107);
                            } else if(wrkMast.getStaNo()==104) {
@@ -697,11 +701,7 @@
                            staProtocol.setStaNo((short) 106);
                            log.info("----------106移库标识---------");
                        }else if(wrkMast.getSourceStaNo() == 105 && wrkMast.getWrkSts() == 16L) {
                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                            log.info("106移库完成,输送线发送105到104,源站为:" + staProtocol.getSiteId());
                            wrkMast.setWrkSts(14L);
                        }else {
                        } else {
                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                            wrkMast.setWrkSts(14L);
                        }
@@ -1071,7 +1071,12 @@
                    // 双深库位且浅库位有货,则需先对浅库位进行库位移转
                    if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
                        News.warnNoLog(""+mark+" - 2"+" - 6"+" - 双深库位且浅库位有货,则需先对浅库位进行库位移转 : 开始执行 任务号={}",wrkMast.getWrkNo());
                        String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
                        String shallowLocNo = "";
                        if (Utils.getRow(wrkMast.getSourceLocNo()) == 11 && Utils.getBay(wrkMast.getSourceLocNo()) <= 18){
                            shallowLocNo = "10" + Utils.getBay(wrkMast.getSourceLocNo()) + Utils.getLev(wrkMast.getSourceLocNo());
                        }else {
                            shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo());
                        }
                        LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                        // O.空库位、Q.拣料/盘点/并板再入库、S.入库预约、X.禁用 直接搬!
                        if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
@@ -1886,7 +1891,12 @@
                    if (loc != null) {
                        if (Utils.isDeepLoc(slaveProperties, loc.getLocNo())) {
                            String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
                            String shallowLocNo = "";
                            if (row == 11){
                                shallowLocNo = "10" + loc.getBay1() + loc.getLev1();
                            }else {
                                shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo());
                            }
                            LocMast shallowLoc1 = locMastService.selectById(shallowLocNo);
                            if (!shallowLoc1.getLocSts().equals("O")) {
                                loc = null;
@@ -1903,7 +1913,7 @@
                    if (Utils.isShallowLoc(slaveProperties, row)) {
                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType2());
                        if (null != loc) {//对应深库位非在库状态,不能移库
                        if (null != loc && row != 9 && row != 10) {//对应深库位非在库状态,不能移库
                            String deepLoc = Utils.getDeepLoc(slaveProperties, loc.getLocNo());
                            LocMast deepLoc1 = locMastService.selectById(deepLoc);
                            if (!deepLoc1.getLocSts().equals("F") && !deepLoc1.getLocSts().equals("D")) {
@@ -1935,7 +1945,7 @@
                wrkMast.setCrnNo(crn.getId());
                wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 源库位
                wrkMast.setLocNo(loc.getLocNo()); // 目标库位
                wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 满板
                wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 满板
                wrkMast.setPicking("N"); // 拣料
                wrkMast.setExitMk("N"); // 退出
                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 空板
@@ -3095,29 +3105,48 @@
        crnCommand.setTraySize(true);     //库位类型
        if (!MessageQueue.offer(SlaveType.Crn, 1, new Task(2, crnCommand))) {
            News.error("106移库1号堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
        } else {
            wrkMast.setWrkSts(12L);
            wrkMastMapper.updateById(wrkMast);
            log.info("1号堆垛机转运106推送到命令队列成功");
        }
//        else {
//            wrkMast.setCrnNo(2);
//            wrkMastMapper.updateById(wrkMast);
//        }
        News.infoNoLog("106移库给1号堆垛机下发完成");
    }
    public synchronized void writePlc305() {
        BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305));
        if (basDevp.getWrkNo() != 0 && basDevp.getWrkNo() != 9999) {
            WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo());
            if(wrkMast != null && wrkMast.getWhsType() != null && wrkMast.getWhsType() == 2) {
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
                StaProtocol staProtocol305 = devpThread.getStation().get(305);
                if (!staProtocol305.getOpenAskDoor() && !staProtocol305.getIfOpenDoor()) { // 没请求打开
                    // 请求打开
                    if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 1))){
                        log.error("请求开门失败");
        String[] sites = openDoorSite.split(",");
        for (String site : sites) {
            Integer sta = Integer.valueOf(site);
            BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", sta));
            if (basDevp.getWrkNo() != 0 && basDevp.getWrkNo() != 9999) {
                WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo());
                if(wrkMast != null && wrkMast.getWhsType() != null && wrkMast.getWhsType() == 2) {
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
                    StaProtocol staProtocol305 = devpThread.getStation().get(sta);
                    if (!staProtocol305.getOpenAskDoor() && !staProtocol305.getIfOpenDoor()) { // 没请求打开
                        // 请求打开
//                        if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 1))){
                        if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, site))){ // data为需要开门的站点 通知PLC需要开哪个门
                            log.error("请求开门失败");
                        }
                    }
                }
            }
        }
//        BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 305));
//        if (basDevp.getWrkNo() != 0 && basDevp.getWrkNo() != 9999) {
//            WrkMast wrkMast = wrkMastService.selectById(basDevp.getWrkNo());
//            if(wrkMast != null && wrkMast.getWhsType() != null && wrkMast.getWhsType() == 2) {
//                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
//                StaProtocol staProtocol305 = devpThread.getStation().get(305);
//                if (!staProtocol305.getOpenAskDoor() && !staProtocol305.getIfOpenDoor()) { // 没请求打开
//                    // 请求打开
//                    if(!MessageQueue.offer(SlaveType.Devp, 1, new Task(3, 1))){
//                        log.error("请求开门失败");
//                    }
//                }
//            }
//        }
    }
    public synchronized void readPlc305() {
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 16L));
@@ -3125,28 +3154,60 @@
    }
    public synchronized void invokingBase() {
        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).eq("io_type", 1)
                .eq("source_sta_no", 305));
        if (wrkMast != null) {
            int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("wrk_sts", 2L).eq("io_type", 1)
                    .eq("source_sta_no", 305));
            if (count != 0) {
                log.warn("存在305入库任务,状态为设备上走");
                return;
            }
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
            StaProtocol staProtocol= devpThread.getStation().get(wrkMast.getStaNo());
            if (staProtocol == null) {
                return;
            } else {
                staProtocol = staProtocol.clone();
            }
            if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
//        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).eq("io_type", 1)
//                .eq("source_sta_no", 305));
//        if (wrkMast != null) {
//            int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("wrk_sts", 2L).eq("io_type", 1)
//                    .eq("source_sta_no", 305));
//            if (count != 0) {
//                log.warn("存在305入库任务,状态为设备上走");
//                return;
//            }
           List<WrkMast> wrkMastList = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).eq("io_type", 1)
                .in("source_sta_no", 305, 1202).orderBy("appe_time",true));
           for (WrkMast wrkMast : wrkMastList) {
               SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
               StaProtocol staProtocol= devpThread.getStation().get(wrkMast.getStaNo());
               if (staProtocol == null) {
                   return;
               } else {
                   staProtocol = staProtocol.clone();
               }
               if(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() == 0) {
                   staProtocol.setWorkNo(wrkMast.getWrkNo());
                   staProtocol.setStaNo(wrkMast.getSourceStaNo().shortValue());
                   devpThread.setPakMk(staProtocol.getSiteId(), false);
                   MessageQueue.offer(SlaveType.Devp,1, new Task(2, staProtocol));
                   log.info("入库请求底座-,任务号:{},目标站:{}-----", wrkMast.getWrkNo(), wrkMast.getStaNo());
               }
           }
//        }
    }
    public synchronized void inOutSwap() {
        SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1);
        StaProtocol staProtocol = devpThread.getStation().get(305);
        if (staProtocol == null) {
            return;
        } else {
            staProtocol = staProtocol.clone();
        }
        if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 6000 && staProtocol.getWorkNo() <= 9000) {
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L).eq("io_type", 1)
                    .eq("source_sta_no", 305).orderBy("appe_time", true));
            for (WrkMast wrkMast : wrkMasts) {
                wrkMast.setWhsType(3);
                wrkMastService.updateById(wrkMast);
                staProtocol.setWorkNo(wrkMast.getWrkNo());
                staProtocol.setStaNo(wrkMast.getSourceStaNo().shortValue());
                staProtocol.setStaNo((short) 0);
                devpThread.setPakMk(staProtocol.getSiteId(), false);
                boolean result = MessageQueue.offer(SlaveType.Devp,1, new Task(2, staProtocol));
                log.info("入库请求底座------");
                MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                log.info("出库任务完成转入库,任务号:{},目标站:{}-----", wrkMast.getWrkNo(), wrkMast.getStaNo());
                break;
            }
        }
    }