#
lsh
19 小时以前 5ae3b6c3d604f16c2ecc5057d720d5d79c8c091b
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -111,6 +111,8 @@
    private BasArmMastService basArmMastService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private BasDevpOptService basDevpOptService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -201,6 +203,7 @@
                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg));
                    }
                    staProtocol.setWorkNo(wrkNo);
                    staProtocol.setErrCode(errMsg);
                    News.info("异常判断{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
                    wrkNo++;
                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -229,6 +232,7 @@
                            MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
                        }
                        staProtocol.setWorkNo(wrkNo);
                        staProtocol.setErrCode(errMsg);
                        News.info("条码判断{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo);
                        wrkNo++;
                        staProtocol.setStaNo(inSta.getBackSta().shortValue());
@@ -299,7 +303,6 @@
                    }
                    try {
                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
                        SearchLocParam param = new SearchLocParam();
                        param.setBarcode(barcode);
                        param.setIoType(1);
@@ -334,6 +337,10 @@
                            staProtocol.setWorkNo(wrkNo);
                            staProtocol.setStaNo(inSta.getBackSta().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            switch (jsonObject.getInteger("code")){
                                case 700: staProtocol.setErrCode("未组托");break;
                                case 500: staProtocol.setErrCode("工作档/库存条码数据已存在");break;
                            }
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            News.info("任务下发判断{}入库回退:{},错误编号{},任务号:{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo);
                            wrkNo++;
@@ -2029,7 +2036,7 @@
                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                            BasErrLog basErrLog = new BasErrLog(
                                    null,    // 编号
                                    crnProtocol.getUuid(),    // 编号
                                    wrkMast.getWrkNo(),    // 工作号
                                    now,    // 发生时间
                                    null,    // 结束时间
@@ -2077,7 +2084,7 @@
                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                            BasErrLog basErrLog = new BasErrLog(
                                    null,    // 编号
                                    crnProtocol.getUuid(),    // 编号
                                    null,    // 工作号
                                    now,    // 发生时间
                                    null,    // 结束时间
@@ -2259,7 +2266,8 @@
                WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
                if (null == wrkMast) {
                    if(staProtocol.getWorkNo() > 9999){ //异常退出
                        MessageQueue.offer(SlaveType.Led, 2, new Task(3, "异常退出"));
                        String err = basDevpOptService.getErr(staProtocol.getWorkNo());
                        MessageQueue.offer(SlaveType.Led, led.getId(), new Task(3, err));
                    }
                    continue;
                }
@@ -2390,6 +2398,8 @@
            // 命令集合
            boolean reset = true;
            for (Integer staNo : led.getStaArr()) {
//                System.out.println("staArr = " + staNo);
                // 获取叉车站点
                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                if (staProtocol == null) { continue; }
@@ -3302,6 +3312,9 @@
            // 获取RGV信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
            if (rgvProtocol.getStatusType1() != RgvStatusType.IDLE && rgvProtocol.getModeType() != RgvModeType.AUTO) {
                continue;
            }
@@ -3518,6 +3531,7 @@
                basRgv.setPakAll("1");
                basRgvService.updateById(basRgv);
                rgvThread.setPakMk(true);
            }
//            List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo());
//            if(wrkMastStaPakingNum.size() <1){
@@ -3537,6 +3551,7 @@
            // 获取堆垛机信息
            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol == null) {
                continue;
            }
@@ -3547,6 +3562,9 @@
                continue;
            }
            if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){
                rgvThread.setPaking(true);
            }
            if(rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 && rgvProtocol.getStatusType1() == RgvStatusType.IDLE){
                rgvThread.setPaking(true);
            }
            if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){
@@ -3704,7 +3722,7 @@
                if(wrkMastSta3 != null ){
                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
                    if(wrkMastStaPaking.size() < 1 ){//已有标记不再标记
                    if(wrkMastStaPaking.size() < 1 && !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){//已有标记不再标记
                        wrkMastSta3.setMk(1);
                        basRgv.setPakAll("0");
                        basRgvService.updateById(basRgv);
@@ -3836,8 +3854,13 @@
            wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//若1号工位有任务给2号工位
            wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo());
            boolean sign = false;
            sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发
            if (sign){
                if(wrkMastSta.getMk() == 1){//若已执行
                    basRgv.setPakAll("1");
                    basRgvService.updateById(basRgv);
                }
                if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){
                    basRgv.setPakToCrn("0");
                    basRgvService.updateById(basRgv);
@@ -3847,7 +3870,7 @@
                        }
                    }
                }
                if(wrkMastSta3 != null ){
                if(wrkMastSta3 != null &&  !wrkMastSta3.getWrkNo().equals(wrkMastSta.getWrkNo())){
                    List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart());
                    if(wrkMastStaPaking.size() < 1){
                        wrkMastSta3.setMk(1);
@@ -3855,7 +3878,7 @@
                        basRgvService.updateById(basRgv);
                        try{
                            wrkMastStaMapper.updateById(wrkMastSta3);
                            log.error("锁定相隔站点任务");
                            log.error("锁定相隔站点任务:"+ wrkMastSta3.getWrkNo());
                        }catch (Exception e){
                            log.error("锁定相隔站点任务失败");
                        }
@@ -4356,7 +4379,7 @@
                            //arm任务完成自动组托
                            ReturnT<String> result = new PostMesDataUtils().postMesData("arm任务完成自动组托",wmsUrl, wmsComb, combParam);
                            if (result.getCode()==200){
                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,4);
                                basArmMastService.updateArmMastStatus(basArm.getArmNo(),basArm.getSortingLineSou(),3,5);
                            } else {
                                armTaskAssignmentCallApiLogSave(staProtocol, "自动组托失败", staProtocol.getSiteId()+"码垛位置,===》自动组托失败,等待重试", false);
//                                log.error("机械臂抓取任务完成:"+JSON.toJSON(basArmMastList)+"===》自动组托失败,等待重试");
@@ -4525,7 +4548,7 @@
                                new EntityWrapper<BasArmMast>()
                                        .eq("arm_no", basArm.getArmNo())
                                        .eq("sorting_line", basArm.getSortingLineSou())
                                        .eq("sku", basArmMast.getSku())
                                        .eq("matnr", basArmMast.getMatnr())
                                        .eq("order_no", basArmMast.getOrderNo())
                                        .eq("binding_tags", basArmMast.getBindingTags())
                        );
@@ -4550,7 +4573,7 @@
                                                    .eq("status", 2)
                                                    .eq("binding_tags", basArmMast.getBindingTags())
                                    );
                                    Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getSku(),basArmMastOne.getBindingTags());
                                    Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastOne.getOrderNo(), basArmMastOne.getMatnr(),basArmMastOne.getBindingTags());
                                    if (anfmeSignOne>1D){
                                        armTaskAssignmentCallApiLogSave(staProtocol, "条码数据已存在!!!", staProtocol.getSiteId()+"码垛位置,条码数据正在自动组托===>>" + barcode, false);
@@ -4559,12 +4582,12 @@
                                }
                            }
                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku());
                            OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr());
                            if (Cools.isEmpty(orderDetlValueResultUtil)){
                                continue;
                            }
                            Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags());
                            Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getMatnr(),basArmMast.getBindingTags());
                            orderDetlValueResultUtil.setAnfme(anfmeSign);
                            //订单下发
                            try{
@@ -4755,7 +4778,9 @@
//                        News.info("{}号站点存在任务执行中,请等待任务执行完毕:{}", outStaAgv.getStaNo(), barcode);
                        continue;
                    }
                    if(barcode.equals("0")){
                        continue;
                    }
                    List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
                    if (!locMastList.isEmpty()) {
                        News.info("{}号站点条码信息重复:{}", outStaAgv.getStaNo(), barcode);
@@ -4861,6 +4886,52 @@
        }
    }
    /*
     * agv任务生成 异常送到入库口
     * */
    public synchronized void agvTaskCreateException() {
        // 根据输送线plc遍历
        for (DevpSlave devp : slaveProperties.getDevp()) {
            Integer outStaAgv = 1041;
            // 获取入库站信息
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            StaProtocol staProtocol = devpThread.getStation().get(outStaAgv);
            if (staProtocol == null) {
                continue;
            } else {
                staProtocol = staProtocol.clone();
            }
            // 判断是否满足入库条件
            if (!staProtocol.isLoading()){
                continue;
            }
            if (staProtocol.isAutoing() && staProtocol.getWorkNo() > 10000) {
                // 判断重复工作档
                List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("sta_no", 1037));
                if (!basAgvMastList.isEmpty()) {
                    News.info("{}号站点存在任务执行中,等待任务执行完毕!!!", outStaAgv);
                    continue;
                }
                // 任务生成区 --------------------------------------------------------------------------
                BasAgvMast basAgvMast = new BasAgvMast();
                try {
                    basAgvMast.setTaskNo(staProtocol.getWorkNo());
                    basAgvMast.setSourceStaNo(1041);
                    basAgvMast.setStaNo(1037);
                    basAgvMast.setDevpId(devp.getId());
                    basAgvMast.setIoType(3);//输送==》输送线站点 3
                    basAgvMastService.insert(basAgvMast);
                    break;
                } catch (Exception e) {
                    News.error(JSON.toJSONString(e.getMessage()));
                }
            }
        }
    }
    /*
     * agv任务下发:AGV库位==》输送线站点
@@ -4904,6 +4975,8 @@
        }
    }
    /*
     * agv任务下发:AGV库位==》AGV库位
     * */