1
zhang
2025-09-26 62e2362ad2d62678712e3a40c5d611ddc9cd95f0
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -35,6 +35,7 @@
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.properties.SystemProperties;
import com.zy.core.thread.RgvThread;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -126,6 +127,9 @@
            vo.setForkOffset(crnProtocol.getForkPosType().desc);    // 货叉位置
            vo.setLiftPos(crnProtocol.getLiftPosType().desc);
            vo.setWalkPos(crnProtocol.getWalkPos()==1?"不在定位":"在定位");
            if(crnProtocol.getAlarm() == 10){
                crnProtocol.setAlarm((short) 0);
            }
            vo.setWarnCode(String.valueOf(crnProtocol.getAlarm()));
            if (crnProtocol.getAlarm() > 0) {
                BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
@@ -234,43 +238,43 @@
    /************************** 手动操作 ******************************/
    /****************************************************************/
    @ManagerAuth(memo = "入库")
    @PostMapping("/operator/put")
    public R crnPut(CrnOperatorParam param){
        CrnCommand command = new CrnCommand();
        command.setCrnNo(param.getCrnNo()); // 堆垛机编号
        command.setTaskNo((short) 0); // 工作号
        command.setAckFinish((short) 0);  // 任务完成确认位
        command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式
        command.setSourcePosX(param.getSourceRow());     // 源库位排
        command.setSourcePosY(param.getSourceBay());     // 源库位列
        command.setSourcePosZ(param.getSourceLev());     // 源库位层
        command.setDestinationPosX(param.getRow());     // 目标库位排
        command.setDestinationPosY(param.getBay());     // 目标库位列
        command.setDestinationPosZ(param.getLev());     // 目标库位层
        boolean locSts = isLocSts(param.getRow().toString(), param.getBay().toString(), param.getLev().toString());
        command.setTraySize(locSts);
        return crnControl(command)?R.ok():R.error();
    }
//    @ManagerAuth(memo = "入库")
//    @PostMapping("/operator/put")
//    public R crnPut(CrnOperatorParam param){
//        CrnCommand command = new CrnCommand();
//        command.setCrnNo(param.getCrnNo()); // 堆垛机编号
//        command.setTaskNo((short) 0); // 工作号
//        command.setAckFinish((short) 0);  // 任务完成确认位
//        command.setTaskMode(CrnTaskModeType.PAKIN); // 任务模式
//        command.setSourcePosX(param.getSourceRow());     // 源库位排
//        command.setSourcePosY(param.getSourceBay());     // 源库位列
//        command.setSourcePosZ(param.getSourceLev());     // 源库位层
//        command.setDestinationPosX(param.getRow());     // 目标库位排
//        command.setDestinationPosY(param.getBay());     // 目标库位列
//        command.setDestinationPosZ(param.getLev());     // 目标库位层
//        boolean locSts = isLocSts(param.getRow().toString(), param.getBay().toString(), param.getLev().toString());
//        command.setTraySize(locSts);
//        return crnControl(command)?R.ok():R.error();
//    }
    @ManagerAuth(memo = "出库")
    @PostMapping("/operator/take")
    public R crnTake(CrnOperatorParam param){
        CrnCommand command = new CrnCommand();
        command.setCrnNo(param.getCrnNo()); // 堆垛机编号
        command.setTaskNo((short) 0); // 工作号
        command.setAckFinish((short) 0);  // 任务完成确认位
        command.setTaskMode(CrnTaskModeType.PAKOUT); // 任务模式
        command.setSourcePosX(param.getSourceRow());     // 源库位排
        command.setSourcePosY(param.getSourceBay());     // 源库位列
        command.setSourcePosZ(param.getSourceLev());     // 源库位层
        command.setDestinationPosX(param.getRow());     // 目标库位排
        command.setDestinationPosY(param.getBay());     // 目标库位列
        command.setDestinationPosZ(param.getLev());     // 目标库位层
        boolean locSts = isLocSts(param.getSourceRow().toString(), param.getSourceBay().toString(), param.getSourceLev().toString());
        command.setTraySize(locSts);
        return crnControl(command)?R.ok():R.error();
    }
//    @ManagerAuth(memo = "出库")
//    @PostMapping("/operator/take")
//    public R crnTake(CrnOperatorParam param){
//        CrnCommand command = new CrnCommand();
//        command.setCrnNo(param.getCrnNo()); // 堆垛机编号
//        command.setTaskNo((short) 0); // 工作号
//        command.setAckFinish((short) 0);  // 任务完成确认位
//        command.setTaskMode(CrnTaskModeType.PAKOUT); // 任务模式
//        command.setSourcePosX(param.getSourceRow());     // 源库位排
//        command.setSourcePosY(param.getSourceBay());     // 源库位列
//        command.setSourcePosZ(param.getSourceLev());     // 源库位层
//        command.setDestinationPosX(param.getRow());     // 目标库位排
//        command.setDestinationPosY(param.getBay());     // 目标库位列
//        command.setDestinationPosZ(param.getLev());     // 目标库位层
//        boolean locSts = isLocSts(param.getSourceRow().toString(), param.getSourceBay().toString(), param.getSourceLev().toString());
//        command.setTraySize(locSts);
//        return crnControl(command)?R.ok():R.error();
//    }
    @ManagerAuth(memo = "库位转移")
    @PostMapping("/operator/stockMove")
@@ -383,6 +387,8 @@
        command.setDestinationPosZ((short) 0);     // 目标库位层
        return crnControl(command)?R.ok():R.error();
    }
//    @ManagerAuth(memo = "暂停")
//    @PostMapping("/operator/pause")
@@ -510,7 +516,10 @@
    }
    private boolean isLocSts(String row,String bay,String lev){
        String loc = String.format("%2d",row)+String.format("%3d",bay)+String.format("%2d",lev);
        int rowInt = Integer.parseInt(row);
        int bayInt = Integer.parseInt(bay);
        int levInt = Integer.parseInt(lev);
        String loc = String.format("%2d",rowInt)+String.format("%3d",bayInt)+String.format("%2d",levInt);
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", loc));
        if (Cools.isEmpty(locMast)){
            return false;