From 727a69f859060093e685582fa10e5de82dcc138a Mon Sep 17 00:00:00 2001
From: Van333 <van666666@foxmail.com>
Date: 星期四, 29 十二月 2022 15:37:49 +0800
Subject: [PATCH] 放假备份。完成集中控制器对接。
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java | 101 ++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 88 insertions(+), 13 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 7e7e050..300fcfc 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
@@ -12,6 +12,7 @@
import com.sandu.ximon.dao.mapper.PoleBindingMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -32,15 +33,17 @@
* @param param
* @return
*/
+ @Transactional(rollbackFor = Exception.class)
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.PLC:
+ size = SpringContextHolder.getBean(PlcService.class).list(Wrappers.lambdaQuery(Plc.class).eq(Plc::getDeviceCode, param.getDeviceCode())).size();
break;
case PoleBindingEnums.VONNOX:
size = SpringContextHolder.getBean(LedPlayerEntityService.class).list(Wrappers.lambdaQuery(LedPlayerEntity.class).eq(LedPlayerEntity::getSn, param.getDeviceCode())).size();
@@ -49,7 +52,24 @@
size = SpringContextHolder.getBean(C3ChargingService.class).list(Wrappers.lambdaQuery(C3mCharging.class).eq(C3mCharging::getMcuUdid, param.getDeviceCode())).size();
break;
case PoleBindingEnums.ATMOSPHERIC:
- size = SpringContextHolder.getBean(AirEquipmentService.class).list(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, param.getDeviceCode())).size();
+ 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();
@@ -67,10 +87,10 @@
size = SpringContextHolder.getBean(LightPoleHeelingEquipmentService.class).list(Wrappers.lambdaQuery(LightPoleHeelingEquipment.class).eq(LightPoleHeelingEquipment::getMac, param.getDeviceCode())).size();
break;
case PoleBindingEnums.FOR_HELP:
- int size1 = SpringContextHolder.getBean(InterphoneHostService.class).list(Wrappers.lambdaQuery(InterphoneHost.class).eq(InterphoneHost::getHostMac, param.getDeviceCode())).size();
- int size2 = SpringContextHolder.getBean(InterphoneSubService.class).list(Wrappers.lambdaQuery(InterphoneSub.class).eq(InterphoneSub::getSubMac, param.getDeviceCode())).size();
+ 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 (size1 > 0 || size2 > 0) {
+ if (size3 > 0 || size4 > 0) {
size = 1;
}
break;
@@ -88,7 +108,7 @@
}
- LambdaQueryWrapper<PoleBinding> eq = Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId);
+ LambdaQueryWrapper<PoleBinding> eq = Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceType, param.getDeviceType()).eq(PoleBinding::getPoleId, poleId);
List<PoleBinding> list = list(eq);
if (list.size() != 0) {
for (PoleBinding poleBinding : list) {
@@ -99,14 +119,27 @@
}
}
- PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, param.getDeviceCode()));
+ PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, param.getDeviceCode())
+ .eq(PoleBinding::getDeviceType, param.getDeviceType()));
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 {
//淇敼鍗曠伅鐨勭粦瀹氬叧绯荤殑鏃跺�欒棰濆澶勭悊鐨勪簨鍔�
// 鍒犻櫎鐏潌鐨刣evicescode
@@ -119,11 +152,24 @@
}
}
+ //鍏呯數妗╀繚瀛樼粦瀹氬叧绯婚渶瑕佸厛鍒ゆ柇鏄笉鏄纭殑鐏潌
+ 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);
+
}
}
@@ -150,6 +196,31 @@
}
}
+
+ /**
+ * 鐏潌瑙g粦璁惧锛屽垹闄よ澶囧墠闇�瑕佽В缁�
+ *
+ * @param deviceCode
+ */
+ public boolean unBindPole(Long poleId, String deviceCode, Integer deviceType) {
+ if (deviceCode == null) {
+ throw new BusinessException("璁惧缂栧彿涓嶈兘涓虹┖");
+ }
+ PoleBinding one;
+ //鐩存帴鍒犻櫎璁惧涓嶉渶瑕佺伅鏉咺D
+ if (poleId == null) {
+ one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode).eq(PoleBinding::getDeviceType, deviceType));
+ } else {
+ one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode)
+ .eq(PoleBinding::getDeviceType, deviceType).eq(PoleBinding::getPoleId, poleId));
+ }
+ if (one != null) {
+ return removeById(one.getId());
+ } else {
+ throw new BusinessException("璁惧涓嶅瓨鍦ㄧ粦瀹氭儏鍐垫垨鐏潌ID涓嶆纭�");
+ }
+ }
+
/**
* 璁惧鍒犻櫎,鐩存帴瑙g粦璁惧鐩稿叧缁戝畾鏁版嵁
*
@@ -158,6 +229,13 @@
public boolean unBindPole(String deviceCode) {
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));
@@ -170,7 +248,7 @@
}
public PoleBinding getPoleIdByMac(String deviceCode) {
- return getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode));
+ return getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode).eq(PoleBinding::getDeviceType, 0));
}
@@ -179,12 +257,9 @@
*
* @param deviceCode 璁惧缂栧彿
* @param type 璁惧绫诲瀷
- * @return 宸茬粦瀹氳繑鍥瀟rue锛屾湭缁戝畾杩斿洖false
+ * @return 灞炰簬璇ョ敤鎴疯繑鍥瀟rue锛屼笉鏄繑鍥瀎alse
*/
public boolean isBelong(String deviceCode, String type) {
- if (type.isEmpty() || deviceCode.isEmpty()) {
- throw new BusinessException("璁惧缂栧彿鎴栫被鍨嬩笉鑳戒负绌�");
- }
Long userId = SecurityUtils.getClientId();
Pole binding = baseMapper.getPoleByBinding(type, deviceCode, userId);
if (binding != null) {
--
Gitblit v1.9.3