|  |  | 
 |  |  | 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 | 
 |  |  | 
 |  |  |     private VehFaultRecService vehFaultRecService; | 
 |  |  |     @Autowired | 
 |  |  |     private SnowflakeIdWorker snowflakeIdWorker; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvService agvService; | 
 |  |  |     @Autowired | 
 |  |  |     private AgvDetailService agvDetailService; | 
 |  |  |  | 
 |  |  |     @Async | 
 |  |  |     public void execute(VehicleFaultDto dto) { | 
 |  |  |     public void execute(VehicleFaultDto<AGV_04_UP> dto) { | 
 |  |  |         try { | 
 |  |  |             String vehicle = dto.getVehicle(); | 
 |  |  |             AGV_04_UP agv_04_up = dto.getT(); | 
 |  |  |             Date errorTime = new Date(dto.getTimestamp()); | 
 |  |  |  | 
 |  |  |             VehFaultRec vehFaultRec = new VehFaultRec(); | 
 |  |  |             vehFaultRec.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); | 
 |  |  | //            vehFaultRec.setFaultHex(); | 
 |  |  |             AgvErrorType errorType = AgvErrorType.query(agv_04_up.getHexFaultId()); | 
 |  |  |  | 
 |  |  |             Long agvId = agvService.getAgvId(vehicle); | 
 |  |  |             VehFaultRec vehFaultRec = vehFaultRecService.getTopVehFaultRec(agvId, String.valueOf(agv_04_up.getFaultId())); | 
 |  |  |             if (null == 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()); | 
 |  |  |                 if (!vehFaultRecService.save(vehFaultRec)) { | 
 |  |  |                     log.error("{}号车辆故障!记录故障信息失败......", dto.getVehicle()); | 
 |  |  |                 } | 
 |  |  |             } else { | 
 |  |  |                 vehFaultRec.setUpdateTime(new Date()); | 
 |  |  |                 if (!vehFaultRecService.updateById(vehFaultRec)) { | 
 |  |  |                     log.error("{}号车辆故障!更新故障信息失败......", dto.getVehicle()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } catch (Exception e) { | 
 |  |  |             log.error("FaultProcessor", e); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Async | 
 |  |  |     public void reset(Long agvId) { | 
 |  |  |         vehFaultRecService.resetError(agvId); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |