#
Junjie
2023-11-04 ded3b5c237a484f33dc577a17b3797eebd49db54
src/main/java/com/zy/core/thread/LiftThread.java
@@ -32,6 +32,7 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
@@ -87,6 +88,8 @@
                    case 3:
                        assignWork((LiftAssignCommand) task.getData());
                        break;
                    case 4:
                        write2((HashMap<String, Object>) task.getData());
                    default:
                        break;
                }
@@ -125,9 +128,9 @@
        try {
            readStatus();
            //提升机处于运行状态,将标记置为true
            //提升机处于运行状态,将标记置为false
            if (liftProtocol.getBusy()) {
                liftProtocol.setPakMk(true);
                liftProtocol.setPakMk(false);
            }
            //提升机处于未运行、就绪、标记true、有任务号
@@ -185,10 +188,10 @@
                liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
                //当前楼层
                short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8);
                if (lev >=5 && lev <= 7) {
                    lev += 2;
                } else if (lev >= 8 && lev <= 10) {
                    lev += 4;
                if (lev >= 7 && lev <= 9) {
                    lev -= 2;
                } else if (lev >= 12 && lev <= 14) {
                    lev -= 4;
                }
                liftProtocol.setLev(lev);
@@ -355,15 +358,20 @@
        //取出命令
        NyLiftCommand command = commands.get(commandStep);
        if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) {
            return false;
        }
        //下发命令
        if (!write(command)) {
            News.error("提升机命令下发失败,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command));
            return false;
        }
        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
        News.info("提升机命令下发成功,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command));
        //将标记置为false(防止重发)
        //将标记置为true(防止重发)
        liftProtocol.setPakMk(true);
        //保存数据到数据库做流水
@@ -372,7 +380,7 @@
            short[] commandArr = getCommandArr(command);//获取命令报文
            BasLiftOpt opt = new BasLiftOpt(
                    redisCommand.getWrkNo().intValue(),
                    redisCommand.getLiftNo().intValue(),
                    liftProtocol.getLiftNo().intValue(),
                    new Date(),
                    null,
                    null,
@@ -380,6 +388,7 @@
                    JSON.toJSONString(command),
                    JSON.toJSONString(liftProtocol)
            );
            opt.setDeviceWrk(command.getTaskNo().toString());//设备工作号
            liftOptService.insert(opt);
        }
@@ -416,6 +425,35 @@
        return true;
    }
    //给提升机写入进出状态
    private void write2(HashMap<String,Object> data) {
//        //出
//        status = true;
//        //进
//        status = false;
        int lev = Integer.parseInt(data.get("lev").toString());
        boolean status = Boolean.parseBoolean(data.get("status").toString());
        ArrayList<String> list = new ArrayList<String>(){{
            add("83.8.0");
            add("83.8.1");
            add("83.8.2");
            add("83.8.3");
            add("83.8.4");
            add("83.8.5");
            add("83.8.6");
            add("83.8.7");
            add("83.9.0");
            add("83.9.1");
        }};
        OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status);
        if (result != null && result.IsSuccess) {
            News.info("提升机命令下发[id:{}]", slave.getId());
        } else {
            News.error("写入提升机plc数据失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
    }
    /******************************************************************************************/
    /**************************************** 测试专用 *****************************************/
    /*****************************************************************************************/