diff --git a/src/main/java/com/glxp/udidl/admin/config/RedisConfig.java b/src/main/java/com/glxp/udidl/admin/config/RedisConfig.java
index 87d0b80..648a477 100644
--- a/src/main/java/com/glxp/udidl/admin/config/RedisConfig.java
+++ b/src/main/java/com/glxp/udidl/admin/config/RedisConfig.java
@@ -3,15 +3,12 @@ package com.glxp.udidl.admin.config;
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.*;
 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
 
 /**
  * Redis配置类
@@ -20,24 +17,86 @@ import org.springframework.data.redis.serializer.RedisSerializer;
 public class RedisConfig {
 
     @Bean
-    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory cf) {
-        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
-        redisTemplate.setConnectionFactory(cf);
-        redisTemplate.setValueSerializer(RedisSerializer.json());
-        redisTemplate.setHashValueSerializer(RedisSerializer.string());
-        redisTemplate.setKeySerializer(RedisSerializer.string());
-        redisTemplate.setHashKeySerializer(RedisSerializer.string());
-        redisTemplate.afterPropertiesSet();
-        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
-        ObjectMapper objectMapper = new ObjectMapper()
-                .registerModule(new ParameterNamesModule())
-                .registerModule(new Jdk8Module())
-                .registerModule(new JavaTimeModule());
-        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        serializer.setObjectMapper(objectMapper);
-        redisTemplate.setValueSerializer(serializer);
-        return redisTemplate;
+    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory factory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<>();
+        // 配置连接工厂
+        template.setConnectionFactory(factory);
+
+        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
+        Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+
+        ObjectMapper om = new ObjectMapper();
+        // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jsonRedisSerializer.setObjectMapper(om);
+
+        // 值采用json序列化
+        template.setValueSerializer(jsonRedisSerializer);
+        //使用StringRedisSerializer来序列化和反序列化redis的key值
+        template.setKeySerializer(new StringRedisSerializer());
+
+        // 设置hash key 和value序列化模式
+        template.setHashKeySerializer(new StringRedisSerializer());
+        template.setHashValueSerializer(jsonRedisSerializer);
+        template.afterPropertiesSet();
+        return template;
+    }
+
+    /**
+     * 对hash类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForHash();
+    }
+
+    /**
+     * 对redis字符串类型数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForValue();
+    }
+
+    /**
+     * 对链表类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForList();
+    }
+
+    /**
+     * 对无序集合类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForSet();
+    }
+
+    /**
+     * 对有序集合类型的数据操作
+     *
+     * @param redisTemplate
+     * @return
+     */
+    @Bean
+    public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
+        return redisTemplate.opsForZSet();
     }
 
 }
diff --git a/src/main/java/com/glxp/udidl/admin/dao/udi/ProductInfoMapper.java b/src/main/java/com/glxp/udidl/admin/dao/udi/ProductInfoMapper.java
index dca1b1f..56ae1d5 100644
--- a/src/main/java/com/glxp/udidl/admin/dao/udi/ProductInfoMapper.java
+++ b/src/main/java/com/glxp/udidl/admin/dao/udi/ProductInfoMapper.java
@@ -56,4 +56,6 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfoEntity> {
     List<ProductDetailModel> selectByDeviceRecordKey(String key);
 
     boolean updateCplx(ProductInfoEntity productInfoEntity);
+
+    boolean updateProductInfoData(ProductInfoEntity productInfoEntity);
 }
diff --git a/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java b/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java
index 0192054..c8f7e0f 100644
--- a/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java
+++ b/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java
@@ -1,15 +1,16 @@
 package com.glxp.udidl.admin.entity.udi;
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import springfox.documentation.annotations.ApiIgnore;
 
 import java.util.Date;
 
 @Data
 @ApiModel(value = "产品信息实体")
+@TableName("productinfo")
 public class ProductInfoEntity {
 
     @ApiModelProperty(value = "主键ID")
diff --git a/src/main/java/com/glxp/udidl/admin/entity/udid/Device.java b/src/main/java/com/glxp/udidl/admin/entity/udid/Device.java
index 61a13f4..53cff97 100644
--- a/src/main/java/com/glxp/udidl/admin/entity/udid/Device.java
+++ b/src/main/java/com/glxp/udidl/admin/entity/udid/Device.java
@@ -10,7 +10,6 @@ import java.util.Date;
 @Data
 public class Device {
 
-
     @ApiModelProperty(value = "同一产品同一版本号唯一主键")
     private String uuid;
 
diff --git a/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceParseService.java b/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceParseService.java
index 36e5013..d402121 100644
--- a/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceParseService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceParseService.java
@@ -1,6 +1,9 @@
 package com.glxp.udidl.admin.service.dataUpdate;
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.glxp.udidl.admin.dao.udi.ProductInfoMapper;
+import com.glxp.udidl.admin.dao.udid.DeviceMapper;
 import com.glxp.udidl.admin.entity.udi.CountProductEntity;
 import com.glxp.udidl.admin.entity.udi.ProductClassify;
 import com.glxp.udidl.admin.entity.udi.ProductInfoEntity;
@@ -30,11 +33,15 @@ public class DeviceParseService {
     @Resource
     private DeviceService deviceService;
     @Resource
-    ProductClassifyService productClassifyService;
+    private ProductClassifyService productClassifyService;
     @Resource
-    ProductInfoService productInfoService;
+    private ProductInfoService productInfoService;
     @Resource
-    UdiCompanyService udiCompanyService;
+    private UdiCompanyService udiCompanyService;
+    @Resource
+    private DeviceMapper deviceMapper;
+    @Resource
+    private ProductInfoMapper productInfoMapper;
 
     /**
      * 存储设备信息
@@ -50,11 +57,13 @@ public class DeviceParseService {
             List<DataSetResult.PackingInfo> packingInfoAll = ds.getPackingInfo();
 
             for (DataSetResult.DeviceInfo item : ds.getDeviceInfo()) {
-                //1:判断数据是否存在
-                if (StrUtil.isNotEmpty(deviceService.selectDiIsSame(item.getZxxsdycpbs(), item.getVersionNumber() + "")))
-                    continue;
+                //1:不判断数据是否存在,直接以当前拉取到的最新数据进行更新
+                String uuid = deviceService.selectDiIsSame(item.getZxxsdycpbs(), item.getVersionNumber() + "");
+                //此版本数据存在,使用当前数据库存在的数据的ID进行更新
                 Device device = responseToDevice(item);
-                String uuid = getUUId();
+                if (StrUtil.isBlank(uuid)) {
+                    uuid = getUUId();
+                }
                 Boolean isHistory = false;
                 if (item.getDeviceHistoryKey() != null && !item.getDeviceHistoryKey().isEmpty()) {
                     isHistory = true;
@@ -148,7 +157,6 @@ public class DeviceParseService {
                         }
                         deviceService.updateDevicepackage(devicepackageList);
                     }
-
                 }
 
                 //7存储productInfo信息
@@ -280,7 +288,12 @@ public class DeviceParseService {
     public void transUdi(String key) {
         DeviceEntity deviceEntity = deviceService.searchById(key);
         String di = deviceEntity.getZxxsdycpbs();
+        //查询产品表的数据ID
+        ProductInfoEntity oldData = productInfoMapper.selectOne(new QueryWrapper<ProductInfoEntity>().select("id").eq("uuid", key).eq("nameCode", deviceEntity.getZxxsdycpbs()));
         ProductInfoEntity productInfoEntity = new ProductInfoEntity();
+        if (null != oldData) {
+            productInfoEntity.setId(oldData.getId());
+        }
         org.springframework.beans.BeanUtils.copyProperties(deviceEntity, productInfoEntity);
         productInfoEntity.setUuid(key);
         productInfoEntity.setDeviceRecordKey(deviceEntity.getDevicerecordkey());
@@ -355,7 +368,7 @@ public class DeviceParseService {
             productInfoEntity.setNameCode(deviceEntity.getSydycpbs());
             productInfoEntity.setSjcpbm(deviceEntity.getZxxsdycpbs());
             productInfoEntity.setUpdateTime(new Date());
-            productInfoService.insertProductInfo(productInfoEntity);
+            productInfoService.updateProductInfoData(productInfoEntity);
             productInfoEntity.setBhxjcpbm(deviceEntity.getSydycpbs());
             productInfoEntity.setBhxjsl(1);
             productInfoEntity.setPackLevel(2 + "");
@@ -373,7 +386,7 @@ public class DeviceParseService {
             productInfoEntity.setSjcpbm(deviceEntity.getZxxsdycpbs());
             productInfoEntity.setNameCode(deviceEntity.getBtcpbs());
             productInfoEntity.setUpdateTime(new Date());
-            productInfoService.insertProductInfo(productInfoEntity);
+            productInfoService.updateProductInfoData(productInfoEntity);
             productInfoEntity.setBhxjcpbm(deviceEntity.getBtcpbs());
             productInfoEntity.setBhxjsl(1);
             productInfoEntity.setPackLevel(2 + "");
@@ -391,7 +404,7 @@ public class DeviceParseService {
         List<Devicepackage> devicepackages = deviceEntity.getDevicepackages();
         productInfoEntity.setSjcpbm(getSjcpbm(devicepackages, productInfoEntity.getNameCode()));
         productInfoEntity.setUpdateTime(new Date());
-        productInfoService.insertProductInfo(productInfoEntity);
+        productInfoService.updateProductInfoData(productInfoEntity);
 
         List<CountProductEntity> countProductEntities = new ArrayList<>();
         int curLevel = Integer.parseInt(productInfoEntity.getPackLevel()) + 1;
@@ -436,7 +449,7 @@ public class DeviceParseService {
                 productInfoEntity.setSjcpbm(getSjcpbm(devicepackages, productInfoEntity.getNameCode()));
                 productInfoEntity.setDiType(4);
                 productInfoEntity.setUpdateTime(new Date());
-                productInfoService.insertProductInfo(productInfoEntity);
+                productInfoService.updateProductInfoData(productInfoEntity);
             }
         }
 
@@ -461,7 +474,7 @@ public class DeviceParseService {
                 for (ProductInfoEntity change : temps) {
                     change.setIsNewest(false);
                     change.setUpdateTime(new Date());
-                    productInfoService.updateProductInfo(change);
+                    productInfoService.updateProductInfoData(change);
                 }
             }
 
diff --git a/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceUpdateService.java b/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceUpdateService.java
index 4d05951..e0f81da 100644
--- a/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceUpdateService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/dataUpdate/DeviceUpdateService.java
@@ -13,6 +13,7 @@ import com.glxp.udidl.admin.entity.udid.TokenEntity;
 import com.glxp.udidl.admin.req.UpdateUdiRequest;
 import com.glxp.udidl.admin.req.udid.DownloadDiRequest;
 import com.glxp.udidl.admin.req.udid.TokenRequest;
+import com.glxp.udidl.admin.res.udid.DataSetResult;
 import com.glxp.udidl.admin.res.udid.DataSetSingleResult;
 import com.glxp.udidl.admin.service.info.CompanyService;
 import com.glxp.udidl.admin.service.inout.DeviceService;
@@ -83,7 +84,8 @@ public class DeviceUpdateService {
                 jobLog.setInsertCount(0);
             } else {
                 log.info("下载成功,开始更新数据");
-                deviceParseService.DeviceSave(Collections.singletonList(dataSetSingleResult.getDataSet()), new Date());
+                DataSetResult.DataSet dataSet = dataSetSingleResult.getDataSet();
+                deviceParseService.DeviceSave(Collections.singletonList(dataSet), new Date());
                 jobLog.setInsertCount(1);
             }
         }
@@ -100,7 +102,7 @@ public class DeviceUpdateService {
      */
     public String getToken() {
         token = redisUtil.get("UDI_UPDATE_TOKEN");
-        if (StrUtil.isEmpty(token)) {
+        if (StrUtil.isBlank(token)) {
             //查询下载数据使用的appid
             CompanyEntity companyEntity = companyService.findByTaskType(Constant.TASK_TYPE_UPDATE);
             TokenRequest tokenRequest = new TokenRequest();
diff --git a/src/main/java/com/glxp/udidl/admin/service/inout/ProductInfoService.java b/src/main/java/com/glxp/udidl/admin/service/inout/ProductInfoService.java
index bb06627..77d1f90 100644
--- a/src/main/java/com/glxp/udidl/admin/service/inout/ProductInfoService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/inout/ProductInfoService.java
@@ -50,4 +50,7 @@ public interface ProductInfoService {
     boolean updateProductInfo(ProductInfoEntity productInfoEntity);
 
     boolean updateCplx(ProductInfoEntity productInfoEntity);
+
+    boolean updateProductInfoData(ProductInfoEntity productInfoEntity);
+
 }
diff --git a/src/main/java/com/glxp/udidl/admin/service/inout/impl/ProductInfoServiceImpl.java b/src/main/java/com/glxp/udidl/admin/service/inout/impl/ProductInfoServiceImpl.java
index 95db338..cc45876 100644
--- a/src/main/java/com/glxp/udidl/admin/service/inout/impl/ProductInfoServiceImpl.java
+++ b/src/main/java/com/glxp/udidl/admin/service/inout/impl/ProductInfoServiceImpl.java
@@ -16,6 +16,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+@Transactional(rollbackFor = Exception.class)
 @Service
 public class ProductInfoServiceImpl implements ProductInfoService {
 
@@ -183,13 +184,11 @@ public class ProductInfoServiceImpl implements ProductInfoService {
         return productInfoDao.selectByUpdateTime(startDate, endDate);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean insertProductInfo(ProductInfoEntity productInfoEntity) {
         return productInfoDao.insertProductInfo(productInfoEntity);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean updateProductByUuid(ProductInfoEntity productInfoEntity) {
         return productInfoDao.updateProductByUuid(productInfoEntity);
@@ -201,19 +200,22 @@ public class ProductInfoServiceImpl implements ProductInfoService {
         return productInfoDao.updateProductInfo(productInfoEntity);
     }
 
-    @Transactional(rollbackFor = Exception.class)
+
     @Override
     public boolean updateCplx(ProductInfoEntity productInfoEntity) {
         return productInfoDao.updateCplx(productInfoEntity);
     }
 
-    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean updateProductInfoData(ProductInfoEntity productInfoEntity) {
+        return productInfoDao.updateProductInfoData(productInfoEntity);
+    }
+
     @Override
     public boolean deleteById(String id) {
         return productInfoDao.deleteById(id);
     }
 
-    @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean deleteAll(List<String> ids) {
         return productInfoDao.deleteAll(ids);
diff --git a/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java b/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java
index 1aa2d71..3e5f8ac 100644
--- a/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java
+++ b/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java
@@ -3,10 +3,12 @@ package com.glxp.udidl.admin.util;
 import cn.hutool.core.collection.CollUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.util.Set;
+import java.util.concurrent.TimeUnit;
 
 /**
  * redis工具类
@@ -25,7 +27,8 @@ public class RedisUtil<T> {
      * @return
      */
     public String get(String key) {
-        return String.valueOf(redisTemplate.opsForValue().get(key));
+        redisTemplate.setValueSerializer(new StringRedisSerializer());
+        return key == null ? null : (String) redisTemplate.opsForValue().get(key);
     }
 
     /**
@@ -49,7 +52,11 @@ public class RedisUtil<T> {
     public boolean setEx(String key, String value, long expireTime) {
         boolean result = false;
         try {
-            redisTemplate.opsForValue().set(key, value, expireTime);
+            if (expireTime > 0) {
+                redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);
+            } else {
+                set(key, value);
+            }
             result = true;
         } catch (Exception e) {
             log.error("RedisUtil setEx 发生异常,参数列表:key {} value {}", key, value, e);
@@ -84,7 +91,7 @@ public class RedisUtil<T> {
      * @param value
      * @return
      */
-    public boolean set(String key, T value) {
+    public boolean set(String key, Object value) {
         boolean result = false;
         try {
             redisTemplate.opsForValue().set(key, value);
diff --git a/src/main/resources/config/redis.setting b/src/main/resources/config/redis.setting
index 2593a47..1d122ec 100644
--- a/src/main/resources/config/redis.setting
+++ b/src/main/resources/config/redis.setting
@@ -28,7 +28,7 @@ ssl = false;
 #----- 自定义分组的连接
 [custom]
 # 地址,默认localhost
-host = 127.0.0.1
+host = 192.168.235.137
 # 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
 BlockWhenExhausted = true;
 # 设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
diff --git a/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml b/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
index 9852130..54e4776 100644
--- a/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
+++ b/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
@@ -683,4 +683,67 @@
         </set>
         WHERE deviceRecordKey = #{deviceRecordKey}
     </update>
+
+    <insert id="updateProductInfoData" parameterType="com.glxp.udidl.admin.entity.udi.ProductInfoEntity">
+        REPLACE
+            INTO productinfo
+        (id, nameCode, packRatio, packLevel, bhxjsl,
+         bhzxxsbzsl, zxxsbzbhsydysl, bhxjcpbm, bzcj, thirdProductNo, addType, deviceRecordKey, isUseDy,
+         thirdProductName,
+         cpmctymc, cplb, flbm, ggxh, qxlb, tyshxydm, ylqxzcrbarmc, zczbhhzbapzbh, ylqxzcrbarywmc, uuid, sjcpbm,
+         versionNumber
+            , diType, scbssfbhph, scbssfbhxlh, scbssfbhscrq, scbssfbhsxrq,
+         ybbm, spmc, cphhhbh, cpms, cpbsbmtxmc, isNewest, updateTime, hchzsb, cplx, sfwblztlcp, cgzmraqxgxx, sfbjwycxsy,
+         zdcfsycs,
+         sfwwjbz, syqsfxyjxmj, mjfs, qtxxdwzlj, categoryName)
+        values (#{id},
+                #{nameCode},
+                #{packRatio},
+                #{packLevel},
+                #{bhxjsl},
+                #{bhzxxsbzsl},
+                #{zxxsbzbhsydysl},
+                #{bhxjcpbm},
+                #{bzcj},
+                #{thirdProductNo},
+                #{addType},
+                #{deviceRecordKey},
+                #{isUseDy},
+                #{thirdProductName},
+                #{cpmctymc},
+                #{cplb},
+                #{flbm},
+                #{ggxh},
+                #{qxlb},
+                #{tyshxydm},
+                #{ylqxzcrbarmc},
+                #{zczbhhzbapzbh},
+                #{ylqxzcrbarywmc},
+                #{uuid},
+                #{sjcpbm},
+                #{versionNumber},
+                #{diType},
+                #{scbssfbhph},
+                #{scbssfbhxlh},
+                #{scbssfbhscrq},
+                #{scbssfbhsxrq},
+                #{ybbm},
+                #{spmc},
+                #{cphhhbh},
+                #{cpms},
+                #{cpbsbmtxmc},
+                #{isNewest},
+                #{updateTime},
+                #{hchzsb},
+                #{cplx},
+                #{sfwblztlcp},
+                #{cgzmraqxgxx},
+                #{sfbjwycxsy},
+                #{zdcfsycs},
+                #{sfwwjbz},
+                #{syqsfxyjxmj},
+                #{mjfs},
+                #{qtxxdwzlj},
+                #{categoryName})
+    </insert>
 </mapper>
diff --git a/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml b/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
index f16d947..2d80221 100644
--- a/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
+++ b/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
@@ -1033,39 +1033,39 @@
 
     <insert id="updateDevice" parameterType="com.glxp.udidl.admin.entity.udid.Device">
         replace into device (uuid, deviceRecordKey, btcpbs,
-        btcpbsyzxxsdycpbssfyz, cgzmraqxgxx, cpbsbmtxmc,
-        cpbsfbrq, cphhhbh, cplb,
-        cpmctymc, cpms, flbm,
-        ggxh, mjfs, qtxxdwzlj,
-        qxlb, scbssfbhph, scbssfbhscrq,
-        scbssfbhsxrq, scbssfbhxlh, sfbjwycxsy,
-        sfwblztlcp, sfwwjbz, sfybtzjbs,
-        spmc, sydycpbs, syqsfxyjxmj,
-        tscchcztj, tsccsm, tsrq,
-        tyshxydm, versionNumber, versionStatus,
-        versionTime, ybbm, yflbm,
-        ylqxzcrbarmc, ylqxzcrbarywmc, zczbhhzbapzbh,
-        zdcfsycs, zxxsdycpbs, bszt,
-        sfyzcbayz, zcbacpbs, zxxsdyzsydydsl,
-        deviceHistoryRecordKey, bssjzt, lastModifyTime, requestDate, hchzsb, cplx)
+                             btcpbsyzxxsdycpbssfyz, cgzmraqxgxx, cpbsbmtxmc,
+                             cpbsfbrq, cphhhbh, cplb,
+                             cpmctymc, cpms, flbm,
+                             ggxh, mjfs, qtxxdwzlj,
+                             qxlb, scbssfbhph, scbssfbhscrq,
+                             scbssfbhsxrq, scbssfbhxlh, sfbjwycxsy,
+                             sfwblztlcp, sfwwjbz, sfybtzjbs,
+                             spmc, sydycpbs, syqsfxyjxmj,
+                             tscchcztj, tsccsm, tsrq,
+                             tyshxydm, versionNumber, versionStatus,
+                             versionTime, ybbm, yflbm,
+                             ylqxzcrbarmc, ylqxzcrbarywmc, zczbhhzbapzbh,
+                             zdcfsycs, zxxsdycpbs, bszt,
+                             sfyzcbayz, zcbacpbs, zxxsdyzsydydsl,
+                             deviceHistoryRecordKey, bssjzt, lastModifyTime, requestDate, hchzsb, cplx)
         values (#{uuid,jdbcType=VARCHAR}, #{devicerecordkey,jdbcType=VARCHAR}, #{btcpbs,jdbcType=VARCHAR},
-        #{btcpbsyzxxsdycpbssfyz,jdbcType=VARCHAR}, #{cgzmraqxgxx,jdbcType=VARCHAR},
-        #{cpbsbmtxmc,jdbcType=VARCHAR},
-        #{cpbsfbrq,jdbcType=VARCHAR}, #{cphhhbh,jdbcType=VARCHAR}, #{cplb,jdbcType=VARCHAR},
-        #{cpmctymc,jdbcType=VARCHAR}, #{cpms,jdbcType=VARCHAR}, #{flbm,jdbcType=VARCHAR},
-        #{ggxh,jdbcType=VARCHAR}, #{mjfs,jdbcType=VARCHAR}, #{qtxxdwzlj,jdbcType=VARCHAR},
-        #{qxlb,jdbcType=VARCHAR}, #{scbssfbhph,jdbcType=VARCHAR}, #{scbssfbhscrq,jdbcType=VARCHAR},
-        #{scbssfbhsxrq,jdbcType=VARCHAR}, #{scbssfbhxlh,jdbcType=VARCHAR}, #{sfbjwycxsy,jdbcType=VARCHAR},
-        #{sfwblztlcp,jdbcType=VARCHAR}, #{sfwwjbz,jdbcType=VARCHAR}, #{sfybtzjbs,jdbcType=VARCHAR},
-        #{spmc,jdbcType=VARCHAR}, #{sydycpbs,jdbcType=VARCHAR}, #{syqsfxyjxmj,jdbcType=VARCHAR},
-        #{tscchcztj,jdbcType=VARCHAR}, #{tsccsm,jdbcType=VARCHAR}, #{tsrq,jdbcType=VARCHAR},
-        #{tyshxydm,jdbcType=VARCHAR}, #{versionnumber,jdbcType=VARCHAR}, #{versionstatus,jdbcType=VARCHAR},
-        #{versiontime,jdbcType=VARCHAR}, #{ybbm,jdbcType=VARCHAR}, #{yflbm,jdbcType=VARCHAR},
-        #{ylqxzcrbarmc,jdbcType=VARCHAR}, #{ylqxzcrbarywmc,jdbcType=VARCHAR}, #{zczbhhzbapzbh,jdbcType=VARCHAR},
-        #{zdcfsycs,jdbcType=VARCHAR}, #{zxxsdycpbs,jdbcType=VARCHAR}, #{bszt,jdbcType=VARCHAR},
-        #{sfyzcbayz,jdbcType=VARCHAR}, #{zcbacpbs,jdbcType=VARCHAR}, #{zxxsdyzsydydsl,jdbcType=VARCHAR},
-        #{devicehistoryrecordkey,jdbcType=VARCHAR}, #{bssjzt,jdbcType=VARCHAR},
-        #{lastModifyTime,jdbcType=VARCHAR}, #{requestDate}, #{hchzsb}, #{cplx})
+                #{btcpbsyzxxsdycpbssfyz,jdbcType=VARCHAR}, #{cgzmraqxgxx,jdbcType=VARCHAR},
+                #{cpbsbmtxmc,jdbcType=VARCHAR},
+                #{cpbsfbrq,jdbcType=VARCHAR}, #{cphhhbh,jdbcType=VARCHAR}, #{cplb,jdbcType=VARCHAR},
+                #{cpmctymc,jdbcType=VARCHAR}, #{cpms,jdbcType=VARCHAR}, #{flbm,jdbcType=VARCHAR},
+                #{ggxh,jdbcType=VARCHAR}, #{mjfs,jdbcType=VARCHAR}, #{qtxxdwzlj,jdbcType=VARCHAR},
+                #{qxlb,jdbcType=VARCHAR}, #{scbssfbhph,jdbcType=VARCHAR}, #{scbssfbhscrq,jdbcType=VARCHAR},
+                #{scbssfbhsxrq,jdbcType=VARCHAR}, #{scbssfbhxlh,jdbcType=VARCHAR}, #{sfbjwycxsy,jdbcType=VARCHAR},
+                #{sfwblztlcp,jdbcType=VARCHAR}, #{sfwwjbz,jdbcType=VARCHAR}, #{sfybtzjbs,jdbcType=VARCHAR},
+                #{spmc,jdbcType=VARCHAR}, #{sydycpbs,jdbcType=VARCHAR}, #{syqsfxyjxmj,jdbcType=VARCHAR},
+                #{tscchcztj,jdbcType=VARCHAR}, #{tsccsm,jdbcType=VARCHAR}, #{tsrq,jdbcType=VARCHAR},
+                #{tyshxydm,jdbcType=VARCHAR}, #{versionnumber,jdbcType=VARCHAR}, #{versionstatus,jdbcType=VARCHAR},
+                #{versiontime,jdbcType=VARCHAR}, #{ybbm,jdbcType=VARCHAR}, #{yflbm,jdbcType=VARCHAR},
+                #{ylqxzcrbarmc,jdbcType=VARCHAR}, #{ylqxzcrbarywmc,jdbcType=VARCHAR}, #{zczbhhzbapzbh,jdbcType=VARCHAR},
+                #{zdcfsycs,jdbcType=VARCHAR}, #{zxxsdycpbs,jdbcType=VARCHAR}, #{bszt,jdbcType=VARCHAR},
+                #{sfyzcbayz,jdbcType=VARCHAR}, #{zcbacpbs,jdbcType=VARCHAR}, #{zxxsdyzsydydsl,jdbcType=VARCHAR},
+                #{devicehistoryrecordkey,jdbcType=VARCHAR}, #{bssjzt,jdbcType=VARCHAR},
+                #{lastModifyTime,jdbcType=VARCHAR}, #{requestDate}, #{hchzsb}, #{cplx})
     </insert>
 
 </mapper>
\ No newline at end of file