#
vincentlu
2025-01-13 89c7f6e5bcc21b0e8f83a2bc6d680e2ffe431e6f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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<AGV_04_UP> 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);
        }
    }
 
}