2021与蓝度共同重构项目,服务端
fix
zhanzhiqin
2022-05-17 31e798604209979bb9e93652dc0b0ac8d4d61538
ximon-admin/src/main/java/com/sandu/ximon/admin/service/PoleBindingService.java
@@ -6,13 +6,13 @@
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.Pole;
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;
import javax.swing.*;
import java.util.List;
/**
@@ -36,6 +36,58 @@
        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:
                size = SpringContextHolder.getBean(AirEquipmentService.class).list(Wrappers.lambdaQuery(AirEquipment.class).eq(AirEquipment::getMac, param.getDeviceCode())).size();
                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 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();
                //一键求助两类硬件
                if (size1 > 0 || size2 > 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("设备码不正确,硬件不存在");
        }
        LambdaQueryWrapper<PoleBinding> eq = Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId);
        List<PoleBinding> list = list(eq);
        if (list.size() != 0) {
@@ -56,12 +108,15 @@
            poleBinding.setDeviceCode(param.getDeviceCode());
            return save(poleBinding);
        } else {
            //删除灯杆的devicescode
            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);
            //修改单灯的绑定关系的时候要额外处理的事务
            // 删除灯杆的devicescode
            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);
                }
            }
            one.setPoleId(poleId);
@@ -104,6 +159,11 @@
        if (deviceCode == null) {
            throw new BusinessException("设备编号不能为空");
        }
        //查灯杆归属关系
        boolean belong = isBelong(deviceCode, null);
        if(!belong){
            throw  new BusinessException("该灯杆不属于您,无法解绑!");
        }
        //直接删除设备不需要灯杆ID
        PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode));
@@ -117,4 +177,22 @@
    public PoleBinding getPoleIdByMac(String deviceCode) {
        return getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode));
    }
    /**
     * 判断设备归属
     *
     * @param deviceCode 设备编号
     * @param type       设备类型
     * @return 属于该用户返回true,不是返回false
     */
    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;
        }
    }
}