package com.sandu.ximon.admin.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.Pole; import com.sandu.ximon.dao.domain.PoleBinding; import com.sandu.ximon.dao.mapper.PoleBindingMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import javax.swing.*; import java.util.List; /** * @author chenjiantian * @date 2021/12/14 11:48 */ @Service @AllArgsConstructor public class PoleBindingService extends BaseServiceImpl { private final LightReportDataService lightReportDataService; /** * 灯杆绑定设备 * * @param poleId * @param param * @return */ public boolean bindPole(Long poleId, PoleBindingParam param) { Integer deviceType = param.getDeviceType(); // if (PoleBindingEnums.LIGHT.getCode().equals(deviceType)) { // } LambdaQueryWrapper eq = Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getPoleId, poleId); List list = list(eq); if (list.size() != 0) { for (PoleBinding poleBinding : list) { //充电桩的绑定是网络请求是带过来的灯杆信息,要允许直接修改 if (poleBinding.getDeviceType().equals(deviceType) && deviceType != 2) { throw new BusinessException("该灯杆已绑定过相同类型设备"); } } } PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, param.getDeviceCode())); if (one == null) { PoleBinding poleBinding = new PoleBinding(); poleBinding.setPoleId(poleId); poleBinding.setDeviceType(deviceType); poleBinding.setDeviceName(param.getDeviceName()); poleBinding.setDeviceCode(param.getDeviceCode()); return save(poleBinding); } else { //修改单灯的绑定关系的时候要额外处理的事务 // 删除灯杆的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); one.setDeviceType(param.getDeviceType()); one.setDeviceName(param.getDeviceName()); one.setDeviceCode(param.getDeviceCode()); return updateById(one); } } /** * 灯杆解绑设备,删除设备前需要解绑 * * @param deviceCode */ public boolean unBindPole(Long poleId, String deviceCode) { if (deviceCode == null) { throw new BusinessException("设备编号不能为空"); } PoleBinding one; //直接删除设备不需要灯杆ID if (poleId == null) { one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode)); } else { one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode).eq(PoleBinding::getPoleId, poleId)); } if (one != null) { return removeById(one.getId()); } else { throw new BusinessException("设备不存在绑定情况或灯杆ID不正确"); } } /** * 设备删除,直接解绑设备相关绑定数据 * * @param deviceCode */ public boolean unBindPole(String deviceCode) { if (deviceCode == null) { throw new BusinessException("设备编号不能为空"); } //直接删除设备不需要灯杆ID PoleBinding one = getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode)); if (one != null) { return removeById(one.getId()); } else { return false; } } public PoleBinding getPoleIdByMac(String deviceCode) { return getOne(Wrappers.lambdaQuery(PoleBinding.class).eq(PoleBinding::getDeviceCode, deviceCode)); } }