Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

This commit is contained in:
zyx.net
2023-03-26 12:06:06 +08:00
11 changed files with 317 additions and 238 deletions
@@ -72,21 +72,25 @@ public class OtaBaCxAqcs implements Serializable {
/**保护机制*/ /**保护机制*/
@Excel(name = "保护机制", width = 15) @Excel(name = "保护机制", width = 15)
@ApiModelProperty(value = "保护机制") @ApiModelProperty(value = "保护机制")
@Dict(dicCode = "protection_mechanism")
private java.lang.String bhjz; private java.lang.String bhjz;
/**防失效机制*/ /**防失效机制*/
@Excel(name = "防失效机制", width = 15) @Excel(name = "防失效机制", width = 15)
@ApiModelProperty(value = "防失效机制") @ApiModelProperty(value = "防失效机制")
@Dict(dicCode = "fail_safe_mechanism")
private java.lang.String fsxjz; private java.lang.String fsxjz;
/**升级失败措施*/ /**升级失败措施*/
@Excel(name = "升级失败措施", width = 15) @Excel(name = "升级失败措施", width = 15)
@ApiModelProperty(value = "升级失败措施") @ApiModelProperty(value = "升级失败措施")
@Dict(dicCode = "upgrade_failure")
private java.lang.String sjsbcs; private java.lang.String sjsbcs;
/**信息安全机制*/ /**信息安全机制*/
@Excel(name = "信息安全机制", width = 15) @Excel(name = "信息安全机制", width = 15)
@ApiModelProperty(value = "信息安全机制") @ApiModelProperty(value = "信息安全机制")
@Dict(dicCode = "Information_security_mechanism")
private java.lang.String xxaqjz; private java.lang.String xxaqjz;
/**证明材料*/ /**证明材料*/
@@ -119,6 +119,7 @@ public class OtaBaCxJbxx implements Serializable {
/**通信终端*/ /**通信终端*/
@Excel(name = "通信终端", width = 15) @Excel(name = "通信终端", width = 15)
@ApiModelProperty(value = "通信终端") @ApiModelProperty(value = "通信终端")
@Dict(dicCode = "communication_terminal")
private java.lang.String txzd; private java.lang.String txzd;
/**车端OTA升级管理系统*/ /**车端OTA升级管理系统*/
@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
@@ -84,6 +85,7 @@ public class OtaBaCxKsjjsmccs implements Serializable {
/**驾驶自动化级别*/ /**驾驶自动化级别*/
@Excel(name = "驾驶自动化级别", width = 15) @Excel(name = "驾驶自动化级别", width = 15)
@ApiModelProperty(value = "驾驶自动化级别") @ApiModelProperty(value = "驾驶自动化级别")
@Dict(dicCode = "driving_automation_level")
private java.lang.String jszdhjb; private java.lang.String jszdhjb;
/**升级可能变更的《公告》技术参数*/ /**升级可能变更的《公告》技术参数*/
@@ -141,4 +143,7 @@ public class OtaBaCxKsjjsmccs implements Serializable {
@ApiModelProperty(value = "附件") @ApiModelProperty(value = "附件")
private java.lang.String fj; private java.lang.String fj;
@TableField(exist = false)
private java.lang.String dictCode = "driving_automation_level";
} }
@@ -3,202 +3,214 @@ package com.jero.modules.ota.enums;
public enum OtaTitleEnum { public enum OtaTitleEnum {
CPDJBH("cpdjbh", "产品登记编号"), CPDJBH("cpdjbh", "产品登记编号", "0"),
GGPC("ggpc", "公告批次"), GGPC("ggpc", "公告批次", "0"),
CPSB("cpsb", "产品商标"), CPSB("cpsb", "产品商标", "0"),
CPMC("cpmc", "产品名称"), CPMC("cpmc", "产品名称", "0"),
CPXH("cpxh", "产品型号"), CPXH("cpxh", "产品型号", "0"),
BAZT("bazt", "备案状态"), BAZT("bazt", "备案状态", "1"),
BATJSJ("batjsj", "备案提交时间"), BATJSJ("batjsj", "备案提交时间", "0"),
CJSJ("cjsj", "创建时间"), CJSJ("cjsj", "创建时间", "0"),
BZ("bz", "备注"), BZ("bz", "备注", "0"),
CXMB("cxmb", "车型模板"),
QYMC("qymc", "企业名称"), CXMB("cxmb", "车型模板", "0"),
DJBH("djbh", "产品登记编号"), QYMC("qymc", "企业名称", "0"),
CPLB("cplb", "产品类别"), DJBH("djbh", "产品登记编号", "0"),
DLLX1("dllx1", "车辆动力类型"), CPLB("cplb", "产品类别", "0"),
DLLX2("dllx2", "车辆动力类型"), DLLX1("dllx1", "车辆动力类型", "0"),
TXZD("txzd", "通信终端"), DLLX2("dllx2", "车辆动力类型", "0"),
CDOTASJ("cdotasj", "车端OTA升级管理系统"), TXZD("txzd", "通信终端", "1"),
BHSJB("bhsjb", "保护升级包"), CDOTASJ("cdotasj", "车端OTA升级管理系统", "0"),
BHCLBB("bhclbb", "保护车辆版本"),
CLGXNL("clgxnl", "车辆更新能力"), BHSJB("bhsjb", "保护升级包", "2"),
CLSJTJ("clsjtj", "车辆升级条件"), BHCLBB("bhclbb", "保护车辆版本", "2"),
CLSJDL("clsjdl", "车辆升级所需电量"), CLGXNL("clgxnl", "车辆更新能力", "2"),
SJBHAQ("sjbhaq", "升级保护车辆安全"), CLSJTJ("clsjtj", "车辆升级条件", "2"),
SJANTJ("sjantj", "升级所满足的安全条件"), CLSJDL("clsjdl", "车辆升级所需电量", "2"),
SJSBAQ("sjsbaq", "升级失败安全状态"), SJBHAQ("sjbhaq", "升级保护车辆安全", "2"),
SJGG("sjgg", "升级公告"), SJANTJ("sjantj", "升级所满足的安全条件", "2"),
SJZT("sjzt", "升级结果状态"), SJSBAQ("sjsbaq", "升级失败安全状态", "2"),
ZMCL("zmcl", "证明材料"), SJGG("sjgg", "升级公告", "2"),
BHJZ("bhjz", "保护机制"), SJZT("sjzt", "升级结果状态", "2"),
FSXJZ("fsxjz", "防失效机制"), ZMCL("zmcl", "证明材料", "0"),
SJSBCS("sjsbcs", "升级失败措施"),
XXAQJZ("xxaqjz", "信息安全机制"), BHJZ("bhjz", "保护机制", "1"),
XTLB("xtlb", "系统类别"), FSXJZ("fsxjz", "防失效机制", "1"),
SFKSJ("sfksj", "是否可升级"), SJSBCS("sjsbcs", "升级失败措施", "1"),
SJBGCS("sjbgcs", "升级变更技术参数"), XXAQJZ("xxaqjz", "信息安全机制", "1"),
TPT("tpt", "系统电子控制器架构拓扑图"),
KZQMC("kzqmc", "电子控制器名称"), XTLB("xtlb", "系统类别", "0"),
AQWZXDJ("aqwzxdj", "安全完整性等级"), SFKSJ("sfksj", "是否可升级", "2"),
KZQSCQY("kzqscqy", "电子控制器生产企业"), SJBGCS("sjbgcs", "升级变更技术参数", "0"),
KZQXH("kzqxh", "电子控制器型号"), TPT("tpt", "系统电子控制器架构拓扑图", "0"),
YJBBXX("yjbbxx", "硬件版本信息"), KZQMC("kzqmc", "电子控制器名称", "0"),
CSRJBBH("csrjbbh", "初始软件版本号"), AQWZXDJ("aqwzxdj", "安全完整性等级", "0"),
CSRJBWZSJ("csrjbwzsj", "初始软件包完整数据"), KZQSCQY("kzqscqy", "电子控制器生产企业", "0"),
SJSFYX("sjsfyx", "升级是否影响整车安全、节能、环保、防盗等"), KZQXH("kzqxh", "电子控制器型号", "0"),
CZXTLX("czxtlx", "操作系统类型"), YJBBXX("yjbbxx", "硬件版本信息", "0"),
CZXTSCQY("czxtscqy", "操作系统生产企业"), CSRJBBH("csrjbbh", "初始软件版本号", "0"),
CZXTBBH("czxtbbh", "操作系统版本号"), CSRJBWZSJ("csrjbwzsj", "初始软件包完整数据", "0"),
GNMC("gnmc", "功能名称"), SJSFYX("sjsfyx", "升级是否影响整车安全、节能、环保、防盗等", "0"),
PZQK("pzqk", "配置情况"), CZXTLX("czxtlx", "操作系统类型", "0"),
JSZDHJB("jszdhjb", "驾驶自动化级别"), CZXTSCQY("czxtscqy", "操作系统生产企业", "0"),
SJGGCS("sjggcs", "升级可能变更的《公告》技术参数"), CZXTBBH("czxtbbh", "操作系统版本号", "0"),
GNMS("gnms", "功能描述"),
SYTJ("sytj", "适用条件"), GNMC("gnmc", "功能名称", "0"),
RJKFQY("rjkfqy", "软件开发企业"), PZQK("pzqk", "配置情况", "2"),
CSYZSJ("csyzsj", "初始软件包的完整性验证数据"), JSZDHJB("jszdhjb", "驾驶自动化级别", "1"),
FJ("fj", "附件"), SJGGCS("sjggcs", "升级可能变更的《公告》技术参数", "0"),
WLAQYQ_PZ("wlaqyqPz", "网络安全要求配置"), GNMS("gnms", "功能描述", "0"),
WLAQYQ_SL("wlaqyqSl", "网络安全要求数量"), SYTJ("sytj", "适用条件", "0"),
WLAQYQ_BZWZ("wlaqyqBzwz", "网络安全要求布置位置"), RJKFQY("rjkfqy", "软件开发企业", "0"),
WLAQYQ_GGXH("wlaqyqGgxh", "网络安全要求规格型号"), CSYZSJ("csyzsj", "初始软件包的完整性验证数据", "0"),
WLAQYQ_SCQY("wlaqyqScqy", "网络安全要求生产企业"), FJ("fj", "附件", "0"),
HMBLD_PZ("hmbldPz", "毫米波雷达配置"),
HMBLD_SL("hmbldSl", "毫米波雷达数量"), WLAQYQ_PZ("wlaqyqPz", "网络安全要求配置", "2"),
HMBLD_BZWZ("hmbldBzwz", "毫米波雷达布置位置"), WLAQYQ_SL("wlaqyqSl", "网络安全要求数量", "0"),
HMBLD_GGXH("hmbldGgxh", "毫米波雷达规格型号"), WLAQYQ_BZWZ("wlaqyqBzwz", "网络安全要求布置位置", "0"),
HMBLD_SCQY("hmbldScqy", "毫米波雷达生产企业"), WLAQYQ_GGXH("wlaqyqGgxh", "网络安全要求规格型号", "0"),
CSBLD_PZ("csbldPz", "超声波雷达配置"), WLAQYQ_SCQY("wlaqyqScqy", "网络安全要求生产企业", "0"),
CSBLD_SL("csbldSl", "超声波雷达数量"), HMBLD_PZ("hmbldPz", "毫米波雷达配置", "2"),
CSBLD_BZWZ("csbldBzwz", "超声波雷达布置位置"), HMBLD_SL("hmbldSl", "毫米波雷达数量", "0"),
CSBLD_GGXH("csbldGgxh", "超声波雷达规格型号"), HMBLD_BZWZ("hmbldBzwz", "毫米波雷达布置位置", "0"),
CSBLD_SCQY("csbldScqy", "超声波雷达生产企业"), HMBLD_GGXH("hmbldGgxh", "毫米波雷达规格型号", "0"),
SXTHS_PZ("sxthsPz", "摄像头倒车影像/(环视)配置"), HMBLD_SCQY("hmbldScqy", "毫米波雷达生产企业", "0"),
SXTHS_SL("sxthsSl", "摄像头倒车影像/(环视)数量"), CSBLD_PZ("csbldPz", "超声波雷达配置", "2"),
SXTHS_BZWZ("sxthsBzwz", "摄像头倒车影像/(环视)布置位置"), CSBLD_SL("csbldSl", "超声波雷达数量", "0"),
SXTHS_GGXH("sxthsGgxh", "摄像头倒车影像/(环视)规格型号"), CSBLD_BZWZ("csbldBzwz", "超声波雷达布置位置", "0"),
SXTHS_SCQY("sxthsScqy", "摄像头倒车影像/(环视)生产企业"), CSBLD_GGXH("csbldGgxh", "超声波雷达规格型号", "0"),
SXTDSD_PZ("sxtdsdPz", "摄像头单双多目配置"), CSBLD_SCQY("csbldScqy", "超声波雷达生产企业", "0"),
SXTDSD_SL("sxtdsdSl", "摄像头单双多目数量"), SXTHS_PZ("sxthsPz", "摄像头倒车影像/(环视)配置", "2"),
SXTDSD_BZWZ("sxtdsdBzwz", "摄像头单双多目布置位置"), SXTHS_SL("sxthsSl", "摄像头倒车影像/(环视)数量", "0"),
SXTDSD_GGXH("sxtdsdGgxh", "摄像头单双多目规格型号"), SXTHS_BZWZ("sxthsBzwz", "摄像头倒车影像/(环视)布置位置", "0"),
SXTDSD_SCQY("sxtdsdScqy", "摄像头单双多目生产企业"), SXTHS_GGXH("sxthsGgxh", "摄像头倒车影像/(环视)规格型号", "0"),
JSYJK_PZ("jsyjkPz", "驾驶员监控摄像头配置"), SXTHS_SCQY("sxthsScqy", "摄像头倒车影像/(环视)生产企业", "0"),
JSYJK_SL("jsyjkSl", "驾驶员监控摄像头数量"), SXTDSD_PZ("sxtdsdPz", "摄像头单双多目配置", "2"),
JSYJK_BZWZ("jsyjkBzwz", "驾驶员监控摄像头布置位置"), SXTDSD_SL("sxtdsdSl", "摄像头单双多目数量", "0"),
JSYJK_GGXH("jsyjkGgxh", "驾驶员监控摄像头规格型号"), SXTDSD_BZWZ("sxtdsdBzwz", "摄像头单双多目布置位置", "0"),
JSYJK_SCQY("jsyjkScqy", "驾驶员监控摄像头生产企业"), SXTDSD_GGXH("sxtdsdGgxh", "摄像头单双多目规格型号", "0"),
JSYHW_PZ("jsyhwPz", "驾驶员监控红外传感器配置"), SXTDSD_SCQY("sxtdsdScqy", "摄像头单双多目生产企业", "0"),
JSYHW_SL("jsyhwSl", "驾驶员监控红外传感器数量"), JSYJK_PZ("jsyjkPz", "驾驶员监控摄像头配置", "2"),
JSYHW_BZWZ("jsyhwBzwz", "驾驶员监控红外传感器布置位置"), JSYJK_SL("jsyjkSl", "驾驶员监控摄像头数量", "0"),
JSYHW_GGXH("jsyhwGgxh", "驾驶员监控红外传感器规格型号"), JSYJK_BZWZ("jsyjkBzwz", "驾驶员监控摄像头布置位置", "0"),
JSYHW_SCQY("jsyhwScqy", "驾驶员监控红外传感器生产企业"), JSYJK_GGXH("jsyjkGgxh", "驾驶员监控摄像头规格型号", "0"),
CZWXDW_PZ("czwxdwPz", "车载卫星定位设备配置"), JSYJK_SCQY("jsyjkScqy", "驾驶员监控摄像头生产企业", "0"),
CZWXDW_GGXH("czwxdwGgxh", "车载卫星定位设备规格型号"), JSYHW_PZ("jsyhwPz", "驾驶员监控红外传感器配置", "2"),
CZWXDW_SCQY("czwxdwScqy", "车载卫星定位设备生产企业"), JSYHW_SL("jsyhwSl", "驾驶员监控红外传感器数量", "0"),
GXDH_PZ("gxdhPz", "惯性导航系统配置"), JSYHW_BZWZ("jsyhwBzwz", "驾驶员监控红外传感器布置位置", "0"),
GXDH_GGXH("gxdhGgxh", "惯性导航系统规格型号"), JSYHW_GGXH("jsyhwGgxh", "驾驶员监控红外传感器规格型号", "0"),
GXDH_SCQY("gxdhScqy", "惯性导航系统生产企业"), JSYHW_SCQY("jsyhwScqy", "驾驶员监控红外传感器生产企业", "0"),
LSJ_PZ("lsjPz", "轮速计配置"), CZWXDW_PZ("czwxdwPz", "车载卫星定位设备配置", "2"),
LSJ_GGXH("lsjGgxh", "轮速计规格型号"), CZWXDW_GGXH("czwxdwGgxh", "车载卫星定位设备规格型号", "0"),
LSJ_SCQY("lsjScqy", "轮速计生产企业"), CZWXDW_SCQY("czwxdwScqy", "车载卫星定位设备生产企业", "0"),
GJDDT_PZ("gjddtPz", "高精度地图配置"), GXDH_PZ("gxdhPz", "惯性导航系统配置", "2"),
GJDDT_GGXH("gjddtGgxh", "高精度地图规格型号"), GXDH_GGXH("gxdhGgxh", "惯性导航系统规格型号", "0"),
GJDDT_SCQY("gjddtScqy", "高精度地图生产企业"), GXDH_SCQY("gxdhScqy", "惯性导航系统生产企业", "0"),
DZWL_PZ("dzwlPz", "电子围栏配置"), LSJ_PZ("lsjPz", "轮速计配置", "2"),
DZWL_DXXGCS("dzwlDxxgcs", "电子围栏"), LSJ_GGXH("lsjGgxh", "轮速计规格型号", "0"),
CZTX_PZ("cztxPz", "车载通信系统配置"), LSJ_SCQY("lsjScqy", "轮速计生产企业", "0"),
CZTX_XTMC("cztx_xtmc", "车载通信系统系统名称"), GJDDT_PZ("gjddtPz", "高精度地图配置", "2"),
CZTX_GGXH("cztxGgxh", "车载通信系统规格型号"), GJDDT_GGXH("gjddtGgxh", "高精度地图规格型号", "0"),
CZTX_SCQY("cztxScqy", "车载通信系统生产企业"), GJDDT_SCQY("gjddtScqy", "高精度地图生产企业", "0"),
CZTX_BBH("cztxBbh", "车载通信系统版本号"), DZWL_PZ("dzwlPz", "电子围栏配置", "2"),
CZTX_KFQY("cztx_kfqy", "车载通信系统软件开发企业"), DZWL_DXXGCS("dzwlDxxgcs", "电子围栏", "0"),
JSFZCZJ_PZ("jsfzczjPz", "驾驶辅助功能操纵件配置"), CZTX_PZ("cztxPz", "车载通信系统配置", "2"),
JSFZCZJ_MC("jsfzczjMc", "驾驶辅助功能操纵件名称"), CZTX_XTMC("cztx_xtmc", "车载通信系统系统名称", "0"),
JSFZCZJ_YJXH("jsfzczjYjxh", "驾驶辅助功能操纵件硬件规格型号"), CZTX_GGXH("cztxGgxh", "车载通信系统规格型号", "0"),
JSFZCZJ_SCQY("jsfzczjScqy", "驾驶辅助功能操纵件生产企业"), CZTX_SCQY("cztxScqy", "车载通信系统生产企业", "0"),
JSFZZSQ_PZ("jsfzzsqPz", "驾驶辅助功能指示器配置"), CZTX_BBH("cztxBbh", "车载通信系统版本号", "0"),
JSFZZSQ_MC("jsfzzsqMc", "驾驶辅助功能指示器名称"), CZTX_KFQY("cztx_kfqy", "车载通信系统软件开发企业", "0"),
JSFZZSQ_YJXH("jsfzzsqYjxh", "驾驶辅助功能指示器硬件规格型号"), JSFZCZJ_PZ("jsfzczjPz", "驾驶辅助功能操纵件配置", "2"),
JSFZZSQ_SCQY("jsfzzsqScqy", "驾驶辅助功能指示器生产企业"), JSFZCZJ_MC("jsfzczjMc", "驾驶辅助功能操纵件名称", "0"),
FXPTSTS_PZ("fxptstsPz", "方向盘脱手提示器配置"), JSFZCZJ_YJXH("jsfzczjYjxh", "驾驶辅助功能操纵件硬件规格型号", "0"),
FXPTSTS_MC("fxptstsMc", "方向盘脱手提示器名称"), JSFZCZJ_SCQY("jsfzczjScqy", "驾驶辅助功能操纵件生产企业", "0"),
FXPTSTS_YJXH("fxptstsYjxh", "方向盘脱手提示器硬件规格型号"), JSFZZSQ_PZ("jsfzzsqPz", "驾驶辅助功能指示器配置", "2"),
FXPTSTS_SCQY("fxptstsScqy", "方向盘脱手提示器生产企业"), JSFZZSQ_MC("jsfzzsqMc", "驾驶辅助功能指示器名称", "0"),
JSYZYLTS_PZ("jsyzyltsPz", "驾驶员注意力提醒指示器配置"), JSFZZSQ_YJXH("jsfzzsqYjxh", "驾驶辅助功能指示器硬件规格型号", "0"),
JSYZYLTS_MC("jsyzyltsMc", "驾驶员注意力提醒指示器名称"), JSFZZSQ_SCQY("jsfzzsqScqy", "驾驶辅助功能指示器生产企业", "0"),
JSYZYLTS_YJXH("jsyzyltsYjxh", "驾驶员注意力提醒指示器硬件规格型号"), FXPTSTS_PZ("fxptstsPz", "方向盘脱手提示器配置", "2"),
JSYZYLTS_SCQY("jsyzyltsScqy", "驾驶员注意力提醒指示器生产企业"), FXPTSTS_MC("fxptstsMc", "方向盘脱手提示器名称", "0"),
DSSAD_PZ("dssadPz", "自动驾驶数据记录系统配置"), FXPTSTS_YJXH("fxptstsYjxh", "方向盘脱手提示器硬件规格型号", "0"),
DSSAD_GGXH("dssadGgxh", "自动驾驶数据记录系统规格型号"), FXPTSTS_SCQY("fxptstsScqy", "方向盘脱手提示器生产企业", "0"),
DSSAD_SCQY("dssadScqy", "自动驾驶数据记录系统生产企业"), JSYZYLTS_PZ("jsyzyltsPz", "驾驶员注意力提醒指示器配置", "2"),
EDR_PZ("edrPz", "事件数据记录系统配置"), JSYZYLTS_MC("jsyzyltsMc", "驾驶员注意力提醒指示器名称", "0"),
EDR_GGXH("edrGgxh", "事件数据记录系统规格型号"), JSYZYLTS_YJXH("jsyzyltsYjxh", "驾驶员注意力提醒指示器硬件规格型号", "0"),
EDR_SCQY("edrScqy", "事件数据记录系统生产企业"), JSYZYLTS_SCQY("jsyzyltsScqy", "驾驶员注意力提醒指示器生产企业", "0"),
BJMC("bjmc", "部件名称"), DSSAD_PZ("dssadPz", "自动驾驶数据记录系统配置", "2"),
YJGGXH("yjggxh", "硬件规格型号"), DSSAD_GGXH("dssadGgxh", "自动驾驶数据记录系统规格型号", "0"),
YJSCQY("yjscqy", "硬件生产企业"), DSSAD_SCQY("dssadScqy", "自动驾驶数据记录系统生产企业", "0"),
RJBB("rjbb", "软件版本"), EDR_PZ("edrPz", "事件数据记录系统配置", "2"),
BZWZ("bzwz", "布置位置"), EDR_GGXH("edrGgxh", "事件数据记录系统规格型号", "0"),
SJBBHCS("sjbbhcs", "升级包保护措施"), EDR_SCQY("edrScqy", "事件数据记录系统生产企业", "0"),
BABH("babh", "备案编号"),
BAPC("bapc", "备案批次"), BJMC("bjmc", "部件名称", "0"),
ZSL("zsl", "总数量"), YJGGXH("yjggxh", "硬件规格型号", "0"),
SCRQKS("scrqks", "生产日期开始"), YJSCQY("yjscqy", "硬件生产企业", "0"),
SCRQJS("scrqjs", "生产日期结束"), RJBB("rjbb", "软件版本", "0"),
VIN_LIST("vinList", "VIN码清单"), BZWZ("bzwz", "布置位置", "0"),
SJMD("sjmd", "升级目的"),
SFBGCS("sfbgcs", "是否变更对应车型的《公告》技术参数"), SJBBHCS("sjbbhcs", "升级包保护措施", "0"),
JSXNBH("jsxnbh", "是否涉及性能变化"), BABH("babh", "备案编号", "0"),
FHGD("fhgd", "是否符合国家法律、行政法规、规章规定,以及道路机动车辆公告管理相关国家技术标准及安全技术条件等"), BAPC("bapc", "备案批次", "0"),
ZDJSXG("zdjsxg", "是否涉及汽车自动驾驶功能相关升级"), ZSL("zsl", "总数量", "0"),
JRXXG("jrxxg", "兼容性评估相关"), SCRQKS("scrqks", "生产日期开始", "0"),
ZXSJ("zxsj", "如何执行升级"), SCRQJS("scrqjs", "生产日期结束", "0"),
AQJZ("aqjz", "升级失败或中断后,车辆采取的安全机制"), VIN_LIST("vinList", "VIN码清单", "0"),
SFYXAQ("sfyxaq", "升级活动是否影响车辆安全"), SJMD("sjmd", "升级目的", "0"),
YHQR("yhqr", "升级活动是否提供用户确认选项"), SFBGCS("sfbgcs", "是否变更对应车型的《公告》技术参数", "0"),
SJBCS("sjbcs", "升级包测试"), JSXNBH("jsxnbh", "是否涉及性能变化", "0"),
AQKKX("aqkkx", "是杏已验证确认在线升级活动的安全性和可靠性"), FHGD("fhgd", "是否符合国家法律、行政法规、规章规定,以及道路机动车辆公告管理相关国家技术标准及安全技术条件等", "0"),
BGFJ("bgfj", "提供变更或扩展后的《公告》批次及证明材料"), ZDJSXG("zdjsxg", "是否涉及汽车自动驾驶功能相关升级", "0"),
CLFJ("clfj", "提供证明材料"), JRXXG("jrxxg", "兼容性评估相关", "0"),
XTMC("xtmc", "系统名称"), ZXSJ("zxsj", "如何执行升级", "0"),
SJQBGCS("sjqbgcs", "升级前已变更《公告》参数的对应调整"), AQJZ("aqjz", "升级失败或中断后,车辆采取的安全机制", "0"),
SJHBGCS("sjhbgcs", "升级后已变更《公告》参数的对应调整"), SFYXAQ("sfyxaq", "升级活动是否影响车辆安全", "0"),
SJKZQMC("sjkzqmc", "升级的电子控制器名称"), YHQR("yhqr", "升级活动是否提供用户确认选项", "0"),
YJBB("yjbb", "适配的硬件版本"), SJBCS("sjbcs", "升级包测试", "0"),
SJQRJBB("sjqrjbb", "软件版本号升级前"), AQKKX("aqkkx", "是杏已验证确认在线升级活动的安全性和可靠性", "0"),
SJHRJBB("sjhrjbb", "软件版本号升级后"), BGFJ("bgfj", "提供变更或扩展后的《公告》批次及证明材料", "0"),
SJQCZXT("sjqczxt", "操作系统版本号升级前"), CLFJ("clfj", "提供证明材料", "0"),
SJHCZXT("sjhczxt", "操作系统版本号升级后"), XTMC("xtmc", "系统名称", "0"),
CSRJSJ("csrjsj", "初始软件包的完整性数据"), SJQBGCS("sjqbgcs", "升级前已变更《公告》参数的对应调整", "0"),
SJBYZSJ("sjbyzsj", "升级包完整性验证数据"), SJHBGCS("sjhbgcs", "升级后已变更《公告》参数的对应调整", "0"),
SJBDX("sjbdx", "升级包大小"), SJKZQMC("sjkzqmc", "升级的电子控制器名称", "0"),
SFCFSJ("sfcfsj", "是否差分升级"), YJBB("yjbb", "适配的硬件版本", "0"),
SJMDLX("sjmdlx", "升级目的类型"), SJQRJBB("sjqrjbb", "软件版本号升级前", "0"),
GNBGMS("gnbgms", "功能变更描述"), SJHRJBB("sjhrjbb", "软件版本号升级后", "0"),
SYTJBG("sytjbg", "适用条件变更"), SJQCZXT("sjqczxt", "操作系统版本号升级前", "0"),
SJSJKZQ("sjsjkzq", "升级涉及的电子控制器"), SJHCZXT("sjhczxt", "操作系统版本号升级后", "0"),
GXBH("gxbh", "由于软件升级活动而导致的车辆功能的任何变化"), CSRJSJ("csrjsj", "初始软件包的完整性数据", "0"),
SJSJ("sjsj", "升级执行预计时间(分钟)"), SJBYZSJ("sjbyzsj", "升级包完整性验证数据", "0"),
SJKY("sjky", "升级执行期问,车辆是否可用"), SJBDX("sjbdx", "升级包大小", "0"),
SJBKYGN("sjbkygn", "升级执行期间不可用的车辆功能"), SFCFSJ("sfcfsj", "是否差分升级", "0"),
ZDXX("zdxx", "帮助车辆用户安全执行升级的任何指导信息"), SJMDLX("sjmdlx", "升级目的类型", "0"),
SJSFCG("sjsfcg", "告知用户升级成功或失败"), GNBGMS("gnbgms", "功能变更描述", "0"),
GZBG("gzbg", "告知实施的变更"), SYTJBG("sytjbg", "适用条件变更", "0"),
GZSCNR("gzscnr", "告知了对用户手册的全部更新内容"), SJSJKZQ("sjsjkzq", "升级涉及的电子控制器", "0"),
GZYHFS("gzyhfs", "告知用户方式(可多选)"), GXBH("gxbh", "由于软件升级活动而导致的车辆功能的任何变化", "0"),
XGWJ("xgwj", "用户告知相关文件"), SJSJ("sjsj", "升级执行预计时间(分钟)", "0"),
RWMC("rwmc", "任务名称"), SJKY("sjky", "升级执行期问,车辆是否可用", "0"),
SJFBSJ("sjfbsj", "升级发布时间"), SJBKYGN("sjbkygn", "升级执行期间不可用的车辆功能", "0"),
SJJZSJ("sjjzsj", "升级计划截止时间"); ZDXX("zdxx", "帮助车辆用户安全执行升级的任何指导信息", "0"),
SJSFCG("sjsfcg", "告知用户升级成功或失败", "0"),
GZBG("gzbg", "告知实施的变更", "0"),
GZSCNR("gzscnr", "告知了对用户手册的全部更新内容", "0"),
GZYHFS("gzyhfs", "告知用户方式(可多选)", "0"),
XGWJ("xgwj", "用户告知相关文件", "0"),
RWMC("rwmc", "任务名称", "0"),
SJFBSJ("sjfbsj", "升级发布时间", "0"),
SJJZSJ("sjjzsj", "升级计划截止时间", "0");
String name; String name;
String value; String value;
OtaTitleEnum(String name, String value) { //0为不处理。1为数据字典2为处理是否 是1 否2
String type;
OtaTitleEnum(String name, String value, String type) {
this.name = name; this.name = name;
this.value = value; this.value = value;
this.type = type;
} }
public String getName() { public String getName() {
@@ -218,14 +230,20 @@ public enum OtaTitleEnum {
this.value = value; this.value = value;
} }
public static String getVal(String name){ public String getType() {
String res = ""; return type;
for (OtaTitleEnum e:values()) { }
if(e.getName().equals(name)){
res = e.getValue(); public void setType(String type) {
break; this.type = type;
}
public static OtaTitleEnum getOtaTitleEnum(String name) {
for (OtaTitleEnum e : values()) {
if (e.getName().equals(name)) {
return e;
} }
} }
return res; return null;
} }
} }
@@ -59,6 +59,9 @@ public class OtaBaCxAqcsServiceImpl extends ServiceImpl<OtaBaCxAqcsMapper, OtaBa
} }
saveOrUpdate(otaBaCxAqcs); saveOrUpdate(otaBaCxAqcs);
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
if (ObjectUtils.isEmpty(otaBaCxAqcsOld)) {
otaBaCxAqcsOld = new OtaBaCxAqcs();
}
List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxAqcsOld.getOtaId(), OtaModuleEnum.CX_AQCS, otaBaCxAqcsOld, otaBaCxAqcs); List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxAqcsOld.getOtaId(), OtaModuleEnum.CX_AQCS, otaBaCxAqcsOld, otaBaCxAqcs);
otaBaCxTxjlService.saveBatch(reList); otaBaCxTxjlService.saveBatch(reList);
} }
@@ -51,6 +51,9 @@ public class OtaBaCxJsfzbacsServiceImpl extends ServiceImpl<OtaBaCxJsfzbacsMappe
otaBaCxJsfzbacs.setUpdateTime(now); otaBaCxJsfzbacs.setUpdateTime(now);
saveOrUpdate(otaBaCxJsfzbacs); saveOrUpdate(otaBaCxJsfzbacs);
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
if(ObjectUtils.isEmpty(otaBaCxJsfzbacsOld)){
otaBaCxJsfzbacsOld = new OtaBaCxJsfzbacs();
}
List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaId, OtaModuleEnum.CX_JSFZXTJCBACS, otaBaCxJsfzbacsOld, otaBaCxJsfzbacs); List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaId, OtaModuleEnum.CX_JSFZXTJCBACS, otaBaCxJsfzbacsOld, otaBaCxJsfzbacs);
//处理控制器列表,先删除,后添加 //处理控制器列表,先删除,后添加
@@ -74,7 +74,7 @@ public class OtaBaCxKsjjsmccsServiceImpl extends ServiceImpl<OtaBaCxKsjjsmccsMap
otaBaCxJsfzbacs.setOtaId(otaId); otaBaCxJsfzbacs.setOtaId(otaId);
otaBaCxJsfzbacs.setCreateTime(now); otaBaCxJsfzbacs.setCreateTime(now);
otaBaCxJsfzbacs.setUpdateTime(now); otaBaCxJsfzbacs.setUpdateTime(now);
save(otaBaCxJsfzbacs); saveOrUpdate(otaBaCxJsfzbacs);
newList.add(otaBaCxJsfzbacs); newList.add(otaBaCxJsfzbacs);
} }
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
@@ -73,7 +73,7 @@ public class OtaBaCxKsjxtmccsServiceImpl extends ServiceImpl<OtaBaCxKsjxtmccsMap
otaBaCxKsjxtmccs.setOtaId(otaId); otaBaCxKsjxtmccs.setOtaId(otaId);
otaBaCxKsjxtmccs.setCreateTime(now); otaBaCxKsjxtmccs.setCreateTime(now);
otaBaCxKsjxtmccs.setUpdateTime(now); otaBaCxKsjxtmccs.setUpdateTime(now);
save(otaBaCxKsjxtmccs); saveOrUpdate(otaBaCxKsjxtmccs);
newList.add(otaBaCxKsjxtmccs); newList.add(otaBaCxKsjxtmccs);
} }
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
@@ -49,6 +49,9 @@ public class OtaBaCxQtServiceImpl extends ServiceImpl<OtaBaCxQtMapper, OtaBaCxQt
otaBaCxQt.setUpdateTime(now); otaBaCxQt.setUpdateTime(now);
saveOrUpdate(otaBaCxQt); saveOrUpdate(otaBaCxQt);
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
if(ObjectUtils.isEmpty(otaBaCxQtOld)){
otaBaCxQtOld = new OtaBaCxQt();
}
List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxQt.getOtaId(), OtaModuleEnum.CX_QT, otaBaCxQtOld, otaBaCxQt); List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxQt.getOtaId(), OtaModuleEnum.CX_QT, otaBaCxQtOld, otaBaCxQt);
otaBaCxTxjlService.saveBatch(reList); otaBaCxTxjlService.saveBatch(reList);
} }
@@ -34,6 +34,7 @@ public class OtaBaCxZxsjyqServiceImpl extends ServiceImpl<OtaBaCxZxsjyqMapper, O
@Autowired @Autowired
private IOtaBaCxTxjlService otaBaCxTxjlService; private IOtaBaCxTxjlService otaBaCxTxjlService;
/** /**
* 保存 * 保存
* *
@@ -42,7 +43,7 @@ public class OtaBaCxZxsjyqServiceImpl extends ServiceImpl<OtaBaCxZxsjyqMapper, O
*/ */
@Override @Override
public void add(OtaBaCxZxsjyq otaBaCxZxsjyq) { public void add(OtaBaCxZxsjyq otaBaCxZxsjyq) {
OtaBaCxZxsjyq otaBaCxZxsjyqOld = new OtaBaCxZxsjyq();; OtaBaCxZxsjyq otaBaCxZxsjyqOld = null;
Date now = new Date(); Date now = new Date();
if (otaBaCxZxsjyq.getOtaId() != null) { if (otaBaCxZxsjyq.getOtaId() != null) {
otaBaCxZxsjyqOld = getByOtaId(otaBaCxZxsjyq.getOtaId()); otaBaCxZxsjyqOld = getByOtaId(otaBaCxZxsjyq.getOtaId());
@@ -62,6 +63,9 @@ public class OtaBaCxZxsjyqServiceImpl extends ServiceImpl<OtaBaCxZxsjyqMapper, O
} }
saveOrUpdate(otaBaCxZxsjyq); saveOrUpdate(otaBaCxZxsjyq);
ComparisonUtil cu = new ComparisonUtil(); ComparisonUtil cu = new ComparisonUtil();
if (ObjectUtils.isEmpty(otaBaCxZxsjyqOld)) {
otaBaCxZxsjyqOld = new OtaBaCxZxsjyq();
}
List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxZxsjyq.getOtaId(), OtaModuleEnum.CX_ZXSJYQ, otaBaCxZxsjyqOld, otaBaCxZxsjyq); List<OtaBaCxTxjl> reList = cu.comparisonRecord(otaBaCxZxsjyq.getOtaId(), OtaModuleEnum.CX_ZXSJYQ, otaBaCxZxsjyqOld, otaBaCxZxsjyq);
otaBaCxTxjlService.saveBatch(reList); otaBaCxTxjlService.saveBatch(reList);
} }
@@ -27,28 +27,18 @@ public class ComparisonUtil<T> {
List<OtaBaCxTxjl> resList = new ArrayList<>(); List<OtaBaCxTxjl> resList = new ArrayList<>();
Field[] fields = newClazz.getClass().getDeclaredFields(); Field[] fields = newClazz.getClass().getDeclaredFields();
for (Field field : fields) { for (Field field : fields) {
try { String title = "";
String title = OtaTitleEnum.getVal(field.getName()); OtaTitleEnum ote = OtaTitleEnum.getOtaTitleEnum(field.getName());
if (ObjectUtils.isEmpty(title)) { if (null == ote) {
continue; continue;
} }
field.setAccessible(true); title = ote.getValue();
Object newVal = field.get(newClazz); field.setAccessible(true);
Object oldVal = field.get(oldClazz); String newStr = parseDictText(ote, field, newClazz);
String newStr = "空"; String oldStr = parseDictText(ote, field, oldClazz);
if (ObjectUtils.isNotEmpty(newVal)) { if (!newStr.equals(oldStr)) {
newStr = newVal.toString(); String content = "由" + title + "的" + oldStr + "改为" + newStr;
} resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content));
String oldStr = "空";
if (ObjectUtils.isNotEmpty(oldVal)) {
oldStr = oldVal.toString();
}
if (!newStr.equals(oldStr)) {
String content = "由" + title + "的" + oldStr + "改为" + newStr;
resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} }
} }
return resList; return resList;
@@ -60,16 +50,19 @@ public class ComparisonUtil<T> {
for (T newObj : newList) { for (T newObj : newList) {
if (ObjectUtils.isNotEmpty(newObj)) { if (ObjectUtils.isNotEmpty(newObj)) {
Field idField = newObj.getClass().getDeclaredField("id"); Field idField = newObj.getClass().getDeclaredField("id");
idField.setAccessible(true);
Object id = idField.get(newObj); Object id = idField.get(newObj);
if (ObjectUtils.isEmpty(id)) { if (ObjectUtils.isEmpty(id)) {
String content = "新增了一条" + newObj.getClass().getDeclaredField(tableTitle).get(newObj).toString(); String content = "新增了一条" + newObj.getClass().getDeclaredField(tableTitle).get(newObj).toString();
resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content)); resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content));
Field[] fields = newObj.getClass().getDeclaredFields(); Field[] fields = newObj.getClass().getDeclaredFields();
for (Field field : fields) { for (Field field : fields) {
String title = OtaTitleEnum.getVal(field.getName()); String title = "";
if (ObjectUtils.isEmpty(title)) { OtaTitleEnum ote = OtaTitleEnum.getOtaTitleEnum(field.getName());
if (null == ote) {
continue; continue;
} }
title = ote.getValue();
field.setAccessible(true); field.setAccessible(true);
Object newVal = field.get(newObj); Object newVal = field.get(newObj);
String newStr = "空"; String newStr = "空";
@@ -92,6 +85,7 @@ public class ComparisonUtil<T> {
for (T oldObj : oldList) { for (T oldObj : oldList) {
if (ObjectUtils.isNotEmpty(oldObj)) { if (ObjectUtils.isNotEmpty(oldObj)) {
Field idField = oldObj.getClass().getDeclaredField("id"); Field idField = oldObj.getClass().getDeclaredField("id");
idField.setAccessible(true);
String oldId = idField.get(oldObj).toString(); String oldId = idField.get(oldObj).toString();
for (T newObj : newList) { for (T newObj : newList) {
if (ObjectUtils.isNotEmpty(newObj)) { if (ObjectUtils.isNotEmpty(newObj)) {
@@ -101,7 +95,14 @@ public class ComparisonUtil<T> {
} }
} }
} }
String content = "删除了" + oldObj.getClass().getDeclaredField(tableTitle).get(oldObj).toString(); Field tableTitleField = oldObj.getClass().getDeclaredField(tableTitle);
tableTitleField.setAccessible(true);
Object tableTitleObj = tableTitleField.get(oldObj);
String tableTitleObjStr = "空";
if (ObjectUtils.isNotEmpty(tableTitleObj)) {
tableTitleObjStr = tableTitleObj.toString();
}
String content = "删除了" + tableTitleObjStr;
resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content)); resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content));
} }
} }
@@ -118,23 +119,25 @@ public class ComparisonUtil<T> {
Field[] fields = newClazz.getClass().getDeclaredFields(); Field[] fields = newClazz.getClass().getDeclaredFields();
for (Field field : fields) { for (Field field : fields) {
try { try {
String title = OtaTitleEnum.getVal(field.getName()); String title = "";
if (ObjectUtils.isEmpty(title)) { OtaTitleEnum ote = OtaTitleEnum.getOtaTitleEnum(field.getName());
if (null == ote) {
continue; continue;
} }
title = ote.getValue();
field.setAccessible(true); field.setAccessible(true);
Object newVal = field.get(newClazz); String newStr = parseDictText(ote, field, newClazz);
Object oldVal = field.get(oldClazz); String oldStr = parseDictText(ote, field, oldClazz);
String newStr = "空";
if (ObjectUtils.isNotEmpty(newVal)) {
newStr = newVal.toString();
}
String oldStr = "空";
if (ObjectUtils.isNotEmpty(oldVal)) {
oldStr = oldVal.toString();
}
if (!newStr.equals(oldStr)) { if (!newStr.equals(oldStr)) {
String content = newVal.getClass().getDeclaredField(tableTitle).get(newVal).toString() + "的" + title + "由" + oldStr + "改为" + newStr; //TODO null
Object newVal = field.get(newClazz);
Object newTitleVal = newVal.getClass().getDeclaredField(tableTitle).get(newVal);
String newTitleStr = "空";
if (ObjectUtils.isNotEmpty(newTitleVal)) {
newTitleStr = newTitleVal.toString();
}
String content = newTitleStr + "的" + title + "由" + oldStr + "改为" + newStr;
resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content)); resList.add(new OtaBaCxTxjl(otaId, otaModuleEnum.getName(), content));
} }
} catch (IllegalAccessException | NoSuchFieldException e) { } catch (IllegalAccessException | NoSuchFieldException e) {
@@ -143,4 +146,39 @@ public class ComparisonUtil<T> {
} }
return resList; return resList;
} }
private String parseDictText(OtaTitleEnum ote, Field field, T clazz) {
String res = "空";
try {
Object newVal = field.get(clazz);
if ("1".equals(ote.getType())) {
try {
Field fieldDict = clazz.getClass().getDeclaredField(field.getName() + "_dictText");
fieldDict.setAccessible(true);
Object newValDict = fieldDict.get(clazz);
if (ObjectUtils.isNotEmpty(newValDict)) {
res = newValDict.toString();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
} else if ("2".equals(ote.getType())) {
if (ObjectUtils.isNotEmpty(newVal)) {
if ("1".equals(newVal.toString())) {
res = "是";
} else if ("2".equals(newVal.toString())) {
res = "否";
}
}
} else {
if (ObjectUtils.isNotEmpty(newVal)) {
res = newVal.toString();
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return res;
}
} }