diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 6847052..9fecb82 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,6 +38,11 @@ junit junit + + + com.gg.reader + greader-api + \ No newline at end of file diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 6847052..9fecb82 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,6 +38,11 @@ junit junit + + + com.gg.reader + greader-api + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java new file mode 100644 index 0000000..fedffda --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -0,0 +1,116 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.customer.CustomerSampleMapper; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import com.casic.missiles.utils.ConvertUtils; +import com.gg.reader.api.dal.GClient; +import com.gg.reader.api.dal.HandlerTagEpcLog; +import com.gg.reader.api.dal.HandlerTagEpcOver; +import com.gg.reader.api.protocol.gx.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @Description: 读写器相关业务 + * @Author: wangpeng + * @Date: 2023/3/18 11:53 + */ +@Service +@Slf4j +public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { + @Autowired + private CustomerSampleMapper sampleMapper; + + @Override + public ReturnDTO> readList() { + GClient client = new GClient(); + try { + //if (client.openSerial("COM11:115200", 2000)) + if (!client.openTcp("192.168.1.168:8160", 0)) { + throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + } + Set tids = new HashSet<>(); + //标签上报事件、结束事件订阅 + eventSubscribe(tids, client); + + // 4个天线读卡, 读取EPC数据区以及TID数据区 + MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc(); + msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1 | EnumG.AntennaNo_2 | EnumG.AntennaNo_3 | EnumG.AntennaNo_4); + // 0: 单次读取模式,读写器尽在各个使能的天线上进行一轮读卡操作便结束读卡操作并自动进入空闲状态 + // 1: 连续读取模式,读写器一直进行读卡操作直到读写器收到停止指令后结束读卡 + msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory); + ParamEpcReadTid tid = new ParamEpcReadTid(); + tid.setMode(EnumG.ParamTidMode_Auto); + tid.setLen(6); + msgBaseInventoryEpc.setReadTid(tid); + client.sendSynMsg(msgBaseInventoryEpc); + if (0 == msgBaseInventoryEpc.getRtCode()) { + log.info("EPC、TID标签读取成功"); + } else { + log.info("EPC、TID标签读取失败"); + client.close(); + throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + } + //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) + TimeUnit.SECONDS.sleep(3); + // 停止指令,空闲态 + MsgBaseStop msgBaseStop = new MsgBaseStop(); + client.sendSynMsg(msgBaseStop); + if (0 == msgBaseStop.getRtCode()) { + log.info("EPC、TID标签停止读取成功"); + } else { + log.info("EPC、TID标签停止读取失败"); + } + //查询标签样品信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("label_bind", tids); + wrapper.eq("is_del", 0); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return ReturnUtil.success(resultList); + } catch (InterruptedException e) { + log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); + return ReturnUtil.failed(); + } finally { + client.close(); + } + } + + private void eventSubscribe(Set set, GClient client) { + // 订阅标签上报事件 + client.onTagEpcLog = new HandlerTagEpcLog() { + @Override + public void log(String readName, LogBaseEpcInfo logBaseEpcInfo) { + // 回调内部如有阻塞,会影响API正常使用 + // 标签回调数量较多,请将标签数据先缓存起来再作业务处理 + if (null != logBaseEpcInfo && 0 == logBaseEpcInfo.getResult()) { + System.out.println(logBaseEpcInfo); + set.add(logBaseEpcInfo.getTid()); + } + } + }; + // 上报结束事件 + client.onTagEpcOver = new HandlerTagEpcOver() { + @Override + public void log(String readName, LogBaseEpcOver logBaseEpcOver) { + if (null != logBaseEpcOver) { + System.out.println("Epc log over."); + } + } + }; + } + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 6847052..9fecb82 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,6 +38,11 @@ junit junit + + + com.gg.reader + greader-api + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java new file mode 100644 index 0000000..fedffda --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -0,0 +1,116 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.customer.CustomerSampleMapper; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import com.casic.missiles.utils.ConvertUtils; +import com.gg.reader.api.dal.GClient; +import com.gg.reader.api.dal.HandlerTagEpcLog; +import com.gg.reader.api.dal.HandlerTagEpcOver; +import com.gg.reader.api.protocol.gx.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @Description: 读写器相关业务 + * @Author: wangpeng + * @Date: 2023/3/18 11:53 + */ +@Service +@Slf4j +public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { + @Autowired + private CustomerSampleMapper sampleMapper; + + @Override + public ReturnDTO> readList() { + GClient client = new GClient(); + try { + //if (client.openSerial("COM11:115200", 2000)) + if (!client.openTcp("192.168.1.168:8160", 0)) { + throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + } + Set tids = new HashSet<>(); + //标签上报事件、结束事件订阅 + eventSubscribe(tids, client); + + // 4个天线读卡, 读取EPC数据区以及TID数据区 + MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc(); + msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1 | EnumG.AntennaNo_2 | EnumG.AntennaNo_3 | EnumG.AntennaNo_4); + // 0: 单次读取模式,读写器尽在各个使能的天线上进行一轮读卡操作便结束读卡操作并自动进入空闲状态 + // 1: 连续读取模式,读写器一直进行读卡操作直到读写器收到停止指令后结束读卡 + msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory); + ParamEpcReadTid tid = new ParamEpcReadTid(); + tid.setMode(EnumG.ParamTidMode_Auto); + tid.setLen(6); + msgBaseInventoryEpc.setReadTid(tid); + client.sendSynMsg(msgBaseInventoryEpc); + if (0 == msgBaseInventoryEpc.getRtCode()) { + log.info("EPC、TID标签读取成功"); + } else { + log.info("EPC、TID标签读取失败"); + client.close(); + throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + } + //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) + TimeUnit.SECONDS.sleep(3); + // 停止指令,空闲态 + MsgBaseStop msgBaseStop = new MsgBaseStop(); + client.sendSynMsg(msgBaseStop); + if (0 == msgBaseStop.getRtCode()) { + log.info("EPC、TID标签停止读取成功"); + } else { + log.info("EPC、TID标签停止读取失败"); + } + //查询标签样品信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("label_bind", tids); + wrapper.eq("is_del", 0); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return ReturnUtil.success(resultList); + } catch (InterruptedException e) { + log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); + return ReturnUtil.failed(); + } finally { + client.close(); + } + } + + private void eventSubscribe(Set set, GClient client) { + // 订阅标签上报事件 + client.onTagEpcLog = new HandlerTagEpcLog() { + @Override + public void log(String readName, LogBaseEpcInfo logBaseEpcInfo) { + // 回调内部如有阻塞,会影响API正常使用 + // 标签回调数量较多,请将标签数据先缓存起来再作业务处理 + if (null != logBaseEpcInfo && 0 == logBaseEpcInfo.getResult()) { + System.out.println(logBaseEpcInfo); + set.add(logBaseEpcInfo.getTid()); + } + } + }; + // 上报结束事件 + client.onTagEpcOver = new HandlerTagEpcOver() { + @Override + public void log(String readName, LogBaseEpcOver logBaseEpcOver) { + if (null != logBaseEpcOver) { + System.out.println("Epc log over."); + } + } + }; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java new file mode 100644 index 0000000..9deaa4b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:52 + */ +public interface IBusinessReadWriterService { + + ReturnDTO> readList(); +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 6847052..9fecb82 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,6 +38,11 @@ junit junit + + + com.gg.reader + greader-api + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java new file mode 100644 index 0000000..fedffda --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -0,0 +1,116 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.customer.CustomerSampleMapper; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import com.casic.missiles.utils.ConvertUtils; +import com.gg.reader.api.dal.GClient; +import com.gg.reader.api.dal.HandlerTagEpcLog; +import com.gg.reader.api.dal.HandlerTagEpcOver; +import com.gg.reader.api.protocol.gx.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @Description: 读写器相关业务 + * @Author: wangpeng + * @Date: 2023/3/18 11:53 + */ +@Service +@Slf4j +public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { + @Autowired + private CustomerSampleMapper sampleMapper; + + @Override + public ReturnDTO> readList() { + GClient client = new GClient(); + try { + //if (client.openSerial("COM11:115200", 2000)) + if (!client.openTcp("192.168.1.168:8160", 0)) { + throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + } + Set tids = new HashSet<>(); + //标签上报事件、结束事件订阅 + eventSubscribe(tids, client); + + // 4个天线读卡, 读取EPC数据区以及TID数据区 + MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc(); + msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1 | EnumG.AntennaNo_2 | EnumG.AntennaNo_3 | EnumG.AntennaNo_4); + // 0: 单次读取模式,读写器尽在各个使能的天线上进行一轮读卡操作便结束读卡操作并自动进入空闲状态 + // 1: 连续读取模式,读写器一直进行读卡操作直到读写器收到停止指令后结束读卡 + msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory); + ParamEpcReadTid tid = new ParamEpcReadTid(); + tid.setMode(EnumG.ParamTidMode_Auto); + tid.setLen(6); + msgBaseInventoryEpc.setReadTid(tid); + client.sendSynMsg(msgBaseInventoryEpc); + if (0 == msgBaseInventoryEpc.getRtCode()) { + log.info("EPC、TID标签读取成功"); + } else { + log.info("EPC、TID标签读取失败"); + client.close(); + throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + } + //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) + TimeUnit.SECONDS.sleep(3); + // 停止指令,空闲态 + MsgBaseStop msgBaseStop = new MsgBaseStop(); + client.sendSynMsg(msgBaseStop); + if (0 == msgBaseStop.getRtCode()) { + log.info("EPC、TID标签停止读取成功"); + } else { + log.info("EPC、TID标签停止读取失败"); + } + //查询标签样品信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("label_bind", tids); + wrapper.eq("is_del", 0); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return ReturnUtil.success(resultList); + } catch (InterruptedException e) { + log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); + return ReturnUtil.failed(); + } finally { + client.close(); + } + } + + private void eventSubscribe(Set set, GClient client) { + // 订阅标签上报事件 + client.onTagEpcLog = new HandlerTagEpcLog() { + @Override + public void log(String readName, LogBaseEpcInfo logBaseEpcInfo) { + // 回调内部如有阻塞,会影响API正常使用 + // 标签回调数量较多,请将标签数据先缓存起来再作业务处理 + if (null != logBaseEpcInfo && 0 == logBaseEpcInfo.getResult()) { + System.out.println(logBaseEpcInfo); + set.add(logBaseEpcInfo.getTid()); + } + } + }; + // 上报结束事件 + client.onTagEpcOver = new HandlerTagEpcOver() { + @Override + public void log(String readName, LogBaseEpcOver logBaseEpcOver) { + if (null != logBaseEpcOver) { + System.out.println("Epc log over."); + } + } + }; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java new file mode 100644 index 0000000..9deaa4b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:52 + */ +public interface IBusinessReadWriterService { + + ReturnDTO> readList(); +} diff --git a/lib/reader.jar b/lib/reader.jar new file mode 100644 index 0000000..0fe78e6 --- /dev/null +++ b/lib/reader.jar Binary files differ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java index 28d4f04..da43bd4 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessDispatchController.java @@ -13,12 +13,10 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.business.BusinessOrder; -import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessDispatchService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java new file mode 100644 index 0000000..689066e --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -0,0 +1,39 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @Description: 读写器 + * @Author: wangpeng + * @Date: 2023/3/18 11:50 + */ + +@Api(tags = "读写器业务相关接口") +@Slf4j +@RestController +@RequestMapping("/business/readWriter") +public class BusinessReadWriterController { + @Autowired + private IBusinessReadWriterService readWriterService; + + /** + * 读取读写器获取标签信息、业务信息(新建委托书和待收入中使用,新建委托书中增加通过读写器获取样品按钮) + */ + @ApiOperation("获取读写器识别的样品列表") + @GetMapping("/readList") + public ReturnDTO> readList() { + return readWriterService.readList(); + } + +} diff --git a/casic-metering-api/src/main/resources/config/application-dev.yml b/casic-metering-api/src/main/resources/config/application-dev.yml index 827004b..82e663a 100644 --- a/casic-metering-api/src/main/resources/config/application-dev.yml +++ b/casic-metering-api/src/main/resources/config/application-dev.yml @@ -20,7 +20,7 @@ # store-type: redis casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: /**/**,${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/v2/api-docs,/v2/api-docs-ext,/doc.html,/webjars/**,/swagger-ui.html,/swagger-resources #flowable数据源和多数据源配置 db: init: diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index ad850a4..6f8704b 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -59,7 +59,11 @@ NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"), AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), - CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"); + CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + + FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"); + private Integer code; private String message; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java new file mode 100644 index 0000000..1719e9b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/dispatch/ReadSampleDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business.dispatch; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:43 + */ +@Data +public class ReadSampleDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; +} diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 6847052..9fecb82 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,6 +38,11 @@ junit junit + + + com.gg.reader + greader-api + \ No newline at end of file diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java new file mode 100644 index 0000000..fedffda --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -0,0 +1,116 @@ +package com.casic.missiles.service.Impl.business; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.customer.CustomerSampleMapper; +import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.service.business.IBusinessReadWriterService; +import com.casic.missiles.utils.ConvertUtils; +import com.gg.reader.api.dal.GClient; +import com.gg.reader.api.dal.HandlerTagEpcLog; +import com.gg.reader.api.dal.HandlerTagEpcOver; +import com.gg.reader.api.protocol.gx.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * @Description: 读写器相关业务 + * @Author: wangpeng + * @Date: 2023/3/18 11:53 + */ +@Service +@Slf4j +public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { + @Autowired + private CustomerSampleMapper sampleMapper; + + @Override + public ReturnDTO> readList() { + GClient client = new GClient(); + try { + //if (client.openSerial("COM11:115200", 2000)) + if (!client.openTcp("192.168.1.168:8160", 0)) { + throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + } + Set tids = new HashSet<>(); + //标签上报事件、结束事件订阅 + eventSubscribe(tids, client); + + // 4个天线读卡, 读取EPC数据区以及TID数据区 + MsgBaseInventoryEpc msgBaseInventoryEpc = new MsgBaseInventoryEpc(); + msgBaseInventoryEpc.setAntennaEnable(EnumG.AntennaNo_1 | EnumG.AntennaNo_2 | EnumG.AntennaNo_3 | EnumG.AntennaNo_4); + // 0: 单次读取模式,读写器尽在各个使能的天线上进行一轮读卡操作便结束读卡操作并自动进入空闲状态 + // 1: 连续读取模式,读写器一直进行读卡操作直到读写器收到停止指令后结束读卡 + msgBaseInventoryEpc.setInventoryMode(EnumG.InventoryMode_Inventory); + ParamEpcReadTid tid = new ParamEpcReadTid(); + tid.setMode(EnumG.ParamTidMode_Auto); + tid.setLen(6); + msgBaseInventoryEpc.setReadTid(tid); + client.sendSynMsg(msgBaseInventoryEpc); + if (0 == msgBaseInventoryEpc.getRtCode()) { + log.info("EPC、TID标签读取成功"); + } else { + log.info("EPC、TID标签读取失败"); + client.close(); + throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + } + //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) + TimeUnit.SECONDS.sleep(3); + // 停止指令,空闲态 + MsgBaseStop msgBaseStop = new MsgBaseStop(); + client.sendSynMsg(msgBaseStop); + if (0 == msgBaseStop.getRtCode()) { + log.info("EPC、TID标签停止读取成功"); + } else { + log.info("EPC、TID标签停止读取失败"); + } + //查询标签样品信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("label_bind", tids); + wrapper.eq("is_del", 0); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return ReturnUtil.success(resultList); + } catch (InterruptedException e) { + log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); + return ReturnUtil.failed(); + } finally { + client.close(); + } + } + + private void eventSubscribe(Set set, GClient client) { + // 订阅标签上报事件 + client.onTagEpcLog = new HandlerTagEpcLog() { + @Override + public void log(String readName, LogBaseEpcInfo logBaseEpcInfo) { + // 回调内部如有阻塞,会影响API正常使用 + // 标签回调数量较多,请将标签数据先缓存起来再作业务处理 + if (null != logBaseEpcInfo && 0 == logBaseEpcInfo.getResult()) { + System.out.println(logBaseEpcInfo); + set.add(logBaseEpcInfo.getTid()); + } + } + }; + // 上报结束事件 + client.onTagEpcOver = new HandlerTagEpcOver() { + @Override + public void log(String readName, LogBaseEpcOver logBaseEpcOver) { + if (null != logBaseEpcOver) { + System.out.println("Epc log over."); + } + } + }; + } + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java new file mode 100644 index 0000000..9deaa4b --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.business; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/3/18 11:52 + */ +public interface IBusinessReadWriterService { + + ReturnDTO> readList(); +} diff --git a/lib/reader.jar b/lib/reader.jar new file mode 100644 index 0000000..0fe78e6 --- /dev/null +++ b/lib/reader.jar Binary files differ diff --git a/pom.xml b/pom.xml index 5a28056..4536ff2 100644 --- a/pom.xml +++ b/pom.xml @@ -47,6 +47,7 @@ 3.5.2 3.5.2 2.3.0 + 1.0 @@ -175,6 +176,12 @@ xxl-job-core ${xxl-job.version} + + + com.gg.reader + greader-api + ${read.version} +