diff --git a/src/main/java/com/glxp/udidl/admin/controller/device/UdiInfoController.java b/src/main/java/com/glxp/udidl/admin/controller/device/UdiInfoController.java index 5864df7..be1a706 100644 --- a/src/main/java/com/glxp/udidl/admin/controller/device/UdiInfoController.java +++ b/src/main/java/com/glxp/udidl/admin/controller/device/UdiInfoController.java @@ -1,6 +1,7 @@ package com.glxp.udidl.admin.controller.device; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; import com.glxp.udidl.admin.annotation.AuthRuleAnnotation; @@ -10,14 +11,17 @@ import com.glxp.udidl.admin.req.FilterUdiInfoRequest; import com.glxp.udidl.admin.req.ProductInfoFilterRequest; import com.glxp.udidl.admin.res.BaseResponse; import com.glxp.udidl.admin.res.PageSimpleResponse; +import com.glxp.udidl.admin.res.UdiAppResponse; import com.glxp.udidl.admin.service.dataSync.DeviceSyncService; import com.glxp.udidl.admin.service.inout.ProductInfoService; import com.glxp.udidl.admin.util.FilterUdiUtils; import com.glxp.udidl.admin.util.ResultVOUtils; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; import java.util.ArrayList; @@ -31,6 +35,96 @@ public class UdiInfoController { @Autowired DeviceSyncService deviceSyncService; + + @GetMapping("udi/basic/app/search") + public BaseResponse filterRel(FilterUdiInfoRequest filterUdiRelRequest) { + String nameCode; + if (StrUtil.isEmpty(filterUdiRelRequest.getUdiCode())) { + return ResultVOUtils.error(500, "UDI码不能为空!"); + } + UdiEntity udiEntity = FilterUdiUtils.getUdi(filterUdiRelRequest.getUdiCode()); + if (udiEntity != null) { + nameCode = udiEntity.getUdi(); + } else { + return ResultVOUtils.error(500, "无效UDI码!"); + } + if (StrUtil.isNotEmpty(nameCode)) { + filterUdiRelRequest.setNameCode(nameCode); + } else { + filterUdiRelRequest.setDiType(1); + } + + //查出UUID + ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest(); + productInfoFilterRequest.setNameCode(nameCode); + productInfoFilterRequest.setIsNewest(1); + List productInfoEntityList = productInfoService.filterUdiByNewest(productInfoFilterRequest); + if (CollUtil.isEmpty(productInfoEntityList)) { + ThreadUtil.execAsync(() -> { + deviceSyncService.searchDlByDi(productInfoFilterRequest.getNameCode()); + }); + return ResultVOUtils.error(500, "UDI码不存在,请检查后重试!"); + } + List results = productInfoService.selectByUuid(productInfoEntityList.get(0).getUuid()); + + boolean checkSuccess = true; + String lostMsg = ""; + if (udiEntity == null) { + return ResultVOUtils.error(500, "UDI码格式错误!"); + } else { + if (StrUtil.isNotEmpty(udiEntity.getUdi())) { + ProductInfoEntity productInfoEntity = productInfoEntityList.get(0); + 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) { + checkSuccess = false; + lostMsg = lostMsg + ",序列号超出20位"; + } + if (StrUtil.isNotEmpty(udiEntity.getBatchNo()) && udiEntity.getBatchNo().length() > 20) { + checkSuccess = false; + lostMsg = lostMsg + ",批次号超出20位"; + } + if (StrUtil.isEmpty(udiEntity.getSerialNo()) && StrUtil.isEmpty(udiEntity.getBatchNo())) { + lostMsg = lostMsg + ",UDI码批次号与序列号不能全为空!"; + checkSuccess = false; + } + if (checkSuccess) { + lostMsg = "校验成功!"; + } else { + lostMsg = lostMsg.substring(1); + } + for (ProductInfoEntity temp : results) { + temp.setBatchNo(udiEntity.getBatchNo()); + temp.setExpireDate(udiEntity.getExpireDate()); + temp.setProduceDate(udiEntity.getProduceDate()); + temp.setSerialNo(udiEntity.getSerialNo()); + } + } + } + UdiAppResponse udiAppResponse = new UdiAppResponse(); + udiAppResponse.setVailResult(checkSuccess); + udiAppResponse.setVailMsg(lostMsg); + udiAppResponse.setProductInfoEntities(results); + return ResultVOUtils.success(udiAppResponse); + } + + //获取同步库UDI信息 @AuthRuleAnnotation("") @GetMapping("udiwms/udiinfo/filterUdi") diff --git a/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java b/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java index c8f7e0f..7617a11 100644 --- a/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java +++ b/src/main/java/com/glxp/udidl/admin/entity/udi/ProductInfoEntity.java @@ -125,14 +125,6 @@ public class ProductInfoEntity { @ApiModelProperty(value = "医疗器械唯一标识编码体系名称") private String cpbsbmtxmc; - @ApiModelProperty(value = "批次号") - private String batchNo; - - @ApiModelProperty(value = "生产日期") - private String produceDate; - - @ApiModelProperty(value = "失效日期") - private String expireDate; @ApiModelProperty(value = "是否最新") private Boolean isNewest; @@ -166,5 +158,15 @@ public class ProductInfoEntity { @ApiModelProperty(value = "'分类编码名称'") private String categoryName; + //额外字段 + @ApiModelProperty(value = "批次号") + private String batchNo; + @ApiModelProperty(value = "生产日期") + private String produceDate; + @ApiModelProperty(value = "失效日期") + private String expireDate; + @ApiModelProperty(value = "序列号") + private String serialNo; + } diff --git a/src/main/java/com/glxp/udidl/admin/req/FilterUdiInfoRequest.java b/src/main/java/com/glxp/udidl/admin/req/FilterUdiInfoRequest.java index 758e64f..7650c95 100644 --- a/src/main/java/com/glxp/udidl/admin/req/FilterUdiInfoRequest.java +++ b/src/main/java/com/glxp/udidl/admin/req/FilterUdiInfoRequest.java @@ -63,4 +63,6 @@ public class FilterUdiInfoRequest extends ListPageRequest { private Boolean groupBuy; private Boolean dispatch; + private String udiCode; + } diff --git a/src/main/java/com/glxp/udidl/admin/res/UdiAppResponse.java b/src/main/java/com/glxp/udidl/admin/res/UdiAppResponse.java new file mode 100644 index 0000000..3627199 --- /dev/null +++ b/src/main/java/com/glxp/udidl/admin/res/UdiAppResponse.java @@ -0,0 +1,14 @@ +package com.glxp.udidl.admin.res; + +import com.glxp.udidl.admin.entity.udi.ProductInfoEntity; +import lombok.Data; + +import java.util.List; + +@Data +public class UdiAppResponse { + private Boolean vailResult; + private String vailMsg; + List productInfoEntities; + +} 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 cc45876..a6f49ed 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 @@ -147,8 +147,10 @@ public class ProductInfoServiceImpl implements ProductInfoService { @Override public List syncDlUdi(ProductInfoFilterRequest productInfoFilterRequest) { - int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit() + 1; - productInfoFilterRequest.setPage(offset); + if (productInfoFilterRequest.getPage() != null) { + int offset = (productInfoFilterRequest.getPage() - 1) * productInfoFilterRequest.getLimit() + 1; + productInfoFilterRequest.setPage(offset); + } return productInfoDao.syncDlUdi(productInfoFilterRequest); } @@ -221,4 +223,4 @@ public class ProductInfoServiceImpl implements ProductInfoService { return productInfoDao.deleteAll(ids); } -} \ No newline at end of file +}