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 8920ad4..c702a33 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") @@ -156,11 +159,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 d0e18fe..98dc008 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 9256579..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); + productInfoFilterRequest.setDiType("1"); + + 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/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 @@ + + + + + + + + +