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; } }