Browse Source

提取公共代码

lijie 4 years ago
parent
commit
36512b8f0a

+ 128 - 0
doc/fm-peron_3.0.0_表结构设计.md

@@ -0,0 +1,128 @@
+# 表结构设计
+
+**数据库名:** tes_fm-person
+
+**文档版本:** 3.0.0
+
+**文档描述:** 表结构设计
+
+| 表名                  | 说明       |
+| :---: | :---: |
+| [department](#department) | 部门 |
+| [dep_project](#dep_project) | 部门项目 |
+| [person](#person) | 人员 |
+| [profession](#profession) | 专业 |
+| [work_resume](#work_resume) | 工作信息 |
+
+**表名:** <a id="department">department</a>
+
+**说明:** 部门
+
+**数据列:**
+
+| 序号 | 名称 | 数据类型 |  长度  | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+|  1   | id |   varchar   | 64 |   0    |    N     |  Y   |       | id  |
+|  2   | name |   varchar   | 100 |   0    |    N     |  N   |       | 部门名称  |
+|  3   | type |   varchar   | 10 |   0    |    N     |  N   |       | 部门类型  |
+|  4   | parent_id |   varchar   | 64 |   0    |    N     |  N   |   0    | 上级部门id  |
+|  5   | resource_from |   varchar   | 10 |   0    |    N     |  N   |   0    | 数据来源(0:手动创建;1:oa同步)  |
+|  6   | managers |   text   | 65535 |   0    |    Y     |  N   |       | 负责人  |
+|  7   | full_path |   text   | 65535 |   0    |    Y     |  N   |       | 部门全路径  |
+|  8   | staff_count |   int   | 10 |   0    |    N     |  N   |   0    | 编制人数(预留字段)  |
+|  9   | project_ids |   json   | 1073741824 |   0    |    Y     |  N   |       | 关联的项目  |
+|  10   | ts |   timestamp   | 26 |   0    |    Y     |  N   |       | 乐观锁  |
+|  11   | creator |   varchar   | 32 |   0    |    Y     |  N   |       | 创建人  |
+|  12   | creation_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 创建时间  |
+|  13   | modifier |   varchar   | 32 |   0    |    Y     |  N   |       | 最后修改人  |
+|  14   | modified_time |   datetime   | 26 |   0    |    Y     |  N   |       | 最后修改时间  |
+|  15   | valid |   int   | 10 |   0    |    Y     |  N   |       | 合法标识(0:false;1:true)  |
+
+**表名:** <a id="dep_project">dep_project</a>
+
+**说明:** 部门项目
+
+**数据列:**
+
+| 序号 | 名称 | 数据类型 |  长度  | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+|  1   | id |   varchar   | 64 |   0    |    N     |  Y   |       | 主键  |
+|  2   | dep_id |   varchar   | 64 |   0    |    Y     |  N   |       | 部门id  |
+|  3   | project_id |   varchar   | 80 |   0    |    Y     |  N   |       | 项目id  |
+|  4   | ts |   timestamp   | 26 |   0    |    Y     |  N   |       | 乐观锁  |
+|  5   | creator |   varchar   | 32 |   0    |    Y     |  N   |       | 创建人  |
+|  6   | creation_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 创建时间  |
+|  7   | modifier |   varchar   | 32 |   0    |    Y     |  N   |       | 最后修改人  |
+|  8   | modified_time |   datetime   | 26 |   0    |    Y     |  N   |       | 最后修改时间  |
+|  9   | valid |   int   | 10 |   0    |    Y     |  N   |       | 合法标识(0:false;1:true)  |
+
+**表名:** <a id="person">person</a>
+
+**说明:** 人员
+
+**数据列:**
+
+| 序号 | 名称 | 数据类型 |  长度  | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+|  1   | id |   varchar   | 64 |   0    |    N     |  Y   |       | id  |
+|  2   | name |   varchar   | 80 |   0    |    Y     |  N   |       | 姓名  |
+|  3   | name_pinyin |   varchar   | 200 |   0    |    Y     |  N   |       | 姓名拼音  |
+|  4   | username |   varchar   | 80 |   0    |    Y     |  N   |       | 账号  |
+|  5   | account_id |   varchar   | 80 |   0    |    Y     |  N   |       | 账号id  |
+|  6   | id_number |   varchar   | 80 |   0    |    Y     |  N   |       | 证件号码  |
+|  7   | certificate_type |   varchar   | 10 |   0    |    Y     |  N   |       | 证件类型(1:身份证;2:其他)  |
+|  8   | gender |   int   | 10 |   0    |    Y     |  N   |       | 性别(1:男,0:女)  |
+|  9   | birthday |   timestamp   | 26 |   0    |    Y     |  N   |       | 生日  |
+|  10   | job_number |   varchar   | 80 |   0    |    Y     |  N   |       | 工号  |
+|  11   | person_type |   varchar   | 10 |   0    |    Y     |  N   |       | 员工类型(1:自有员工;2:外包员工;3:合作方人员;4:外部用户)  |
+|  12   | user_from |   varchar   | 80 |   0    |    Y     |  N   |       | 账号来源(预留字段)  |
+|  13   | leader |   bigint   | 20 |   0    |    Y     |  N   |       | 直接领导  |
+|  14   | remark |   varchar   | 500 |   0    |    Y     |  N   |       | 备注  |
+|  15   | profession |   text   | 65535 |   0    |    Y     |  N   |       | 专业  |
+|  16   | ts |   timestamp   | 26 |   0    |    Y     |  N   |       | 乐观锁  |
+|  17   | creation_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 创建时间  |
+|  18   | creator |   varchar   | 80 |   0    |    Y     |  N   |       | 创建用户  |
+|  19   | modifier |   varchar   | 80 |   0    |    Y     |  N   |       | 更新用户  |
+|  20   | modified_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 更新时间  |
+|  21   | valid |   int   | 10 |   0    |    Y     |  N   |       | 合法标识(0:false;1:true)  |
+
+**表名:** <a id="profession">profession</a>
+
+**说明:** 专业
+
+**数据列:**
+
+| 序号 | 名称 | 数据类型 |  长度  | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+|  1   | id |   varchar   | 64 |   0    |    N     |  Y   |       | 主键  |
+|  2   | name |   varchar   | 20 |   0    |    N     |  N   |       | 专业名称  |
+|  3   | editable |   char   | 11 |   0    |    N     |  N   |       | 是否可编辑(0:false;1:true)  |
+|  4   | ts |   timestamp   | 26 |   0    |    Y     |  N   |       | 乐观锁  |
+|  5   | creator |   varchar   | 32 |   0    |    Y     |  N   |       | 创建人  |
+|  6   | creation_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 创建时间  |
+|  7   | modifier |   varchar   | 32 |   0    |    Y     |  N   |       | 最后修改人  |
+|  8   | modified_time |   datetime   | 26 |   0    |    Y     |  N   |       | 最后修改时间  |
+|  9   | valid |   int   | 10 |   0    |    Y     |  N   |       | 合法标识(0:false;1:true)  |
+
+**表名:** <a id="work_resume">work_resume</a>
+
+**说明:** 工作信息
+
+**数据列:**
+
+| 序号 | 名称 | 数据类型 |  长度  | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
+| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
+|  1   | id |   varchar   | 64 |   0    |    N     |  Y   |       | id  |
+|  2   | person_id |   varchar   | 64 |   0    |    N     |  N   |       | 人员主键  |
+|  3   | dep_id |   varchar   | 64 |   0    |    N     |  N   |       | 部门主键  |
+|  4   | hired_state |   varchar   | 10 |   0    |    N     |  N   |   0    | 在职状态(0:在职;1:离职)  |
+|  5   | enable_state |   varchar   | 10 |   0    |    N     |  N   |   0    | 启用状态(0:启用;1:禁用)  |
+|  6   | hired_date |   timestamp   | 26 |   0    |    Y     |  N   |       | 入职时间  |
+|  7   | departure_date |   timestamp   | 26 |   0    |    Y     |  N   |       | 离职时间  |
+|  8   | is_leader |   varchar   | 10 |   0    |    Y     |  N   |       | 是否是部门主管(0:false;1:true)  |
+|  9   | ts |   timestamp   | 26 |   0    |    Y     |  N   |       | 乐观锁  |
+|  10   | creator |   varchar   | 32 |   0    |    Y     |  N   |       | 创建人  |
+|  11   | creation_time |   timestamp   | 26 |   0    |    Y     |  N   |       | 创建时间  |
+|  12   | modifier |   varchar   | 32 |   0    |    Y     |  N   |       | 最后修改人  |
+|  13   | modified_time |   datetime   | 26 |   0    |    Y     |  N   |       | 最后修改时间  |
+|  14   | valid |   int   | 10 |   0    |    Y     |  N   |       | 合法标识(0:false;1:true)  |

+ 4 - 0
fm-common/src/main/java/com/persagy/fm/common/constant/CommonConstant.java

@@ -6,6 +6,10 @@ package com.persagy.fm.common.constant;
  * Update By lijie 2021/4/27 17:13
  * Update By lijie 2021/4/27 17:13
  */
  */
 public class CommonConstant {
 public class CommonConstant {
+    /**uploadFlag,响应头的key:1-成功,0-失败*/
+    public static final String UPLOAD_FLAG = "uploadFlag";
+    /**Excel文件的文件后缀*/
+    public static final String EXCEL_SUFFIX = "xlsx";
     /**user_id:用户id*/
     /**user_id:用户id*/
     public static final String USER_ID="user_id";
     public static final String USER_ID="user_id";
     /**dict_type:字典类型*/
     /**dict_type:字典类型*/

+ 76 - 0
fm-common/src/main/java/com/persagy/fm/common/utils/FileUtil.java

@@ -1,16 +1,29 @@
 package com.persagy.fm.common.utils;
 package com.persagy.fm.common.utils;
 
 
+import cn.hutool.http.useragent.OS;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import com.persagy.fm.common.constant.CommonConstant;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.core.io.support.ResourcePatternResolver;
 import org.springframework.core.io.support.ResourcePatternResolver;
 
 
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.List;
+
 /***
 /***
  * Description: 文件处理公共类
  * Description: 文件处理公共类
  * @author : lijie
  * @author : lijie
  * @date :2021/4/28 16:38
  * @date :2021/4/28 16:38
  * Update By lijie 2021/4/28 16:38
  * Update By lijie 2021/4/28 16:38
  */
  */
+@Slf4j
 public class FileUtil {
 public class FileUtil {
 
 
     /***
     /***
@@ -40,4 +53,67 @@ public class FileUtil {
         return resolver.getResources(classpathFilePath);
         return resolver.getResources(classpathFilePath);
     }
     }
 
 
+    /***
+     * Description: 写错误提示语到文件中
+     * @param errorList : 错误提示语列表
+     * @param response : 响应体对象
+     * @author : lijie
+     * @date :2021/3/4 15:33
+     * Update By lijie 2021/3/4 15:33
+     */
+    public static void writeErrorContentToResponse(List<String> errorList,
+                                            HttpServletResponse response,
+                                            HttpServletRequest request,String errorFileName){
+        try {
+            ServletOutputStream outputStream = response.getOutputStream();
+            String lineSeparator = getSystemLineSeparator(request);
+            for (String error : errorList) {
+                outputStream.write(error.getBytes());
+                outputStream.write(lineSeparator.getBytes());
+            }
+            // 为文件命名
+            response.setHeader(CommonConstant.REPONSE_HEAD_CONTENT_DISPOSITION,
+                    "attachment;filename=" + URLEncoder.encode(errorFileName, "UTF-8"));
+            response.addHeader(CommonConstant.REPONSE_HEAD_CONTENT_TYPE, "text/plain");
+            response.addHeader(CommonConstant.UPLOAD_FLAG,"0");
+            response.addHeader(CommonConstant.REPONSE_HEAD_ACCESS_CONTROL_EXPOSE_HEADERS,CommonConstant.UPLOAD_FLAG);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+
+    /***
+     * Description: 获得请求的换行符
+     * @param request : 请求体
+     * @return : void
+     * @author : lijie
+     * @date :2021/3/13 10:57
+     * Update By lijie 2021/3/13 10:57
+     */
+    private static String getSystemLineSeparator(HttpServletRequest request) {
+        String userAgent = request.getHeader(CommonConstant.OS_TYPE);
+        if (StringUtils.isBlank(userAgent)){
+            return System.lineSeparator();
+        }
+        UserAgent agent = UserAgentUtil.parse(userAgent);
+        OS os = agent.getOs();
+        if (null==os){
+            return System.lineSeparator();
+        }
+        String osStr = agent.getOs().toString().toLowerCase();
+        if (StringUtils.isBlank(osStr)){
+            return System.lineSeparator();
+        }
+        if (osStr.contains(CommonConstant.SYSTEM_TYPE_WINDOWS)){
+            return "\r\n";
+        }
+        if (osStr.contains(CommonConstant.SYSTEM_TYPE_LINUX)){
+            return "\r";
+        }
+        if (osStr.contains(CommonConstant.SYSTEM_TYPE_MAC)){
+            return "\n";
+        }
+        return System.lineSeparator();
+    }
+
 }
 }