野心家
2025-05-17 0fe2f60a5f2018fa97ead4727e04b055d4907e99
初始化
7个文件已修改
224 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MonitorController.java 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LedThread.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/wcs/js/console.map.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -12,7 +12,9 @@
import com.zy.core.CrnThread;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.LedSlave;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.LedThread;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -34,6 +36,8 @@
    @Autowired
    private ReportQueryMapper reportQueryMapper;
    @Autowired
    private SlaveProperties slaveProperties;
    /**
     * 获取当前时间
@@ -232,50 +236,6 @@
                .add("usedPr", usedPr)
        );
    }
    /**
     * 自动补零
     */
@@ -347,8 +307,20 @@
        }
    }
    /**
     * 异常通知
     */
    @GetMapping("/led/error")
    public R monitorLedError(@RequestParam("ledId") Integer ledId) {
        String errorMsg = "";
        for (LedSlave slave : slaveProperties.getLed()) {
            if (slave.getStaArr().contains(ledId)) {
                LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, slave.getId());
                if (null != ledThread) {
                    errorMsg = ledThread.getErrorMsg().toString();
                }
            }
        }
        return R.ok().add(errorMsg);
    }
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -29,6 +29,7 @@
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.LedSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
@@ -36,6 +37,7 @@
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.BarcodeThread;
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.system.entity.Config;
import com.zy.system.service.ConfigService;
@@ -343,27 +345,29 @@
                            && staProtocol.isPakMk()) {
                        // 获取条码扫描仪信息
                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                        if (barcodeThread == null) {
                            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;
                        String BoxNo = "";
                        if (barcodeThread != null) {
                            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 (back) {
                                storageEscalationParam.setWCSStatus(1);
                                storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                            }
                        }
                        if (back) {
                            storageEscalationParam.setWCSStatus(1);
                            storageEscalationParam.setWCSErrorMessage(storageEscalationParam.getWCSErrorMessage() + errMsg);
                        }
                        storageEscalationParam.setBoxNo(BoxNo);
                        //是否满板 1满板  0空板
                        storageEscalationParam.setStaType(staProtocol.isEmptyMk() ? 0 : 1);
@@ -504,13 +508,19 @@
                            && 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("task_no", workNo));
                            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("task_no", workNo).orderBy("modi_time", false));
                                TaskWrkLog taskWrkLog = taskWrkLogService.selectOne(new EntityWrapper<TaskWrkLog>().eq("wrk_no", workNo).orderBy("modi_time", false));
                                if (taskWrkLog != null) {
                                    BoxNo = taskWrkLog.getBarcode();
                                }
@@ -536,6 +546,7 @@
                            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)) {
@@ -932,7 +943,7 @@
                            staProtocol.setStaNo(staDesc.getStnNo().shortValue());
                            boolean offer = false;
                            try {
                                offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                                offer = MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol));
                            } catch (Exception e) {
                                log.error("下发输送线任务失败:异常:" + e);
                                log.error("下发输送线任务失败:异常:offer:" + offer);
@@ -1836,4 +1847,43 @@
        return taskWrk;
    }
    //----------------------------------------------------------电视机显示处理----------------------------------------
    /**
     * 其他  ===>> LED显示器复位,显示默认信息
     */
    public synchronized void ledReset(Integer mark) {
//        log.info(""+mark+" - 0"+" - 开始执行:其他  ===>> LED显示器复位,显示默认信息");
        for (LedSlave led : slaveProperties.getLed()) {
            // 获取输送线plc线程
            DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
            // 命令集合
            boolean reset = true;
            for (Integer staNo : led.getStaArr()) {
                // 获取叉车站点
                StaProtocol staProtocol = devpThread.getStation().get(staNo);
                if (staProtocol == null) {
                    continue;
                }
                if (staProtocol.getWorkNo() != 0 && staProtocol.isLoading()) {
                    reset = false;
                    break;
                }
            }
            // 获取led线程
            LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId());
            // led显示默认内容
            if (reset && !ledThread.isLedMk()) {
                ledThread.setLedMk(true);
                if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(4, new ArrayList<>()))) {
                    log.error(""+mark+" - 1"+" - {}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort());
                } else {
                }
            }
        }
//        log.info(""+mark+" - 0"+" - 执行完成:其他  ===>> LED显示器复位,显示默认信息");
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -50,6 +50,8 @@
                    mainService.crnDemoOfLocMove1();
                    // 入库  ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档
                    mainService.generateStoreWrkFile1(); // 组托
                    // 入库  ===>> 拣料盘点回库,输送线工作号保留的情况下入库
                    mainService.PickingAndReturningToTheWarehouse();
                    // 出库  ===>>  堆垛机出库站到出库站
                    mainService.crnStnToOutStn();
                    // 入出库  ===>>  堆垛机入出库作业下发
@@ -59,8 +61,10 @@
                    // 堆垛机异常信息记录
                    mainService.recCrnErr();
                    // 入库  ===>> 空栈板初始化入库,叉车入库站放货
//                    mainService.storeEmptyPlt();
                    // 其他  ===>> LED显示器复位,显示默认信息
                    mainService.ledReset(10);
//                    mainService.outOfDevp();
src/main/java/com/zy/core/thread/LedThread.java
@@ -48,6 +48,7 @@
    private Set<Integer> workNos = new HashSet<>();
    private boolean ledMk = false;
    private boolean resetStatus = false;    // 复位状态
    private StringBuffer errorMsg = new StringBuffer();
    public LedThread(Slave slave) {
        this.slave = slave;
@@ -77,6 +78,9 @@
                        // 复位
                        case 2:
                            reset();
                            break;
                        case 5:
                            error((String) task.getData());
                            break;
                        default:
                            break;
@@ -459,8 +463,10 @@
        //
        // 继开与控制器之间的链接
        screen.disconnect();
    }
    private void error(String msg) {
        errorMsg.delete(0, errorMsg.length());
        errorMsg.append(msg);
    }
}
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -324,23 +324,23 @@
        }
        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
        if (resultErr.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
                StaProtocol staProtocol = station.get(siteId);
                staProtocol.setBreakerErr(status[0]);
                staProtocol.setInfraredErr(status[1]);
                staProtocol.setOutTimeErr(status[2]);
                staProtocol.setSeizeSeatErr(status[3]);
                staProtocol.setWrkYgoodsN(status[4]);
                staProtocol.setInverterErr(status[5]);
                staProtocol.setContactErr(status[6]);
                staProtocol.setUpcontactErr(status[7]);
            }
        }
//        OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0", (short) (staNoSize * 4));
//        if (resultErr.IsSuccess) {
//            for (int i = 0; i < staNoSize; i++) {
//                Integer siteId = staNos.get(i); // 站点编号
//                boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i * 4, 1);
//                StaProtocol staProtocol = station.get(siteId);
//                staProtocol.setBreakerErr(status[0]);
//                staProtocol.setInfraredErr(status[1]);
//                staProtocol.setOutTimeErr(status[2]);
//                staProtocol.setSeizeSeatErr(status[3]);
//                staProtocol.setWrkYgoodsN(status[4]);
//                staProtocol.setInverterErr(status[5]);
//                staProtocol.setContactErr(status[6]);
//                staProtocol.setUpcontactErr(status[7]);
//
//            }
//        }
//        //RGV台车位置
src/main/resources/application-prod.yml
@@ -1,10 +1,10 @@
wcs-slave:
  doubleDeep: true #双深
  doubleLocs: 1,4 #双深库位排号 1,4
  doubleLocs: 5,8 #双深库位排号 1,4
  groupCount: 4 #一个堆垛机负责的货架排数
  crn[0]: #堆垛机1
    id: 1
    ip: 10.10.10.110
    ip: 192.168.110.100
    slot: 0
    demo: false
    rack: 0
@@ -38,7 +38,7 @@
      devpPlcId: ${wcs-slave.devp[1].id}
  crn[1]: #堆垛机2
    id: 2
    ip: 10.10.10.120
    ip: 192.168.110.90
    slot: 0
    demo: false
    rack: 0
@@ -196,12 +196,12 @@
    rack: 0
    port: 102
    slot: 0
    emptyInSta[0]: #空板入库口0
      staNo: 1058
    inSta[0]: #入库口1
      staNo: 1052
      backSta: 1051
      barcode: ${wcs-slave.barcode[2].id}
    inSta[1]: #空板入库口0
        staNo: 1058
    outSta[0]: #出库口1
      staNo: 1053
  devp[3]: #输送线--成品2F
src/main/webapp/static/wcs/js/console.map.js
@@ -14,7 +14,7 @@
        "width": 795,
        "height": 23,
        "minBayNo": 1,
        "maxBayNo": 22,
        "maxBayNo": 50,
        "hiddenArr": [1,22]
    }, {
        "type": "rack",