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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 9fecb82..ca7a53a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,11 +38,16 @@ junit junit - + com.gg.reader greader-api + + + com.new.reader + reader-api + \ No newline at end of file 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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 9fecb82..ca7a53a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,11 +38,16 @@ junit junit - + com.gg.reader greader-api + + + com.new.reader + reader-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 index 55fe3f9..7802cb3 100644 --- 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 @@ -19,6 +19,12 @@ import com.gg.reader.api.dal.HandlerTagEpcOver; import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; +import com.rfid.API.CommonReader; +import com.rfid.API.ProtocolVersion; +import com.rfid.API.Util; +import com.rfid.API.core.BaseReader; +import com.rfid.API.entityclass.ScanTagParameter; +import com.rfid.ui.GlobalData; import gnu.io.SerialPort; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -49,24 +55,18 @@ @Override public ReturnDTO> sampleReadList() { - GClient client = new GClient(); - try { - // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 - //if (client.openSerial("COM11:115200", 2000)) - if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 + ReturnDTO> tIdsReturnDTO = tIdNewReadList(); + if (tIdsReturnDTO.getCode().equals(ReturnUtil.success().getCode())) { + Set tidsData = tIdsReturnDTO.getData(); + if(CollectionUtils.isEmpty(tidsData)) { + return ReturnUtil.success(new ArrayList<>()); } - Set tIds = receiveTIds(client); - //查询标签样品信息 - List resultList = queryReadSampleList(tIds); + List resultList = queryReadSampleList(tidsData); return ReturnUtil.success(resultList); - } catch (InterruptedException e) { - log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); - return ReturnUtil.failed(); - } finally { - client.close(); } + return ReturnUtil.failed(); } @Override @@ -78,7 +78,7 @@ return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } Set tIds = receiveTIds(client); - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -91,12 +91,68 @@ } @Override + public ReturnDTO> tIdNewReadList() { + CommonReader reader = new CommonReader("Reader1", GlobalData.ConnectType.TcpClient.name(), "192.168.1.201:9090"); + try { +// CommonReader reader = new CommonReader("Reader1", "RS232", "COM20:115200"); +// CommonReader reader = new CommonReader("Reader1", "USB-HID", ""); + reader.setProtocol(ProtocolVersion.CRP); + reader.setReaderProtocol(ProtocolVersion.CRP); +// reader.setPortSum(4);//只对LRP的有效 + reader.connect(false, new BaseReader.IConnectListener() { + @Override + public void callback(boolean b) { +// log.info("大读写器设备连接状态:" + b); + } + }); + if (reader.getIsConnected() == true) { + Set tIds = receiveNewTIds(reader); + if (CollectionUtils.isEmpty(tIds)) { + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); + } else { + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); + } + } catch (InterruptedException e) { + log.error("大读写器读取标签异常:{}", e.getMessage()); + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } finally { + //不断开连接,读写器会每秒发送心跳 +// reader.disconnect(); + } + } + + private Set receiveNewTIds(CommonReader reader) throws InterruptedException { + Set tIds = new HashSet<>(); +// boolean a = reader.BuzzerControl(true, false);//蜂鸣器协议 +// ScanTagParameter param = new ScanTagParameter(); +// param.antenna = 0x0001; +// param.isLoop = true;//持续盘点 +// boolean b = reader.reader_Inventory(param, (byte) 0x0001); + boolean b1 = reader.ScanTID(0x0001, true, 1111); + log.info("大读写器开始盘点:" + b1); + reader.OnTagDataReceivedHandle = (gateName, tagData) -> { + if (tagData != null && tagData.getTID() != null) { + String tid = Util.convertByteArrayToHexString(tagData.getTID()); + log.info("大读写器TID标签读取成功"); + tIds.add(tid); + } + }; + //连续读取3s + TimeUnit.SECONDS.sleep(3); +// reader.disconnect(); + boolean stop = reader.reader_StopInventory(); + return tIds; + } + + @Override public ReturnDTO> tIdMiniReadList() { GClient client = new GClient(); Set tIds = new HashSet<>(); try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); - if(CollectionUtils.isEmpty(attachedHidDevices)){ + if (CollectionUtils.isEmpty(attachedHidDevices)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 @@ -105,7 +161,7 @@ tIds.addAll(receiveTIds(client)); } } - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -121,12 +177,12 @@ public ReturnDTO> codeGunReadList() { SerialPortUtil serialPortUtil = null; Set resultSet = new HashSet<>(); - try{ + try { //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); log.info("有线扫码枪,当前可用串口:{}", ports); - if(CollectionUtils.isEmpty(ports)) { + if (CollectionUtils.isEmpty(ports)) { return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); } for (String port : ports) { @@ -138,11 +194,11 @@ TimeUnit.SECONDS.sleep(10); resultSet.addAll(CodeGunDataListener.dataSet); CodeGunDataListener.dataSet = new HashSet<>(); - } catch (Exception e){ + } catch (Exception e) { log.error("有线扫码枪识别失败,异常:", e.getMessage()); return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ + if (Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)) { //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -158,7 +214,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -168,13 +225,13 @@ //获取设备列表 List firstFixedAssets = new ArrayList<>(); List secondFixedAssets = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { QueryWrapper gunQueryWrapper = new QueryWrapper<>(); gunQueryWrapper.eq("is_del", 0); gunQueryWrapper.in("equipment_no", gunSet); firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); tIdsQueryWrapper.eq("is_del", 0); tIdsQueryWrapper.in("label_bind", tIdsSet); @@ -193,7 +250,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -203,10 +261,10 @@ //样品列表 List firstSamples = new ArrayList<>(); List secondSamples = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { firstSamples = queryGunReadSampleList(gunSet); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { secondSamples = queryReadSampleList(tIdsSet); } List resultList = new ArrayList<>(); @@ -222,7 +280,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //小读写器识别tId列表 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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 9fecb82..ca7a53a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,11 +38,16 @@ junit junit - + com.gg.reader greader-api + + + com.new.reader + reader-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 index 55fe3f9..7802cb3 100644 --- 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 @@ -19,6 +19,12 @@ import com.gg.reader.api.dal.HandlerTagEpcOver; import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; +import com.rfid.API.CommonReader; +import com.rfid.API.ProtocolVersion; +import com.rfid.API.Util; +import com.rfid.API.core.BaseReader; +import com.rfid.API.entityclass.ScanTagParameter; +import com.rfid.ui.GlobalData; import gnu.io.SerialPort; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -49,24 +55,18 @@ @Override public ReturnDTO> sampleReadList() { - GClient client = new GClient(); - try { - // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 - //if (client.openSerial("COM11:115200", 2000)) - if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 + ReturnDTO> tIdsReturnDTO = tIdNewReadList(); + if (tIdsReturnDTO.getCode().equals(ReturnUtil.success().getCode())) { + Set tidsData = tIdsReturnDTO.getData(); + if(CollectionUtils.isEmpty(tidsData)) { + return ReturnUtil.success(new ArrayList<>()); } - Set tIds = receiveTIds(client); - //查询标签样品信息 - List resultList = queryReadSampleList(tIds); + List resultList = queryReadSampleList(tidsData); return ReturnUtil.success(resultList); - } catch (InterruptedException e) { - log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); - return ReturnUtil.failed(); - } finally { - client.close(); } + return ReturnUtil.failed(); } @Override @@ -78,7 +78,7 @@ return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } Set tIds = receiveTIds(client); - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -91,12 +91,68 @@ } @Override + public ReturnDTO> tIdNewReadList() { + CommonReader reader = new CommonReader("Reader1", GlobalData.ConnectType.TcpClient.name(), "192.168.1.201:9090"); + try { +// CommonReader reader = new CommonReader("Reader1", "RS232", "COM20:115200"); +// CommonReader reader = new CommonReader("Reader1", "USB-HID", ""); + reader.setProtocol(ProtocolVersion.CRP); + reader.setReaderProtocol(ProtocolVersion.CRP); +// reader.setPortSum(4);//只对LRP的有效 + reader.connect(false, new BaseReader.IConnectListener() { + @Override + public void callback(boolean b) { +// log.info("大读写器设备连接状态:" + b); + } + }); + if (reader.getIsConnected() == true) { + Set tIds = receiveNewTIds(reader); + if (CollectionUtils.isEmpty(tIds)) { + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); + } else { + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); + } + } catch (InterruptedException e) { + log.error("大读写器读取标签异常:{}", e.getMessage()); + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } finally { + //不断开连接,读写器会每秒发送心跳 +// reader.disconnect(); + } + } + + private Set receiveNewTIds(CommonReader reader) throws InterruptedException { + Set tIds = new HashSet<>(); +// boolean a = reader.BuzzerControl(true, false);//蜂鸣器协议 +// ScanTagParameter param = new ScanTagParameter(); +// param.antenna = 0x0001; +// param.isLoop = true;//持续盘点 +// boolean b = reader.reader_Inventory(param, (byte) 0x0001); + boolean b1 = reader.ScanTID(0x0001, true, 1111); + log.info("大读写器开始盘点:" + b1); + reader.OnTagDataReceivedHandle = (gateName, tagData) -> { + if (tagData != null && tagData.getTID() != null) { + String tid = Util.convertByteArrayToHexString(tagData.getTID()); + log.info("大读写器TID标签读取成功"); + tIds.add(tid); + } + }; + //连续读取3s + TimeUnit.SECONDS.sleep(3); +// reader.disconnect(); + boolean stop = reader.reader_StopInventory(); + return tIds; + } + + @Override public ReturnDTO> tIdMiniReadList() { GClient client = new GClient(); Set tIds = new HashSet<>(); try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); - if(CollectionUtils.isEmpty(attachedHidDevices)){ + if (CollectionUtils.isEmpty(attachedHidDevices)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 @@ -105,7 +161,7 @@ tIds.addAll(receiveTIds(client)); } } - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -121,12 +177,12 @@ public ReturnDTO> codeGunReadList() { SerialPortUtil serialPortUtil = null; Set resultSet = new HashSet<>(); - try{ + try { //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); log.info("有线扫码枪,当前可用串口:{}", ports); - if(CollectionUtils.isEmpty(ports)) { + if (CollectionUtils.isEmpty(ports)) { return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); } for (String port : ports) { @@ -138,11 +194,11 @@ TimeUnit.SECONDS.sleep(10); resultSet.addAll(CodeGunDataListener.dataSet); CodeGunDataListener.dataSet = new HashSet<>(); - } catch (Exception e){ + } catch (Exception e) { log.error("有线扫码枪识别失败,异常:", e.getMessage()); return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ + if (Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)) { //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -158,7 +214,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -168,13 +225,13 @@ //获取设备列表 List firstFixedAssets = new ArrayList<>(); List secondFixedAssets = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { QueryWrapper gunQueryWrapper = new QueryWrapper<>(); gunQueryWrapper.eq("is_del", 0); gunQueryWrapper.in("equipment_no", gunSet); firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); tIdsQueryWrapper.eq("is_del", 0); tIdsQueryWrapper.in("label_bind", tIdsSet); @@ -193,7 +250,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -203,10 +261,10 @@ //样品列表 List firstSamples = new ArrayList<>(); List secondSamples = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { firstSamples = queryGunReadSampleList(gunSet); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { secondSamples = queryReadSampleList(tIdsSet); } List resultList = new ArrayList<>(); @@ -222,7 +280,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //小读写器识别tId列表 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java index 3042c24..b90d496 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java @@ -167,6 +167,9 @@ SampleHandOutListRequest handOutListRequest = new SampleHandOutListRequest(); handOutListRequest.setSampleStatus(SampleStatusEnum.TO_HANDOUT); Page toList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); + SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); + response2.setStatus("待分发"); + response2.setQuantity(toList.getTotal()); handOutListRequest.setSampleStatus(SampleStatusEnum.IN_MEASURE); Page inList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); //成编制报告,非草稿的,本月使用报告完成的出具日期 @@ -183,9 +186,6 @@ SampleStatusMonthResponse response1 = new SampleStatusMonthResponse(); response1.setStatus("待收入"); response1.setQuantity(dispatchVoPage.getTotal()); - SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); - response2.setStatus("待分发"); - response2.setQuantity(toList.getTotal()); SampleStatusMonthResponse response3 = new SampleStatusMonthResponse(); response3.setStatus("检测中"); response3.setQuantity(inList.getTotal()); 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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 9fecb82..ca7a53a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,11 +38,16 @@ junit junit - + com.gg.reader greader-api + + + com.new.reader + reader-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 index 55fe3f9..7802cb3 100644 --- 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 @@ -19,6 +19,12 @@ import com.gg.reader.api.dal.HandlerTagEpcOver; import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; +import com.rfid.API.CommonReader; +import com.rfid.API.ProtocolVersion; +import com.rfid.API.Util; +import com.rfid.API.core.BaseReader; +import com.rfid.API.entityclass.ScanTagParameter; +import com.rfid.ui.GlobalData; import gnu.io.SerialPort; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -49,24 +55,18 @@ @Override public ReturnDTO> sampleReadList() { - GClient client = new GClient(); - try { - // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 - //if (client.openSerial("COM11:115200", 2000)) - if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 + ReturnDTO> tIdsReturnDTO = tIdNewReadList(); + if (tIdsReturnDTO.getCode().equals(ReturnUtil.success().getCode())) { + Set tidsData = tIdsReturnDTO.getData(); + if(CollectionUtils.isEmpty(tidsData)) { + return ReturnUtil.success(new ArrayList<>()); } - Set tIds = receiveTIds(client); - //查询标签样品信息 - List resultList = queryReadSampleList(tIds); + List resultList = queryReadSampleList(tidsData); return ReturnUtil.success(resultList); - } catch (InterruptedException e) { - log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); - return ReturnUtil.failed(); - } finally { - client.close(); } + return ReturnUtil.failed(); } @Override @@ -78,7 +78,7 @@ return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } Set tIds = receiveTIds(client); - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -91,12 +91,68 @@ } @Override + public ReturnDTO> tIdNewReadList() { + CommonReader reader = new CommonReader("Reader1", GlobalData.ConnectType.TcpClient.name(), "192.168.1.201:9090"); + try { +// CommonReader reader = new CommonReader("Reader1", "RS232", "COM20:115200"); +// CommonReader reader = new CommonReader("Reader1", "USB-HID", ""); + reader.setProtocol(ProtocolVersion.CRP); + reader.setReaderProtocol(ProtocolVersion.CRP); +// reader.setPortSum(4);//只对LRP的有效 + reader.connect(false, new BaseReader.IConnectListener() { + @Override + public void callback(boolean b) { +// log.info("大读写器设备连接状态:" + b); + } + }); + if (reader.getIsConnected() == true) { + Set tIds = receiveNewTIds(reader); + if (CollectionUtils.isEmpty(tIds)) { + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); + } else { + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); + } + } catch (InterruptedException e) { + log.error("大读写器读取标签异常:{}", e.getMessage()); + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } finally { + //不断开连接,读写器会每秒发送心跳 +// reader.disconnect(); + } + } + + private Set receiveNewTIds(CommonReader reader) throws InterruptedException { + Set tIds = new HashSet<>(); +// boolean a = reader.BuzzerControl(true, false);//蜂鸣器协议 +// ScanTagParameter param = new ScanTagParameter(); +// param.antenna = 0x0001; +// param.isLoop = true;//持续盘点 +// boolean b = reader.reader_Inventory(param, (byte) 0x0001); + boolean b1 = reader.ScanTID(0x0001, true, 1111); + log.info("大读写器开始盘点:" + b1); + reader.OnTagDataReceivedHandle = (gateName, tagData) -> { + if (tagData != null && tagData.getTID() != null) { + String tid = Util.convertByteArrayToHexString(tagData.getTID()); + log.info("大读写器TID标签读取成功"); + tIds.add(tid); + } + }; + //连续读取3s + TimeUnit.SECONDS.sleep(3); +// reader.disconnect(); + boolean stop = reader.reader_StopInventory(); + return tIds; + } + + @Override public ReturnDTO> tIdMiniReadList() { GClient client = new GClient(); Set tIds = new HashSet<>(); try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); - if(CollectionUtils.isEmpty(attachedHidDevices)){ + if (CollectionUtils.isEmpty(attachedHidDevices)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 @@ -105,7 +161,7 @@ tIds.addAll(receiveTIds(client)); } } - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -121,12 +177,12 @@ public ReturnDTO> codeGunReadList() { SerialPortUtil serialPortUtil = null; Set resultSet = new HashSet<>(); - try{ + try { //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); log.info("有线扫码枪,当前可用串口:{}", ports); - if(CollectionUtils.isEmpty(ports)) { + if (CollectionUtils.isEmpty(ports)) { return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); } for (String port : ports) { @@ -138,11 +194,11 @@ TimeUnit.SECONDS.sleep(10); resultSet.addAll(CodeGunDataListener.dataSet); CodeGunDataListener.dataSet = new HashSet<>(); - } catch (Exception e){ + } catch (Exception e) { log.error("有线扫码枪识别失败,异常:", e.getMessage()); return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ + if (Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)) { //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -158,7 +214,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -168,13 +225,13 @@ //获取设备列表 List firstFixedAssets = new ArrayList<>(); List secondFixedAssets = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { QueryWrapper gunQueryWrapper = new QueryWrapper<>(); gunQueryWrapper.eq("is_del", 0); gunQueryWrapper.in("equipment_no", gunSet); firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); tIdsQueryWrapper.eq("is_del", 0); tIdsQueryWrapper.in("label_bind", tIdsSet); @@ -193,7 +250,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -203,10 +261,10 @@ //样品列表 List firstSamples = new ArrayList<>(); List secondSamples = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { firstSamples = queryGunReadSampleList(gunSet); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { secondSamples = queryReadSampleList(tIdsSet); } List resultList = new ArrayList<>(); @@ -222,7 +280,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //小读写器识别tId列表 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java index 3042c24..b90d496 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java @@ -167,6 +167,9 @@ SampleHandOutListRequest handOutListRequest = new SampleHandOutListRequest(); handOutListRequest.setSampleStatus(SampleStatusEnum.TO_HANDOUT); Page toList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); + SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); + response2.setStatus("待分发"); + response2.setQuantity(toList.getTotal()); handOutListRequest.setSampleStatus(SampleStatusEnum.IN_MEASURE); Page inList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); //成编制报告,非草稿的,本月使用报告完成的出具日期 @@ -183,9 +186,6 @@ SampleStatusMonthResponse response1 = new SampleStatusMonthResponse(); response1.setStatus("待收入"); response1.setQuantity(dispatchVoPage.getTotal()); - SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); - response2.setStatus("待分发"); - response2.setQuantity(toList.getTotal()); SampleStatusMonthResponse response3 = new SampleStatusMonthResponse(); response3.setStatus("检测中"); response3.setQuantity(inList.getTotal()); 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 index fe9b6f0..9310599 100644 --- 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 @@ -19,6 +19,8 @@ ReturnDTO> tIdReadList(); + ReturnDTO> tIdNewReadList() throws InterruptedException; + ReturnDTO> tIdMiniReadList(); ReturnDTO> codeGunReadList(); 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 index 46d6dea..6f81ad7 100644 --- 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 @@ -42,17 +42,30 @@ } /** + * 原厂家 * 大读写器 * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ - @ApiOperation("获取大读写器识别的标签TID列表") - @GetMapping("/tId/readList") +// @ApiOperation("原厂家获取大读写器识别的标签TID列表") +// @GetMapping("/tId/readList") public ReturnDTO> tIdReadList() { return readWriterService.tIdReadList(); } /** + * 新厂家 + * 大读写器 + * TCP连接,需配置和192.168.1.201一个段 + * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 + */ + @ApiOperation("新厂家获取大读写器识别的标签TID列表") + @GetMapping("/tId/readList") + public ReturnDTO> tIdNewReadList() throws InterruptedException { + return readWriterService.tIdNewReadList(); + } + + /** * 小读写器 * USB-HID连接(HID是一种USB通信协议,无需安装驱动就能进行交互) * 读取读写器获取TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 diff --git a/casic-metering-service/pom.xml b/casic-metering-service/pom.xml index 9fecb82..ca7a53a 100644 --- a/casic-metering-service/pom.xml +++ b/casic-metering-service/pom.xml @@ -38,11 +38,16 @@ junit junit - + com.gg.reader greader-api + + + com.new.reader + reader-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 index 55fe3f9..7802cb3 100644 --- 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 @@ -19,6 +19,12 @@ import com.gg.reader.api.dal.HandlerTagEpcOver; import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; +import com.rfid.API.CommonReader; +import com.rfid.API.ProtocolVersion; +import com.rfid.API.Util; +import com.rfid.API.core.BaseReader; +import com.rfid.API.entityclass.ScanTagParameter; +import com.rfid.ui.GlobalData; import gnu.io.SerialPort; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -49,24 +55,18 @@ @Override public ReturnDTO> sampleReadList() { - GClient client = new GClient(); - try { - // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 - //if (client.openSerial("COM11:115200", 2000)) - if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + // TODO: 2023/3/21 实际场景若有多个读写器连接需要设计读取实现方案,将ip入库或配置文件 + ReturnDTO> tIdsReturnDTO = tIdNewReadList(); + if (tIdsReturnDTO.getCode().equals(ReturnUtil.success().getCode())) { + Set tidsData = tIdsReturnDTO.getData(); + if(CollectionUtils.isEmpty(tidsData)) { + return ReturnUtil.success(new ArrayList<>()); } - Set tIds = receiveTIds(client); - //查询标签样品信息 - List resultList = queryReadSampleList(tIds); + List resultList = queryReadSampleList(tidsData); return ReturnUtil.success(resultList); - } catch (InterruptedException e) { - log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); - return ReturnUtil.failed(); - } finally { - client.close(); } + return ReturnUtil.failed(); } @Override @@ -78,7 +78,7 @@ return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } Set tIds = receiveTIds(client); - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -91,12 +91,68 @@ } @Override + public ReturnDTO> tIdNewReadList() { + CommonReader reader = new CommonReader("Reader1", GlobalData.ConnectType.TcpClient.name(), "192.168.1.201:9090"); + try { +// CommonReader reader = new CommonReader("Reader1", "RS232", "COM20:115200"); +// CommonReader reader = new CommonReader("Reader1", "USB-HID", ""); + reader.setProtocol(ProtocolVersion.CRP); + reader.setReaderProtocol(ProtocolVersion.CRP); +// reader.setPortSum(4);//只对LRP的有效 + reader.connect(false, new BaseReader.IConnectListener() { + @Override + public void callback(boolean b) { +// log.info("大读写器设备连接状态:" + b); + } + }); + if (reader.getIsConnected() == true) { + Set tIds = receiveNewTIds(reader); + if (CollectionUtils.isEmpty(tIds)) { + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); + } else { + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); + } + } catch (InterruptedException e) { + log.error("大读写器读取标签异常:{}", e.getMessage()); + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } finally { + //不断开连接,读写器会每秒发送心跳 +// reader.disconnect(); + } + } + + private Set receiveNewTIds(CommonReader reader) throws InterruptedException { + Set tIds = new HashSet<>(); +// boolean a = reader.BuzzerControl(true, false);//蜂鸣器协议 +// ScanTagParameter param = new ScanTagParameter(); +// param.antenna = 0x0001; +// param.isLoop = true;//持续盘点 +// boolean b = reader.reader_Inventory(param, (byte) 0x0001); + boolean b1 = reader.ScanTID(0x0001, true, 1111); + log.info("大读写器开始盘点:" + b1); + reader.OnTagDataReceivedHandle = (gateName, tagData) -> { + if (tagData != null && tagData.getTID() != null) { + String tid = Util.convertByteArrayToHexString(tagData.getTID()); + log.info("大读写器TID标签读取成功"); + tIds.add(tid); + } + }; + //连续读取3s + TimeUnit.SECONDS.sleep(3); +// reader.disconnect(); + boolean stop = reader.reader_StopInventory(); + return tIds; + } + + @Override public ReturnDTO> tIdMiniReadList() { GClient client = new GClient(); Set tIds = new HashSet<>(); try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); - if(CollectionUtils.isEmpty(attachedHidDevices)){ + if (CollectionUtils.isEmpty(attachedHidDevices)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 @@ -105,7 +161,7 @@ tIds.addAll(receiveTIds(client)); } } - if(CollectionUtils.isEmpty(tIds)){ + if (CollectionUtils.isEmpty(tIds)) { return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); @@ -121,12 +177,12 @@ public ReturnDTO> codeGunReadList() { SerialPortUtil serialPortUtil = null; Set resultSet = new HashSet<>(); - try{ + try { //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); log.info("有线扫码枪,当前可用串口:{}", ports); - if(CollectionUtils.isEmpty(ports)) { + if (CollectionUtils.isEmpty(ports)) { return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); } for (String port : ports) { @@ -138,11 +194,11 @@ TimeUnit.SECONDS.sleep(10); resultSet.addAll(CodeGunDataListener.dataSet); CodeGunDataListener.dataSet = new HashSet<>(); - } catch (Exception e){ + } catch (Exception e) { log.error("有线扫码枪识别失败,异常:", e.getMessage()); return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ + if (Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)) { //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -158,7 +214,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -168,13 +225,13 @@ //获取设备列表 List firstFixedAssets = new ArrayList<>(); List secondFixedAssets = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { QueryWrapper gunQueryWrapper = new QueryWrapper<>(); gunQueryWrapper.eq("is_del", 0); gunQueryWrapper.in("equipment_no", gunSet); firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); tIdsQueryWrapper.eq("is_del", 0); tIdsQueryWrapper.in("label_bind", tIdsSet); @@ -193,7 +250,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //有线扫码枪(二维码)识别设备id列表 @@ -203,10 +261,10 @@ //样品列表 List firstSamples = new ArrayList<>(); List secondSamples = new ArrayList<>(); - if(!CollectionUtils.isEmpty(gunSet)){ + if (!CollectionUtils.isEmpty(gunSet)) { firstSamples = queryGunReadSampleList(gunSet); } - if(!CollectionUtils.isEmpty(tIdsSet)){ + if (!CollectionUtils.isEmpty(tIdsSet)) { secondSamples = queryReadSampleList(tIdsSet); } List resultList = new ArrayList<>(); @@ -222,7 +280,8 @@ @SneakyThrows @Override protected ReturnDTO> compute() { - return tIdReadList(); +// return tIdReadList(); + return tIdNewReadList(); } }); //小读写器识别tId列表 diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java index 3042c24..b90d496 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessWorkbenchServiceImpl.java @@ -167,6 +167,9 @@ SampleHandOutListRequest handOutListRequest = new SampleHandOutListRequest(); handOutListRequest.setSampleStatus(SampleStatusEnum.TO_HANDOUT); Page toList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); + SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); + response2.setStatus("待分发"); + response2.setQuantity(toList.getTotal()); handOutListRequest.setSampleStatus(SampleStatusEnum.IN_MEASURE); Page inList = orderSampleRelationMapper.selectSampleListByStatusMonth(handOutPage, handOutListRequest); //成编制报告,非草稿的,本月使用报告完成的出具日期 @@ -183,9 +186,6 @@ SampleStatusMonthResponse response1 = new SampleStatusMonthResponse(); response1.setStatus("待收入"); response1.setQuantity(dispatchVoPage.getTotal()); - SampleStatusMonthResponse response2 = new SampleStatusMonthResponse(); - response2.setStatus("待分发"); - response2.setQuantity(toList.getTotal()); SampleStatusMonthResponse response3 = new SampleStatusMonthResponse(); response3.setStatus("检测中"); response3.setQuantity(inList.getTotal()); 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 index fe9b6f0..9310599 100644 --- 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 @@ -19,6 +19,8 @@ ReturnDTO> tIdReadList(); + ReturnDTO> tIdNewReadList() throws InterruptedException; + ReturnDTO> tIdMiniReadList(); ReturnDTO> codeGunReadList(); diff --git a/pom.xml b/pom.xml index 3282ac9..9ab0f69 100644 --- a/pom.xml +++ b/pom.xml @@ -177,12 +177,18 @@ xxl-job-core ${xxl-job.version} - + com.gg.reader greader-api ${read.version} + + + com.new.reader + reader-api + ${read.version} + commons-fileupload