package cc.mrbird.febs.server.hr.controller; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import cc.mrbird.febs.common.core.entity.FebsResponse; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.common.core.exception.FebsException; import cc.mrbird.febs.common.core.utils.FebsUtil; import cc.mrbird.febs.server.hr.entity.EmpBaseInfo; import cc.mrbird.febs.server.hr.entity.EmpDimissionLog; import cc.mrbird.febs.server.hr.entity.EmpJobChange; import cc.mrbird.febs.server.hr.feign.IRemoteDeptService; import cc.mrbird.febs.server.hr.feign.IRemoteUserService; import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService; import cc.mrbird.febs.server.hr.util.PoiExportExcel; import cc.mrbird.febs.server.hr.util.PoiImportExcel; import cn.hutool.core.date.DateUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; /** * name:EmpBaseInfo package:cc.mrbird.febs.server.hr.controller description:控制器 * * @author luoyibo * @date 2021-01-30 08:04:50 * @since JDK1.8 */ @Api(tags = "人员基本信息录入接口") @Slf4j @Validated @RestController @RequestMapping("empBaseInfo") @RequiredArgsConstructor public class EmpBaseInfoController { private final IEmpBaseInfoService empBaseInfoService; private final IRemoteUserService remoteUserService; private final IRemoteDeptService remoteDeptService; @ApiOperation(value = "人员基本信息无翻页列表") @GetMapping @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse getAllEmpBaseInfos(EmpBaseInfo empBaseinfo) { return new FebsResponse().data(empBaseInfoService.findEmpBaseInfos(empBaseinfo)); } @ApiOperation(value = "人员基本信息翻页列表") @GetMapping("list") @PreAuthorize("hasAuthority('empBaseinfo:list')") public FebsResponse empBaseInfoList(QueryRequest request, EmpBaseInfo empBaseinfo) { Map dataTable = FebsUtil .getDataTable(this.empBaseInfoService.findEmpBaseInfos(request, empBaseinfo)); return new FebsResponse().data(dataTable); } @ApiOperation(value = "人员基本信息增加") @PostMapping @PreAuthorize("hasAuthority('empBaseinfo:add')") public void addEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException { if (this.empBaseInfoService.verifyEmpNumb(empBaseinfo)) { throw new FebsException("已存在此员工编号"); } try { // EmpBaseInfo tempInfo = this.empBaseInfoService. this.empBaseInfoService.createEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "新增员工基本信息失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息物理删除") @DeleteMapping @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void deleteEmpBaseInfo(EmpBaseInfo empBaseinfo) throws FebsException { try { this.empBaseInfoService.deleteEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "删除员工基本信息失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息逻辑删除") @DeleteMapping("{ids}") @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void logicDeleteEmpBaseInfo(@NotBlank(message = "{required}") @PathVariable("ids") String ids) throws FebsException { try { this.empBaseInfoService.logicDelEmpBaseInfo(ids); } catch (Exception e) { String message = "逻辑员工基本信息删除失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "人员基本信息修改") @PutMapping @PreAuthorize("hasAuthority('empBaseinfo:update')") public void updateEmpBaseInfo(@Valid EmpBaseInfo empBaseinfo) throws FebsException { if (this.empBaseInfoService.verifyEmpNumb(empBaseinfo)) { throw new FebsException("已存在此员工编号:" + empBaseinfo.getEmpNumb()); } try { this.empBaseInfoService.updateEmpBaseInfo(empBaseinfo); } catch (Exception e) { String message = "修改失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "基本信息提交") @DeleteMapping("toNormal/{ids}") @PreAuthorize("hasAuthority('empBaseinfo:delete')") public void momentToNormal(@NotBlank(message = "{required}") @PathVariable("ids") String ids) throws FebsException { try { this.empBaseInfoService.momentToNormal(ids); } catch (Exception e) { String message = "基本信息提交失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "关闭员工档案") @PostMapping("dimission") public void dimissionEmp(EmpDimissionLog empDimissionLog) throws FebsException { try { this.empBaseInfoService.closeEmpArchives(empDimissionLog); } catch (Exception e) { String message = "关闭员工档案失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "员工岗位变更") @PostMapping("jobChange") public void changeEmpJob(EmpJobChange empJobChange) throws FebsException { try { this.empBaseInfoService.changeEmpJob(empJobChange); } catch (Exception e) { String message = "员工调岗保存失败"; log.error(message, e); throw new FebsException(message); } } @ApiOperation(value = "导出员工") @PostMapping("export") public void export(QueryRequest request, HttpServletResponse response, String exportField) throws IOException { EmpBaseInfo empBaseinfo = new EmpBaseInfo(); empBaseinfo.setDelFlag(0); List exportList = empBaseInfoService.findEmpBaseInfos(empBaseinfo); List> listMapDicItem = new ArrayList(); List> allList = PoiExportExcel.getDataList(exportField, exportList, listMapDicItem); String fileName = "在职员工列表"; Date currentDate = new Date(); String dateStr = DateUtil.formatDate(currentDate); boolean result = PoiExportExcel.exportCommonExcel(response, fileName + dateStr, fileName, allList); } @ApiOperation(value = "导入员工") @PostMapping("importEmp") public void importEmp(MultipartFile file) throws IOException { InputStream in = null; List> listObject = null; try { if (!file.isEmpty()) { in = file.getInputStream(); listObject = new PoiImportExcel().getListByExcel(in, file.getOriginalFilename()); in.close(); empBaseInfoService.importEmpBaseInfo(listObject); } } catch (Exception e) { log.error("导入员工失败", e); } } }