From 44b0556018a547c254016a235b259d68b5acdbdd Mon Sep 17 00:00:00 2001
From: anthonyywj2 <353682448@qq.com>
Date: Tue, 23 Aug 2022 16:37:50 +0800
Subject: [PATCH 1/4] =?UTF-8?q?UDI=E6=9C=AC=E4=BD=93=E6=A0=87=E8=AF=86?=
 =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E9=94=99=E8=AF=AF=EF=BC=8C=E4=B8=8B=E7=BA=A7?=
 =?UTF-8?q?=E4=BA=A7=E5=93=81=E6=A0=87=E8=AF=86=E8=BD=AC=E6=8D=A2=E4=BA=A7?=
 =?UTF-8?q?=E5=93=81=E6=A0=87=E8=AF=86=EF=BC=8CPC=E7=AB=AF=E6=9F=A5?=
 =?UTF-8?q?=E8=AF=A2=E7=AB=AF=E4=B8=8B=E8=BD=BD=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../device/ProductInfoController.java         | 45 +++++++--
 .../admin/dao/udi/ProductInfoMapper.java      |  4 +
 .../admin/req/ProductInfoFilterRequest.java   |  5 +
 .../service/inout/ProductInfoService.java     |  5 +
 .../inout/impl/ProductInfoServiceImpl.java    | 32 ++++++
 .../udidl/admin/thread/UdiTransferUtils.java  |  4 +-
 .../com/glxp/udidl/admin/util/RedisUtil.java  | 15 +++
 src/main/resources/application.yml            |  2 +-
 .../mybatis/mapper/udi/ProductInfoMapper.xml  | 98 ++++++++++++++++++-
 9 files changed, 198 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
index c256b8b..a405b0d 100644
--- a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
+++ b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
@@ -17,6 +17,7 @@ import com.glxp.udidl.admin.service.inout.ProductInfoService;
 import com.glxp.udidl.admin.service.udi.UdiCompanyService;
 import com.glxp.udidl.admin.util.BeanUtils;
 import com.glxp.udidl.admin.util.FilterUdiUtils;
+import com.glxp.udidl.admin.util.RedisUtil;
 import com.glxp.udidl.admin.util.ResultVOUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -39,12 +40,15 @@ public class ProductInfoController {
     ProductInfoService productInfoService;
     @Resource
     UdiCompanyService udiCompanyService;
+    @Resource
+    RedisUtil redisUtil;
 
     //手持枪扫码查询
     @ApiOperation(value = "手持枪扫码查询", response = ProductInfoEntity.class)
     @AuthRuleAnnotation("udidl/device/findBydi")
     @ApiImplicitParams({@ApiImplicitParam(name = "nameCode", value = "UDI码", required = true)})
     @GetMapping("udidl/device/findBydi")
+
     public BaseResponse findProductInfo(String nameCode) {
         ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
         String key = nameCode;
@@ -200,6 +204,8 @@ public class ProductInfoController {
     @AuthRuleAnnotation("udidl/device/filterAllUdi")
     @GetMapping("udidl/device/filterAllUdi")
     public BaseResponse filterAllUdi(ProductInfoFilterRequest productInfoFilterRequest) {
+
+
         //过滤--1.参数不能全未空
         if ((productInfoFilterRequest.getYlqxzcrbarmc() == null || productInfoFilterRequest.getYlqxzcrbarmc().equals("")) &&
                 (productInfoFilterRequest.getCpmctymc() == null || productInfoFilterRequest.getCpmctymc().equals("")) &&
@@ -238,11 +244,23 @@ public class ProductInfoController {
             return ResultVOUtils.error(500, "请输入完整的产品通用名称!");
         }
         productInfoFilterRequest.setIsNewest(1);
-        List<ProductInfoEntity> productInfoEntityList = productInfoService.filterUdi(productInfoFilterRequest);
-        PageInfo<ProductInfoEntity> pageInfo;
-        pageInfo = new PageInfo<>(productInfoEntityList);
+
+        String keyCache = productInfoFilterRequest.toCacheKey();
+        if (StrUtil.isEmpty(keyCache)) {
+            return ResultVOUtils.error(500, "查询条件不能为空!");
+        }
+        String totalStr = (String) redisUtil.get(keyCache);
+        long total = 0;
+        if (StrUtil.isEmpty(totalStr)) {
+            total = productInfoService.filterUdiNoPageCount(productInfoFilterRequest);
+            redisUtil.set(keyCache, total + "");
+        } else {
+            total = Long.parseLong(totalStr);
+        }
+
+        List<ProductInfoEntity> productInfoEntityList = productInfoService.filterUdiNoPage(productInfoFilterRequest);
         PageSimpleResponse<ProductInfoEntity> pageSimpleResponse = new PageSimpleResponse<>();
-        pageSimpleResponse.setTotal(pageInfo.getTotal());
+        pageSimpleResponse.setTotal(total);
         pageSimpleResponse.setList(productInfoEntityList);
         return ResultVOUtils.success(pageSimpleResponse);
     }
@@ -287,11 +305,22 @@ public class ProductInfoController {
             return ResultVOUtils.error(500, "请输入完整的产品通用名称!");
         }
         productInfoFilterRequest.setIsNewest(1);
-        List<ProductInfoEntity> productInfoEntityList = productInfoService.filterUdi(productInfoFilterRequest);
-        PageInfo<ProductInfoEntity> pageInfo;
-        pageInfo = new PageInfo<>(productInfoEntityList);
+
+        String keyCache = productInfoFilterRequest.toCacheKey();
+        if (StrUtil.isEmpty(keyCache)) {
+            return ResultVOUtils.error(500, "查询条件不能为空!");
+        }
+        String totalStr = (String) redisUtil.get(keyCache);
+        long total = 0;
+        if (StrUtil.isEmpty(totalStr)) {
+            total = productInfoService.filterUdiNoPageCount(productInfoFilterRequest);
+            redisUtil.set(keyCache, total + "");
+        } else {
+            total = Long.parseLong(totalStr);
+        }
+        List<ProductInfoEntity> productInfoEntityList = productInfoService.filterUdiNoPage(productInfoFilterRequest);
         PageSimpleResponse<ProductInfoEntity> pageSimpleResponse = new PageSimpleResponse<>();
-        pageSimpleResponse.setTotal(pageInfo.getTotal());
+        pageSimpleResponse.setTotal(total);
         pageSimpleResponse.setList(productInfoEntityList);
         return ResultVOUtils.success(pageSimpleResponse);
     }
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 c5db4b0..dce3bf8 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
@@ -39,6 +39,10 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfoEntity> {
 
     List<ProductInfoEntity> filterUdi(ProductInfoFilterRequest productInfoFilterRequest);
 
+    List<ProductInfoEntity> filterUdiNoPage(ProductInfoFilterRequest productInfoFilterRequest);
+
+    Long filterUdiNoPageCount(ProductInfoFilterRequest productInfoFilterRequest);
+
     List<ProductInfoEntity> syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest);
 
     List<String> filterUuidByCreditNo(ProductInfoFilterRequest productInfoFilterRequest);
diff --git a/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java b/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
index 47c2aff..1bf693d 100644
--- a/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
+++ b/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
@@ -43,4 +43,9 @@ public class ProductInfoFilterRequest extends ListPageRequest {
 
     @ApiModelProperty(value = "更新时间")
     private String updateTime;
+
+
+    public String toCacheKey() {
+        return nameCode + deviceRecordKey + uuid + cpmctymc + ylqxzcrbarmc + ggxh + tyshxydm + showHis + diType + zczbhhzbapzbh + updateTime;
+    }
 }
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 997d694..bb06627 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
@@ -24,6 +24,11 @@ public interface ProductInfoService {
 
     List<ProductInfoEntity> filterUdi(ProductInfoFilterRequest productInfoFilterRequest);
 
+
+    List<ProductInfoEntity> filterUdiNoPage(ProductInfoFilterRequest productInfoFilterRequest);
+
+    Long filterUdiNoPageCount(ProductInfoFilterRequest productInfoFilterRequest);
+
     List<ProductInfoEntity> selectByUuid(String uuid);
 
     List<ProductInfoEntity> syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest);
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 83224f3..307785d 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
@@ -6,6 +6,7 @@ import com.glxp.udidl.admin.dao.udi.ProductInfoMapper;
 import com.glxp.udidl.admin.entity.udi.ProductInfoEntity;
 import com.glxp.udidl.admin.req.ProductInfoFilterRequest;
 import com.glxp.udidl.admin.service.inout.ProductInfoService;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -100,6 +101,37 @@ public class ProductInfoServiceImpl implements ProductInfoService {
         return data;
     }
 
+    @Override
+    public List<ProductInfoEntity> filterUdiNoPage(ProductInfoFilterRequest productInfoFilterRequest) {
+        if (productInfoFilterRequest == null) {
+            return Collections.emptyList();
+        }
+        if (productInfoFilterRequest.getPage() != null) {
+            int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit();
+            productInfoFilterRequest.setPage(offset);
+            productInfoFilterRequest.setLimit(productInfoFilterRequest.getLimit());
+        }
+
+        List<ProductInfoEntity> data = productInfoDao.filterUdiNoPage(productInfoFilterRequest);
+        return data;
+    }
+
+    @Override
+    public Long filterUdiNoPageCount(ProductInfoFilterRequest request) {
+
+
+        ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
+        BeanUtils.copyProperties(request, productInfoFilterRequest);
+
+        if (productInfoFilterRequest.getPage() != null) {
+            int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit();
+            productInfoFilterRequest.setPage(offset);
+            productInfoFilterRequest.setLimit(productInfoFilterRequest.getLimit());
+
+        }
+        return productInfoDao.filterUdiNoPageCount(productInfoFilterRequest);
+    }
+
     @Override
     public List<ProductInfoEntity> selectByUuid(String uuid) {
         List<ProductInfoEntity> data = productInfoDao.selectByUuid(uuid);
diff --git a/src/main/java/com/glxp/udidl/admin/thread/UdiTransferUtils.java b/src/main/java/com/glxp/udidl/admin/thread/UdiTransferUtils.java
index 4e24721..e754119 100644
--- a/src/main/java/com/glxp/udidl/admin/thread/UdiTransferUtils.java
+++ b/src/main/java/com/glxp/udidl/admin/thread/UdiTransferUtils.java
@@ -128,10 +128,10 @@ public class UdiTransferUtils {
             productInfoEntity.setZxxsbzbhsydysl(0);
             productInfoEntity.setDiType(3);
             productInfoEntity.setSjcpbm(deviceEntity.getZxxsdycpbs());
-            productInfoEntity.setNameCode(deviceEntity.getSydycpbs());
+            productInfoEntity.setNameCode(deviceEntity.getBtcpbs());
             productInfoEntity.setUpdateTime(new Date());
             productInfoService.insertProductInfo(productInfoEntity);
-            productInfoEntity.setBhxjcpbm(deviceEntity.getSydycpbs());
+            productInfoEntity.setBhxjcpbm(deviceEntity.getBtcpbs());
             productInfoEntity.setBhxjsl(1);
             productInfoEntity.setPackLevel(2 + "");
             productInfoEntity.setZxxsbzbhsydysl(1);
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 fc3d70f..58a60cd 100644
--- a/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java
+++ b/src/main/java/com/glxp/udidl/admin/util/RedisUtil.java
@@ -1,10 +1,13 @@
 package com.glxp.udidl.admin.util;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.db.nosql.redis.RedisDS;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import redis.clients.jedis.Jedis;
 
+import java.util.Set;
+
 /**
  * redis工具类
  */
@@ -46,4 +49,16 @@ public class RedisUtil {
         return true;
     }
 
+
+    //模糊匹配删除
+    public void deleteByPrex(String prex) {
+        Set<String> keys = jedis.keys(prex);
+        if (CollUtil.isNotEmpty(keys)) {
+            for (String str : keys) {
+                jedis.del(str);
+            }
+        }
+    }
+
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 122d21b..44d07c6 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,7 +2,7 @@ server:
   port: 9994
 spring:
   profiles:
-    active: dev
+    active: pro
   jmx:
     enabled: false
 
diff --git a/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml b/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
index 44f15fc..efa4700 100644
--- a/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
+++ b/src/main/resources/mybatis/mapper/udi/ProductInfoMapper.xml
@@ -230,6 +230,101 @@
             </if>
         </where>
     </select>
+
+    <select id="filterUdiNoPage" parameterType="com.glxp.udidl.admin.req.ProductInfoFilterRequest"
+            resultType="com.glxp.udidl.admin.entity.udi.ProductInfoEntity">
+        select *
+        from productinfo
+        <where>
+            <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
+                AND ylqxzcrbarmc = #{ylqxzcrbarmc}
+            </if>
+
+            <if test="ylqxzcrbarmc == null and cpmctymc != '' and cpmctymc != null">
+                AND cpmctymc LIKE concat(#{cpmctymc}, '%')
+            </if>
+
+            <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null and cpmctymc != '' and cpmctymc != null">
+                AND cpmctymc LIKE concat('%', #{cpmctymc}, '%')
+            </if>
+            <if test="nameCode != '' and nameCode != null">
+                AND nameCode LIKE concat(#{nameCode}, '%')
+            </if>
+            <if test="uuid != '' and uuid != null">
+                AND uuid = #{uuid}
+            </if>
+            <if test="ggxh != '' and ggxh != null">
+                AND ggxh LIKE concat('%', #{ggxh}, '%')
+            </if>
+            <if test="zczbhhzbapzbh != '' and zczbhhzbapzbh != null">
+                AND zczbhhzbapzbh LIKE concat('%', #{zczbhhzbapzbh}, '%')
+            </if>
+
+            <if test="deviceRecordKey != '' and deviceRecordKey != null">
+                AND deviceRecordKey = #{deviceRecordKey}
+            </if>
+            <if test="updateTime != null and updateTime != ''">
+                <![CDATA[
+                and DATE_FORMAT(updateTime, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{updateTime}, '%Y-%m-%d %H:%i:%S')
+                ]]>
+            </if>
+            <if test="isNewest != null and isNewest != ''">
+                AND isNewest = #{isNewest}
+            </if>
+            <if test="diType != '' and diType != null">
+                AND diType = #{diType}
+            </if>
+        </where>
+        limit #{page},#{limit}
+    </select>
+
+
+    <select id="filterUdiNoPageCount" parameterType="com.glxp.udidl.admin.req.ProductInfoFilterRequest"
+            resultType="java.lang.Long">
+        select count(0)
+        from productinfo
+        <where>
+            <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
+                AND ylqxzcrbarmc = #{ylqxzcrbarmc}
+            </if>
+
+            <if test="ylqxzcrbarmc == null and cpmctymc != '' and cpmctymc != null">
+                AND cpmctymc LIKE concat(#{cpmctymc}, '%')
+            </if>
+
+            <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null and cpmctymc != '' and cpmctymc != null">
+                AND cpmctymc LIKE concat('%', #{cpmctymc}, '%')
+            </if>
+            <if test="nameCode != '' and nameCode != null">
+                AND nameCode LIKE concat(#{nameCode}, '%')
+            </if>
+            <if test="uuid != '' and uuid != null">
+                AND uuid = #{uuid}
+            </if>
+            <if test="ggxh != '' and ggxh != null">
+                AND ggxh LIKE concat('%', #{ggxh}, '%')
+            </if>
+            <if test="zczbhhzbapzbh != '' and zczbhhzbapzbh != null">
+                AND zczbhhzbapzbh LIKE concat('%', #{zczbhhzbapzbh}, '%')
+            </if>
+
+            <if test="deviceRecordKey != '' and deviceRecordKey != null">
+                AND deviceRecordKey = #{deviceRecordKey}
+            </if>
+            <if test="updateTime != null and updateTime != ''">
+                <![CDATA[
+                and DATE_FORMAT(updateTime, '%Y-%m-%d %H:%i:%S') >= DATE_FORMAT(#{updateTime}, '%Y-%m-%d %H:%i:%S')
+                ]]>
+            </if>
+            <if test="isNewest != null and isNewest != ''">
+                AND isNewest = #{isNewest}
+            </if>
+            <if test="diType != '' and diType != null">
+                AND diType = #{diType}
+            </if>
+        </where>
+    </select>
+
     <select id="selectByUpdateTime"
             resultType="com.glxp.udidl.admin.entity.udi.ProductInfoEntity">
         select *
@@ -335,7 +430,8 @@
         #{sfwwjbz},
         #{syqsfxyjxmj},
         #{mjfs},
-        #{qtxxdwzlj},#{categoryName}
+        #{qtxxdwzlj},
+        #{categoryName}
         )
     </insert>
 

From ed65e148c155df16b8f42abf15329d10bcc59228 Mon Sep 17 00:00:00 2001
From: anthonyywj2 <353682448@qq.com>
Date: Wed, 21 Sep 2022 14:05:44 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8B=E8=BD=BDbug?=
 =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=8C=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../device/ProductInfoController.java         |  2 +-
 .../device/UdiCompanyController.java          |  2 +-
 .../udidl/admin/dao/udid/DeviceMapper.java    |  2 +
 .../glxp/udidl/admin/entity/udid/Device.java  |  2 +
 .../admin/req/ProductInfoFilterRequest.java   |  1 +
 .../service/dataSync/DeviceSaveService.java   |  3 +-
 .../admin/service/inout/DeviceService.java    |  3 ++
 .../service/inout/impl/DeviceServiceImpl.java |  5 +++
 .../inout/impl/ProductInfoServiceImpl.java    |  6 +++
 src/main/resources/application-dev.yml        |  4 +-
 .../mybatis/mapper/udi/UdiCompanyMapper.xml   | 37 ++++++++++---------
 .../mybatis/mapper/udid/DeviceMapper.xml      | 15 ++++++--
 12 files changed, 55 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
index a405b0d..12c400b 100644
--- a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
+++ b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
@@ -135,7 +135,7 @@ public class ProductInfoController {
     @GetMapping("udidl/udiwms/syncUdi")
     public BaseResponse syncUdi(SyncUdiRequest syncUdiRequest) {
         ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
-        BeanUtils.copyProperties(productInfoFilterRequest, syncUdiRequest);
+        BeanUtils.copyProperties(syncUdiRequest, productInfoFilterRequest);
         if (productInfoFilterRequest.getPage() == null || productInfoFilterRequest.getLimit() == null)
             return ResultVOUtils.error(500, "分页参数不能为空");
         List<ProductInfoEntity> productInfoEntityList = productInfoService.syncDlUdi(productInfoFilterRequest);
diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/UdiCompanyController.java b/src/main/java/com/glxp/udidl/admin/controller/device/UdiCompanyController.java
index 5e1a83b..fc13b6a 100644
--- a/src/main/java/com/glxp/udidl/admin/controller/device/UdiCompanyController.java
+++ b/src/main/java/com/glxp/udidl/admin/controller/device/UdiCompanyController.java
@@ -69,7 +69,7 @@ public class UdiCompanyController {
 
         ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
         BeanUtils.copyProperties(filterCompanyDiRequest, productInfoFilterRequest);
-        if (StrUtil.isNotEmpty(productInfoFilterRequest.getTyshxydm())) {
+        if (StrUtil.isEmpty(productInfoFilterRequest.getTyshxydm())) {
             return ResultVOUtils.error(500, "统一社会信用代码不能为空!");
         }
         List<ProductInfoEntity> productInfoEntities;
diff --git a/src/main/java/com/glxp/udidl/admin/dao/udid/DeviceMapper.java b/src/main/java/com/glxp/udidl/admin/dao/udid/DeviceMapper.java
index c175386..1ab9eed 100644
--- a/src/main/java/com/glxp/udidl/admin/dao/udid/DeviceMapper.java
+++ b/src/main/java/com/glxp/udidl/admin/dao/udid/DeviceMapper.java
@@ -53,6 +53,8 @@ public interface DeviceMapper extends BaseMapper<Device> {
 
     String selectisSame(@Param("deviceRecordKey") String deviceRecordKey, @Param("versionNumber") String versionNumber);
 
+    String selectDiIsSame(@Param("zxxsdycpbs") String zxxsdycpbs, @Param("versionNumber") String versionNumber);
+
     String selectKey(@Param("zxxsdycpbs") String zxxsdycpbs);
 
     List<Device> downloadDevice(DownloadUdiRequest downloadUdiRequest);
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 10f7178..61a13f4 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
@@ -2,10 +2,12 @@ package com.glxp.udidl.admin.entity.udid;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.util.Date;
 
 @ApiModel(value = "医疗器械信息实体")
+@Data
 public class Device {
 
 
diff --git a/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java b/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
index 1bf693d..151a94f 100644
--- a/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
+++ b/src/main/java/com/glxp/udidl/admin/req/ProductInfoFilterRequest.java
@@ -45,6 +45,7 @@ public class ProductInfoFilterRequest extends ListPageRequest {
     private String updateTime;
 
 
+
     public String toCacheKey() {
         return nameCode + deviceRecordKey + uuid + cpmctymc + ylqxzcrbarmc + ggxh + tyshxydm + showHis + diType + zczbhhzbapzbh + updateTime;
     }
diff --git a/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSaveService.java b/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSaveService.java
index 4b7144e..a0a1d57 100644
--- a/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSaveService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSaveService.java
@@ -1,5 +1,6 @@
 package com.glxp.udidl.admin.service.dataSync;
 
+import cn.hutool.core.util.StrUtil;
 import com.glxp.udidl.admin.entity.udid.*;
 import com.glxp.udidl.admin.res.udid.DataSetResult;
 import com.glxp.udidl.admin.service.inout.DeviceService;
@@ -43,7 +44,7 @@ public class DeviceSaveService {
 
             for (DataSetResult.DeviceInfo item : ds.getDeviceInfo()) {
                 //1:判断数据是否存在
-                if (deviceService.selectisSame(item.getDeviceRecordKey(), item.getVersionNumber() + "") != null)
+                if (StrUtil.isNotEmpty(deviceService.selectDiIsSame(item.getZxxsdycpbs(), item.getVersionNumber() + "")))
                     continue;
                 Device device = responseToDevice(item);
                 String uuid = getUUId();
diff --git a/src/main/java/com/glxp/udidl/admin/service/inout/DeviceService.java b/src/main/java/com/glxp/udidl/admin/service/inout/DeviceService.java
index 4e7cb86..1a7e632 100644
--- a/src/main/java/com/glxp/udidl/admin/service/inout/DeviceService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/inout/DeviceService.java
@@ -4,6 +4,7 @@ import com.glxp.udidl.admin.entity.udid.*;
 import com.glxp.udidl.admin.req.ListPageRequest;
 import com.glxp.udidl.admin.req.udid.DeviceListRequest;
 import com.glxp.udidl.admin.req.udid.DeviceSearchRequest;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -37,6 +38,8 @@ public interface DeviceService {
 
     String selectisSame(String deviceRecordKey, String versionNumber);
 
+    String selectDiIsSame(String zxxsdycpbs, String versionNumber);
+
     String selectKey(String zxxsdycpbs);
 
     List<String> findAllByZxxscpbs();
diff --git a/src/main/java/com/glxp/udidl/admin/service/inout/impl/DeviceServiceImpl.java b/src/main/java/com/glxp/udidl/admin/service/inout/impl/DeviceServiceImpl.java
index 14fee05..d9db939 100644
--- a/src/main/java/com/glxp/udidl/admin/service/inout/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/glxp/udidl/admin/service/inout/impl/DeviceServiceImpl.java
@@ -189,6 +189,11 @@ public class DeviceServiceImpl implements DeviceService {
         return deviceMapper.selectisSame(deviceRecordKey, versionNumber);
     }
 
+    @Override
+    public String selectDiIsSame(String zxxsdycpbs, String versionNumber) {
+        return deviceMapper.selectDiIsSame(zxxsdycpbs, versionNumber);
+    }
+
     @Override
     public String selectKey(String zxxsdycpbs) {
         return deviceMapper.selectKey(zxxsdycpbs);
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 307785d..95db338 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
@@ -108,8 +108,14 @@ public class ProductInfoServiceImpl implements ProductInfoService {
         }
         if (productInfoFilterRequest.getPage() != null) {
             int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit();
+            if (offset < 0) {
+                offset = 0;
+            }
             productInfoFilterRequest.setPage(offset);
             productInfoFilterRequest.setLimit(productInfoFilterRequest.getLimit());
+        } else {
+            productInfoFilterRequest.setPage(1);
+            productInfoFilterRequest.setLimit(10);
         }
 
         List<ProductInfoEntity> data = productInfoDao.filterUdiNoPage(productInfoFilterRequest);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 6ea1c55..c1e1701 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -4,9 +4,9 @@ spring:
       matching-strategy: ant_path_matcher
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://192.168.0.66:3360/udidl_test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://192.168.0.66:3306/udidl_test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
     username: root
-    password: root
+    password: 123456
   servlet:
     multipart:
       max-file-size: 100MB
diff --git a/src/main/resources/mybatis/mapper/udi/UdiCompanyMapper.xml b/src/main/resources/mybatis/mapper/udi/UdiCompanyMapper.xml
index 92609af..647f3d6 100644
--- a/src/main/resources/mybatis/mapper/udi/UdiCompanyMapper.xml
+++ b/src/main/resources/mybatis/mapper/udi/UdiCompanyMapper.xml
@@ -55,43 +55,44 @@
             </if>
         </where>
         limit #{page}
-                ,#{limit}
+        ,#{limit}
     </select>
 
 
     <select id="searchByName" parameterType="java.lang.String" resultType="java.lang.String">
         select ylqxzcrbarmc
         from udicompany
-        where ylqxzcrbarmc like concat('%', #{name}, '%')
-        limit 50
+        where ylqxzcrbarmc like concat('%', #{name}, '%') limit 50
     </select>
 
     <insert id="insertUdiCompany" keyProperty="id" parameterType="com.glxp.udidl.admin.entity.udi.UdiCompanyEntity">
         REPLACE
-                INTO udicompany
+        INTO udicompany
                 (tyshxydm, ylqxzcrbarmc, ylqxzcrbarywmc, qylxrdh,
                  qylxrcz, qylxryx, updateTime)
-        values (#{tyshxydm},
-                #{ylqxzcrbarmc},
-                #{ylqxzcrbarywmc},
-                #{qylxrdh},
-                #{qylxrcz},
-                #{qylxryx},
-                #{updateTime})
+        values (
+        #{tyshxydm},
+        #{ylqxzcrbarmc},
+        #{ylqxzcrbarywmc},
+        #{qylxrdh},
+        #{qylxrcz},
+        #{qylxryx},
+        #{updateTime}
+        )
     </insert>
 
     <insert id="insertUdiCompanys" keyProperty="id" parameterType="com.glxp.udidl.admin.entity.udi.UdiCompanyEntity">
         replace INTO udicompany(tyshxydm, ylqxzcrbarmc, ylqxzcrbarywmc, qylxrdh,
-                                qylxrcz, qylxryx, updateTime)
-                values
+        qylxrcz, qylxryx, updateTime)
+        values
         <foreach collection="udiCompanyEntities" item="item" index="index"
                  separator=",">
             (#{item.tyshxydm},
-             #{item.ylqxzcrbarmc},
-             #{item.ylqxzcrbarywmc},
-             #{item.qylxrdh},
-             #{item.qylxrcz},
-             #{item.qylxryx}),#{item.updateTime}
+            #{item.ylqxzcrbarmc},
+            #{item.ylqxzcrbarywmc},
+            #{item.qylxrdh},
+            #{item.qylxrcz},
+            #{item.qylxryx}),#{item.updateTime}
         </foreach>
     </insert>
     <delete id="deleteById" parameterType="Map">
diff --git a/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml b/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
index e68d22f..3e9406f 100644
--- a/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
+++ b/src/main/resources/mybatis/mapper/udid/DeviceMapper.xml
@@ -169,7 +169,7 @@
                             ylqxzcrbarmc, ylqxzcrbarywmc, zczbhhzbapzbh,
                             zdcfsycs, zxxsdycpbs, bszt,
                             sfyzcbayz, zcbacpbs, zxxsdyzsydydsl,
-                            deviceHistoryRecordKey, bssjzt, lastModifyTime, requestDate,hchzsb,cplx)
+                            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},
@@ -187,7 +187,7 @@
                 #{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})
+                #{lastModifyTime,jdbcType=VARCHAR}, #{requestDate}, #{hchzsb}, #{cplx})
     </insert>
     <insert id="insertSelective" parameterType="com.glxp.udidl.admin.entity.udid.Device">
         insert into device
@@ -890,8 +890,7 @@
             zcbacpbs               = #{zcbacpbs,jdbcType=VARCHAR},
             zxxsdyzsydydsl         = #{zxxsdyzsydydsl,jdbcType=VARCHAR},
             deviceHistoryRecordKey = #{devicehistoryrecordkey,jdbcType=VARCHAR},
-            bssjzt                 = #{bssjzt,jdbcType=VARCHAR}
-            hchzsb                 = #{hchzsb,jdbcType=VARCHAR}
+            bssjzt                 = #{bssjzt,jdbcType=VARCHAR} hchzsb                 = #{hchzsb,jdbcType=VARCHAR}
 
         where uuid = #{uuid,jdbcType=VARCHAR}
     </update>
@@ -990,6 +989,14 @@
           and versionNumber = #{versionNumber} limit 1
     </select>
 
+
+    <select id="selectDiIsSame" parameterType="Map" resultType="java.lang.String">
+        SELECT uuid
+        from device
+        WHERE zxxsdycpbs = #{zxxsdycpbs}
+          and versionNumber = #{versionNumber} limit 1
+    </select>
+
     <select id="selectKey" parameterType="Map" resultType="java.lang.String">
         SELECT uuid
         from device

From ba05613dbb06ceea195067b2c7696b6bde5ab08d Mon Sep 17 00:00:00 2001
From: anthonyywj2 <353682448@qq.com>
Date: Thu, 29 Sep 2022 09:14:34 +0800
Subject: [PATCH 3/4] =?UTF-8?q?UDI=E9=AA=8C=E8=AF=81=EF=BC=8CGS1=E6=9D=A1?=
 =?UTF-8?q?=E7=A0=81=E8=A7=A3=E6=9E=90bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../device/ProductInfoController.java         | 64 ++++++++++++++
 .../udidl/admin/res/udid/VailUdiReponse.java  | 10 +++
 .../udidl/admin/util/gs1/Gs1128Utils.java     | 88 ++++++++++---------
 3 files changed, 119 insertions(+), 43 deletions(-)
 create mode 100644 src/main/java/com/glxp/udidl/admin/res/udid/VailUdiReponse.java

diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
index 12c400b..a00389f 100644
--- a/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
+++ b/src/main/java/com/glxp/udidl/admin/controller/device/ProductInfoController.java
@@ -1,5 +1,6 @@
 package com.glxp.udidl.admin.controller.device;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.github.pagehelper.PageInfo;
 import com.glxp.udidl.admin.annotation.AuthRuleAnnotation;
@@ -13,6 +14,7 @@ import com.glxp.udidl.admin.req.UdiCompanyRequest;
 import com.glxp.udidl.admin.res.BaseResponse;
 import com.glxp.udidl.admin.res.PageSimpleResponse;
 import com.glxp.udidl.admin.res.udid.ProductInfoResponse;
+import com.glxp.udidl.admin.res.udid.VailUdiReponse;
 import com.glxp.udidl.admin.service.inout.ProductInfoService;
 import com.glxp.udidl.admin.service.udi.UdiCompanyService;
 import com.glxp.udidl.admin.util.BeanUtils;
@@ -356,4 +358,66 @@ public class ProductInfoController {
         return ResultVOUtils.success(productInfoService.findLastVersion(productInfoFilterRequest));
     }
 
+
+    @ApiOperation(value = "校验UDI完整性", response = ProductInfoEntity.class)
+    @ApiImplicitParams({@ApiImplicitParam(name = "code", value = "UDI码", required = true)})
+    @GetMapping("udidl/device/vailUdiCode")
+    public BaseResponse vailUdiCode(String code) {
+
+        if (StrUtil.isEmpty(code)) {
+            return ResultVOUtils.error(500, "查询条件不能为空!");
+        }
+        UdiEntity udiEntity = FilterUdiUtils.getUdi(code);
+        if (udiEntity == null) {
+            return ResultVOUtils.error(500, "UDI码格式错误!");
+        } else {
+            if (StrUtil.isNotEmpty(udiEntity.getUdi())) {
+                ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
+                productInfoFilterRequest.setNameCode(udiEntity.getUdi());
+                List<ProductInfoEntity> productInfoEntityList = productInfoService.filterProductInfo(productInfoFilterRequest);
+                if (CollUtil.isEmpty(productInfoEntityList)) {
+                    return ResultVOUtils.error(500, "未查询到该UDI码国家库产品信息!");
+                } else {
+                    ProductInfoEntity productInfoEntity = productInfoEntityList.get(0);
+                    String lostMsg = "";
+                    boolean checkSuccess = true;
+                    if ("是".equals(productInfoEntity.getScbssfbhph()) && StrUtil.isEmpty(udiEntity.getBatchNo())) {
+                        checkSuccess = false;
+                        lostMsg = lostMsg + ",批次号";
+                    }
+                    if ("是".equals(productInfoEntity.getScbssfbhscrq()) && StrUtil.isEmpty(udiEntity.getProduceDate())) {
+                        checkSuccess = false;
+                        lostMsg = lostMsg + ",生产日期";
+                    }
+
+                    if ("是".equals(productInfoEntity.getScbssfbhsxrq()) && StrUtil.isEmpty(udiEntity.getExpireDate())) {
+                        checkSuccess = false;
+                        lostMsg = lostMsg + ",失效日期";
+                    }
+                    if (("是".equals(productInfoEntity.getScbssfbhxlh()) && StrUtil.isEmpty(udiEntity.getSerialNo()))
+                    ) {
+                        checkSuccess = false;
+                        lostMsg = lostMsg + ",序列号";
+                    }
+                    if (StrUtil.isNotEmpty(udiEntity.getSerialNo()) && udiEntity.getSerialNo().length() > 20) {
+                        return ResultVOUtils.error(504, "序列号超出20位!");
+                    }
+                    if (StrUtil.isNotEmpty(udiEntity.getBatchNo()) && udiEntity.getBatchNo().length() > 20) {
+                        return ResultVOUtils.error(504, "批次号超出20位!");
+                    }
+                    if (StrUtil.isEmpty(udiEntity.getSerialNo()) && StrUtil.isEmpty(udiEntity.getBatchNo())) {
+                        checkSuccess = false;
+                    }
+                    if (checkSuccess) {
+                        return ResultVOUtils.success(productInfoEntity);
+                    } else {
+                        return ResultVOUtils.error(500, "UDI码格式错误,缺少"+lostMsg.substring(1));
+                    }
+                }
+            } else {
+                return ResultVOUtils.error(500, "UDI码格式错误!");
+            }
+        }
+
+    }
 }
diff --git a/src/main/java/com/glxp/udidl/admin/res/udid/VailUdiReponse.java b/src/main/java/com/glxp/udidl/admin/res/udid/VailUdiReponse.java
new file mode 100644
index 0000000..fcac0f6
--- /dev/null
+++ b/src/main/java/com/glxp/udidl/admin/res/udid/VailUdiReponse.java
@@ -0,0 +1,10 @@
+package com.glxp.udidl.admin.res.udid;
+
+import com.glxp.udidl.admin.entity.udi.ProductInfoEntity;
+import lombok.Data;
+
+@Data
+public class VailUdiReponse {
+    private String errMsg;
+    private ProductInfoEntity productInfoEntity;
+}
diff --git a/src/main/java/com/glxp/udidl/admin/util/gs1/Gs1128Utils.java b/src/main/java/com/glxp/udidl/admin/util/gs1/Gs1128Utils.java
index 91566e0..264a5a7 100644
--- a/src/main/java/com/glxp/udidl/admin/util/gs1/Gs1128Utils.java
+++ b/src/main/java/com/glxp/udidl/admin/util/gs1/Gs1128Utils.java
@@ -7,53 +7,55 @@ import java.util.Iterator;
  */
 final class Gs1128Utils {
 
-  public static final String PREFIX = "]C1";
-  public static final char END_AI_VARIED = (char) 29;
-
-  private Gs1128Utils() {
-    super();
-  }
-
-  public static Iterator<Character> iterator(String value) {
-    return value.chars().mapToObj(c -> (char) c).iterator();
-  }
-
-  public static String value(AI ai, Iterator<Character> iterator) {
-    Format format = Format.valueOf(ai.getFormat());
-    if (format.isVaried()) {
-      return variedValue(iterator);
-    } else {
-      return fixedValue(format.getLength(), iterator);
+    public static final String PREFIX = "]C1";
+    public static final char END_AI_VARIED = (char) 29;
+
+    private Gs1128Utils() {
+        super();
+    }
+
+    public static Iterator<Character> iterator(String value) {
+        return value.chars().mapToObj(c -> (char) c).iterator();
     }
-  }
-
-  public static String value(Session session, String value) {
-    Iterator<Character> iterator = iterator(value);
-    if (session.isVaried()) {
-      return variedValue(iterator);
-    } else {
-      return fixedValue(session.getLength(), iterator);
+
+    public static String value(AI ai, Iterator<Character> iterator) {
+        Format format = Format.valueOf(ai.getFormat());
+        if (format.isVaried()) {
+            return variedValue(iterator);
+        } else {
+            return fixedValue(format.getLength(), iterator);
+        }
     }
-  }
 
-  private static String fixedValue(int size, Iterator<Character> iterator) {
-    StringBuilder builder = new StringBuilder();
-    for (int i = 0; i < size; i++) {
-      builder.append(iterator.next());
+    public static String value(Session session, String value) {
+        Iterator<Character> iterator = iterator(value);
+        if (session.isVaried()) {
+            return variedValue(iterator);
+        } else {
+            return fixedValue(session.getLength(), iterator);
+        }
     }
-    return builder.toString();
-  }
-
-  private static String variedValue(Iterator<Character> iterator) {
-    StringBuilder builder = new StringBuilder();
-    while (iterator.hasNext()) {
-      char value = iterator.next();
-      if (value == END_AI_VARIED) {
-        break;
-      }
-      builder.append(value);
+
+    private static String fixedValue(int size, Iterator<Character> iterator) {
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < size; i++) {
+            if (iterator.hasNext()) {
+                builder.append(iterator.next());
+            }
+        }
+        return builder.toString();
+    }
+
+    private static String variedValue(Iterator<Character> iterator) {
+        StringBuilder builder = new StringBuilder();
+        while (iterator.hasNext()) {
+            char value = iterator.next();
+            if (value == END_AI_VARIED) {
+                break;
+            }
+            builder.append(value);
+        }
+        return builder.toString();
     }
-    return builder.toString();
-  }
 
 }

From 91d0fa441df0089f07232aecc69beebc7b6fd001 Mon Sep 17 00:00:00 2001
From: anthonyywj2 <353682448@qq.com>
Date: Tue, 25 Oct 2022 10:04:51 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=A0=B9=E6=8D=AEUUID?=
 =?UTF-8?q?=E4=B8=8B=E8=BD=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/controller/device/UdidlDeviceController.java    | 7 +++++++
 .../udidl/admin/service/dataSync/DeviceSyncService.java   | 8 ++++++++
 2 files changed, 15 insertions(+)

diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/UdidlDeviceController.java b/src/main/java/com/glxp/udidl/admin/controller/device/UdidlDeviceController.java
index c664478..45b6164 100644
--- a/src/main/java/com/glxp/udidl/admin/controller/device/UdidlDeviceController.java
+++ b/src/main/java/com/glxp/udidl/admin/controller/device/UdidlDeviceController.java
@@ -129,6 +129,13 @@ public class UdidlDeviceController {
         return deviceSyncService.searchDlByDi(deviceId);
     }
 
+    @AuthRuleAnnotation("udidl_udidlByUuid_all")
+    @GetMapping("udidl/device/searchDlByUuid")
+    public BaseResponse searchDlByUuid(String uuid) {
+        return deviceSyncService.searchDlByUuid(uuid);
+    }
+
+
     /**
      * 获取产品标识详情
      *
diff --git a/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSyncService.java b/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSyncService.java
index 0ed9683..fd67560 100644
--- a/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSyncService.java
+++ b/src/main/java/com/glxp/udidl/admin/service/dataSync/DeviceSyncService.java
@@ -178,6 +178,14 @@ public class DeviceSyncService {
         return ResultVOUtils.success(productInfoEntityList);
     }
 
+    public BaseResponse searchDlByUuid(String uuid) {
+        ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
+        productInfoFilterRequest.setUuid(uuid);
+        List<ProductInfoEntity> productInfoEntityList = productInfoService.findAll(productInfoFilterRequest);
+        return ResultVOUtils.success(productInfoEntityList);
+    }
+
+
     public void dlHistory(DataSetSingleResult result1) {
 
         DataSetSingleHistoryResult result = new DataSetSingleHistoryResult();