wl_management/src/test/java/com/lz/FumeiaiTest.java
2020-05-20 23:57:07 +08:00

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();
}
}