#
zjj
2024-05-09 cb2d5d9ac39efdb38d8a301f7396ac1ab171efc1
#
13个文件已修改
1个文件已添加
463 ■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/WrkMastSta.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastStaService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/Utils.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastStaMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/images/RMLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console-old.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastSta.java
@@ -36,6 +36,10 @@
    @TableField("wrk_no")
    private Long wrkNo;
    @ApiModelProperty(value= "工作号")
    @TableField("wrk_no2")
    private Long wrkNo2;
    /**
     * 工作档开始位置
     */
src/main/java/com/zy/asrs/mapper/WrkMastStaMapper.java
@@ -9,4 +9,7 @@
@Repository
public interface WrkMastStaMapper extends BaseMapper<WrkMastSta> {
    WrkMastSta selectByRgvNoandWrkNo(Integer rgvNo, Integer taskNo);
    WrkMastSta selectByRgvNoandWrkNo2(Integer rgvNo, Integer taskNo2);
}
src/main/java/com/zy/asrs/service/WrkMastStaService.java
@@ -5,4 +5,6 @@
public interface WrkMastStaService extends IService<WrkMastSta> {
    WrkMastSta selectByRgvNoandWrkNo(Integer rgvNo, Integer taskNo1);
    WrkMastSta selectByRgvNoandWrkNo2(Integer rgvNo, Integer taskNo2);
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private EmptyBarrelInService emptyBarrelInService;
    @Autowired
    private WrkMastStaService wrkMastStaService;
    @Value("${wms.url}")
    private String wmsUrl;
@@ -2299,7 +2301,7 @@
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
//                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) {
                    // 查询工作档
                    WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo());
                    if (wrkMast == null) {
@@ -2334,7 +2336,7 @@
                    }
                }
//                }
            }
        }
    }
@@ -2491,111 +2493,219 @@
        for (RgvSlave rgvSlave:slaveProperties.getRgv()){
            ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (rgvProtocol.getModeType() != RgvModeType.AUTO){
            if (Cools.isEmpty(rgvProtocol)){
                continue;
            }
            int workNo1 = 0;
            int workNo2 = 0;
            short souSta1 = 0;
            short sta1 = 0;
            short souSta2 = 0;
            short sta2 = 0;
            //工位一任务
            for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                if (staProtocol == null) {
                    break;
//                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
                    if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
                        WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                        if (Cools.isEmpty(wrkMast)){
                            log.error("未找到工作档");
                            continue;
                        }
                        workNo1 = wrkMast.getWrkNo();
                        souSta1 = inStn.getSourceStaNo().shortValue();
                        sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
                        break;
                    }
                    workNo1 = workNo++;
                    souSta1 = inStn.getSourceStaNo().shortValue();
                    sta1 = inStn.getStaNo().shortValue();
                    break;
                }
            }
            //工位二任务
            for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
                if (souSta1 == inStn.getSourceStaNo()){
                    continue;
                }
                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                if (staProtocol == null) {
                    break;
//                    continue;
                } else {
                    staProtocol = staProtocol.clone();
                }
                if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){
                    if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
                        WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                        if (Cools.isEmpty(wrkMast)){
                            log.error("未找到工作档");
                            continue;
                        }
                        workNo2 = wrkMast.getWrkNo();
                        souSta2 = inStn.getSourceStaNo().shortValue();
                        sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
                        break;
                    }
                    workNo2 = workNo++;
                    souSta2 = inStn.getSourceStaNo().shortValue();
                    sta2 = inStn.getStaNo().shortValue();
                    break;
                }
            }
            //rgv任务下发--------------------------------------------------------------
            RgvCommand command = new RgvCommand();
            command.setRgvNo(rgvSlave.getId()); // RGV编号
            //工位1
            command.setTaskNo1(workNo1); // 工作号
            command.setSourceStaNo1(souSta1); // 源站
            command.setDestinationStaNo1(sta1);  // 目标站
            command.setAckFinish1(false);  // 任务完成确认位
            //工位2
            command.setTaskNo2(workNo2); // 工作号
            command.setSourceStaNo2(souSta2); // 源站
            command.setDestinationStaNo2(sta2);  // 目标站
            command.setAckFinish2(false);  // 任务完成确认位
            if (workNo1 != 0 && workNo2 ==0){
                command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 取放货
            } else if (workNo1 == 0 && workNo2 !=0) {
                command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 取放货
            }else {
                command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: 取放货
                rgvProtocol = rgvProtocol.clone();
            }
            command.setCommand(false);
            MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
            log.info("rgv任务下发:"+JSON.toJSONString(command));
            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){
                boolean work1 = false;
                boolean work2 = false;
                int workNo1 = 0;
                int workNo2 = 0;
                short souSta1 = 0;
                short sta1 = 0;
                short souSta2 = 0;
                short sta2 = 0;
                //工位一任务
                for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                    StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                    if (staProtocol == null) {
                        break;
//                    continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
                            WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                            if (Cools.isEmpty(wrkMast)){
                                log.error("未找到工作档");
                                continue;
                            }
                            workNo1 = wrkMast.getWrkNo();
                            souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),wrkMast.getSourceStaNo());
                            sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
                            work1 = true;
                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
                            break;
                        }
                        workNo1 = workNo++;
                        souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo());
                        sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo());
                        work1 = true;
                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
                        break;
                    }
                }
                //工位二任务
                for (RgvSlave.Sta inStn :  rgvSlave.getInStn()){
                    if (souSta1 == inStn.getSourceStaNo()){
                        continue;
                    }
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId());
                    StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo());
                    if (staProtocol == null) {
                        break;
//                    continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk()){
                        if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){
                            WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo());
                            if (Cools.isEmpty(wrkMast)){
                                log.error("未找到工作档");
                                continue;
                            }
                            workNo2 = wrkMast.getWrkNo();
                            souSta2 = inStn.getSourceStaNo().shortValue();
                            sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo());
                            work2 = true;
                            devpThread.setPakMk(inStn.getSourceStaNo(),false);
                            break;
                        }
                        workNo2 = workNo++;
                        souSta2 = inStn.getSourceStaNo().shortValue();
                        sta2 = inStn.getStaNo().shortValue();
                        work2 = true;
                        devpThread.setPakMk(inStn.getSourceStaNo(),false);
                        break;
                    }
                }
                if (work1 || work2){
                    //rgv任务下发--------------------------------------------------------------
                    RgvCommand command = new RgvCommand();
                    command.setRgvNo(rgvSlave.getId()); // RGV编号
                    //工位1
                    command.setTaskNo1(workNo1); // 工作号
                    command.setSourceStaNo1(souSta1); // 源站
                    command.setDestinationStaNo1(sta1);  // 目标站
                    command.setAckFinish1(false);  // 任务完成确认位
                    //工位2
                    command.setTaskNo2(workNo2); // 工作号
                    command.setSourceStaNo2(souSta2); // 源站
                    command.setDestinationStaNo2(sta2);  // 目标站
                    command.setAckFinish2(false);  // 任务完成确认位
                    if (workNo1 == 0 && workNo2 !=0){
                        command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 取放货
                    } else if (workNo1 != 0 && workNo2 ==0) {
                        command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 取放货
                    }else {
                        command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: 取放货
                    }
                    command.setCommand(false);
                    rgvTaskSave(command);
                    MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command));
                    log.info("rgv任务下发:"+JSON.toJSONString(command));
                }
            }
        }
    }
    public synchronized void RGVTaskOver() {
        for (RgvSlave rgvSlave:slaveProperties.getRgv()) {
            ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId());
            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
            if (Cools.isEmpty(rgvProtocol)){
                continue;
            }else {
                rgvProtocol = rgvProtocol.clone();
            }
            //工位一任务完成
            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 1) {
                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1());
                if (Cools.isEmpty(wrkMastSta)){
                    log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1());
                    continue;
                }
                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
                            continue;
                        }
                    }
                }
                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand()));
                log.info("{}号rgv工位一工作完成复位,工作号:{}",rgvSlave.getId(),wrkMastSta.getWrkNo());
            }
            //工位二任务完成
            if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded1() == 1) {
                WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2());
                if (Cools.isEmpty(wrkMastSta)){
                    log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2());
                    continue;
                }
                for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){
                    SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getSourcePlcId());
                    StaProtocol staProtocol = devpThread.getStation().get(outStn.getSourceStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    if (staProtocol.isAutoing() && staProtocol.isLoading()  && staProtocol.isPakMk()){
//                        staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
//                        staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                        if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) {
                            continue;
                        }
                    }
                }
                MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand()));
                log.info("{}号rgv工位二工作完成复位,工作号:{}",rgvSlave.getId(),wrkMastSta.getWrkNo2());
            }
        }
    }
    public boolean rgvTaskSave(RgvCommand command){
        Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1());
        WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper);
        if (!Cools.isEmpty(wrkMastSta1)){
            wrkMastStaService.delete(wrkMastStaWrapper);
        }
        WrkMastSta wrkMastSta = new WrkMastSta();
        wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1()));
        wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2()));
        wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue());
        wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue());
        wrkMastSta.setStaStart(command.getSourceStaNo2().intValue());
        wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue());
        wrkMastSta.setWrkSts(1);
        Date now = new Date();
        wrkMastSta.setCreateTime(now);
        wrkMastSta.setUpdateTime(now);
        wrkMastSta.setWrkCrn(command.getRgvNo());
        wrkMastSta.setWrkType(command.getTaskMode().intValue());
        return wrkMastStaService.insert(wrkMastSta);
    }
}
src/main/java/com/zy/asrs/service/impl/WrkMastStaServiceImpl.java
@@ -9,4 +9,13 @@
@Service("wrkMastStaService")
public class WrkMastStaServiceImpl extends ServiceImpl<WrkMastStaMapper, WrkMastSta> implements WrkMastStaService {
    @Override
    public WrkMastSta selectByRgvNoandWrkNo(Integer rgvNo, Integer taskNo1) {
        return this.baseMapper.selectByRgvNoandWrkNo(rgvNo,taskNo1);
    }
    @Override
    public WrkMastSta selectByRgvNoandWrkNo2(Integer rgvNo, Integer taskNo2) {
        return this.baseMapper.selectByRgvNoandWrkNo2(rgvNo,taskNo2);
    }
}
src/main/java/com/zy/asrs/utils/Utils.java
@@ -17,9 +17,14 @@
    private static final DecimalFormat fmt = new DecimalFormat("##0.00");
    public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){
    public static short getRgvStaNo(Integer rgvNo,Integer staNo){
        Map<Integer, Short> rgv1Map = new HashMap<>();
        Map<Integer, Short> rgv2Map = new HashMap<>();
        rgv2Map.put(4007, (short) 1);rgv2Map.put(4001, (short) 2);
        rgv2Map.put(2003, (short) 3);rgv2Map.put(2103, (short) 4);
        rgv2Map.put(4016, (short) 5);rgv2Map.put(4010, (short) 6);
        rgv2Map.put(2301, (short) 7);rgv2Map.put(2002, (short) 8);
        rgv2Map.put(2001, (short) 9);
        Map<Integer, Short> rgv3Map = new HashMap<>();
        switch (rgvNo){
            case 1:
@@ -32,6 +37,22 @@
        return 0;
    }
    public static short getRgvEndStaNo(Integer rgvNo,Integer staNo){
        Map<Integer, Integer> rgv1Map = new HashMap<>();
        Map<Integer, Integer> rgv2Map = new HashMap<>();
        rgv2Map.put(4007,2103);
        Map<Integer, Integer> rgv3Map = new HashMap<>();
        switch (rgvNo){
            case 1:
                return getRgvStaNo(rgvNo,rgv1Map.get(staNo));
            case 2:
                return getRgvStaNo(rgvNo,rgv2Map.get(staNo));
            case 3:
                return getRgvStaNo(rgvNo,rgv3Map.get(staNo));
        }
        return 0;
    }
    public static float scale(Float f){
        if (f == null || f == 0f || Float.isNaN(f)) {
            return 0f;
src/main/java/com/zy/core/MainProcess.java
@@ -67,12 +67,12 @@
                    mainService.autoEmptyOut();
                    //二期
                    //空桶库任务生成
                    mainService.crn5TaskCreate();
                    //空桶库入库
                    mainService.crn5InTask();
                    //空桶出库完成
                    mainService.crn5StnToOutStn();
//                    //空桶库任务生成
//                    mainService.crn5TaskCreate();
//                    //空桶库入库
//                    mainService.crn5InTask();
//                    //空桶出库完成
//                    mainService.crn5StnToOutStn();
                    //rgv任务
                    mainService.RGVTaskPut();
                    //rgv任务完成
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -63,9 +63,7 @@
    }};
    public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{
        add(3001);add(3002);add(3003);add(3004);add(3005);
        add(3006);add(3007);add(3008);add(3009);add(3010);
        add(3011);add(3012);
        add(4007);
    }};
    public static final ArrayList<Integer> staNos5 = new ArrayList<Integer>() {{
@@ -205,10 +203,14 @@
                switch (step) {
                    // 读数据
                    case 1:
                        if (slave.getId() ==3){
                            read30();
                        }else {
                            read();
                        switch (slave.getId()){
                            case 1:
                            case 2:
                                read();break;
                            case 3:
                                read30();break;
                            case 4:
                                read33();break;
                        }
                        break;
@@ -417,6 +419,65 @@
        }
    }
    private void read33() throws InterruptedException {
        ArrayList<Integer> staNos = getStaNo();
        int staNoSize = staNos.size();
        OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size() * 8));
        result = siemensS7Net.Read("DB101.0", (short) (getStaNo().size()*6));
        if (result.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                Integer siteId = staNos.get(i); // 站点编号
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*4, 1);
                short tongType = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 2);
                short matnr = siemensS7Net.getByteTransform().TransInt16(result.Content, i * 4 + 4);
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
                staProtocol.setAutoing(status[0]);  // 自动
                staProtocol.setLoading(status[1]);  // 有物
                staProtocol.setInEnable(status[2]); // 可入
                staProtocol.setAmount(matnr);
                if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
                    staProtocol.setPakMk(true);
                }
            }
        }
        if (result.IsSuccess) {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
            // 根据实时信息更新数据库
            try {
                List<BasDevp> basDevps = new ArrayList<>();
                for (Integer siteId : staNos) {
                    StaProtocol staProtocol = station.get(siteId);
                    basDevps.add(staProtocol.toSqlModel());
                }
                BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
                if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
                    throw new Exception("更新数据库数据失败");
                }
            } catch (Exception e) {
                e.printStackTrace();
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】更新数据库数据失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
                log.error("更新数据库数据失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
            }
        } else {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】读取输送线plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
//            log.error("读取输送线plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
        }
    }
    /**
     * 写入 ID+目标站 =====> 单站点写入
     */
src/main/resources/application.yml
@@ -8,7 +8,7 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://10.10.10.212:1433;databasename=mdqdasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs
    username: sa
    password: sa@123
  mvc:
@@ -34,7 +34,7 @@
  enable: false
wms:
  url: localhost:8082/mdqdwms
  url: localhost:8080/mdqdwms
# 下位机配置
wcs-slave:
@@ -47,7 +47,7 @@
  # 堆垛机1
  crn[0]:
    id: 1
    ip: 10.10.10.100
    ip: 10.10.10.200
    port: 102
    rack: 0
    slot: 0
@@ -85,7 +85,7 @@
  # 堆垛机2
  crn[1]:
    id: 2
    ip: 10.10.10.110
    ip: 10.10.10.201
    port: 102
    rack: 0
    slot: 0
@@ -248,7 +248,7 @@
#    slot: 0
#  # RGV1
  rgv[0]:
    id: 1
    id: 2
    ip: 10.10.10.130
    port: 102
    rack: 0
@@ -259,8 +259,8 @@
      staNo: 2103
      staPlcId: 2
    outStn[0]:
      sourceStaNo: 4007
      sourcePlcId: 4
      staNo: 2103
      staPlcId: 2
#  # RGV2
#  rgv[1]:
#    id: 2
src/main/resources/mapper/WrkMastStaMapper.xml
@@ -18,7 +18,16 @@
        <result column="wrk_type" property="wrkType" />
        <result column="bign_time" property="bignTime" />
        <result column="wrk_crn" property="wrkCrn" />
        <result column="wrk_no2" property="wrkNo2"/>
    </resultMap>
    <select id="selectByRgvNoandWrkNo" resultMap="BaseResultMap">
        select * from asr_wrk_mast_sta
        where wrk_crn = #{rgvNo} and wrk_no = #{taskNo} and wrk_sts = 1
    </select>
    <select id="selectByRgvNoandWrkNo2" resultMap="BaseResultMap">
        select * from asr_wrk_mast_sta
        where wrk_crn = #{rgvNo} and wrk_no2 = #{taskNo2} and wrk_sts = 1
    </select>
</mapper>
src/main/webapp/static/images/RMLogo.png
src/main/webapp/views/console-old.html
@@ -22,7 +22,7 @@
            <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
        </div>
        <div class="head-right">
            <img src="../static/images/zy-logo1.png" alt="中扬" height="44" width="80">
            <img src="../static/images/RMLogo.png" alt="润美" height="44">
        </div>
    </div>
src/main/webapp/views/console.html
@@ -21,7 +21,7 @@
                <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
            </div>
            <div class="head-right">
                <img src="../static/images/zy-logo.png" alt="中扬" height="44" width="80">
                <img src="../static/images/RMLogo.png" alt="润美" height="44">
            </div>
        </div>
        <div style="width: 1000px;height: 800px;overflow: hidden">
src/main/webapp/views/index.html
@@ -27,7 +27,7 @@
<!-- 主体内容 -->
<iframe id="content" src="console.html"></iframe>
<footer class="footer">
    Copyright © 2015 All Rights Reserved. <a href="http://www.zoneyung.com" target="_blank">米多</a>  保留所有权利
    Copyright © 2020 All Rights Reserved. <a href="http://www.lubmate.com/" target="_blank">中科润美(青岛)</a>  保留所有权利
</footer>
</body>
<script>