253 lines
12 KiB
Java
253 lines
12 KiB
Java
package com.lz;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.google.common.collect.Lists;
|
|
import com.lz.common.utils.DateUtils;
|
|
import com.lz.common.utils.StringUtil;
|
|
import com.lz.modules.app.entity.*;
|
|
import com.lz.modules.app.enums.ExcelStaffHeardEnum;
|
|
import com.lz.modules.app.enums.GenderEnum;
|
|
import com.lz.modules.app.enums.MaritalStatusEnum;
|
|
import com.lz.modules.app.service.*;
|
|
import com.lz.modules.job.business.FeishuBusiness;
|
|
import com.lz.modules.sys.entity.SysCaptchaEntity;
|
|
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
import org.apache.poi.ss.usermodel.*;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.boot.test.context.SpringBootTest;
|
|
import org.springframework.test.context.junit4.SpringRunner;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.text.DecimalFormat;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@RunWith(SpringRunner.class)
|
|
@SpringBootTest
|
|
public class FumeiaiTest {
|
|
@Autowired
|
|
private FeishuBusiness feishuBusiness;
|
|
|
|
@Test
|
|
public void contextLoads() throws IOException, InvalidFormatException {
|
|
|
|
feishuBusiness.getFeishuDepartmentsIntoData();
|
|
|
|
File xlsFile = new File("/Users/fumeiai/tmp/员工档案字段表-0427.xlsx");
|
|
|
|
List<Map<String, String>> sheet12List = Lists.newArrayList();
|
|
List<Map<String, String>> sheet3List = Lists.newArrayList();
|
|
List<Map<String, String>> sheet4List = Lists.newArrayList();
|
|
|
|
// 获得工作簿
|
|
Workbook workbook = WorkbookFactory.create(xlsFile);
|
|
// 获得工作表个数
|
|
int sheetCount = workbook.getNumberOfSheets();
|
|
|
|
// 遍历工作表
|
|
for (int i = 0; i < sheetCount; i++) {
|
|
Sheet sheet = workbook.getSheetAt(i);
|
|
// 获得行数
|
|
int rows = sheet.getLastRowNum() + 1;
|
|
// 获得列数,先获得一行,在得到改行列数
|
|
Row tmp = sheet.getRow(0);
|
|
if (tmp == null) {
|
|
continue;
|
|
}
|
|
int cols = tmp.getPhysicalNumberOfCells();
|
|
List<String> headList = Lists.newArrayList();
|
|
// 读取数据
|
|
for (int row = 0; row < rows; row++) {
|
|
Row r = sheet.getRow(row);
|
|
Map<String, String> dataMap = new HashMap<String, String>();
|
|
for (int col = 0; col < cols; col++) {
|
|
String cellValue = getCellValue(r.getCell(col));
|
|
//System.out.print(" " + cellValue);
|
|
if (row == 0) {
|
|
headList.add(cellValue);
|
|
} else {
|
|
if (StringUtil.equals(GenderEnum.female.getName(), cellValue) || StringUtil.equals(GenderEnum.male.getName(), cellValue)) {
|
|
cellValue = GenderEnum.findCodeByName(cellValue).toString();
|
|
} else if (StringUtil.equals(MaritalStatusEnum.unmarried.getName(), cellValue) || StringUtil.equals(MaritalStatusEnum.married.getName(), cellValue)) {
|
|
cellValue = MaritalStatusEnum.findCodeByName(cellValue).toString();
|
|
}
|
|
dataMap.put(ExcelStaffHeardEnum.findFieldByName(headList.get(col)), cellValue);
|
|
}
|
|
}
|
|
|
|
if (dataMap.size() > 0) {
|
|
if (i == 1) {
|
|
dataMap.put("staffStatus", "1");
|
|
}
|
|
switch (i) {
|
|
case 0:
|
|
case 1:
|
|
sheet12List.add(dataMap);
|
|
break;
|
|
case 2:
|
|
sheet3List.add(dataMap);
|
|
break;
|
|
case 3:
|
|
sheet4List.add(dataMap);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
enterDatabase(sheet12List, sheet3List, sheet4List);
|
|
}
|
|
|
|
@Resource
|
|
StaffService staffService;
|
|
@Resource
|
|
StaffOccupationService staffOccupationService;
|
|
@Resource
|
|
StaffEducationService staffEducationService;
|
|
@Resource
|
|
StaffProjectExperienceService staffProjectExperienceService;
|
|
@Resource
|
|
StaffWorkTransferRecordService staffWorkTransferRecordService;
|
|
|
|
public void enterDatabase(List<Map<String, String>> sheet12List, List<Map<String, String>> sheet3List, List<Map<String, String>> sheet4List) {
|
|
List<StaffEntity> staffs = Lists.newArrayList();
|
|
List<StaffOccupationEntity> staffOccupations = Lists.newArrayList();
|
|
List<StaffEducationEntity> staffEducations = Lists.newArrayList();
|
|
List<StaffProjectExperienceEntity> staffProjectExperiences = Lists.newArrayList();
|
|
List<StaffWorkTransferRecordEntity> staffWorkTransferRecords = Lists.newArrayList();
|
|
|
|
for (Map<String, String> map : sheet12List) {
|
|
StaffEntity staffEntity = JSON.parseObject(JSON.toJSONString(map), StaffEntity.class);
|
|
StaffOccupationEntity occupationEntity = JSON.parseObject(JSON.toJSONString(map), StaffOccupationEntity.class);
|
|
StaffEducationEntity educationEntity = JSON.parseObject(JSON.toJSONString(map), StaffEducationEntity.class);
|
|
// staffs.add(JSON.parseObject(JSON.toJSONString(map), StaffEntity.class));
|
|
// staffOccupations.add(JSON.parseObject(JSON.toJSONString(map), StaffOccupationEntity.class));
|
|
// staffEducations.add(JSON.parseObject(JSON.toJSONString(map), StaffEducationEntity.class));
|
|
// for (Map.Entry<String, String> element : map.entrySet()) {
|
|
// System.out.print(element.getKey() + "=" + element.getValue() + " ");
|
|
// }
|
|
StaffEntity Staff = staffService.getByName(staffEntity.getName());
|
|
if (Staff == null) {
|
|
staffService.save(staffEntity);
|
|
} else {
|
|
staffEntity.setId(Staff.getId());
|
|
staffService.updateById(staffEntity);
|
|
}
|
|
StaffOccupationEntity occupation = staffOccupationService.getOne(new QueryWrapper<StaffOccupationEntity>().eq("staff_id", staffEntity.getId()));
|
|
if (occupation == null) {
|
|
occupationEntity.setStaffId(staffEntity.getId());
|
|
staffOccupationService.save(occupationEntity);
|
|
} else {
|
|
occupationEntity.setId(occupation.getId());
|
|
staffOccupationService.updateById(occupationEntity);
|
|
}
|
|
|
|
StaffEducationEntity education = staffEducationService.getOne(new QueryWrapper<StaffEducationEntity>().eq("staff_id", staffEntity.getId()));
|
|
if (education == null) {
|
|
educationEntity.setStaffId(staffEntity.getId());
|
|
staffEducationService.save(educationEntity);
|
|
} else {
|
|
educationEntity.setId(education.getId());
|
|
staffEducationService.updateById(educationEntity);
|
|
}
|
|
//
|
|
//
|
|
// System.out.println(JSON.parseObject(JSON.toJSONString(map), StaffEntity.class).toString());
|
|
// System.out.println(JSON.parseObject(JSON.toJSONString(map), StaffOccupationEntity.class).toString());
|
|
// System.out.println(JSON.parseObject(JSON.toJSONString(map), StaffEducationEntity.class).toString());
|
|
|
|
}
|
|
for (Map<String, String> map : sheet3List) {
|
|
StaffProjectExperienceEntity staffProjectExperienceEntity = JSON.parseObject(JSON.toJSONString(map), StaffProjectExperienceEntity.class);
|
|
StaffEntity Staff = staffService.getByName(map.get("name"));
|
|
if (Staff == null) {
|
|
continue;
|
|
} else {
|
|
staffProjectExperienceService.update(new UpdateWrapper<StaffProjectExperienceEntity>().set("is_delete", 1).eq("staff_id", Staff.getId()));
|
|
StaffProjectExperienceEntity projectExperienceEntity = staffProjectExperienceService.getOne(new QueryWrapper<StaffProjectExperienceEntity>().eq("staff_id", Staff.getId()).eq("project_name", staffProjectExperienceEntity.getProjectName()));
|
|
if (projectExperienceEntity == null) {
|
|
staffProjectExperienceEntity.setStaffId(Staff.getId());
|
|
staffProjectExperienceService.save(staffProjectExperienceEntity);
|
|
} else {
|
|
staffProjectExperienceEntity.setId(projectExperienceEntity.getId());
|
|
staffProjectExperienceEntity.setIsDelete(0);
|
|
staffProjectExperienceService.updateById(staffProjectExperienceEntity);
|
|
}
|
|
}
|
|
|
|
// staffProjectExperiences.add(JSON.parseObject(JSON.toJSONString(map), StaffProjectExperienceEntity.class));
|
|
// for (Map.Entry<String, String> element : map.entrySet()) {
|
|
// System.out.print(element.getKey() + "=" + element.getValue() + " ");
|
|
// }
|
|
// System.out.println(JSON.parseObject(JSON.toJSONString(map), StaffProjectExperienceEntity.class).toString());
|
|
}
|
|
for (Map<String, String> map : sheet4List) {
|
|
StaffWorkTransferRecordEntity staffWorkTransferRecordEntity = JSON.parseObject(JSON.toJSONString(map), StaffWorkTransferRecordEntity.class);
|
|
StaffEntity Staff = staffService.getByName(map.get("name"));
|
|
if (Staff == null) {
|
|
continue;
|
|
} else {
|
|
staffWorkTransferRecordService.update(new UpdateWrapper<StaffWorkTransferRecordEntity>().set("is_delete", 1).eq("staff_id", Staff.getId()));
|
|
StaffWorkTransferRecordEntity workTransferRecordEntity = staffWorkTransferRecordService.getOne(new QueryWrapper<StaffWorkTransferRecordEntity>().eq("staff_id", Staff.getId()).eq("transfer_time", staffWorkTransferRecordEntity.getTransferTime()));
|
|
if (workTransferRecordEntity == null) {
|
|
staffWorkTransferRecordEntity.setStaffId(Staff.getId());
|
|
staffWorkTransferRecordService.save(staffWorkTransferRecordEntity);
|
|
} else {
|
|
staffWorkTransferRecordEntity.setId(workTransferRecordEntity.getId());
|
|
staffWorkTransferRecordEntity.setIsDelete(0);
|
|
staffWorkTransferRecordService.updateById(staffWorkTransferRecordEntity);
|
|
}
|
|
}
|
|
|
|
|
|
// staffWorkTransferRecords.add(JSON.parseObject(JSON.toJSONString(map), StaffWorkTransferRecordEntity.class));
|
|
// for (Map.Entry<String, String> element : map.entrySet()) {
|
|
// System.out.print(element.getKey() + "=" + element.getValue() + " ");
|
|
// }
|
|
// System.out.println(JSON.parseObject(JSON.toJSONString(map), StaffWorkTransferRecordEntity.class).toString());
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 功能描述: 获取单元格值
|
|
*
|
|
* @param cell 单元格
|
|
* @return String
|
|
*/
|
|
public String getCellValue(Cell cell) {
|
|
String value = "";
|
|
if (cell != null) {
|
|
switch (cell.getCellTypeEnum()) {
|
|
case STRING:
|
|
value = cell.getRichStringCellValue().getString();
|
|
break;
|
|
case NUMERIC:
|
|
//System.out.println(" "+cell.getCellStyle().getDataFormatString()+" ");
|
|
if ("yyyy/m/d;@".equals(cell.getCellStyle().getDataFormatString()) || "yyyy\\-mm\\-dd".equals(cell.getCellStyle().getDataFormatString()) || "yyyymmdd".equals(cell.getCellStyle().getDataFormatString())) {
|
|
value = DateUtils.format(cell.getDateCellValue());
|
|
} else {
|
|
DecimalFormat df = new DecimalFormat("#");
|
|
value = df.format(cell.getNumericCellValue());
|
|
}
|
|
break;
|
|
case BOOLEAN:
|
|
value = String.valueOf(cell.getBooleanCellValue());
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
return value.trim();
|
|
}
|
|
|
|
}
|