diff --git a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/ProductInfoDao.java b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/ProductInfoDao.java index e265abbe..3d25d50e 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/dao/basic/ProductInfoDao.java +++ b/api-admin/src/main/java/com/glxp/api/admin/dao/basic/ProductInfoDao.java @@ -44,6 +44,12 @@ 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/api/admin/req/receipt/ProductInfoFilterRequest.java b/api-admin/src/main/java/com/glxp/api/admin/req/receipt/ProductInfoFilterRequest.java index e94fa267..bb2c90e3 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/req/receipt/ProductInfoFilterRequest.java +++ b/api-admin/src/main/java/com/glxp/api/admin/req/receipt/ProductInfoFilterRequest.java @@ -23,4 +23,8 @@ 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/api/admin/service/basic/ProductInfoService.java b/api-admin/src/main/java/com/glxp/api/admin/service/basic/ProductInfoService.java index 3bd61b95..e9cda1ff 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/basic/ProductInfoService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/basic/ProductInfoService.java @@ -27,6 +27,11 @@ 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/api/admin/service/basic/SyncUdiService.java b/api-admin/src/main/java/com/glxp/api/admin/service/basic/SyncUdiService.java index 972948da..a0ed9b6e 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/basic/SyncUdiService.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/basic/SyncUdiService.java @@ -7,6 +7,7 @@ import com.glxp.api.admin.entity.basic.UdiCompanyEntity; import com.glxp.api.admin.req.basic.UdiCompanyRequest; import com.glxp.api.admin.req.receipt.ProductInfoFilterRequest; import com.glxp.api.admin.res.PageSimpleResponse; +import com.glxp.api.admin.util.RedisUtil; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import org.springframework.stereotype.Service; @@ -24,6 +25,9 @@ public class SyncUdiService { @Resource UdiCompanyService udiCompanyService; + @Resource + RedisUtil redisUtil; + public BaseResponse filterUdi(ProductInfoFilterRequest productInfoFilterRequest) { //过滤--1.参数不能全未空 @@ -60,10 +64,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, "请输入医疗器械注册备案人名称"); @@ -73,13 +79,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/api/admin/service/basic/impl/ProductInfoServiceImpl.java b/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/ProductInfoServiceImpl.java index 69021d55..05800467 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/ProductInfoServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/api/admin/service/basic/impl/ProductInfoServiceImpl.java @@ -5,6 +5,7 @@ import com.glxp.api.admin.dao.basic.ProductInfoDao; import com.glxp.api.admin.entity.basic.ProductInfoEntity; import com.glxp.api.admin.req.receipt.ProductInfoFilterRequest; import com.glxp.api.admin.service.basic.ProductInfoService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -112,6 +113,38 @@ public class ProductInfoServiceImpl implements ProductInfoService { return data; } + @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 selectByUuid(String uuid) { List data = productInfoDao.selectByUuid(uuid); diff --git a/api-admin/src/main/java/com/glxp/api/admin/util/RedisUtil.java b/api-admin/src/main/java/com/glxp/api/admin/util/RedisUtil.java index 0d35a081..66609310 100644 --- a/api-admin/src/main/java/com/glxp/api/admin/util/RedisUtil.java +++ b/api-admin/src/main/java/com/glxp/api/admin/util/RedisUtil.java @@ -1,6 +1,7 @@ package com.glxp.api.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; @@ -574,4 +575,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/mybatis/mapper/basic/ProductInfoDao.xml b/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml index d1e2df6a..b4284f4c 100644 --- a/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/basic/ProductInfoDao.xml @@ -258,6 +258,103 @@ + + + + + + + +