diff --git a/src/main/java/com/ydool/common/constant/UrlConstant.java b/src/main/java/com/ydool/common/constant/UrlConstant.java index 4848558..ab0a3eb 100644 --- a/src/main/java/com/ydool/common/constant/UrlConstant.java +++ b/src/main/java/com/ydool/common/constant/UrlConstant.java @@ -39,6 +39,7 @@ public interface UrlConstant { String ORGANIZATION = API + "/organization"; String PARTY_ORGANIZATION = API + "/party_organization"; String DIRECTORS_SUPERVISORS = API + "/directors_supervisors"; + String PERSONNEL_INDICATORS = API + "/personnel_indicators"; String ALTERATION = API + "/alteration"; String Attachment = API + "/attachment"; diff --git a/src/main/java/com/ydool/common/converter/EasyExcelLocalDateConverter.java b/src/main/java/com/ydool/common/converter/EasyExcelLocalDateConverter.java new file mode 100644 index 0000000..5cb9ae1 --- /dev/null +++ b/src/main/java/com/ydool/common/converter/EasyExcelLocalDateConverter.java @@ -0,0 +1,48 @@ +package com.ydool.common.converter; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * @author msh + * @version 1.0 + * @date 2023/2/13 17:19 + */ +public class EasyExcelLocalDateConverter implements Converter { + @Override + public Class supportJavaTypeKey() { + return LocalDate.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public LocalDate convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + if (cellData.getType().equals(CellDataTypeEnum.NUMBER)){ + LocalDate localDate = LocalDate.of(1900, 1, 1); + localDate = localDate.plusDays(cellData.getNumberValue().longValue() - 2); + return localDate; + }else if (cellData.getType().equals(CellDataTypeEnum.STRING)){ + return LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); + }else { + return null; + } + + + } + + @Override + public CellData convertToExcelData(LocalDate value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); + } + +} diff --git a/src/main/java/com/ydool/common/handler/ExcelDataValidationHandler.java b/src/main/java/com/ydool/common/handler/ExcelDataValidationHandler.java new file mode 100644 index 0000000..5843677 --- /dev/null +++ b/src/main/java/com/ydool/common/handler/ExcelDataValidationHandler.java @@ -0,0 +1,67 @@ +package com.ydool.common.handler; + +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.Head; +import com.alibaba.excel.write.handler.CellWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataValidation; +import org.apache.poi.ss.usermodel.DataValidationConstraint; +import org.apache.poi.ss.usermodel.DataValidationHelper; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddressList; + +import java.util.List; +import java.util.Map; + +/** + * @author liuhaoze + * @date 2021/12/17 10:13 + */ +public class ExcelDataValidationHandler implements CellWriteHandler { + + private Map dataValidation; + + public ExcelDataValidationHandler(Map dataValidation){ + this.dataValidation = dataValidation; + } + + @Override + public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) { + + } + + @Override + public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) { + + } + + @Override + public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, CellData cellData, Cell cell, Head head, Integer integer, Boolean aBoolean) { + + } + + @Override + public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { + if(isHead){ + Sheet sheet = writeSheetHolder.getSheet(); + DataValidationHelper helper = sheet.getDataValidationHelper(); + dataValidation.forEach((k, v) -> { + // 设置下拉单元格的首行 末行 首列 末列 + CellRangeAddressList rangeList = new CellRangeAddressList(1, 100000, k, k); + // 下拉列表约束数据 + DataValidationConstraint constraint = helper.createExplicitListConstraint(v); + // 设置约束 + DataValidation validation = helper.createValidation(constraint, rangeList); + // 阻止输入非下拉选项的值 + validation.setErrorStyle(DataValidation.ErrorStyle.STOP); + validation.setShowErrorBox(true); + validation.setSuppressDropDownArrow(true); + validation.createErrorBox("提示", "此值与单元格定义格式不一致"); + sheet.addValidationData(validation); + }); + } + } +} diff --git a/src/main/java/com/ydool/common/utils/EasyExcelAlibabaUtil.java b/src/main/java/com/ydool/common/utils/EasyExcelAlibabaUtil.java new file mode 100644 index 0000000..50063e2 --- /dev/null +++ b/src/main/java/com/ydool/common/utils/EasyExcelAlibabaUtil.java @@ -0,0 +1,186 @@ +package com.ydool.common.utils; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.read.listener.ReadListener; +import com.ydool.staff.excel.ExcelPersonnel; +import com.ydool.staff.request.PersonnelDeleteRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; +import java.util.Date; +import java.util.List; +import java.util.Set; + +/** + * 基于EasyExcel的导入导出工具类, 在使用时需要先将excel实体类中的字段使用@ExcelProperty来指定表头 + * {@link com.alibaba.excel.annotation.ExcelProperty} + * {@link com.alibaba.excel.annotation.write.style.ColumnWidth} + * {@link com.alibaba.excel.annotation.format.DateTimeFormat} + */ +public class EasyExcelAlibabaUtil { + + private static Log logger = LogFactory.getLog("EasyExcelAlibabaUtil"); + + /** + * 将excel文件转化成javaList集合, + * 需要在传入的class的字段中加入EasyExcel的专用注解来指定表名 + * + * @param excelFile 前端传入的文件 + * @param clazz 一个Class对象 + * @param + * @return 可以直接转成传入的Class的List集合 + */ + public static List excelToList(MultipartFile excelFile, Class clazz) { + List objects = null; + try { + InputStream inputStream = excelFile.getInputStream(); + objects = EasyExcel.read(inputStream).head(clazz).sheet().doReadSync(); + } catch (Exception e) { + logger.error("excelToList-exception", e); + } finally { + return objects; + } + } + + /** + * 读取excel,这个相当于一个高性能模式。 + * 比上面的方法多了一个readListener接口, 需要传一个实现这个接口的实现类 + * 其中invoke方法是每读取一行都会调用, 所以可以读取一行处理一行, 性能比较高。 + * + * @param excelFile + * @param clazz + * @param readListener + */ + public static void readExcelHighPerformance(MultipartFile excelFile, Class clazz, ReadListener readListener) { + try { + InputStream inputStream = excelFile.getInputStream(); + EasyExcel.read(inputStream, clazz, readListener).sheet().doRead(); + } catch (Exception e) { + logger.error("excelToList-readExcelHighPerformance", e); + } + } + + /** + * 下载excel + * + * @param response web项目中response对象 + * @param clazz Class对象, 需要读取这个Class中的字段注解的名称, 用于生成表头 + * @param list java的List集合,需要与传入的Class匹配 + * @param excelName 需要生成的excel名称 + */ + public static void download(HttpServletResponse response, Class clazz, List list, String excelName) { + try { + ServletOutputStream outputStream = response.getOutputStream(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(excelName, "UTF-8")); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + EasyExcel.write(baos, clazz).sheet("sheet1").doWrite(list); + response.setHeader("Content-Length", String.valueOf(baos.size())); + outputStream.write(baos.toByteArray()); + response.flushBuffer(); + } catch (Exception e) { + logger.error("excelToList-download", e); + } + } + + public static void exportDownload(HttpServletResponse response, Class clazz, List list, String excelName, Set param) { + try { + ServletOutputStream outputStream = response.getOutputStream(); + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(excelName, "UTF-8")); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 + EasyExcel.write(baos, clazz).includeColumnFiledNames(param).sheet("sheet1") + .doWrite(list); + response.setHeader("Content-Length", String.valueOf(baos.size())); + outputStream.write(baos.toByteArray()); + response.flushBuffer(); + } catch (Exception e) { + logger.error("excelToList-download", e); + } + } + + /** + * 下载excel + * + * @param clazz Class对象, 需要读取这个Class中的字段注解的名称, 用于生成表头 + * @param list java的List集合,需要与传入的Class匹配 + * @param excelName 需要生成的excel名称 + */ + public static String download(Class clazz, List list, String excelName) { + //文件名称 + String fileName = excelName + IdUtil.randomUUID() + ".xlsx"; + //文件存放目录 + String urlPath = getWebRoot() + getFileUploadPath(); + //文件路径 + String fileNamePath = urlPath + File.separator + fileName; + //文件存放目录,不存在则新建 + File pathFile = new File(urlPath); + if (!pathFile.exists()) pathFile.mkdirs(); + + try { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + EasyExcel.write(baos, clazz).sheet("sheet1").doWrite(list); + //生成excel文件 + FileOutputStream fileOutputStream = null; + try { + fileOutputStream = new FileOutputStream(fileNamePath); + fileOutputStream.write(baos.toByteArray()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } catch (Exception e) { + logger.error("excelToList-download", e); + } + return getFileUploadPath() + File.separator + fileName; + } + + /** + * 文件名 + * + * @param excelName + * @return + */ + public static String getFileNamePath(String excelName) { + String fileName = excelName + IdUtil.randomUUID() + ".xlsx";//文件名称 + String folder = DateUtil.format(new Date(), "yyyy" + File.separator + "MM" + File.separator + "dd");//当天文件夹名称 + String urlPath = System.getProperty("user.dir") + File.separator + "upload" + File.separator + folder; //文件存放路径 + String fileNamePath = urlPath + File.separator + fileName; + return fileNamePath; + } + + public static String getFileUploadPath() { + String folder = DateUtil.format(new Date(), "yyyy" + File.separator + "MM" + File.separator + "dd"); + return File.separator + "upload" + File.separator + "excel" + File.separator + folder; + } + + public static String getRtspUploadPath() { + String folder = "rtsp"; + return File.separator + "upload" + File.separator + folder; + } + + public static String getWebRoot() { + return System.getProperty("user.dir"); + } + + +} diff --git a/src/main/java/com/ydool/common/utils/ExcelMergeRowByRowUtil.java b/src/main/java/com/ydool/common/utils/ExcelMergeRowByRowUtil.java new file mode 100644 index 0000000..7af92c2 --- /dev/null +++ b/src/main/java/com/ydool/common/utils/ExcelMergeRowByRowUtil.java @@ -0,0 +1,108 @@ +package com.ydool.common.utils; + +import com.alibaba.excel.write.handler.RowWriteHandler; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteTableHolder; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.util.CellRangeAddress; + +/** + * @author liuhaoze + * @date 2022/5/27 14:45 + */ +public class ExcelMergeRowByRowUtil implements RowWriteHandler { + private int mergeRowIndex;//从哪一行开始合并 + private int[] mergeColumnIndex;//excel合并的列 + private int signNum;//合并的唯一标识 + private int total;//总行数 + + private int lastRow; + private int firstCol; + private int lastCol; + private int firstRow; + + private int mergeCount =1; + + public ExcelMergeRowByRowUtil(int mergeRowIndex, int[] mergeColumnIndex, int signNum, int total) { + this.mergeRowIndex = mergeRowIndex; + this.mergeColumnIndex = mergeColumnIndex; + this.signNum = signNum; + this.total = total; + } + + + @Override + public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Integer rowIndex, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) { + + } + + @Override + public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) { + //当前行 + int curRowIndex = row.getRowNum(); + //每一行的最大列数 + short lastCellNum = row.getLastCellNum(); + + if(curRowIndex == 1){ + //赋初值 第一行 + firstRow = curRowIndex; + } + //开始合并位置 + if(curRowIndex > mergeRowIndex && !row.getCell(0).getStringCellValue().equals("")){ + for (int i = 0; i < lastCellNum; i++) { + if(i == mergeColumnIndex[i]){ + //当前行号 当前行对象 合并的标识位 + mergeWithPrevAnyRow(writeSheetHolder.getSheet(),curRowIndex,row,signNum); + break;//已经进入到合并单元格操作里面了,执行一次就行 + } + + } + } + } + + public void mergeWithPrevAnyRow(Sheet sheet,int curRowIndex,Row row,int signNum){ + Object currentData = row.getCell(signNum).getCellTypeEnum() == CellType.STRING ? row.getCell(signNum).getStringCellValue() : row.getCell(signNum).getNumericCellValue(); + Row preRow = row.getSheet().getRow(curRowIndex - 1); + Object preData = preRow.getCell(signNum).getCellTypeEnum() == CellType.STRING ? preRow.getCell(signNum).getStringCellValue() : preRow.getCell(signNum).getNumericCellValue(); + //判断是否合并单元格 + boolean curEqualsPre = currentData.equals(preData); + //判断前一个和后一个相同 并且 标识位相同 + if (curEqualsPre){ + lastRow = curRowIndex; + mergeCount++; + } + //excel过程中合并 + if(!curEqualsPre && mergeCount>1){ + mergeSheet(firstRow,lastRow,mergeColumnIndex,sheet); + mergeCount = 1; + } + + //excel结尾处合并 + if (mergeCount>1 && total==curRowIndex){ + mergeSheet(firstRow,lastRow,mergeColumnIndex,sheet); + mergeCount = 1; + } + + if (!curEqualsPre){ + firstRow = curRowIndex; + } + + } + + private void mergeSheet(int firstRow, int lastRow, int[] mergeColumnIndex, Sheet sheet){ + for (int colNum : mergeColumnIndex){ + firstCol = colNum; + lastCol = colNum; + CellRangeAddress cellRangeAddress = new CellRangeAddress(firstRow,lastRow,firstCol,lastCol); + sheet.addMergedRegion(cellRangeAddress); + } + } + +} diff --git a/src/main/java/com/ydool/common/utils/ExcelUtil.java b/src/main/java/com/ydool/common/utils/ExcelUtil.java new file mode 100644 index 0000000..f760db5 --- /dev/null +++ b/src/main/java/com/ydool/common/utils/ExcelUtil.java @@ -0,0 +1,107 @@ +package com.ydool.common.utils; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.write.metadata.style.WriteCellStyle; +import com.alibaba.excel.write.metadata.style.WriteFont; +import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; +import com.ydool.common.exception.ResultException; +import com.ydool.common.handler.ExcelDataValidationHandler; +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.FillPatternType; +import org.apache.poi.ss.usermodel.IndexedColors; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Map; + +public class ExcelUtil { + + public static void export(String fileName, List> head, String sheetName, List data) { + try { + HttpServletResponse response = HttpServletUtil.getResponse(); + response.reset(); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()).head(head).registerWriteHandler(getHorizontalCellStyleStrategy()).sheet(sheetName).doWrite(data); + }catch (Exception e) { + e.printStackTrace(); + throw new ResultException("下载模板文件失败"); + } + } + + public static void export(String fileName, List> head, Map dataValidation, String sheetName, List data) { + try { + HttpServletResponse response = HttpServletUtil.getResponse(); + response.reset(); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()).head(head).registerWriteHandler(getHorizontalCellStyleStrategy()).registerWriteHandler(new ExcelDataValidationHandler(dataValidation)).sheet(sheetName).doWrite(data); + }catch (Exception e) { + e.printStackTrace(); + throw new ResultException("下载模板文件失败"); + } + } + + public static void export(String fileName, Class head, String sheetName, List data) { + try { + HttpServletResponse response = HttpServletUtil.getResponse(); + response.reset(); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()).head(head).autoTrim(false).registerWriteHandler(getHorizontalCellStyleStrategy()).sheet(sheetName).doWrite(data); + }catch (Exception e) { + e.printStackTrace(); + throw new ResultException("下载失败"); + } + } + + public static void export(String fileName, Class head,ExcelMergeRowByRowUtil excelMergeRowByRowStrategy, String sheetName, List data) { + try { + HttpServletResponse response = HttpServletUtil.getResponse(); + response.reset(); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + EasyExcel.write(response.getOutputStream()).head(head).autoTrim(false).registerWriteHandler(getHorizontalCellStyleStrategy()).registerWriteHandler(excelMergeRowByRowStrategy).sheet(sheetName).doWrite(data); + }catch (Exception e) { + e.printStackTrace(); + throw new ResultException("下载失败"); + } + } + + public static HorizontalCellStyleStrategy getHorizontalCellStyleStrategy() { + // 头的策略 + WriteCellStyle headWriteCellStyle = new WriteCellStyle(); + headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex()); + WriteFont headWriteFont = new WriteFont(); + headWriteFont.setFontHeightInPoints((short)9); + headWriteFont.setFontName("宋体"); + headWriteFont.setBold(false);//设置字体不加粗 + headWriteCellStyle.setWriteFont(headWriteFont); + + // 内容的策略 + WriteCellStyle contentWriteCellStyle = new WriteCellStyle(); + // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定 + contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND); + // 背景白色 + contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex()); + // 字体 + WriteFont contentWriteFont = new WriteFont(); + contentWriteFont.setFontHeightInPoints((short)9); + contentWriteFont.setFontName("宋体"); + contentWriteFont.setBold(false); //设置字体不加粗 + contentWriteCellStyle.setWriteFont(contentWriteFont); + //边框 + contentWriteCellStyle.setBorderTop(BorderStyle.THIN); + contentWriteCellStyle.setBorderBottom(BorderStyle.THIN); + contentWriteCellStyle.setBorderLeft(BorderStyle.THIN); + contentWriteCellStyle.setBorderRight(BorderStyle.THIN); + + // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现 + HorizontalCellStyleStrategy horizontalCellStyleStrategy = + new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle); + return horizontalCellStyleStrategy; + } +} diff --git a/src/main/java/com/ydool/staff/controller/DirectorsSupervisorsController.java b/src/main/java/com/ydool/staff/controller/DirectorsSupervisorsController.java index 54a0609..7b44483 100644 --- a/src/main/java/com/ydool/staff/controller/DirectorsSupervisorsController.java +++ b/src/main/java/com/ydool/staff/controller/DirectorsSupervisorsController.java @@ -31,6 +31,12 @@ public class DirectorsSupervisorsController extends BaseController { return directorsSupervisorsService.selectDirectorsSupervisorsList(new Page<>(getPageNum(), getPageSize()), directorsSupervisorsDto); } + @GetMapping("/selectDirectorsSupervisorsFile") + @ApiOperation(value = "董监任免申报附件列表") + public AjaxResult selectDirectorsSupervisorsFile(String id){ + return directorsSupervisorsService.selectDirectorsSupervisorsFile(new Page<>(getPageNum(), getPageSize()), id); + } + @GetMapping("/selectDirectorsSupervisorsById") @ApiOperation(value = "董监任免申报详情") @ApiImplicitParam(name = "id", value = "董监任免id", dataType = "String", required = true) diff --git a/src/main/java/com/ydool/staff/controller/OrganizationController.java b/src/main/java/com/ydool/staff/controller/OrganizationController.java index d88ff8a..00d2ec1 100644 --- a/src/main/java/com/ydool/staff/controller/OrganizationController.java +++ b/src/main/java/com/ydool/staff/controller/OrganizationController.java @@ -2,12 +2,13 @@ package com.ydool.staff.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.github.xiaoymin.knife4j.annotations.DynamicParameter; +import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters; import com.ydool.common.base.BaseController; -import com.ydool.common.constant.ArgsConst; import com.ydool.common.constant.UrlConstant; import com.ydool.common.data.dto.AjaxResult; -import com.ydool.staff.entity.PartyOrganization; -import com.ydool.staff.request.MechanismRequest; +import com.ydool.staff.entity.Organization; +import com.ydool.staff.request.OrganizationSearch; import com.ydool.staff.service.*; import com.ydool.system.request.IdsRequest; import io.swagger.annotations.Api; @@ -15,75 +16,28 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(UrlConstant.ORGANIZATION) -@Api(tags = "内设机构登记", value = "内设机构登记") +@Api(tags = "人员招聘登记人员指标申报列表", value = "人员招聘登记人员指标申报列表") public class OrganizationController extends BaseController { - @Autowired - ICompanyNameService companyNameService; @Autowired IOrganizationService organizationService; - @Autowired - IPartyOrganizationService partyOrganizationService; - @Autowired - IMechanismService mechanismService; - @Autowired - IAttachmentService attachmentService; - /** - * =======================内设机构登记========================= - * @return - */ - - @GetMapping("/selectOrganizationList") - @ApiOperation(value = "内设机构登记列表") - @ApiOperationSupport(order = 1) - @ApiImplicitParams({@ApiImplicitParam(name = "companyName", value = "企业名称"), @ApiImplicitParam(name = "current", value = "当前页", dataType = "Integer"), @ApiImplicitParam(name = "size", value = "每页条数", dataType = "Integer"),}) - public AjaxResult selectOrganizationList(String companyName) { - return organizationService.selectOrganizationList(new Page<>(getPageNum(), getPageSize()), companyName); + @GetMapping("/selectOrganizationPersonnelIndicatorsList") + @ApiOperation(value = "人员招聘登记人员指标申报列表") + @ApiOperationSupport(responses = @DynamicResponseParameters(properties = {@DynamicParameter(name = "data", dataTypeClass = Organization.class)}), order = 1) + @ApiImplicitParams({@ApiImplicitParam(name = "type", value = "人员招聘登记organization/人员指标申报personnel_indicators", dataType = "String", required = true), @ApiImplicitParam(name = "current", value = "当前页", dataType = "Integer"), @ApiImplicitParam(name = "size", value = "每页条数", dataType = "Integer"),}) + public AjaxResult selectOrganizationList(OrganizationSearch organizationSearch) { + return organizationService.selectOrganizationList(new Page(getPageNum(), getPageSize()), organizationSearch); } - @GetMapping("/selectOrganizationByMechanism") - @ApiOperation(value = "内设机构登记详情") - @ApiOperationSupport(order = 4) - @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "内设机构Id", required = true)}) - public AjaxResult selectOrganizationByMechanism(String id) { - return organizationService.selectOrganizationByMechanism(id); - } - - @PostMapping("/deleteOrganization") - @ApiOperation(value = "内设机构删除") - @ApiOperationSupport(order = 5) + @PostMapping("/deleteOrganizationAndPersonnelIndicators") + @ApiOperation(value = "人员招聘登记人员指标申报删除") + @ApiOperationSupport(order = 2) public AjaxResult deleteOrganization(@RequestBody IdsRequest id) { return organizationService.deleteOrganization(id); } - - /** - * ===========================机构信息============================ - * @return - */ - - @PostMapping("/saveMechanism") - @ApiOperation(value = "机构信息新增") - @ApiOperationSupport(order = 6) - public AjaxResult saveMechanism(@RequestBody @Validated MechanismRequest mechanismRequest) { - return mechanismService.saveOrganizationMechanism(mechanismRequest); - } - - /** - * ==========================党组织信息=========================== - * @return - */ - - @PostMapping("/savePartyOrganization") - @ApiOperation(value = "党组织信息新增") - @ApiOperationSupport(order = 7) - public AjaxResult savePartyOrganization(@RequestBody @Validated PartyOrganization partyOrganization) { - return partyOrganizationService.savePartyOrganization(partyOrganization); - } - } diff --git a/src/main/java/com/ydool/staff/controller/PersonnelController.java b/src/main/java/com/ydool/staff/controller/PersonnelController.java index 3c93199..006e524 100644 --- a/src/main/java/com/ydool/staff/controller/PersonnelController.java +++ b/src/main/java/com/ydool/staff/controller/PersonnelController.java @@ -9,7 +9,9 @@ import com.ydool.common.utils.UploadUtils; import com.ydool.staff.dto.PersonnelDto; import com.ydool.staff.dto.PersonnelUpdateDto; import com.ydool.staff.entity.Attachment; +import com.ydool.staff.entity.Personnel; import com.ydool.staff.entity.SelectRequest; +import com.ydool.staff.excel.ExcelPersonnel; import com.ydool.staff.request.ChangeRequest; import com.ydool.staff.request.PersonnelDeleteRequest; import com.ydool.staff.request.PersonnelRequest; @@ -24,8 +26,11 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -83,7 +88,30 @@ public class PersonnelController extends BaseController { return personnelService.updateChange(request); } + @GetMapping("getEntityParam") + @ApiOperation(value = "获取实体参数名",response = ExcelPersonnel.class) + public AjaxResult getEntityParam(){ + return personnelService.getEntityParam(); + } + @PostMapping("export") + @ApiOperation(value = "导出接口") + public void export(@RequestBody PersonnelDeleteRequest personnelParam,HttpServletResponse response){ + personnelService.export(personnelParam,response); + } + + /** + * 导入员工 + * + * @param excl + * @throws Exception + */ + @ApiOperation("导入员工") + @PostMapping(value = "importPersonnel") + public void importEmployees(@RequestParam("file") @NotNull(message = "file is null") MultipartFile excl) throws Exception { + AjaxResult ajaxResult = personnelService.importPersonnel(excl); + renderJson(ajaxResult); + } } diff --git a/src/main/java/com/ydool/staff/controller/PersonnelIndicatorsController.java b/src/main/java/com/ydool/staff/controller/PersonnelIndicatorsController.java new file mode 100644 index 0000000..2752011 --- /dev/null +++ b/src/main/java/com/ydool/staff/controller/PersonnelIndicatorsController.java @@ -0,0 +1,47 @@ +package com.ydool.staff.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.github.xiaoymin.knife4j.annotations.DynamicParameter; +import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters; +import com.ydool.common.base.BaseController; +import com.ydool.common.constant.UrlConstant; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.PersonnelIndicatorsDto; +import com.ydool.staff.request.PersonnelIndicatorsRequest; +import com.ydool.staff.service.IPersonnelIndicatorsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author Zhuyy + * @ClassName PersonnelIndicatorsController + * @Description TODO + * @date 2023/2/10 11:32 + * @Version 1.0 + */ + +@RestController +@RequestMapping(UrlConstant.PERSONNEL_INDICATORS) +@Api(tags = "人员指标申报", value = "人员指标申报") +public class PersonnelIndicatorsController extends BaseController { + + @Autowired + IPersonnelIndicatorsService personnelIndicatorsService; + + @PostMapping("/savePersonnelIndicators") + @ApiOperation(value = "人员指标申报登记") + @ApiOperationSupport(responses = @DynamicResponseParameters(properties = {@DynamicParameter(name = "data", dataTypeClass = PersonnelIndicatorsRequest.class)}), order = 2) + public AjaxResult savePersonnelIndicators(@RequestBody @Validated PersonnelIndicatorsRequest personnelIndicatorsRequest) { + return personnelIndicatorsService.savePersonnelIndicators(personnelIndicatorsRequest); + } + + @GetMapping("/selectPersonnelIndicatorsById") + @ApiOperation(value = "人员指标申报详情") + @ApiOperationSupport(responses = @DynamicResponseParameters(properties = {@DynamicParameter(name = "data", dataTypeClass = PersonnelIndicatorsDto.class)}), order = 3) + public AjaxResult selectPersonnelIndicatorsById(String id) { + return personnelIndicatorsService.selectPersonnelIndicatorsById(id); + } +} diff --git a/src/main/java/com/ydool/staff/controller/RecruitmentController.java b/src/main/java/com/ydool/staff/controller/RecruitmentController.java index 390ab66..f85f320 100644 --- a/src/main/java/com/ydool/staff/controller/RecruitmentController.java +++ b/src/main/java/com/ydool/staff/controller/RecruitmentController.java @@ -1,10 +1,15 @@ package com.ydool.staff.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import com.github.xiaoymin.knife4j.annotations.DynamicParameter; +import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters; +import com.ydool.common.base.BaseController; import com.ydool.common.constant.UrlConstant; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.RecruitmentDto; import com.ydool.staff.request.RecruitmentRequest; -import com.ydool.staff.service.ICompanyNameService; import com.ydool.staff.service.IRecruitmentService; +import com.ydool.system.request.IdsRequest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; @@ -14,42 +19,31 @@ import org.springframework.web.bind.annotation.*; @RestController @RequestMapping(UrlConstant.RECRUITMENT) -@Api(tags = "员工登记", value = "员工登记") -public class RecruitmentController { +@Api(tags = "人员招聘登记", value = "人员招聘登记") +public class RecruitmentController extends BaseController { - // @Autowired - // IRecruitmentService recruitmentService; - // @Autowired - // ICompanyNameService companyNameService; + @Autowired + IRecruitmentService recruitmentService; - // @GetMapping("/RecruitmentList") - // @ApiOperation(value = "人员登记列表") - // public AjaxResult recruitmentList() { - // return recruitmentService.recruitmentList(); - // } + @GetMapping("/selectCompanyNameById") + @ApiOperation(value = "人员招聘登记详情") + @ApiOperationSupport(responses = @DynamicResponseParameters(properties = {@DynamicParameter(name = "data", dataTypeClass = RecruitmentDto.class)}), order = 2) + public AjaxResult selectCompanyNameById(String id) { + return recruitmentService.selectRecruitmentById(id); + } - // @PostMapping("/insertRecruitment") - // @ApiOperation(value = "人员登记") - // public AjaxResult insertRecruitment(@RequestBody @Validated RecruitmentRequest recruitmentRequest) { - // return recruitmentService.saveRecruitment(recruitmentRequest); - // } + @PostMapping("/insertRecruitment") + @ApiOperation(value = "人员招聘登记新增") + @ApiOperationSupport(responses = @DynamicResponseParameters(properties = {@DynamicParameter(name = "data", dataTypeClass = RecruitmentRequest.class)}), order = 3) + public AjaxResult insertRecruitment(@RequestBody @Validated RecruitmentRequest recruitmentRequest) { + return recruitmentService.saveRecruitment(recruitmentRequest); + } - // @DeleteMapping("/deleteRecruitment") - // @ApiOperation(value = "人员删除") - // public AjaxResult deleteRecruitment(String id) { - // return recruitmentService.deleteRecruitment(id); - // } - - // @GetMapping("/selectCompanyNameById") - // @ApiOperation(value = "人员招聘详情") - // public AjaxResult selectCompanyNameById(String id) { - // return companyNameService.selectCompanyNameById(id); - // } - - // @PostMapping("/recruitmentSaveBatch") - // @ApiOperation(value = "批量人员登记") - // public AjaxResult recruitmentSaveBatch(@RequestBody @Validated RecruitmentDto recruitmentDto){ - // return recruitmentService.recruitmentSaveBatch(recruitmentDto.getRecruitment()); - // } + @PostMapping("/deleteRecruitment") + @ApiOperation(value = "人员招聘登记删除") + @ApiOperationSupport(order = 5) + public AjaxResult deleteRecruitment(@RequestBody IdsRequest id) { + return recruitmentService.deleteRecruitment(id); + } } diff --git a/src/main/java/com/ydool/staff/dto/PersonnelIndicatorsDto.java b/src/main/java/com/ydool/staff/dto/PersonnelIndicatorsDto.java new file mode 100644 index 0000000..d79945e --- /dev/null +++ b/src/main/java/com/ydool/staff/dto/PersonnelIndicatorsDto.java @@ -0,0 +1,26 @@ +package com.ydool.staff.dto; + +import com.ydool.staff.entity.Organization; +import com.ydool.staff.entity.PersonnelIndicators; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author Zhuyy + * @ClassName PersonnelIndicatorsDto + * @Description TODO + * @date 2023/2/10 11:43 + * @Version 1.0 + */ +@Data +public class PersonnelIndicatorsDto implements Serializable { + + @ApiModelProperty(value = "企业信息") + private Organization organization; + + @ApiModelProperty(value = "人员指标申报") + private List personnelIndicators; +} diff --git a/src/main/java/com/ydool/staff/dto/PersonnelUpdateDto.java b/src/main/java/com/ydool/staff/dto/PersonnelUpdateDto.java index 2dc1db7..713043a 100644 --- a/src/main/java/com/ydool/staff/dto/PersonnelUpdateDto.java +++ b/src/main/java/com/ydool/staff/dto/PersonnelUpdateDto.java @@ -29,7 +29,7 @@ public class PersonnelUpdateDto { private String companyName; @ApiModelProperty(value = "性别") - private Integer gender; + private String gender; @ApiModelProperty(value = "出生日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @@ -48,7 +48,7 @@ public class PersonnelUpdateDto { private String education; @ApiModelProperty(value = "是否应届毕业生") - private Integer freshGraduate; + private String freshGraduate; @ApiModelProperty(value = "毕业院校") private String academy; diff --git a/src/main/java/com/ydool/staff/dto/RecruitmentDto.java b/src/main/java/com/ydool/staff/dto/RecruitmentDto.java index 69dbd2d..68aad58 100644 --- a/src/main/java/com/ydool/staff/dto/RecruitmentDto.java +++ b/src/main/java/com/ydool/staff/dto/RecruitmentDto.java @@ -1,17 +1,19 @@ package com.ydool.staff.dto; -import com.ydool.staff.request.RecruitmentRequest; +import com.ydool.staff.entity.Organization; +import com.ydool.staff.entity.Recruitment; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotEmpty; import java.io.Serializable; import java.util.List; @Data public class RecruitmentDto implements Serializable { - @NotEmpty(message = "不能为空") - @ApiModelProperty(value = "批量人员登记") - private List recruitment; + @ApiModelProperty(value = "企业信息") + private Organization organization; + + @ApiModelProperty(value = "人员招聘登记") + private List recruitments; } diff --git a/src/main/java/com/ydool/staff/entity/CompanyName.java b/src/main/java/com/ydool/staff/entity/CompanyName.java index 698dafb..1cf08e1 100644 --- a/src/main/java/com/ydool/staff/entity/CompanyName.java +++ b/src/main/java/com/ydool/staff/entity/CompanyName.java @@ -36,15 +36,20 @@ public class CompanyName extends BaseEntity { private String approvalNumber; @ApiModelProperty(value = "核定指标人数") - private Integer checkNumber; + private Long checkNumber; @ApiModelProperty(value = "在职人数") - private Integer activeStaff; + private Long activeStaff; @ApiModelProperty(value = "剩余指标人数") - private Integer residueNumber; + private Long residueNumber; + + @ApiModelProperty(value = "本次核定总人数") + private Long thisApprovalNumber; @ApiModelProperty(value = "备注") private String remarks; + @ApiModelProperty(value = "附件") + private String file; } diff --git a/src/main/java/com/ydool/staff/entity/DirectorsSupervisors.java b/src/main/java/com/ydool/staff/entity/DirectorsSupervisors.java index cde4f27..9e8503b 100644 --- a/src/main/java/com/ydool/staff/entity/DirectorsSupervisors.java +++ b/src/main/java/com/ydool/staff/entity/DirectorsSupervisors.java @@ -38,6 +38,9 @@ public class DirectorsSupervisors extends BaseEntity { @NotBlank(message = "企业Id不能为空") private String organizationId; + @ApiModelProperty(value = "信用代码") + private String creditCode; + @ApiModelProperty(value = "姓名") @NotBlank(message = "姓名不能为空") private String username; @@ -103,6 +106,12 @@ public class DirectorsSupervisors extends BaseEntity { @ApiModelProperty(value = "单据状态") private String documentStatus; + @ApiModelProperty(value = "初审意见") + private String firstTrial; + + @ApiModelProperty(value = "终审意见") + private String lastInstance; + @ApiModelProperty(value = "附件") @TableField(exist = false) private List attachmentDtoList; diff --git a/src/main/java/com/ydool/staff/entity/Organization.java b/src/main/java/com/ydool/staff/entity/Organization.java index 2dfdab5..666d084 100644 --- a/src/main/java/com/ydool/staff/entity/Organization.java +++ b/src/main/java/com/ydool/staff/entity/Organization.java @@ -34,19 +34,32 @@ public class Organization extends BaseEntity{ @ApiModelProperty(value = "信用代码") private String creditCode; + @ApiModelProperty(value = "审批单号") + private String approvalNumber; + + @ApiModelProperty(value = "核定用工人数") + private Long checkNumber; + + @ApiModelProperty(value = "剩余指标人数") + private Long residualNumber; + + @ApiModelProperty(value = "在职人数") + private Long activeStaff; + + @ApiModelProperty(value = "本次核定总人数") + private Long thisApprovalNumber; + @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "相关附件") private String attachment; - // @ApiModelProperty(value = "附件列表") - // @TableField(exist = false) - // private List attachments; + @ApiModelProperty(value = "类型") + private String type; - @ApiModelProperty(value = "企业名称") - @TableField(exist = false) - private String companyName; + @ApiModelProperty(value = "单据状态") + private String documentStatus; @ApiModelProperty(value = "修改人") @TableField(exist = false) diff --git a/src/main/java/com/ydool/staff/entity/PartyOrganization.java b/src/main/java/com/ydool/staff/entity/PartyOrganization.java index b2e9b5a..ce2d7d3 100644 --- a/src/main/java/com/ydool/staff/entity/PartyOrganization.java +++ b/src/main/java/com/ydool/staff/entity/PartyOrganization.java @@ -26,9 +26,9 @@ public class PartyOrganization extends BaseEntity{ private static final long serialVersionUID = 1L; - // @ApiModelProperty(value = "企业Id") - // @NotBlank(message = "企业Id不能为空") - // private String organizationId; + @ApiModelProperty(value = "企业Id") + @NotBlank(message = "企业Id不能为空") + private String organizationId; @ApiModelProperty(value = "姓名") @NotBlank(message = "姓名不能为空") diff --git a/src/main/java/com/ydool/staff/entity/Personnel.java b/src/main/java/com/ydool/staff/entity/Personnel.java index 08aeb46..7315213 100644 --- a/src/main/java/com/ydool/staff/entity/Personnel.java +++ b/src/main/java/com/ydool/staff/entity/Personnel.java @@ -1,12 +1,11 @@ package com.ydool.staff.entity; -import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ydool.common.base.BaseEntity; -import java.util.Date; +import java.time.LocalDate; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -42,11 +41,11 @@ public class Personnel extends BaseEntity { private String companyName; @ApiModelProperty(value = "性别") - private Integer gender; + private String gender; @ApiModelProperty(value = "出生日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date birthday; + private LocalDate birthday; @ApiModelProperty(value = "身份证号") private String numberId; @@ -61,7 +60,7 @@ public class Personnel extends BaseEntity { private String education; @ApiModelProperty(value = "是否应届毕业生") - private Integer freshGraduate; + private String freshGraduate; @ApiModelProperty(value = "毕业院校") private String academy; @@ -101,23 +100,23 @@ public class Personnel extends BaseEntity { @ApiModelProperty(value = "入职时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date hireDate; + private LocalDate hireDate; @ApiModelProperty(value = "退休时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date retirementTime; + private LocalDate retirementTime; @ApiModelProperty(value = "离职时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date resignationTime; + private LocalDate resignationTime; @ApiModelProperty(value = "退休返聘开始时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date txfpStartTime; + private LocalDate txfpStartTime; @ApiModelProperty(value = "退休返聘结束时间") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - private Date txfpEndTime; + private LocalDate txfpEndTime; @ApiModelProperty(value = "人员招聘单号") private String recruitNumber; diff --git a/src/main/java/com/ydool/staff/entity/PersonnelIndicators.java b/src/main/java/com/ydool/staff/entity/PersonnelIndicators.java new file mode 100644 index 0000000..67334a2 --- /dev/null +++ b/src/main/java/com/ydool/staff/entity/PersonnelIndicators.java @@ -0,0 +1,57 @@ +package com.ydool.staff.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.ydool.common.base.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * 人员指标申报 + *

+ * + * @author ljq + * @since 2023-02-10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@Accessors(chain = true) +@TableName("t_lc_personnel_indicators") +@ApiModel(value = "PersonnelIndicators对象", description = "人员指标申报") +public class PersonnelIndicators extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + private String organizationId; + + @ApiModelProperty(value = "部门") + private String deptId; + + @ApiModelProperty(value = "岗位") + private String job; + + @ApiModelProperty(value = "指标说明") + private String indexExplain; + + @ApiModelProperty(value = "标准指标人数") + private Long standardNumber; + + @ApiModelProperty(value = "增加指标人数") + private Long addNumber; + + @ApiModelProperty(value = "初审意见") + private String firstTrial; + + @ApiModelProperty(value = "国资意见") + private String stateOwned; + + @ApiModelProperty(value = "编办意见") + private String arrangeFor; + + @ApiModelProperty(value = "单据状态") + private String documentStatus; +} diff --git a/src/main/java/com/ydool/staff/entity/Recruitment.java b/src/main/java/com/ydool/staff/entity/Recruitment.java index 9135edf..b8dbef1 100644 --- a/src/main/java/com/ydool/staff/entity/Recruitment.java +++ b/src/main/java/com/ydool/staff/entity/Recruitment.java @@ -1,5 +1,6 @@ package com.ydool.staff.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.ydool.common.base.BaseEntity; @@ -28,7 +29,7 @@ public class Recruitment extends BaseEntity { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "企业名称") + @ApiModelProperty(value = "企业id") private String companyId; @ApiModelProperty(value = "部门") @@ -44,6 +45,18 @@ public class Recruitment extends BaseEntity { private String requirements; @ApiModelProperty(value = "审批") - private Integer approval; + private Long approval; + @ApiModelProperty(value = "初审意见") + private String firstTrial; + + @ApiModelProperty(value = "终审意见") + private String lastInstance; + + @ApiModelProperty(value = "单据状态") + private String documentStatus; + + @ApiModelProperty(value = "企业名称") + @TableField(exist = false) + private String companyName; } diff --git a/src/main/java/com/ydool/staff/excel/ExcelPersonnel.java b/src/main/java/com/ydool/staff/excel/ExcelPersonnel.java new file mode 100644 index 0000000..e5ef9fc --- /dev/null +++ b/src/main/java/com/ydool/staff/excel/ExcelPersonnel.java @@ -0,0 +1,194 @@ +package com.ydool.staff.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.annotation.write.style.HeadStyle; +import com.ydool.common.converter.EasyExcelLocalDateConverter; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import java.time.LocalDate; + + +/** + * @author msh + * @version 1.0 + * @date 2023/2/13 17:05 + */ +@Data +@HeadRowHeight(20) +@ColumnWidth(20) +@HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER) +@ContentStyle(verticalAlignment = VerticalAlignment.CENTER) +public class ExcelPersonnel { + + @ExcelProperty(value = "统一社会信用代码" ) + @ApiModelProperty(value = "统一社会信用代码") + private String socialCreditCode; + + + @ExcelProperty("姓名") + @ApiModelProperty(value = "姓名") + private String userName; + + + @ExcelProperty("企业名称") + @ApiModelProperty(value = "企业名称") + private String companyName; + + + @ExcelProperty("性别") + @ApiModelProperty(value = "性别") + private String gender; + + + @ExcelProperty(value = "出生日期" , converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "出生日期") + private LocalDate birthday; + + + @ExcelProperty("身份证号") + @ApiModelProperty(value = "身份证号") + private String numberId; + + + @ExcelProperty("民族") + @ApiModelProperty(value = "民族") + private String nation; + + + @ExcelProperty("政治面貌") + @ApiModelProperty(value = "政治面貌") + private String politicsStatus; + + + @ExcelProperty("学历") + @ApiModelProperty(value = "学历") + private String education; + + + @ExcelProperty("是否应届毕业生") + @ApiModelProperty(value = "是否应届毕业生") + private String freshGraduate; + + + @ExcelProperty("毕业院校") + @ApiModelProperty(value = "毕业院校") + private String academy; + + + @ExcelProperty("专业") + @ApiModelProperty(value = "专业") + private String specialty; + + + @ExcelProperty("录用方式") + @ApiModelProperty(value = "录用方式") + private String hireType; + + + @ExcelProperty("执业资格证书") + @ApiModelProperty(value = "执业资格证书") + private String qualification; + + + @ExcelProperty("专业技术职称") + @ApiModelProperty(value = "专业技术职称") + private String jobTitle; + + + @ExcelProperty("所在部门") + @ApiModelProperty(value = "所在部门") + private String presentDept; + + + @ExcelProperty("岗位职务") + @ApiModelProperty(value = "岗位职务") + private String position; + + + @ExcelProperty("合同形式") + @ApiModelProperty(value = "合同形式") + private String contractModality; + + + @ExcelProperty("人员类型") + @ApiModelProperty(value = "人员类型") + private String personnelType; + + + @ExcelProperty("工作状态") + @ApiModelProperty(value = "工作状态") + private String workState; + + + @ExcelProperty("人员性质") + @ApiModelProperty(value = "人员性质") + private String personnelCharacter; + + + @ExcelProperty("年薪") + @ApiModelProperty(value = "年薪") + private Integer annualSalary; + + + @ExcelProperty(value = "入职时间" , converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "入职时间") + private LocalDate hireDate; + + + @ExcelProperty(value = "退休时间", converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "退休时间") + private LocalDate retirementTime; + + + @ExcelProperty(value ="离职时间",converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "离职时间") + private LocalDate resignationTime; + + + @ExcelProperty(value = "退休返聘开始时间",converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "退休返聘开始时间") + private LocalDate txfpStartTime; + + + @ExcelProperty(value = "退休返聘结束时间",converter = EasyExcelLocalDateConverter.class) + @ApiModelProperty(value = "退休返聘结束时间") + private LocalDate txfpEndTime; + + + @ExcelProperty("人员招聘单号") + @ApiModelProperty(value = "人员招聘单号") + private String recruitNumber; + + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注") + private String remark; + + + @ExcelProperty("初审意见") + @ApiModelProperty(value = "初审意见") + private String firstTrialRemark; + + + @ExcelProperty("终审意见") + @ApiModelProperty(value = "终审意见") + private String finalTrialRemark; + + + @ExcelProperty("变更标志") + @ApiModelProperty(value = "变更标志") + private String alterationSign; + + + @ExcelProperty("单据状态") + @ApiModelProperty(value = "单据状态") + private String receipts; + + +} diff --git a/src/main/java/com/ydool/staff/excel/PersonnelExportVO.java b/src/main/java/com/ydool/staff/excel/PersonnelExportVO.java new file mode 100644 index 0000000..c887d93 --- /dev/null +++ b/src/main/java/com/ydool/staff/excel/PersonnelExportVO.java @@ -0,0 +1,150 @@ +package com.ydool.staff.excel; + + +import com.alibaba.excel.annotation.ExcelProperty; +import com.ydool.common.converter.EasyExcelLocalDateConverter; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PersonnelExportVO { + + @ExcelProperty(value = "统一社会信用代码" ) + private String socialCreditCode; + + + @ExcelProperty("姓名") + private String userName; + + + @ExcelProperty("企业名称") + private String companyName; + + + @ExcelProperty("性别") + private String gender; + + + @ExcelProperty(value = "出生日期" , converter = EasyExcelLocalDateConverter.class) + private LocalDate birthday; + + + @ExcelProperty("身份证号") + private String numberId; + + + @ExcelProperty("民族") + private String nation; + + + @ExcelProperty("政治面貌") + private String politicsStatus; + + + @ExcelProperty("学历") + private String education; + + + @ExcelProperty("是否应届毕业生") + private String freshGraduate; + + + @ExcelProperty("毕业院校") + private String academy; + + + @ExcelProperty("专业") + private String specialty; + + + @ExcelProperty("录用方式") + private String hireType; + + + @ExcelProperty("执业资格证书") + private String qualification; + + + @ExcelProperty("专业技术职称") + private String jobTitle; + + + @ExcelProperty("所在部门") + private String presentDept; + + + @ExcelProperty("岗位职务") + private String position; + + + @ExcelProperty("合同形式") + private String contractModality; + + + @ExcelProperty("人员类型") + private String personnelType; + + + @ExcelProperty("工作状态") + private String workState; + + + @ExcelProperty("人员性质") + private String personnelCharacter; + + + @ExcelProperty("年薪") + private Integer annualSalary; + + + @ExcelProperty(value = "入职时间" , converter = EasyExcelLocalDateConverter.class) + private LocalDate hireDate; + + + @ExcelProperty(value = "退休时间", converter = EasyExcelLocalDateConverter.class) + private LocalDate retirementTime; + + + @ExcelProperty(value ="离职时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate resignationTime; + + + @ExcelProperty(value = "退休返聘开始时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate txfpStartTime; + + + @ExcelProperty(value = "退休返聘结束时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate txfpEndTime; + + + @ExcelProperty("人员招聘单号") + private String recruitNumber; + + + @ExcelProperty("备注") + private String remark; + + + @ExcelProperty("初审意见") + private String firstTrialRemark; + + + @ExcelProperty("终审意见") + private String finalTrialRemark; + + + @ExcelProperty("变更标志") + private String alterationSign; + + + @ExcelProperty("单据状态") + private String receipts; + + + +} diff --git a/src/main/java/com/ydool/staff/excel/PersonnelFailMsgVO.java b/src/main/java/com/ydool/staff/excel/PersonnelFailMsgVO.java new file mode 100644 index 0000000..fb334a7 --- /dev/null +++ b/src/main/java/com/ydool/staff/excel/PersonnelFailMsgVO.java @@ -0,0 +1,154 @@ +package com.ydool.staff.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.ydool.common.converter.EasyExcelLocalDateConverter; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; + +/** + * @author msh + * @version 1.0 + * @date 2023/2/14 11:55 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PersonnelFailMsgVO { + + @ExcelProperty("统一社会信用代码") + private String socialCreditCode; + + + @ExcelProperty("姓名") + private String userName; + + + @ExcelProperty("企业名称") + private String companyName; + + + @ExcelProperty("性别") + private String gender; + + + @ExcelProperty(value = "出生日期" , converter = EasyExcelLocalDateConverter.class) + private LocalDate birthday; + + @ExcelProperty("身份证号") + private String numberId; + + + @ExcelProperty("民族") + private String nation; + + + @ExcelProperty("政治面貌") + private String politicsStatus; + + + @ExcelProperty("学历") + private String education; + + + @ExcelProperty("是否应届毕业生") + private String freshGraduate; + + + @ExcelProperty("毕业院校") + private String academy; + + + @ExcelProperty("专业") + private String specialty; + + + @ExcelProperty("录用方式") + private String hireType; + + + @ExcelProperty("执业资格证书") + private String qualification; + + + @ExcelProperty("专业技术职称") + private String jobTitle; + + + @ExcelProperty("所在部门") + private String presentDept; + + + @ExcelProperty("岗位职务") + private String position; + + + @ExcelProperty("合同形式") + private String contractModality; + + + @ExcelProperty("人员类型") + private String personnelType; + + + @ExcelProperty("工作状态") + private String workState; + + + @ExcelProperty("人员性质") + private String personnelCharacter; + + + @ExcelProperty("年薪") + private Integer annualSalary; + + + @ExcelProperty(value = "入职时间" , converter = EasyExcelLocalDateConverter.class) + private LocalDate hireDate; + + + @ExcelProperty(value = "退休时间", converter = EasyExcelLocalDateConverter.class) + private LocalDate retirementTime; + + + @ExcelProperty(value ="离职时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate resignationTime; + + + @ExcelProperty(value = "退休返聘开始时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate txfpStartTime; + + + @ExcelProperty(value = "退休返聘结束时间",converter = EasyExcelLocalDateConverter.class) + private LocalDate txfpEndTime; + + + @ExcelProperty("人员招聘单号") + private String recruitNumber; + + + @ExcelProperty("备注") + private String remark; + + + @ExcelProperty("初审意见") + private String firstTrialRemark; + + + @ExcelProperty("终审意见") + private String finalTrialRemark; + + + @ExcelProperty("变更标志") + private String alterationSign; + + + + @ExcelProperty("单据状态") + private String receipts; + + @ExcelProperty(value = "结果") + private String failMsg; +} diff --git a/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java b/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java new file mode 100644 index 0000000..dae282d --- /dev/null +++ b/src/main/java/com/ydool/staff/mapper/PersonnelIndicatorsMapper.java @@ -0,0 +1,18 @@ +package com.ydool.staff.mapper; + +import com.ydool.staff.entity.PersonnelIndicators; +import com.github.yulichang.base.MPJBaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * 人员指标申报 Mapper 接口 + *

+ * + * @author ljq + * @since 2023-02-10 + */ +@Mapper +public interface PersonnelIndicatorsMapper extends MPJBaseMapper { + +} diff --git a/src/main/java/com/ydool/staff/request/MechanismPartyOrganization.java b/src/main/java/com/ydool/staff/request/MechanismPartyOrganization.java new file mode 100644 index 0000000..ec0969b --- /dev/null +++ b/src/main/java/com/ydool/staff/request/MechanismPartyOrganization.java @@ -0,0 +1,26 @@ +package com.ydool.staff.request; + +import com.ydool.staff.entity.Mechanism; +import com.ydool.staff.entity.PartyOrganization; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author Zhuyy + * @ClassName MechanismPartyOrganization + * @Description TODO + * @date 2023/2/10 15:35 + * @Version 1.0 + */ +@Data +public class MechanismPartyOrganization implements Serializable { + + @ApiModelProperty(value = "内设机构信息") + private List mechanisms; + + @ApiModelProperty(value = "党组织信息") + private List partyOrganizations; +} diff --git a/src/main/java/com/ydool/staff/request/MechanismRequest.java b/src/main/java/com/ydool/staff/request/MechanismRequest.java index 4615a28..f3c05f7 100644 --- a/src/main/java/com/ydool/staff/request/MechanismRequest.java +++ b/src/main/java/com/ydool/staff/request/MechanismRequest.java @@ -1,7 +1,9 @@ package com.ydool.staff.request; +import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.entity.Attachment; import com.ydool.staff.entity.Mechanism; +import com.ydool.staff.entity.PartyOrganization; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,9 +15,9 @@ import java.util.List; @Data public class MechanismRequest implements Serializable { - @ApiModelProperty(value = "企业名称") - @NotBlank(message = "企业名称不能为空") - private String companyName; + @ApiModelProperty(value = "企业id") + @NotBlank(message = "企业id不能为空") + private String companyId; @ApiModelProperty(value = "信用代码") private String creditCode; @@ -24,9 +26,13 @@ public class MechanismRequest implements Serializable { private String remark; @ApiModelProperty(value = "附件列表") - private List attachments; + private List attachmentsDto; @ApiModelProperty(value = "机构信息") @NotEmpty(message = "机构信息不能为空") - private List mechments; + private List mechanism; + + @ApiModelProperty(value = "党组织信息") + @NotEmpty(message = "党组织信息不能为空") + private List partyOrganizations; } diff --git a/src/main/java/com/ydool/staff/request/OrganizationRequest.java b/src/main/java/com/ydool/staff/request/OrganizationRequest.java index a1c0f12..0540e46 100644 --- a/src/main/java/com/ydool/staff/request/OrganizationRequest.java +++ b/src/main/java/com/ydool/staff/request/OrganizationRequest.java @@ -1,40 +1,37 @@ package com.ydool.staff.request; -import com.ydool.staff.dto.AttachmentDto; -import com.ydool.staff.entity.Attachment; -import com.ydool.staff.entity.Mechanism; -import com.ydool.staff.entity.Organization; -import com.ydool.staff.entity.PartyOrganization; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.Valid; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.io.Serializable; -import java.util.List; @Data public class OrganizationRequest implements Serializable { - // @ApiModelProperty(value = "机构") - // private Organization organization; - @ApiModelProperty(value = "企业Id") private String companyId; @ApiModelProperty(value = "信用代码") private String creditCode; + @ApiModelProperty(value = "审批单号") + private String approvalNumber; + + @ApiModelProperty(value = "核定用工人数") + private String checkNumber; + + @ApiModelProperty(value = "在职人数") + private String activeStaff; + + @ApiModelProperty(value = "本次核定总人数") + private String thisApprovalNumber; + + @ApiModelProperty(value = "剩余指标人数") + private String residualNumber; + + @ApiModelProperty(value = "类型") + private String type; + @ApiModelProperty(value = "备注") private String remark; - - @ApiModelProperty(value = "附件列表") - private List attachments; - - @ApiModelProperty(value = "机构信息") - private List mechanismList; - - @ApiModelProperty(value = "党组织信息") - List partyList; } diff --git a/src/main/java/com/ydool/staff/request/OrganizationSearch.java b/src/main/java/com/ydool/staff/request/OrganizationSearch.java new file mode 100644 index 0000000..6ddfd5f --- /dev/null +++ b/src/main/java/com/ydool/staff/request/OrganizationSearch.java @@ -0,0 +1,28 @@ +package com.ydool.staff.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Author Zhuyy + * @ClassName OrganizationSearch + * @Description TODO + * @date 2023/2/13 16:16 + * @Version 1.0 + */ + +@Data +public class OrganizationSearch { + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "审批单号") + private String approvalNumber; + + @ApiModelProperty(value = "类型") + @NotBlank(message = "类型不能为空") + private String type; +} diff --git a/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java b/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java new file mode 100644 index 0000000..a737ce7 --- /dev/null +++ b/src/main/java/com/ydool/staff/request/PersonnelIndicatorsRequest.java @@ -0,0 +1,25 @@ +package com.ydool.staff.request; + +import com.ydool.staff.entity.PersonnelIndicators; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @Author Zhuyy + * @ClassName PersonnelIndicatorsRequest + * @Description TODO + * @date 2023/2/10 11:38 + * @Version 1.0 + */ +@Data +public class PersonnelIndicatorsRequest implements Serializable { + + @ApiModelProperty(value = "人员指标") + private OrganizationRequest organizationRequest; + + @ApiModelProperty(value = "人员指标申报") + private List personnelIndicators; +} diff --git a/src/main/java/com/ydool/staff/request/PersonnelRequest.java b/src/main/java/com/ydool/staff/request/PersonnelRequest.java index a5765a0..71b89b7 100644 --- a/src/main/java/com/ydool/staff/request/PersonnelRequest.java +++ b/src/main/java/com/ydool/staff/request/PersonnelRequest.java @@ -32,7 +32,7 @@ public class PersonnelRequest { @ApiModelProperty(value = "性别") @NotNull(message = "性别不能为空") - private Integer gender; + private String gender; @ApiModelProperty(value = "出生日期") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @@ -56,7 +56,7 @@ public class PersonnelRequest { @ApiModelProperty(value = "是否应届毕业生") @NotNull(message = "是否应届毕业生不能为空") - private Boolean freshGraduate; + private String freshGraduate; @ApiModelProperty(value = "毕业院校") @NotBlank(message = "毕业院校不能为空") diff --git a/src/main/java/com/ydool/staff/request/PersonnelUpdateRequest.java b/src/main/java/com/ydool/staff/request/PersonnelUpdateRequest.java index a7e4313..6552932 100644 --- a/src/main/java/com/ydool/staff/request/PersonnelUpdateRequest.java +++ b/src/main/java/com/ydool/staff/request/PersonnelUpdateRequest.java @@ -35,7 +35,7 @@ public class PersonnelUpdateRequest { @ApiModelProperty(value = "是否应届毕业生") @NotBlank(message = "是否应届毕业生不能为空") - private Integer freshGraduate; + private String freshGraduate; @ApiModelProperty(value = "毕业院校") @NotBlank(message = "毕业院校不能为空") diff --git a/src/main/java/com/ydool/staff/request/RecruitmentRequest.java b/src/main/java/com/ydool/staff/request/RecruitmentRequest.java index 732027c..6f1e3ff 100644 --- a/src/main/java/com/ydool/staff/request/RecruitmentRequest.java +++ b/src/main/java/com/ydool/staff/request/RecruitmentRequest.java @@ -1,31 +1,19 @@ package com.ydool.staff.request; +import com.ydool.staff.entity.Recruitment; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.List; @Data public class RecruitmentRequest implements Serializable { - @ApiModelProperty(value = "企业名称") - @NotBlank(message = "企业名称不能为空") - private String companyId; + @ApiModelProperty(value = "招聘登记") + private OrganizationRequest organizationRequest; - @ApiModelProperty(value = "部门") - @NotBlank(message = "部门不能为空") - private String deptId; + @ApiModelProperty(value = "人员招聘登记") + private List recruitments; - @ApiModelProperty(value = "岗位职务") - @NotBlank(message = "岗位职务不能为空") - private String position; - - @ApiModelProperty(value = "名额") - @NotNull(message = "名额不能为空") - private Integer places; - - @ApiModelProperty(value = "条件要求") - private String requirements; } diff --git a/src/main/java/com/ydool/staff/request/RecruitmentSearch.java b/src/main/java/com/ydool/staff/request/RecruitmentSearch.java new file mode 100644 index 0000000..250868c --- /dev/null +++ b/src/main/java/com/ydool/staff/request/RecruitmentSearch.java @@ -0,0 +1,22 @@ +package com.ydool.staff.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author Zhuyy + * @ClassName RecruitmentSearch + * @Description TODO + * @date 2023/2/10 13:11 + * @Version 1.0 + */ +@Data +public class RecruitmentSearch { + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "审批单号") + private String approvalNumber; + +} diff --git a/src/main/java/com/ydool/staff/service/IAttachmentService.java b/src/main/java/com/ydool/staff/service/IAttachmentService.java index d2dcb01..f8db0ca 100644 --- a/src/main/java/com/ydool/staff/service/IAttachmentService.java +++ b/src/main/java/com/ydool/staff/service/IAttachmentService.java @@ -26,6 +26,6 @@ public interface IAttachmentService { AjaxResult deleteFile(IdsRequest ids); - AjaxResult selectOrganizationFileList(Page page,String id,String type); + AjaxResult selectOrganizationFileList(Page page,String id,String type); } diff --git a/src/main/java/com/ydool/staff/service/IDirectorsSupervisorsService.java b/src/main/java/com/ydool/staff/service/IDirectorsSupervisorsService.java index c77f59c..910c47a 100644 --- a/src/main/java/com/ydool/staff/service/IDirectorsSupervisorsService.java +++ b/src/main/java/com/ydool/staff/service/IDirectorsSupervisorsService.java @@ -3,6 +3,7 @@ package com.ydool.staff.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.DirectorsSupervisorsDto; +import com.ydool.staff.entity.Attachment; import com.ydool.staff.entity.DirectorsSupervisors; import com.ydool.system.request.IdsRequest; @@ -25,5 +26,7 @@ public interface IDirectorsSupervisorsService { AjaxResult deleteDirectorsSupervisors(IdsRequest ids); AjaxResult selectDirectorsSupervisorsById(String id); + + AjaxResult selectDirectorsSupervisorsFile(Page page, String id); } diff --git a/src/main/java/com/ydool/staff/service/IMechanismService.java b/src/main/java/com/ydool/staff/service/IMechanismService.java index 0349f2a..3fc0da8 100644 --- a/src/main/java/com/ydool/staff/service/IMechanismService.java +++ b/src/main/java/com/ydool/staff/service/IMechanismService.java @@ -1,5 +1,6 @@ package com.ydool.staff.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.entity.Mechanism; import com.ydool.staff.request.MechanismRequest; @@ -30,6 +31,8 @@ public interface IMechanismService { */ AjaxResult deleteMechanism(IdsRequest id); - AjaxResult saveOrganizationMechanism(MechanismRequest mechanismRequest); + AjaxResult saveMechanismPartyOrganization(MechanismRequest mechanismRequest); + + AjaxResult selectCompanyNameByIdMechanismPartyOrganization(String id); } diff --git a/src/main/java/com/ydool/staff/service/IOrganizationService.java b/src/main/java/com/ydool/staff/service/IOrganizationService.java index f4c946d..db052eb 100644 --- a/src/main/java/com/ydool/staff/service/IOrganizationService.java +++ b/src/main/java/com/ydool/staff/service/IOrganizationService.java @@ -3,6 +3,7 @@ package com.ydool.staff.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.entity.Organization; +import com.ydool.staff.request.OrganizationSearch; import com.ydool.system.request.IdsRequest; /** @@ -15,14 +16,10 @@ import com.ydool.system.request.IdsRequest; */ public interface IOrganizationService { - AjaxResult selectOrganizationList(Page page, String companyName); + AjaxResult selectOrganizationList(Page page, OrganizationSearch organizationSearch); - AjaxResult selectOrganizationByMechanism(String id); AjaxResult deleteOrganization(IdsRequest id); - AjaxResult selectOrganizationByName(String companyName); - - AjaxResult selectOrganization(); } diff --git a/src/main/java/com/ydool/staff/service/IPersonnelIndicatorsService.java b/src/main/java/com/ydool/staff/service/IPersonnelIndicatorsService.java new file mode 100644 index 0000000..b42f4cd --- /dev/null +++ b/src/main/java/com/ydool/staff/service/IPersonnelIndicatorsService.java @@ -0,0 +1,21 @@ +package com.ydool.staff.service; + +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.request.PersonnelIndicatorsRequest; + +/** + *

+ * 人员指标申报 服务类 + *

+ * + * @author ljq + * @since 2023-02-10 + */ +public interface IPersonnelIndicatorsService { + + AjaxResult savePersonnelIndicators(PersonnelIndicatorsRequest personnelIndicatorsRequest); + + AjaxResult selectPersonnelIndicatorsById(String id); + +} + diff --git a/src/main/java/com/ydool/staff/service/IPersonnelService.java b/src/main/java/com/ydool/staff/service/IPersonnelService.java index 4a5f3c9..8f2a628 100644 --- a/src/main/java/com/ydool/staff/service/IPersonnelService.java +++ b/src/main/java/com/ydool/staff/service/IPersonnelService.java @@ -2,12 +2,15 @@ package com.ydool.staff.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.entity.Personnel; import com.ydool.staff.entity.SelectRequest; import com.ydool.staff.request.ChangeRequest; import com.ydool.staff.request.PersonnelDeleteRequest; import com.ydool.staff.request.PersonnelRequest; import com.ydool.staff.request.PersonnelUpdateRequest; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -56,5 +59,11 @@ public interface IPersonnelService { * @return */ AjaxResult updateChange(ChangeRequest request); + + void export(PersonnelDeleteRequest param,HttpServletResponse response); + + AjaxResult importPersonnel(MultipartFile excl); + + AjaxResult getEntityParam(); } diff --git a/src/main/java/com/ydool/staff/service/IRecruitmentService.java b/src/main/java/com/ydool/staff/service/IRecruitmentService.java index 175a0e7..f09811a 100644 --- a/src/main/java/com/ydool/staff/service/IRecruitmentService.java +++ b/src/main/java/com/ydool/staff/service/IRecruitmentService.java @@ -1,18 +1,16 @@ package com.ydool.staff.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.entity.Recruitment; import com.ydool.staff.request.RecruitmentRequest; +import com.ydool.staff.request.RecruitmentSearch; +import com.ydool.system.request.IdsRequest; import java.util.List; public interface IRecruitmentService { - /** - * 人员列表 - * @return - */ - AjaxResult recruitmentList(); - /** * 新增人员 * @param recruitmentRequest @@ -25,7 +23,7 @@ public interface IRecruitmentService { * @param id * @return */ - AjaxResult deleteRecruitment(String id); + AjaxResult deleteRecruitment(IdsRequest id); /** * 人员详情 @@ -34,10 +32,4 @@ public interface IRecruitmentService { */ AjaxResult selectRecruitmentById(String id); - /** - * 批量新增人员 - * @param recruitmentRequest - * @return - */ - AjaxResult recruitmentSaveBatch(List recruitmentRequest); } diff --git a/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java index 0d567e9..01a94de 100644 --- a/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/DirectorsSupervisorsServiceImpl.java @@ -2,6 +2,7 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -11,9 +12,11 @@ import com.ydool.common.data.dto.AjaxResult; import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.dto.DirectorsSupervisorsDto; import com.ydool.staff.entity.Attachment; +import com.ydool.staff.entity.CompanyName; import com.ydool.staff.entity.DirectorsSupervisors; import com.ydool.common.base.BaseService; import com.ydool.staff.mapper.AttachmentMapper; +import com.ydool.staff.mapper.CompanyNameMapper; import com.ydool.staff.mapper.DirectorsSupervisorsMapper; import com.ydool.staff.service.IDirectorsSupervisorsService; import com.ydool.system.request.IdsRequest; @@ -42,23 +45,31 @@ public class DirectorsSupervisorsServiceImpl extends BaseService page, DirectorsSupervisorsDto directorsSupervisorsDto) { LambdaQueryWrapper directorsSupervisorsLambdaQueryWrapper = new LambdaQueryWrapper<>(); directorsSupervisorsLambdaQueryWrapper.exists(StrUtil.isNotBlank(directorsSupervisorsDto.getCompanyName()), "select t2.id from t_lc_company_name t2 where t_lc_directors_supervisors.organization_id = t2.id and t2.company_name like '%" + directorsSupervisorsDto.getCompanyName() + "%'"); - directorsSupervisorsLambdaQueryWrapper.eq(StrUtil.isNotBlank(directorsSupervisorsDto.getUsername()), DirectorsSupervisors::getUsername, directorsSupervisorsDto.getUsername()); + directorsSupervisorsLambdaQueryWrapper.like(StrUtil.isNotBlank(directorsSupervisorsDto.getUsername()), DirectorsSupervisors::getUsername, directorsSupervisorsDto.getUsername()); directorsSupervisorsLambdaQueryWrapper.eq(StrUtil.isNotBlank(directorsSupervisorsDto.getDirectorsType()), DirectorsSupervisors::getDirectorsType, directorsSupervisorsDto.getDirectorsType()); directorsSupervisorsLambdaQueryWrapper.eq(StrUtil.isNotBlank(directorsSupervisorsDto.getPersonnelType()), DirectorsSupervisors::getPersonnelType, directorsSupervisorsDto.getPersonnelType()); directorsSupervisorsLambdaQueryWrapper.eq(StrUtil.isNotBlank(directorsSupervisorsDto.getPoliticsStatus()), DirectorsSupervisors::getPoliticsStatus, directorsSupervisorsDto.getPoliticsStatus()); directorsSupervisorsLambdaQueryWrapper.eq(StrUtil.isNotBlank(directorsSupervisorsDto.getPersonnelStatus()), DirectorsSupervisors::getPersonnelStatus, directorsSupervisorsDto.getPersonnelStatus()); Page directorsSupervisors = directorsSupervisorsMapper.selectPage(page, directorsSupervisorsLambdaQueryWrapper); + for (DirectorsSupervisors record : directorsSupervisors.getRecords()) { + record.setOrganizationId(companyNameMapper.selectById(record.getOrganizationId()).getCompanyName()); + } return AjaxResult.ok().data(directorsSupervisors); } @Override @Transactional(rollbackFor = Exception.class) public AjaxResult saveDirectorsSupervisors(DirectorsSupervisors directorsSupervisors) { + if (!IdcardUtil.isValidCard(directorsSupervisors.getIdentityCard())) { + return AjaxResult.fail().msg("身份证号格式不正确!"); + } List list = new ArrayList<>(); List attachmentList = directorsSupervisors.getAttachmentDtoList(); for (AttachmentDto attachment : attachmentList) { @@ -109,5 +120,11 @@ public class DirectorsSupervisorsServiceImpl extends BaseService page, String id) { + Page attachmentPage = attachmentMapper.selectPage(page, new LambdaQueryWrapper().eq(Attachment::getTargetId, id).eq(Attachment::getTargetType, ArgsConst.DIRECTORS)); + return AjaxResult.ok().data(attachmentPage); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/ExchangeServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/ExchangeServiceImpl.java index 88c4aeb..c190efe 100644 --- a/src/main/java/com/ydool/staff/service/impl/ExchangeServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/ExchangeServiceImpl.java @@ -141,15 +141,29 @@ public class ExchangeServiceImpl extends BaseService i public AjaxResult selectById(String id) { Exchange exchange = getById(id); Personnel personnel = personnelMapper.selectById(exchange.getPersonnelId()); + if (ObjectUtil.isEmpty(personnel)){ + return AjaxResult.fail().msg("该用户不存在!"); + } CompanyName nowCompany = companyNameMapper.selectById(personnel.getCompanyName()); + if (ObjectUtil.isEmpty(nowCompany)){ + return AjaxResult.fail().msg("该用户不存在!"); + } Dept nowDept = deptMapper.selectById(personnel.getPresentDept()); + if (ObjectUtil.isEmpty(nowDept)){ + return AjaxResult.fail().msg("该用户不存在!"); + } CompanyName willCompany = companyNameMapper.selectById(exchange.getWillCompanyId()); + if (ObjectUtil.isEmpty(willCompany)){ + return AjaxResult.fail().msg("该用户不存在!"); + } Dept dept = deptMapper.selectById(exchange.getWillDept()); + if (ObjectUtil.isEmpty(dept)){ + return AjaxResult.fail().msg("该用户不存在!"); + } List attachments = attachmentMapper.selectList(new LambdaQueryWrapper().eq(Attachment::getTargetId, exchange.getId())); List attachmentDtos = BeanUtil.copyToList(attachments, AttachmentDto.class); - System.out.println("byId = " + exchange); ExchangeOneDto exchangeOneDto = BeanUtil.copyProperties(exchange, ExchangeOneDto.class); exchangeOneDto.setWillCompanyName(willCompany.getCompanyName()); exchangeOneDto.setWillCOde(willCompany.getCreditCode()); diff --git a/src/main/java/com/ydool/staff/service/impl/MechanismServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/MechanismServiceImpl.java index 3893ed2..c0e5c46 100644 --- a/src/main/java/com/ydool/staff/service/impl/MechanismServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/MechanismServiceImpl.java @@ -3,16 +3,23 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.entity.Attachment; import com.ydool.staff.entity.Mechanism; import com.ydool.common.base.BaseService; import com.ydool.staff.entity.Organization; +import com.ydool.staff.entity.PartyOrganization; import com.ydool.staff.mapper.AttachmentMapper; import com.ydool.staff.mapper.MechanismMapper; import com.ydool.staff.mapper.OrganizationMapper; +import com.ydool.staff.mapper.PartyOrganizationMapper; import com.ydool.staff.request.AttachmentRequest; +import com.ydool.staff.request.MechanismPartyOrganization; import com.ydool.staff.request.MechanismRequest; import com.ydool.staff.request.OrganizationRequest; import com.ydool.staff.service.IMechanismService; @@ -43,6 +50,8 @@ public class MechanismServiceImpl extends BaseService list = new ArrayList<>(); - List attachmentList = mechanismRequest.getAttachments(); - for (Attachment attachment : attachmentList) { + List attachmentList = mechanismRequest.getAttachmentsDto(); + for (AttachmentDto attachment : attachmentList) { list.add(attachment.getPath()); } - organization.setAttachment(StringUtils.join(list,",")); + organization.setAttachment(StringUtils.join(list, ",")); organization.setCreditCode(mechanismRequest.getCreditCode()); - organization.setCompanyId(mechanismRequest.getCompanyName()); + organization.setCompanyId(mechanismRequest.getCompanyId()); organization.setRemark(mechanismRequest.getRemark()); int i = organizationMapper.insert(organization); if (i > 0) { - List attachments = mechanismRequest.getAttachments(); - for (Attachment attachment : attachments) { + List attachments = mechanismRequest.getAttachmentsDto(); + List copyToList = BeanUtil.copyToList(attachments, Attachment.class); + for (Attachment attachment : copyToList) { attachment.setTargetId(organization.getId()); attachment.setTargetType(ArgsConst.ORGANIZATION); - attachment.setSize(attachment.getSize()); - attachment.setSuffix(attachment.getSuffix()); attachmentMapper.insert(attachment); } - List mechments = mechanismRequest.getMechments(); + // 机构信息 + List mechments = mechanismRequest.getMechanism(); for (Mechanism mechment : mechments) { - mechment.setOrganizationId(organization.getId()); + int mechanism = mechanismMapper.selectCount(new LambdaQueryWrapper().eq(Mechanism::getOrganizationId, organization.getId()).eq(Mechanism::getId, mechment.getId())); + if (mechanism == 0) { + mechment.setOrganizationId(organization.getId()); + mechanismMapper.insert(mechment); + } else { + mechanismMapper.delete(new LambdaQueryWrapper().eq(Mechanism::getOrganizationId, organization.getId())); + } } - boolean batch = saveBatch(mechments); - return batch ? AjaxResult.ok().msg("新增成功!") : AjaxResult.fail().msg("新增失败!"); + // 党组织信息 + List partyOrganizations = mechanismRequest.getPartyOrganizations(); + for (PartyOrganization partyOrganization : partyOrganizations) { + int party = partyOrganizationMapper.selectCount(new LambdaQueryWrapper().eq(PartyOrganization::getOrganizationId, organization.getId()).eq(PartyOrganization::getId, partyOrganization.getId())); + if (party == 0) { + partyOrganization.setOrganizationId(organization.getId()); + partyOrganizationMapper.insert(partyOrganization); + } else { + partyOrganizationMapper.delete(new LambdaQueryWrapper().eq(PartyOrganization::getOrganizationId, organization.getId())); + } + } + return AjaxResult.ok().msg("新增成功!"); } return AjaxResult.fail().msg("新增失败!"); } + + @Override + public AjaxResult selectCompanyNameByIdMechanismPartyOrganization(String id) { + if (StrUtil.isBlank(id)) { + return AjaxResult.fail().msg("企业id不能为空!"); + } + MechanismPartyOrganization mechanismPartyOrganization = new MechanismPartyOrganization(); + List mechanism = mechanismMapper.selectList(new LambdaQueryWrapper().eq(Mechanism::getOrganizationId, id)); + List partyOrganizations = partyOrganizationMapper.selectList(new LambdaQueryWrapper().eq(PartyOrganization::getOrganizationId, id)); + mechanismPartyOrganization.setMechanisms(mechanism); + mechanismPartyOrganization.setPartyOrganizations(partyOrganizations); + return AjaxResult.ok().data(mechanismPartyOrganization); + } } diff --git a/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java index 6322c73..bdcf8ad 100644 --- a/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/OrganizationServiceImpl.java @@ -1,28 +1,21 @@ package com.ydool.staff.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; -import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.entity.*; import com.ydool.common.base.BaseService; import com.ydool.staff.mapper.*; -import com.ydool.staff.request.OrganizationRequest; +import com.ydool.staff.request.OrganizationSearch; import com.ydool.staff.service.IOrganizationService; import com.ydool.system.mapper.UserMapper; import com.ydool.system.request.IdsRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.thymeleaf.util.StringUtils; -import javax.validation.constraints.NotEmpty; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -40,49 +33,24 @@ public class OrganizationServiceImpl extends BaseService page, String companyName) { + public AjaxResult selectOrganizationList(Page page, OrganizationSearch organizationSearch) { LambdaQueryWrapper organizationLambdaQueryWrapper = new LambdaQueryWrapper<>(); - organizationLambdaQueryWrapper.exists(StrUtil.isNotBlank(companyName), "select t2.id from t_lc_company_name t2 where t_lc_organization.company_id = t2.id and t2.company_name like '%" + companyName + "%'"); + organizationLambdaQueryWrapper.exists(StrUtil.isNotBlank(organizationSearch.getCompanyName()), "select t2.id from t_lc_company_name t2 where t_lc_organization.company_id = t2.id and t2.company_name like '%" + organizationSearch.getCompanyName() + "%'"); + organizationLambdaQueryWrapper.eq(StrUtil.isNotBlank(organizationSearch.getApprovalNumber()), Organization::getApprovalNumber, organizationSearch.getApprovalNumber()); + organizationLambdaQueryWrapper.eq(Organization::getType, organizationSearch.getType()); Page selectPage = organizationMapper.selectPage(page, organizationLambdaQueryWrapper); for (Organization record : selectPage.getRecords()) { record.setUpdatedName(userMapper.selectById(record.getUpdatedId()).getUserName()); - record.setCompanyName(companyNameMapper.selectById(record.getCompanyId()).getCompanyName()); + record.setCompanyId(companyNameMapper.selectById(record.getCompanyId()).getCompanyName()); } return AjaxResult.ok().data(selectPage); } - @Override - public AjaxResult selectOrganizationByMechanism(String id) { - Organization organization = organizationMapper.selectById(id); - if (ObjectUtil.isNull(organization)) { - return AjaxResult.fail().msg("未找到相关信息!"); - } else { - List mechanismList = mechanismMapper.selectList(new LambdaQueryWrapper().eq(Mechanism::getOrganizationId, organization.getId())); - List attachmentList = attachmentMapper.selectList(new LambdaQueryWrapper().eq(Attachment::getTargetId, organization.getId()).eq(Attachment::getTargetType, ArgsConst.ORGANIZATION)); - List partyOrganizationList = partyOrganizationMapper.selectList(new LambdaQueryWrapper()); - List toList = BeanUtil.copyToList(attachmentList, AttachmentDto.class); - OrganizationRequest organizationRequest = new OrganizationRequest(); - organizationRequest.setRemark(organization.getRemark()); - organizationRequest.setCreditCode(organization.getCreditCode()); - organizationRequest.setCompanyId(companyNameMapper.selectById(organization.getCompanyId()).getCompanyName()); - organizationRequest.setAttachments(toList); - organizationRequest.setPartyList(partyOrganizationList); - organizationRequest.setMechanismList(mechanismList); - return AjaxResult.ok().data(organizationRequest); - } - } - @Override @Transactional(rollbackFor = Exception.class) public AjaxResult deleteOrganization(IdsRequest id) { @@ -94,15 +62,5 @@ public class OrganizationServiceImpl extends BaseService 0 ? AjaxResult.ok().msg("删除成功!") : AjaxResult.fail().msg("删除失败!"); } } - - @Override - public AjaxResult selectOrganizationByName(String companyName) { - return AjaxResult.ok().data(companyNameMapper.selectOne(new LambdaQueryWrapper().eq(CompanyName::getId, companyName))); - } - - @Override - public AjaxResult selectOrganization() { - return AjaxResult.ok().data(organizationMapper.selectList(null)); - } } diff --git a/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java new file mode 100644 index 0000000..75feab1 --- /dev/null +++ b/src/main/java/com/ydool/staff/service/impl/PersonnelIndicatorsServiceImpl.java @@ -0,0 +1,67 @@ +package com.ydool.staff.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.PersonnelIndicatorsDto; +import com.ydool.staff.entity.*; +import com.ydool.common.base.BaseService; +import com.ydool.staff.entity.PersonnelIndicators; +import com.ydool.staff.mapper.OrganizationMapper; +import com.ydool.staff.mapper.PersonnelIndicatorsMapper; +import com.ydool.staff.request.OrganizationRequest; +import com.ydool.staff.request.PersonnelIndicatorsRequest; +import com.ydool.staff.service.IPersonnelIndicatorsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + *

+ * 人员指标申报 服务类 + *

+ * + * @author ljq + * @since 2023-02-10 + */ +@Service +public class PersonnelIndicatorsServiceImpl extends BaseService implements IPersonnelIndicatorsService { + + @Autowired + PersonnelIndicatorsMapper personnelIndicatorsMapper; + @Autowired + OrganizationMapper organizationMapper; + + @Override + public AjaxResult savePersonnelIndicators(PersonnelIndicatorsRequest personnelIndicatorsRequest) { + OrganizationRequest organizationRequest = personnelIndicatorsRequest.getOrganizationRequest(); + Organization organization = BeanUtil.copyProperties(organizationRequest, Organization.class); + organization.setType("personnel_indicators"); + int i = organizationMapper.insert(organization); + if (i > 0) { + List personnelIndicators = personnelIndicatorsRequest.getPersonnelIndicators(); + for (PersonnelIndicators personnelIndicator : personnelIndicators) { + personnelIndicator.setOrganizationId(organization.getId()); + } + boolean batch = saveBatch(personnelIndicators); + return batch ? AjaxResult.ok().msg("添加成功!") : AjaxResult.fail().msg("添加失败!"); + } + return AjaxResult.fail().msg("添加失败!"); + } + + @Override + public AjaxResult selectPersonnelIndicatorsById(String id) { + Organization companyName = organizationMapper.selectById(id); + if (ObjectUtil.isNull(companyName)) { + return AjaxResult.fail().msg("未找到相关信息!"); + } + List personnelIndicators = personnelIndicatorsMapper.selectList(new LambdaQueryWrapper().eq(PersonnelIndicators::getOrganizationId, companyName.getId())); + PersonnelIndicatorsDto recruitmentRequest = new PersonnelIndicatorsDto(); + recruitmentRequest.setOrganization(companyName); + recruitmentRequest.setPersonnelIndicators(personnelIndicators); + return AjaxResult.ok().data(recruitmentRequest); + } +} + diff --git a/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java index 8198fb7..5b9ef45 100644 --- a/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/PersonnelServiceImpl.java @@ -1,10 +1,16 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollStreamUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.core.util.URLUtil; +import cn.hutool.json.JSON; +import cn.hutool.json.JSONUtil; +import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,6 +18,10 @@ import com.ydool.common.base.BaseService; import com.ydool.common.constant.ArgsConst; import com.ydool.common.data.dto.AjaxResult; import com.ydool.common.utils.ColumnUtil; +import com.ydool.common.utils.EasyExcelAlibabaUtil; +import com.ydool.common.utils.ExcelMergeRowByRowUtil; +import com.ydool.common.utils.ExcelUtil; +import com.ydool.common.utils.HttpServletUtil; import com.ydool.staff.dto.AttachmentDto; import com.ydool.staff.dto.PersonnelByExchangeDto; import com.ydool.staff.dto.PersonnelDto; @@ -19,12 +29,13 @@ import com.ydool.staff.dto.PersonnelUpdateDto; import com.ydool.staff.entity.Alteration; import com.ydool.staff.entity.Attachment; import com.ydool.staff.entity.CompanyName; -import com.ydool.staff.entity.Organization; import com.ydool.staff.entity.Personnel; import com.ydool.staff.entity.SelectRequest; +import com.ydool.staff.excel.ExcelPersonnel; +import com.ydool.staff.excel.PersonnelExportVO; +import com.ydool.staff.excel.PersonnelFailMsgVO; import com.ydool.staff.mapper.AlterationMapper; import com.ydool.staff.mapper.CompanyNameMapper; -import com.ydool.staff.mapper.OrganizationMapper; import com.ydool.staff.mapper.PersonnelMapper; import com.ydool.staff.request.AttachmentRequest; import com.ydool.staff.request.ChangeRequest; @@ -37,15 +48,20 @@ import com.ydool.system.entity.Dept; import com.ydool.system.mapper.DeptMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; import org.thymeleaf.util.StringUtils; import javax.annotation.Resource; -import javax.validation.constraints.Null; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; import java.lang.reflect.Field; -import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -84,8 +100,12 @@ public class PersonnelServiceImpl extends BaseService list = list(); + List personnelList = BeanUtil.copyToList(list, ExcelPersonnel.class); + + for (ExcelPersonnel excelPersonnel : personnelList) { + CompanyName companyName = companyNameMapper.selectById(excelPersonnel.getCompanyName()); + Dept dept = deptMapper.selectById(excelPersonnel.getPresentDept()); + if (ObjectUtil.isNotEmpty(companyName)){ + excelPersonnel.setCompanyName(companyName.getCompanyName()); + } + if (ObjectUtil.isNotEmpty(dept)){ + excelPersonnel.setPresentDept(dept.getName()); + } + excelPersonnel.setGender("1".equals(excelPersonnel.getGender())?"男":"女"); + excelPersonnel.setFreshGraduate("1".equals(excelPersonnel.getFreshGraduate())?"是":"否"); + + } + + String fileName = "企业人员申报" + System.currentTimeMillis() + ".xlsx"; + Set includeColumnFiledNames = new HashSet<>(); + for (String s : param.getIds()) { + includeColumnFiledNames.add(s); + } + //导出 + EasyExcelAlibabaUtil.exportDownload(response, ExcelPersonnel.class, personnelList, fileName,includeColumnFiledNames); + } + + @Override + public AjaxResult importPersonnel(MultipartFile excl) { +//判断文件类型 + String reg = ".+(.xlsx)$"; + String suffix = FileUtil.getSuffix(excl.getOriginalFilename()); + if (!Pattern.matches(reg, excl.getOriginalFilename())) + return AjaxResult.fail("必须上传后缀为" + suffix + "的文件"); + + System.out.println("准备导入通讯录" + excl); + + if (!"企业人员申报模板.xlsx".equals(excl.getOriginalFilename())) + return AjaxResult.fail("必须上传 企业人员申报模板.xlsx 文件"); + + //导出数据 + List failList = new ArrayList<>(); + //保存数据 +// List employeesList = new ArrayList(); + if (!excl.isEmpty()) { + List personnelExportVOS = EasyExcelAlibabaUtil.excelToList(excl, + PersonnelExportVO.class); + JSON json = JSONUtil.parseObj(personnelExportVOS); + System.out.println("导入人员信息:" + json + personnelExportVOS); + System.out.println("导入企业人员申报表:" + personnelExportVOS.size() + "条"); + if (CollectionUtil.isEmpty(personnelExportVOS)){ + return AjaxResult.fail("模板必须要有数据"); + } + for (PersonnelExportVO personnelExportVO : personnelExportVOS) { + System.out.println("通讯录信息" + personnelExportVO); + //校验通讯录信息 + PersonnelFailMsgVO failMsgVO = checkPersonnelExportVO(personnelExportVO); + //错误数据 不保存 + if (StrUtil.isNotBlank(failMsgVO.getFailMsg())) { + failList.add(failMsgVO); + } else { + //转义 + Personnel personnel = interpretPersonnelExportVO(personnelExportVO); + //保存 + failMsgVO.setFailMsg(failMsgVO.getFailMsg() + (save(personnel) ? "导入成功" : "导入失败")); + failList.add(failMsgVO); + + } + } + //保存 +// if (CollectionUtil.isNotEmpty(employeesList)) { +// saveBatch(employeesList); +// } + + + } + +// String fileName="通讯录导入结果.xlsx";//文件名称 +// String urlPath = System.getProperty("user.dir") + File.separator + "upload"; //文件存放路径 +// String FileNamePath = urlPath + File.separator + fileName; +// FileOutputStream fis=new FileOutputStream(FileNamePath); +// OutputStreamWriter out = new OutputStreamWriter(fis,"UTF-8"); + //导出导入结果 + String download = EasyExcelAlibabaUtil.download(PersonnelFailMsgVO.class, failList, "通讯录导入结果"); + return AjaxResult.ok().data(download).msg("导入完成"); + } + + @Override + public AjaxResult getEntityParam() { + Field[] declaredFields = ExcelPersonnel.class.getDeclaredFields(); + List list = new ArrayList<>(); + for (Field declaredField : declaredFields) { + list.add(declaredField.getName()); + } + return AjaxResult.ok().data(list); + } + + public PersonnelFailMsgVO checkPersonnelExportVO(PersonnelExportVO personnelExportVO) { + PersonnelFailMsgVO failMsgVO = BeanUtil.copyProperties(personnelExportVO, PersonnelFailMsgVO.class); + failMsgVO.setFailMsg(""); + //联系人姓名不能为空 + if (StrUtil.isBlank(personnelExportVO.getUserName())) { + failMsgVO.setFailMsg(failMsgVO.getFailMsg() + " 姓名不能为空 "); + } + //校验性别 + if (!"男".equals(personnelExportVO.getGender()) && !"女".equals(personnelExportVO.getGender())) { + failMsgVO.setFailMsg(failMsgVO.getFailMsg() + " 请输入正确性别,男或女 "); + } + //校验性别 + if (!"是".equals(personnelExportVO.getFreshGraduate()) && !"否".equals(personnelExportVO.getGender())) { + failMsgVO.setFailMsg(failMsgVO.getFailMsg() + " 请输入正确选项,是或否 "); + } + /* //加密 + String phone = employeesExportVO.getPhone();*/ + /*int count = count(new LambdaQueryWrapper() + .eq(Personnel::getNumberId, personnelExportVO.getNumberId())); + if (count > 0) { + failMsgVO.setFailMsg(failMsgVO.getFailMsg() + " 身份证已存在 "); + }*/ + return failMsgVO; + } + + public Personnel interpretPersonnelExportVO(PersonnelExportVO personnelExportVO) { + Personnel personnel = BeanUtil.copyProperties(personnelExportVO, Personnel.class); + /*//手机号码加密 + employees.setPhone(CodecUtils.encrypt(employees.getPhone()));*/ + //组织编码转组织Id + /* GrapeDept dept = deptService.getOne(new LambdaQueryWrapper().eq(GrapeDept::getCode, + employeesExportVO.getDeptCode()));*/ + //性别转换 + //personnel.setGender("男".equals(personnelExportVO.getGender()) ? 1 : 0); + personnel.setFreshGraduate("是".equals(personnelExportVO.getFreshGraduate()) ? "1" : "0"); + return personnel; + } + } diff --git a/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java index 9652b68..bea224b 100644 --- a/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java +++ b/src/main/java/com/ydool/staff/service/impl/RecruitmentServiceImpl.java @@ -1,18 +1,26 @@ package com.ydool.staff.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ydool.common.data.dto.AjaxResult; +import com.ydool.staff.dto.RecruitmentDto; +import com.ydool.staff.entity.Organization; import com.ydool.staff.entity.Recruitment; import com.ydool.common.base.BaseService; import com.ydool.staff.mapper.CompanyNameMapper; +import com.ydool.staff.mapper.OrganizationMapper; import com.ydool.staff.mapper.RecruitmentMapper; +import com.ydool.staff.request.OrganizationRequest; import com.ydool.staff.request.RecruitmentRequest; import com.ydool.staff.service.IRecruitmentService; +import com.ydool.system.request.IdsRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; import java.util.List; /** @@ -30,42 +38,57 @@ public class RecruitmentServiceImpl extends BaseService 0 ? AjaxResult.ok().msg("添加成功!") : AjaxResult.fail().msg("添加失败!"); + OrganizationRequest organizationRequest = recruitmentRequest.getOrganizationRequest(); + Organization organization = BeanUtil.copyProperties(organizationRequest, Organization.class); + organization.setType("organization"); + int i = organizationMapper.insert(organization); + if (i > 0) { + List recruitments = recruitmentRequest.getRecruitments(); + for (Recruitment recruitment : recruitments) { + recruitment.setCompanyId(organization.getId()); + } + boolean batch = saveBatch(recruitments); + return batch ? AjaxResult.ok().msg("添加成功!") : AjaxResult.fail().msg("添加失败!"); + } else { + return AjaxResult.fail().msg("添加失败!"); + } } @Override @Transactional(rollbackFor = Exception.class) - public AjaxResult deleteRecruitment(String id) { - Recruitment recruitment = recruitmentMapper.selectById(id); - if (ObjectUtil.isNull(recruitment)) { - return AjaxResult.fail().msg("未找到相关信息!"); + public AjaxResult deleteRecruitment(IdsRequest ids) { + List asList = Arrays.asList(ids.getIds()); + if (CollectionUtil.isEmpty(asList)) { + return AjaxResult.fail().msg("Id不能为空!"); } else { - int i = recruitmentMapper.deleteById(recruitment.getId()); + int i = recruitmentMapper.deleteBatchIds(asList); return i > 0 ? AjaxResult.ok().msg("删除成功!") : AjaxResult.fail().msg("删除失败!"); } } @Override public AjaxResult selectRecruitmentById(String id) { - return AjaxResult.ok().data(recruitmentMapper.selectById(id)); + Organization recruitment = organizationMapper.selectById(id); + if (ObjectUtil.isNull(recruitment)) { + return AjaxResult.fail().msg("未找到相关信息!"); + } + List recruitments = recruitmentMapper.selectList(new LambdaQueryWrapper().eq(Recruitment::getCompanyId, recruitment.getId())); + RecruitmentDto recruitmentRequest = new RecruitmentDto(); + recruitmentRequest.setOrganization(recruitment); + recruitmentRequest.setRecruitments(recruitments); + return AjaxResult.ok().data(recruitmentRequest); } - @Override - @Transactional(rollbackFor = Exception.class) - public AjaxResult recruitmentSaveBatch(List recruitmentRequest) { - List recruitments = BeanUtil.copyToList(recruitmentRequest, Recruitment.class); - return AjaxResult.ok().data(saveBatch(recruitments)); - } }