|
@@ -501,7 +501,13 @@ public class LabSubjectManagerService {
|
|
|
|
|
|
|
|
//1.获取权限的分页数据
|
|
//1.获取权限的分页数据
|
|
|
PageHelperUtil.startPage();
|
|
PageHelperUtil.startPage();
|
|
|
- List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAUTH(subject);
|
|
|
|
|
|
|
+ List<LabSubjectVO> labSubjects;
|
|
|
|
|
+ if(labSubListQuery.getPcControl()){
|
|
|
|
|
+ labSubjects = subjectService.selectLabSubjectListAuthByPc(subject);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ labSubjects = subjectService.selectLabSubjectListAUTH(subject);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
List<Long> subIds = new ArrayList<>();
|
|
List<Long> subIds = new ArrayList<>();
|
|
|
labSubjects.forEach( a -> {
|
|
labSubjects.forEach( a -> {
|
|
|
// 危险源
|
|
// 危险源
|
|
@@ -550,8 +556,8 @@ public class LabSubjectManagerService {
|
|
|
public LabSubjectControllerVO querySubById(Long id, Integer type) {
|
|
public LabSubjectControllerVO querySubById(Long id, Integer type) {
|
|
|
LabSubject subject = new LabSubject();
|
|
LabSubject subject = new LabSubject();
|
|
|
subject.setId(id);
|
|
subject.setId(id);
|
|
|
- List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAUTH(subject);
|
|
|
|
|
- List<LabSubjectControllerVO> list = createSubControllerVO(labSubjects, true, true, true, true, true);
|
|
|
|
|
|
|
+ List<LabSubjectVO> labSubjects = subjectService.selectLabSubjectListAuthByPc(subject);
|
|
|
|
|
+ List<LabSubjectControllerVO> list = createSubControllerVO2(labSubjects, true, true, true, true, true);
|
|
|
if(list.size() > 0){
|
|
if(list.size() > 0){
|
|
|
LabSubjectControllerVO subjectControllerVO = list.get(0);
|
|
LabSubjectControllerVO subjectControllerVO = list.get(0);
|
|
|
subjectControllerVO.setSafeUserNameAdminPhone(labSubjectMapper.queryUserNameBySafeUserInfo(subjectControllerVO.getSafeUserId()));
|
|
subjectControllerVO.setSafeUserNameAdminPhone(labSubjectMapper.queryUserNameBySafeUserInfo(subjectControllerVO.getSafeUserId()));
|
|
@@ -1190,6 +1196,129 @@ public class LabSubjectManagerService {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 生成实验室控制VO
|
|
|
|
|
+ * 2021年11月12日 增加了{@link SubQueryManager} 请看其中的方法
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param labSubjects
|
|
|
|
|
+ * @param flag 是否计算权限(数据权限>负责人 ,数据权限会覆盖负责人 )
|
|
|
|
|
+ * @param iflabSubClassVOS 是否计算危险等级
|
|
|
|
|
+ * @param iflabHardwares 是否计算可控设备
|
|
|
|
|
+ * @param iflabSensors 是否计算传感器
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Deprecated
|
|
|
|
|
+ private List<LabSubjectControllerVO> createSubControllerVO2(List<? extends LabSubject> labSubjects, boolean flag, boolean iflabSubClassVOS, boolean iflabHardwares, boolean iflabSensors, boolean ifFunction) {
|
|
|
|
|
+ List<LabSubjectControllerVO> list = null;
|
|
|
|
|
+ if (CollUtil.isNotEmpty(labSubjects)) {
|
|
|
|
|
+ Long[] longs = labSubjects.stream().map(a -> a.getId()).toArray(Long[]::new);
|
|
|
|
|
+ //0.获取危险等级
|
|
|
|
|
+// List<LabSubClassVO> labSubClassVOS = null;
|
|
|
|
|
+// if (iflabSubClassVOS) {
|
|
|
|
|
+// labSubClassVOS = subjectService.querySubClassesByIds(longs);
|
|
|
|
|
+// }
|
|
|
|
|
+ List<LabHardware> labHardwares = null;
|
|
|
|
|
+ if (iflabHardwares) {
|
|
|
|
|
+ //1.可控设备
|
|
|
|
|
+ labHardwares = hardwareMapper.selectLabHardwareBySubIds(longs);
|
|
|
|
|
+ }
|
|
|
|
|
+ List<LabSensor> labSensors = null;
|
|
|
|
|
+ boolean flagUpdate = false;
|
|
|
|
|
+ //获取测点列表
|
|
|
|
|
+ if (ifFunction) {
|
|
|
|
|
+ //2.获取传感器
|
|
|
|
|
+ labSensors = sensorMapper.selectSensorBySubIds(longs);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (iflabSensors && ifFunction == false) {
|
|
|
|
|
+ //2.获取传感器
|
|
|
|
|
+ labSensors = sensorMapper.selectSensorBySubIds(longs);
|
|
|
|
|
+ }
|
|
|
|
|
+ //2.1.获取详细地址后面做(已完成)
|
|
|
|
|
+ Long[] layoutIds = labSubjects.stream().map(a -> a.getLayoutId()).filter(a -> a != null).toArray(Long[]::new);
|
|
|
|
|
+ List<SubAddrr> subAddrrs = subjectLayoutService.selectAddrrByLayoutIdsByPc(layoutIds);
|
|
|
|
|
+ Map<Long, SubAddrr> subAddrrMap = subAddrrs.stream().collect(Collectors.toMap(SubAddrr::getId, Function.identity()));
|
|
|
|
|
+ //3.获取实验室是否拥有数据权限
|
|
|
|
|
+ //3 获取实验室数据权限(杨森的需求:仅负责人时不能修改实验室) 后面做(已完成)
|
|
|
|
|
+ List<LabSubjectVO> labSubjectsDataScope = null;
|
|
|
|
|
+ if (flag) {
|
|
|
|
|
+ // 实验权限覆盖后面做(已完成)
|
|
|
|
|
+ LabSubject subject = new LabSubject();
|
|
|
|
|
+// subject.setAdminId(SecurityUtils.getUserIdEx());
|
|
|
|
|
+ //获取我的实验室
|
|
|
|
|
+ labSubjectsDataScope = subjectService.selectLabSubjectListDataScope(subject);
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<Long, Long> mapSubDataScope = Optional.ofNullable(labSubjectsDataScope).orElseGet(Collections::emptyList)
|
|
|
|
|
+ .stream().collect(Collectors.toMap(a -> a.getId(), a -> a.getId()));
|
|
|
|
|
+ //4.传感器和可控设备都转为vo数据,并映射为map表
|
|
|
|
|
+ Map<Long, List<HardwareCVO>> mapHardwareCVO = Optional.ofNullable(labHardwares).orElse(new ArrayList<>(0)).stream().map(a -> {
|
|
|
|
|
+ HardwareCVO hardware = getHardwareCVO(a);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return hardware;
|
|
|
|
|
+ }).collect(Collectors.groupingBy(HardwareCVO::getSubId));
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, List<LabSensor>> mapSenseTemp = Optional.ofNullable(labSensors)
|
|
|
|
|
+ .orElse(Arrays.asList())
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(LabSensor::getSubjectId));
|
|
|
|
|
+ Map<Long, List<SenseValVO>> mapSenseValVO = Optional.ofNullable(labSensors).orElse(Arrays.asList()).stream().map(a -> {
|
|
|
|
|
+ SenseValVO senseValVO = getSenseValVO(a);
|
|
|
|
|
+ return senseValVO;
|
|
|
|
|
+ }).collect(Collectors.groupingBy(SenseValVO::getSubId));
|
|
|
|
|
+// //映射危险等级 需求变更
|
|
|
|
|
+// Map<Long, LabSubClassVO> subClassMap = Optional.ofNullable(labSubClassVOS)
|
|
|
|
|
+// .orElse(Arrays.asList())
|
|
|
|
|
+// .stream()
|
|
|
|
|
+// .collect(Collectors.toMap(a -> a.getSubjectId(), Function.identity()));
|
|
|
|
|
+ //5.转为实验室vo 数据 ,组装设备和权限到实验室
|
|
|
|
|
+ list = labSubjects.stream().map(a -> {
|
|
|
|
|
+ a.setQrCodeUrl(a.getId() + "-" + Optional.ofNullable(a.getRoom()).orElse(""));
|
|
|
|
|
+
|
|
|
|
|
+ LabSubjectControllerVO scVO = new LabSubjectControllerVO();
|
|
|
|
|
+ BeanUtils.copyProperties(a, scVO);
|
|
|
|
|
+
|
|
|
|
|
+ if (iflabSensors) {
|
|
|
|
|
+ scVO.setSenseVOList(mapSenseValVO.get(a.getId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ if (iflabHardwares) {
|
|
|
|
|
+ scVO.setLabHardwareVOList(mapHardwareCVO.get(a.getId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ //设置测点列表
|
|
|
|
|
+ if (ifFunction) {
|
|
|
|
|
+ List<LabSensor> labSensors1 = mapSenseTemp.get(a.getId());
|
|
|
|
|
+ List<SensorFunctionStatus> sensorFunctionStatuses = getSensorFunctionStatuses(labSensors1, true);
|
|
|
|
|
+ scVO.setSensorFunctionStatusList(sensorFunctionStatuses);
|
|
|
|
|
+ logger.info("setSensorFunctionStatusList:" + JSONObject.toJSONString(scVO.getSensorFunctionStatusList()));
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ //设置危险等级
|
|
|
|
|
+ if (iflabSubClassVOS) {
|
|
|
|
|
+ LabSubClassVO labSubClassVO = new LabSubClassVO();
|
|
|
|
|
+ if (scVO.getLevel() != null) {
|
|
|
|
|
+ labSubClassVO.setDangerLevel(Long.valueOf(scVO.getLevel()));
|
|
|
|
|
+ }
|
|
|
|
|
+ scVO.setSubClassVO(labSubClassVO);
|
|
|
|
|
+ }
|
|
|
|
|
+ //需求变化, 危险等级不再和危险品关联,直接和实验室关联
|
|
|
|
|
+
|
|
|
|
|
+ //设置地址信息 后面做(已完成)
|
|
|
|
|
+ scVO.setSubAddrr(subAddrrMap.get(a.getLayoutId()));
|
|
|
|
|
+ if (flag) {
|
|
|
|
|
+ scVO.setAdmin(Boolean.FALSE);
|
|
|
|
|
+ //实验权限覆盖 后面做(已完成)
|
|
|
|
|
+ if (mapSubDataScope.containsKey(a.getId())) {
|
|
|
|
|
+ scVO.setAdmin(Boolean.TRUE);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return scVO;
|
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+ return list;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 异步执行 查询危险等级
|
|
* 异步执行 查询危险等级
|
|
|
*
|
|
*
|