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();