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;
    /**
@@ -1068,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")) {
@@ -1883,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;
@@ -1900,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")) {
@@ -1932,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"); // 空板
@@ -3101,20 +3114,39 @@
    }
    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));
@@ -3122,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;
            }
        }
    }