package com.doumee.jtt808.t808; 
 | 
  
 | 
import io.github.yezhihao.netmc.util.AdapterMap; 
 | 
import io.github.yezhihao.protostar.annotation.Field; 
 | 
import io.github.yezhihao.protostar.annotation.Message; 
 | 
import io.swagger.v3.oas.annotations.media.Schema; 
 | 
import org.yzh.protocol.basics.JTMessage; 
 | 
import org.yzh.protocol.commons.JT808; 
 | 
import org.yzh.protocol.commons.transform.ParameterConverter; 
 | 
import org.yzh.protocol.commons.transform.parameter.*; 
 | 
  
 | 
import java.util.Map; 
 | 
import java.util.TreeMap; 
 | 
import java.util.function.Function; 
 | 
  
 | 
/** 
 | 
 * @author yezhihao 
 | 
 * https://gitee.com/yezhihao/jt808-server 
 | 
 */ 
 | 
@Message(JT808.设置终端参数) 
 | 
public class T8103 extends JTMessage { 
 | 
  
 | 
    @Field(length = 1, desc = "参数总数") 
 | 
    private int total; 
 | 
    @Field(desc = "参数项列表", converter = ParameterConverter.class) 
 | 
    private Map<Integer, Object> parameters; 
 | 
  
 | 
    public T8103() { 
 | 
    } 
 | 
  
 | 
    public T8103(Map<Integer, Object> parameters) { 
 | 
        this.parameters = parameters; 
 | 
        this.total = parameters.size(); 
 | 
    } 
 | 
  
 | 
    public int getTotal() { 
 | 
        return total; 
 | 
    } 
 | 
  
 | 
    public void setTotal(int total) { 
 | 
        this.total = total; 
 | 
    } 
 | 
  
 | 
    public Map<Integer, Object> getParameters() { 
 | 
        return parameters; 
 | 
    } 
 | 
  
 | 
    public void setParameters(Map<Integer, Object> parameters) { 
 | 
        this.parameters = parameters; 
 | 
        this.total = parameters.size(); 
 | 
    } 
 | 
  
 | 
    public T8103 addParameter(Integer key, Object value) { 
 | 
        if (parameters == null) 
 | 
            parameters = new TreeMap(); 
 | 
        parameters.put(key, value); 
 | 
        total = parameters.size(); 
 | 
        return this; 
 | 
    } 
 | 
  
 | 
    @Schema(description = "数值型参数列表(BYTE、WORD)") 
 | 
    private Map<Integer, Integer> parametersInt; 
 | 
    @Schema(description = "数值型参数列表(DWORD、QWORD)") 
 | 
    private Map<Integer, String> parametersLong; 
 | 
    @Schema(description = "字符型参数列表") 
 | 
    private Map<Integer, String> parametersStr; 
 | 
    @Schema(description = "图像分析报警参数设置(1078)") 
 | 
    private ParamImageIdentifyAlarm paramImageIdentifyAlarm; 
 | 
    @Schema(description = "特殊报警录像参数设置(1078)") 
 | 
    private ParamVideoSpecialAlarm paramVideoSpecialAlarm; 
 | 
    @Schema(description = "音视频通道列表设置(1078)") 
 | 
    private ParamChannels paramChannels; 
 | 
    @Schema(description = "终端休眠唤醒模式设置数据格式(1078)") 
 | 
    private ParamSleepWake paramSleepWake; 
 | 
    @Schema(description = "音视频参数设置(1078)") 
 | 
    private ParamVideo paramVideo; 
 | 
    @Schema(description = "单独视频通道参数设置(1078)") 
 | 
    private ParamVideoSingle paramVideoSingle; 
 | 
    @Schema(description = "盲区监测系统参数(苏标)") 
 | 
    private ParamBSD paramBSD; 
 | 
    @Schema(description = "胎压监测系统参数(苏标)") 
 | 
    private ParamTPMS paramTPMS; 
 | 
    @Schema(description = "驾驶员状态监测系统参数(苏标)") 
 | 
    private ParamDSM paramDSM; 
 | 
    @Schema(description = "高级驾驶辅助系统参数(苏标)") 
 | 
    private ParamADAS paramADAS; 
 | 
  
 | 
    public Map<Integer, Integer> getParametersInt() { 
 | 
        return parametersInt; 
 | 
    } 
 | 
  
 | 
    public void setParametersInt(Map<Integer, Integer> parametersInt) { 
 | 
        this.parametersInt = parametersInt; 
 | 
    } 
 | 
  
 | 
    public Map<Integer, String> getParametersLong() { 
 | 
        return parametersLong; 
 | 
    } 
 | 
  
 | 
    public void setParametersLong(Map<Integer, String> parametersLong) { 
 | 
        this.parametersLong = parametersLong; 
 | 
    } 
 | 
  
 | 
    public Map<Integer, String> getParametersStr() { 
 | 
        return parametersStr; 
 | 
    } 
 | 
  
 | 
    public void setParametersStr(Map<Integer, String> parametersStr) { 
 | 
        this.parametersStr = parametersStr; 
 | 
    } 
 | 
  
 | 
    public ParamADAS getParamADAS() { 
 | 
        return paramADAS; 
 | 
    } 
 | 
  
 | 
    public void setParamADAS(ParamADAS paramADAS) { 
 | 
        this.paramADAS = paramADAS; 
 | 
    } 
 | 
  
 | 
    public ParamBSD getParamBSD() { 
 | 
        return paramBSD; 
 | 
    } 
 | 
  
 | 
    public void setParamBSD(ParamBSD paramBSD) { 
 | 
        this.paramBSD = paramBSD; 
 | 
    } 
 | 
  
 | 
    public ParamChannels getParamChannels() { 
 | 
        return paramChannels; 
 | 
    } 
 | 
  
 | 
    public void setParamChannels(ParamChannels paramChannels) { 
 | 
        this.paramChannels = paramChannels; 
 | 
    } 
 | 
  
 | 
    public ParamDSM getParamDSM() { 
 | 
        return paramDSM; 
 | 
    } 
 | 
  
 | 
    public void setParamDSM(ParamDSM paramDSM) { 
 | 
        this.paramDSM = paramDSM; 
 | 
    } 
 | 
  
 | 
    public ParamImageIdentifyAlarm getParamImageIdentifyAlarm() { 
 | 
        return paramImageIdentifyAlarm; 
 | 
    } 
 | 
  
 | 
    public void setParamImageIdentifyAlarm(ParamImageIdentifyAlarm paramImageIdentifyAlarm) { 
 | 
        this.paramImageIdentifyAlarm = paramImageIdentifyAlarm; 
 | 
    } 
 | 
  
 | 
    public ParamSleepWake getParamSleepWake() { 
 | 
        return paramSleepWake; 
 | 
    } 
 | 
  
 | 
    public void setParamSleepWake(ParamSleepWake paramSleepWake) { 
 | 
        this.paramSleepWake = paramSleepWake; 
 | 
    } 
 | 
  
 | 
    public ParamTPMS getParamTPMS() { 
 | 
        return paramTPMS; 
 | 
    } 
 | 
  
 | 
    public void setParamTPMS(ParamTPMS paramTPMS) { 
 | 
        this.paramTPMS = paramTPMS; 
 | 
    } 
 | 
  
 | 
    public ParamVideo getParamVideo() { 
 | 
        return paramVideo; 
 | 
    } 
 | 
  
 | 
    public void setParamVideo(ParamVideo paramVideo) { 
 | 
        this.paramVideo = paramVideo; 
 | 
    } 
 | 
  
 | 
    public ParamVideoSingle getParamVideoSingle() { 
 | 
        return paramVideoSingle; 
 | 
    } 
 | 
  
 | 
    public void setParamVideoSingle(ParamVideoSingle paramVideoSingle) { 
 | 
        this.paramVideoSingle = paramVideoSingle; 
 | 
    } 
 | 
  
 | 
    public ParamVideoSpecialAlarm getParamVideoSpecialAlarm() { 
 | 
        return paramVideoSpecialAlarm; 
 | 
    } 
 | 
  
 | 
    public void setParamVideoSpecialAlarm(ParamVideoSpecialAlarm paramVideoSpecialAlarm) { 
 | 
        this.paramVideoSpecialAlarm = paramVideoSpecialAlarm; 
 | 
    } 
 | 
  
 | 
    public T8103 build() { 
 | 
        Map<Integer, Object> map = new TreeMap<>(); 
 | 
  
 | 
        if (parametersInt != null && !parametersInt.isEmpty()) 
 | 
            map.putAll(parametersInt); 
 | 
  
 | 
        if (parametersLong != null && !parametersLong.isEmpty()) 
 | 
            map.putAll(new AdapterMap(parametersLong, (Function<String, Long>) Long::parseLong)); 
 | 
  
 | 
        if (parametersStr != null && !parametersStr.isEmpty()) 
 | 
            map.putAll(parametersStr); 
 | 
  
 | 
        if (paramADAS != null) 
 | 
            map.put(paramADAS.key, paramADAS); 
 | 
        if (paramBSD != null) 
 | 
            map.put(paramBSD.key, paramBSD); 
 | 
        if (paramChannels != null) 
 | 
            map.put(paramChannels.key, paramChannels); 
 | 
        if (paramDSM != null) 
 | 
            map.put(paramDSM.key, paramDSM); 
 | 
        if (paramImageIdentifyAlarm != null) 
 | 
            map.put(paramImageIdentifyAlarm.key, paramImageIdentifyAlarm); 
 | 
        if (paramSleepWake != null) 
 | 
            map.put(paramSleepWake.key, paramSleepWake); 
 | 
        if (paramTPMS != null) 
 | 
            map.put(paramTPMS.key, paramTPMS); 
 | 
        if (paramVideo != null) 
 | 
            map.put(paramVideo.key, paramVideo); 
 | 
        if (paramVideoSingle != null) 
 | 
            map.put(paramVideoSingle.key, paramVideoSingle); 
 | 
        if (paramVideoSpecialAlarm != null) 
 | 
            map.put(paramVideoSpecialAlarm.key, paramVideoSpecialAlarm); 
 | 
  
 | 
        this.total = map.size(); 
 | 
        this.parameters = map; 
 | 
        return this; 
 | 
    } 
 | 
} 
 |