package com.hssx.cloudmodel.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hssx.cloudmodel.constant.Constant;
import com.hssx.cloudmodel.entity.*;
import com.hssx.cloudmodel.entity.vo.MouldFileVO;
import com.hssx.cloudmodel.entity.vo.UserVO;
import com.hssx.cloudmodel.mapper.*;
import com.hssx.cloudmodel.service.MouldFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hssx.cloudmodel.util.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
*
* 服务实现类
*
*
* @author 吴涛涛
* @since 2019-08-07
*/
@Service
public class MouldFileServiceImpl extends ServiceImpl implements MouldFileService {
@Resource
UserMapper userMapper;
@Resource
MouldFileMapper mouldFileMapper;
@Resource
MouldOperationDynamicsMapper mouldOperationDynamicsMapper;
@Resource
ProjectMapper projectMapper;
@Resource
MouldMapper mouldMapper;
@Resource
ProjectUserMapper projectUserMapper;
@Resource
ProjectApproveMapper projectApproveMapper;
@Resource
PartMapper partMapper;
@Resource
NewsNoticeMapper newsNoticeMapper;
@Resource
NewsNoticeUserMapper newsNoticeUserMapper;
@Override
public HttpRespMsg addFile(UserVO userVO, Integer blongType, MultipartFile file, MultipartFile file2, String path) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
Mould mould = mouldMapper.selectById(userVO.getMouldId());
if (user != null) {
if (file != null && !file.isEmpty()) {
MouldFile projectFile = new MouldFile();
projectFile.setUplodtorId(user.getId());
projectFile.setUploadtor(user.getUsername());
projectFile.setModelId(userVO.getMouldId());
File dir = null;
dir = new File(path);
// D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
if (!dir.exists()) {
dir.mkdirs();
}
String fileName = "";
if (file != null && !file.isEmpty()) {
fileName = file.getOriginalFilename();
projectFile.setFileName(fileName);
projectFile.setFileSize(FileUtil.getReadableFileSize(file.getSize()));
System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
int pos = fileName.lastIndexOf(".");
String rand = UUID.randomUUID().toString().replaceAll("-", "");
String sufix = fileName.substring(pos);
fileName = rand + sufix;
projectFile.setFileType(sufix);//文件后缀
projectFile.setFileUrl("/upload/" + fileName);
projectFile.setBlongType(blongType);
File saveFile = new File(dir, fileName);
try {
saveFile.createNewFile();
file.transferTo(saveFile);
} catch (IOException e) {
e.printStackTrace();
projectFile = null;
} catch (Exception e) {
e.printStackTrace();
projectFile = null;
}
//模具报废情况下,设置files2
if (blongType == 5 && file2 != null && !file2.isEmpty()) {
String fileName2 = file2.getOriginalFilename();
projectFile.setFileName2(fileName2);
projectFile.setFileSize2(FileUtil.getReadableFileSize(file2.getSize()));
System.out.println("上传文件2名称" + file2.getName() + ", dir = " + dir.getAbsolutePath());
pos = fileName2.lastIndexOf(".");
rand = UUID.randomUUID().toString().replaceAll("-", "");
sufix = fileName2.substring(pos);
fileName2 = rand + sufix;
projectFile.setFileType2(sufix);//文件后缀
projectFile.setFileUrl2("/upload/" + fileName2);
File saveFile2 = new File(dir, fileName2);
try {
saveFile2.createNewFile();
file2.transferTo(saveFile2);
} catch (IOException e) {
e.printStackTrace();
projectFile = null;
} catch (Exception e) {
e.printStackTrace();
projectFile = null;
}
}
//零件文档时存上零件id
if (blongType == 1 && null != userVO.getPartId()) {
projectFile.setPartId(userVO.getPartId());
}
//上传零件文档和上传模具文档的时候需要区分是否为2D或者3D
if (userVO.getDwgType() != null) {
projectFile.setDwgType(userVO.getDwgType());
}
mouldFileMapper.insert(projectFile);
Project project = projectMapper.selectById(mould.getProjectId());
Integer count = projectApproveMapper.selectCount(new QueryWrapper().eq("approver_id", user.getId()).eq("project_id", project.getId()));
// if(count>0){
// if (user.getSubordinateType() == 0) {
// //上传人为资产方审批人,自动审核通过
// projectFile.setState(1);
// MouldOperationDynamics dynamics = new MouldOperationDynamics();
// dynamics.setMouldId(userVO.getMouldId());
// dynamics.setBelongType(blongType);
// dynamics.setFileId(projectFile.getId());
// if (null != projectFile.getFileName2()) {
// dynamics.setFileName(projectFile.getFileName() + "," + projectFile.getFileName2());
// } else {
// dynamics.setFileName(projectFile.getFileName());
// }
// dynamics.setOperatorId(user.getId());
// dynamics.setOperatorName(user.getUsername());
// dynamics.setContent(Constant.APPROVAL);
// mouldOperationDynamicsMapper.insert(dynamics);
// } else if (user.getSubordinateType() == 1) {
// //上传人为生产方,自动审核通过
// projectFile.setState(2);
// //上传人为资产方审批人,自动审核通过
// MouldOperationDynamics dynamics = new MouldOperationDynamics();
// dynamics.setMouldId(userVO.getMouldId());
// dynamics.setBelongType(blongType);
// dynamics.setFileId(projectFile.getId());
// if (null != projectFile.getFileName2()) {
// dynamics.setFileName(projectFile.getFileName() + "," + projectFile.getFileName2());
// } else {
// dynamics.setFileName(projectFile.getFileName());
// }
// dynamics.setOperatorId(user.getId());
// dynamics.setOperatorName(user.getUsername());
// dynamics.setContent(Constant.APPROVAL);
// mouldOperationDynamicsMapper.insert(dynamics);
// } else {
// projectFile.setState(0);
// }
// }else{
projectFile.setState(0);
// }
//添加上传记录
MouldOperationDynamics dynamics = new MouldOperationDynamics();
dynamics.setContent(Constant.UPLOAD);
dynamics.setFileName(file.getOriginalFilename());
dynamics.setOperatorId(user.getId());
dynamics.setFileId(projectFile.getId());
dynamics.setOperatorName(user.getUsername());
dynamics.setMouldId(userVO.getMouldId());
dynamics.setBelongType(blongType);
mouldOperationDynamicsMapper.insert(dynamics);
//添加消息通知记录
if (mould.getProjectId() != null) {
List projectApproves = projectApproveMapper.selectList(new QueryWrapper().eq("project_id", project.getId()));
String content = "";
NewsNotice newsNotice = new NewsNotice();
newsNotice.setRefId(projectFile.getModelId());
newsNotice.setProjectId(project.getId());
newsNotice.setProjectName(project.getProjectName()+"-"+mould.getModelName());
newsNotice.setNoticeType(Constant.APPROVEL_TYPE);
if (blongType == 0) {
content = "模具文档";
} else if (blongType == 1) {
content = "零件文档";
} else if (blongType == 2) {
content = "试模验收文档";
} else if (blongType == 3) {
content = "保养方案文档";
} else if (blongType == 5) {
content = "模具报废文档";
}
newsNotice.setContent("有新的" + content + ",待您审批。");
newsNoticeMapper.insert(newsNotice);
for (ProjectApprove projectApprove : projectApproves) {
NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
newsNoticeUser.setUserId(projectApprove.getApproverId());
newsNoticeUser.setNewsId(newsNotice.getId());
newsNoticeUserMapper.insert(newsNoticeUser);
}
}
}
msg.data = projectFile;
} else {
//模具更新操作
MouldFile projectFile = new MouldFile();
projectFile.setUplodtorId(user.getId());
projectFile.setUploadtor(user.getUsername());
projectFile.setModelId(userVO.getMouldId());
projectFile.setBlongType(blongType);
mouldFileMapper.insert(projectFile);
//添加上传记录
// MouldOperationDynamics dynamics = new MouldOperationDynamics();
// dynamics.setContent(Constant.UPDATE);
// dynamics.setOperatorId(user.getId());
// dynamics.setOperatorName(user.getUsername());
// dynamics.setMouldId(userVO.getMouldId());
// dynamics.setBelongType(blongType);
// mouldOperationDynamicsMapper.insert(dynamics);
Project project = projectMapper.selectOne(new QueryWrapper().eq("id", mould.getProjectId()));
List projectApproves = projectApproveMapper.selectList(new QueryWrapper().eq("project_id", project.getId()));
String content = "";
NewsNotice newsNotice = new NewsNotice();
newsNotice.setRefId(projectFile.getModelId());
newsNotice.setProjectId(project.getId());
newsNotice.setProjectName(project.getProjectName()+"-"+mould.getModelName());
newsNotice.setNoticeType(Constant.APPROVEL_TYPE);
if (blongType == 4) {
content = "模具更新";
}
newsNotice.setContent("有新的" + content + "申请记录,待您审批。");
newsNoticeMapper.insert(newsNotice);
for (ProjectApprove projectApprove : projectApproves) {
NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
newsNoticeUser.setUserId(projectApprove.getApproverId());
newsNoticeUser.setNewsId(newsNotice.getId());
newsNoticeUserMapper.insert(newsNoticeUser);
}
}
} else {
msg.setError("当前用户不存在或者未登录");
}
return msg;
}
@Override
public HttpRespMsg check(Integer mouldFileId, Integer isPass, UserVO userVO) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
MouldFile mf = new MouldFile();
mf.setId(mouldFileId);
MouldFile oldData = mouldFileMapper.selectById(mouldFileId);
Mould md = mouldMapper.selectById(oldData.getModelId());
String approverNames = projectApproveMapper.selectList(new QueryWrapper().eq("project_id", md.getProjectId()))
.stream().map(ProjectApprove::getApproverName).collect(Collectors.joining(","));
MouldOperationDynamics dynamics = new MouldOperationDynamics();
if (user != null) {
if (user.getSubordinateType() == 0) {
//资产方
if (isPass == 1) {
if (oldData.getState() == 2) {//生产方也审核通过了
mf.setState(3);
//审批通过
dynamics.setIsPass(1);
//模具更新的审批
if (oldData.getBlongType() == 5) {
//将模具修改为已报废
Mould mould = new Mould();
mould.setId(oldData.getModelId());
mould.setState(4 + "");//4已报废状态
mouldMapper.updateById(mould);
}
} else {
mf.setState(1);
dynamics.setIsPass(1);
}
} else {
mf.setState(-1);
dynamics.setIsPass(0);
}
mouldFileMapper.updateById(mf);
if (oldData.getBlongType() == 4) {
if(mf.getState()==3){
Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper().eq("belong_type", 4).eq("is_pass", 1).eq("mould_id", oldData.getModelId()));
if(count == 0){
dynamics.setMouldId(oldData.getModelId());
dynamics.setApplicantName(oldData.getUploadtor());
dynamics.setApplicantId(oldData.getUplodtorId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setContent(Constant.APPROVAL);
dynamics.setOperatorName(approverNames);
dynamics.setIsPass(1);
mouldOperationDynamicsMapper.insert(dynamics);
}
}else if(mf.getState() < 0){
Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper().eq("belong_type", 4).eq("is_pass", 0).eq("mould_id", oldData.getModelId()));
if(count == 0){
dynamics.setMouldId(oldData.getModelId());
dynamics.setApplicantName(oldData.getUploadtor());
dynamics.setApplicantId(oldData.getUplodtorId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setContent(Constant.APPROVAL);
dynamics.setOperatorName(approverNames);
mouldOperationDynamicsMapper.insert(dynamics);
}
}
} else {
//添加审批记录
dynamics.setMouldId(oldData.getModelId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setFileId(oldData.getId());
if (null != oldData.getFileName2()) {
dynamics.setFileName(oldData.getFileName() + "," + oldData.getFileName2());
} else {
dynamics.setFileName(oldData.getFileName());
}
dynamics.setOperatorId(user.getId());
dynamics.setOperatorName(user.getUsername());
dynamics.setContent(Constant.APPROVAL);
mouldOperationDynamicsMapper.insert(dynamics);
}
} else if (user.getSubordinateType() == 1) {
//生产方
if (isPass == 1) {
if (oldData.getState() == 1) {//资产方也审核通过了
mf.setState(3);
dynamics.setIsPass(1);
//将模具修改为已报废
if (oldData.getBlongType() == 5) {
Mould mould = new Mould();
mould.setId(oldData.getModelId());
mould.setState(4 + "");//4已报废状态
mouldMapper.updateById(mould);
}
} else {
mf.setState(2);
dynamics.setIsPass(1);
}
} else {
mf.setState(-2);
dynamics.setIsPass(0);
}
mouldFileMapper.updateById(mf);
if (oldData.getBlongType() == 4) {
if(mf.getState()==3){
Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper().eq("belong_type", 4).eq("is_pass", 1).eq("mould_id", oldData.getModelId()));
if(count == 0){
dynamics.setMouldId(oldData.getModelId());
dynamics.setApplicantName(oldData.getUploadtor());
dynamics.setApplicantId(oldData.getUplodtorId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setContent(Constant.APPROVAL);
dynamics.setOperatorName(approverNames);
dynamics.setIsPass(1);
mouldOperationDynamicsMapper.insert(dynamics);
}
}else if(mf.getState() < 0){
Integer count = mouldOperationDynamicsMapper.selectCount(new QueryWrapper().eq("belong_type", 4).eq("is_pass", 0).eq("mould_id", oldData.getModelId()));
if(count == 0){
dynamics.setMouldId(oldData.getModelId());
dynamics.setApplicantName(oldData.getUploadtor());
dynamics.setApplicantId(oldData.getUplodtorId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setContent(Constant.APPROVAL);
dynamics.setOperatorName(approverNames);
mouldOperationDynamicsMapper.insert(dynamics);
}
}
}else{
//添加审批记录
dynamics.setMouldId(oldData.getModelId());
dynamics.setBelongType(oldData.getBlongType());
dynamics.setFileId(oldData.getId());
if (null != oldData.getFileName2()) {
dynamics.setFileName(oldData.getFileName() + "," + oldData.getFileName2());
} else {
dynamics.setFileName(oldData.getFileName());
}
dynamics.setOperatorId(user.getId());
dynamics.setOperatorName(user.getUsername());
dynamics.setContent(Constant.APPROVAL);
mouldOperationDynamicsMapper.insert(dynamics);
}
} else {
msg.setError("只有生产方和资产方才能审核, subordinteType = " + user.getSubordinateType() + ", 无效!");
}
}
return msg;
}
@Override
public HttpRespMsg dowloadFile(MouldFile projectFile, String token) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", token));
//添加上传记录
MouldFile file = mouldFileMapper.selectById(projectFile.getId());
MouldOperationDynamics dynamics = new MouldOperationDynamics();
dynamics.setContent(Constant.DOWNLOAD);
dynamics.setFileName(file.getFileName());
dynamics.setOperatorId(user.getId());
dynamics.setOperatorName(user.getUsername());
dynamics.setMouldId(file.getModelId());
dynamics.setFileId(file.getId());
dynamics.setBelongType(file.getBlongType());
mouldOperationDynamicsMapper.insert(dynamics);
return msg;
}
@Override
public HttpRespMsg getAllFileList(int mouldId, UserVO userVO) {
List dataList = new ArrayList();
int maxBlongType = 5;
for (int i = 0; i <= maxBlongType; i++) {
HashMap data = new HashMap<>();
data.put("blongType", i);
List list = mouldFileMapper.selectList(new QueryWrapper().eq("model_id", mouldId).eq("blong_type", i).orderByDesc("id"));
data.put("list", list);
dataList.add(data);
}
HttpRespMsg msg = new HttpRespMsg();
msg.data = dataList;
return msg;
}
@Override
public HttpRespMsg getFileList(int mouldId, Integer blongType, UserVO userVO,String path) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
List list = new ArrayList<>();
List ids = new ArrayList<>();
// if(blongType == 4){
// List recursion = recursion(mouldId, ids);
// list = mouldFileMapper.selectList(new QueryWrapper().in("model_id", recursion).orderByDesc("id"));
// }else{
list = mouldFileMapper.selectList(new QueryWrapper().eq("model_id", mouldId).eq("blong_type", blongType).orderByDesc("id"));
// }
// for (MouldFile mouldFile : list) {
// mouldFile.setFileUrl(path+mouldFile.getFileUrl().substring("/upload/".length()));
// }
msg.data = list;
return msg;
}
@Override
public HttpRespMsg delFile(MouldFile mouldFile) {
HttpRespMsg msg = new HttpRespMsg();
msg.data = mouldFileMapper.deleteById(mouldFile.getId());
return msg;
}
@Override
public HttpRespMsg getListByUserAndProjectId(UserVO userVO, PageUtil page) {
HttpRespMsg msg = new HttpRespMsg();
List proIds = new ArrayList<>();
proIds.add(-1);
List list = new ArrayList<>();
User currentUser = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
PageHelper.startPage(page.getPageNum(), page.getPageSize());
if (currentUser != null) {
if (Constant.SYS_ID == currentUser.getParentId()) {
//此时是admin,查询他所创建的项目
QueryWrapper qw = new QueryWrapper<>();
List projects = projectMapper.selectList(qw.eq("creator_id", currentUser.getId()));
for (Project pro : projects) {
proIds.add(pro.getId());
}
list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
} else if (Constant.SYS_PARENT_ID == currentUser.getParentId()) {
//系统管理员
List projects = projectMapper.selectList(new QueryWrapper());
for (Project pro : projects) {
proIds.add(pro.getId());
}
list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
} else {
QueryWrapper qw = new QueryWrapper<>();
qw.eq("manager_id", userVO.getId());
List projects = projectMapper.selectList(qw);
if (projects.size() > 0) {
for (Project project : projects) {
proIds.add(project.getId());
}
}
// //充当普通人员参与的项目
List projectUsers = projectUserMapper.selectList(new QueryWrapper().eq("user_id", currentUser.getId()));
if (projectUsers.size() > 0) {
for (ProjectUser projectUser : projectUsers) {
proIds.add(projectUser.getProjectId());
}
}
//充当审批人员参与的项目
List projectss = projectApproveMapper.selectList(new QueryWrapper().eq("approver_id", currentUser.getId()));
if (projectss.size() > 0) {
for (ProjectApprove projectUser : projectss) {
proIds.add(projectUser.getProjectId());
}
}
list = mouldFileMapper.getFileListByProjectId(userVO, proIds);
}
PageInfo pageInfos = new PageInfo<>(list);
msg.data = pageInfos;
} else {
msg.setError("用户不存在或者未登录");
}
return msg;
}
@Override
public HttpRespMsg dowloadFileList(UserVO userVO, HttpServletRequest request, HttpServletResponse response, String downloadPath, String path) throws IOException {
HttpRespMsg msg = new HttpRespMsg();
if (null != userVO.getIds()) {
List ids = ListUtil.convertIntegerIdsArrayToList(userVO.getIds());
for (Integer id : ids) {
Mould mould = mouldMapper.selectById(id);
List mouldFiles = mouldFileMapper.selectList(new QueryWrapper().eq("model_id", id).eq("state", 3));
feedBackDirectMultiDownload(request, response, downloadPath, mould, mouldFiles, path);
}
}
return msg;
}
@Override
public HttpRespMsg addPartFile(UserVO userVO, String path, MultipartFile[] files) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
if (user != null) {
List partLists = partMapper.selectList(new QueryWrapper().eq("mould_id", userVO.getMouldId()));
for (MultipartFile file : files) {
MouldFile partFile = new MouldFile();
partFile.setModelId(userVO.getMouldId());
partFile.setBlongType(1);
File dir = null;
dir = new File(path);
// D://cloud/upload 文件上传后所存储的位置,部署到服务器上时配置服务器地址即可
if (!dir.exists()) {
dir.mkdirs();
}
String fileName = "";
// if (!file.isEmpty()) {
fileName = file.getOriginalFilename();
String fileNamePrex = fileName.substring(0, fileName.lastIndexOf("."));
String[] split = fileNamePrex.split("\\+");
System.out.println("split" + split);
for (Part part : partLists) {
if (part.getPartNo().equals(split[0])) {
partFile.setPartId(part.getId());
if (Constant.PART_FILE_2D.equals(split[1])) {
MouldFile mouldFile = mouldFileMapper.selectOne(new QueryWrapper().eq("part_id", part.getId()).eq("dwg_type", 0));
if (mouldFile != null) {
//把之前的文件删除
mouldFileMapper.deleteById(mouldFile);
}
partFile.setDwgType(0);
} else if (Constant.PART_FILE_3D.equals(split[1])) {
MouldFile mouldFile = mouldFileMapper.selectOne(new QueryWrapper().eq("part_id", part.getId()).eq("dwg_type", 1));
if (mouldFile != null) {
//把之前的文件删除
mouldFileMapper.deleteById(mouldFile);
}
partFile.setDwgType(1);
}
}
}
partFile.setFileName(fileName);
partFile.setFileSize(FileUtil.getReadableFileSize(file.getSize()));
System.out.println("上传文件名称" + file.getName() + ", dir = " + dir.getAbsolutePath());
int pos = fileName.lastIndexOf(".");
String rand = UUID.randomUUID().toString().replaceAll("-", "");
String sufix = fileName.substring(pos);
fileName = rand + sufix;
partFile.setFileType(sufix);//文件后缀
partFile.setFileUrl("/upload/" + fileName);
partFile.setUplodtorId(user.getId());
partFile.setUploadtor(user.getUsername());
File saveFile = new File(dir, fileName);
mouldFileMapper.insert(partFile);
try {
saveFile.createNewFile();
file.transferTo(saveFile);
} catch (IOException e) {
e.printStackTrace();
partFile = null;
} catch (Exception e) {
e.printStackTrace();
partFile = null;
}
//添加上传记录
MouldOperationDynamics dynamics = new MouldOperationDynamics();
dynamics.setContent(Constant.UPLOAD);
dynamics.setFileName(file.getOriginalFilename());
dynamics.setOperatorId(user.getId());
dynamics.setOperatorName(user.getUsername());
dynamics.setMouldId(userVO.getMouldId());
mouldOperationDynamicsMapper.insert(dynamics);
// }
msg.data = partFile;
}
} else {
msg.setError("用户不存在或者未登录");
}
return msg;
}
@Override
public HttpRespMsg downloadFileListExcel(UserVO userVO, HttpServletResponse response,String downloadPath) throws ParseException {
HttpRespMsg msg = new HttpRespMsg();
List> list = new ArrayList>();
//标题
List titleList = new ArrayList();
titleList.add("文件名");
titleList.add("下载者姓名");
titleList.add("文件类型");
titleList.add("下载时间");
list.add(titleList);
QueryWrapper qw = new QueryWrapper();
qw.eq("content", Constant.DOWNLOAD);
String start = userVO.getStartTime().replace("Z", " UTC");//是空格+UTC
String end = userVO.getEndTime().replace("Z", " UTC");//是空格+UTC
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = df.parse(start);
System.out.println(date1);
Date date2 = df.parse(end);
System.out.println(date2);
// SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.CHINA);
Calendar calendar=new GregorianCalendar();
calendar.setTime(date1);
calendar.add(calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动 date=calendar.getTime();
Date startDate1 = calendar.getTime();
calendar.setTime(date2);
calendar.add(calendar.DATE,-1);
// Date startDate = df1.parse(date1.toString());
Date endDate2 = calendar.getTime();
// Date endDate = df1.parse(date2.toString());
SimpleDateFormat dateSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat dateSdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateSdf2 = new SimpleDateFormat("yyyy年MM月dd+HH时mm分ss秒");
String startDate = dateSdf.format(startDate1);
String endDate = dateSdf.format(endDate2);
List mouldOperationDynamics = new ArrayList<>();
if (userVO.getStartTime() != null && userVO.getEndTime() != null) {
mouldOperationDynamics = mouldOperationDynamicsMapper.selectOperationDynamicsList(startDate,endDate,userVO);
}
for (MouldOperationDynamics dynamic : mouldOperationDynamics) {
List rowList = new ArrayList();
//文件名
rowList.add(dynamic.getFileName());
//操作者名字
rowList.add(dynamic.getOperatorName());
//文件类型
if (dynamic.getBelongType() == 0) {
rowList.add("模具文档");
} else if (dynamic.getBelongType() == 1) {
rowList.add("零件文档");
} else if (dynamic.getBelongType() == 2) {
rowList.add("试模验收");
} else if (dynamic.getBelongType() == 3) {
rowList.add("保养方案");
} else if (dynamic.getBelongType() == 4) {
rowList.add("模具更新");
} else if (dynamic.getBelongType() == 5) {
rowList.add("模具报废");
}
//下载时间
rowList.add(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(dynamic.getIndate())
);
list.add(rowList);
}
Mould mould = mouldMapper.selectById(userVO.getMouldId());
msg.data = ExcelUtil.exportGeneralExcelByTitleAndList(response, mould.getModelNo() + mould.getModelName()+dateSdf2.format(new Date()), list,downloadPath);
return msg;
}
@Override
public HttpRespMsg mouldUpdateCheck(UserVO userVO) {
HttpRespMsg msg = new HttpRespMsg();
User user = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", userVO.getToken()));
boolean isCanCreate = false;
if (user == null) {
msg.setError("用户不存在或者未登录");
return msg;
}else{
MouldOperationDynamics dynamics = mouldOperationDynamicsMapper.selectOne(new QueryWrapper().eq("belongType", 4).eq("mould_id", userVO.getMouldId()).orderByDesc("id"));
if(null != dynamics){
if(0 == dynamics.getIsPass()){
isCanCreate = true;
}
}else{
isCanCreate = true;
}
}
msg.data = isCanCreate;
return msg;
}
public Map feedBackDirectMultiDownload(HttpServletRequest request, HttpServletResponse response, String downloadPath, Mould vo, List mouldFiles, String oldFilePath) throws IOException {
//压缩文件初始设置
String path = downloadPath;
String base_name = vo.getModelNo() + vo.getModelName();
String fileZip = base_name + ".zip"; // 拼接zip文件
String filePath = path + "\\" + fileZip;//之后用来生成zip文件
//mouldFiles为根据前台传过来的信息,通过数据库查询所得出的pdf文件路径集合(具体到后缀),此处省略
File[] files = new File[mouldFiles.size()];//
for (int i = 0; i < mouldFiles.size(); i++) {
files[i] = new File(mouldFiles.get(i).getFileUrl());//获取所有需要下载的文件
}
// 创建临时压缩文件
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
ZipOutputStream zos = new ZipOutputStream(bos);
ZipEntry ze = null;
for (int i = 0; i < files.length; i++) {//将所有需要下载的pdf文件都写入临时zip文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(files[i]));
ze = new ZipEntry(mouldFiles.get(i).getFileName());
zos.putNextEntry(ze);
int s = -1;
while ((s = bis.read()) != -1) {
zos.write(s);
}
bis.close();
}
zos.flush();
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
//以上,临时压缩文件创建完成
//进行浏览器下载
//获得浏览器代理信息
final String userAgent = request.getHeader("USER-AGENT");
//判断浏览器代理并分别设置响应给浏览器的编码格式
String finalFileName = null;
if (StringUtils.contains(userAgent, "MSIE") || StringUtils.contains(userAgent, "Trident")) {//IE浏览器
finalFileName = URLEncoder.encode(fileZip, "UTF8");
System.out.println("IE浏览器");
} else if (StringUtils.contains(userAgent, "Mozilla")) {//google,火狐浏览器
finalFileName = new String(fileZip.getBytes(), "ISO8859-1");
} else {
finalFileName = URLEncoder.encode(fileZip, "UTF8");//其他浏览器
}
response.setContentType("application/x-download");//告知浏览器下载文件,而不是直接打开,浏览器默认为打开
response.setHeader("Content-Disposition", "attachment;filename=\"" + finalFileName + "\"");//下载文件的名称
ServletOutputStream servletOutputStream = response.getOutputStream();
DataOutputStream temps = new DataOutputStream(
servletOutputStream);
DataInputStream in = new DataInputStream(new FileInputStream(filePath));//浏览器下载文件的路径
byte[] b = new byte[2048];
File reportZip = new File(filePath);//之后用来删除临时压缩文件
try {
while ((in.read(b)) != -1) {
temps.write(b);
}
temps.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (temps != null) temps.close();
if (in != null) in.close();
if (reportZip != null) reportZip.delete();//删除服务器本地产生的临时压缩文件
servletOutputStream.close();
}
return null;
}
}