From d8da861e315c42930d2dffae66b90f4e489f9d2b Mon Sep 17 00:00:00 2001
From: yz <yz_0812@outlook.com>
Date: 星期五, 19 二月 2021 00:20:24 +0800
Subject: [PATCH] 修改附件管理

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java         |   14 +
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/LabelServiceImpl.java        |   19 +
 febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties                                     |    4 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpAccessoryMapper.xml             |    2 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IFilesUploadService.java          |    2 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java  |  146 +++++----------
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java    |    5 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ILabelService.java                |    3 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FolderServiceImpl.java       |    8 
 febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java                     |  114 ++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java     |   14 +
 febs-server/febs-server-hr/pom.xml                                                                          |   18 +
 febs-common/febs-common-core/pom.xml                                                                        |    5 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccessory.java                  |   30 +-
 febs-server/febs-server-hr/src/main/resources/bootstrap.yml                                                 |    2 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java    |   26 ++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java |  103 ++++++++++-
 17 files changed, 369 insertions(+), 146 deletions(-)

diff --git a/febs-common/febs-common-core/pom.xml b/febs-common/febs-common-core/pom.xml
index e7ad386..6766acc 100644
--- a/febs-common/febs-common-core/pom.xml
+++ b/febs-common/febs-common-core/pom.xml
@@ -100,5 +100,10 @@
             <groupId>io.micrometer</groupId>
             <artifactId>micrometer-registry-prometheus</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.5.8</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
new file mode 100644
index 0000000..226d3a1
--- /dev/null
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/utils/MyUtil.java
@@ -0,0 +1,114 @@
+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;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.multipart.MultipartFile;
+import cn.hutool.core.io.FileUtil;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+@Slf4j
+public class MyUtil {
+
+    public static void  download(HttpServletRequest request, HttpServletResponse response, List<File> files , List<String> fileName){
+        //设置压缩包的名字
+        //解决不同浏览器压缩包名字含有中文时乱码的问题
+        String downloadName ="PersonnelInformation-" + DateUtil.format(new Date(), "yyyyMMddhhmmsss") + ".zip";
+        String agent = request.getHeader("USER-AGENT");
+        try {
+            if (agent.contains("MSIE") || agent.contains("Trident")) {
+                downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
+            } else {
+                downloadName = new String(downloadName.getBytes("UTF-8"), "ISO-8859-1");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
+
+
+        //设置压缩流:直接写入response,实现边压缩边下载
+        ZipOutputStream zipos = null;
+        try {
+            zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
+            //设置压缩方法
+            zipos.setMethod(ZipOutputStream.DEFLATED);
+        } catch (Exception e) {
+            log.error("设置压缩流出现异常" + e);
+            e.printStackTrace();
+        }
+
+        //循环将文件写入压缩流
+        DataOutputStream os = null;
+        for (int i = 0; i < files.size(); i++) {
+            File file = files.get(i);
+            try {
+                //添加ZipEntry,并ZipEntry中写入文件流
+                //这里,加上i是防止要下载的文件有重名的导致下载失败
+                zipos.putNextEntry(new ZipEntry(fileName.get(i)));
+                os = new DataOutputStream(zipos);
+                InputStream is = new FileInputStream(file);
+                byte[] b = new byte[100];
+                int length;
+                while ((length = is.read(b)) != -1) {
+                    os.write(b, 0, length);
+                }
+                is.close();
+                zipos.closeEntry();
+            } catch (IOException e) {
+                log.error("循环将文件写入压缩流出现异常" + e.getMessage());
+                e.printStackTrace();
+            }
+        }
+
+        //关闭流
+        try {
+            os.flush();
+            os.close();
+            zipos.close();
+        } catch (IOException e) {
+            log.error("关闭流现异常" + e.getMessage());
+            e.printStackTrace();
+        }
+
+    }
+
+    public static Dict filesUpload(MultipartFile file, String uploadPpath, String nextIdStr) throws FebsException, IOException {
+        if (file.isEmpty()) {
+            throw new FebsException("上传的文件不能为空!请重新上传");
+        }
+        if (file.getSize() <= 0) {
+            throw new FebsException("上传的文件大小需要大于0kb");
+        }
+        if (file.getSize() > 50 * 1024* 1024) {
+            throw new FebsException("上传的文件大于50M");
+        }
+        if (!FileUtil.exist(uploadPpath)) {
+            FileUtil.mkdir(uploadPpath);
+        }
+        //原本名字
+        String fileName = file.getOriginalFilename();
+        String suffix = "";
+        if (fileName.indexOf(".") > 0) {
+            //后缀
+            suffix = fileName.substring(fileName.indexOf("."), fileName.length());
+        }
+        //生成新的名字
+        String newName = nextIdStr + suffix;
+        //上传
+        file.transferTo(new File(uploadPpath + newName));
+        return Dict.create().set("fileName",fileName).set("suffix",suffix).set("newName",newName);
+
+    }
+}
diff --git a/febs-server/febs-server-hr/pom.xml b/febs-server/febs-server-hr/pom.xml
index dfd91b2..bd12f7a 100644
--- a/febs-server/febs-server-hr/pom.xml
+++ b/febs-server/febs-server-hr/pom.xml
@@ -58,23 +58,29 @@
             <version>2.2-RELEASE</version>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-all</artifactId>
-            <version>5.5.8</version>
-        </dependency>
     </dependencies>
 
 	<build>
-
         <resources>
             <resource>
                 <directory>src/main/resources</directory>
             </resource>
             <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                    <include>**/*.tld</include>
+                    <include>**/*.yml</include>
+                </includes>
+                <filtering>false</filtering>
+            </resource>
+            <resource>
                 <directory>src/main/java</directory>
                 <includes>
+                    <include>**/*.properties</include>
                     <include>**/*.xml</include>
+                    <include>**/*.tld</include>
                 </includes>
                 <filtering>false</filtering>
             </resource>
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java
index 41e93fd..d45dad2 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/EmpAccessoryController.java
@@ -12,8 +12,13 @@
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import java.util.Map;
 
 /**
@@ -46,9 +51,9 @@
 
     @PostMapping
     @PreAuthorize("hasAuthority('empAccessory:add')")
-    public void addEmpAccessory(@Valid EmpAccessory empAccessory) throws FebsException {
+    public void addEmpAccessory(@NotNull(message = "{required}") Long labelid,@NotNull(message = "{required}") Long empId, MultipartFile file) throws FebsException {
         try {
-            this.empAccessoryService.createEmpAccessory(empAccessory);
+            this.empAccessoryService.createEmpAccessory(labelid,file,empId);
         } catch (Exception e) {
             String message = "新增EmpAccessory失败";
             log.error(message, e);
@@ -58,9 +63,9 @@
 
     @DeleteMapping
     @PreAuthorize("hasAuthority('empAccessory:delete')")
-    public void deleteEmpAccessory(EmpAccessory empAccessory) throws FebsException {
+    public void deleteEmpAccessory(@NotBlank(message = "{required}")  String accessoryids) throws FebsException {
         try {
-            this.empAccessoryService.deleteEmpAccessory(empAccessory);
+            this.empAccessoryService.deleteEmpAccessory(accessoryids);
         } catch (Exception e) {
             String message = "删除EmpAccessory失败";
             log.error(message, e);
@@ -79,4 +84,17 @@
             throw new FebsException(message);
         }
     }
+
+    @PostMapping("/download")
+    @PreAuthorize("hasAuthority('empAccessory:download')")
+    public void download(@NotBlank(message = "{required}")  String accessoryids, HttpServletRequest request, HttpServletResponse response) throws FebsException {
+        try {
+            this.empAccessoryService.download(accessoryids,request,response);
+        } catch (Exception e) {
+            String message = "下载文件失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
+
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java
index 2a61f45..f8d469d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/FilesUploadController.java
@@ -50,7 +50,7 @@
 
     @PostMapping
     @PreAuthorize("hasAuthority('filesUpload:add')")
-    public void addFilesUpload(@NotNull(message = "{required}") Long folderid, MultipartFile file, HttpServletRequest request) throws FebsException {
+    public void addFilesUpload(@NotNull(message = "{required}") Long folderid, MultipartFile file) throws FebsException {
         try {
             this.filesUploadService.createFilesUpload(folderid, file);
         } catch (Exception e) {
@@ -96,4 +96,16 @@
             throw new FebsException(message);
         }
     }
+
+    @PostMapping("/mvFiles")
+    @PreAuthorize("hasAuthority('filesUpload:mv')")
+    public void mvFiles(@NotBlank(message = "{required}")  String fileids,@NotNull(message = "{required}")  Long folderid) throws FebsException {
+        try {
+            this.filesUploadService.mvFiles(fileids,folderid);
+        } catch (Exception e) {
+            String message = "修改FilesUpload失败";
+            log.error(message, e);
+            throw new FebsException(message);
+        }
+    }
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccessory.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccessory.java
index cbf4dd1..802e8b0 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccessory.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccessory.java
@@ -20,14 +20,8 @@
     /**
      * 附件Id
      */
-    @TableId(value = "accessoryId", type = IdType.AUTO)
+    @TableId(value = "accessoryId")
     private Long accessoryid;
-
-    /**
-     * 处罚数量
-     */
-    @TableField("cf")
-    private Integer cf;
 
     /**
      * 记录创建时间
@@ -42,17 +36,27 @@
     private String creator;
 
     /**
-     * 辞职申请数量
-     */
-    @TableField("czsq")
-    private Integer czsq;
-
-    /**
      * 记录删除标志。0-未删除 1-已删除,默认0
      */
     @TableField("delFlag")
     private Integer delFlag = 0;
     /**
+     * 记录最后更新人
+     */
+    @TableField("modifier")
+    private String modifier;
+    /**
+     * 记录最后更新时间
+     */
+    @TableField("modifyTime")
+    private Date modifytime;
+
+    /**
+     * 记录版本号,用来进行乐观锁控制
+     */
+    @TableField("version")
+    private Integer version;
+    /**
      * 员工Id
      */
     @TableField("empId")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpAccessoryMapper.xml b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpAccessoryMapper.xml
index d49f51e..861948d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpAccessoryMapper.xml
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/mapper/EmpAccessoryMapper.xml
@@ -7,7 +7,7 @@
        (select dept_Name from t_dept as dept where dept.dept_Id= a.deptId) as deptName,a.jobName,',(SELECT
   GROUP_CONCAT(DISTINCT
     CONCAT(
-      '(SELECT  COUNT(1) FROM  t_emp_accessory accessory inner join t_label label where label.labelId=accessory.labelId and accessory.delFlag = 0 and label.delFlag = 0) AS ''',
+      '(SELECT  COUNT(1) FROM  t_emp_accessory accessory inner join t_label label where label.labelId=accessory.labelId and accessory.delFlag = 0 and label.delFlag = 0 and a.empId = accessory.empId  and label.labelCode = ''',label.labelCode,''') AS ''',
       label.labelCode, ''''
     )
   )
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
index a30c238..9d83604 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/properties/FebsServerHrProperties.java
@@ -16,5 +16,8 @@
     /**
      * 文件上传地址
      */
-    private String uploadPpath = "D:/upload/hr/";
+    private String uploadCommonPath = "C:/upload/hr/commonfile/";
+
+    private String uploadSinglePath = "C:/upload/hr/singlefile/";
+
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java
index 8b64848..6136045 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IEmpAccessoryService.java
@@ -2,11 +2,16 @@
 
 
 import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
 import cc.mrbird.febs.server.hr.entity.EmpAccessory;
 import cc.mrbird.febs.server.hr.vo.EmpAccessoryVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -36,10 +41,8 @@
 
     /**
      * 新增
-     *
-     * @param empAccessory empAccessory
      */
-    void createEmpAccessory(EmpAccessory empAccessory);
+    void createEmpAccessory(Long labelid, MultipartFile file,Long empId) throws FebsException, IOException;
 
     /**
      * 修改
@@ -51,7 +54,8 @@
     /**
      * 删除
      *
-     * @param empAccessory empAccessory
      */
-    void deleteEmpAccessory(EmpAccessory empAccessory);
+    void deleteEmpAccessory(String accessoryids);
+
+    void download(String accessoryids, HttpServletRequest request, HttpServletResponse response);
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IFilesUploadService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IFilesUploadService.java
index d5bd381..fdfdfec 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IFilesUploadService.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/IFilesUploadService.java
@@ -57,4 +57,6 @@
     void deleteFilesUpload(String fileids);
 
     void download(String fileids, HttpServletRequest request, HttpServletResponse response);
+
+    void mvFiles(String fileids,Long folderid);
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ILabelService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ILabelService.java
index 6d367d9..d88ec47 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ILabelService.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ILabelService.java
@@ -2,6 +2,7 @@
 
 
 import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.exception.FebsException;
 import cc.mrbird.febs.server.hr.entity.Label;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -37,7 +38,7 @@
      *
      * @param label label
      */
-    void createLabel(Label label);
+    void createLabel(Label label) throws FebsException;
 
     /**
      * 修改
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
index 6503635..1442e08 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpAccessoryServiceImpl.java
@@ -1,11 +1,24 @@
 package cc.mrbird.febs.server.hr.service.impl;
 
-import cc.mrbird.febs.server.hr.entity.EmpAccessory;
+import cc.mrbird.febs.common.core.constant.ModuleCode;
+import cc.mrbird.febs.common.core.exception.FebsException;
+import cc.mrbird.febs.common.core.utils.FebsUtil;
+import cc.mrbird.febs.common.core.utils.MyUtil;
+import cc.mrbird.febs.common.core.utils.SequenceUtil;
+import cc.mrbird.febs.server.hr.entity.*;
 import cc.mrbird.febs.server.hr.mapper.EmpAccessoryMapper;
+import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties;
 import cc.mrbird.febs.server.hr.service.IEmpAccessoryService;
+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.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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Propagation;
@@ -15,9 +28,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import cc.mrbird.febs.common.core.entity.QueryRequest;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
 
 /**
  * 附件管理 Service实现
@@ -31,6 +48,15 @@
 public class EmpAccessoryServiceImpl extends ServiceImpl<EmpAccessoryMapper, EmpAccessory> implements IEmpAccessoryService {
 
     private final EmpAccessoryMapper empAccessoryMapper;
+    private final FebsServerHrProperties properties;
+    private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
+            .map(u -> u.getUserId().toString())
+            .orElse("1");
+    private final IEmpBaseInfoService empBaseInfoService;
+    /**
+     * 参数2为数据中心ID 参数1为终端ID
+     */
+    private Snowflake snowflake = IdUtil.getSnowflake(ModuleCode.HR_FIlE, 1);
 
     @Override
     public IPage<Map<String,Object>> findEmpAccessorys(QueryRequest request, EmpAccessoryVO vo) {
@@ -99,14 +125,39 @@
     @Override
     public List<EmpAccessory> findEmpAccessorys(EmpAccessory empAccessory) {
         LambdaQueryWrapper<EmpAccessory> queryWrapper = new LambdaQueryWrapper<>();
-        // TODO 设置查询条件
+        queryWrapper.eq(EmpAccessory::getDelFlag,0);
+        if (null != empAccessory.getLabelid()) {
+            queryWrapper.eq(EmpAccessory::getLabelid, empAccessory.getLabelid());
+        }
+        if (StrUtil.isNotBlank(empAccessory.getFilesname())) {
+            queryWrapper.like(EmpAccessory::getFilesname, empAccessory.getFilesname());
+        }
+        if (null != empAccessory.getEmpid()) {
+            queryWrapper.eq(EmpAccessory::getEmpid, empAccessory.getEmpid());
+        }
         return this.baseMapper.selectList(queryWrapper);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void createEmpAccessory(EmpAccessory empAccessory) {
-        this.save(empAccessory);
+    public void createEmpAccessory(Long labelid, MultipartFile file,Long empId) throws FebsException, IOException {
+        EmpBaseInfo empBaseInfo = empBaseInfoService.getById(empId);
+        String nameAndCertificateNumb = empBaseInfo.getEmpName()+"_"+empBaseInfo.getCertificateNumb()+"/";
+        Dict dict = MyUtil.filesUpload(file,properties.getUploadSinglePath()+nameAndCertificateNumb,snowflake.nextIdStr());
+        EmpAccessory accessory = new EmpAccessory();
+        accessory.setCreatetime(new Date());
+        accessory.setCreator(operatorId);
+        accessory.setDelFlag(0);
+        accessory.setEmpid(empId);
+        accessory.setFilesaddress(dict.getStr("newName"));
+        accessory.setFilesformat(StrUtil.isBlank(dict.getStr("suffix")) ? dict.getStr("suffix") : dict.getStr("suffix").substring(1));
+        accessory.setAccessoryid(SequenceUtil.generateId(0L, ModuleCode.HR_FIlE));
+        accessory.setFilesname(dict.getStr("fileName"));
+        accessory.setLabelid(labelid);
+        accessory.setModifier(operatorId);
+        accessory.setModifytime(new Date());
+        accessory.setVersion(0);
+        this.save(accessory);
     }
 
     @Override
@@ -117,9 +168,41 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void deleteEmpAccessory(EmpAccessory empAccessory) {
-        LambdaQueryWrapper<EmpAccessory> wapper = new LambdaQueryWrapper<>();
-        // TODO 设置删除条件
-        this.remove(wapper);
+    public void deleteEmpAccessory(String accessoryids) {
+        String[] arr = accessoryids.split(",");
+        LambdaUpdateWrapper<EmpAccessory> wapper = new LambdaUpdateWrapper<>();
+        wapper.in(EmpAccessory::getAccessoryid,arr);
+        EmpAccessory accessory = new EmpAccessory();
+        accessory.setModifier(operatorId);
+        accessory.setModifytime(new Date());
+        accessory.setDelFlag(1);
+        this.update(accessory,wapper);
+
+        LambdaQueryWrapper<EmpAccessory> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(EmpAccessory::getAccessoryid,arr);
+        List<EmpAccessory> list = this.list(queryWrapper);
+        list.parallelStream().forEach(i-> {
+            EmpBaseInfo empBaseInfo = empBaseInfoService.getById(i.getEmpid());
+            String nameAndCertificateNumb = empBaseInfo.getEmpName()+"_"+empBaseInfo.getCertificateNumb()+"/";
+            FileUtil.del(properties.getUploadSinglePath()+nameAndCertificateNumb+"/" + i.getFilesaddress());
+        });
     }
+
+
+    @Override
+    public void download(String accessoryids, HttpServletRequest request, HttpServletResponse response) {
+        String[] arr = accessoryids.split(",");
+        List<File> files = new ArrayList<>();
+        List<String> fileName = new ArrayList<>();
+        Arrays.stream(arr).forEach(i -> {
+            EmpAccessory accessory = this.getById(i);
+            EmpBaseInfo empBaseInfo = empBaseInfoService.getById(accessory.getEmpid());
+            String nameAndCertificateNumb = empBaseInfo.getEmpName()+"_"+empBaseInfo.getCertificateNumb()+"/";
+            files.add(new File(properties.getUploadSinglePath() + nameAndCertificateNumb + accessory.getFilesaddress()));
+            fileName.add(accessory.getFilesname());
+        });
+        MyUtil.download(request, response, files, fileName);
+
+    }
+
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java
index 7ca006a..674daa8 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FilesUploadServiceImpl.java
@@ -6,15 +6,16 @@
 import cc.mrbird.febs.common.core.constant.ModuleCode;
 import cc.mrbird.febs.common.core.exception.FebsException;
 import cc.mrbird.febs.common.core.utils.FebsUtil;
+import cc.mrbird.febs.common.core.utils.MyUtil;
 import cc.mrbird.febs.common.core.utils.SequenceUtil;
 import cc.mrbird.febs.server.hr.entity.FilesUpload;
 import cc.mrbird.febs.server.hr.entity.Folder;
 import cc.mrbird.febs.server.hr.mapper.FilesUploadMapper;
 import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties;
 import cc.mrbird.febs.server.hr.service.IFilesUploadService;
-import cn.hutool.core.date.DateUtil;
+import cc.mrbird.febs.server.hr.service.IFolderService;
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.io.file.FileWriter;
+import cn.hutool.core.lang.Dict;
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
@@ -32,8 +33,6 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
 
 /**
  * 文件上传 Service实现
@@ -46,7 +45,7 @@
 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
 public class FilesUploadServiceImpl extends ServiceImpl<FilesUploadMapper, FilesUpload> implements IFilesUploadService {
 
-    private final FilesUploadMapper filesUploadMapper;
+    private final IFolderService iFolderService;
     private final FebsServerHrProperties properties;
     private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
             .map(u -> u.getUserId().toString())
@@ -66,7 +65,7 @@
     @Override
     public List<FilesUpload> findFilesUploads(FilesUpload filesUpload) {
         LambdaQueryWrapper<FilesUpload> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(FilesUpload::getDelFlag,0);
+        queryWrapper.eq(FilesUpload::getDelFlag, 0);
         if (null != filesUpload.getFolderid()) {
             queryWrapper.eq(FilesUpload::getFolderid, filesUpload.getFolderid());
         }
@@ -80,38 +79,16 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void createFilesUpload(Long folderid, MultipartFile file) throws FebsException, IOException {
-        if (file.isEmpty()) {
-            throw new FebsException("上传的文件不能为空!请重新上传");
-        }
-        if (file.getSize() <= 0) {
-            throw new FebsException("上传的文件大小需要大于0kb");
-        }
-        if (file.getSize() > 50 * 1024* 1024) {
-            throw new FebsException("上传的文件大于50M");
-        }
-        if (!FileUtil.exist(properties.getUploadPpath())) {
-            FileUtil.mkdir(properties.getUploadPpath());
-        }
-        //原本名字
-        String fileName = file.getOriginalFilename();
-        String suffix = "";
-        if (fileName.indexOf(".") > 0) {
-            //后缀
-            suffix = fileName.substring(fileName.indexOf("."), fileName.length());
-        }
-        //生成新的名字
-        String newName = snowflake.nextIdStr() + suffix;
-        //上传
-        file.transferTo(new File(properties.getUploadPpath() + newName));
-
+        Folder folder = iFolderService.getById(folderid);
+        Dict dict = MyUtil.filesUpload(file, properties.getUploadCommonPath() + folder.getFoldername() + "/", snowflake.nextIdStr());
         FilesUpload filesUpload = new FilesUpload();
         filesUpload.setCreatetime(new Date());
         filesUpload.setCreator(operatorId);
         filesUpload.setDelFlag(0);
-        filesUpload.setFilesaddress(newName);
-        filesUpload.setFilesformat(StrUtil.isBlank(suffix) ? suffix : suffix.substring(1));
+        filesUpload.setFilesaddress(dict.getStr("newName"));
+        filesUpload.setFilesformat(StrUtil.isBlank(dict.getStr("suffix")) ? dict.getStr("suffix") : dict.getStr("suffix").substring(1));
         filesUpload.setFilesid(SequenceUtil.generateId(0L, ModuleCode.HR_FIlE));
-        filesUpload.setFilesname(fileName);
+        filesUpload.setFilesname(dict.getStr("fileName"));
         filesUpload.setFolderid(folderid);
         filesUpload.setModifier(operatorId);
         filesUpload.setModifytime(new Date());
@@ -130,13 +107,20 @@
     public void deleteFilesUpload(String fileids) {
         String[] arr = fileids.split(",");
         LambdaUpdateWrapper<FilesUpload> wapper = new LambdaUpdateWrapper<>();
-        wapper.in(FilesUpload::getFilesid,arr).setSql("delFlag = 1");
-        this.update(wapper);
+        wapper.in(FilesUpload::getFilesid, arr);
+        FilesUpload filesUpload = new FilesUpload();
+        filesUpload.setModifier(operatorId);
+        filesUpload.setModifytime(new Date());
+        filesUpload.setDelFlag(1);
+        this.update(filesUpload,wapper);
 
         LambdaQueryWrapper<FilesUpload> queryWrapper = new LambdaQueryWrapper<>();
-        wapper.in(FilesUpload::getFilesid,arr);
+        queryWrapper.in(FilesUpload::getFilesid, arr);
         List<FilesUpload> list = this.list(queryWrapper);
-        list.parallelStream().forEach(i-> FileUtil.del(properties.getUploadPpath() + i.getFilesaddress()));
+        list.parallelStream().forEach(i -> {
+            Folder folder = iFolderService.getById(i.getFolderid());
+            FileUtil.del(properties.getUploadCommonPath() + folder.getFoldername() + "/" + i.getFilesaddress());
+        });
 
     }
 
@@ -147,71 +131,39 @@
         List<String> fileName = new ArrayList<>();
         Arrays.stream(arr).forEach(i -> {
             FilesUpload filesUpload = this.getById(i);
-            files.add(new File(properties.getUploadPpath() + filesUpload.getFilesaddress()));
+            Folder folder = iFolderService.getById(filesUpload.getFolderid());
+            files.add(new File(properties.getUploadCommonPath() + folder.getFoldername() + "/" + filesUpload.getFilesaddress()));
             fileName.add(filesUpload.getFilesname());
         });
-        //设置压缩包的名字
-        //解决不同浏览器压缩包名字含有中文时乱码的问题
-        String downloadName ="PersonnelInformation-" + DateUtil.format(new Date(), "yyyyMMddhhmmsss") + ".zip";
-        String agent = request.getHeader("USER-AGENT");
-        try {
-            if (agent.contains("MSIE") || agent.contains("Trident")) {
-                downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
-            } else {
-                downloadName = new String(downloadName.getBytes("UTF-8"), "ISO-8859-1");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");
-
-
-        //设置压缩流:直接写入response,实现边压缩边下载
-        ZipOutputStream zipos = null;
-        try {
-            zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
-            //设置压缩方法
-            zipos.setMethod(ZipOutputStream.DEFLATED);
-        } catch (Exception e) {
-            log.error("设置压缩流出现异常" + e.getMessage());
-            e.printStackTrace();
-        }
-
-        //循环将文件写入压缩流
-        DataOutputStream os = null;
-        for (int i = 0; i < files.size(); i++) {
-            File file = files.get(i);
-            try {
-                //添加ZipEntry,并ZipEntry中写入文件流
-                //这里,加上i是防止要下载的文件有重名的导致下载失败
-                zipos.putNextEntry(new ZipEntry(fileName.get(i)));
-                os = new DataOutputStream(zipos);
-                InputStream is = new FileInputStream(file);
-                byte[] b = new byte[100];
-                int length;
-                while ((length = is.read(b)) != -1) {
-                    os.write(b, 0, length);
-                }
-                is.close();
-                zipos.closeEntry();
-            } catch (IOException e) {
-                log.error("循环将文件写入压缩流出现异常" + e.getMessage());
-                e.printStackTrace();
-            }
-        }
-
-        //关闭流
-        try {
-            os.flush();
-            os.close();
-            zipos.close();
-        } catch (IOException e) {
-            log.error("关闭流现异常" + e.getMessage());
-            e.printStackTrace();
-        }
+        MyUtil.download(request, response, files, fileName);
 
     }
 
+    @Override
+    public void mvFiles(String fileids,Long folderid) {
+        String[] arr = fileids.split(",");
+
+        LambdaQueryWrapper<FilesUpload> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.in(FilesUpload::getFilesid, arr);
+        List<FilesUpload> list = this.list(queryWrapper);
+        list.parallelStream().forEach(i -> {
+            Folder folder = iFolderService.getById(i.getFolderid());
+            Folder newfolder = iFolderService.getById(folderid);
+            File oldfile = new File(properties.getUploadCommonPath() + folder.getFoldername() + "/" + i.getFilesaddress());
+            File newfile = new File(properties.getUploadCommonPath() + newfolder.getFoldername() + "/" + i.getFilesaddress());
+            FileUtil.move(oldfile,newfile,true);
+        });
+
+        LambdaUpdateWrapper<FilesUpload> wapper = new LambdaUpdateWrapper<>();
+        wapper.in(FilesUpload::getFilesid, arr);
+        FilesUpload filesUpload = new FilesUpload();
+        filesUpload.setModifier(operatorId);
+        filesUpload.setModifytime(new Date());
+        filesUpload.setDelFlag(1);
+        filesUpload.setFolderid(folderid);
+        this.update(filesUpload,wapper);
+
+    }
 
 
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FolderServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FolderServiceImpl.java
index cf984dc..82f908f 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FolderServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/FolderServiceImpl.java
@@ -73,7 +73,11 @@
     @Transactional(rollbackFor = Exception.class)
     public void deleteFolder(Folder folder) {
         LambdaUpdateWrapper<Folder> wapper = new LambdaUpdateWrapper<>();
-        wapper.eq(Folder::getFolderid,folder.getFolderid()).setSql("delFlag = 1");
-        this.update(wapper);
+        wapper.eq(Folder::getFolderid,folder.getFolderid());
+        Folder updatefolder = new Folder();
+        updatefolder.setModifier(operatorId);
+        updatefolder.setModifytime(new Date());
+        updatefolder.setDelFlag(1);
+        this.update(updatefolder,wapper);
     }
 }
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/LabelServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/LabelServiceImpl.java
index 9fb814f..fdd526d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/LabelServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/LabelServiceImpl.java
@@ -1,12 +1,14 @@
 package cc.mrbird.febs.server.hr.service.impl;
 
 import cc.mrbird.febs.common.core.constant.ModuleCode;
+import cc.mrbird.febs.common.core.exception.FebsException;
 import cc.mrbird.febs.common.core.utils.FebsUtil;
 import cc.mrbird.febs.common.core.utils.SequenceUtil;
 import cc.mrbird.febs.server.hr.entity.Folder;
 import cc.mrbird.febs.server.hr.entity.Label;
 import cc.mrbird.febs.server.hr.mapper.LabelMapper;
 import cc.mrbird.febs.server.hr.service.ILabelService;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -55,7 +57,16 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void createLabel(Label label) {
+    public void createLabel(Label label) throws FebsException {
+        LambdaQueryWrapper<Label> queryWrapper = new LambdaQueryWrapper();
+        queryWrapper.eq(Label::getLabelname,label.getLabelname()).or().eq(Label::getLabelcode,label.getLabelcode());
+        Label l = this.getOne(queryWrapper);
+        if(StrUtil.equals(label.getLabelname(),l.getLabelname())){
+             throw new FebsException("标签名字重复");
+        }else if(StrUtil.equals(label.getLabelcode(),l.getLabelcode())){
+            throw new FebsException("标签code重复");
+        }
+
         label.setLabelid(SequenceUtil.generateId(0L, ModuleCode.HR_FIlE));
         label.setCreator(operatorId);
         label.setModifier(operatorId);
@@ -75,7 +86,11 @@
     @Transactional(rollbackFor = Exception.class)
     public void deleteLabel(Label label) {
         LambdaUpdateWrapper<Label> wapper = new LambdaUpdateWrapper<>();
-        wapper.eq(Label::getLabelid,label.getLabelid()).setSql("delFlag = 1");
+        wapper.eq(Label::getLabelid,label.getLabelid());
+        Label updateLabel = new Label();
+        updateLabel.setModifier(operatorId);
+        updateLabel.setModifytime(new Date());
+        updateLabel.setDelFlag(1);
         this.update(wapper);
     }
 }
diff --git a/febs-server/febs-server-hr/src/main/resources/bootstrap.yml b/febs-server/febs-server-hr/src/main/resources/bootstrap.yml
index 621e447..052ea73 100644
--- a/febs-server/febs-server-hr/src/main/resources/bootstrap.yml
+++ b/febs-server/febs-server-hr/src/main/resources/bootstrap.yml
@@ -6,7 +6,7 @@
       config:
         server-addr: ${nacos.url}:8848
         group: DEFAULT_GROUP
-        prefix: febs-server-Hr
+        prefix: febs-server-hr
         file-extension: yaml
       discovery:
         server-addr: ${nacos.url}:8848
diff --git a/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties b/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
index 157fb3c..47377c8 100644
--- a/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
+++ b/febs-server/febs-server-hr/src/main/resources/febs-server-hr.properties
@@ -1,2 +1,2 @@
-# 批量插入单次最大值,比如配置为1000,那么数据库插入1000条数据commit一次
-febs.server.hr.uploadPpath=C:/upload/hr/
+febs.server.hr.uploadCommonPath=C:/upload/hr/commonfile/
+febs.server.hr.uploadSinglePath=C:/upload/hr/singlefile/

--
Gitblit v1.8.0