From c5ef81f257e0176cdcfce034779a15f544d6694c Mon Sep 17 00:00:00 2001
From: liuhaonan <31457034@qq.com>
Date: 星期一, 24 十月 2022 13:51:09 +0800
Subject: [PATCH] changes

---
 ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java |  148 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 142 insertions(+), 6 deletions(-)

diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
index e6ae5f0..f46f4a7 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -4,8 +4,11 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.sandu.common.execption.BusinessException;
 import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.common.util.SpringContextHolder;
 import com.sandu.ximon.admin.param.PoleBindingParam;
-import com.sandu.ximon.dao.domain.PoleBinding;
+import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.dao.domain.*;
+import com.sandu.ximon.dao.enums.PoleBindingEnums;
 import com.sandu.ximon.dao.mapper.PoleBindingMapper;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -31,13 +34,81 @@
      */
     public boolean bindPole(Long poleId, PoleBindingParam param) {
         Integer deviceType = param.getDeviceType();
-//        if (PoleBindingEnums.LIGHT.getCode().equals(deviceType)) {
-//        }
+
+        int size = 0;
+        switch (deviceType.toString()) {
+            case PoleBindingEnums.LIGHT:
+                size = SpringContextHolder.getBean(LightService.class).list(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.VONNOX:
+                size = SpringContextHolder.getBean(LedPlayerEntityService.class).list(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.CHARGING_PILE:
+                size = SpringContextHolder.getBean(C3ChargingService.class).list(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.ATMOSPHERIC:
+                Pole byId = SpringContextHolder.getBean(PoleService.class).getById(poleId);
+                if (byId == null) {
+                    throw new BusinessException("鏈壘鍒扮伅鏉�");
+                }
+                if (byId.getDeviceCode() != null || !byId.getDeviceCode().isEmpty()) {
+                    if (!param.getDeviceCode().equals(byId.getDeviceCode())) {
+                        throw new BusinessException("鐏潌mac鍜屽ぇ姘攎ac涓嶄竴鑷�, 鏃犳硶缁戝畾");
+                    }
+                } else {
+                    throw new BusinessException("鐏潌mac涓虹┖,鏃犳硶缁戝畾澶ф皵璁惧");
+                }
+
+                int size1 = SpringContextHolder.getBean(AirEquipmentService.class).list(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, param.getDeviceCode())).size();
+                int size2 = SpringContextHolder.getBean(AirEquipmentNongGengService.class).list(Wrappers.lambdaQuery(AirEquipmentNongGeng.class).eq(AirEquipmentNongGeng::getMac, param.getDeviceCode())).size();
+                //涓�閿眰鍔╀袱绫荤‖浠�
+                if (size1 > 0 || size2 > 0) {
+                    size = 1;
+                }
+                break;
+            case PoleBindingEnums.WATER:
+                size = SpringContextHolder.getBean(WaterQualityEquipmentService.class).list(Wrappers.lambdaQuery(WaterQualityEquipment.class).eq(WaterQualityEquipment::getWaterQualityEquipmentCode, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.IPVOLUME:
+                size = SpringContextHolder.getBean(IpVolumeService.class).list(Wrappers.lambdaQuery(BroadcastTerminalV2Entity.class).eq(BroadcastTerminalV2Entity::getId, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.LCD_ADVERTISING:
+
+                break;
+            case PoleBindingEnums.MONITOR:
+                size = SpringContextHolder.getBean(MonitorService.class).list(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.LIGHTPOLEHEELING:
+                size = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).list(Wrappers.lambdaQuery(LightPoleHeelingEquipment.class).eq(LightPoleHeelingEquipment::getMac, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.FOR_HELP:
+                int size3 = SpringContextHolder.getBean(InterphoneHostService.class).list(Wrappers.lambdaQuery(InterphoneHost.class).eq(InterphoneHost::getHostMac, param.getDeviceCode())).size();
+                int size4 = SpringContextHolder.getBean(InterphoneSubService.class).list(Wrappers.lambdaQuery(InterphoneSub.class).eq(InterphoneSub::getSubMac, param.getDeviceCode())).size();
+                //涓�閿眰鍔╀袱绫荤‖浠�
+                if (size3 > 0 || size4 > 0) {
+                    size = 1;
+                }
+                break;
+            case PoleBindingEnums.XIXUN:
+                size = SpringContextHolder.getBean(PoleLightemitService.class).list(Wrappers.lambdaQuery(PoleLightemitEntity.class).eq(PoleLightemitEntity::getLightemitControlCode, param.getDeviceCode())).size();
+                break;
+            case PoleBindingEnums.ATMOSPHERIC_NONG_GENG:
+                size = SpringContextHolder.getBean(AirEquipmentNongGengService.class).list(Wrappers.lambdaQuery(AirEquipmentNongGeng.class).eq(AirEquipmentNongGeng::getMac, param.getDeviceCode())).size();
+                break;
+            default:
+                break;
+        }
+        if (size == 0) {
+            throw new BusinessException("璁惧鐮佷笉姝g‘锛岀‖浠朵笉瀛樺湪");
+        }
+
+
         LambdaQueryWrapper<PoleBinding> eq = Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId);
         List<PoleBinding> list = list(eq);
-        if (list.size() != 0){
+        if (list.size() != 0) {
             for (PoleBinding poleBinding : list) {
-                if (poleBinding.getDeviceType().equals(deviceType)) {
+                //鍏呯數妗╃殑缁戝畾鏄綉缁滆姹傛槸甯﹁繃鏉ョ殑鐏潌淇℃伅锛岃鍏佽鐩存帴淇敼
+                if (poleBinding.getDeviceType().equals(deviceType) && deviceType != 2) {
                     throw new BusinessException("璇ョ伅鏉嗗凡缁戝畾杩囩浉鍚岀被鍨嬭澶�");
                 }
             }
@@ -45,14 +116,54 @@
 
         PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, param.getDeviceCode()));
         if (one == null) {
+            //鍏呯數妗╀繚瀛樼粦瀹氬叧绯婚渶瑕佸厛鍒ゆ柇鏄笉鏄纭殑鐏潌
+            if (deviceType == 2) {
+                C3mCharging mCharging = SpringContextHolder.getBean(C3ChargingService.class).
+                        getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, param.getDeviceCode()));
+                Pole poleInfo = SpringContextHolder.getBean(PoleService.class).getById(poleId);
+
+                if (!mCharging.getPoleDevicesCode().equals(poleInfo.getDeviceCode())) {
+                    throw new BusinessException("缁戝畾鍑洪敊锛佽鍏呯數妗╃‖浠剁粦瀹氱殑鐏潌mac涓猴細" + mCharging.getPoleDevicesCode());
+                }
+
+            }
             PoleBinding poleBinding = new PoleBinding();
             poleBinding.setPoleId(poleId);
             poleBinding.setDeviceType(deviceType);
             poleBinding.setDeviceName(param.getDeviceName());
             poleBinding.setDeviceCode(param.getDeviceCode());
             return save(poleBinding);
+
         } else {
-            throw new BusinessException("璇ヨ澶囧凡缁戝畾杩�");
+            //淇敼鍗曠伅鐨勭粦瀹氬叧绯荤殑鏃跺�欒棰濆澶勭悊鐨勪簨鍔�
+            // 鍒犻櫎鐏潌鐨刣evicescode
+            if (param.getDeviceType() == 0) {
+                PoleService poleService = SpringContextHolder.getBean(PoleService.class);
+                Pole pole = poleService.getOne(Wrappers.lambdaQuery(Pole.class).eq(Pole::getId, one.getPoleId()));
+                if (pole != null) {
+                    pole.setDeviceCode(null);
+                    poleService.updateById(pole);
+                }
+            }
+
+            //鍏呯數妗╀繚瀛樼粦瀹氬叧绯婚渶瑕佸厛鍒ゆ柇鏄笉鏄纭殑鐏潌
+            if (deviceType == 2) {
+                C3mCharging mCharging = SpringContextHolder.getBean(C3ChargingService.class).
+                        getOne(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, param.getDeviceCode()));
+                Pole poleInfo = SpringContextHolder.getBean(PoleService.class).getById(poleId);
+
+                if (!mCharging.getPoleDevicesCode().equals(poleInfo.getDeviceCode())) {
+                    throw new BusinessException("缁戝畾鍑洪敊锛佽鍏呯數妗╃‖浠剁粦瀹氱殑鐏潌mac涓猴細" + mCharging.getPoleDevicesCode());
+                }
+
+            }
+
+            one.setPoleId(poleId);
+            one.setDeviceType(param.getDeviceType());
+            one.setDeviceName(param.getDeviceName());
+            one.setDeviceCode(param.getDeviceCode());
+            return updateById(one);
+
         }
     }
 
@@ -88,6 +199,13 @@
         if (deviceCode == null) {
             throw new BusinessException("璁惧缂栧彿涓嶈兘涓虹┖");
         }
+        if (SecurityUtils.getClientId() != null) {
+            //鏌ョ伅鏉嗗綊灞炲叧绯�
+            boolean belong = isBelong(deviceCode, null);
+            if (!belong) {
+                throw new BusinessException("璇ョ伅鏉嗕笉灞炰簬鎮紝鏃犳硶瑙g粦锛�");
+            }
+        }
         //鐩存帴鍒犻櫎璁惧涓嶉渶瑕佺伅鏉咺D
         PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode));
 
@@ -101,4 +219,22 @@
     public PoleBinding getPoleIdByMac(String deviceCode) {
         return getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode));
     }
+
+
+    /**
+     * 鍒ゆ柇璁惧褰掑睘
+     *
+     * @param deviceCode 璁惧缂栧彿
+     * @param type       璁惧绫诲瀷
+     * @return 灞炰簬璇ョ敤鎴疯繑鍥瀟rue锛屼笉鏄繑鍥瀎alse
+     */
+    public boolean isBelong(String deviceCode, String type) {
+        Long userId = SecurityUtils.getClientId();
+        Pole binding = baseMapper.getPoleByBinding(type, deviceCode, userId);
+        if (binding != null) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 }

--
Gitblit v1.9.3