package com.javaweb.geo.service.impl;
|
|
import java.io.File;
|
import java.nio.charset.Charset;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.util.ZipUtil;
|
import com.javaweb.common.config.Global;
|
import com.javaweb.common.core.domain.AjaxResult;
|
import com.javaweb.common.utils.DateUtils;
|
import com.javaweb.common.utils.IdGenerate;
|
import com.javaweb.common.utils.StringUtils;
|
import com.javaweb.geo.domain.Hole;
|
import com.javaweb.geo.domain.HoleMedia;
|
import com.javaweb.geo.mapper.HoleMapper;
|
import com.javaweb.geo.mapper.HoleMediaMapper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.javaweb.geo.mapper.ProjectDataMapper;
|
import com.javaweb.geo.domain.ProjectData;
|
import com.javaweb.geo.service.IProjectDataService;
|
import com.javaweb.common.core.text.Convert;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.ObjectUtils;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* 项目资料Service业务层处理
|
*
|
* @author cxy
|
* @date 2024-05-16
|
*/
|
@Service
|
public class ProjectDataServiceImpl implements IProjectDataService {
|
|
|
private static String zipfile = "zipfile";
|
private static String zipfile2 = "zipfile2";
|
|
//zip 原始文件
|
private static String ZIPUploadPath = Global.getProfile() + "\\" + zipfile + "\\";
|
|
//解压文件
|
private static String ZIPUploadPath2 = Global.getProfile() + "\\" + zipfile2 + "\\";
|
|
@Autowired
|
private ProjectDataMapper projectDataMapper;
|
@Autowired
|
private HoleMapper holeMapper;
|
|
@Autowired
|
private HoleMediaMapper mediaMapper;
|
|
|
/**
|
* 查询项目资料
|
*
|
* @param id 项目资料ID
|
* @return 项目资料
|
*/
|
@Override
|
public ProjectData selectProjectDataById(String id) {
|
return projectDataMapper.selectProjectDataById(id);
|
}
|
|
/**
|
* 查询项目资料列表
|
*
|
* @param projectData 项目资料
|
* @return 项目资料
|
*/
|
@Override
|
public List<ProjectData> selectProjectDataList(ProjectData projectData) {
|
if (!ObjectUtils.isEmpty(projectData.getDataType()) && projectData.getDataType().endsWith(",")) {
|
projectData.setDataType(projectData.getDataType().substring(0, 1));
|
}
|
return projectDataMapper.selectProjectDataList(projectData);
|
}
|
|
/**
|
* 新增项目资料
|
*
|
* @param projectData 项目资料
|
* @return 结果
|
*/
|
@Override
|
public int insertProjectData(ProjectData projectData) {
|
if (ObjectUtils.isEmpty(projectData.getId())) {
|
projectData.setId(IdGenerate.nextId());
|
}
|
projectData.setCreateTime(DateUtils.getNowDate());
|
return projectDataMapper.insertProjectData(projectData);
|
}
|
|
/**
|
* 修改项目资料
|
*
|
* @param projectData 项目资料
|
* @return 结果
|
*/
|
@Override
|
public int updateProjectData(ProjectData projectData) {
|
projectData.setUpdateTime(DateUtils.getNowDate());
|
return projectDataMapper.updateProjectData(projectData);
|
}
|
|
/**
|
* 删除项目资料对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteProjectDataByIds(String ids) {
|
return projectDataMapper.deleteProjectDataByIds(Convert.toStrArray(ids));
|
}
|
|
/**
|
* 删除项目资料信息
|
*
|
* @param id 项目资料ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteProjectDataById(String id) {
|
return projectDataMapper.deleteProjectDataById(id);
|
}
|
|
@Override
|
public AjaxResult uploadZIP(MultipartFile file, HttpServletRequest request) {
|
|
String originalFilename = file.getOriginalFilename();
|
//传入的钻孔的id
|
String projectDataId = request.getParameter("projectDataId");
|
|
//获取后缀.zip 保存的文件名
|
String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
|
String UID = IdGenerate.nextId();
|
String dFileName = UID + substring;
|
|
File file2 = new File(ZIPUploadPath + dFileName);
|
try {
|
file.transferTo(file2);
|
} catch (Exception e) {
|
return AjaxResult.warn("附件上传失败!");
|
}
|
|
//解压缩
|
try {
|
ZipUtil.unzip(file2, Charset.forName("GBK"));
|
} catch (Exception e) {
|
return AjaxResult.warn("附件解压缩失败!");
|
}
|
|
//移动到zipfile2 存储解压完毕的文件
|
String moveDir = ZIPUploadPath + UID;
|
moveFile(moveDir);
|
|
//更新数据库
|
updateFilePath(projectDataId, ZIPUploadPath2 + UID +"\\" + originalFilename.replace(substring, "") );
|
|
ProjectData projectData = new ProjectData();
|
|
//更新 projectData url
|
String dataUrl = zipfile + "/" + UID +".zip";
|
projectData.setDataUrl(dataUrl);
|
projectData.setId(projectDataId);
|
projectDataMapper.updateProjectData(projectData);
|
|
FileUtil.del(new File(ZIPUploadPath + UID));
|
|
return AjaxResult.success("上传成功");
|
}
|
|
//移动 文件
|
private void moveFile(String moveDir) {
|
File file = new File(moveDir);
|
File dest = new File(ZIPUploadPath2);
|
FileUtil.move(file,dest,true);
|
}
|
|
|
@Transactional(rollbackFor = Exception.class)
|
public void updateFilePath(String projectDataId, String dirpath) {
|
|
ProjectData projectData = projectDataMapper.selectProjectDataById(projectDataId);
|
String projectId= projectData.getProjectId();
|
|
File fileDir = new File(dirpath);
|
|
if (fileDir.isDirectory()) {
|
File[] files = fileDir.listFiles();
|
int len = files.length;
|
for (int i = 0; i < len; i++) {
|
String filename = files[i].getName();
|
String filepath = files[i].getPath();
|
String url = filepath.replace(Global.getProfile(),"").replace("\\","/");
|
|
HoleMedia media = new HoleMedia();
|
media.setIds(IdGenerate.nextId());
|
media.setRecordId(projectDataId);
|
media.setProjectId(projectId);
|
media.setName(filename);
|
media.setInternetPath(url);
|
media.setCreateTime(DateUtils.getNowDate());
|
mediaMapper.insertHoleMedia(media);
|
}
|
}
|
|
}
|
}
|