From f337e00700b069f6d3229a9fef1fcd8623e9d69f Mon Sep 17 00:00:00 2001
From: 孔祥富 <kongxf@daryun.com>
Date: 星期日, 07 三月 2021 13:59:09 +0800
Subject: [PATCH] 提交档案导出

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/AvailableResult.java                        |  185 ++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/User.java                                   |   84 ++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccidentCases.java                   |    3 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java |    3 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/HeaderHandle.java                         |   80 ++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpInsurance.java                       |    5 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ExportPdfService.java                  |   13 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/ExportPdfServiceImpl.java         |  383 ++++++++++++
 febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DicController.java          |    1 
 febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DiciIemController.java      |    8 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/PdfController.java                  |   63 ++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOccupational.java                    |    3 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFileName.java                     |   30 +
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDicItemService.java               |   31 +
 application.properties                                                                                           |    2 
 febs-server/febs-server-hr/src/main/resources/application.properties                                             |    2 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFold.java                         |   35 +
 febs-server/febs-server-hr/pom.xml                                                                               |   15 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpLaborTrouble.java                    |    3 
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/CreatePdf.java                            |  780 ++++++++++++++++++++++++++
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GetFilePlace.java                         |   56 +
 21 files changed, 1,780 insertions(+), 5 deletions(-)

diff --git a/application.properties b/application.properties
new file mode 100644
index 0000000..5dca0d8
--- /dev/null
+++ b/application.properties
@@ -0,0 +1,2 @@
+#pdf存放目录
+pdfPath=C:/appDataPdf
\ No newline at end of file
diff --git a/febs-server/febs-server-hr/pom.xml b/febs-server/febs-server-hr/pom.xml
index bd12f7a..4678cfb 100644
--- a/febs-server/febs-server-hr/pom.xml
+++ b/febs-server/febs-server-hr/pom.xml
@@ -58,6 +58,21 @@
             <version>2.2-RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itextpdf</artifactId>
+            <version>5.5.13</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
+        <dependency>
+            <groupId>com.itextpdf</groupId>
+            <artifactId>itext-asian</artifactId>
+            <version>5.2.0</version>
+        </dependency>
+
+
+
+
     </dependencies>
 
 	<build>
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/PdfController.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/PdfController.java
new file mode 100644
index 0000000..d4b2cd0
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/controller/PdfController.java
@@ -0,0 +1,63 @@
+package cc.mrbird.febs.server.hr.controller;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.server.hr.annotation.ControllerEndpoint;
+import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
+import cc.mrbird.febs.server.hr.po.AvailableResult;
+import cc.mrbird.febs.server.hr.service.ExportPdfService;
+import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
+import cc.mrbird.febs.server.hr.util.PoiExportExcel;
+import cn.hutool.core.date.DateUtil;
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import javassist.runtime.Cflow;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.hssf.usermodel.HeaderFooter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import sun.font.FontFamily;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+@Api(tags = "PDF")
+@Slf4j
+@Validated
+@RestController
+@RequestMapping("/pdf")
+@RequiredArgsConstructor
+public class PdfController {
+
+    @Autowired
+    private ExportPdfService exportPdfService;
+    @Autowired
+    private IEmpBaseInfoService iEmpBaseInfoService;
+    @PostMapping(value = "/contract")
+    public void createContractPdf(@RequestParam("empNumb") String empNumb,QueryRequest queryRequest, HttpServletRequest request, HttpServletResponse response) {
+        try{
+            queryRequest.setPageSize(25535);
+            queryRequest.setPageNum(1);
+            exportPdfService.exportPdf(empNumb,queryRequest,request,response);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+    @ApiOperation(value = "导出员工")
+    @RequestMapping(value = "exportWithField",method= RequestMethod.POST)
+    @ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败")
+    public FebsResponse exportWithField(QueryRequest queryRequest, HttpServletRequest request, HttpServletResponse response, EmpBaseInfo empBaseinfo) throws IOException {
+        List<EmpBaseInfo> exportList = this.iEmpBaseInfoService.findZsEmpBaseInfos(queryRequest, empBaseinfo).getRecords();
+        return new FebsResponse().data(exportList);
+    }
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccidentCases.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccidentCases.java
index 1e1c6fb..8de206d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccidentCases.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpAccidentCases.java
@@ -131,7 +131,8 @@
     @TableField("hospitalizatioFlag")
     @ExcelField(value = "是否住院", writeConverterExp = "0=未住院,1=已住院")
     private Integer hospitalizatioFlag = 0;
-
+    @TableField(exist = false)
+    private String hospitalizatioFlagName ;
     @FieldInfo(name = "bedNumb", type = "varchar", explain = "床号")
     @TableField("bedNumb")
     @ExcelField(value = "床号")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpInsurance.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpInsurance.java
index bd0836a..bac387d 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpInsurance.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpInsurance.java
@@ -108,12 +108,15 @@
     @TableField("reportStatus")
     @ExcelField(value = "是否已报告", writeConverterExp = "0=未报告,1=已报告")
     private Integer reportStatus = 0;
-
+    @TableField(exist = false)
+    private String reportStatusName ;
     @FieldInfo(name = "applayStatus", type = "bit", explain = "申请状态 0-未申请 1-已申请")
     @TableField("applayStatus")
     @ExcelField(value = "申请状态", writeConverterExp = "0=未申请,1=已申请")
     private Integer applayStatus = 0;
 
+    @TableField(exist = false)
+    private String applayStatusName ;
     @FieldInfo(name = "auditor", type = "varchar", explain = "审核人")
     @TableField("auditor")
     @ExcelField(value = "审核人")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpLaborTrouble.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpLaborTrouble.java
index 4dd81e0..177c543 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpLaborTrouble.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpLaborTrouble.java
@@ -123,7 +123,8 @@
     @FieldInfo(name = "arbitrationStatus", type = "bit", explain = "仲裁状态")
     @TableField("arbitrationStatus")
     private Integer arbitrationStatus = 0;
-
+    @TableField(exist = false)
+    private String arbitrationStatusName ;
     @FieldInfo(name = "settleDate", type = "date", explain = "案结日期")
     @TableField("settleDate")
     @JsonSerialize(using = DateSerializer.class)
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOccupational.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOccupational.java
index 73f8e7d..b6b0d93 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOccupational.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/entity/EmpOccupational.java
@@ -131,7 +131,8 @@
     @TableField("hospitalizatioFlag")
     @ExcelField(value = "是否住院", writeConverterExp = "0=未住院,1=已住院")
     private Integer hospitalizatioFlag = 0;
-
+    @TableField(exist = false)
+    private String hospitalizatioFlagName ;
     @FieldInfo(name = "bedNumb", type = "varchar", explain = "床号")
     @TableField("bedNumb")
     @ExcelField(value = "床号")
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDicItemService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDicItemService.java
new file mode 100644
index 0000000..687ec7a
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/feign/IRemoteDicItemService.java
@@ -0,0 +1,31 @@
+package cc.mrbird.febs.server.hr.feign;
+
+import cc.mrbird.febs.common.core.entity.FebsResponse;
+import cc.mrbird.febs.common.core.entity.constant.FebsServerConstant;
+import cc.mrbird.febs.common.core.entity.system.Dept;
+import cc.mrbird.febs.common.core.entity.system.DicItem;
+import cc.mrbird.febs.server.hr.feign.fallback.RemoteDeptServiceFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/**
+ * name: IRemoteDeptService
+ * package: cc.mrbird.febs.server.hr.feign
+ * description: 从系统管理微服务中获取部门信息
+ * date: 2021-01-30 12:46
+ *
+ * @author luoyibo
+ * @version 0.1
+ * @since JDK 1.8
+ */
+@FeignClient(value = FebsServerConstant.FEBS_SERVER_SYSTEM, contextId = "dicItemServiceClient")
+public interface IRemoteDicItemService {
+    @GetMapping("dicItem/types/{dictType}")
+    List<DicItem> dictType(@PathVariable String dictType);
+
+    @GetMapping("dept/userRightDepts")
+    String userRightDepts();
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/AvailableResult.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/AvailableResult.java
new file mode 100644
index 0000000..78efcb5
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/AvailableResult.java
@@ -0,0 +1,185 @@
+package cc.mrbird.febs.server.hr.po;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.util.List;
+
+/**
+ * @Description: 自定义响应数据结构 
+ */
+public class AvailableResult {
+
+	// 定义jackson对象
+	private static final ObjectMapper MAPPER = new ObjectMapper();
+
+	// 响应业务状态
+	private Integer status;
+
+	// 响应消息
+	private String msg;
+
+	// 响应中的数据
+	private Object data;
+
+	private String ok; // 不使用
+
+	public static AvailableResult build(Integer status, String msg, Object data) {
+		return new AvailableResult(status, msg, data);
+	}
+
+	public static AvailableResult ok(Object data) {
+		return new AvailableResult(data);
+	}
+
+	public static AvailableResult ok() {
+		return new AvailableResult(null);
+	}
+
+	public static AvailableResult errorMsg(String msg) {
+		return new AvailableResult(500, msg, null);
+	}
+
+	public static AvailableResult errorMap(Object data) {
+		return new AvailableResult(501, "error", data);
+	}
+
+	public static AvailableResult errorTokenMsg(String msg) {
+		return new AvailableResult(502, msg, null);
+	}
+
+	public static AvailableResult errorException(String msg) {
+		return new AvailableResult(555, msg, null);
+	}
+
+	public AvailableResult() {
+
+	}
+
+	// public static LeeJSONResult build(Integer status, String msg) {
+	// return new LeeJSONResult(status, msg, null);
+	// }
+
+	public AvailableResult(Integer status, String msg, Object data) {
+		this.status = status;
+		this.msg = msg;
+		this.data = data;
+	}
+
+	public AvailableResult(Object data) {
+		this.status = 200;
+		this.msg = "OK";
+		this.data = data;
+	}
+
+	public Boolean isOK() {
+		return this.status == 200;
+	}
+
+	public Integer getStatus() {
+		return status;
+	}
+
+	public void setStatus(Integer status) {
+		this.status = status;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	public Object getData() {
+		return data;
+	}
+
+	public void setData(Object data) {
+		this.data = data;
+	}
+
+	/**
+	 * 
+	 * @Description: 将json结果集转化为LeeJSONResult对象 需要转换的对象是一个类
+	 * @param jsonData
+	 * @param clazz
+	 * @return
+	 * 
+	 * 
+	 * @date 2016年4月22日 下午8:34:58
+	 */
+	public static AvailableResult formatToPojo(String jsonData, Class<?> clazz) {
+		try {
+			if (clazz == null) {
+				return MAPPER.readValue(jsonData, AvailableResult.class);
+			}
+			JsonNode jsonNode = MAPPER.readTree(jsonData);
+			JsonNode data = jsonNode.get("data");
+			Object obj = null;
+			if (clazz != null) {
+				if (data.isObject()) {
+					obj = MAPPER.readValue(data.traverse(), clazz);
+				} else if (data.isTextual()) {
+					obj = MAPPER.readValue(data.asText(), clazz);
+				}
+			}
+			return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	/**
+	 * 
+	 * @Description: 没有object对象的转化
+	 * @param json
+	 * @return
+	 * 
+	 * 
+	 * @date 2016年4月22日 下午8:35:21
+	 */
+	public static AvailableResult format(String json) {
+		try {
+			return MAPPER.readValue(json, AvailableResult.class);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	/**
+	 * 
+	 * @Description: Object是集合转化 需要转换的对象是一个list
+	 * @param jsonData
+	 * @param clazz
+	 * @return
+	 * 
+	 * 
+	 * @date 2016年4月22日 下午8:35:31
+	 */
+	public static AvailableResult formatToList(String jsonData, Class<?> clazz) {
+		try {
+			JsonNode jsonNode = MAPPER.readTree(jsonData);
+			JsonNode data = jsonNode.get("data");
+			Object obj = null;
+			if (data.isArray() && data.size() > 0) {
+				obj = MAPPER.readValue(data.traverse(),
+						MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
+			}
+			return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
+		} catch (Exception e) {
+			return null;
+		}
+	}
+
+	public String getOk() {
+		return ok;
+	}
+
+	public void setOk(String ok) {
+		this.ok = ok;
+	}
+
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/User.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/User.java
new file mode 100644
index 0000000..57a74bb
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/po/User.java
@@ -0,0 +1,84 @@
+package cc.mrbird.febs.server.hr.po;
+
+import java.io.Serializable;
+
+public class User implements Serializable{
+
+	private static final long serialVersionUID = -9180229310895087286L;
+
+	private String name; // 姓名
+	
+	private String sex; // 性别
+	
+	private Integer age; // 年龄
+	
+	private String phoneNo; // 手机号
+	
+	private String address; // 地址
+	
+	private String hobby; // 爱好
+	
+	public User(String name, String sex, Integer age, String phoneNo, String address, String hobby) {
+		super();
+		this.name = name;
+		this.sex = sex;
+		this.age = age;
+		this.phoneNo = phoneNo;
+		this.address = address;
+		this.hobby = hobby;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getSex() {
+		return sex;
+	}
+
+	public void setSex(String sex) {
+		this.sex = sex;
+	}
+
+	public Integer getAge() {
+		return age;
+	}
+
+	public void setAge(Integer age) {
+		this.age = age;
+	}
+
+	public String getPhoneNo() {
+		return phoneNo;
+	}
+
+	public void setPhoneNo(String phoneNo) {
+		this.phoneNo = phoneNo;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+
+	public String getHobby() {
+		return hobby;
+	}
+
+	public void setHobby(String hobby) {
+		this.hobby = hobby;
+	}
+
+	@Override
+	public String toString() {
+		return "User [name=" + name + ", sex=" + sex + ", age=" + age + ", phoneNo=" + phoneNo + ", address=" + address
+				+ ", hobby=" + hobby + "]";
+	}
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ExportPdfService.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ExportPdfService.java
new file mode 100644
index 0000000..ebfe69b
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/ExportPdfService.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.server.hr.service;
+
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.server.hr.po.AvailableResult;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public interface ExportPdfService {
+
+	void exportPdf(String empNum, QueryRequest queryRequest, HttpServletRequest request, HttpServletResponse response);
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java
index b883e97..21695a7 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpWorkExperienceServiceImpl.java
@@ -81,6 +81,9 @@
     public List<EmpWorkExperience> findEmpWorkExperiences(EmpWorkExperience empWorkexperience) {
         LambdaQueryWrapper<EmpWorkExperience> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(EmpWorkExperience::getDelFlag,empWorkexperience.getDelFlag());
+        if(StringUtils.isNotBlank(empWorkexperience.getEmpNumb())){
+            queryWrapper.eq(EmpWorkExperience::getEmpNumb,empWorkexperience.getEmpNumb());
+        }
         return this.baseMapper.selectList(queryWrapper);
     }
 
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/ExportPdfServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/ExportPdfServiceImpl.java
new file mode 100644
index 0000000..922dd28
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/ExportPdfServiceImpl.java
@@ -0,0 +1,383 @@
+package cc.mrbird.febs.server.hr.service.impl;
+
+import cc.mrbird.febs.common.core.entity.QueryRequest;
+import cc.mrbird.febs.common.core.entity.system.DicItem;
+import cc.mrbird.febs.server.hr.entity.*;
+import cc.mrbird.febs.server.hr.feign.IRemoteDicItemService;
+import cc.mrbird.febs.server.hr.po.AvailableResult;
+import cc.mrbird.febs.server.hr.po.User;
+import cc.mrbird.febs.server.hr.service.*;
+import cc.mrbird.febs.server.hr.util.CreatePdf;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ExportPdfServiceImpl implements ExportPdfService {
+	@Autowired
+	private IEmpWorkExperienceService iEmpWorkExperienceService;
+	@Autowired
+	private IEmpBadRecordService iEmpBadRecordService;
+	@Autowired
+	private IEmpBaseInfoService iEmpBaseInfoService;
+	@Autowired
+	private IEmpContractInfoService iEmpContractInfoService;
+	@Autowired
+	private IEmpDimissionAttendService iEmpDimissionAttendService;
+	@Autowired
+	private IEmpDimissionLogService iEmpDimissionLogService;
+	@Autowired
+	private IEmpInsuranceService iEmpInsuranceService;
+	@Autowired
+	private IEmpJobChangeService iEmpJobChangeService;
+	@Autowired
+	private IEmpLaborTroubleService iEmpLaborTroubleService;
+	@Autowired
+	private	 IEmpLeaveInfoService iEmpLeaveInfoService;
+	@Autowired
+	private	 IEmpOccupationalService iEmpOccupationalService;
+	@Autowired
+	private	 IEmpOpenArchivesService iEmpOpenArchivesService;
+	@Autowired
+	private	 IEmpPhysicalExamService iEmpPhysicalExamService;
+	@Autowired
+	private	 IEmpRemarkinfoService iEmpRemarkinfoService;
+	@Autowired
+	private	 IEmpResignService iEmpResignService;
+	@Autowired
+	private	 IEmpUnemploymentService iEmpUnemploymentService;
+	@Autowired
+	private	 IEmpAccidentCasesService iEmpAccidentCasesService;
+
+	@Autowired
+			private IRemoteDicItemService iRemoteDicItemService;
+	Logger logger = LoggerFactory.getLogger(ExportPdfServiceImpl.class);
+	@Override
+	public void exportPdf(String empNum, QueryRequest queryRequest, HttpServletRequest request, HttpServletResponse response) {
+		try {
+			//体检类型
+			Map<String,String> physicalExamType = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("PHYSICALEXAMTYPE")) {
+				physicalExamType.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//心电图
+			Map<String,String> ecg = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("ECG")) {
+				ecg.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//合同状态
+			Map<String,String> contractstatus = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("CONTRACTSTATUS")) {
+				contractstatus.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//调岗类型
+			Map<String,String> changeType = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("changeType")) {
+				changeType.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//请假类型
+			Map<String,String> leavetype = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("LEAVETYPE")) {
+				leavetype.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//入离职类型
+			Map<String,String> lztype = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("LZTYPE")) {
+				lztype.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//社保档位
+			Map<String,String> insuranceGaers = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("insuranceGaers")) {
+				insuranceGaers.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//社保是否已经报告
+			Map<String,String> reportStatus = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("reportStatus")) {
+				reportStatus.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//社保状态
+			Map<String,String> applayStatus = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("applayStatus")) {
+				applayStatus.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//是否住院
+			Map<String,String> hospitalizatioFlag = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("hospitalizatioFlag")) {
+				hospitalizatioFlag.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//仲裁类型
+			Map<String,String> zctype = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("ZCTYPE")) {
+				zctype.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//结案状态
+			Map<String,String> settleStatus = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("settleStatus")) {
+				settleStatus.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//性别
+			Map<String,String> sex = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("sex")) {
+				sex.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//员工类别
+			Map<String,String> empType = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("EMPTYPE")) {
+				empType.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//民族
+			Map<String,String> NATION = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("NATION")) {
+				NATION.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//婚姻状态
+			Map<String,String> MARRIAGE = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("MARRIAGE")) {
+				MARRIAGE.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//政治面貌
+			Map<String,String> PLITICAL = new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("PLITICAL")) {
+				PLITICAL.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//最高学历
+			Map<String,String> EDUCATION= new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("EDUCATION")) {
+				EDUCATION.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//籍贯
+			Map<String,String> NATIVEPLACE= new HashMap<>();
+			/*for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("NATIVEPLACE")) {
+				NATIVEPLACE.put(m.getDicItemCode(),m.getDicItemName());
+			}*/
+			//保险类型
+			Map<String,String> INSURANCETYPE= new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("INSURANCETYPE")) {
+				INSURANCETYPE.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//员工手册
+			Map<String,String> handbookStatus= new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("handbookStatus")) {
+				handbookStatus.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			//相关证件
+			Map<String,String> certificateList= new HashMap<>();
+			for (DicItem m:    (List<DicItem>)iRemoteDicItemService.dictType("certificateList")) {
+				certificateList.put(m.getDicItemCode(),m.getDicItemName());
+			}
+			logger.info(">>>>>>>>>>开始导出pdf>>>>>>>>>>");
+			//基本信息
+				String[] baseinfo = { "档案号", "姓名", "性别", "部门(护卫点)", "岗位", "员工类别", "民族", "年龄", "婚姻状态", "身份证有效期"
+					, "身高(cm)"
+					, "政治面貌", "出生日期", "最高学历", "籍贯", "户籍地址", "现住址", "保安员回执", "保安员证号", "档案情况", "银行名称"
+					, "银行账号",
+					"电话号码", "入职日期"
+					, "保险类型", "社保电脑号", "招聘介绍人", "入司工龄", "工作证", "家庭成员及关系", "紧急联系电话", "员工手册", "相关证件"
+					, "身份证号码"};
+			EmpBaseInfo baseInfo=new EmpBaseInfo();
+			baseInfo.setEmpNumb(empNum);
+			
+			List<EmpBaseInfo> empBaseInfoList = iEmpBaseInfoService.findEmpBaseInfos(queryRequest, baseInfo).getRecords();
+			for (EmpBaseInfo empBaseInfo: empBaseInfoList){
+				empBaseInfo.setSexName(sex.get(empBaseInfo.getSex()));
+				empBaseInfo.setEmpTypeName(empType.get(empBaseInfo.getEmpType()));
+				empBaseInfo.setNationName(NATION.get(empBaseInfo.getNation()));
+				empBaseInfo.setMarriageName(MARRIAGE.get(empBaseInfo.getMarriage()));
+				empBaseInfo.setPoliticsName(PLITICAL.get(empBaseInfo.getPolitics()));
+				empBaseInfo.setEducationName(EDUCATION.get(empBaseInfo.getEducation()));
+				empBaseInfo.setNativePlaceName(NATIVEPLACE.get(empBaseInfo.getNativePlace()));
+				empBaseInfo.setInsuranceTypeName(INSURANCETYPE.get(empBaseInfo.getInsuranceType()));
+				empBaseInfo.setHandbookStatusName(handbookStatus.get(empBaseInfo.getHandbookStatus()));
+				empBaseInfo.setCertificateListName(certificateList.get(empBaseInfo.getCertificateList()));
+			}
+			//工作经历
+			String[] workhead = { "开始时间", "结束时间", "工作单位", "主要工作内容"};
+			EmpWorkExperience empWorkExperiences=new EmpWorkExperience();
+			empWorkExperiences.setEmpNumb(empNum);
+			empWorkExperiences.setDelFlag(0);
+			
+			List<EmpWorkExperience> empWorkExperiences1 = iEmpWorkExperienceService.findEmpWorkExperiences(queryRequest, empWorkExperiences).getRecords();
+			//体检信息
+			String[] empPhysicalhead = { "体检医院", "体检日期", "体检类型", "血压", "转氨酶", "心电图", "体检结论", "复查记录", "备注"};
+			EmpPhysicalExam empPhysicalExam=new EmpPhysicalExam();
+			empPhysicalExam.setEmpNumb(empNum);
+			
+			List<EmpPhysicalExam> records = iEmpPhysicalExamService.findEmpPhysicalExams(queryRequest, empPhysicalExam).getRecords();
+			for (EmpPhysicalExam empPhysicalExam1:records){
+				empPhysicalExam1.setPhysicalExamTypeName(physicalExamType.get(empPhysicalExam1.getPhysicalExamType()));
+			}
+			//合同信息
+			String[] empContractInfo = { "合同签订日期", "合同结束日期", "合同期限(年)", "合同状态", "合同办理人"};
+			EmpContractInfo empContractInfo1=new EmpContractInfo();
+			empContractInfo1.setEmpNumb(empNum);
+			
+			List<EmpContractInfo> empContractInfos = iEmpContractInfoService.findEmpContractinfos(queryRequest, empContractInfo1).getRecords();
+			for (EmpContractInfo empCon:empContractInfos){
+				empCon.setContractStatusName(contractstatus.get(empCon.getContractStatus()));
+			}
+			//调岗记录
+			String[] empJobChange = { "现部门", "现岗位", "姓名", "原部门", "原岗位", "调岗日期", "调岗类型"};
+			EmpJobChange empJobChange1=new EmpJobChange();
+			empJobChange1.setEmpNumb(empNum);
+			
+			List<Map<String, Object>> empJobChangeList = iEmpJobChangeService.findEmpJobChanges(queryRequest, empJobChange1).getRecords();
+			for (Map<String, Object> map:empJobChangeList){
+				map.put("changeType",changeType.get(map.get("changeType")).toString());
+			}
+			//请假记录
+			String[] leaveInfo = { "开始时间", "结束时间", "请假天数", "请假类型", "到岗时间", "报备人", "备注"};
+			EmpLeaveInfo empLeaveInfo=new EmpLeaveInfo();
+			empLeaveInfo.setEmpNumb(empNum);
+			
+			List<EmpLeaveInfo> empLeaveInfos = iEmpLeaveInfoService.findEmpLeaveInfos(queryRequest, empLeaveInfo).getRecords();
+			for (EmpLeaveInfo leaveInfo1:empLeaveInfos){
+				leaveInfo1.setLeaveTypeName(leavetype.get(leaveInfo1.getLeaveType()));
+			}
+			//辞职申请
+			String[] resign = { "辞职申请日期", "辞职事由", "汇报人", "备注"};
+			EmpResign empResign=new EmpResign();
+			empResign.setEmpNumb(empNum);
+			
+			List<EmpResign> empResigns = iEmpResignService.findEmpResigns(queryRequest, empResign).getRecords();
+			//离职当月考勤
+			String[] dimissionAttend = { "离职考勤月份", "出勤天数", "加班(天)", "加班(小时)", "有无代扣款项", "请假(天)", "旷工(天)", "备注"};
+			EmpDimissionAttend empDimissionAttend=new EmpDimissionAttend();
+			empDimissionAttend.setEmpNumb(empNum);
+			
+			List<EmpDimissionAttend> dimissionAttends = iEmpDimissionAttendService.findEmpDimissionattends(queryRequest, empDimissionAttend).getRecords();
+            //入离职记录
+			String[] dimissionLog = { "入职日期", "离职日期", "离职类型", "自离天数", "报备人", "备注"};
+			EmpDimissionLog empDimissionLog=new EmpDimissionLog();
+			empDimissionLog.setEmpNumb(empNum);
+			
+			List<Map<String, Object>> records1 = iEmpDimissionLogService.findEmpDimissionLogs(queryRequest, empDimissionLog).getRecords();
+			for (Map<String, Object> objectMap:records1){
+				objectMap.put("dimissionType",lztype.get(objectMap.get("dimissionType")).toString());
+			}
+			//失业金领取
+			String[] unemployment = { "失业金申请日期", "申报事由", "汇报人", "审核人", "备注"};
+			EmpUnemployment empUnemployment=new EmpUnemployment();
+			empUnemployment.setEmpNumb(empNum);
+			
+			List<EmpUnemployment> empUnemployments = iEmpUnemploymentService.findEmpUnemployments(queryRequest, empUnemployment).getRecords();
+           //社保申请
+			String[] insurance = { "社保申请日期", "申请人", "社保档位", "是否已报告", "状态", "审核人", "备注"};
+			EmpInsurance empInsurance=new EmpInsurance();
+			empInsurance.setEmpNumb(empNum);
+			
+			List<EmpInsurance> empInsurances = iEmpInsuranceService.findEmpInsurances(queryRequest, empInsurance).getRecords();
+			for (EmpInsurance leaveInfo1:empInsurances){
+				leaveInfo1.setInsuranceGaers(insuranceGaers.get(leaveInfo1.getInsuranceGaers()));
+				leaveInfo1.setReportStatusName(reportStatus.get(String.valueOf(leaveInfo1.getReportStatus())));
+				leaveInfo1.setApplayStatusName(applayStatus.get(String.valueOf(leaveInfo1.getApplayStatus())));
+			}
+			//意外险案件
+			String[] accidentCases = { "受伤日期", "受伤地点", "受伤部位", "受伤经过描述", "意外险诊断", "就诊医院", "是否住院", "床号", "报案时间", "递交资料时间", "递交人", "医疗总费用", "保险赔付费用"};
+			EmpAccidentCases empAccidentCases=new EmpAccidentCases();
+			empAccidentCases.setEmpNumb(empNum);
+			
+			List<EmpAccidentCases> empAccidentCases1 = iEmpAccidentCasesService.findEmpAccidentcasess(queryRequest, empAccidentCases).getRecords();
+			for (EmpAccidentCases leaveInfo1:empAccidentCases1){
+				leaveInfo1.setHospitalizatioFlagName(hospitalizatioFlag.get(leaveInfo1.getHospitalizatioFlag()));
+			}
+			//工伤案件
+			String[] occupational = { "受伤日期", "受伤地点", "受伤部位", "受伤经过描述", "工伤诊断", "就诊医院", "就诊科室", "是否住院", "床号", "报案时间", "递交资料时间", "递交人", "医疗总费用", "已赔付医药费用"};
+			EmpOccupational empOccupational=new EmpOccupational();
+			empOccupational.setEmpNumb(empNum);
+			
+			List<EmpOccupational> empOccupationals = iEmpOccupationalService.findEmpOccupationals(queryRequest, empOccupational).getRecords();
+			for (EmpOccupational leaveInfo1:empOccupationals){
+				leaveInfo1.setHospitalizatioFlagName(hospitalizatioFlag.get(leaveInfo1.getHospitalizatioFlag()));
+			}
+			//劳资案件
+			String[] laborTrouble = { "仲裁日期", "仲裁类型", "仲裁事由", "报备人", "备注", "仲裁赔付(元)", "状态", "案结日期"};
+			EmpLaborTrouble empLaborTrouble=new EmpLaborTrouble();
+			empLaborTrouble.setEmpNumb(empNum);
+			
+			List<EmpLaborTrouble> empLaborTroubles = iEmpLaborTroubleService.findEmpLabortroubles(queryRequest, empLaborTrouble).getRecords();
+			for (EmpLaborTrouble leaveInfo1:empLaborTroubles){
+				leaveInfo1.setArbitrationTypeName(zctype.get(leaveInfo1.getArbitrationType()));
+				leaveInfo1.setArbitrationStatusName(reportStatus.get(String.valueOf(leaveInfo1.getArbitrationStatus())));
+			}
+			//不良记录
+			String[] badRecord = { "不良记录日期", "不良记录描述", "汇报人", "备注"};
+			EmpBadRecord empBadRecord=new EmpBadRecord();
+			empBadRecord.setEmpNumb(empNum);
+			
+			List<EmpBadRecord> empBadRecords = iEmpBadRecordService.findEmpBadrecords(queryRequest, empBadRecord).getRecords();
+			//备注
+			String[] remarkInfo = { "备注日期", "备注信息"};
+			EmpRemarkInfo empRemarkInfo=new EmpRemarkInfo();
+			empRemarkInfo.setEmpNumb(empNum);
+			
+			List<EmpRemarkInfo> empRemarkInfos = iEmpRemarkinfoService.findEmpRemarkinfos(queryRequest, empRemarkInfo).getRecords();
+			String filePath = new CreatePdf().generatePDFs(baseinfo,empBaseInfoList,workhead, empWorkExperiences1,empPhysicalhead,records,
+					empContractInfo,empContractInfos,
+					empJobChange,empJobChangeList,
+					leaveInfo,empLeaveInfos,
+					resign,empResigns,
+					dimissionAttend,dimissionAttends,
+					dimissionLog,records1,
+					unemployment,empUnemployments,
+					insurance,empInsurances,
+					accidentCases,empAccidentCases1,
+					occupational,empOccupationals,
+					laborTrouble,empLaborTroubles,
+					badRecord,empBadRecords,
+					remarkInfo,empRemarkInfos,response);
+			System.out.println(filePath);
+			downloadPdf(filePath,request,response);
+			logger.info(">>>>>>>>>>结束导出pdf>>>>>>>>>>");
+		} catch (Exception e) {
+			e.printStackTrace();
+			logger.error(">>>>>>>>>>导出pdf 异常,原因为:" + e.getMessage());
+		}
+	}
+	public String downloadPdf( String filepath,HttpServletRequest request, HttpServletResponse response) throws IOException {
+		File file = new File(filepath);
+		if (!file.exists()) {
+			request.setAttribute("error", "附件已删除或不存在");
+// return "/error";
+		}
+		InputStream in = null;
+		OutputStream os = null;
+		try {
+			response.setContentType("application/pdf"); // 设置返回内容格式
+			in = new FileInputStream(file); //用该文件创建一个输入流
+			os = response.getOutputStream(); //创建输出流
+			byte[] b = new byte[1024];
+			while (in.read(b) != -1) {
+				os.write(b);
+			}
+			in.close();
+			os.flush();
+			os.close();
+		} catch (Exception e) {
+			try {
+				if (null != in) {
+					in.close();
+				}
+			} catch (IOException e1) {
+				e1.printStackTrace();
+			}
+			try {
+				if (null != os) {
+					os.close();
+				}
+			} catch (IOException e2) {
+				e2.printStackTrace();
+			}
+		}
+		return null;
+	}
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/CreatePdf.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/CreatePdf.java
new file mode 100644
index 0000000..20bb058
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/CreatePdf.java
@@ -0,0 +1,780 @@
+package cc.mrbird.febs.server.hr.util;
+
+import cc.mrbird.febs.server.hr.entity.*;
+import cc.mrbird.febs.server.hr.po.User;
+import cc.mrbird.febs.server.hr.service.IEmpWorkExperienceService;
+import cn.hutool.core.util.StrUtil;
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.BaseFont;
+import com.itextpdf.text.pdf.PdfPCell;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
+import io.netty.util.internal.StringUtil;
+import org.apache.poi.hssf.usermodel.HeaderFooter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class CreatePdf {
+
+	Document document = new Document();// 建立一个Document对象
+
+	private static Font headfont;// 设置字体大小
+	private static Font keyfont;// 设置字体大小
+	private static Font textfont;// 设置字体大小
+
+	static {
+		// 中文格式
+		BaseFont bfChinese;
+		try {
+			// 设置中文显示
+			bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
+			headfont = new Font(bfChinese, 15, Font.BOLD);// 设置字体大小
+			keyfont = new Font(bfChinese, 10, Font.BOLD);// 设置字体大小
+			textfont = new Font(bfChinese, 10, Font.NORMAL);// 设置字体大小
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * 文成文件
+	 * 
+	 * @param file
+	 *            待生成的文件名
+	 */
+	public CreatePdf(File file) {
+		document.setPageSize(PageSize.A3);// 设置页面大小
+		try {
+			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
+			HeaderHandle footer=new HeaderHandle("12",Font.NORMAL,PageSize.A4);
+			writer.setPageEvent(footer);
+			document.open();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public CreatePdf() {
+
+	}
+
+	public void initFile(File file) {
+		document.setPageSize(PageSize.A4);// 设置页面大小
+		try {
+			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
+			HeaderHandle footer=new HeaderHandle("12",Font.NORMAL,PageSize.A4);
+			writer.setPageEvent(footer);
+			document.open();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	int maxWidth = 842;
+
+	/**
+	 * 为表格添加一个内容
+	 * 
+	 * @param value
+	 *            值
+	 * @param font
+	 *            字体
+	 * @param align
+	 *            对齐方式
+	 * @return 添加的文本框
+	 */
+	public PdfPCell createCell(String value, Font font, int align) {
+		PdfPCell cell = new PdfPCell();
+		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+		cell.setHorizontalAlignment(align);
+		cell.setPhrase(new Phrase(value, font));
+		return cell;
+	}
+
+	/**
+	 * 为表格添加一个内容
+	 * 
+	 * @param value
+	 *            值
+	 * @param font
+	 *            字体
+	 * @return 添加的文本框
+	 */
+	public PdfPCell createCell(String value, Font font) {
+		PdfPCell cell = new PdfPCell();
+		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+		cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+		cell.setPhrase(new Phrase(value, font));
+		return cell;
+	}
+
+	/**
+	 * 为表格添加一个内容
+	 * 
+	 * @param value
+	 *            值
+	 * @param font
+	 *            字体
+	 * @param align
+	 *            对齐方式
+	 * @param colspan
+	 *            占多少列
+	 * @return 添加的文本框
+	 */
+	public PdfPCell createCell(String value, Font font, int align, int colspan) {
+		PdfPCell cell = new PdfPCell();
+		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+		cell.setHorizontalAlignment(align);
+		cell.setColspan(colspan);
+		cell.setPhrase(new Phrase(value, font));
+		return cell;
+	}
+
+	/**
+	 * 为表格添加一个内容
+	 * 
+	 * @param value
+	 *            值
+	 * @param font
+	 *            字体
+	 * @param align
+	 *            对齐方式
+	 * @param colspan
+	 *            占多少列
+	 * @param boderFlag
+	 *            是否有有边框
+	 * @return 添加的文本框
+	 */
+	public PdfPCell createCell(String value, Font font, int align, int colspan, boolean boderFlag) {
+		PdfPCell cell = new PdfPCell();
+		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+		cell.setHorizontalAlignment(align);
+		cell.setColspan(colspan);
+		cell.setPhrase(new Phrase(value, font));
+		cell.setPadding(3.0f);
+		if (!boderFlag) {
+			cell.setBorder(0);
+			cell.setPaddingTop(15.0f);
+			cell.setPaddingBottom(8.0f);
+		}
+		return cell;
+	}
+
+	/**
+	 * 创建一个表格对象
+	 * 
+	 * @param colNumber
+	 *            表格的列数
+	 * @return 生成的表格对象
+	 */
+	public PdfPTable createTable(int colNumber) {
+		PdfPTable table = new PdfPTable(colNumber);
+		try {
+			table.setTotalWidth(maxWidth);
+			table.setLockedWidth(true);
+			table.setHorizontalAlignment(Element.ALIGN_CENTER);
+			table.getDefaultCell().setBorder(1);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return table;
+	}
+
+	public PdfPTable createTable(float[] widths) {
+		PdfPTable table = new PdfPTable(widths);
+		try {
+			table.setTotalWidth(maxWidth);
+			table.setLockedWidth(true);
+			table.setHorizontalAlignment(Element.ALIGN_CENTER);
+			table.getDefaultCell().setBorder(1);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return table;
+	}
+
+	public PdfPTable createBlankTable() {
+		PdfPTable table = new PdfPTable(1);
+		table.getDefaultCell().setBorder(0);
+		table.addCell(createCell("", keyfont));
+		table.setSpacingAfter(20.0f);
+		table.setSpacingBefore(20.0f);
+		return table;
+	}
+	public static Font getPdfChineseFont() throws Exception {
+		BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H",
+				BaseFont.NOT_EMBEDDED);
+		Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);
+		return fontChinese;
+	}
+	public static void setTableStyle(PdfPTable table, PdfPCell cell) {
+// 设置表格样式
+		table.setLockedWidth(true);
+		table.setTotalWidth(500);
+		table.setHorizontalAlignment(Element.ALIGN_LEFT);
+// 设置单元格样式
+		cell.setMinimumHeight(35);
+		cell.setHorizontalAlignment(Element.ALIGN_CENTER);
+		cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
+		cell.setBackgroundColor(BaseColor.WHITE);
+		cell.setBorder(0);
+		cell.setBorderWidthTop(0.1f);
+		cell.setBorderWidthBottom(0.1f);
+		cell.setBorderWidthLeft(0.1f);
+		cell.setBorderWidthRight(0.1f);
+		cell.setBorderColorBottom(BaseColor.BLACK);
+		cell.setBorderColorLeft(BaseColor.BLACK);
+		cell.setBorderColorRight(BaseColor.BLACK);
+		cell.setBorderColorTop(BaseColor.BLACK);
+		cell.setPadding(3);
+	}
+	/**
+	 * @param
+	 *
+	 * @param
+	 *
+	 * @param
+	 * @param
+	 * @param baseinfo
+	 * @param empBaseInfoList
+	 * @param
+	 * @param workhead
+	 * @param empWorkExperiences1
+	 * @param
+	 * @param empPhysicalhead
+	 * @param records
+	 * @param
+	 * @param empContractInfo
+	 * @param empContractInfos
+	 * @param
+	 * @param empJobChange
+	 * @param empJobChangeList
+	 * @param
+	 * @param leaveInfo
+	 * @param empLeaveInfos
+	 * @param
+	 * @param resign
+	 * @param empResigns
+	 * @param
+	 * @param dimissionAttend
+	 * @param dimissionAttends
+	 * @param
+	 * @param dimissionLog
+	 * @param records1
+	 * @param
+	 * @param unemployment
+	 * @param empUnemployments
+	 * @param
+	 * @param insurance
+	 * @param empInsurances
+	 * @param
+	 * @param accidentCases
+	 * @param empAccidentCases1
+	 * @param
+	 * @param occupational
+	 * @param empOccupationals
+	 * @param
+	 * @param laborTrouble
+	 * @param empLaborTroubles
+	 * @param
+	 * @param badRecord
+	 * @param empBadRecords
+	 * @param
+	 * @param remarkInfo
+	 * @param empRemarkInfos
+	 * @param
+	 */
+	public <T> void generatePDF(String[] baseinfo, List<EmpBaseInfo> empBaseInfoList, int baseinfolength,
+								String[] workhead, List<EmpWorkExperience> empWorkExperiences1, int workheadlength,
+								String[] empPhysicalhead, List<EmpPhysicalExam> records, int empPhysicalheadlength,
+								String[] empContractInfo, List<EmpContractInfo> empContractInfos, int empContractInfolength,
+								String[] empJobChange, List<Map<String, Object>> empJobChangeList, int empJobChangelength,
+								String[] leaveInfo, List<EmpLeaveInfo> empLeaveInfos, int leaveInfolength,
+								String[] resign, List<EmpResign> empResigns, int resignlength,
+								String[] dimissionAttend, List<EmpDimissionAttend> dimissionAttends, int dimissionAttendlength,
+								String[] dimissionLog, List<Map<String, Object>> records1, int dimissionLoglength,
+								String[] unemployment, List<EmpUnemployment> empUnemployments, int unemploymentlength,
+								String[] insurance, List<EmpInsurance> empInsurances, int insurancelength,
+								String[] accidentCases, List<EmpAccidentCases> empAccidentCases1, int accidentCaseslength,
+								String[] occupational, List<EmpOccupational> empOccupationals, int occupationallength,
+								String[] laborTrouble, List<EmpLaborTrouble> empLaborTroubles, int laborTroublelength,
+								String[] badRecord, List<EmpBadRecord> empBadRecords, int badRecordlength,
+								String[] remarkInfo, List<EmpRemarkInfo> empRemarkInfos, int remarkInfolength) {
+		// 创建一个只有colNum列的表格
+		DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
+		document.addHeader("标题","标题");
+		EmpBaseInfo empBaseInfo = empBaseInfoList.get(0);
+		PdfPTable workheadtable = createTable(workheadlength);
+		PdfPTable empPhysicalheadtable = createTable(empPhysicalheadlength);
+		PdfPTable empContractInfotable = createTable(empContractInfolength);
+		PdfPTable empJobChangetable = createTable(empJobChangelength);
+		PdfPTable leaveInfotable = createTable(leaveInfolength);
+		PdfPTable resigntable = createTable(resignlength);
+		PdfPTable dimissionAttendtable = createTable(dimissionAttendlength);
+		PdfPTable dimissionLogtable = createTable(dimissionLoglength);
+		PdfPTable unemploymenttable = createTable(unemploymentlength);
+		PdfPTable insurancetable = createTable(insurancelength);
+		PdfPTable accidentCasestable = createTable(accidentCaseslength);
+		PdfPTable occupationaltable = createTable(occupationallength);
+		PdfPTable laborTroubletable = createTable(laborTroublelength);
+		PdfPTable badRecordtable = createTable(badRecordlength);
+		PdfPTable remarkInfotable = createTable(remarkInfolength);
+		Object[][] basicDatas = {
+				{"档案号",empBaseInfo.getEmpNumb(),
+						"姓名",empBaseInfo.getEmpName(),
+						"性别",empBaseInfo.getSexName()},
+				{"部门(护卫点)",empBaseInfo.getDeptName(),
+						"岗位",empBaseInfo.getJobName(),
+						"员工类别",empBaseInfo.getEmpTypeName()==null?"":empBaseInfo.getEmpTypeName()},
+				{"民族",empBaseInfo.getNationName()==null?"":empBaseInfo.getNationName(),
+						"年龄",empBaseInfo.getAge()==null?"":empBaseInfo.getAge(),
+						"婚姻状态",empBaseInfo.getMarriageName()==null?"":empBaseInfo.getMarriageName()},
+				{"身份证有效期",empBaseInfo.getCertificateValidity()==null?"":format1.format(empBaseInfo.getCertificateValidity()),
+						"身高(cm)",empBaseInfo.getStature()==null?"":empBaseInfo.getStature(),
+						"政治面貌",empBaseInfo.getNativePlaceName()==null?"":empBaseInfo.getNativePlaceName()},
+				{"出生日期",empBaseInfo.getBirthdate()==null?"":format1.format(empBaseInfo.getBirthdate()),
+						"最高学历",empBaseInfo.getEducationName()==null?"":empBaseInfo.getEducationName(),
+						"籍贯",empBaseInfo.getNativePlaceName()==null?"":empBaseInfo.getNativePlaceName()},
+				{"户籍地址",empBaseInfo.getCensusAddress()==null?"":empBaseInfo.getCensusAddress(),
+						"现住址",empBaseInfo.getCurrentAddress()==null?"":empBaseInfo.getCurrentAddress(),
+						"保安员回执",empBaseInfo.getReturnReceipt()==null?"":empBaseInfo.getReturnReceipt()},
+				{"保安员证号",empBaseInfo.getGuardNumb()==null?"":empBaseInfo.getGuardNumb(),
+						"档案情况",empBaseInfo.getArchivesStatus()==null?"":empBaseInfo.getArchivesStatus(),
+						"银行名称",empBaseInfo.getBankName()==null?"":empBaseInfo.getBankName()},
+				{"银行账号",empBaseInfo.getBankNumb()==null?"":empBaseInfo.getBankNumb(),
+						"电话号码",empBaseInfo.getTelePhone()==null?"":empBaseInfo.getTelePhone(),
+						"入职日期",empBaseInfo.getEntryDate()==null?"":format1.format(empBaseInfo.getEntryDate())},
+				{"保险类型",empBaseInfo.getInsuranceType()==null?"":empBaseInfo.getInsuranceType(),
+						"社保电脑号",empBaseInfo.getSocialNumb()==null?"":empBaseInfo.getSocialNumb(),
+						"招聘介绍人",empBaseInfo.getIntroducer()==null?"":empBaseInfo.getIntroducer()},
+				{"入司工龄",empBaseInfo.getSeniority()==null?"":empBaseInfo.getSeniority(),
+						"工作证",empBaseInfo.getEmpCardStatusName()==null?"":empBaseInfo.getEmpCardStatusName(),
+						"家庭成员及关系",empBaseInfo.getFamily()==null?"":empBaseInfo.getFamily()},
+				{"紧急联系电话",empBaseInfo.getUrgencyPhone()==null?"":empBaseInfo.getUrgencyPhone(),
+						"员工手册",empBaseInfo.getHandbookStatusName()==null?"":empBaseInfo.getHandbookStatusName(),
+						"相关证件",empBaseInfo.getCertificateListName()==null?"":empBaseInfo.getCertificateListName()},
+				{"身份证号码",empBaseInfo.getCertificateNumb()==null?"":empBaseInfo.getCertificateNumb()}};
+//			每个cell的宽度
+		float[] widthss = {400, 400, 400, 400,400, 400};
+//          创建一个表格,每一行有四个cell
+		PdfPTable basicTable = new PdfPTable(widthss);
+		basicTable.addCell(createCell("基本信息:", keyfont, Element.ALIGN_LEFT,basicDatas.length, false));
+
+		// 添加备注,靠左,不显示边框
+//			外层循环表格的行
+		for (int i = 0; i < basicDatas.length; i++) {
+//			内层循环每一行具体数据
+			for (int j = 0; j < basicDatas[i].length; j++) {
+//          新建一个cell
+				PdfPCell cell = new PdfPCell();
+//			这个方法是统一设置表格和cell的样式,下面会写
+				setTableStyle(basicTable, cell);
+//			cell中需要填充数据的格式
+				Paragraph paragraph =
+						null;
+				try {
+					paragraph = new Paragraph(StrUtil.toString(basicDatas[i][j]), getPdfChineseFont());
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+//  		设置cell的值
+				cell.setPhrase(paragraph);
+//			将cell添加到表格中
+				basicTable.addCell(cell);
+			}
+		}
+
+		// 添加备注,靠左,不显示边框
+		workheadtable.addCell(createCell("工作经历:", keyfont, Element.ALIGN_LEFT, workheadlength, false));
+		// 添加备注,靠左,不显示边框
+		empPhysicalheadtable.addCell(createCell("体检信息:", keyfont, Element.ALIGN_LEFT, empPhysicalheadlength, false));
+		// 添加备注,靠左,不显示边框
+		empContractInfotable.addCell(createCell("合同信息:", keyfont, Element.ALIGN_LEFT, empContractInfolength, false));
+		// 添加备注,靠左,不显示边框
+		empJobChangetable.addCell(createCell("调岗记录:", keyfont, Element.ALIGN_LEFT, empJobChangelength, false));
+		// 添加备注,靠左,不显示边框
+		leaveInfotable.addCell(createCell("请假记录:", keyfont, Element.ALIGN_LEFT, leaveInfolength, false));
+		// 添加备注,靠左,不显示边框
+		resigntable.addCell(createCell("辞职申请:", keyfont, Element.ALIGN_LEFT, resignlength, false));
+		// 添加备注,靠左,不显示边框
+		dimissionAttendtable.addCell(createCell("离职当月考勤:", keyfont, Element.ALIGN_LEFT, dimissionAttendlength, false));
+		// 添加备注,靠左,不显示边框
+		dimissionLogtable.addCell(createCell("入离职记录:", keyfont, Element.ALIGN_LEFT, dimissionLoglength, false));
+		// 添加备注,靠左,不显示边框
+		unemploymenttable.addCell(createCell("失业金领取:", keyfont, Element.ALIGN_LEFT, unemploymentlength, false));
+		// 添加备注,靠左,不显示边框
+		insurancetable.addCell(createCell("社保申请:", keyfont, Element.ALIGN_LEFT, insurancelength, false));
+		// 添加备注,靠左,不显示边框
+		accidentCasestable.addCell(createCell("意外险案件:", keyfont, Element.ALIGN_LEFT, accidentCaseslength, false));
+		// 添加备注,靠左,不显示边框
+		occupationaltable.addCell(createCell("工伤案件:", keyfont, Element.ALIGN_LEFT, occupationallength, false));
+		// 添加备注,靠左,不显示边框
+		laborTroubletable.addCell(createCell("劳资案件:", keyfont, Element.ALIGN_LEFT, laborTroublelength, false));// 添加备注,靠左,不显示边框
+		badRecordtable.addCell(createCell("不良记录:", keyfont, Element.ALIGN_LEFT, badRecordlength, false));
+		// 添加备注,靠左,不显示边框
+		remarkInfotable.addCell(createCell("备注:", keyfont, Element.ALIGN_LEFT, remarkInfolength, false));
+
+// 添加备注,靠左,不显示边框
+
+		// 设置表头
+
+		for (int i = 0; i < workheadlength; i++) {
+			workheadtable.addCell(createCell(workhead[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < empPhysicalheadlength; i++) {
+			empPhysicalheadtable.addCell(createCell(empPhysicalhead[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < empContractInfolength; i++) {
+			empContractInfotable.addCell(createCell(empContractInfo[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < empJobChangelength; i++) {
+			empJobChangetable.addCell(createCell(empJobChange[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < leaveInfolength; i++) {
+			leaveInfotable.addCell(createCell(leaveInfo[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < resignlength; i++) {
+			resigntable.addCell(createCell(resign[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < dimissionAttendlength; i++) {
+			dimissionAttendtable.addCell(createCell(dimissionAttend[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < dimissionLoglength; i++) {
+			dimissionLogtable.addCell(createCell(dimissionLog[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < unemploymentlength; i++) {
+			unemploymenttable.addCell(createCell(unemployment[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < insurancelength; i++) {
+			insurancetable.addCell(createCell(insurance[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < accidentCaseslength; i++) {
+			accidentCasestable.addCell(createCell(accidentCases[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < occupationallength; i++) {
+			occupationaltable.addCell(createCell(occupational[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < laborTroublelength; i++) {
+			laborTroubletable.addCell(createCell(laborTrouble[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < badRecordlength; i++) {
+			badRecordtable.addCell(createCell(badRecord[i], keyfont, Element.ALIGN_CENTER));
+		}
+		for (int i = 0; i < remarkInfolength; i++) {
+			remarkInfotable.addCell(createCell(remarkInfo[i], keyfont, Element.ALIGN_CENTER));
+		}
+
+
+		if (null != empWorkExperiences1 && empWorkExperiences1.size() > 0) {
+			int size = empWorkExperiences1.size();
+			for (int i = 0; i < size; i++) {
+				EmpWorkExperience user = empWorkExperiences1.get(i);
+				workheadtable.addCell(createCell(user.getBeginDate()==null?"":format1.format(user.getBeginDate()), textfont));
+				workheadtable.addCell(createCell(user.getEndDate()==null?"":format1.format(user.getEndDate()), textfont));
+				workheadtable.addCell(createCell(user.getWorkUnit()==null?"":user.getWorkUnit(), textfont));
+				workheadtable.addCell(createCell(user.getJobContent()==null?"":user.getJobContent() , textfont));
+			}
+		}
+		if (null != records && records.size() > 0) {
+			int size = records.size();
+			for (int i = 0; i < size; i++) {
+				EmpPhysicalExam user = records.get(i);
+				empPhysicalheadtable.addCell(createCell(user.getHospital()==null?"":user.getHospital(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getPhysicalExamDate()==null?"":format1.format(user.getPhysicalExamDate()), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getPhysicalExamTypeName()==null?"":user.getPhysicalExamTypeName(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getBloodPressure()==null?"":user.getBloodPressure(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getTransaminase()==null?"":user.getTransaminase(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getEcgName()==null?"":user.getEcgName(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getConclusion()==null?"":user.getConclusion(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getReviewRecord()==null?"":user.getReviewRecord(), textfont));
+				empPhysicalheadtable.addCell(createCell(user.getRemark()==null?"":user.getRemark(), textfont));
+			}
+		}
+		if (null != empContractInfos && empContractInfos.size() > 0) {
+			int size = empContractInfos.size();
+			for (int i = 0; i < size; i++) {
+				EmpContractInfo user = empContractInfos.get(i);
+				empContractInfotable.addCell(createCell(user.getSigningDate()==null?"":format1.format(user.getSigningDate()), textfont));
+				empContractInfotable.addCell(createCell(user.getEndDate()==null?"":format1.format(user.getEndDate()), textfont));
+				empContractInfotable.addCell(createCell(user.getContractPeriod()==null?"":String.valueOf(user.getContractPeriod()), textfont));
+				empContractInfotable.addCell(createCell(user.getContractStatusName()==null?"":user.getContractStatusName(), textfont));
+				empContractInfotable.addCell(createCell(user.getTransactor()==null?"":user.getTransactor() , textfont));
+			}
+		}
+		if (null != empJobChangeList && empJobChangeList.size() > 0) {
+			int size = empJobChangeList.size();
+			for (int i = 0; i < size; i++) {
+				Map user = empJobChangeList.get(i);
+				empJobChangetable.addCell(createCell(user.get("newDeptName")==null?"":user.get("newDeptName").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("newJobName")==null?"":user.get("newJobName").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("empName")==null?"":user.get("empName").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("oldDeptName")==null?"":user.get("oldDeptName").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("oldJobName")==null?"":user.get("oldJobName").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("changeDate")==null?"":user.get("changeDate").toString(), textfont));
+				empJobChangetable.addCell(createCell(user.get("changeType")==null?"":user.get("changeType").toString(), textfont));
+			}
+		}
+		if (null != records1 && records1.size() > 0) {
+			int size = records1.size();
+			for (int i = 0; i < size; i++) {
+				Map user = records1.get(i);
+				dimissionLogtable.addCell(createCell(user.get("entryDate")==null?"":user.get("entryDate").toString(), textfont));
+				dimissionLogtable.addCell(createCell(user.get("dimissionDate")==null?"":user.get("dimissionDate").toString(), textfont));
+				dimissionLogtable.addCell(createCell(user.get("dimissionType")==null?"":user.get("dimissionType").toString(), textfont));
+				dimissionLogtable.addCell(createCell(user.get("selfLeaveDay")==null?"":user.get("selfLeaveDay").toString(), textfont));
+				dimissionLogtable.addCell(createCell(user.get("reporter")==null?"":user.get("reporter").toString(), textfont));
+				dimissionLogtable.addCell(createCell(user.get("remark")==null?"":user.get("remark").toString(), textfont));
+			}
+		}
+		if (null != empLeaveInfos && empLeaveInfos.size() > 0) {
+			int size = empLeaveInfos.size();
+			for (int i = 0; i < size; i++) {
+				EmpLeaveInfo user = empLeaveInfos.get(i);
+				leaveInfotable.addCell(createCell(user.getBeginTime()==null?"":format1.format(user.getBeginTime()), textfont));
+				leaveInfotable.addCell(createCell(user.getEndTime()==null?"":format1.format(user.getEndTime()), textfont));
+				leaveInfotable.addCell(createCell(user.getLeaveDay()==null?"":String.valueOf(user.getLeaveDay()), textfont));
+				leaveInfotable.addCell(createCell(user.getLeaveTypeName()==null?"":user.getLeaveTypeName(), textfont));
+				leaveInfotable.addCell(createCell(user.getReturnDate()==null?"":format1.format(user.getReturnDate()), textfont));
+				leaveInfotable.addCell(createCell(user.getReporter()==null?"":user.getReporter() , textfont));
+				leaveInfotable.addCell(createCell(user.getRemark()==null?"":user.getRemark() , textfont));
+			}
+		}
+		if (null != empResigns && empResigns.size() > 0) {
+			int size = empResigns.size();
+			for (int i = 0; i < size; i++) {
+				EmpResign user = empResigns.get(i);
+				resigntable.addCell(createCell(user.getApplayDate()==null?"":format1.format(user.getApplayDate()), textfont));
+				resigntable.addCell(createCell(user.getReason()==null?"":user.getReason(), textfont));
+				resigntable.addCell(createCell(user.getReporter()==null?"":user.getReporter() , textfont));
+				resigntable.addCell(createCell(user.getRemark()==null?"":user.getRemark() , textfont));
+			}
+		}
+		if (null != dimissionAttends && dimissionAttends.size() > 0) {
+			int size = dimissionAttends.size();
+			for (int i = 0; i < size; i++) {
+				EmpDimissionAttend user = dimissionAttends.get(i);
+				dimissionAttendtable.addCell(createCell(user.getAttendMonth()==null?"":user.getAttendMonth(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getAttendDays()==null?"":user.getAttendDays().toString() , textfont));
+				dimissionAttendtable.addCell(createCell(user.getOvertimeDay()==null?"":user.getOvertimeDay().toString(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getOvertimeHour()==null?"":user.getOvertimeHour().toString(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getDeduct()==null?"":user.getDeduct(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getLeaveDay()==null?"":user.getLeaveDay().toString(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getAbsenteeism()==null?"":user.getAbsenteeism().toString(), textfont));
+				dimissionAttendtable.addCell(createCell(user.getRemark()==null?"":user.getRemark() , textfont));
+			}
+		}
+		if (null != empUnemployments && empUnemployments.size() > 0) {
+			int size = empUnemployments.size();
+			for (int i = 0; i < size; i++) {
+				EmpUnemployment user = empUnemployments.get(i);
+				unemploymenttable.addCell(createCell(user.getApplayDate()==null?"":format1.format(user.getApplayDate()), textfont));
+				unemploymenttable.addCell(createCell(user.getApplayReason()==null?"":user.getApplayReason().toString() , textfont));
+				unemploymenttable.addCell(createCell(user.getReporter()==null?"":user.getReporter().toString(), textfont));
+				unemploymenttable.addCell(createCell(user.getAuditor()==null?"":user.getAuditor().toString(), textfont));
+				unemploymenttable.addCell(createCell(user.getRemark()==null?"":user.getRemark() , textfont));
+			}
+		}
+		if (null != empInsurances && empInsurances.size() > 0) {
+			int size = empInsurances.size();
+			for (int i = 0; i < size; i++) {
+				EmpInsurance user = empInsurances.get(i);
+				insurancetable.addCell(createCell(user.getApplayDate()==null?"":format1.format(user.getApplayDate()), textfont));
+				insurancetable.addCell(createCell(user.getProposer()==null?"":user.getProposer().toString() , textfont));
+				insurancetable.addCell(createCell(user.getInsuranceGaers()==null?"":user.getInsuranceGaers().toString(), textfont));
+				insurancetable.addCell(createCell(user.getReportStatusName()==null?"":user.getReportStatusName().toString(), textfont));
+				insurancetable.addCell(createCell(user.getApplayStatusName()==null?"":user.getApplayStatusName().toString(), textfont));
+				insurancetable.addCell(createCell(user.getAuditor()==null?"":user.getAuditor().toString(), textfont));
+				insurancetable.addCell(createCell(user.getRemark()==null?"":user.getRemark() , textfont));
+			}
+		}
+		if (null != empAccidentCases1 && empAccidentCases1.size() > 0) {
+			int size = empAccidentCases1.size();
+			for (int i = 0; i < size; i++) {
+				EmpAccidentCases user = empAccidentCases1.get(i);
+				accidentCasestable.addCell(createCell(user.getInjuredTime()==null?"":format1.format(user.getInjuredTime()), textfont));
+				accidentCasestable.addCell(createCell(user.getInjuredAddress()==null?"":user.getInjuredAddress().toString() , textfont));
+				accidentCasestable.addCell(createCell(user.getInjuredPart()==null?"":user.getInjuredPart().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getInjuredDescribe()==null?"":user.getInjuredDescribe().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getInjuredDiacrisis()==null?"":user.getInjuredDiacrisis().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getHospitalName()==null?"":user.getHospitalName().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getHospitalizatioFlagName()==null?"":user.getHospitalizatioFlagName().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getBedNumb()==null?"":user.getBedNumb().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getReprotTime()==null?"":format1.format(user.getReprotTime()), textfont));
+				accidentCasestable.addCell(createCell(user.getSubmitTime()==null?"":format1.format(user.getSubmitTime()), textfont));
+				accidentCasestable.addCell(createCell(user.getSbumitBy()==null?"":user.getSbumitBy().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getExpensesFee()==null?"":user.getExpensesFee().toString(), textfont));
+				accidentCasestable.addCell(createCell(user.getInnsureFee()==null?"":user.getInnsureFee().toString() , textfont));
+			}
+		}
+		if (null != empOccupationals && empOccupationals.size() > 0) {
+			int size = empOccupationals.size();
+			for (int i = 0; i < size; i++) {
+				EmpOccupational user = empOccupationals.get(i);
+				occupationaltable.addCell(createCell(user.getInjuredTime()==null?"":format1.format(user.getInjuredTime()), textfont));
+				occupationaltable.addCell(createCell(user.getInjuredAddress()==null?"":user.getInjuredAddress().toString() , textfont));
+				occupationaltable.addCell(createCell(user.getInjuredPart()==null?"":user.getInjuredPart().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getInjuredDescribe()==null?"":user.getInjuredDescribe().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getInjuredDiacrisis()==null?"":user.getInjuredDiacrisis().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getHospitalName()==null?"":user.getHospitalName().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getHospitalizatioFlagName()==null?"":user.getHospitalizatioFlagName().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getBedNumb()==null?"":user.getBedNumb().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getReportTime()==null?"":format1.format(user.getReportTime()), textfont));
+				occupationaltable.addCell(createCell(user.getSubmitTime()==null?"":format1.format(user.getSubmitTime()), textfont));
+				occupationaltable.addCell(createCell(user.getSbumitBy()==null?"":user.getSbumitBy().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getExpensesFee()==null?"":user.getExpensesFee().toString(), textfont));
+				occupationaltable.addCell(createCell(user.getCompensated()==null?"":user.getCompensated().toString() , textfont));
+			}
+		}
+		if (null != empLaborTroubles && empLaborTroubles.size() > 0) {
+			int size = empLaborTroubles.size();
+			for (int i = 0; i < size; i++) {
+				EmpLaborTrouble user = empLaborTroubles.get(i);
+				laborTroubletable.addCell(createCell(user.getArbitrationDate()==null?"":format1.format(user.getArbitrationDate()), textfont));
+				laborTroubletable.addCell(createCell(user.getArbitrationTypeName()==null?"":user.getArbitrationTypeName().toString() , textfont));
+				laborTroubletable.addCell(createCell(user.getArbitrationReason()==null?"":user.getArbitrationReason().toString(), textfont));
+				laborTroubletable.addCell(createCell(user.getReporter()==null?"":user.getReporter().toString(), textfont));
+				laborTroubletable.addCell(createCell(user.getRemark()==null?"":user.getRemark().toString(), textfont));
+				laborTroubletable.addCell(createCell(user.getArbitrationPay()==null?"":user.getArbitrationPay().toString(), textfont));
+				laborTroubletable.addCell(createCell(user.getArbitrationStatusName()==null?"":user.getArbitrationStatusName().toString(), textfont));
+				laborTroubletable.addCell(createCell(user.getSettleDate()==null?"":format1.format(user.getSettleDate()), textfont));
+			}
+		}
+		if (null != empBadRecords && empBadRecords.size() > 0) {
+			int size = empBadRecords.size();
+			for (int i = 0; i < size; i++) {
+				EmpBadRecord user = empBadRecords.get(i);
+				badRecordtable.addCell(createCell(user.getBadDate()==null?"":format1.format(user.getBadDate()), textfont));
+				badRecordtable.addCell(createCell(user.getBadContent()==null?"":user.getBadContent().toString() , textfont));
+				badRecordtable.addCell(createCell(user.getReporter()==null?"":user.getReporter().toString(), textfont));
+				badRecordtable.addCell(createCell(user.getRemark()==null?"":user.getRemark().toString(), textfont));
+			}
+		}
+		if (null != empRemarkInfos && empRemarkInfos.size() > 0) {
+			int size = empRemarkInfos.size();
+			for (int i = 0; i < size; i++) {
+				EmpRemarkInfo user = empRemarkInfos.get(i);
+				remarkInfotable.addCell(createCell(user.getRemarkDate()==null?"":format1.format(user.getRemarkDate()), textfont));
+				remarkInfotable.addCell(createCell(user.getRemarkContent()==null?"":user.getRemarkContent().toString() , textfont));
+			}
+		}
+		try {
+			// 将表格添加到文档中
+			document.add(basicTable);
+			document.add(workheadtable);
+			document.add(empPhysicalheadtable);
+			document.add(empContractInfotable);
+			document.add(empJobChangetable);
+			document.add(leaveInfotable);
+			document.add(resigntable);
+			document.add(dimissionAttendtable);
+			document.add(dimissionLogtable);
+			document.add(unemploymenttable);
+			document.add(insurancetable);
+			document.add(accidentCasestable);
+			document.add(occupationaltable);
+			document.add(laborTroubletable);
+			document.add(badRecordtable);
+			document.add(remarkInfotable);
+		} catch (DocumentException e) {
+			e.printStackTrace();
+		}
+
+		// 关闭流
+		document.close();
+	}
+
+	/**
+	 * 提供外界调用的接口,生成以head为表头,list为数据的pdf
+	 * 
+	 * @param
+	 *            //数据表头
+	 * @param
+	 *            //数据
+	 * @param
+	 * @param baseinfo
+	 * @param empBaseInfoList
+	 * @param workhead
+	 * @param empWorkExperiences1
+	 * @param empPhysicalhead
+	 * @param records
+	 * @param empContractInfo
+	 * @param empContractInfos
+	 * @param empJobChange
+	 * @param empJobChangeList
+	 * @param leaveInfo
+	 * @param empLeaveInfos
+	 * @param resign
+	 * @param empResigns
+	 * @param dimissionAttend
+	 * @param dimissionAttends
+	 * @param dimissionLog
+	 * @param records1
+	 * @param unemployment
+	 * @param empUnemployments
+	 * @param insurance
+	 * @param empInsurances
+	 * @param accidentCases
+	 * @param empAccidentCases1
+	 * @param occupational
+	 * @param empOccupationals
+	 * @param laborTrouble
+	 * @param empLaborTroubles
+	 * @param badRecord
+	 * @param empBadRecords
+	 * @param remarkInfo
+	 * @param empRemarkInfos
+	 * @param response
+	 * @return //excel所在的路径
+	 */
+	public <T> String generatePDFs(String[] baseinfo, List<EmpBaseInfo> empBaseInfoList, String[] workhead, List<EmpWorkExperience> empWorkExperiences1, String[] empPhysicalhead, List<EmpPhysicalExam> records, String[] empContractInfo, List<EmpContractInfo> empContractInfos, String[] empJobChange, List<Map<String, Object>> empJobChangeList, String[] leaveInfo, List<EmpLeaveInfo> empLeaveInfos, String[] resign, List<EmpResign> empResigns, String[] dimissionAttend, List<EmpDimissionAttend> dimissionAttends, String[] dimissionLog, List<Map<String, Object>> records1, String[] unemployment, List<EmpUnemployment> empUnemployments, String[] insurance, List<EmpInsurance> empInsurances, String[] accidentCases, List<EmpAccidentCases> empAccidentCases1, String[] occupational, List<EmpOccupational> empOccupationals, String[] laborTrouble, List<EmpLaborTrouble> empLaborTroubles, String[] badRecord, List<EmpBadRecord> empBadRecords, String[] remarkInfo, List<EmpRemarkInfo> empRemarkInfos, HttpServletResponse response) {
+		final String FilePath = "pdfPath";
+		String saveFilePathAndName = "";
+
+		// 获得存储的根目录
+		String savePath = new GetFilePlace().getFileDirFromProperties(FilePath);
+
+		// 获得当天存储的路径,不存在则生成当天的文件夹
+		String realSavePath = new GenerateFold().getFold(savePath);
+
+		saveFilePathAndName = new GenerateFileName().generateFileName(realSavePath, "pdf",empBaseInfoList.get(0).getEmpName());
+
+		File file = new File(saveFilePathAndName);
+		try {
+			file.createNewFile();
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+		initFile(file);
+		try {
+			file.createNewFile(); // 生成一个pdf文件
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		new CreatePdf(file).generatePDF(baseinfo,empBaseInfoList,baseinfo.length,
+				workhead, empWorkExperiences1,workhead.length,
+				empPhysicalhead,records,empPhysicalhead.length,
+				empContractInfo,empContractInfos,empContractInfo.length,
+				empJobChange,empJobChangeList,empJobChange.length,
+				leaveInfo,empLeaveInfos,leaveInfo.length,
+				resign,empResigns,resign.length,
+				dimissionAttend,dimissionAttends,dimissionAttend.length,
+				dimissionLog,records1,dimissionLog.length,
+				unemployment,empUnemployments,unemployment.length,
+				insurance,empInsurances,insurance.length,
+				accidentCases,empAccidentCases1,accidentCases.length,
+				occupational,empOccupationals,occupational.length,
+				laborTrouble,empLaborTroubles,laborTrouble.length,
+				badRecord,empBadRecords,badRecord.length,
+				remarkInfo,empRemarkInfos,remarkInfo.length);
+		return saveFilePathAndName;
+	}
+
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFileName.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFileName.java
new file mode 100644
index 0000000..49f9531
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFileName.java
@@ -0,0 +1,30 @@
+package cc.mrbird.febs.server.hr.util;
+
+import javax.validation.constraints.NotBlank;
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.UUID;
+
+public class GenerateFileName {
+
+	/**
+     * 根据文件类别生成文件的名字,文件的命名规则是:文件目录/生成时间-uuid(全球唯一编码).文件类别
+     * @param fileDir  文件的存储路径
+     * @param fileType 文件的类别
+     * @param empName
+     * @return                 文件的名字
+     */
+    public String generateFileName(String fileDir, String fileType, String empName)
+    {
+        String saveFileName = "";
+        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSS");
+        saveFileName += format.format(Calendar.getInstance().getTime());
+        saveFileName += "-" + empName;
+        saveFileName += "." + fileType;
+        
+        saveFileName = fileDir + File.separator + saveFileName;
+        
+        return saveFileName;
+    }
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFold.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFold.java
new file mode 100644
index 0000000..a8a35c8
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GenerateFold.java
@@ -0,0 +1,35 @@
+package cc.mrbird.febs.server.hr.util;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class GenerateFold {
+
+	/**
+     * 查询当前生成的excel需要存在在哪个路径,如果存在则存储在相应的位置,否则生成改目录, 每天生成一个文件夹,文件夹的命名规则为 年月日的时间戳
+     * @param foldName  生成excel保存路径
+     * @return            现在的excel需要保存路径
+     */
+    public  String getFold(String foldName)
+    {
+        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
+        
+        String todayStr = format.format(Calendar.getInstance().getTime());
+        
+        String foldPath = foldName + File.separator + todayStr; 
+        
+        File file = new File(foldPath);
+        
+        if(!file.exists() && !file.isDirectory())
+        {
+            System.out.println("不存在");
+            file.mkdirs();
+        }
+        else
+        {
+            System.out.println("存在");
+        }
+        return  foldPath;
+    }
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GetFilePlace.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GetFilePlace.java
new file mode 100644
index 0000000..a79a057
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/GetFilePlace.java
@@ -0,0 +1,56 @@
+package cc.mrbird.febs.server.hr.util;
+
+import java.io.*;
+import java.util.Properties;
+
+public class GetFilePlace {
+
+	/**
+	 * 读取文件,获取excel保存的根目录
+	 * 
+	 * @return excel保存的根目录
+	 */
+	public String getFilePath() {
+		String dir = System.getProperty("user.dir"); // 获得tomcat所在的工作路径
+
+		// 获取到存储了文件存储位置的filedir.properties 文件路径 --->java Project的文件路径
+		String realDir = dir + File.separator +File.separator + "application.properties";
+
+		return realDir;
+	}
+
+	/**
+	 * 获取filePath路径【properities文件】中key对应的值,
+	 * 
+	 * @param filePath
+	 *            properities文件路径【包含properities文件】
+	 * @param key
+	 *            要查找的key值
+	 * @return key对应的value
+	 */
+	public String GetValueByKey(String filePath, String key) {
+		Properties pps = new Properties();
+		try {
+			InputStream in = new BufferedInputStream(new FileInputStream(filePath));
+			pps.load(in);
+			String value = pps.getProperty(key);
+			in.close();
+			return value;
+
+		} catch (IOException e) {
+			e.printStackTrace();
+			return null;
+		}
+	}
+
+	/**
+	 * 查询properities文件中可以对应的存储地点
+	 * 
+	 * @param key
+	 *            查询主键
+	 * @return key对应的存储地址
+	 */
+	public String getFileDirFromProperties(String key) {
+		return GetValueByKey(getFilePath(), key);
+	}
+}
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/HeaderHandle.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/HeaderHandle.java
new file mode 100644
index 0000000..3099df9
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/HeaderHandle.java
@@ -0,0 +1,80 @@
+package cc.mrbird.febs.server.hr.util;
+
+import com.itextpdf.text.*;
+import com.itextpdf.text.pdf.*;
+
+import java.io.IOException;
+
+public class HeaderHandle extends PdfPageEventHelper {
+    /**
+     * 页眉
+     */
+    public String header = "12121";
+    /**
+     * 表格式页眉
+     */
+    protected PdfPTable headerTable;
+    /**
+     * 文档字体大小,页脚页眉最好和文本大小一致
+     */
+    public int presentFontSize = 12;
+    private float size=1.0f;
+    /**
+     * 文档页面大小,最好前面传入,否则默认为A4纸张
+     */
+    public Rectangle pageSize = PageSize.A4;
+    // 基础字体对象
+    public BaseFont bf = null;
+
+    // 利用基础字体生成的字体对象,一般用于生成中文文字
+    public Font fontDetail = null;
+
+    /**
+     *
+     * Creates a new instance of PdfReportM1HeaderFooter 构造方法.
+     *
+     * @param yeMei
+     *            页眉字符串
+     * @param presentFontSize
+     *            数据体字体大小
+     * @param pageSize
+     *            页面文档大小,A4,A5,A6横转翻转等Rectangle对象
+     */
+    public HeaderHandle(String yeMei, int presentFontSize, Rectangle pageSize) {
+        this.header = yeMei;
+        this.presentFontSize = presentFontSize;
+        this.pageSize = pageSize;
+    }
+
+    public HeaderHandle(PdfPTable headerTable) {
+        this.headerTable = headerTable;
+    }
+
+    public void setHeaderTable(PdfPTable headerTable) {
+        this.headerTable = headerTable;
+    }
+
+    @Override
+    public void onEndPage(PdfWriter writer, Document document) {
+        try {
+            if (bf == null) {
+                bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
+            }
+            if (fontDetail == null) {
+                fontDetail = new Font(bf, presentFontSize, Font.BOLD);// 数据体字体
+                fontDetail.setSize(size);
+            }
+        } catch (DocumentException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        // 1.写入页眉
+        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, new Phrase(header, fontDetail), document.left(), document.top() + 20, 0);
+
+
+        // rowEnd为-1 表示写入所有行
+       // headerTable.writeSelectedRows(0, -1, document.left()+document.leftMargin()/2, document.top() + headerTable.getTotalHeight(), writer.getDirectContent());
+    }
+}
diff --git a/febs-server/febs-server-hr/src/main/resources/application.properties b/febs-server/febs-server-hr/src/main/resources/application.properties
new file mode 100644
index 0000000..024caaa
--- /dev/null
+++ b/febs-server/febs-server-hr/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+#pdf存放目录
+pdfPath=D\:/appDataPdf
\ No newline at end of file
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DicController.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DicController.java
index 684644a..2465f00 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DicController.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DicController.java
@@ -42,6 +42,7 @@
     @GetMapping("list")
 
     public FebsResponse dicList(QueryRequest request, Dic dic) {
+        System.out.println("Hello Word");
         Map<String, Object> dataTable = FebsUtil.getDataTable(this.dicService.findDics(request, dic));
         return new FebsResponse().data(dataTable);
     }
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DiciIemController.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DiciIemController.java
index 6536e44..1bad555 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DiciIemController.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/DiciIemController.java
@@ -15,6 +15,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -48,7 +49,12 @@
         dicItem.setDicCode(dictType);
         return new FebsResponse().data(dicitemService.findDicItems(dicItem));
     }
-
+    @GetMapping(value = "/types/{dictType}")
+    public List<DicItem> dictTypes(@PathVariable String dictType) {
+        DicItem dicItem = new DicItem();
+        dicItem.setDicCode(dictType);
+        return dicitemService.findDicItems(dicItem);
+    }
     @GetMapping("list")
     public FebsResponse dicitemList(QueryRequest request, DicItem dicitem) {
         Map<String, Object> dataTable = FebsUtil.getDataTable(this.dicitemService.findDicItems(request, dicitem));

--
Gitblit v1.8.0