*
lsh
2025-04-18 7e7d10ad23b4ad201ad305f508b82ea8854464bd
*
15个文件已修改
394 ■■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ChartBean.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskWrk.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/web/AuthController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/StaProtocol.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 269 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/controller/RoleController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/entity/Permission.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/mapper/RoleMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/RoleService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/system/service/impl/RoleServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/RoleMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/TaskWrkMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -15,7 +15,7 @@
    <properties>
        <java.version>1.8</java.version>
        <cool.version>3.2.0</cool.version>
        <cool.version>3.6.0</cool.version>
        <mysql-driver.version>5.1.47</mysql-driver.version>
        <mybatis-plus.version>2.3.2</mybatis-plus.version>
        <fastjson.version>1.2.58</fastjson.version>
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -288,7 +288,11 @@
                    vo.setLocNo(wrkMast.getLocNo());    //  目标库位
                }
            } else {
                vo.setDeviceStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
                if (Cools.isEmpty(crnProtocol.modeType)){
                    vo.setDeviceStatus(CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
                } else {
                    vo.setDeviceStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
                }
            }
            vo.setXspeed(crnProtocol.getXSpeed());  //  走行速度(m/min)
            vo.setYspeed(crnProtocol.getYSpeed());  //  升降速度(m/min)
@@ -297,8 +301,11 @@
            vo.setYdistance(crnProtocol.getYDistance());  //  升降距离(Km)
            vo.setXduration(crnProtocol.getXDuration());    //  走行时长(H)
            vo.setYduration(crnProtocol.getYDuration());    //  升降时长(H)
            vo.setStatusType(crnProtocol.modeType.desc);   //  模式状态
            if (Cools.isEmpty(crnProtocol.modeType)){
                vo.setStatusType(CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
            } else {
                vo.setStatusType(crnProtocol.modeType.desc);   //  模式状态
            }
            vo.setWrkStatus(crnProtocol.getStatusType().id);     //  任务状态
            vo.setLoading((crnProtocol.getLoaded() != null && crnProtocol.getLoaded() == 1) ? "有物" : "无物");  //  有物
            vo.setBay(crnProtocol.getBay());    //  列
src/main/java/com/zy/asrs/entity/ChartBean.java
@@ -1,5 +1,8 @@
package com.zy.asrs.entity;
import lombok.Data;
@Data
public class ChartBean {
    private String name;
    private double y;
src/main/java/com/zy/asrs/entity/TaskWrk.java
@@ -187,6 +187,13 @@
    @TableField("CRN_NO")
    private Integer crnNo;
    /**
     * 指令执行步序
     */
    @ApiModelProperty(value= "指令执行步序")
    @TableField("COMMAND_STEP")
    private Integer commandStep;
    @ApiModelProperty(value = "移库标记")
    @TableField("TRANSFER_MARK")
    private Integer transferMark;
src/main/java/com/zy/common/web/AuthController.java
@@ -240,7 +240,7 @@
        functions.put("spread", true);
        List<Map> funcs = new ArrayList<>();
        functions.put("children", funcs);
        List<Permission> permissions = permissionService.selectList(new EntityWrapper<Permission>().eq("status", 1));
        List<Permission> permissions = permissionService.selectList(new EntityWrapper<Permission>().eq("STATUS", 1));
        for (Permission permission : permissions) {
            Map<String, Object> func = new HashMap<>();
            func.put("title", permission.getName());
src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -81,6 +81,9 @@
    // Super有无信息
    private boolean loadingSuper = true;
    //指令ID
    private Integer commandId;
    public BasDevp toSqlModel(){
        BasDevp basDevp = new BasDevp();
        basDevp.setDevNo(siteId);
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -9,7 +9,6 @@
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.CommandInfoLog;
@@ -19,7 +18,6 @@
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.CommandStatusType;
import com.zy.core.enums.IoModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
@@ -50,30 +48,11 @@
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);
    }};
    /*public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
        add(200);add(201);add(202);add(203);
        add(204);add(205);add(206);add(207);
        add(208);add(209);add(210);add(211);
        add(212);add(213);add(214);add(215);
        add(216);add(217);add(218);add(219);
        add(220);add(221);add(222);add(223);
        add(224);add(225);add(226);add(227);
        add(228);add(229);add(230);add(231);
        add(232);add(233);add(234);add(235);
    }};
    public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{
        add(300);add(301);add(302);add(303);
        add(304);add(305);add(306);add(307);
    }};
    public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{
        add(400);add(401);add(402);add(403);
        add(404);add(405);add(406);add(407);
    }};*/
    /**
     * 条码数量
     */
    private int barcodeSize = 7;
    private int barcodeSize = 4;
    /**
     * 入出库模式
@@ -84,17 +63,11 @@
     * 4.出库模式
     */
    public IoModeType ioModeOf2F = IoModeType.NONE;
//    public IoModeType ioMode = IoModeType.NONE;
    //    public IoModeType ioMode = IoModeType.NONE;
    private ArrayList<Integer> getStaNo() {
        switch (slave.getId()) {
            case 1:
                return staNos1;
            /*case 2:
                return staNos2;
            case 3:
                return staNos3;
            case 4:
                return staNos4;*/
            default:
                throw new CoolException("服务器异常");
        }
@@ -123,7 +96,6 @@
                    // 写数据 ID+目标站
                    case 2:
                        write((StaProtocol)task.getData());
                        read();
                        break;
                    default:
                        break;
@@ -207,7 +179,7 @@
                }
                staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8));     // 工作号
                staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8 + 4));   // 目标站
                staProtocol.setStaNo((int)siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4));   // 目标站
                boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
                staProtocol.setAutoing(status[0]);  // 自动
@@ -225,133 +197,21 @@
            }
        }
        OperateResultExOne<byte[]> resultAgvAndPlc = siemensS7Net.Read("DB102.0", (short) 30);
        if (resultAgvAndPlc.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                int sign =(i+2)/2-1;
                if ((i+2)%2!=0){
                    Integer siteId = staNos.get(i); // 站点编号
                    StaProtocol staProtocol = station.get(siteId);
                    if (null == staProtocol) {
                        staProtocol = new StaProtocol();
                        staProtocol.setSiteId(siteId);
                        station.put(siteId, staProtocol);
                    }
//                    staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6+4));     // 允许取货
//                    staProtocol.setAgvStartPlace((short)0);   // 允许放货
                    continue;
                }
                Integer siteId = staNos.get(i); // 站点编号
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
//                staProtocol.setAgvStartPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6));     // 允许取货
//                staProtocol.setAgvStartPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlc.Content, sign*6 + 2));   // 允许放货
            }
        }
        OperateResultExOne<byte[]> resultAgvAndPlcOk = siemensS7Net.Read("DB132.0", (short) 30);
        if (resultAgvAndPlcOk.IsSuccess) {
            for (int i = 0; i < staNoSize; i++) {
                int sign =(i+2)/2-1;
                if ((i+2)%2!=0){
                    Integer siteId = staNos.get(i); // 站点编号
                    StaProtocol staProtocol = station.get(siteId);
                    if (null == staProtocol) {
                        staProtocol = new StaProtocol();
                        staProtocol.setSiteId(siteId);
                        station.put(siteId, staProtocol);
                    }
//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6+4));     // 允许取货
//                    staProtocol.setAgvTargetPlace((short)0);   // 允许放货
                    continue;
                }
                Integer siteId = staNos.get(i); // 站点编号
                StaProtocol staProtocol = station.get(siteId);
                if (null == staProtocol) {
                    staProtocol = new StaProtocol();
                    staProtocol.setSiteId(siteId);
                    station.put(siteId, staProtocol);
                }
//                try{
//                    staProtocol.setAgvTargetPick(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6));     // 取货完成
//                    if (staProtocol.getAgvTargetPick()!=0){
//                        System.out.println(staProtocol.getAgvTargetPick());
//                    }
//                    staProtocol.setAgvTargetPlace(siemensS7Net.getByteTransform().TransInt16(resultAgvAndPlcOk.Content, sign*6 + 2));   // 放货完成
//                    if (staProtocol.getAgvTargetPlace()!=0){
//                        System.out.println(staProtocol.getAgvTargetPlace());
//                    }
//                }catch (Exception e){
//                    log.error(""+e);
//                }
            }
        }
        if (slave.getId() == 1) {
            //条码
            //Thread.sleep(200);
            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840.0", (short) 32);
            if (result2.IsSuccess) {
                for (int i = 0; i < 4; i++) {
                    String barcode = siemensS7Net.getByteTransform().TransString(result2.Content, i * 8, 8, "UTF-8");
                    BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
                    if (!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                        barcodeThread.setBarcode(barcode);
                    }
                }
            }
            OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB13.2", (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]);
        //条码
        Thread.sleep(200);
        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.840.0",(short) (barcodeSize*8));
        if (result2.IsSuccess) {
            for (int i = 0; i < barcodeSize; i++) {
                String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
                BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
                if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
                    barcodeThread.setBarcode(barcode);
                }
            }
        }
//        //RGV台车位置
//        Thread.sleep(200);
//        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.0",(short)4);
//        if (result3.IsSuccess) {
//            for (int i = 0; i < 2; i++) {
//                Integer siteId = i==0 ? 1 : 2; // 站点编号
//                StaProtocol staProtocol = station.get(siteId);
//                if (null == staProtocol) {
//                    staProtocol = new StaProtocol();
//                    staProtocol.setSiteId(siteId);
//                    station.put(siteId, staProtocol);
//                }
//                staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2)));
////                String aa = staProtocol.getNearbySta();
////                System.out.println(siteId + "===>>" + staProtocol.getNearbySta());
//            }
//        }
//        OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0");
//        if (result2.IsSuccess) {
//            this.ioMode = IoModeType.get(result2.Content);
//        }
        if (result.IsSuccess ) {
        if (result.IsSuccess) {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -383,6 +243,9 @@
        }
    }
    /**
     * 写入 ID+目标站 =====> 单站点写入
     */
    private void write(StaProtocol staProtocol) throws InterruptedException {
        if (null == staProtocol) {
            return;
@@ -391,21 +254,47 @@
        int index = staNos.indexOf(staProtocol.getSiteId());
        //更新命令日志
        CommandInfoLogService commandInfoLogService = SpringUtils.getBean(CommandInfoLogService.class);
        CommandInfoService commandInfoService = SpringUtils.getBean(CommandInfoService.class);
        CommandInfo commandInfo = commandInfoService.selectById(staProtocol.getCommandId());
        CommandInfoLog commandInfoLog = new CommandInfoLog();
        if (commandInfo != null) {
            commandInfoLog = JSON.parseObject(JSON.toJSONString(commandInfo), CommandInfoLog.class);
            commandInfoLog.setId(null);
        }else {
            Date now = new Date();
            commandInfoLog.setCommand(JSON.toJSONString(staProtocol));
            commandInfoLog.setCommandStatus(3);
            commandInfoLog.setStartTime(now);
            commandInfoLog.setExecuteTime(now);
            commandInfoLog.setCompleteTime(now);
            commandInfoLog.setDevice(SlaveType.Devp.toString());
            commandInfoLog.setWrkNo(9999);
            commandInfoLog.setTaskNo("9999");
            commandInfoLog.setCommandDesc("手动命令");
        }
        OperateResult writeResult;
        //任务下发次数
        int writeCount = 0;
        //任务下发成功标识
        boolean writeFlag = false;
        while(writeCount < 5){
            OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6,  staProtocol.getWorkNo().intValue());    // 工作号
            OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo());    // 工作号
            OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo());    // 目标站
            if(writeResult1.IsSuccess && writeResult2.IsSuccess){
                Thread.sleep(200);
                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100." + index*6, (short)6);
                OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB101.0" + index*8, (short)4);
                //更新指令日志
                commandInfoLog.setDeviceLog("指令下发成功");
                commandInfoLogService.insert(commandInfoLog);
                if(readResult.IsSuccess){
                    Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 4);
                    if(workNo.equals(staProtocol.getWorkNo().intValue()) && staProtocol.getStaNo().equals(staNo)){
//                    short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
                    if(staProtocol.getWorkNo().equals(workNo)){
                        //任务命令写入成功
                        writeFlag = true;
                        log.info("写入输送线命令后返回成功,并且回读成功。输送线plc编号={},{},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
@@ -427,6 +316,10 @@
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令失败。输送线plc编号={1},站点数据={2},写入次数={3}",
                        slave.getId(), JSON.toJSON(staProtocol),writeCount));
                log.error("写入输送线命令失败。输送线plc编号={},站点数据={},写入次数={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
                //更新指令日志
                commandInfoLog.setDeviceLog("指令下发失败");
                commandInfoLogService.insert(commandInfoLog);
            }
            Thread.sleep(200);
        }
@@ -440,58 +333,30 @@
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线命令尝试5次失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol)));
            log.error("写入输送线命令尝试5次失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol));
//            //重新添加数据到任务队列
//            boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
//            read();//读取1次设备状态
            //重新添加数据到任务队列
            boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
            read();//读取1次设备状态
            return;
        } else {
            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发成功 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
            log.info("输送线命令下发 [id:{}] >>>>> 命令下发成功: {}",  slave.getId(), JSON.toJSON(staProtocol));
//            Integer siteId = staProtocol.getSiteId();
//            staProtocol = station.get(siteId);
//            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
//                staProtocol.setPakMk(true);
//            }
            Integer siteId = staProtocol.getSiteId();
            staProtocol = station.get(siteId);
            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
                staProtocol.setPakMk(true);
            }
            //更新任务步序
            TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
            TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo());
            if (taskWrk != null) {
                taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//更新指令步序
                taskWrkService.updateById(taskWrk);
            }
        }
    }
//    /**
//     * 写入 ID+目标站 =====> 单站点写入
//     */
//    private void write(StaProtocol staProtocol) throws InterruptedException {
//        if (null == staProtocol) {
//            return;
//        }
//        int index = staNos.indexOf(staProtocol.getSiteId());
//        short[] array = new short[2];
//        array[0] = staProtocol.getWorkNo();
//        array[1] = staProtocol.getStaNo();
//        OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
//
////        OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号
////        Thread.sleep(500);
////        OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo());    // 目标站
//
//        if (!write.IsSuccess) {
//            staProtocol = station.get(staProtocol.getSiteId());
//            if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
//                staProtocol.setPakMk(true);
//            }
//            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(staProtocol)));
//            log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(staProtocol));
//        } else {
//            OutputQueue.DEVP.offer(MessageFormat.format("【{0}】 输送线命令下发 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
//            log.info("输送线命令下发 [id:{}] >>>>> 命令下发: {}",  slave.getId(), JSON.toJSON(staProtocol));
//
//            Integer siteId = staProtocol.getSiteId();
//            staProtocol = station.get(siteId);
//            if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
//                staProtocol.setPakMk(true);
//            }
//        }
//    }
    // 更新入出库模式
    private void updateIoMode() throws InterruptedException {
src/main/java/com/zy/system/controller/RoleController.java
@@ -37,28 +37,32 @@
        excludeTrash(param);
        EntityWrapper<Role> wrapper = new EntityWrapper<>();
        convert(param, wrapper);
        wrapper.orderBy("id", false);
        wrapper.orderBy("ID", false);
        if (9527 == getUserId()) {
            return R.ok(roleService.selectPage(new Page<>(curr, limit), wrapper));
            List<Role> roleList = roleService.selectRoleList(null,curr,limit);
            Page<Role> page = new Page<Role>(curr,limit).setRecords(roleList);
            page.setTotal(roleService.selectRoleListTotal(null));
            return R.ok(page);
        }
        Long roleId = getUser().getRoleId();
        Role role = roleService.selectById(roleId);
        Long leaderId = role.getLeader();
        List<Long> leaderIdList = new ArrayList<>();
        if (null != leaderId) {
            List<Long> leaderIds = new ArrayList<>();
            leaderIds.add(roleId);
            leaderIdList.add(roleId);
            while (leaderId != null) {
                Role leader = roleService.selectById(leaderId);
                leaderIds.add(leader.getId());
                leaderIdList.add(leader.getId());
                leaderId = leader.getLeader();
            }
            wrapper.notIn("id", leaderIds);
        }
//        if (null != role.getLevel()) {
//            wrapper.gt("level", role.getLevel());
//        }
        return R.ok(roleService.selectPage(new Page<>(curr, limit), wrapper));
        List<Role> roleList = roleService.selectRoleList(leaderIdList,curr,limit);
        Page<Role> page = new Page<Role>(curr,limit).setRecords(roleList);
        page.setTotal(roleService.selectRoleListTotal(leaderIdList));
        return R.ok(page);
    }
    private void convert(Map<String, Object> map, EntityWrapper wrapper){
src/main/java/com/zy/system/entity/Permission.java
@@ -42,7 +42,7 @@
    /**
     * 状态 1: 正常  0: 禁用  
     */
    @TableField("LOC_DESC")
    @TableField("STATUS")
    private Short status;
    public Permission() {}
src/main/java/com/zy/system/mapper/RoleMapper.java
@@ -3,10 +3,19 @@
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.system.entity.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface RoleMapper extends BaseMapper<Role> {
    List<Role> selectRoleList(@Param("leaderIdList") List<Long> leaderIdList,
                              @Param("pageNumber") Integer curr,
                              @Param("pageSize") Integer limit);
    Long selectRoleListTotal(@Param("leaderIdList") List<Long> leaderIdList);
}
src/main/java/com/zy/system/service/RoleService.java
@@ -3,6 +3,12 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.system.entity.Role;
import java.util.List;
public interface RoleService extends IService<Role> {
    List<Role> selectRoleList(List<Long> leaderIdList, Integer curr, Integer limit);
    Long selectRoleListTotal(List<Long> leaderIdList);
}
src/main/java/com/zy/system/service/impl/RoleServiceImpl.java
@@ -6,7 +6,19 @@
import com.zy.system.service.RoleService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("roleService")
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
    @Override
    public List<Role> selectRoleList(List<Long> leaderIdList, Integer curr, Integer limit){
        return this.baseMapper.selectRoleList(leaderIdList,curr,limit);
    };
    @Override
    public Long selectRoleListTotal(List<Long> leaderIdList){
        return this.baseMapper.selectRoleListTotal(leaderIdList);
    };
}
src/main/resources/application-prod.yml
@@ -3,6 +3,10 @@
  doubleLocs: 3,6,7,10,13 #双深库位排号 3,6,7,10,13
  groupCount: 4 #一个堆垛机负责的货架排数
  crn[0]: #堆垛机1
    ip: 192.168.4.250
    id: 1
    slot: 0
    demo: false
    rack: 0
    offset: 2    #偏移量,当堆垛机站点列号=1时,偏移量=2
    port: 102
@@ -12,16 +16,12 @@
      bay: 1
      lev: 1
      devpPlcId: ${wcs-slave.devp[0].id}
    ip: 192.168.4.250
    crnInStn[0]:    #堆垛机入库站点1
      staNo: 100
      row: 1
      bay: 1
      lev: 1
      devpPlcId: ${wcs-slave.devp[0].id}
    id: 1
    slot: 0
    demo: false
  barcode[0]: #条码扫描仪1
    port: 51236
    ip: 10.10.10.52
src/main/resources/mapper/RoleMapper.xml
@@ -12,4 +12,37 @@
    </resultMap>
    <sql id="batchSeq">
        <if test="id != null and id != 0">
            and a.ID = #{id}
        </if>
        <if test="name != null and name != ''">
            and a.NAME = #{name}
        </if>
    </sql>
    <select id="selectRoleList" resultMap="BaseResultMap">
        SELECT * FROM "SOURCE"."sys_role"
        WHERE 1=1
        <if test="leaderIdList != null and leaderIdList != ''">
            and ID not in
            <foreach collection="leaderIdList" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
        ORDER BY ID DESC
        LIMIT #{pageSize} OFFSET ((#{pageNumber} - 1) * #{pageSize});
    </select>
    <select id="selectRoleListTotal" resultType="Long">
        SELECT count(1) FROM "SOURCE"."wcs_api_config"
        WHERE 1=1
        <if test="leaderIdList != null and leaderIdList != ''">
            and ID not in
            <foreach collection="leaderIdList" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
        </if>
    </select>
</mapper>
src/main/resources/mapper/TaskWrkMapper.xml
@@ -25,6 +25,7 @@
        <result column="CANCEL_TIME" property="cancelTime" />
        <result column="WRK_STS" property="wrkSts" />
        <result column="CRN_NO" property="crnNo" />
        <result column="COMMAND_STEP" property="commandStep" />
        <result column="TRANSFER_MARK" property="transferMark" />
    </resultMap>