切割未完成 非常复杂

This commit is contained in:
2022-07-12 22:13:18 +08:00
parent 2e3a8c17bd
commit e0f89987ce
7 changed files with 125 additions and 12 deletions
@@ -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();
}
}