123
zc
2025-05-17 ee1fcbd729e22329594a609919ae26ce8343f421
123
6个文件已修改
168 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/enums/WrkStsType.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/impl/FyDevpThread.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/param/CreateInTaskParam.java
@@ -8,6 +8,9 @@
    //wms任务号
    private String taskNo;
    //wms任务号
    private String taskNo2;
    //源站
    private Integer sourceStaNo;
src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -9,7 +9,8 @@
import com.core.common.SpringUtils;
import com.zy.asrs.mapper.BasWrkIotypeMapper;
import com.zy.asrs.mapper.BasWrkStatusMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.LocMastService;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
import io.swagger.annotations.ApiModelProperty;
@@ -166,6 +167,12 @@
    @ApiModelProperty(value= "WMS任务号")
    @TableField(value = "wms_wrk_no")
    private String wmsWrkNo;
    /**
     * WMS任务号
     */
    @ApiModelProperty(value= "WMS任务号2")
    @TableField(value = "wms_wrk_no2")
    private String wmsWrkNo2;
    /**
     * 系统消息
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -217,6 +217,17 @@
                        if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) {
                            continue;
                        }
                        //检测是否存在出库任务
                        List<WrkMast> wrkMastOutList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                                .in("sta_no", 1024, 1013)
                                .eq("io_type", 101));
                        if (!wrkMastOutList.isEmpty()) {
                            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                            News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId());
                            continue;
                        }
                        // 判断重复工作档
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode));
                        if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) {
@@ -346,6 +357,17 @@
                    Short workNo = staProtocol.getWorkNo();
                    if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) {
                        String barcode = staProtocol.getBarcode();
                        //检测是否存在出库任务
                        List<WrkMast> wrkMastOutList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                                .in("sta_no", 1011, 1021)
                                .eq("io_type", 101));
                        if (!wrkMastOutList.isEmpty()) {
                            MessageQueue.offer(SlaveType.Devp, 1, new Task(3, staProtocol.getSiteId()));
                            News.error("站点存在出库任务,禁止入库,站点={}", staProtocol.getSiteId());
                            continue;
                        }
                        // 判断重复工作档
                        WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode));
                        if (wrkMast == null) {
@@ -479,6 +501,26 @@
            if (devpThread == null) {
                continue;
            }
            //检测是否存在入库任务
            Integer checkInSourceStaNo = null;
            if (wrkMast.getStaNo() == 1013) {
                checkInSourceStaNo = 1014;
            } else if (wrkMast.getStaNo() == 1024) {
                checkInSourceStaNo = 1025;
            } else {
                continue;
            }
            List<WrkMast> wrkMastInList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                    .eq("source_sta_no", checkInSourceStaNo)
                    .eq("io_type", 1));
            if (!wrkMastInList.isEmpty()) {
                MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo());
                continue;
            }
            Map<Integer, StaProtocol> station = devpThread.getStation();
            StaProtocol staProtocol = station.get(wrkMast.getStaNo());
            if (staProtocol == null) {
@@ -994,6 +1036,11 @@
            if (wrkMast.getSourceStaNo() == 1022) {
                led = 3;
            } else if (wrkMast.getSourceStaNo() == 1031) {
                //工作号一致判断
                if (!staProtocol.getFinishWorkNo().equals(wrkMast.getWmsWrkNo2())) {
                    News.taskInfo(wrkMast.getWrkNo(), "{}工作号1,{}工作号2,1135过来的托盘,为将工作号写到至1031", staProtocol.getFinishWorkNo(), wrkMast.getWmsWrkNo2());
                    return false;
                }
            }
            // 尺寸检测异常
            boolean back = false;
@@ -1066,6 +1113,12 @@
                staNo = 1023;
            } else if (wrkMast.getSourceStaNo() == 1031) {
                staNo = 1032;
                //检测1135货物是否到达1031,到达才允许走到1032
                if (!(staProtocol.isAutoing()
                        && staProtocol.isLoading())
                ) {
                    return false;
                }
            }
            staProtocol = staProtocol.clone();
@@ -1286,6 +1339,26 @@
        try {
            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts).in("sta_no", 1011, 1021, 1031));
            for (WrkMast wrkMast : wrkMasts) {
                //检测是否存在入库任务
                Integer checkInSourceStaNo = null;
                if (wrkMast.getStaNo() == 1011) {
                    checkInSourceStaNo = 1012;
                } else if (wrkMast.getStaNo() == 1021) {
                    checkInSourceStaNo = 1022;
                }
                if (checkInSourceStaNo != null) {
                    List<WrkMast> wrkMastInList = wrkMastService.selectList(new EntityWrapper<WrkMast>()
                            .eq("source_sta_no", checkInSourceStaNo)
                            .eq("io_type", 1));
                    if (!wrkMastInList.isEmpty()) {
                        MessageQueue.offer(SlaveType.Devp, 1, new Task(3, wrkMast.getStaNo()));
                        News.error("站点存在入库任务,禁止出库,站点={}", wrkMast.getStaNo());
                        continue;
                    }
                }
                boolean step1 = this.liftOutExecuteStep1(wrkMast);//触发搬运任务
                if (!step1) {
                    continue;
@@ -1411,8 +1484,6 @@
            //获取提升机命令
            List<LiftCommand> liftCommands = liftThread.getPalletOutCommand(wrkMast.getWrkNo(), sourceLev, wrkMast.getStaNo());
            LiftCommand liftCommand = liftCommands.get(0);
            int deviceWrk = commonService.getWorkNo(8);//生成提升机设备工作号
            liftCommand.setTaskNo(deviceWrk);//更换随机任务号
            ArrayList<LiftCommand> commands = new ArrayList<>();
            commands.add(liftCommand);
@@ -1847,16 +1918,18 @@
                } else if (staProtocol.getSiteId() == 1031 && staProtocol.isLoading()) {
                    wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getFinishWorkNo()).eq("wrk_sts", WrkStsType.OUTBOUND_DEVP_RUN_2.sts));
                    if (wrkMast != null) {
                        staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo())));
                        staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWmsWrkNo())));
                        staProtocol.setStaNo(Short.parseShort(String.valueOf(1135)));
                        MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                        News.taskInfo(wrkMast.getWrkNo(), "输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast));
                        wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
                        wrkMast.setModiTime(new Date());
                        if (wrkMastService.updateById(wrkMast)) {
                            News.taskInfo(wrkMast.getWrkNo(), "输送线已确认且任务完成状态。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo());
                        } else {
                            News.error("输送线已确认且任务完成状态,复位失败,但未找到工作档。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo());
                        boolean offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol));
                        if (offer) {
                            News.taskInfo(wrkMast.getWrkNo(), "输送线入库命令下发,任务数据={}", JSON.toJSON(wrkMast));
                            wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts);
                            wrkMast.setModiTime(new Date());
                            if (wrkMastService.updateById(wrkMast)) {
                                News.taskInfo(wrkMast.getWrkNo(), "输送线已确认且任务完成状态。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo());
                            } else {
                                News.error("输送线已确认且任务完成状态,复位失败,但未找到工作档。输送线号={},完结工作号={}", staProtocol.getSiteId(), staProtocol.getFinishWorkNo());
                            }
                        }
                    }
                }
src/main/java/com/zy/common/service/CommonService.java
@@ -206,6 +206,7 @@
        wrkMast.setBarcode(param.getBarcode());
        wrkMast.setAppeTime(now);
        wrkMast.setModiTime(now);
        wrkMast.setWmsWrkNo2(param.getTaskNo2());
        boolean res = wrkMastService.insert(wrkMast);
        if (!res) {
            News.error("入库任务 --- 保存工作档失败!");
src/main/java/com/zy/core/enums/WrkStsType.java
@@ -19,7 +19,7 @@
    OUTBOUND_LIFT_RUN(104, "提升机搬运中"),
    OUTBOUND_LIFT_RUN_COMPLETE(105, "提升机搬运完成"),
    OUTBOUND_DEVP_RUN(106, "输送线搬运中"),
    OUTBOUND_DEVP_RUN_2(107, "输送线搬运中"),
    OUTBOUND_DEVP_RUN_2(107, "调拨任务1013->1135"),
    COMPLETE_OUTBOUND(109, "出库完成"),
    SETTLE_OUTBOUND(110, "出库库存更新"),
src/main/java/com/zy/core/thread/impl/FyDevpThread.java
@@ -99,6 +99,10 @@
                        write((StaProtocol) task.getData());
                        read();
                        break;
                    // 报警
                    case 3:
                        writeError((Integer) task.getData());
                        break;
                    default:
                        break;
                }
@@ -252,6 +256,60 @@
    }
    /**
     * 报警
     */
    private void writeError(Integer staNo) throws InterruptedException {
        if (null == staNo) {
            return;
        }
        ArrayList<Integer> lift1 = new ArrayList<Integer>() {{
            add(1011);
            add(1012);
        }};
        ArrayList<Integer> lift2 = new ArrayList<Integer>() {{
            add(1021);
            add(1022);
            add(1023);
        }};
        ArrayList<Integer> devp1 = new ArrayList<Integer>() {{
            add(1013);
            add(1014);
            add(1015);
        }};
        ArrayList<Integer> devp2 = new ArrayList<Integer>() {{
            add(1024);
            add(1025);
            add(1026);
        }};
        String dbAddress = "DB82.48";
        if (lift1.contains(staNo)) {
            dbAddress = "DB82.48";
        } else if (lift2.contains(staNo)) {
            dbAddress = "DB82.178";
        } else if (devp1.contains(staNo)) {
            dbAddress = "DB82.100";
        } else if (devp2.contains(staNo)) {
            dbAddress = "DB82.256";
        }else {
            return;
        }
        OperateResult write1 = siemensS7Net.Write(dbAddress, (short) 1);
        if (!write1.IsSuccess) {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点报警数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(true)));
            log.error("写入输送线站点报警数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(true));
            return;
        }
        OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点报警数据成功。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(true)));
        log.info("写入输送线站点报警数据成功。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(true));
    }
    /**
     * 心跳
     */
    private void heartbeat() {