package com.moral.controller; import com.moral.common.bean.ResultBean; import com.moral.entity.DeviceVersion; import com.moral.entity.Sensor; import com.moral.entity.layout.RealTimeDeviceLayout; import com.moral.entity.layout.RtdLayoutUpload; import com.moral.entity.layout.SensorComb; import com.moral.service.DeviceVersionService; import com.moral.service.OrganizationLayoutService; import com.moral.service.SensorService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @RestController @RequestMapping("org-layout") public class OrganizationLayoutController { @Resource private OrganizationLayoutService organizationLayoutService; @Resource private SensorService sensorService; @Resource private DeviceVersionService deviceVersionService; @GetMapping("rtd-config") public ResultBean> getRealTimeDevicetConfig(Integer orgId){ Map resultMap = new HashMap(); resultMap.put("deviceVersions",new ArrayList<>()); resultMap.put("sensorCombs", new ArrayList<>()); resultMap.put("sensors", new ArrayList<>()); resultMap.put("rtdLayout", new HashMap<>()); // 获取当前组织所含设备版本数组 List deviceVersionList = deviceVersionService.queryByOrgId(orgId); // 获取第一个version 下所有传感器 if (deviceVersionList!=null && deviceVersionList.size()>0) { Integer versionId = deviceVersionList.get(0).getId(); Integer versionNum = deviceVersionList.get(0).getVersion(); // 转为 SensorComb 保持对象一致 List fixedItemKeys = organizationLayoutService.getFixedItemKeys(); List optionalFixedItems = new ArrayList<>(); List sensorCombList = sensorService.queryListByVersionId(versionId) .stream() .filter(item -> { for (String key: fixedItemKeys) { if( key.equals(item.getSensorKey()) ) { SensorComb sensorComb = new SensorComb(); sensorComb.setName(item.getDescription()); sensorComb.setSensorKey(item.getSensorKey()); optionalFixedItems.add(sensorComb); return false; } } return true; }) .map(item -> { SensorComb sensorComb = new SensorComb(); sensorComb.setName(item.getDescription()); sensorComb.setSensorKey(item.getSensorKey()); return sensorComb; }).collect(Collectors.toList()); RealTimeDeviceLayout realTimeDeviceLayout = organizationLayoutService.queryRealTimeDeviceLayout(orgId,versionNum); resultMap.put("deviceVersions",deviceVersionList); resultMap.put("sensorCombs",sensorCombList); resultMap.put("rtdLayout",realTimeDeviceLayout); resultMap.put("optionalFixedItems",optionalFixedItems); } return new ResultBean<>(resultMap); } @GetMapping("rtd-act-config") public ResultBean> getRealTimeDeviceConfigWithVer(Integer orgId,Integer versionNo){ Map resultMap = new HashMap(); resultMap.put("sensors",""); resultMap.put("rtdLayout",""); // 转为 SensorComb 保持对象一致 List fixedItemKeys = organizationLayoutService.getFixedItemKeys(); List optionalFixedItems = new ArrayList<>(); List sensorCombList = sensorService.queryListByVersionNo(versionNo) .stream() .filter(item -> { for (String key: fixedItemKeys) { if( key.equals(item.getSensorKey()) ) { SensorComb sensorComb = new SensorComb(); sensorComb.setName(item.getDescription()); sensorComb.setSensorKey(item.getSensorKey()); optionalFixedItems.add(sensorComb); return false; } } return true; }) .map(item -> { SensorComb sensorComb = new SensorComb(); sensorComb.setName(item.getDescription()); sensorComb.setSensorKey(item.getSensorKey()); return sensorComb; }).collect(Collectors.toList()); RealTimeDeviceLayout realTimeDeviceLayout = organizationLayoutService.queryRealTimeDeviceLayout(orgId,versionNo); resultMap.put("sensorCombs",sensorCombList); resultMap.put("rtdLayout",realTimeDeviceLayout); resultMap.put("optionalFixedItems",optionalFixedItems); // 可显示固定项 return new ResultBean<>(resultMap); } @PostMapping("rtd-save") public ResultBean RealTimeDeviceSave(@RequestBody RtdLayoutUpload rtdLayoutUpload) { organizationLayoutService.saveRtdLayout(rtdLayoutUpload); return ResultBean.success(); } @GetMapping("rtd-remove") public ResultBean RealTimeDeviceRemove(Integer orgId,Integer version) { organizationLayoutService.deleteRtdLayout(orgId,version); return ResultBean.success(); } }