野心家
2025-03-20 95cc083ea58c4db51d0b89184c58ad67bc4f3b12
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -131,38 +131,6 @@
                    }
                    Short workNo = staProtocol.getWorkNo();
                    Short stano = staProtocol.getStaNo();
                    // 尺寸检测异常
                    boolean back = false;
                    String errMsg = "";
                    if (staProtocol.isFrontErr()) {
                        errMsg = "前超限";
                        back = true;
                    }
                    if (!back && staProtocol.isBackErr()) {
                        errMsg = "后超限";
                        back = true;
                    }
                    if (!back && staProtocol.isHighErr()) {
                        errMsg = "高超限";
                        back = true;
                    }
                    if (!back && staProtocol.isLeftErr()) {
                        errMsg = "左超限";
                        back = true;
                    }
                    if (!back && staProtocol.isRightErr()) {
                        errMsg = "右超限";
                        back = true;
                    }
                    if (!back && staProtocol.isWeightErr()) {
                        errMsg = "超重";
                        back = true;
                    }
                    if (!back && staProtocol.isBarcodeErr()) {
                        errMsg = "扫码失败";
                        back = true;
                    }
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
                            && staProtocol.isInEnable()
@@ -174,25 +142,38 @@
                            continue;
                        }
                        String BoxNo = barcodeThread.getBarcode();
                        TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                        if (!Cools.isEmpty(taskWrk1)) {
                            log.info("托盘码:" + BoxNo + "任务档存在");
                            if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                        .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                if (Cools.isEmpty(staDesc)) {
                                    return;
                                } else {
                                    continue;
                        if (BoxNo.equals("00000000")) {
                            storageEscalationParam.setWCSStatus(1);
                            storageEscalationParam.setWCSErrorMessage("没有扫到码");
                            BasDevp basDevp= basDevpService.selectOne(new EntityWrapper<BasDevp>()
                                    .eq("dev_no",staProtocol.getSiteId()));
                            if(Cools.isEmpty(basDevp)){
                                log.error("扫码失败并且没有找到该站点---"+staProtocol.getSiteId());
                            }else{
                                basDevp.setStaErr(1);//没有扫到码
                                basDevp.setStaErrMsg("没有扫到码!");
                                basDevpService.updateById(basDevp);
                            }
                            continue;
                        }else{
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", BoxNo));
                            if (!Cools.isEmpty(taskWrk1)) {
                                log.info("托盘码:" + BoxNo + "任务档存在");
                                if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                            .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                    if (Cools.isEmpty(staDesc)) {
                                        return;
                                    } else {
                                        continue;
                                    }
                                }
                            }
                        }
                        if (back) {
                            storageEscalationParam.setWCSStatus(1);
                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                        }
                        log.info("组托入库={}", storageEscalationParam);
                        storageEscalationParam.setBoxNo(BoxNo);
                        storageEscalationParam.setWcsIoType(1);//满板
                        storageEscalationParam.setWcsSourceStaNo(staProtocol.getSiteId());
                        String response = "";
                        Boolean success = false;
                        try {
@@ -203,84 +184,52 @@
                                    .build()
                                    .doPost();
                            JSONObject jsonObject = JSON.parseObject(response);
                            if (back) {
                                if (staProtocol.getWorkNo() >= 9801 && staProtocol.getWorkNo() <= 9825) {
                                    staProtocol.setStaNo((short) 105);
                                } else if (staProtocol.getWorkNo() >= 9826 && staProtocol.getWorkNo() <= 9850) {
                                    staProtocol.setStaNo((short) 107);
                                } else if (staProtocol.getWorkNo() >= 9851 && staProtocol.getWorkNo() <= 9875) {
                                    staProtocol.setStaNo((short) 109);
                                } else {
                                    staProtocol.setStaNo((short) 110);
                                }
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            } else {
                                if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
                                    Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                    // 创新一个入库工作档
                                    TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo());
                            if (!Cools.isEmpty(response) && !Cools.isEmpty(jsonObject.get("ReturnStatus")) && jsonObject.get("ReturnStatus").equals(0) && !Cools.isEmpty(jsonObject.get("Result").toString())) {
                                Result result = JSON.parseObject(jsonObject.get("Result").toString(), Result.class);
                                // 创新一个入库工作档
                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(result.getTaskNo()+"");
                                if (Cools.isEmpty(taskWrk)) {
                                    taskWrk = createTask1(result, BoxNo,staProtocol.getSiteId());
                                    if (Cools.isEmpty(taskWrk)) {
                                        taskWrk = createTask1(result, BoxNo);
                                        if (Cools.isEmpty(taskWrk)) {
                                            log.error("库位异常,库位号:={}", taskWrk.getOriginTargetPoint());
                                        } else {
                                            taskWrkService.insert(taskWrk);
                                            StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                                    .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                            staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                            staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                            HashMap<String, Object> hashMap = new HashMap<>();
                                            hashMap.put("TaskNo", taskWrk.getTaskNo());
                                            Boolean bool = false;
                                            try {
                                                //开始上报,任务开始时,WCS回调WMS
                                                response = new HttpHandler.Builder()
                                                        .setUri(wmsUrl)
                                                        .setPath(taskStatusFeedbackPath)
                                                        .setJson(JSON.toJSONString(hashMap))
                                                        .build()
                                                        .doPost();
                                                JSONObject jsonObject1 = JSON.parseObject(response);
                                                if (jsonObject1.get("ReturnStatus").equals(0)) {
                                                    bool = true;
                                                }
                                            } catch (Exception e) {
                                            }finally {
                                                apiLogService.save("wcs开始入库任务上报wms"
                                                        , wmsUrl + TaskExecCallback
                                                        , null
                                                        , "127.0.0.1"
                                                        , JSON.toJSONString(hashMap)
                                                        , response
                                                        , bool
                                                );
                                            }
                                        }
                                        log.error("库位异常,库位号:={}", taskWrk.getOriginTargetPoint());
                                    } else {
//                                    staProtocol.setWorkNo((short) 9991);
                                        if (staProtocol.getWorkNo() >= 9801 && staProtocol.getWorkNo() <= 9825) {
                                            staProtocol.setStaNo((short) 105);
                                        } else if (staProtocol.getWorkNo() >= 9826 && staProtocol.getWorkNo() <= 9850) {
                                            staProtocol.setStaNo((short) 107);
                                        } else if (staProtocol.getWorkNo() >= 9851 && staProtocol.getWorkNo() <= 9875) {
                                            staProtocol.setStaNo((short) 109);
                                        } else {
                                            staProtocol.setStaNo((short) 110);
                                        }
                                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                                        taskWrkService.insert(taskWrk);
                                        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                                .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                        staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                    }
                                        HashMap<String, Object> hashMap = new HashMap<>();
                                        hashMap.put("TaskNo", taskWrk.getTaskNo());
                                        Boolean bool = false;
                                        try {
                                            //开始上报,任务开始时,WCS回调WMS
                                            response = new HttpHandler.Builder()
                                                    .setUri(wmsUrl)
                                                    .setPath(taskStatusFeedbackPath)
                                                    .setJson(JSON.toJSONString(hashMap))
                                                    .build()
                                                    .doPost();
                                            JSONObject jsonObject1 = JSON.parseObject(response);
                                } else {
//                                staProtocol.setWorkNo((short) 9991);
                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                            if (jsonObject1.get("ReturnStatus").equals(0)) {
                                                bool = true;
                                            }
                                        } catch (Exception e) {
                                        } finally {
                                            apiLogService.save("wcs开始入库任务上报wms"
                                                    , wmsUrl + TaskExecCallback
                                                    , null
                                                    , "127.0.0.1"
                                                    , JSON.toJSONString(hashMap)
                                                    , response
                                                    , bool
                                            );
                                        }
                                    }
                                }
                            }
                        } catch (Exception e) {
@@ -423,13 +372,13 @@
                    continue;
                }
                String mbz=taskWrk.getTargetPoint().substring(5);
                String mbz = taskWrk.getTargetPoint().substring(5);
                HashMap<String, Object> hashMap = new HashMap<>();
                hashMap.put("taskNo",taskWrk.getTaskNo());//wms任务号
                hashMap.put("sourceStaNo",staDetl.getDevNo());//源站点
                hashMap.put("staNo",Integer.parseInt(mbz)+"");//目标站
                hashMap.put("locNo",taskWrk.getTargetPoint());//目标库位
                hashMap.put("taskNo", taskWrk.getTaskNo());//wms任务号
                hashMap.put("sourceStaNo", staDetl.getDevNo());//源站点
                hashMap.put("staNo", Integer.parseInt(mbz) + "");//目标站
                hashMap.put("locNo", taskWrk.getTargetPoint());//目标库位
                String response = "";
                Boolean bool = false;
                try {
@@ -442,7 +391,7 @@
                            .doPost();
                    JSONObject jsonObject = JSON.parseObject(response);
                    if(jsonObject.get("code").equals(200)){
                    if (jsonObject.get("code").equals(200)) {
                        bool = true;
//                        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态
                        taskWrk.setAssignTime(new Date());//派发时间
@@ -452,7 +401,7 @@
                        taskWrk.setModiUser(9988L);
                    }
                } catch (Exception e) {
                }finally {
                } finally {
                    apiLogService.save("wcs派发入库任务给RCS"
                            , wcsUrl + wcsInboundTaskApplyPath
                            , null
@@ -521,13 +470,13 @@
                            break;
                        }
                        String mbz=taskWrk.getTargetPoint().substring(5);
                        String mbz = taskWrk.getTargetPoint().substring(5);
                        HashMap<String, Object> hashMap = new HashMap<>();
                        hashMap.put("taskNo",taskWrk.getTaskNo());//wms任务号
                        hashMap.put("sourceStaNo",staDetl.getDevNo());//源站点
                        hashMap.put("staNo",Integer.parseInt(mbz)+"");//目标站
                        hashMap.put("locNo",taskWrk.getTargetPoint());//目标库位
                        hashMap.put("taskNo", taskWrk.getTaskNo());//wms任务号
                        hashMap.put("sourceStaNo", staDetl.getDevNo());//源站点
                        hashMap.put("staNo", Integer.parseInt(mbz) + "");//目标站
                        hashMap.put("locNo", taskWrk.getTargetPoint());//目标库位
                        String response = "";
                        Boolean bool = false;
                        try {
@@ -540,7 +489,7 @@
                                    .doPost();
                            JSONObject jsonObject = JSON.parseObject(response);
                            if(jsonObject.get("code").equals(200)){
                            if (jsonObject.get("code").equals(200)) {
                                bool = true;
//                        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//派发状态
                                taskWrk.setAssignTime(new Date());//派发时间
@@ -550,7 +499,7 @@
                                taskWrk.setModiUser(9988L);
                            }
                        } catch (Exception e) {
                        }finally {
                        } finally {
                            apiLogService.save("wcs派发出库任务给RCS"
                                    , wcsUrl + wcsInboundTaskApplyPath
                                    , null
@@ -1140,35 +1089,21 @@
        return response;
    }
    private TaskWrk createTask1(Result result, String barcode) {
        String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
    private TaskWrk createTask1(Result result, String barcode,Integer devNo) {
        Date now = new Date();
        TaskWrk taskWrk = new TaskWrk();
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(result.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
//        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(result.getTaskNo()+"");//任务号
        taskWrk.setWrkNo(result.getTaskNo());
        taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务状态:派发
        taskWrk.setCreateTime(now);
        taskWrk.setIoType(1);//任务类型
        taskWrk.setIoPri(13);//优先级
        taskWrk.setBarcode(barcode);//条码
        LocMast locMast = locMastService.selectByLocNo(locNo);
        taskWrk.setCrnNo(locMast.getCrnNo());
        taskWrk.setTargetPoint(locNo);
        taskWrk.setStartPoint("116");
        if (result.getAlley().equals("1")) {
            taskWrk.setCrnNo(1);
        } else {
            taskWrk.setCrnNo(2);
        }
        if (taskWrk.getIoType() == 1) {
            taskWrk.setWrkSts(2);
            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
            }
        }
        taskWrk.setTargetPoint(devNo+"");//站点终点
        taskWrk.setStartPoint(devNo+"");//站点起点
        taskWrk.setOriginStartPoint("");//源库位
        taskWrk.setOriginTargetPoint(result.getShelfUnitId());//目标库位
        return taskWrk;
    }