#
vincentlu
7 天以前 efabc6ba991acfd01d38bb0bf4e8cfd772416617
#
3个文件已修改
52 ■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
@@ -24,6 +24,8 @@
@Component
public class AutoRunScheduler {
    private static final AgvModelType DEFAULT_AGV_MODEL = AgvModelType.CTU_BOX_TRANSPORT_AGV;
    private final RedisSupport redis = RedisSupport.defaultRedisSupport;
    @Autowired
@@ -52,10 +54,13 @@
//    @Scheduled(cron = "0/1 * * * * ? ")
    private void execute() {
        if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
        this.autoRun();
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, DEFAULT_AGV_MODEL.toString()));
        if (null == agvModel) { return; }
        this.autoRun(agvModel);
    }
    private void autoRun() {
    private void autoRun(AgvModel agvModel) {
        int availableAgvCount = this.getAvailableAgvCount();
        if (0 == availableAgvCount) { return; }
@@ -64,18 +69,16 @@
        String memo = "DEMO_STA_" + String.join("-", staPreNos);
        // 入库
        this.runStaToLoc(memo);
        this.runStaToLoc(agvModel, memo);
        // 出库
        this.runLocToSta(memo);
        this.runLocToSta(agvModel, memo);
        // 移库
        this.runLocToLoc(memo);
        this.runLocToLoc(agvModel, memo);
    }
    // 入库
    private void runStaToLoc(String memo) {
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
        if (null == agvModel) { return; }
    private void runStaToLoc(AgvModel agvModel, String memo) {
        // STOCK STA
        List<Sta> stockList = staService.queryAvailableOutSta(1);
@@ -131,9 +134,7 @@
    }
    // 出库
    private void runLocToSta(String memo) {
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
        if (null == agvModel) { return; }
    private void runLocToSta(AgvModel agvModel, String memo) {
        // IDLE STA
        List<Sta> idleList = staService.queryAvailableInSta(1);
@@ -189,7 +190,7 @@
    }
    // 移库
    private void runLocToLoc(String staTaskMemo) {
    private void runLocToLoc(AgvModel agvModel, String staTaskMemo) {
        String memo = "DEMO_LOC";
        int availableAgvCount = this.getAvailableAgvCount();
@@ -199,9 +200,6 @@
                .in(Bus::getBusSts, BusStsType.RECEIVE.val(), BusStsType.PROGRESS.val())
                .in(Bus::getMemo, memo, staTaskMemo)
        )) { return; }
        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
        if (null == agvModel) { return; }
        int maxCapacity = agvModel.getBackpack();
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AvoidWaveCalculator.java
@@ -14,7 +14,6 @@
import com.zy.acs.manager.manager.entity.AgvDetail;
import com.zy.acs.manager.manager.entity.AgvModel;
import com.zy.acs.manager.manager.entity.Code;
import com.zy.acs.manager.manager.enums.AgvModelType;
import com.zy.acs.manager.manager.service.AgvDetailService;
import com.zy.acs.manager.manager.service.AgvModelService;
import com.zy.acs.manager.manager.service.AgvService;
@@ -83,7 +82,7 @@
    }
    public boolean calcWaveScope() {
    public boolean calcWaveScope(AgvModel agvModel) {
        Integer lev = MapDataDispatcher.MAP_DEFAULT_LEV;
        boolean lockAcquired = false;
@@ -96,7 +95,7 @@
            }
//            return this.calcWaveScopeByPython(lev);
            return this.calcWaveScopeByJava(lev);
            return this.calcWaveScopeByJava(lev, agvModel);
        } catch (Exception e) {
@@ -115,9 +114,12 @@
        }
    }
    private boolean calcWaveScopeByPython(Integer lev) throws Exception {
    private boolean calcWaveScopeByPython(Integer lev, AgvModel agvModel) throws Exception {
        if (null == agvModel.getDiameter() || agvModel.getDiameter() <= 0) {
            log.warn("There is no diameter or diameter value was wrong...");
        }
        // python
        AgvModel agvModel = agvModelService.selectByType(AgvModelType.CTU_BOX_TRANSPORT_AGV.toString());    // can be optimized
        Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
        if (null == pythonFile) {
@@ -170,9 +172,11 @@
        return true;
    }
    private boolean calcWaveScopeByJava(Integer lev) throws Exception {
    private boolean calcWaveScopeByJava(Integer lev, AgvModel agvModel) throws Exception {
        if (null == agvModel.getDiameter() || agvModel.getDiameter() <= 0) {
            log.warn("There is no diameter or diameter value was wrong...");
        }
        AgvModel agvModel = agvModelService.selectByType(AgvModelType.CTU_BOX_TRANSPORT_AGV.toString());    // can be optimized
        Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(agvModel.getDiameter(), MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR);
        // java
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -201,7 +201,7 @@
            //        ArrayList<List<TaskPosDto>> list = JSON.parseObject(travel.getTaskContent(), new TypeReference<ArrayList<List<TaskPosDto>>>() {});
            // * sync wave scope
            if (!avoidWaveCalculator.calcWaveScope()) {
            if (!avoidWaveCalculator.calcWaveScope(agvModelService.getByAgvId(agv.getId()))) {
                log.error("failed to calculate avoid wave matrix ...");
                return;
            }
@@ -672,7 +672,7 @@
                            // the wave of first node
                            Double avoidDistance = MapDataUtils.getVehicleWaveSafeDistance(
                                    agvModelService.getById(jamAgv.getAgvModel()).getDiameter(),
                                    agvModelService.getByAgvId(jamAgv.getAgvModel()).getDiameter(),
                                    MapDataConstant.MAX_DISTANCE_BETWEEN_ADJACENT_AGV_FACTOR
                            );
                            List<String> waveCodeList = mapService.getWaveScopeByCode(lev, firstCodeNode, avoidDistance)