1
zhang
2025-06-16 8b9b604e379f92dc61fb55e1454b7f1d107428d9
1
6个文件已修改
2个文件已添加
618 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/SiteController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/Result.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/ToWmsService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 383 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/ToWmsServiceImpl.java 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/CommandUtils.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -9,7 +9,7 @@
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zy</groupId>
    <artifactId>scwcs</artifactId>
    <artifactId>wcs</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>
src/main/java/com/zy/asrs/controller/SiteController.java
@@ -48,8 +48,8 @@
            SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
            Map<String, Object> map2 = new HashMap<>();
            map2.put("floor", 2);
            map2.put("modeVal", devpThread.ioModeOf1F.id);
            map2.put("modeDesc", devpThread.ioModeOf1F.desc);
            map2.put("modeVal", devpThread.ioModeOf1F1.id);
            map2.put("modeDesc", devpThread.ioModeOf1F1.desc);
            res.add(map2);
        }
        return R.ok().add(res);
src/main/java/com/zy/asrs/entity/param/Result.java
New file
@@ -0,0 +1,21 @@
package com.zy.asrs.entity.param;
import lombok.Data;
@Data
public class Result {
    /**
     * 分配的货位所属任务ID
     */
    private String taskNo;
    /**
     * 库位号
     */
    private String locNo;
    /**
     * 堆垛机编号
     */
    private Integer crnNo;
}
src/main/java/com/zy/asrs/service/ToWmsService.java
@@ -1,10 +1,10 @@
package com.zy.asrs.service;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.wms.StorageEscalationParam;
import com.zy.asrs.entity.param.StorageEscalationParam;
import com.zy.asrs.entity.wms.WmsResult;
public interface ToWmsService {
public interface  ToWmsService {
    void addReportLog(TaskWrk taskWrk);
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -12,7 +12,6 @@
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.Result;
import com.zy.asrs.entity.param.StorageEscalationParam;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.mapper.BasCrnErrorMapper;
@@ -388,172 +387,172 @@
        }
    }
    //拣料回库
    public synchronized void PickingAndReturningToTheWarehouse() throws IOException, InterruptedException {
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
                // 遍历入库口
                for (DevpSlave.Sta inSta : devp.getPickSta()) {
                    StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
                    // 获取入库站信息
                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    Short workNo = staProtocol.getWorkNo();
                    //led
                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
                            && staProtocol.isInEnable()
                            && staProtocol.isPakMk()) {
                        // 获取条码扫描仪信息
                        String BoxNo = "";
                        //站点拣料回库任务是会有一条
                        TaskWrk taskWrkk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point", staProtocol.getSiteId()));
                        if (!Cools.isEmpty(taskWrkk)) {
                            continue;
                        }
                        if (!staProtocol.isEmptyMk() && staProtocol.getWorkNo() < 9990) {
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo));
                            if (!Cools.isEmpty(taskWrk1)) {
                                BoxNo = taskWrk1.getBarcode();
                            } else {
                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
                                if (taskWrkLog != null) {
                                    BoxNo = taskWrkLog.getBarcode();
                                }
                            }
                        }
                        log.info("组托入库={}", storageEscalationParam);
                        storageEscalationParam.setBoxNo(BoxNo);
                        //是否满板 1满板  0空板
                        storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
                        //库位类型 1高库位 0低库位
                        storageEscalationParam.setLocType(staProtocol.isHigh() ? 1 : 0);
                        storageEscalationParam.setTerminalNo(staProtocol.getSiteId());
                        String response = "";
                        Boolean success = false;
                        try {
                            response = new HttpHandler.Builder()
                                    .setUri(wmsUrl)
                                    .setPath(inboundTaskApplyPath)
                                    .setJson(JSON.toJSONString(storageEscalationParam))
                                    .build()
                                    .doPost();
                            JSONObject jsonObject = JSON.parseObject(response);
                            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)) {
                                        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());
                                        try {
                                            //开始上报,任务开始时,WCS回调WMS
                                            response = new HttpHandler.Builder()
                                                    .setUri(wmsUrl)
                                                    .setPath(taskStatusFeedbackPath)
                                                    .setJson(JSON.toJSONString(hashMap))
                                                    .build()
                                                    .doPost();
                                            JSONObject jsonObject1 = JSON.parseObject(response);
                                            Boolean bool = false;
                                            if (jsonObject1.get("ReturnStatus").equals(0)) {
                                                taskWrk.setStatus(2);//派发任务
                                                bool = true;
                                                taskWrkService.updateById(taskWrk);
                                            }
                                            apiLogService.save("wcs开始入库任务上报wms"
                                                    , wmsUrl + TaskExecCallback
                                                    , null
                                                    , "127.0.0.1"
                                                    , JSON.toJSONString(hashMap)
                                                    , response
                                                    , bool
                                            );
                                        } catch (Exception e) {
                                        }
                                    }
                                } else {
                                    // led 异常显示
                                    if (ledThread != null) {
                                        String errorMsg = "任务已存在!!!!";
                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                    }
                                    staProtocol.setWorkNo((short) 9991);
                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                }
                            } else {
                                // led 异常显示
                                if (ledThread != null) {
                                    String errorMsg = jsonObject.getString("ErrorMessage");
                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
                                }
                                staProtocol.setWorkNo((short) 9991);
                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            }
                        } catch (Exception e) {
                            log.error("请求入库调用接口失败");
                            log.error("异常信息打印:" + e);
                            try {
                                BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
                                if (Cools.isEmpty(basDevp)) {
                                    log.error("站点号异常" + inSta.getStaNo());
                                } else if (basDevp.getStaErr() != 0) {
                                    basDevp.setStaErr(2);
                                    basDevpService.updateById(basDevp);
                                }
                            } catch (Exception e1) {
                                // 退回
                                log.error("扫码检测程序异常" + inSta.getStaNo() + "异常信息" + e1);
                            }
                        } finally {
                            apiLogService.save("wms请求入库货位接口"
                                    , wmsUrl + inboundTaskApplyPath
                                    , null
                                    , "127.0.0.1"
                                    , JSON.toJSONString(storageEscalationParam)
                                    , response
                                    , success
                            );
                        }
                        log.info("入库请求参数=" + JSON.toJSONString(BoxNo));
                        log.info("入库请求返回参数=" + JSON.toJSONString(response));
                    }
                }
            }
        } catch (Exception e) {
            log.error("generateStoreWrkFile e", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
//    //拣料回库
//    public synchronized void PickingAndReturningToTheWarehouse() throws IOException, InterruptedException {
//        try {
//            // 根据输送线plc遍历
//            for (DevpSlave devp : slaveProperties.getDevp()) {
//                // 遍历入库口
//                for (DevpSlave.Sta inSta : devp.getPickSta()) {
//                    StorageEscalationParam storageEscalationParam = new StorageEscalationParam();
//                    // 获取入库站信息
//                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
//                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
//                    if (staProtocol == null) {
//                        continue;
//                    } else {
//                        staProtocol = staProtocol.clone();
//                    }
//                    Short workNo = staProtocol.getWorkNo();
//                    //led
//                    LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed());
//
//                    // 判断是否满足入库条件
//                    if (staProtocol.isAutoing() && staProtocol.isLoading()
//                            && staProtocol.isInEnable()
//                            && staProtocol.isPakMk()) {
//                        // 获取条码扫描仪信息
//                        String BoxNo = "";
//                        //站点拣料回库任务是会有一条
//                        TaskWrk taskWrkk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("start_point", staProtocol.getSiteId()));
//                        if (!Cools.isEmpty(taskWrkk)) {
//                            continue;
//                        }
//                        if (!staProtocol.isEmptyMk() && staProtocol.getWorkNo() < 9990) {
//
//                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no", workNo));
//
//                            if (!Cools.isEmpty(taskWrk1)) {
//                                BoxNo = taskWrk1.getBarcode();
//                            } else {
//                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
//                                if (taskWrkLog != null) {
//                                    BoxNo = taskWrkLog.getBarcode();
//                                }
//                            }
//                        }
//                        log.info("组托入库={}", storageEscalationParam);
//                        storageEscalationParam.setBoxNo(BoxNo);
//                        //是否满板 1满板  0空板
//                        storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
//                        //库位类型 1高库位 0低库位
//                        storageEscalationParam.setLocType(staProtocol.isHigh() ? 1 : 0);
//                        storageEscalationParam.setTerminalNo(staProtocol.getSiteId());
//                        String response = "";
//                        Boolean success = false;
//                        try {
//                            response = new HttpHandler.Builder()
//                                    .setUri(wmsUrl)
//                                    .setPath(inboundTaskApplyPath)
//                                    .setJson(JSON.toJSONString(storageEscalationParam))
//                                    .build()
//                                    .doPost();
//                            JSONObject jsonObject = JSON.parseObject(response);
//
//                            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)) {
//                                        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());
//                                        try {
//                                            //开始上报,任务开始时,WCS回调WMS
//                                            response = new HttpHandler.Builder()
//                                                    .setUri(wmsUrl)
//                                                    .setPath(taskStatusFeedbackPath)
//                                                    .setJson(JSON.toJSONString(hashMap))
//                                                    .build()
//                                                    .doPost();
//                                            JSONObject jsonObject1 = JSON.parseObject(response);
//                                            Boolean bool = false;
//                                            if (jsonObject1.get("ReturnStatus").equals(0)) {
//                                                taskWrk.setStatus(2);//派发任务
//                                                bool = true;
//                                                taskWrkService.updateById(taskWrk);
//                                            }
//                                            apiLogService.save("wcs开始入库任务上报wms"
//                                                    , wmsUrl + TaskExecCallback
//                                                    , null
//                                                    , "127.0.0.1"
//                                                    , JSON.toJSONString(hashMap)
//                                                    , response
//                                                    , bool
//                                            );
//                                        } catch (Exception e) {
//
//                                        }
//                                    }
//                                } else {
//                                    // led 异常显示
//                                    if (ledThread != null) {
//                                        String errorMsg = "任务已存在!!!!";
//                                        MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
//                                    }
//                                    staProtocol.setWorkNo((short) 9991);
//                                    staProtocol.setStaNo(inSta.getBackSta().shortValue());
//                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
//                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//                                }
//
//                            } else {
//                                // led 异常显示
//                                if (ledThread != null) {
//                                    String errorMsg = jsonObject.getString("ErrorMessage");
//                                    MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errorMsg));
//                                }
//                                staProtocol.setWorkNo((short) 9991);
//                                staProtocol.setStaNo(inSta.getBackSta().shortValue());
//                                devpThread.setPakMk(staProtocol.getSiteId(), false);
//                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//                            }
//
//                        } catch (Exception e) {
//                            log.error("请求入库调用接口失败");
//                            log.error("异常信息打印:" + e);
//                            try {
//                                BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
//                                if (Cools.isEmpty(basDevp)) {
//                                    log.error("站点号异常" + inSta.getStaNo());
//                                } else if (basDevp.getStaErr() != 0) {
//                                    basDevp.setStaErr(2);
//                                    basDevpService.updateById(basDevp);
//                                }
//                            } catch (Exception e1) {
//                                // 退回
//                                log.error("扫码检测程序异常" + inSta.getStaNo() + "异常信息" + e1);
//                            }
//                        } finally {
//                            apiLogService.save("wms请求入库货位接口"
//                                    , wmsUrl + inboundTaskApplyPath
//                                    , null
//                                    , "127.0.0.1"
//                                    , JSON.toJSONString(storageEscalationParam)
//                                    , response
//                                    , success
//                            );
//                        }
//                        log.info("入库请求参数=" + JSON.toJSONString(BoxNo));
//                        log.info("入库请求返回参数=" + JSON.toJSONString(response));
//                    }
//                }
//            }
//        } catch (Exception e) {
//            log.error("generateStoreWrkFile e", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//        }
//    }
    public synchronized void generateStoreWrkFile() throws IOException, InterruptedException {
        try {
@@ -1705,31 +1704,31 @@
        return response;
    }
    private TaskWrk createTask1(Result result, String barcode, Integer staNo) {
        String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
        Date now = new Date();
        TaskWrk taskWrk = new TaskWrk();
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(result.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        taskWrk.setIoType(1);//任务类型 入库
        taskWrk.setIoPri(13);//优先级
        taskWrk.setBarcode(barcode);//条码
        taskWrk.setTargetPoint(locNo);
        taskWrk.setStartPoint(staNo + "");
        taskWrk.setCrnNo(Integer.valueOf(result.getAlley()));//堆垛机号
        if (taskWrk.getIoType() == 1) {
            taskWrk.setWrkSts(2);
            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
            }
        }
        return taskWrk;
    }
//    private TaskWrk createTask1(Result result, String barcode, Integer staNo) {
//        String locNo = Utils.Fusion(result.getRow(), result.getFloor(), result.getColumn());
//
//        Date now = new Date();
//        TaskWrk taskWrk = new TaskWrk();
//        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
//        taskWrk.setTaskNo(result.getTaskNo());//任务号
//        taskWrk.setWrkNo(workNo1);
//        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
//        taskWrk.setCreateTime(now);
//        taskWrk.setIoType(1);//任务类型 入库
//        taskWrk.setIoPri(13);//优先级
//        taskWrk.setBarcode(barcode);//条码
//        taskWrk.setTargetPoint(locNo);
//        taskWrk.setStartPoint(staNo + "");
//        taskWrk.setCrnNo(Integer.valueOf(result.getAlley()));//堆垛机号
//
//        if (taskWrk.getIoType() == 1) {
//            taskWrk.setWrkSts(2);
//            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
//                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
//            }
//        }
//        return taskWrk;
//    }
    private TaskWrk createTask(GetWmsDto dto, String barcode) {
        String wcsLocNo = dto.getLocNo();
src/main/java/com/zy/asrs/service/impl/ToWmsServiceImpl.java
@@ -8,7 +8,7 @@
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.entity.TaskWrkReport;
import com.zy.asrs.entity.wms.StorageEscalationParam;
import com.zy.asrs.entity.param.StorageEscalationParam;
import com.zy.asrs.entity.wms.WmsResult;
import com.zy.asrs.service.*;
import com.zy.common.service.CommonService;
@@ -84,44 +84,44 @@
    @Override
    public TaskWrk getLocNoFromWms(StorageEscalationParam wmsParam) {
        String response = "";
        Boolean success = false;
        try {
            response = new HttpHandler.Builder()
                    .setUri(wmsUrl)
                    .setPath(inboundTaskApplyPath)
                    .setJson(JSON.toJSONString(wmsParam))
                    .build()
                    .doPost();
            if (!Cools.isEmpty(response)) {
                JSONObject jsonObject = JSON.parseObject(response);
                if (!Cools.isEmpty(jsonObject.get(code)) && jsonObject.get(code).equals(successCode)) {
                    //有些三方wms系统不能及时返回库位号,这时候就需要
                    //ZWmsResult result = JSON.parseObject(jsonObject.get(data).toString(), WmsResult.class);
                    TaskWrk taskWrk = null;
                    int i = 1;
                    while (i < 10) {
                        taskWrk = taskWrkService.selectByBarcode(wmsParam.getBarcode());
                        if (taskWrk != null) {
                            break;
                        }
                        try {
                            i++;
                            Thread.sleep(500L);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                    return taskWrk;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            log.info("请求wms报错,{}", e.getMessage());
        } finally {
            addApiLog("入库任务请求获取库位", wmsUrl + inboundTaskApplyPath, JSON.toJSONString(wmsParam), response, success);
        }
        return null;
//        String response = "";
//        Boolean success = false;
//        try {
//            response = new HttpHandler.Builder()
//                    .setUri(wmsUrl)
//                    .setPath(inboundTaskApplyPath)
//                    .setJson(JSON.toJSONString(wmsParam))
//                    .build()
//                    .doPost();
//            if (!Cools.isEmpty(response)) {
//                JSONObject jsonObject = JSON.parseObject(response);
//                if (!Cools.isEmpty(jsonObject.get(code)) && jsonObject.get(code).equals(successCode)) {
//                    //有些三方wms系统不能及时返回库位号,这时候就需要
//                    //ZWmsResult result = JSON.parseObject(jsonObject.get(data).toString(), WmsResult.class);
//                    TaskWrk taskWrk = null;
//                    int i = 1;
//                    while (i < 10) {
//                        taskWrk = taskWrkService.selectByBarcode(wmsParam.getBarcode());
//                        if (taskWrk != null) {
//                            break;
//                        }
//                        try {
//                            i++;
//                            Thread.sleep(500L);
//                        } catch (InterruptedException e) {
//                            throw new RuntimeException(e);
//                        }
//                    }
//                    return taskWrk;
//                }
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//            log.info("请求wms报错,{}", e.getMessage());
//        } finally {
//            addApiLog("入库任务请求获取库位", wmsUrl + inboundTaskApplyPath, JSON.toJSONString(wmsParam), response, success);
//        }
          return null;
    }
src/main/java/com/zy/asrs/utils/CommandUtils.java
New file
@@ -0,0 +1,112 @@
package com.zy.asrs.utils;
import com.alibaba.fastjson.JSON;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.TaskWrkService;
import com.zy.core.cache.MessageQueue;
import com.zy.core.enums.CommandStatusType;
import com.zy.core.enums.CommandType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.Task;
import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.StaProtocol;
import java.util.Date;
public class CommandUtils {
    public static boolean offer(SlaveType type, Integer id, Task task) {
        return offer(type, id, task, true);
    }
    public static boolean offer(SlaveType type, Integer id, Task task, Boolean auto) {
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        if (commandInfoService == null) {
            return false;
        }
        TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
        if (taskWrkService == null) {
            return false;
        }
        CommandInfo commandInfo = null;
        TaskWrk taskWrk = null;
        int wrkNo = 0;//工作号
        String taskNo = null;//任务号
        if (type == SlaveType.Crn) {
            CommandPackage<CrnCommand> commandPackage = new CommandPackage<>();
            CrnCommand command = (CrnCommand) task.getData();
            wrkNo = command.getTaskNo();
            if (auto && wrkNo != 0) {
                taskWrk = taskWrkService.selectByWrkNo(wrkNo);
                taskNo = taskWrk.getTaskNo();
            }
            commandInfo = new CommandInfo();
            commandInfo.setWrkNo(wrkNo);
            commandInfo.setTaskNo(taskNo);
            commandInfo.setCommandStatus(CommandStatusType.CREATE.id);
            commandInfo.setStartTime(new Date());
            commandInfo.setDevice(SlaveType.Crn.toString());
            commandInfo.setCommandType(auto ? CommandType.AUTO.id : CommandType.MANUAL.id);
            commandInfoService.insert(commandInfo);//插入指令
            command.setCommandId(commandInfo.getId());
            commandPackage.setWrkNo(wrkNo);
            commandPackage.setDevice("堆垛机");
            commandPackage.setCommand(command);//保存命令报文
            commandInfo.setCommand(JSON.toJSONString(commandPackage));
            commandInfoService.updateById(commandInfo);
            if (!auto) {
                //将指令进行投递
                if (!MessageQueue.offer(type, id, task)) {
                    return false;
                }
            }
            return true;
        } else if (type == SlaveType.Devp) {
            CommandPackage<StaProtocol> commandPackage = new CommandPackage<>();
            StaProtocol staProtocol = (StaProtocol) task.getData();
            wrkNo = staProtocol.getWorkNo();
            if (auto && wrkNo != 0) {
                taskWrk = taskWrkService.selectByWrkNo(wrkNo);
                taskNo = taskWrk.getTaskNo();
            }
            commandInfo = new CommandInfo();
            commandInfo.setWrkNo(wrkNo);
            commandInfo.setTaskNo(taskNo);
            commandInfo.setCommandStatus(CommandStatusType.CREATE.id);
            commandInfo.setStartTime(new Date());
            commandInfo.setDevice(SlaveType.Devp.toString());
            commandInfo.setCommandType(auto ? CommandType.AUTO.id : CommandType.MANUAL.id);
            commandInfoService.insert(commandInfo);//插入指令
            staProtocol.setCommandId(commandInfo.getId());
            commandPackage.setCommand(staProtocol);
            commandPackage.setWrkNo(wrkNo);
            commandPackage.setDevice("输送线");
            commandInfo.setCommand(JSON.toJSONString(commandPackage));//保存命令报文
            commandInfoService.updateById(commandInfo);
            if (!auto) {
                //将指令进行投递
                if (!MessageQueue.offer(type, id, task)) {
                    return false;
                }
            }
            return true;
        }
        return false;
    }
}
src/main/resources/application-prod.yml
@@ -23,6 +23,20 @@
      lev: 1
      backSta: 100
      devpPlcId: 1
  devp[0]:
    id: 1
    ip:
    rack: 0
    port: 102
    slot: 0
    emptyInSta[0]: #空板入库口0
      staNo: 100
    inSta[0]: #入库口1
      staNo: 100
    outSta[0]: #出库口1
      staNo: 100