1
zhang
1 天以前 5d8216a8d79aeb7b22a86478580018a3d9628406
1
3个文件已修改
73 ■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
@@ -55,7 +55,7 @@
    public static final String MAP_AREA_DATA_FLAG = "MAP_AREA_DATA_FLAG";
    /**
     * 在redis中存MAP,value表示状态:1小车到位,2下发充电命令,3后退到位消失,4前进到位出现,5电流电压>0,6
     * 在redis中存MAP,value表示状态:1充电阶段,2充电中或充电完成
     */
    public static final String AGV_CHARGE_FLAG = "AGV_CHARGE_FLAG";
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/MaintainScheduler.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.xingshuangs.iot.protocol.modbus.service.ModbusRtuOverTcp;
import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
import com.zy.acs.charge.ChargeCoreService;
import com.zy.acs.common.constant.RedisConstant;
import com.zy.acs.common.enums.AgvStatusType;
@@ -10,8 +9,8 @@
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.DateUtils;
import com.zy.acs.manager.common.config.UplinkProperties;
import com.zy.acs.manager.core.integrate.wms.TaskReportService;
import com.zy.acs.manager.core.integrate.wms.FaultReportService;
import com.zy.acs.manager.core.integrate.wms.TaskReportService;
import com.zy.acs.manager.core.service.ChargeService;
import com.zy.acs.manager.core.service.MainLockWrapService;
import com.zy.acs.manager.manager.entity.*;
@@ -72,7 +71,9 @@
    @Scheduled(cron = "0/5 * * * * ? ")
    private synchronized void autoCharge(){
        if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
        if (!configService.getVal("TaskAssignMode", Boolean.class)) {
            return;
        }
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
        for (Agv agv : agvList) {
            AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId());
@@ -113,8 +114,12 @@
    @Scheduled(cron = "0/1 * * * * ? ")
//    @Scheduled(cron = "0 */2 * * * ? ")
    private synchronized void autoStandby(){
        if (!configService.getVal("TaskAssignMode", Boolean.class)) { return; }
        if (!configService.getVal("automaticStandbyPosition", Boolean.class)) { return; }
        if (!configService.getVal("TaskAssignMode", Boolean.class)) {
            return;
        }
        if (!configService.getVal("automaticStandbyPosition", Boolean.class)) {
            return;
        }
        List<Agv> agvList = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
        for (Agv agv : agvList) {
@@ -165,7 +170,9 @@
                                Optional.ofNullable(latestTask.getEndTime()).orElse(latestTask.getUpdateTime())
                                , new Date()
                        );
                        if (seconds < intervalOfAutoStandby) { continue; }
                    if (seconds < intervalOfAutoStandby) {
                        continue;
                    }
                    }
                } else {
                    continue;
@@ -178,13 +185,17 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    private void reportTaskToUplink() {
        if (!uplinkProperties.getEnabled()) { return; }
        if (!uplinkProperties.getEnabled()) {
            return;
        }
        List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>()
                .in(Task::getUplinkSts, TaskUplinkStateType.PENDING.toString(), TaskUplinkStateType.FAILED.toString())
                .eq(Task::getTaskSts, TaskStsType.COMPLETE.val())
                .isNotNull(Task::getBusId)
        );
        if (Cools.isEmpty(taskList)) { return; }
        if (Cools.isEmpty(taskList)) {
            return;
        }
        for (Task task : taskList) {
            boolean finished = taskReportService.reportFinished(task);
            if (finished) {
@@ -217,9 +228,13 @@
    @Scheduled(cron = "0/3 * * * * ? ")
    private void reportFault() {
        String reportFaultUrl = configService.getVal("reportFaultUrl", String.class);
        if (Cools.isEmpty(reportFaultUrl)) { return; }
        if (Cools.isEmpty(reportFaultUrl)) {
            return;
        }
        List<VehFaultRec> vehFaultRecList = vehFaultRecService.list((new LambdaQueryWrapper<VehFaultRec>().eq(VehFaultRec::getState, VehFaultRecStateType.PENDING).ge(VehFaultRec::getHappenTime, Instant.now().minusSeconds(3).atZone(ZoneId.systemDefault()).toLocalDateTime())));
        if (Cools.isEmpty(vehFaultRecList)) { return; }
        if (Cools.isEmpty(vehFaultRecList)) {
            return;
        }
        for (VehFaultRec vehFaultRec : vehFaultRecList) {
            boolean finished = faultReportService.reportFinished(vehFaultRec,reportFaultUrl);
            if (finished) {
@@ -241,15 +256,22 @@
        Set<String> mapKeys = redis.getMapKeys(RedisConstant.AGV_CHARGE_FLAG);
        for (String key : mapKeys) {
            Integer status = redis.getMap(RedisConstant.AGV_CHARGE_FLAG, key);
            if (null == status) {
                continue;
            }
            AgvDetail agvDetail = agvDetailService.selectByAgvNo(key);
            FuncSta funcSta = funcStaService.getByCodeAndType(agvDetail.getCode(), FuncStaType.CHARGE.toString());
            ModbusRtuOverTcp modbusTcp = chargeService.get(funcSta.getUuid());
            if (status != null && status == 1) {
            if (null == agvDetail || null == agvDetail.getSoc() || null == agvDetail.getAgvStatus() || funcSta == null || null == modbusTcp) {
                continue;
            }
            switch (status) {
                case 1:
                // 后退信号消失,说明马达正在前进
                if (chargeCoreService.checkBackwardRelayOffline(modbusTcp)) {
                    chargeCoreService.startCharging(modbusTcp);
                }
                while (chargeCoreService.checkForwardRelayOnline(modbusTcp)) {
                    if (chargeCoreService.checkForwardRelayOnline(modbusTcp)) {
                    double current = chargeCoreService.getCurrent(modbusTcp);
                    double voltage = chargeCoreService.getVoltage(modbusTcp);
                    if (current > 0 && voltage > 0) {
@@ -259,20 +281,27 @@
                        log.info("read charge current and voltage: {},{}", current, voltage);
                    }
                }
            } else if (status != null && status == 2) {
                // 后退信号消失,说明马达正在前进
                    break;
                case 2:
                    AgvModel agvModel = agvModelService.getByAgvId(agvDetail.getAgvId());
                    if (agvDetail.getSoc() >= agvModel.getQuaBattery()) {
                        // 前进信号存在,说明机械臂未伸回
                if (chargeCoreService.checkForwardRelayOnline(modbusTcp)) {
                    chargeCoreService.startCharging(modbusTcp);
                            chargeCoreService.stopCharging(modbusTcp);
                }
                while (chargeCoreService.checkBackwardRelayOffline(modbusTcp)) {
                        if (chargeCoreService.checkBackwardRelayOffline(modbusTcp)) {
                    redis.deleteMap(RedisConstant.AGV_CHARGE_FLAG, key);
                    log.info("charge over");
                }
            }
                    break;
                default:
                    log.error("charge status error: {}", status);
                    break;
        }
    }
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1988,9 +1988,13 @@
            if (taskComplete) {
                // 在充电任务行走到终点,同时判断充电桩的类型
                if (segment.getPosType().equals(TaskPosDto.PosType.TO_CHARGE)){
                    // 保存一条数据
                    FuncSta destFuncSta = funcStaService.getByCodeAndType(task.getDestCode(), FuncStaType.CHARGE.toString());
                    if (destFuncSta != null) {
                        if (Cools.isEmpty(destFuncSta.getProtocol()) && destFuncSta.getProtocol().equalsIgnoreCase(ProtocolType.MODBUS.toString())) {
                    redis.setMap(RedisConstant.AGV_CHARGE_FLAG,segment.getAgvId$(),1);
                }
                    }
                }
                task.setTaskSts(TaskStsType.COMPLETE.val());
                task.setEndTime(now);
                task.setUpdateTime(now);