#
vincentlu
2026-04-22 24fb5d17effaef4e24a4057062407bbcff0c8872
#
5个文件已修改
153 ■■■■ 已修改文件
zy-acs-flow/src/i18n/en.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/i18n/zh.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/http.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/map/insight/agv/AgvControl.jsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-flow/src/i18n/en.js
@@ -963,13 +963,14 @@
                control: {
                    type: {
                        MOVE: 'MOVE',
                        TO_CHARGE: 'TO_CHARGE',
                        STOP_CHARGING: 'STOP_CHARGING',
                        TO_STANDBY: 'TO_STANDBY',
                        LOC_TO_LOC: 'LOC_TO_LOC',
                        LOC_TO_STA: 'LOC_TO_STA',
                        STA_TO_LOC: 'STA_TO_LOC',
                        STA_TO_STA: 'STA_TO_STA',
                        CANCEL_TASK: 'CANCEL_TASK',
                        TO_CHARGE: 'TO_CHARGE',
                        STOP_CHARGING: 'STOP_CHARGING',
                    },
                    startCode: 'Source Point',
                    endCode: 'Destination Point',
zy-acs-flow/src/i18n/zh.js
@@ -964,12 +964,13 @@
                    type: {
                        MOVE: '移动',
                        TO_STANDBY: '去待机位',
                        TO_CHARGE: '去充电',
                        STOP_CHARGING: '断开充电',
                        LOC_TO_LOC: '库位到库位',
                        LOC_TO_STA: '库位到站点',
                        STA_TO_LOC: '站点到库位',
                        STA_TO_STA: '站点到站点',
                        CANCEL_TASK: '取消任务',
                        TO_CHARGE: '去充电',
                        STOP_CHARGING: '断开充电',
                    },
                    startCode: '起始定位点',
                    endCode: '目标定位点',
zy-acs-flow/src/map/http.js
@@ -343,6 +343,27 @@
    })
}
export const handleCancelTaskAgv = async (param, callback) => {
    await request.post('/handler/control/agv/task/cancel', param, {
        headers: {
            'appKey': HANDLE_APP_KEY
        }
    }).then((res) => {
        const { code, msg, data } = res.data;
        if (code === 200) {
            notify.success(msg);
            if (callback) {
                callback(data)
            }
        } else {
            notify.error(msg);
        }
    }).catch((error) => {
        notify.error(error.message);
        console.error(error.message);
    })
}
export const handleRestoreAgvAll = async (param, callback) => {
    await request.post('/handler/restore/agv', param, {
        headers: {
zy-acs-flow/src/map/insight/agv/AgvControl.jsx
@@ -17,7 +17,7 @@
import CheckOutlinedIcon from '@mui/icons-material/CheckOutlined';
import RestartAltIcon from '@mui/icons-material/RestartAlt';
import useCoolHook from './useCoolHook';
import { handleControlAgv, handleStopChargingAgv } from '../../http';
import { handleCancelTaskAgv, handleControlAgv, handleStopChargingAgv } from '../../http';
function AgvControl(props) {
    const { curAgvNo, curAgvInfo } = props;
@@ -48,6 +48,9 @@
        ...(isUnderdriveAgv ? [{
            value: 'STOP_CHARGING',
            label: translate('page.map.insight.control.type.STOP_CHARGING')
        }, {
            value: 'CANCEL_TASK',
            label: translate('page.map.insight.control.type.CANCEL_TASK')
        }] : []),
    ];
@@ -57,6 +60,12 @@
    const onSubmit = (data) => {
        if (curAgvNo) {
            if (data.taskMode === 'CANCEL_TASK') {
                handleCancelTaskAgv({ agvNo: curAgvNo }, () => {
                });
                return;
            }
            if (data.taskMode === 'STOP_CHARGING') {
                handleStopChargingAgv({ agvNo: curAgvNo }, () => {
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -445,6 +445,90 @@
        return R.ok();
    }
    @PreAuthorize("hasAuthority('manager:agv:update')")
    @PostMapping("/control/agv/charge/stop")
    public R stopCharging(@RequestHeader String appKey,
                          @RequestBody HandlerPublishParam param) {
        if (Cools.isEmpty(param.getAgvNo(), appKey)) {
            return R.error();
        }
        if (!APP_KEY.equals(appKey)) {
            return R.error();
        }
        Agv agv = agvService.selectByUuid(param.getAgvNo());
        if (agv == null) {
            return R.error("AGV不存在");
        }
        if (!agvService.judgeEnable(agv.getId())) {
            log.info("{}号AGV不可用,停止充电失败...", agv.getUuid());
            return R.error();
        }
        AgvModel agvModel = agvModelService.getByAgvId(agv.getId());
        if (agvModel == null || !AgvModelType.UNDERDRIVE_AGV.toString().equals(agvModel.getType())) {
            return R.error("当前AGV车型不支持断开充电");
        }
        if (!hikInstantActionPublishService.support(agv.getId())) {
            return R.error("当前AGV协议不支持断开充电");
        }
        hikInstantActionPublishService.publishStopCharging(agv.getUuid());
        return R.ok("断开充电指令已发送");
    }
    @PreAuthorize("hasAuthority('manager:agv:update')")
    @PostMapping("/control/agv/task/cancel")
    @Transactional
    public R cancelAgvTask(@RequestHeader String appKey,
                           @RequestBody HandlerPublishParam param) {
        if (Cools.isEmpty(param.getAgvNo(), appKey)) {
            return R.error();
        }
        if (!APP_KEY.equals(appKey)) {
            return R.error();
        }
        Agv agv = agvService.selectByUuid(param.getAgvNo());
        if (agv == null) {
            return R.error("AGV不存在");
        }
        if (!agvService.judgeEnable(agv.getId())) {
            log.info("{}号AGV不可用,取消任务失败...", agv.getUuid());
            return R.error();
        }
        AgvModel agvModel = agvModelService.getByAgvId(agv.getId());
        if (agvModel == null || !AgvModelType.UNDERDRIVE_AGV.toString().equals(agvModel.getType())) {
            return R.error("当前AGV车型不支持取消任务");
        }
        if (!hikInstantActionPublishService.support(agv.getId())) {
            return R.error("当前AGV协议不支持取消任务");
        }
        hikInstantActionPublishService.publishCancelOrder(agv.getUuid());
//        List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS);
//        if (Cools.isEmpty(tasks)) {
//            return R.error("当前AGV没有可取消的任务");
//        }
//
//        Long userId = getLoginUserId();
//        Date now = new Date();
//        List<Long> taskIds = tasks.stream().map(Task::getId).collect(Collectors.toList());
//        for (Task task : tasks) {
//            taskService.cancel(task.getId(), userId, Constants.HANDLE);
//        }
//        actionService.update(new LambdaUpdateWrapper<Action>()
//                .in(Action::getTaskId, taskIds)
//                .set(Action::getActionSts, ActionStsType.FINISH.val())
//                .set(Action::getUpdateBy, userId)
//                .set(Action::getUpdateTime, now));
        return R.ok("取消任务指令已发送");
    }
    @RequestMapping(value = "/restore/agv", method = {RequestMethod.GET, RequestMethod.POST})
    public R restoreAgv(@RequestHeader String appKey, @RequestBody HandlerPublishParam param) {
        if (Cools.isEmpty(appKey)) {
@@ -495,33 +579,6 @@
        }
        return R.ok();
    }
    @PreAuthorize("hasAuthority('manager:agv:update')")
    @PostMapping("/control/agv/charge/stop")
    public R stopCharging(@RequestHeader String appKey,
                          @RequestBody HandlerPublishParam param) {
        if (Cools.isEmpty(param.getAgvNo(), appKey)) {
            return R.error();
        }
        if (!APP_KEY.equals(appKey)) {
            return R.error();
        }
        Agv agv = agvService.selectByUuid(param.getAgvNo());
        if (agv == null) {
            return R.error("AGV不存在");
        }
        AgvModel agvModel = agvModelService.getByAgvId(agv.getId());
        if (agvModel == null || !AgvModelType.UNDERDRIVE_AGV.toString().equals(agvModel.getType())) {
            return R.error("当前AGV车型不支持断开充电");
        }
        if (!hikInstantActionPublishService.support(agv.getId())) {
            return R.error("当前AGV协议不支持断开充电");
        }
        hikInstantActionPublishService.publishStopCharging(agv.getUuid());
        return R.ok("断开充电指令已发送");
    }
    private void publishRestoreCancelIfNeeded(Agv agv) {