提交代码

This commit is contained in:
huangzj
2023-07-19 14:58:13 +08:00
parent 285545ecd0
commit 11cd82dc0f
32 changed files with 365 additions and 68 deletions

View File

@@ -5,6 +5,7 @@ import com.njcn.common.pojo.enums.common.LogEnum;
import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.param.CsLineParm;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.service.CsLinePOService;
import com.njcn.web.controller.BaseController;
@@ -35,7 +36,7 @@ public class CslineController extends BaseController {
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/queryLineById")
@ApiOperation("监测点查询通过设备id获取")
@ApiOperation("监测点查询通过id获取")
@ApiImplicitParam(name = "ids", value = "设备id获集合", required = true)
public HttpResult<List<CsLinePO>> queryLineById(@RequestParam List<String> ids){
String methodDescribe = getMethodDescribe("queryLineById");
@@ -62,4 +63,15 @@ public class CslineController extends BaseController {
csLinePOService.saveBatch(list);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
}
// @OperateInfo(info = LogEnum.BUSINESS_COMMON)
// @PostMapping("/addLineList")
// @ApiOperation("批量新增监测点及绑定关系")
// @ApiImplicitParam(name = "list", value = "监测点数据集", required = true)
// public HttpResult<String> addLines(@RequestBody List<CsLineParm> list){
// String methodDescribe = getMethodDescribe("addLines");
// csLinePOService.addLines(list);
// return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe);
// }
}

View File

@@ -7,6 +7,7 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum;
import com.njcn.common.pojo.response.HttpResult;
import com.njcn.common.utils.HttpResultUtil;
import com.njcn.csdevice.pojo.param.CsLineTopologyTemplateParm;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.pojo.vo.CsTopologyDiagramTemplateVO;
import com.njcn.csdevice.service.CsLineTopologyTemplateService;
import com.njcn.web.controller.BaseController;
@@ -42,4 +43,14 @@ public class CsLineTopologyTemplateController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,flag, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON, operateType = OperateType.UPLOAD)
@PostMapping("/queryByTopoId")
@ApiOperation("根据拓扑图id查询监测点位置")
public HttpResult<List<CsLineTopologyTemplateVO>> queryByTopoId(@RequestParam("topoId") String topoId){
String methodDescribe = getMethodDescribe("queryByTopoId");
List<CsLineTopologyTemplateVO> csLineTopologyTemplateVOS = csLineTopologyTemplateService.queryByTopoId(topoId);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,csLineTopologyTemplateVOS, methodDescribe);
}
}

View File

@@ -52,6 +52,16 @@ public class RoleEngineerDevController extends BaseController {
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, roleengineer, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getRoleproject")
@ApiOperation("角色项目查询")
public HttpResult<List<String>> getRoleProject(){
String methodDescribe = getMethodDescribe("getRoleProject");
List<String> roleProject = roleEngineerDevService.getRoleProject();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, roleProject, methodDescribe);
}
@OperateInfo(info = LogEnum.BUSINESS_COMMON)
@PostMapping("/getDevice")
@ApiOperation("角色设备查询")

View File

@@ -3,6 +3,9 @@ package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.po.AppLineTopologyDiagramPO;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import java.util.List;
/**
*
@@ -17,4 +20,6 @@ public interface AppLineTopologyDiagramService extends IService<AppLineTopologyD
AppTopologyDiagramVO query(String devId);
}
List<AppLineTopologyDiagramPO> queryByTopoId(String id);
}

View File

@@ -1,6 +1,7 @@
package com.njcn.csdevice.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.csdevice.pojo.param.CsLineParm;
import com.njcn.csdevice.pojo.po.CsLinePO;
import java.util.List;
@@ -26,4 +27,5 @@ public interface CsLinePOService extends IService<CsLinePO>{
List<CsLinePO> queryByDevId(String devId);
}
// void addLines(List<CsLineParm> list);
}

View File

@@ -12,4 +12,6 @@ import java.util.List;
public interface RoleEngineerDevService {
List<String> getRoleengineer();
List<String> getDevice();
List<String> getRoleProject();
}

View File

@@ -9,6 +9,7 @@ import com.njcn.csdevice.pojo.param.AppTopologyDiagramQueryParm;
import com.njcn.csdevice.pojo.po.AppLineTopologyDiagramPO;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.service.AppLineTopologyDiagramService;
import com.njcn.csdevice.service.AppTopologyDiagramService;
import com.njcn.csdevice.service.CsLinePOService;
@@ -49,6 +50,13 @@ public class AppLineTopologyDiagramServiceImpl extends ServiceImpl<AppLineTopolo
throw new BusinessException("设备下未找到拓扑图信息");
}
AppTopologyDiagramVO appTopologyDiagramVO = appTopologyDiagramVOS.get(0);
appTopologyDiagramVO.setAppsLineTopologyDiagramPO(this.queryByTopoId(appTopologyDiagramVO.getId()));
return appTopologyDiagramVO;
}
@Override
public List<AppLineTopologyDiagramPO> queryByTopoId(String id) {
List<AppLineTopologyDiagramPO> list = this.lambdaQuery().eq(AppLineTopologyDiagramPO::getId, id).list();
return list;
}
}

View File

@@ -10,18 +10,22 @@ import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.csdevice.enums.AlgorithmResponseEnum;
import com.njcn.csdevice.mapper.AppProjectMapper;
import com.njcn.csdevice.mapper.CsLedgerMapper;
import com.njcn.csdevice.mapper.CsTopologyDiagramTemplateMapper;
import com.njcn.csdevice.pojo.param.*;
import com.njcn.csdevice.pojo.po.AppProjectPO;
import com.njcn.csdevice.pojo.po.CsLedger;
import com.njcn.csdevice.pojo.po.*;
import com.njcn.csdevice.pojo.vo.AppProjectVO;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.service.AppProjectService;
import com.njcn.csdevice.service.AppTopologyDiagramService;
import com.njcn.csdevice.service.CsLineTopologyTemplateService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -42,7 +46,8 @@ class AppProjectServiceImpl extends ServiceImpl<AppProjectMapper, AppProjectPO>
private final AppProjectMapper appProjectMapper;
private final AppTopologyDiagramService appTopologyDiagramService;
private final CsLedgerMapper csLedgerMapper;
private final CsTopologyDiagramTemplateMapper csTopologyDiagramTemplateMapper;
private final CsLineTopologyTemplateService csLineTopologyDiagramTemplateService;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean addAppProject(AppProjectAddParm appProjectAddOrAuditParm) {
@@ -58,14 +63,47 @@ class AppProjectServiceImpl extends ServiceImpl<AppProjectMapper, AppProjectPO>
BeanUtils.copyProperties (appProjectAddOrAuditParm, appProjectPO);
appProjectPO.setStatus ("1");
boolean save = this.save (appProjectPO);
for (int i = 0; i < appProjectAddOrAuditParm.getFiles ( ).length; i++) {
//如何使用拓扑图模板则将拓扑图模板复制绑定
if(!CollectionUtils.isEmpty(appProjectAddOrAuditParm.getTopoIds()) ){
List<AppTopologyDiagramPO> appTopologyDiagramPOS = new ArrayList<>();
List<CsLineTopologyTemplate> csLineTopologyTemplates = new ArrayList<>();
appProjectAddOrAuditParm.getTopoIds().forEach(temp->{
AppTopologyDiagramPO appTopologyDiagramPO = new AppTopologyDiagramPO();
CsTopologyDiagramTemplate csTopologyDiagramTemplate = csTopologyDiagramTemplateMapper.selectById(temp);
appTopologyDiagramPO.setFilePath (csTopologyDiagramTemplate.getFilePath());
appTopologyDiagramPO.setProjectId (appProjectPO.getId());
appTopologyDiagramPO.setName (csTopologyDiagramTemplate.getName());
appTopologyDiagramPO.setStatus ("1");
appTopologyDiagramPO.setTopoId(temp);
appTopologyDiagramService.save(appTopologyDiagramPO);
//如何使用拓扑图模板生成监测点模版
// List<CsLineTopologyTemplateVO> csLineTopologyTemplateVOS = csLineTopologyDiagramTemplateService.queryByTopoId(temp);
// List<CsLineTopologyTemplate> collect = csLineTopologyTemplateVOS.stream().map(temp1 -> {
// CsLineTopologyTemplate csLineTopologyTemplate = new CsLineTopologyTemplate();
// BeanUtils.copyProperties(temp1, csLineTopologyTemplate);
// csLineTopologyTemplate.setId(null);
// csLineTopologyTemplate.setStatus("1");
// csLineTopologyTemplate.setTopoId(appTopologyDiagramPO.getId());
// return csLineTopologyTemplate;
// }).collect(Collectors.toList());
// csLineTopologyTemplates.addAll(collect);
});
csLineTopologyDiagramTemplateService.saveBatch(csLineTopologyTemplates);
AppTopologyDiagramAddParm appTopologyDiagramAddParm = new AppTopologyDiagramAddParm ( );
appTopologyDiagramAddParm.setProjectId (appProjectPO.getId ( ));
appTopologyDiagramAddParm.setTopologyDiagramName (appProjectAddOrAuditParm.getFiles ( )[i].getOriginalFilename ( ));
appTopologyDiagramAddParm.setFile (appProjectAddOrAuditParm.getFiles ( )[i]);
appTopologyDiagramService.addAppTopologyDiagram (appTopologyDiagramAddParm);
}
if(Objects.nonNull( appProjectAddOrAuditParm.getFiles ( ))){
for (int i = 0; i < appProjectAddOrAuditParm.getFiles ( ).length; i++) {
AppTopologyDiagramAddParm appTopologyDiagramAddParm = new AppTopologyDiagramAddParm ( );
appTopologyDiagramAddParm.setProjectId (appProjectPO.getId ( ));
appTopologyDiagramAddParm.setTopologyDiagramName (appProjectAddOrAuditParm.getFiles ( )[i].getOriginalFilename ( ));
appTopologyDiagramAddParm.setFile (appProjectAddOrAuditParm.getFiles ( )[i]);
appTopologyDiagramService.addAppTopologyDiagram (appTopologyDiagramAddParm);
}
}
CsLedger csLedger = csLedgerMapper.selectById(appProjectAddOrAuditParm.getEngineeringId());
Optional.ofNullable(csLedger).orElseThrow(()-> new BusinessException(AlgorithmResponseEnum.ENGINEERING_DATA_ERROR));
CsLedger csLedger1 = new CsLedger();
@@ -152,6 +190,7 @@ class AppProjectServiceImpl extends ServiceImpl<AppProjectMapper, AppProjectPO>
appTopologyDiagramQueryParm.setProjectId(temp.getId());
List<AppTopologyDiagramVO> appTopologyDiagramVOList = appTopologyDiagramService.queryAppTopologyDiagram(appTopologyDiagramQueryParm);
temp.setTopologyDiagramPaths(appTopologyDiagramVOList);
return temp;
}).collect(Collectors.toList());
returnpage.setRecords(collect);

View File

@@ -22,6 +22,8 @@ import com.njcn.csdevice.pojo.po.AppTopologyDiagramPO;
import com.njcn.csdevice.pojo.po.CsLineTopologyTemplate;
import com.njcn.csdevice.pojo.po.CsTopologyDiagramTemplate;
import com.njcn.csdevice.pojo.vo.AppTopologyDiagramVO;
import com.njcn.csdevice.pojo.vo.CsLineTopologyTemplateVO;
import com.njcn.csdevice.service.AppLineTopologyDiagramService;
import com.njcn.csdevice.service.AppTopologyDiagramService;
import com.njcn.csdevice.service.CsLineTopologyTemplateService;
import com.njcn.oss.constant.OssPath;
@@ -54,19 +56,13 @@ public class AppTopologyDiagramServiceImpl extends ServiceImpl<AppTopologyDiagra
private final AppProjectMapper appServiceMapper;
private final AppTopologyDiagramMapper appTopologyDiagramMapper;
private final CsTopologyDiagramTemplateMapper csTopologyDiagramTemplateMapper;
private final CsLineTopologyTemplateService csLineTopologyTemplateService;
@Override
@Transactional(rollbackFor = {Exception.class})
public AppTopologyDiagramVO addAppTopologyDiagram(AppTopologyDiagramAddParm appTopologyDiagramAddParm) {
AppTopologyDiagramPO appTopologyDiagramPO = new AppTopologyDiagramPO();
//如何使用拓扑图模板则将拓扑图模板
if(StringUtils.isNotBlank(appTopologyDiagramAddParm.getTopoId()) ){
CsTopologyDiagramTemplate csTopologyDiagramTemplate = csTopologyDiagramTemplateMapper.selectById(appTopologyDiagramAddParm.getTopoId());
appTopologyDiagramPO.setFilePath (csTopologyDiagramTemplate.getFilePath());
appTopologyDiagramPO.setProjectId (appTopologyDiagramAddParm.getProjectId ()==null?"":appTopologyDiagramAddParm.getProjectId ());
appTopologyDiagramPO.setName (csTopologyDiagramTemplate.getName());
appTopologyDiagramPO.setStatus ("1");
}else{
MultipartFile file = appTopologyDiagramAddParm.getFile ( );
if(file.getSize()> DataParam.FILE_SIZE){
throw new BusinessException(AlgorithmResponseEnum.FILE_SIZE_ERROR);
@@ -77,7 +73,7 @@ public class AppTopologyDiagramServiceImpl extends ServiceImpl<AppTopologyDiagra
appTopologyDiagramPO.setName (appTopologyDiagramAddParm.getTopologyDiagramName ());
appTopologyDiagramPO.setStatus ("1");
boolean save = this.save (appTopologyDiagramPO);
}
AppTopologyDiagramVO vo = new AppTopologyDiagramVO();
@@ -128,6 +124,8 @@ public class AppTopologyDiagramServiceImpl extends ServiceImpl<AppTopologyDiagra
AppProjectPO appProjectPO = appServiceMapper.selectById(vo.getProjectId());
vo.setProjectName(appProjectPO.getName());
vo.setFilePath (fileStorageUtil.getFileUrl (vo.getFilePath ()));
List<CsLineTopologyTemplateVO> csLineTopologyTemplateVOS = csLineTopologyTemplateService.queryByTopoId(temp.getTopoId());
vo.setCsLineTopologyTemplateVOList(csLineTopologyTemplateVOS);
return vo;
}).collect (Collectors.toList ( ));
return collect;
@@ -154,6 +152,8 @@ public class AppTopologyDiagramServiceImpl extends ServiceImpl<AppTopologyDiagra
AppProjectPO appProjectPO = appServiceMapper.selectById(vo.getProjectId());
vo.setProjectName(appProjectPO.getName());
vo.setFilePath (fileStorageUtil.getFileUrl (temp.getFilePath ( )));
List<CsLineTopologyTemplateVO> csLineTopologyTemplateVOS = csLineTopologyTemplateService.queryByTopoId(temp.getTopoId());
vo.setCsLineTopologyTemplateVOList(csLineTopologyTemplateVOS);
return vo;
}).collect (Collectors.toList ( ));
returnpage.setRecords (collect);

View File

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -87,17 +88,28 @@ public class CsDeviceUserPOServiceImpl extends ServiceImpl<CsDeviceUserPOMapper,
List<String> device = roleEngineerDevService.getDevice();
if(CollectionUtils.isEmpty(device)){
devCountVO.setOnLineCount(0);
devCountVO.setOnLineDevs(new ArrayList<>());
devCountVO.setOffLineCount(0);
devCountVO.setOffLineDevs(new ArrayList<>());
devCountVO.setAllDevCount(0);
devCountVO.setAllDevs(new ArrayList<>());
}else {
devCountVO.setAllDevCount(device.size());
QueryWrapper<CsEquipmentDeliveryPO> queryWrapper = new QueryWrapper<>();
queryWrapper.in("id",device);
List<CsEquipmentDeliveryPO> csEquipmentDeliveryPOS = csEquipmentDeliveryMapper.selectList(queryWrapper);
long count = csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 1).count();
long count1 = csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 2).count();
devCountVO.setOnLineCount(Integer.valueOf(count1+""));
devCountVO.setOffLineCount(Integer.valueOf(count+""));
devCountVO.setAllDevs(csEquipmentDeliveryPOS);
List<CsEquipmentDeliveryPO> collect = csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 1).collect(Collectors.toList());
List<CsEquipmentDeliveryPO> collect2= csEquipmentDeliveryPOS.stream().filter(temp -> temp.getRunStatus() == 2).collect(Collectors.toList());
devCountVO.setOnLineCount(collect.size());
devCountVO.setOnLineDevs(collect);
devCountVO.setOffLineCount(collect2.size());
devCountVO.setOffLineDevs(collect2);
}
@@ -111,7 +123,7 @@ public class CsDeviceUserPOServiceImpl extends ServiceImpl<CsDeviceUserPOMapper,
// csEquipmentAlarmPageParam.setEndTime();
List<CsEquipmentAlarmVO> data = csEquipmentAlarmFeignClient.queryList(csEquipmentAlarmPageParm).getData();
List<String> devIds = data.stream().map(CsEquipmentAlarmVO::getEquipmentId).distinct().collect(Collectors.toList());
devCountVO.setAlarmLineDevs(data);
devCountVO.setAlarmEventCount(data.size());
devCountVO.setId(id);

View File

@@ -1,14 +1,19 @@
package com.njcn.csdevice.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.csdevice.mapper.CsLedgerMapper;
import com.njcn.csdevice.mapper.CsLinePOMapper;
import com.njcn.csdevice.pojo.param.CsLineParm;
import com.njcn.csdevice.pojo.po.AppLineTopologyDiagramPO;
import com.njcn.csdevice.pojo.po.CsLedger;
import com.njcn.csdevice.pojo.po.CsLinePO;
import com.njcn.csdevice.service.CsLinePOService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@@ -43,8 +48,55 @@ public class CsLinePOServiceImpl extends ServiceImpl<CsLinePOMapper, CsLinePO> i
queryWrapper.eq("state",1).eq("pid",devId);
List<CsLedger> csLedgerList = csLedgerMapper.selectList(queryWrapper);
List<String> csPairList = csLedgerList.stream().map(CsLedger::getId).collect(Collectors.toList());
if(CollectionUtil.isEmpty(csPairList)){
return new ArrayList<>();
}
List<CsLinePO> csLinePOS = this.listByIds(csPairList);
csLinePOS.forEach(temp->temp.setDevId(devId));
return csLinePOS;
}
// /**
// * 1.平台端默认配置拓扑图模板,包含拓扑图信息(cs_topology_diagram_template)和拓扑图上监测点的点位信息(cs_line_topology_template)
// *
// * 2.移动端新增项目时可以上传自己的拓扑图也可以选择拓扑图模板
// * 维护项目和拓扑图关系(cs_topology_diagram,这个表的id可以使用拓扑图模板id)
// * 用户使用拓扑图模板则根据模板id查(cs_line_topology_template)库中有几个监测点,绑定到监测点模板关系表中(cs_line_topology_diagram);
// * 用户自己添加拓扑图,则新增拓扑图信息(cs_topology_diagram),同时记录用户在此拓扑图上的点位信息(cs_line_topology_diagram)
// *
// * 3.用户注册直连设备,根据模板信息返回监测点数量,页面选择拓扑图,根据(cs_topology_diagram)拓扑图id查询(cs_line_topology_diagram)拓扑图监测点关系表,获取监测点信息。根据位置来获取打点信息。
// * 注:cs_line_topology_diagram这个表还需要加个位置字段不然无法根据位置来匹配对应的监测点
// *
// * 4.保存之后要在这些表中同步数据(cs_line、cs_ledger)
// *
// * @param list
// */
// @Override
// @Transactional(rollbackFor = Exception.class)
// public void addLines(List<CsLineParm> list) {
// List<CsLedger> csLedgerLis = new ArrayList<>();
// list.stream().forEach(temp->{
// CsLinePO csLinePO = new CsLinePO();
// BeanUtils.copyProperties(temp,csLinePO);
// this.save(csLinePO);
// String lineId = csLinePO.getLineId();
// CsLedger csLedger = new CsLedger();
//
// csLedger.setId(lineId);
// csLedger.setPid(temp.getDevId());
// csLedger.setLevel(3);
// csLedger.setSort(1);
// csLedger.setState(1);
//
//
// AppLineTopologyDiagramPO appLineTopologyDiagramPO = new AppLineTopologyDiagramPO();
// appLineTopologyDiagramPO.setId(temp.getTopoId());
// appLineTopologyDiagramPO.setStatus("1");
// appLineTopologyDiagramPO.setLineId(lineId);
// appLineTopologyDiagramPO.setLat(temp.getLat());
// appLineTopologyDiagramPO.setLng(temp.getLng());
//
// });
//
// }
}

View File

@@ -138,6 +138,21 @@ public class RoleEngineerDevServiceImpl implements RoleEngineerDevService {
return collect;
}
@Override
public List<String> getRoleProject() {
List<String> roleengineer = this.getRoleengineer();
if(CollectionUtils.isEmpty(roleengineer)){
return new ArrayList<>();
}
QueryWrapper<CsLedger> csLedgerQueryWrapper = new QueryWrapper<>();
csLedgerQueryWrapper.clear();
csLedgerQueryWrapper.eq("level",1).eq("state",1).in("pid",roleengineer);
List<CsLedger> csLedgers = csLedgerMapper.selectList(csLedgerQueryWrapper);
List<String> collect = csLedgers.stream().map(CsLedger::getId).distinct().collect(Collectors.toList());
return collect;
}
}