SchedulerTask.java 4.47 KB
package com.huaheng.control.management.task;

import java.util.Map;

import javax.annotation.Resource;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.huaheng.control.management.dto.EquipmentStatus;
import com.huaheng.control.management.dto.EquipmentStatusEnum;
import com.huaheng.control.management.dto.Task;
import com.huaheng.control.management.dto.TaskStatusEnum;
import com.huaheng.control.management.service.ApiService;
import com.huaheng.control.management.utils.HuahengRedisUtils;
import com.huaheng.control.management.utils.constant.CommonConstant;

import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Component
public class SchedulerTask {

    @Resource
    private HuahengRedisUtils huahengRedisUtils;

    @Resource
    private ApiService apiService;

    /**
     * 检查WMS系统状态
     */
    @Scheduled(cron = "10 * * * * ?")
    public void checkWmsEquipmentStatus() {
        try {
            EquipmentStatus equipmentStatus = huahengRedisUtils.getEquipmentStatus(CommonConstant.EQUIPMENT_ID_WMS);
            // 如果WMS设备的运行状态是RUNNING
            if (equipmentStatus == null) {
                equipmentStatus = new EquipmentStatus();
                equipmentStatus.setEquipmentId(CommonConstant.EQUIPMENT_ID_WMS);
                equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
                apiService.saveEquipmentStatus(equipmentStatus);
            }
//            if (equipmentStatus.getEquipmentStatus().equals(EquipmentStatusEnum.RUNNING.getKey())) {
//                // 时间戳与当前时间差值超过10分钟
//                if (DateUtil.between(DateUtil.date(equipmentStatus.getTimestamp()), DateUtil.date(), DateUnit.MINUTE) > 10) {
//                    Map<String, Map<String, Task>> taskDetails =
//                        huahengRedisUtils.getTaskDetailsByStatus(huahengRedisUtils.getAllTaskKeys(), TaskStatusEnum.WMS_SEND_TO_WCS.getKey());
//                    if (taskDetails.isEmpty()) {
//                        equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
//                        apiService.saveEquipmentStatus(equipmentStatus);
//                    } else {
//                        equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.OFFLINE.getKey());
//                        apiService.saveEquipmentStatus(equipmentStatus);
//                    }
//                }
//            }
            log.info("[检查WMS系统状态] 任务完成");
        } catch (Exception e) {
            log.error("[检查WMS系统状态] 任务异常", e);
        }
    }

    /**
     * 检查WCS系统状态
     */
    @Scheduled(cron = "20 * * * * ?")
    public void checkWcsEquipmentStatus() {
        try {
            EquipmentStatus equipmentStatus = huahengRedisUtils.getEquipmentStatus(CommonConstant.EQUIPMENT_ID_WCS);
            // 如果WMS设备的运行状态是RUNNING
            if (equipmentStatus == null) {
                equipmentStatus = new EquipmentStatus();
                equipmentStatus.setEquipmentId(CommonConstant.EQUIPMENT_ID_WCS);
                equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
                apiService.saveEquipmentStatus(equipmentStatus);
            }
//            if (equipmentStatus.getEquipmentStatus().equals(EquipmentStatusEnum.RUNNING.getKey())) {
//                // 时间戳与当前时间差值超过10分钟
//                if (DateUtil.between(DateUtil.date(equipmentStatus.getTimestamp()), DateUtil.date(), DateUnit.MINUTE) > 10) {
//                    Map<String, Map<String, Task>> taskDetails =
//                        huahengRedisUtils.getTaskDetailsByStatus(huahengRedisUtils.getAllTaskKeys(), TaskStatusEnum.WCS_RECEIVE_TASK.getKey());
//                    if (taskDetails.isEmpty()) {
//                        equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.FREE.getKey());
//                        apiService.saveEquipmentStatus(equipmentStatus);
//                    } else {
//                        equipmentStatus.setEquipmentStatus(EquipmentStatusEnum.OFFLINE.getKey());
//                        apiService.saveEquipmentStatus(equipmentStatus);
//                    }
//                }
//            }
            log.info("[检查WCS系统状态] 任务完成");
        } catch (Exception e) {
            log.error("[检查WCS系统状态] 任务异常", e);
        }
    }
}