package com.hxzk.gps.service.impl.ThreeModel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hxzk.gps.controller.Map.Results.MarsResult;
import com.hxzk.gps.controller.System.SystemLogUtil;
import com.hxzk.gps.controller.ThreeModel.Results.ThreeModelResult;
import com.hxzk.gps.controller.ThreeModel.deo.ThreeModelDeo;
import com.hxzk.gps.entity.Company.TbCompany;
import com.hxzk.gps.entity.Map.TbMarsHomeset;
import com.hxzk.gps.entity.ThreeModel.TbThreemodel;
import com.hxzk.gps.mapper.ThreeModel.TbThreemodelMapper;
import com.hxzk.gps.service.Company.TbCompanyService;
import com.hxzk.gps.service.ThreeModel.TbThreemodelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hxzk.gps.util.GetUser.UserInfoUtil;
import com.hxzk.gps.util.MessageUtils.MessageUtils;
import com.hxzk.gps.util.Result.ReturnMessage;
import com.hxzk.gps.util.Result.TableDto;
import com.hxzk.gps.util.Time.TimeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author YuZhiTong
* @since 2025-09-03
*/
@Service
public class TbThreemodelServiceImpl extends ServiceImpl implements TbThreemodelService {
@Autowired
TbCompanyService companyService;
@Value("${upload.dir-Map-Three}")
private String dirMapThree;
@Override
public ThreeModelResult FindThreemodel(ThreeModelDeo threeModelDeo) {
// 开启分页
PageHelper.startPage(threeModelDeo.getPageNum(), threeModelDeo.getPageSize());
// 创建查询包装器
QueryWrapper queryWrapperCompany = new QueryWrapper<>();
// 处理部门 ID 为空的情况
if ("".equals(threeModelDeo.getDepartmentId())) {
List list = companyService.getChildCompanyIds(UserInfoUtil.getUserCompanyId());
queryWrapperCompany.in("companyid", list);
} else {
List list = companyService.getChildCompanyIds(threeModelDeo.getDepartmentId());
queryWrapperCompany.in("companyid", list);
}
// 查询三维地图列表
List Threemodel = baseMapper.selectList(queryWrapperCompany);
PageInfo info = new PageInfo<>(Threemodel);
// 封装角色列表
TableDto tableDto = new TableDto(info.getList(), info.getPageNum(), info.getPageSize(), info.getTotal());
// 获取成功消息
String message = MessageUtils.getMessage("Success");
// 返回结果
return new ThreeModelResult(200, message, tableDto);
}
@Override
public ReturnMessage add(TbThreemodel tbThreemodel) {
/*
声明操作状态
* */
boolean isSuccess = false;
try {
// 检查是否已存在相同公司ID的记录
QueryWrapper checkWrapper = new QueryWrapper<>();
checkWrapper.eq("filename", tbThreemodel.getFilename());
if (baseMapper.selectCount(checkWrapper) > 0) {
return ReturnMessage.ReturnMessageError("ThreeModelExist");
}
if(tbThreemodel.getCompanyid() == null){
tbThreemodel.setCompanyid(UserInfoUtil.getUserCompanyId());
}
TbCompany company = companyService.getBaseMapper().selectOne(new QueryWrapper().eq("id",tbThreemodel.getCompanyid()));
tbThreemodel.setCompany(company.getSystemname());
tbThreemodel.setAddtime(TimeUtil.GetTime());
isSuccess = true;
baseMapper.insert(tbThreemodel);
String fileAdress = dirMapThree+tbThreemodel.getCompany()+"_"+tbThreemodel.getFilename();
// 创建文件夹
File folder = new File(fileAdress);
if (!folder.exists()) {
folder.mkdirs();
}
} catch (Exception e) {
log.error("添加三维模型失败");
}
return SystemLogUtil.handleUpdateResult(isSuccess,"MapModelAdd",tbThreemodel.getCompany());
}
@Override
public ReturnMessage update(TbThreemodel tbThreemodel) {
/*
声明操作状态
* */
boolean isSuccess = false;
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",tbThreemodel.getId());
try {
isSuccess= true;
baseMapper.update(tbThreemodel,queryWrapper);
}catch (Exception e){
}
return SystemLogUtil.handleUpdateResult(isSuccess,"MapModelUpdate",tbThreemodel.getCompany());
}
}