package com.sandu.ximon.admin.service; import com.aliyuncs.iot.model.v20180120.BatchGetDeviceStateResponse; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.sandu.common.execption.BusinessException; import com.sandu.common.service.impl.BaseServiceImpl; import com.sandu.ximon.admin.manager.iot.rrpc.mainboard.MainBoardInvokeSyncService; import com.sandu.ximon.admin.param.LampPostParam; import com.sandu.ximon.admin.security.CountSet; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.dao.domain.LampCount; import com.sandu.ximon.dao.domain.LampPost; import com.sandu.ximon.dao.mapper.ClientMapper; import com.sandu.ximon.dao.mapper.LampPostMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service @AllArgsConstructor public class LampPostService extends BaseServiceImpl { private final CountSet countSet; private final LampCountService lampCountService; private final ClientMapper clientMapper; private final LampPostMapper lampPostMapper; public boolean addLamp(LampPostParam lampPostParam) { LampPost lampPost = new LampPost(); // lampPost.setId(snowflake.nextId()); Long userId = SecurityUtils.getUserId(); lampPost.setUserId(userId); lampPost.setLampId(countSet.aVoid()); lampPost.setName(lampPostParam.getName()); lampPost.setAddress(lampPostParam.getAddress()); if (lampPostParam.getBelongsClient() != null) { Long clientId = clientMapper.findClientIdByName(lampPostParam.getBelongsClient()); lampPost.setBelongsClient(lampPostParam.getBelongsClient()); lampPost.setClientId(clientId); } if (lampPostParam.getMacCode() == null) { lampPost.setMacCode("虚拟灯杆"); } else { lampPost.setMacCode(lampPostParam.getMacCode()); } lampPost.setState(1); boolean save = save(lampPost); if (!save) { LampCount lampCount = lampCountService.list().get(0); lampCount.setCount(lampCount.getCount() - 1); lampCountService.updateById(lampCount); } return save; } public boolean updateLamp(Long id, LampPostParam lampPostParam) { LampPost lampPost = new LampPost(); LampPost byId = getById(id); if (byId == null) { throw new BusinessException("未找到该灯杆"); } lampPost.setId(id); lampPost.setName(lampPostParam.getName()); lampPost.setAddress(lampPostParam.getAddress()); if (lampPostParam.getBelongsClient() != null) { Long clientId = clientMapper.findClientIdByName(lampPostParam.getBelongsClient()); lampPost.setBelongsClient(lampPostParam.getBelongsClient()); lampPost.setClientId(clientId); } if (lampPostParam.getMacCode() == null) { lampPost.setMacCode("虚拟灯杆"); } else { lampPost.setMacCode(lampPostParam.getMacCode()); } return updateById(lampPost); } /** * @param group * @param Id 编辑分组--选择灯杆 */ public void setGroup(String group, List Id) { // List update=new ArrayList<>(); for (Long id : Id ) { lampPostMapper.serGroup(group, id); } // return updateBatchById(update); } public List listLamp() { List list = lampPostMapper.listLamp(); // List list = list(Wrappers.lambdaQuery(LampPost.class)); return list; } public List queryStates() { // List list = list(Wrappers.lambdaQuery(LampPost.class).eq(LampPost::getClientId, SecurityUtils.getUserId())); List list = list(Wrappers.lambdaQuery(LampPost.class)); List MacCodes = new ArrayList<>(); for (LampPost post : list) { MacCodes.add(post.getMacCode()); } List deviceStatuses = MainBoardInvokeSyncService.getInstance().batchGetDeviceState(MacCodes); for (LampPost post : list) { for (BatchGetDeviceStateResponse.DeviceStatus deviceStatus : deviceStatuses) { if(post.getMacCode().equals(deviceStatus.getDeviceName())){ post.setOnLineState(deviceStatus.getStatus()); } } MacCodes.add(post.getMacCode()); } return list; } }