2cf9b53834bf61455fffd322b0201b3d0080577a..ddb1d3cc65d174d768912ee08f4d08d719c197d0
2025-05-11 1
#
ddb1d3 对比 | 目录
2025-05-11 1
#
9a07fe 对比 | 目录
2025-05-11 1
#
aa146b 对比 | 目录
2025-05-11 1
#
7993b5 对比 | 目录
1个文件已添加
10个文件已修改
225 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/CrnController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/RgvController.java 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/param/WcsStatusResponseModel.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/model/protocol/RgvProtocol.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/RgvThread.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-prod.yml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/deviceOperate/rgvOperate.html 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -54,10 +54,10 @@
@RestController
public class CrnController {
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.movePath}")
    private String movePath;
//    @Value("${wms.url}")
//    private String wmsUrl;
//    @Value("${wms.movePath}")
//    private String movePath;
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -491,6 +491,7 @@
        auth(appkey, "设备状态查询接口", request);
        List<BasDevp> basDevps = basDevpService.selectList(new EntityWrapper<>());
        List<Object> list = new ArrayList<>();
        WcsStatusResponseModel wcsStatusResponseModel = new WcsStatusResponseModel();
        for (BasDevp basDevp:basDevps){
            BasDevpWmsParam basDevpWmsParam = new BasDevpWmsParam();
            basDevpWmsParam.setDevNo(basDevp.getDevNo());
@@ -501,7 +502,8 @@
            basDevpWmsParam.setOutEnable(basDevp.getOutEnable());
            basDevpWmsParam.setDevErr(basDevp.getStaErr().longValue());
            basDevpWmsParam.setDevErrM(basDevpWmsParam.getDevErr$());
            list.add(basDevpWmsParam);
//            list.add(basDevpWmsParam);
            wcsStatusResponseModel.getChainList().add(basDevpWmsParam);
        }
        List<BasCrnpWmsParam> basCrnpWmsParamList = new ArrayList<>();
        for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -518,7 +520,6 @@
            basCrnpWmsParam.sync(basCrnp);
            basCrnpWmsParam.setCrnNoH(crnProtocol.getLaneNo());
            basCrnpWmsParamList.add(basCrnpWmsParam);
            try{
                BasCrnError basCrnError = basCrnErrorService.selectById(basCrnp.getCrnErr());
@@ -526,9 +527,11 @@
            } catch (Exception e){
                basCrnpWmsParam.setCrnErrM("未知异常");
            }
            basCrnpWmsParamList.add(basCrnpWmsParam);
            list.add(basCrnpWmsParam);
//            list.add(basCrnpWmsParam);
        }
        wcsStatusResponseModel.setPilingCarList(basCrnpWmsParamList);
        for (RgvSlave rgvSlave : slaveProperties.getRgv()) {
            RgvProtocol rgvStatus = RgvStatusCache.getRgvStatus(rgvSlave.getId());
            if (Cools.isEmpty(rgvStatus)){
@@ -547,13 +550,15 @@
            } catch (Exception e){
                basRgvWmsParam.setSteErrM("未知异常");
            }
            list.add(basRgvWmsParam);
//            list.add(basRgvWmsParam);
            wcsStatusResponseModel.getRgvList().add(basRgvWmsParam);
        }
//        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>());
//        for (BasCrnp basCrnp:basCrnps){
//            list.add(basCrnp);
//        }
        return R.ok(list);
        return R.ok(wcsStatusResponseModel);
    }
src/main/java/com/zy/asrs/controller/RgvController.java
@@ -102,7 +102,7 @@
    @ManagerAuth(memo = "小车行走")
    public R rgvRunWalk(@RequestParam(defaultValue = "0")  Integer rgvNo,
                            @RequestParam(defaultValue = "0")  Integer taskNo,
                            @RequestParam(defaultValue = "0")  Integer rgvStaNo,
                            @RequestParam(defaultValue = "0")  Integer rgvStaNoPut,
                            @RequestParam(defaultValue = "0")  Long rgvPosDestination
    ) {
        if (rgvNo==null || rgvNo==0){
@@ -111,11 +111,11 @@
        if (taskNo==null || taskNo==0){
            return R.error("作业号请填写");
        }
        if ((rgvStaNo == null || rgvStaNo == 0) && (rgvPosDestination==null || rgvPosDestination==0L)){
        if ((rgvStaNoPut == null || rgvStaNoPut == 0) && (rgvPosDestination==null || rgvPosDestination==0L)){
            return R.error("目标站点请填写");
        }
        if (rgvPosDestination == null || rgvPosDestination == 0){
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut));
            rgvPosDestination = basDevpPosition.getPlcPosition();
        }
        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
@@ -150,7 +150,7 @@
    @ManagerAuth(memo = "小车放货")
    public R rgvPutWalk(@RequestParam(defaultValue = "0")  Integer rgvNo,
                        @RequestParam(defaultValue = "0")  Integer taskNo,
                        @RequestParam(defaultValue = "0")  Integer rgvStaNo,
                        @RequestParam(defaultValue = "0")  Integer rgvStaNoPut,
                        @RequestParam(defaultValue = "0")  Long rgvPosDestination
    ) {
        if (rgvNo==null || rgvNo==0){
@@ -159,7 +159,7 @@
        if (taskNo==null || taskNo==0){
            return R.error("作业号请填写");
        }
        if (rgvStaNo == null || rgvStaNo == 0){
        if (rgvStaNoPut == null || rgvStaNoPut == 0){
            return R.error("目标站点请填写");
        }
        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
@@ -173,7 +173,7 @@
                return R.error("存在执行中任务,请先处理!!!");
            }
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut));
            //执行
            issuedPut.setTaskNo(Long.valueOf(taskNo));
            issuedPut.setTaskStatus(3);
@@ -194,7 +194,7 @@
    @ManagerAuth(memo = "小车取货")
    public R rgvTakeWalk(@RequestParam(defaultValue = "0") Integer rgvNo,
                        @RequestParam(defaultValue = "0") Integer taskNo,
                        @RequestParam(defaultValue = "0") Integer rgvStaNo,
                        @RequestParam(defaultValue = "0") Integer rgvStaNoTake,
                        @RequestParam(defaultValue = "0") Long rgvPosDestination
    ) {
        if (rgvNo==null || rgvNo==0){
@@ -203,8 +203,8 @@
        if (taskNo==null || taskNo==0){
            return R.error("作业号请填写");
        }
        if (rgvStaNo == null || rgvStaNo == 0){
            return R.error("目标站点请填写");
        if (rgvStaNoTake == null || rgvStaNoTake == 0){
            return R.error("取货站点请填写");
        }
        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
@@ -216,7 +216,7 @@
                return R.error("存在执行中任务,请先处理!!!");
            }
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNo));
            BasDevpPosition basDevpPosition = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoTake));
            //执行
            issuedTake.setTaskNo(Long.valueOf(taskNo));
            issuedTake.setTaskStatus(2);
@@ -232,4 +232,63 @@
        return R.ok("任务生成成功");
    }
    @PostMapping("/run/TakeAndPut")//Take  Put  Walk
    @ManagerAuth(memo = "小车取货")
    public R rgvTakeAndPut(@RequestParam(defaultValue = "0") Integer rgvNo,
                         @RequestParam(defaultValue = "0") Integer taskNo,
                         @RequestParam(defaultValue = "0") Integer rgvStaNoTake,
                         @RequestParam(defaultValue = "0") Integer rgvStaNoPut,
                         @RequestParam(defaultValue = "0") Long rgvPosDestination
    ) {
        if (rgvNo==null || rgvNo==0){
            return R.error("请选择小车");
        }
        if (taskNo==null || taskNo==0){
            return R.error("作业号请填写");
        }
        if (rgvStaNoTake == null || rgvStaNoTake == 0){
            return R.error("取货站点请填写");
        }
        if (rgvStaNoPut == null || rgvStaNoPut == 0){
            return R.error("放货站点请填写");
        }
        RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNo);
        TaskProtocolCache taskProtocolCache = rgvThread.getTaskProtocolCache();
        TaskProtocol issuedTake = new TaskProtocol();
        TaskProtocol issuedPut = new TaskProtocol();
        try {
            ConcurrentHashMap<String, TaskProtocol> allTaskProtocol = taskProtocolCache.getAllTaskProtocol();
            if (allTaskProtocol.size() > 0) {
                return R.error("存在执行中任务,请先处理!!!");
            }
            BasDevpPosition basDevpPositionTake = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoTake));
            //执行
            issuedTake.setTaskNo(Long.valueOf(taskNo));
            issuedTake.setTaskStatus(2);
            issuedTake.setTaskNoDirection(issuedTake.gettaskNoDirection$(issuedTake.getTaskNo(), issuedTake.getTaskStatus()));
            issuedTake.setTargetPosition(basDevpPositionTake.getPlcPosition());
            issuedTake.setIsRunning(1);
            issuedTake.setDirection(basDevpPositionTake.getRgvSign()==1);
            BasDevpPosition basDevpPositionPut = basDevpPositionService.selectOne(new EntityWrapper<BasDevpPosition>().eq("DEV_NO", rgvStaNoPut));
            //执行
            issuedPut.setTaskNo(Long.valueOf(taskNo));
            issuedPut.setTaskStatus(3);
            issuedPut.setTaskNoDirection(issuedPut.gettaskNoDirection$(issuedPut.getTaskNo(), issuedPut.getTaskStatus()));
            issuedPut.setTargetPosition(basDevpPositionPut.getPlcPosition());
            issuedPut.setIsRunning(1);
            issuedPut.setDirection(basDevpPositionPut.getRgvSign()==1);
            taskProtocolCache.updateTaskProtocol(issuedTake);
            taskProtocolCache.updateTaskProtocol(issuedPut);
        } catch (Exception e) {
            return R.error("任务生成失败"+e.getMessage());
        }
        return R.ok("任务生成成功");
    }
}
src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -377,6 +377,7 @@
            return R.ok();
        } else if (!Cools.isEmpty(taskWrk) && taskWrk.getWrkSts()==3) {
            taskWrk.setWrkSts(2);
            taskWrk.setStatus(TaskStatusType.RECEIVE.id);//派发状态
            taskWrkService.updateById(taskWrk);
            if(!taskWrkService.updateById(taskWrk)){
                return R.error("更新任务状态失败");
src/main/java/com/zy/asrs/entity/param/WcsStatusResponseModel.java
New file
@@ -0,0 +1,12 @@
package com.zy.asrs.entity.param;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class WcsStatusResponseModel {
    private List<BasDevpWmsParam> chainList = new ArrayList<>();
    private List<BasCrnpWmsParam> pilingCarList = new ArrayList<>();
    private List<BasRgvWmsParam> rgvList = new ArrayList<>();
}
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -463,7 +463,7 @@
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
//                            && staProtocol.isInEnable()
                            && (workNo == 0 || (workNo>9000 && workNo<10000))
//                            && (workNo == 0 || (workNo>9000 && workNo<10000))
                            && staProtocol.isPakMkWalk()
                    ) {
                        if (inSta.isBarcodeSign()){
@@ -1372,6 +1372,32 @@
        }
        return true;
    }
    public boolean rgvOtherIDLE(RgvSlave slave) {
        RgvProtocol rgvProtocol = RgvStatusCache.getRgvStatus(slave.getId());
        RgvTaskProtocol rgvTaskProtocol = RgvTaskCache.getRgvStatus(slave.getId());
        if (rgvProtocol == null || rgvTaskProtocol == null) {
            return false;
        }
        if (!rgvProtocol.getModeType().equals(RgvModeType.AUTO) || rgvProtocol.getRgvPos().equals(0L) || rgvTaskProtocol.getAvoid() == -1
                || (!rgvProtocol.getStatusType().equals(RgvStatusType.IDLE) && !rgvProtocol.getStatusType().equals(RgvStatusType.ROAM))) {
            return false;
        }
        RgvProtocol rgvProtocolOther = RgvStatusCache.getRgvStatus(slave.getOtherId());
        RgvTaskProtocol rgvTaskProtocolOther = RgvTaskCache.getRgvStatus(slave.getOtherId());
        if (rgvProtocolOther == null) {
            return true;
        }
        if (rgvProtocolOther.statusEnable) {
            if (rgvProtocolOther.getModeType().equals(RgvModeType.AUTO)
                    && rgvProtocolOther.getStatusType().equals(RgvStatusType.IDLE)
                    && rgvProtocolOther.getLoaded()==0) {
                return false;
            }
        }
        return true;
    }
    public TaskWrk deviceDetection(RgvSlave.RgvStn inSta) {
@@ -1482,6 +1508,12 @@
                            }
                        }
                        if (!sign){
                            if (!rgvOtherIDLE(rgvSlave)){
                                sign=true;
                            }
                        }
                        if (!sign) {
                            for (Integer staNoNow : rangeList) {
                                for (RgvSlave.RgvStn rgvStn : rgvSlave.getRgvInSta()) {
src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -125,6 +125,14 @@
        return basRgv;
    }
    public long getRgvPosDestinationOrPos(boolean sign){
        if (!sign){
            return RgvPosDestination>RgvPos? RgvPosDestination:RgvPos;
        } else {
            return RgvPosDestination<RgvPos? RgvPosDestination:RgvPos;
        }
    }
    public void setxSpeed(Short xSpeed) {
        this.xSpeed = Float.valueOf(xSpeed);
    }
src/main/java/com/zy/core/thread/RgvThread.java
@@ -52,7 +52,7 @@
    //# 轨道基准点
    private Long trackBenchmark = 1L;
    //  # 避让距离
    private Long avoidDistance = 4000L;
    private Long avoidDistance = 5000L;
    /**
     * 工位1复位信号
@@ -343,6 +343,10 @@
                        log.error("行走超出范围!!!任务异常  联系管理员!!!");
                        return false;
                    }
                    long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
                    if (avoidAbs<51){
                        return true;
                    }
                    rgvTaskProtocolOther.setAvoid(1);
                    rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
                    RgvTaskCache.updateRgvStatus(rgvTaskProtocolOther);
@@ -358,6 +362,10 @@
                    if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[0])) {
                        log.error("行走超出范围!!!任务异常  联系管理员!!!");
                        return false;
                    }
                    long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
                    if (avoidAbs<51){
                        return true;
                    }
                    rgvTaskProtocolOther.setAvoid(1);
                    rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
@@ -376,12 +384,22 @@
                            log.error("行走超出范围!!!任务异常  联系管理员!!!");
                            return false;
                        }
                        long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
                        if (avoidAbs<51){
                            return false;
                        }
                        rgvTaskProtocol.setAvoid(1);
                        rgvTaskProtocol.setAvoidingTheDestination(avoid);
                        RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
                        return false;
                    }
                    return false;
                }
            } else {
                if ((rgvProtocolOther.getRgvPosDestinationOrPos(true) - rgvProtocolOther.getCarBodyJiaoMing())
                        - (targetPosition + rgvProtocol.getCarBodyKunPeng())
                        > avoidDistance) {//无需避让
                    return true;
                }
            }
        } else {
@@ -395,6 +413,10 @@
                    if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                        log.error("行走超出范围!!!任务异常  联系管理员!!!");
                        return false;
                    }
                    long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
                    if (avoidAbs<51){
                        return true;
                    }
                    rgvTaskProtocolOther.setAvoid(1);
                    rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
@@ -411,6 +433,10 @@
                    if (!new TrackRangeUtils().avoidRange(avoid, avoidRange[1])) {
                        log.error("行走超出范围!!!任务异常  联系管理员!!!");
                        return false;
                    }
                    long avoidAbs = Math.abs(avoid - rgvProtocolOther.getRgvPos());
                    if (avoidAbs<51){
                        return true;
                    }
                    rgvTaskProtocolOther.setAvoid(1);
                    rgvTaskProtocolOther.setAvoidingTheDestination(avoid);
@@ -430,6 +456,10 @@
                            log.error("行走超出范围!!!任务异常  联系管理员!!!");
                            return false;
                        }
                        long avoidAbs = Math.abs(avoid - rgvProtocol.getRgvPos());
                        if (avoidAbs<51){
                            return false;
                        }
                        rgvTaskProtocol.setAvoid(1);
                        rgvTaskProtocol.setAvoidingTheDestination(avoid);
                        RgvTaskCache.updateRgvStatus(rgvTaskProtocol);
@@ -437,6 +467,12 @@
                    }
                    return false;
                }
            } else {
                if ((rgvProtocolOther.getRgvPosDestinationOrPos(false) - rgvProtocolOther.getCarBodyJiaoMing())
                        - (targetPosition + rgvProtocol.getCarBodyKunPeng())
                        > avoidDistance) {//无需避让
                    return true;
                }
            }
        }
        return false;
src/main/resources/application-prod.yml
@@ -83,8 +83,8 @@
    rack: 0
    slot: 0
    otherId: 2
    carBodyJiaoMing: 2000
    carBodyKunPeng: 15000
    carBodyJiaoMing: 2800
    carBodyKunPeng: 13500
    #RGV源站点
    rgvInSta[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
@@ -159,8 +159,8 @@
    rack: 0
    slot: 0
    otherId: 1
    carBodyJiaoMing: 2000
    carBodyKunPeng: 15000
    carBodyJiaoMing: 2800
    carBodyKunPeng: 13500
    #RGV源站点
    rgvInSta[0]:
      devpPlcId: ${wcs-slave.devp[0].id}
src/main/resources/application.yml
@@ -12,7 +12,8 @@
#    username: sa
#    password: sa@123
    driver-class-name: dm.jdbc.driver.DmDriver
    url: jdbc:dm://10.10.10.201:5236/SOURCE
#    url: jdbc:dm://10.10.10.201:5236/SOURCE
    url: jdbc:dm://127.0.0.1:5236/SOURCE
    username: SYSDBA
    password: Zy@12345
  mvc:
@@ -55,7 +56,7 @@
  # 轨道转换为米比例
  trackProportion: 10000
  # 避让距离
  avoidDistance: 5100
  avoidDistance: 4000
wms:
  # 是否开启上报
@@ -73,6 +74,7 @@
  # 任务状态反馈接口
  taskStatusFeedbackPath: external/wcs/taskStatusFeedback
  # 货位状态更新接口
  locationUpdatePath: api/InterFace/get_InterFace_TestStorage
#  locationUpdatePath: api/InterFace/get_InterFace_TestStorage
  # 移库申请接口
  movePath: api/InterFace/get_InterFace_TestStorage
#  movePath: api/InterFace/get_InterFace_TestStorage
  wmsHeartBeat: external/wcs/wmsHeartBeat
src/main/webapp/views/deviceOperate/rgvOperate.html
@@ -47,13 +47,17 @@
                            <el-form-item label="目标定位置">
                                <el-input v-model="formParam.rgvPosDestination" placeholder="目标定位置"></el-input>
                            </el-form-item>
                            <el-form-item label="取货站点">
                                <el-input v-model="formParam.rgvStaNoTake" placeholder="目标站点"></el-input>
                            </el-form-item>
                            <el-form-item label="目标站点">
                                <el-input v-model="formParam.rgvStaNo" placeholder="目标站点"></el-input>
                                <el-input v-model="formParam.rgvStaNoPut" placeholder="目标站点"></el-input>
                            </el-form-item>
                        </el-form>
                        <div>
                            <el-button @click="requestOperate('take')" type="primary">取货</el-button>
                            <el-button @click="requestOperate('put')" type="primary">放货</el-button>
                            <el-button @click="requestOperate('TakeAndPut')" type="primary">取放货</el-button>
                            <el-button @click="requestOperate('walk')" type="warning">行走</el-button>
                            <el-button @click="requestOperate('del')" type="warning">任务清空</el-button>
                        </div>
@@ -103,7 +107,8 @@
                formParam: {
                    rgvNo: 0,
                    taskNo: 0,
                    rgvStaNo: 0,
                    rgvStaNoTake: 0,
                    rgvStaNoPut: 0,
                    rgvPosDestination: 0
                }
            },
@@ -129,7 +134,8 @@
                    
                    this.formParam.rgvNo = row.rgvNo
                    this.formParam.taskNo = row.taskNo
                    this.formParam.rgvStaNo = row.rgvStaNo
                    this.formParam.rgvStaNoTake = row.rgvStaNoTake
                    this.formParam.rgvStaNoPut = row.rgvStaNoPut
                    this.formParam.rgvPosDestination = row.rgvPosDestination
                    this.getTaskAllData(index+1)