package com.hcc.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import com.hcc.pojo.*;
import com.hcc.service.*;
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author CC
* @since 2022-04-28
*/
@RestController
@RequestMapping("/employee/basid")
public class EmployeeController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IPoliticsStatusService politicsStatusService;
@Autowired
private IJoblevelService joblevelService;
@Autowired
private INationService nationService;
@Autowired
private IPositionService positionService;
@Autowired
private IDepartmentService departmentService;
@ApiOperation(value = "获取所有员工")
@GetMapping("/")
public RespPageBean getEmployee(@RequestParam(defaultValue = "1") Integer currentPage,
@RequestParam(defaultValue = "10") Integer size,
Employee employee,
LocalDate[] beginDateScope){
return employeeService.getEmployee(currentPage,size,employee,beginDateScope);
}
@ApiOperation(value = "获取所有政治面貌")
@GetMapping("/politicsstatus")
public List<PoliticsStatus> getAllPoliticeStatus(){
return politicsStatusService.list();
}
@ApiOperation(value = "获取所有职称")
@GetMapping("/joblevels")
public List<Joblevel> getJoblevels(){
return joblevelService.list();
}
@ApiOperation(value = "获取所有民族")
@GetMapping("/nations")
public List<Nation> getNation(){
return nationService.list();
}
@ApiOperation(value = "获取所有职位")
@GetMapping("/position")
public List<Position> getPosition(){
return positionService.list();
}
@ApiOperation(value = "获取所有部门")
@GetMapping("/department")
public List<Department> getAllDepartment(){
return departmentService.getAllDepartments();
}
@ApiOperation(value = "获取工号")
@GetMapping("/maxWorkID")
public RespBean maxWorkID(){
return employeeService.maxWorkID();
}
@ApiOperation(value = "添加员工")
@PostMapping("/")
public RespBean addEmp(@RequestBody Employee employee){
return employeeService.addEmp(employee);
}
@ApiOperation(value = "更新员工")
@PutMapping("/")
public RespBean updateEmployee(@RequestBody Employee employee){
if (employeeService.updateById(employee)){
return RespBean.success("更新成功");
}
return RespBean.success("更新失败");
}
@ApiOperation(value = "删除员工")
@DeleteMapping("/{id}")
public RespBean deleteEmployee(@PathVariable Integer id){
if (employeeService.removeById(id)){
return RespBean.success("删除成功");
}
return RespBean.success("删除失败");
}
@ApiOperation(value = "导出员工数据")
@GetMapping(value = "/export",produces = "application/octet-stream")
public void exportEmployee(HttpServletResponse response){
List<Employee> list = employeeService.getEmployee(null);
ExportParams Params = new ExportParams("员工表", "员工表", ExcelType.HSSF);
Workbook workbook = ExcelExportUtil.exportExcel(Params,Employee.class,list);
ServletOutputStream out = null;
try {
//以流的方式传出
response.setHeader("content-type","application/octet-stream");
//防止响应乱码
response.setHeader("content-disposition","attachment;filename="+URLEncoder.encode("员工表.xls","UTF-8"));
out=response.getOutputStream();
workbook.write(out);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if (out!=null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@ApiOperation(value = "导入员工数据")
@PostMapping(value = "/import")
public RespBean importEmployee(MultipartFile file){
ImportParams importParams = new ImportParams();
//去掉标题行
importParams.setTitleRows(1);
List<Nation> nationList = nationService.list();
List<PoliticsStatus> politicsStatusList = politicsStatusService.list();
List<Department> departmentList = departmentService.list();
List<Joblevel> joblevelList = joblevelService.list();
List<Position> positionList = positionService.list();
try {
//重写
List<Employee> list = ExcelImportUtil.importExcel(file.getInputStream(), Employee.class, importParams);
list.forEach(employee -> {
//民族id
employee.setNationId(nationList.get(nationList.indexOf(new Nation(employee.getNation().getName()))).getId());
//政治面貌id
employee.setPoliticId(politicsStatusList.get(politicsStatusList.indexOf(new PoliticsStatus(employee.getPoliticsStatus().getName()))).getId());
//部门id
employee.setDepartmentId(departmentList.get(departmentList.indexOf(new Department(employee.getDepartment().getName()))).getId());
//职称id
employee.setJobLevelId(joblevelList.get(joblevelList.indexOf(new Joblevel(employee.getJoblevel().getName()))).getId());
//职位id
employee.setPosId(positionList.get(positionList.indexOf(new Position(employee.getPosition().getName()))).getId());
});
if(employeeService.saveBatch(list)){
return RespBean.success("插入员工成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return RespBean.error("插入员工失败");
}
}