开发平面
parent
727202d135
commit
c5cdcd4730
@ -0,0 +1,13 @@
|
|||||||
|
package com.sz.admin.monitor.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description:画板
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public interface CanvasCfgMapper extends BaseMapper<CanvasCfgDO> {
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.sz.admin.monitor.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 网格
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public interface GridCfgMapper extends BaseMapper<GridCfgDO> {
|
||||||
|
}
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
package com.sz.admin.monitor.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 存储模型的基本信息和配置
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public interface ModelContentMapper extends BaseMapper<ModelContentDO> {
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
package com.sz.admin.monitor.mapper;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.BaseMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.po.Substation;
|
||||||
|
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
||||||
|
|
||||||
|
public interface UserModelContentMapper extends BaseMapper<UserModelContentDO> {
|
||||||
|
}
|
||||||
@ -0,0 +1,41 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.dto.dataModel;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description:返回给前端的数据对象
|
||||||
|
* @date 2026/1/29 11:47
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DataModelDTO {
|
||||||
|
/**
|
||||||
|
* 模型数据对象
|
||||||
|
*/
|
||||||
|
private CanvasCfgDTO canvasCfg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 画布配置数据对象
|
||||||
|
*/
|
||||||
|
private GridCfgDTO gridCfg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模型数据对象
|
||||||
|
*/
|
||||||
|
private List<ModelContentDTO> json;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目录类型
|
||||||
|
*/
|
||||||
|
private String menuType;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.dto.dataModel;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网格配置数据对象
|
||||||
|
* @description: 存储网格的基本配置信息
|
||||||
|
* @author xq
|
||||||
|
* @date 2026/1/29 11:35
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class GridCfgDTO {
|
||||||
|
/**
|
||||||
|
* 网格id
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网格是否启用
|
||||||
|
*/
|
||||||
|
private Boolean enabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对齐
|
||||||
|
*/
|
||||||
|
private Boolean align;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 大小
|
||||||
|
*/
|
||||||
|
private Integer size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换为数据库对象
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static GridCfgDO dtoConvertDO(GridCfgDTO dto){
|
||||||
|
GridCfgDO gridCfgDO = BeanUtil.copyProperties(dto, GridCfgDO.class);
|
||||||
|
return gridCfgDO;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.dto.dataModel;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description:
|
||||||
|
* @date 2026/1/29 11:50
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class UserModelContentDTO {
|
||||||
|
/**
|
||||||
|
* 表id
|
||||||
|
*/
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
/**
|
||||||
|
* 目录类型
|
||||||
|
*/
|
||||||
|
private String menuType;
|
||||||
|
/**
|
||||||
|
* 模型内容
|
||||||
|
*/
|
||||||
|
private String modelContentId;
|
||||||
|
}
|
||||||
@ -0,0 +1,71 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.po;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网格配置数据对象
|
||||||
|
* @description: 存储网格的基本配置信息
|
||||||
|
* @author xq
|
||||||
|
* @date 2026/1/29 11:35
|
||||||
|
*/
|
||||||
|
@Table("grid_cfg")
|
||||||
|
@Schema(description = "存储网格的基本配置信息")
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class GridCfgDO {
|
||||||
|
/**
|
||||||
|
* 网格id
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网格是否启用
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private Boolean enabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对齐
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private Boolean align;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 大小
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private Integer size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转换为DTO对象
|
||||||
|
* @param gridCfgDO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static GridCfgDTO doConvertDTO(GridCfgDO gridCfgDO){
|
||||||
|
GridCfgDTO gridCfgDTO = BeanUtil.copyProperties(gridCfgDO, GridCfgDTO.class);
|
||||||
|
return gridCfgDTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static final String ID = "id";
|
||||||
|
public static final String USER_ID = "user_id";
|
||||||
|
public static final String ENABLED = "enabled";
|
||||||
|
public static final String ALIGN = "align";
|
||||||
|
public static final String SIZE = "size";
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.po;
|
||||||
|
|
||||||
|
import com.mybatisflex.annotation.Table;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/** 用户模型中间表
|
||||||
|
* @description:
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
@Table("user_model_content")
|
||||||
|
@Schema(description = "用户模型中间表")
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class UserModelContentDO implements Serializable {
|
||||||
|
/**
|
||||||
|
* 表id
|
||||||
|
*/
|
||||||
|
@Schema(description = "主键ID")
|
||||||
|
private String id;
|
||||||
|
/**
|
||||||
|
* 用户id
|
||||||
|
*/
|
||||||
|
@Schema(description = "用户id")
|
||||||
|
private String userId;
|
||||||
|
/**
|
||||||
|
* 目录类型
|
||||||
|
*/
|
||||||
|
@Schema(description = "目录类型")
|
||||||
|
private String menuType;
|
||||||
|
/**
|
||||||
|
* 模型内容
|
||||||
|
*/
|
||||||
|
@Schema(description = "模型内容")
|
||||||
|
private String modelContentId;
|
||||||
|
|
||||||
|
public static final String ID="id";
|
||||||
|
public static final String USER_ID="user_id";
|
||||||
|
public static final String MENU_TYPE="menu_type";
|
||||||
|
public static final String MODEL_CONTENT_ID="model_content_id";
|
||||||
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package com.sz.admin.monitor.pojo.que.dataModel;
|
||||||
|
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description: 查询参数对象
|
||||||
|
* @date 2026/1/29 21:47
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class DataModelQue {
|
||||||
|
/**
|
||||||
|
* 用户ID
|
||||||
|
*/
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目录类型
|
||||||
|
*/
|
||||||
|
private String menuType;
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.sz.admin.monitor.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.CanvasCfgDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 画板
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public interface CanvasCfgService extends IService<CanvasCfgDO> {
|
||||||
|
void saveOrUpdateCanvas(CanvasCfgDTO canvasCfgDTO);
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
package com.sz.admin.monitor.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description:网格
|
||||||
|
* @date 2026/1/29 11:45
|
||||||
|
*/
|
||||||
|
public interface GridCfgService extends IService<GridCfgDO> {
|
||||||
|
void saveOrUpdateGrid(GridCfgDTO gridCfgDTO);
|
||||||
|
}
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
package com.sz.admin.monitor.service;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.ModelContentDO;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description: 存储模型的基本信息和配置
|
||||||
|
* @author xq
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public interface ModelContentService extends IService<ModelContentDO> {
|
||||||
|
HashMap<String, List<String>> saveOrUpdateModel(List<ModelContentDTO> list,String menuType);
|
||||||
|
}
|
||||||
@ -0,0 +1,12 @@
|
|||||||
|
package com.sz.admin.monitor.service;
|
||||||
|
|
||||||
|
import com.mybatisflex.core.service.IService;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.Substation;
|
||||||
|
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface UserModelContentService extends IService<UserModelContentDO> {
|
||||||
|
public void saveOrUpdateModel(List<ModelContentDTO> list);
|
||||||
|
}
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
package com.sz.admin.monitor.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.sz.admin.monitor.mapper.CanvasCfgMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.CanvasCfgDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.CanvasCfgDO;
|
||||||
|
import com.sz.admin.monitor.service.CanvasCfgService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description: 画板
|
||||||
|
* @date 2026/1/29 11:34
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class CanvasCfgServiceImpl extends ServiceImpl<CanvasCfgMapper, CanvasCfgDO> implements CanvasCfgService {
|
||||||
|
@Override
|
||||||
|
public void saveOrUpdateCanvas(CanvasCfgDTO canvasCfgDTO) {
|
||||||
|
if(ObjectUtil.isEmpty(canvasCfgDTO))
|
||||||
|
return;
|
||||||
|
CanvasCfgDO canvasCfgDO = CanvasCfgDTO.dtoConvertDO(canvasCfgDTO);
|
||||||
|
if(StrUtil.isEmpty(canvasCfgDO.getUserId())) {
|
||||||
|
saveOrUpdate(canvasCfgDO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper queryWrapper = QueryWrapper
|
||||||
|
.create()
|
||||||
|
.from(CanvasCfgDO.class)
|
||||||
|
.where(CanvasCfgDO.USER_ID, canvasCfgDTO.getUserId())
|
||||||
|
.limit(1);
|
||||||
|
CanvasCfgDO one = getOne(queryWrapper);
|
||||||
|
|
||||||
|
// CanvasCfgDO one = getOne(new QueryWrapper<CanvasCfgDO>()
|
||||||
|
// .eq(CanvasCfgDO.USER_ID, canvasCfgDTO.getUserId())
|
||||||
|
// .last("limit 1")
|
||||||
|
// );
|
||||||
|
|
||||||
|
if(ObjectUtil.isEmpty(one)) {
|
||||||
|
saveOrUpdate(canvasCfgDO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
canvasCfgDO.setId(one.getId());
|
||||||
|
saveOrUpdate(canvasCfgDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
package com.sz.admin.monitor.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.sz.admin.monitor.mapper.GridCfgMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.GridCfgDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.GridCfgDO;
|
||||||
|
import com.sz.admin.monitor.service.GridCfgService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description:网格
|
||||||
|
* @date 2026/1/29 11:45
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class GridCfgServiceImpl extends ServiceImpl<GridCfgMapper, GridCfgDO> implements GridCfgService {
|
||||||
|
@Override
|
||||||
|
public void saveOrUpdateGrid(GridCfgDTO dto) {
|
||||||
|
if (ObjectUtil.isEmpty(dto))
|
||||||
|
return;
|
||||||
|
GridCfgDO gridCfgDO = GridCfgDTO.dtoConvertDO(dto);
|
||||||
|
if (StrUtil.isEmpty(gridCfgDO.getUserId())) {
|
||||||
|
saveOrUpdate(gridCfgDO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||||
|
.from(GridCfgDO.class)
|
||||||
|
.where(GridCfgDO.USER_ID, gridCfgDO.getUserId())
|
||||||
|
.limit(1);
|
||||||
|
|
||||||
|
GridCfgDO one = getOne(queryWrapper);
|
||||||
|
|
||||||
|
// GridCfgDO one = getOne(new QueryWrapper<GridCfgDO>()
|
||||||
|
// .eq(GridCfgDO.USER_ID, gridCfgDO.getUserId())
|
||||||
|
// .last("limit 1")
|
||||||
|
// );
|
||||||
|
if (ObjectUtil.isEmpty(one)) {
|
||||||
|
saveOrUpdate(gridCfgDO);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
gridCfgDO.setId(one.getId());
|
||||||
|
saveOrUpdate(gridCfgDO);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package com.sz.admin.monitor.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||||
|
import com.sz.admin.monitor.mapper.SubstationMapper;
|
||||||
|
import com.sz.admin.monitor.mapper.UserModelContentMapper;
|
||||||
|
import com.sz.admin.monitor.pojo.dto.dataModel.ModelContentDTO;
|
||||||
|
import com.sz.admin.monitor.pojo.po.Substation;
|
||||||
|
import com.sz.admin.monitor.pojo.po.UserModelContentDO;
|
||||||
|
import com.sz.admin.monitor.service.SubstationService;
|
||||||
|
import com.sz.admin.monitor.service.UserModelContentService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xq
|
||||||
|
* @description:
|
||||||
|
* @date 2026/3/13 10:23
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class UserModelContentServiceImpl extends ServiceImpl<UserModelContentMapper, UserModelContentDO> implements UserModelContentService {
|
||||||
|
@Override
|
||||||
|
public void saveOrUpdateModel(List<ModelContentDTO> list) {
|
||||||
|
if(CollectionUtil.isEmpty(list))
|
||||||
|
return;
|
||||||
|
for (ModelContentDTO modelContentDTO : list) {
|
||||||
|
ModelContentDTO.dtoConvertDO(modelContentDTO);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue