切割未完成 非常复杂
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
package com.aos.fileidentify.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
@@ -16,6 +19,9 @@ import java.util.Date;
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BaseEntity implements Serializable {
|
||||
|
||||
/** Id */
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.aos.fileidentify.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
@@ -17,6 +20,9 @@ import java.util.Date;
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName("t_employee_basic")
|
||||
public class Employee extends BaseEntity {
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package com.aos.fileidentify.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@@ -15,7 +19,12 @@ import java.util.Date;
|
||||
* @date 2022.07.05 14:29
|
||||
* @since 0.0.1
|
||||
*/
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName("t_employee_change")
|
||||
public class EmployeeChange extends BaseEntity {
|
||||
/**
|
||||
* 员工系统内唯一标志
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package com.aos.fileidentify.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@@ -16,6 +19,9 @@ import java.util.Date;
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName("t_employee_post")
|
||||
public class Post {
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.aos.fileidentify.entity.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>Company: 成都返空汇网络技术有限公司</p>
|
||||
* <p>Description: </p>
|
||||
@@ -14,12 +16,24 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
public class PdfFileDTO {
|
||||
/** 姓名 */
|
||||
/**
|
||||
* 姓名
|
||||
*/
|
||||
private String name;
|
||||
/** 现任职位 */
|
||||
/**
|
||||
* 现任职位
|
||||
*/
|
||||
private String currentPosition;
|
||||
/** 曾任职位 */
|
||||
/**
|
||||
* 曾任职位
|
||||
*/
|
||||
private String previousPosition;
|
||||
/** 兼任职位 */
|
||||
/**
|
||||
* 兼任职位
|
||||
*/
|
||||
private String partTimePosition;
|
||||
/**
|
||||
* 变更时间
|
||||
*/
|
||||
private Date changeTime;
|
||||
}
|
||||
|
||||
@@ -3,12 +3,15 @@ package com.aos.fileidentify.service.impl;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.aos.fileidentify.config.AosPageReadListener;
|
||||
import com.aos.fileidentify.entity.Employee;
|
||||
import com.aos.fileidentify.entity.EmployeeChange;
|
||||
import com.aos.fileidentify.entity.Post;
|
||||
import com.aos.fileidentify.entity.dto.EmployeeApprovalDTO;
|
||||
import com.aos.fileidentify.entity.dto.PdfFileDTO;
|
||||
import com.aos.fileidentify.mapper.EmployeeChangeMapper;
|
||||
import com.aos.fileidentify.mapper.EmployeeMapper;
|
||||
import com.aos.fileidentify.mapper.PostMapper;
|
||||
import com.aos.fileidentify.service.FileIdentifyService;
|
||||
import com.aos.fileidentify.util.ChineseDateUtils;
|
||||
import com.aos.fileidentify.util.CodeUtils;
|
||||
import com.aos.fileidentify.util.PdfUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -20,8 +23,10 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -50,6 +55,8 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
*/
|
||||
private final EmployeeMapper employeeMapper;
|
||||
|
||||
private final EmployeeChangeMapper employeeChangeMapper;
|
||||
|
||||
/**
|
||||
* Post mapper
|
||||
*/
|
||||
@@ -68,8 +75,9 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
String pdfContent = PdfUtils.getPdfContent(file);
|
||||
String pattern = "....年[\\u4E00-\\u9FA5]+月[\\u4E00-\\u9FA5]+日";
|
||||
Matcher m = Pattern.compile(pattern).matcher(pdfContent);
|
||||
Date changTime = null;
|
||||
if (m.find()) {
|
||||
String changTime = m.group(0);
|
||||
changTime = new SimpleDateFormat("yyyy-MM-dd").parse(ChineseDateUtils.getDate(m.group(0)));
|
||||
}
|
||||
String title = pdfContent.replaceAll("任命通知.*", "") + "任命通知";
|
||||
String mainBody = pdfContent.replaceAll(".*现公布如下:", "").replaceAll("特此通知.*", "");
|
||||
@@ -79,10 +87,21 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
for (String str : tempList) {
|
||||
PdfFileDTO pdfFileDTO = new PdfFileDTO();
|
||||
pdfFileDTO.setName(str.replaceAll("同志.*", ""));
|
||||
pdfFileDTO.setChangeTime(changTime);
|
||||
List<String> tempList2 = Arrays.stream(str.split(",")).collect(Collectors.toList());
|
||||
for (String str2 : tempList2) {
|
||||
if (str2.contains("同志兼任")) {
|
||||
pdfFileDTO.setPartTimePosition(str2.replaceAll(".*同志兼任", ""));
|
||||
String temp1 = str2.replaceAll(".*同志兼任", "");
|
||||
String partPost = temp1.replaceAll(".*公司", "");
|
||||
String pattern1 = "[\\u4e00-\\u9fa5]+?公司";
|
||||
Matcher matcher1 = Pattern.compile(pattern1).matcher(temp1);
|
||||
String branch = null;
|
||||
if (matcher1.find()) {
|
||||
branch = matcher1.group(0);
|
||||
}
|
||||
|
||||
|
||||
pdfFileDTO.setCurrentPosition(partPost);
|
||||
} else if (str2.contains("同志任")) {
|
||||
pdfFileDTO.setCurrentPosition(str2.replaceAll(".*同志任", ""));
|
||||
} else if (str2.contains("不再担任")) {
|
||||
@@ -92,7 +111,7 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
log.info(pdfFileDTO.toString());
|
||||
pdfFileDTOList.add(pdfFileDTO);
|
||||
}
|
||||
// this.updateEmployee(pdfFileDTOList);
|
||||
this.updateEmployee(pdfFileDTOList);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -106,14 +125,18 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
*/
|
||||
private void updateEmployee(List<PdfFileDTO> pdfFileDTOList) {
|
||||
pdfFileDTOList.forEach(pdfFileDTO -> {
|
||||
Employee employee =
|
||||
this.employeeMapper.selectOne(new QueryWrapper<Employee>().lambda().eq(Employee::getName, pdfFileDTO.getName()));
|
||||
Employee employee = this.employeeMapper.selectOne(new QueryWrapper<Employee>().lambda().eq(Employee::getName, pdfFileDTO.getName()));
|
||||
Assert.notNull(employee, "这个员工不存在");
|
||||
Post post = this.postMapper.selectOne(new QueryWrapper<Post>().lambda().eq(Post::getEmployeeKey, employee.getEmployeeKey()));
|
||||
Assert.notNull(post, "职务信息不存在");
|
||||
post.setCurrentPosition(pdfFileDTO.getCurrentPosition());
|
||||
//todo:尚未存储变更信息
|
||||
|
||||
EmployeeChange employeeChange = EmployeeChange.builder()
|
||||
.employee_key(employee.getEmployeeKey())
|
||||
.original_position(post.getCurrentPosition())
|
||||
.change_position(pdfFileDTO.getPreviousPosition())
|
||||
.change_time(pdfFileDTO.getChangeTime())
|
||||
.build();
|
||||
this.employeeChangeMapper.insert(employeeChange);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -142,7 +165,7 @@ public class FileIdentifyServiceImpl implements FileIdentifyService {
|
||||
*/
|
||||
private void saveEmployeeApproval(List<EmployeeApprovalDTO> dataList) {
|
||||
List<String> employeeKeyList =
|
||||
employeeMapper.selectList(new QueryWrapper<>()).stream().map(Employee::getEmployeeKey).collect(Collectors.toList());
|
||||
employeeMapper.selectList(new QueryWrapper<>()).stream().map(Employee::getEmployeeKey).collect(Collectors.toList());
|
||||
for (EmployeeApprovalDTO employeeApprovalDTO : dataList) {
|
||||
String employKey = CodeUtils.getEmployeeKey(employeeApprovalDTO.getName(), employeeApprovalDTO.getBirth().toString());
|
||||
if (employeeKeyList.contains(employKey)) {
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.aos.fileidentify.util;
|
||||
|
||||
public class ChineseDateUtils {
|
||||
|
||||
|
||||
public static String getDate(String chineseDate) {
|
||||
String resultStr = "";
|
||||
for (int j = 0; j < chineseDate.length(); j++) {
|
||||
switch (chineseDate.charAt(j)) {
|
||||
case '〇':
|
||||
resultStr += "0";
|
||||
break;
|
||||
case '一':
|
||||
resultStr += "1";
|
||||
break;
|
||||
case '二':
|
||||
resultStr += "2";
|
||||
break;
|
||||
case '三':
|
||||
resultStr += "3";
|
||||
break;
|
||||
case '四':
|
||||
resultStr += "4";
|
||||
break;
|
||||
case '五':
|
||||
resultStr += "5";
|
||||
break;
|
||||
case '六':
|
||||
resultStr += "6";
|
||||
break;
|
||||
case '七':
|
||||
resultStr += "7";
|
||||
break;
|
||||
case '八':
|
||||
resultStr += "8";
|
||||
break;
|
||||
case '九':
|
||||
resultStr += "9";
|
||||
break;
|
||||
case '年':
|
||||
case '月':
|
||||
resultStr += "-";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return resultStr.toString();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user