From 0eef8390f3f90200151a6de4f9b26ad393d9b0e8 Mon Sep 17 00:00:00 2001 From: anthonyywj2 <353682448@qq.com> Date: Tue, 23 Aug 2022 16:45:27 +0800 Subject: [PATCH] =?UTF-8?q?UDI=E5=90=8C=E6=AD=A5=E5=BA=93=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2i=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/ProductInfoController.java | 24 ++++- .../controller/basic/UdiInfoController.java | 1 - .../sale/admin/dao/basic/ProductInfoDao.java | 4 + .../req/receipt/ProductInfoFilterRequest.java | 5 + .../service/receipt/ProductInfoService.java | 4 + .../admin/service/receipt/SyncUdiService.java | 36 +++++-- .../receipt/impl/ProductInfoServiceImpl.java | 37 ++++++- .../com/glxp/sale/admin/util/RedisUtil.java | 14 ++- .../main/resources/application-dev.properties | 7 +- .../mybatis/mapper/basic/ProductInfoDao.xml | 96 +++++++++++++++++++ 10 files changed, 202 insertions(+), 26 deletions(-) diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/ProductInfoController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/ProductInfoController.java index 4fddb97..78ffa49 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/ProductInfoController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/ProductInfoController.java @@ -1,5 +1,6 @@ package com.glxp.sale.admin.controller.basic; +import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.sale.admin.entity.receipt.ProductInfoEntity; import com.glxp.sale.admin.entity.udid.UdiEntity; @@ -8,6 +9,7 @@ import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.res.inout.ProductInfoResponse; import com.glxp.sale.admin.service.receipt.ProductInfoService; import com.glxp.sale.admin.util.FilterUdiUtils; +import com.glxp.sale.admin.util.RedisUtil; import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.util.ResultVOUtils; import org.springframework.web.bind.annotation.GetMapping; @@ -24,7 +26,8 @@ import java.util.stream.Collectors; public class ProductInfoController { @Resource ProductInfoService productInfoService; - + @Resource + RedisUtil redisUtil; //手持枪扫码查询 @GetMapping("udidl/device/findBydi") @@ -160,11 +163,22 @@ public class ProductInfoController { } productInfoFilterRequest.setIsNewest(1); productInfoFilterRequest.setDiType("1"); - List productInfoEntityList = productInfoService.filterUdi(productInfoFilterRequest); - PageInfo 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); + } else { + total = Long.parseLong(totalStr); + } + List productInfoEntityList = productInfoService.filterUdiNoPage(productInfoFilterRequest); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); - pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setTotal(total); pageSimpleResponse.setList(productInfoEntityList); return ResultVOUtils.success(pageSimpleResponse); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/UdiInfoController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/UdiInfoController.java index 1798ac9..e0ccfb3 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/UdiInfoController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/basic/UdiInfoController.java @@ -86,7 +86,6 @@ public class UdiInfoController { productInfoFilterRequest.setNameCode(nameCode); try { BaseResponse> udiDlDeviceResponse = syncUdiService.filterUdi(productInfoFilterRequest); - if (udiDlDeviceResponse.getCode() != 20000) { return udiDlDeviceResponse; } else if (filterUdiInfoRequest.getIsCheck() != null && filterUdiInfoRequest.getIsCheck()) { diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/ProductInfoDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/ProductInfoDao.java index 341c305..4143146 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/ProductInfoDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/basic/ProductInfoDao.java @@ -43,6 +43,10 @@ public interface ProductInfoDao { List filterUdi(ProductInfoFilterRequest productInfoFilterRequest); + List filterUdiNoPage(ProductInfoFilterRequest productInfoFilterRequest); + + Long filterUdiNoPageCount(ProductInfoFilterRequest productInfoFilterRequest); + List syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest); List filterUuidByCreditNo(ProductInfoFilterRequest productInfoFilterRequest); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/req/receipt/ProductInfoFilterRequest.java b/api-admin/src/main/java/com/glxp/sale/admin/req/receipt/ProductInfoFilterRequest.java index f437db9..478b395 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/req/receipt/ProductInfoFilterRequest.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/req/receipt/ProductInfoFilterRequest.java @@ -20,4 +20,9 @@ public class ProductInfoFilterRequest extends ListPageRequest { private Integer isNewest; private String zczbhhzbapzbh; private String updateTime; + + + public String toCacheKey() { + return nameCode + deviceRecordKey + uuid + cpmctymc + ylqxzcrbarmc + ggxh + tyshxydm + diType + zczbhhzbapzbh + updateTime; + } } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/ProductInfoService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/ProductInfoService.java index 84fe67e..357b069 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/ProductInfoService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/ProductInfoService.java @@ -27,6 +27,10 @@ public interface ProductInfoService { List filterUdi(ProductInfoFilterRequest productInfoFilterRequest); + List filterUdiNoPage(ProductInfoFilterRequest productInfoFilterRequest); + + Long filterUdiNoPageCount(ProductInfoFilterRequest productInfoFilterRequest); + List selectByUuid(String uuid); List syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/SyncUdiService.java b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/SyncUdiService.java index 88a9538..9f46172 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/SyncUdiService.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/SyncUdiService.java @@ -9,6 +9,7 @@ import com.glxp.sale.admin.req.basic.UdiCompanyRequest; import com.glxp.sale.admin.req.receipt.ProductInfoFilterRequest; import com.glxp.sale.admin.res.PageSimpleResponse; import com.glxp.sale.admin.service.basic.UdiCompanyService; +import com.glxp.sale.admin.util.RedisUtil; import com.glxp.sale.common.enums.ResultEnum; import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.util.ResultVOUtils; @@ -27,6 +28,8 @@ public class SyncUdiService { ProductInfoService productInfoService; @Resource UdiCompanyService udiCompanyService; + @Resource + RedisUtil redisUtil; public BaseResponse filterUdi(ProductInfoFilterRequest productInfoFilterRequest) { @@ -64,10 +67,12 @@ public class SyncUdiService { return ResultVOUtils.error(500, "请输入医疗器械注册备案人名称"); } } - if ( - StrUtil.isEmpty(productInfoFilterRequest.getYlqxzcrbarmc()) - && (productInfoFilterRequest.getNameCode() == null || productInfoFilterRequest.getNameCode().equals("")) - && (productInfoFilterRequest.getCpmctymc() == null || productInfoFilterRequest.getCpmctymc().equals("")) + + + if ((productInfoFilterRequest.getYlqxzcrbarmc() == null || productInfoFilterRequest.getYlqxzcrbarmc().equals("")) + && (productInfoFilterRequest.getNameCode() == null || productInfoFilterRequest.getNameCode().equals("")) + && (productInfoFilterRequest.getCpmctymc() == null || productInfoFilterRequest.getCpmctymc().equals("")) + ) { if (productInfoFilterRequest.getGgxh() != null && !productInfoFilterRequest.getGgxh().equals("")) { return ResultVOUtils.error(500, "请输入医疗器械注册备案人名称"); @@ -77,13 +82,28 @@ public class SyncUdiService { } } + if (productInfoFilterRequest.getCpmctymc() != null && !productInfoFilterRequest.getCpmctymc().equals("") && productInfoFilterRequest.getCpmctymc().length() < 4) { + return ResultVOUtils.error(500, "请输入完整的产品通用名称!"); + } productInfoFilterRequest.setIsNewest(1); productInfoFilterRequest.setDiType("1"); - List productInfoEntityList = productInfoService.filterUdi(productInfoFilterRequest); - PageInfo 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 productInfoEntityList = productInfoService.filterUdiNoPage(productInfoFilterRequest); PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); - pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setTotal(total); pageSimpleResponse.setList(productInfoEntityList); return ResultVOUtils.success(pageSimpleResponse); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/impl/ProductInfoServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/impl/ProductInfoServiceImpl.java index 320bf4a..5e3ac50 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/impl/ProductInfoServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/receipt/impl/ProductInfoServiceImpl.java @@ -5,6 +5,7 @@ import com.glxp.sale.admin.dao.basic.ProductInfoDao; import com.glxp.sale.admin.entity.receipt.ProductInfoEntity; import com.glxp.sale.admin.req.receipt.ProductInfoFilterRequest; import com.glxp.sale.admin.service.receipt.ProductInfoService; +import com.glxp.sale.admin.util.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -98,6 +99,38 @@ public class ProductInfoServiceImpl implements ProductInfoService { return null; } + @Override + public List 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 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 filterUdi(ProductInfoFilterRequest productInfoFilterRequest) { if (productInfoFilterRequest == null) { @@ -121,10 +154,6 @@ public class ProductInfoServiceImpl implements ProductInfoService { @Override public List syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest) { -// if (productInfoFilterRequest.getPage() != null) { -// int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit(); -// PageHelper.offsetPage(offset, productInfoFilterRequest.getLimit()); -// } int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit(); productInfoFilterRequest.setPage(offset); productInfoFilterRequest.setLimit(productInfoFilterRequest.getLimit()); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/util/RedisUtil.java b/api-admin/src/main/java/com/glxp/sale/admin/util/RedisUtil.java index d29b74b..7b77d43 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/util/RedisUtil.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/util/RedisUtil.java @@ -1,6 +1,7 @@ package com.glxp.sale.admin.util; +import cn.hutool.core.collection.CollUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -11,11 +12,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; -/** - * redisTemplate封装 - * - * @author zjjlive@dist.com.cn - */ @Component public class RedisUtil { @@ -574,4 +570,12 @@ public class RedisUtil { } } + //模糊匹配删除 + public void deleteByPrex(String prex) { + Set keys = redisTemplate.keys(prex); + if (CollUtil.isNotEmpty(keys)) { + redisTemplate.delete(keys); + } + } + } diff --git a/api-admin/src/main/resources/application-dev.properties b/api-admin/src/main/resources/application-dev.properties index 33403b4..be5bcd5 100644 --- a/api-admin/src/main/resources/application-dev.properties +++ b/api-admin/src/main/resources/application-dev.properties @@ -1,9 +1,9 @@ # \u751F\u4EA7\u73AF\u5883 server.port=9906 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/spms_za?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true +spring.datasource.jdbc-url=jdbc:mysql://192.168.0.66:3360/spms?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true spring.datasource.username=root -spring.datasource.password=123456 +spring.datasource.password=root #spring.datasource.password=123456 spring.datasource.hikari.connection-timeout=60000 spring.datasource.hikari.maximum-pool-size=60 @@ -32,7 +32,8 @@ logging.level.com.glxp.api.admin.dao.thrsys=debug #file_path=/home/glxpdata/udiwms file_path=D:/glxpdata/udiwms UDI_KEY=6b137c66-6286-46c6-8efa-c2f5dd9237df -UDI_SERVER_URL=https://www.udims.com/UDI_DL_Server_test +#UDI_SERVER_URL=https://www.udims.com/UDI_DL_Server_test +UDI_SERVER_URL=http://127.0.0.1:9994 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 spring.main.allow-bean-definition-overriding=true diff --git a/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml index 9c08699..8433a39 100644 --- a/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml @@ -259,8 +259,104 @@ + + + + + + + + +