febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
@@ -1,6 +1,5 @@ package cc.mrbird.febs.common.core.utils; import cc.mrbird.febs.common.core.entity.system.Dic; import cc.mrbird.febs.common.core.exception.FebsException; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; @@ -9,6 +8,7 @@ import org.springframework.web.multipart.MultipartFile; import cn.hutool.core.io.FileUtil; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; @@ -21,6 +21,32 @@ @Slf4j public class MyUtil { public static void downloadFile(File file, HttpServletResponse response) throws IOException { InputStream fin = null; ServletOutputStream out = null; try { fin = new FileInputStream(file); out = response.getOutputStream(); response.setCharacterEncoding("utf-8"); response.setContentType("application/x-download"); response.addHeader("Content-Disposition", "attachment;filename=resume.doc"); byte[] buffer = new byte[1024]; int bytesToRead = -1; // 通过循环将读入的Word文件的内容输出到浏览器中 while((bytesToRead = fin.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } } catch (Exception e) { log.error("下载文件异常" + e); e.printStackTrace(); } finally { if(fin != null) fin.close(); if(out != null) out.close(); } } public static void download(HttpServletRequest request, HttpServletResponse response, List<File> files , List<String> fileName){ //设置压缩包的名字 //解决不同浏览器压缩包名字含有中文时乱码的问题 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java
@@ -97,4 +97,26 @@ } } @PostMapping("/mvFiles") @PreAuthorize("hasAuthority('empAccessory:mv')") public void mvFiles(@NotBlank(message = "{required}") String accessoryids,@NotNull(message = "{required}") Long labelid,@NotNull(message = "{required}") Long empId) throws FebsException { try { this.empAccessoryService.mvFiles(accessoryids,labelid,empId); } catch (Exception e) { String message = "移动文件失败"; log.error(message, e); throw new FebsException(message); } } @PostMapping("/singledownload") @PreAuthorize("hasAuthority('empAccessory:singledownload')") public void singledownload(@NotBlank(message = "{required}") String empIds, @NotNull(message = "{required}") Long labelid, HttpServletRequest request, HttpServletResponse response) throws FebsException { try { this.empAccessoryService.singledownload(empIds,labelid,request,response); } catch (Exception e) { String message = "下载文件失败"; log.error(message, e); throw new FebsException(message); } } } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java
@@ -103,7 +103,7 @@ try { this.filesUploadService.mvFiles(fileids,folderid); } catch (Exception e) { String message = "修改FilesUpload失败"; String message = "移动文件失败"; log.error(message, e); throw new FebsException(message); } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java
@@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.io.IOException; import java.util.List; import java.util.Map; @@ -58,4 +59,8 @@ void deleteEmpAccessory(String accessoryids); void download(String accessoryids, HttpServletRequest request, HttpServletResponse response); void mvFiles(String accessoryids,Long labelid,Long empId); void singledownload(String empIds, Long labelid, HttpServletRequest request, HttpServletResponse response) throws Exception; } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
@@ -12,11 +12,13 @@ import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService; import cc.mrbird.febs.server.hr.service.ILabelService; import cc.mrbird.febs.server.hr.vo.EmpAccessoryVO; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.springframework.stereotype.Service; @@ -46,7 +48,7 @@ @RequiredArgsConstructor @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class EmpAccessoryServiceImpl extends ServiceImpl<EmpAccessoryMapper, EmpAccessory> implements IEmpAccessoryService { private final ILabelService labelService; private final EmpAccessoryMapper empAccessoryMapper; private final FebsServerHrProperties properties; private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser()) @@ -205,4 +207,52 @@ } @Override public void mvFiles(String accessoryids,Long labelid,Long empId) { String[] arr = accessoryids.split(","); LambdaUpdateWrapper<EmpAccessory> wapper = new LambdaUpdateWrapper<>(); wapper.in(EmpAccessory::getAccessoryid, arr); EmpAccessory empAccessory = new EmpAccessory(); empAccessory.setModifier(operatorId); empAccessory.setModifytime(new Date()); empAccessory.setLabelid(labelid); empAccessory.setEmpid(empId); this.update(empAccessory,wapper); } @Override public void singledownload(String empIds, Long labelid, HttpServletRequest request, HttpServletResponse response) throws IOException { String[] arr = empIds.split(","); //主文件夹 String mianFileStr = properties.getUploadSinglePath()+snowflake.nextIdStr()+"/"; FileUtil.mkdir(mianFileStr); Arrays.stream(arr).forEach(i -> { LambdaQueryWrapper<EmpAccessory> lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(EmpAccessory::getEmpid,i); lambdaQueryWrapper.eq(EmpAccessory::getDelFlag,0); if (!labelid.equals(-1L)){ lambdaQueryWrapper.eq(EmpAccessory::getLabelid,labelid); } List<EmpAccessory> accessory = this.list(lambdaQueryWrapper); EmpBaseInfo empBaseInfo = empBaseInfoService.getById(i); String nameAndCertificateNumb = empBaseInfo.getEmpName()+"_"+empBaseInfo.getCertificateNumb()+"/"; //创建个人文件夹 String singlefileStr = mianFileStr+nameAndCertificateNumb; FileUtil.mkdir(singlefileStr); accessory.stream().forEach(a->{ Label label = labelService.getById(a.getLabelid()); FileUtil.copy(properties.getUploadSinglePath() + nameAndCertificateNumb + a.getFilesaddress(),singlefileStr+label.getLabelname()+"/"+a.getFilesname(),true); }); }); ZipUtil.zip(mianFileStr); try { MyUtil.downloadFile(new File(new StringBuilder().append(mianFileStr, 0, mianFileStr.length() - 1).append(".zip").toString()),response); } catch (IOException e) { log.error("下载文件异常",e); } FileUtil.del(new StringBuilder().append(mianFileStr, 0, mianFileStr.length() - 1).append(".zip").toString()); FileUtil.del(mianFileStr); } } febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java
@@ -159,7 +159,6 @@ FilesUpload filesUpload = new FilesUpload(); filesUpload.setModifier(operatorId); filesUpload.setModifytime(new Date()); filesUpload.setDelFlag(1); filesUpload.setFolderid(folderid); this.update(filesUpload,wapper);