package com.zy.acs.manager.core.service; import com.zy.acs.common.domain.protocol.AGV_04_UP; import com.zy.acs.common.enums.error.AgvErrorType; import com.zy.acs.common.utils.GsonUtils; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.RadixTools; import com.zy.acs.framework.common.SnowflakeIdWorker; import com.zy.acs.manager.core.domain.VehicleFaultDto; import com.zy.acs.manager.manager.entity.VehFaultRec; import com.zy.acs.manager.manager.service.AgvDetailService; import com.zy.acs.manager.manager.service.AgvService; import com.zy.acs.manager.manager.service.VehFaultRecService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.Date; /** * Created by vincent on 8/19/2024 */ @Slf4j @Service public class FaultProcessor { @Autowired private VehFaultRecService vehFaultRecService; @Autowired private SnowflakeIdWorker snowflakeIdWorker; @Autowired private AgvService agvService; @Autowired private AgvDetailService agvDetailService; @Async public void execute(VehicleFaultDto dto) { try { String vehicle = dto.getVehicle(); AGV_04_UP agv_04_up = dto.getT(); Date errorTime = new Date(dto.getTimestamp()); AgvErrorType errorType = AgvErrorType.query(agv_04_up.getHexFaultId()); Long agvId = agvService.getAgvId(vehicle); VehFaultRec vehFaultRec = new VehFaultRec(); vehFaultRec.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); vehFaultRec.setAgvId(agvId); vehFaultRec.setFaultNo(String.valueOf(agv_04_up.getFaultId())); vehFaultRec.setFaultHex(agv_04_up.getHexFaultId()); vehFaultRec.setFaultName(null != errorType ? errorType.desc : "undefined"); vehFaultRec.setFaultLev(agv_04_up.getFaultLevel()); vehFaultRec.setFaultData(GsonUtils.toJson(Cools.add("data1", agv_04_up.getData1()).add("data2", agv_04_up.getData2()))); vehFaultRec.setHappenTime(new Date()); vehFaultRec.setProtocol(RadixTools.bytesToHexStr(agv_04_up.writeToBytes())); if (!vehFaultRecService.save(vehFaultRec)) { log.error("{}号车辆故障!记录故障信息失败......", dto.getVehicle()); } } catch (Exception e) { log.error("FaultProcessor", e); } } }