hecheng пре 3 година
родитељ
комит
6b01a5c45f

+ 11 - 1
zd-modules/zd-bottle-parent/zd-bottle/src/main/java/com/zd/bottle/controller/RfidTagController.java

@@ -6,6 +6,7 @@ import com.zd.bottle.domain.RfidTag;
 import com.zd.bottle.service.RfidTagService;
 import com.zd.common.core.domain.per.PerFun;
 import com.zd.common.core.domain.per.PerPrefix;
+import com.zd.common.core.exception.ServiceException;
 import com.zd.common.core.utils.poi.ExcelUtil;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.core.web.page.TableDataInfo;
@@ -22,6 +23,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -128,7 +130,15 @@ public class RfidTagController extends BaseController<RfidTag> {
     @Log(title = "RFID标签管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{ids}")
     public ResultData<Boolean> remove(@PathVariable Long[] ids) {
-        return ResultData.result(service.removeBatchByIds(Arrays.asList(ids)));
+        List<Long> idList = Arrays.asList(ids);
+        LambdaQueryWrapper<RfidTag> wrapper = Wrappers.lambdaQuery(RfidTag.class);
+        wrapper.in(RfidTag::getId,idList).eq(RfidTag::getIsBind,1);
+        List<RfidTag> list = service.list(wrapper);
+        if (!list.isEmpty()){
+            List<String> authCodeList = list.stream().map(RfidTag::getAuthCode).collect(Collectors.toList());
+            throw new ServiceException(String.join(",", authCodeList)+"已被绑定");
+        }
+        return ResultData.result(service.removeBatchByIds(idList));
     }
 
 }

+ 6 - 6
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDClientImpl.java

@@ -106,6 +106,12 @@ public class DeJuRFIDClientImpl implements IService {
     }
 
     private void reSet(RemoteLabHardware hardware, GClient client) {
+        MsgBaseSetBaseband msgBaseSetBaseband = DeJuRFIDServerImpl.setSession(hardware, client);
+        if (0 != msgBaseSetBaseband.getRtCode()) {
+            log.error("Session configuration error.");
+            reConnect(hardware, client);
+            return;
+        }
         MsgBaseSetPower msgBaseSetPower = DeJuRFIDServerImpl.setPower(hardware, client);
         if (0 != msgBaseSetPower.getRtCode()) {
             log.error("Power configuration error.");
@@ -116,12 +122,6 @@ public class DeJuRFIDClientImpl implements IService {
         if (0 != msgBaseInventoryEpc.getRtCode()) {
             log.error("Inventory epc error.");
             reConnect(hardware, client);
-            return;
-        }
-        MsgBaseSetBaseband msgBaseSetBaseband = DeJuRFIDServerImpl.setSession(hardware, client);
-        if (0 != msgBaseSetBaseband.getRtCode()) {
-            log.error("Session configuration error.");
-            reConnect(hardware, client);
         }
     }
 

+ 15 - 7
zd-modules/zd-netty/src/main/java/com/zd/netty/sdk/DeJuRFIDServerImpl.java

@@ -63,8 +63,20 @@ public class DeJuRFIDServerImpl implements IService {
             client = new GClient();
             clientMap.put(ipAddress, client);
         }
+        String[] ip = ipAddress.split(":");
+        int port=8160;
+        if (ip.length==1){
+            ipAddress+=":"+port;
+        }
         if (client.openTcp(ipAddress, TIME_OUT)) {
             stopMsg(client);
+            MsgBaseSetBaseband msgBaseSetBaseband = setSession(hardware, client);
+            if (0 != msgBaseSetBaseband.getRtCode()) {
+                log.info("Session epc error.");
+                close(hardware);
+                open(hardware);
+                return;
+            }
             // 功率配置, 将4个天线功率都设置为30dBm.
             MsgBaseSetPower msgBaseSetPower = setPower(hardware, client);
             if (0 != msgBaseSetPower.getRtCode()) {
@@ -84,14 +96,10 @@ public class DeJuRFIDServerImpl implements IService {
 
             // 订阅标签上报事件
             subscribeHandler(client, hardware);
-            MsgBaseSetBaseband msgBaseSetBaseband = setSession(hardware, client);
-            if (0 != msgBaseSetBaseband.getRtCode()) {
-                log.info("Session epc error.");
-                close(hardware);
-                open(hardware);
-                return;
+            String serialNumber = client.getSerialNumber();
+            if (StringUtils.hasLength(serialNumber)){
+                redisTemplate.opsForValue().set(serialNumber, hardware);
             }
-            redisTemplate.opsForValue().set(client.getSerialNumber(), hardware);
         } else {
             throw new ServiceException("Connect failure.");
         }