diff --git a/src/main/java/com/ydool/common/constant/UrlConstant.java b/src/main/java/com/ydool/common/constant/UrlConstant.java
index fb3922d..7901f7d 100644
--- a/src/main/java/com/ydool/common/constant/UrlConstant.java
+++ b/src/main/java/com/ydool/common/constant/UrlConstant.java
@@ -17,6 +17,8 @@ public interface UrlConstant {
String ROLE = API + "/role";
+ String PERSON = API + "/person";
+
/**
* 重要说明:该值为项目生成后的缺省密钥
diff --git a/src/main/java/com/ydool/staff/controller/PersonnelController.java b/src/main/java/com/ydool/staff/controller/PersonnelController.java
new file mode 100644
index 0000000..869d773
--- /dev/null
+++ b/src/main/java/com/ydool/staff/controller/PersonnelController.java
@@ -0,0 +1,54 @@
+package com.ydool.staff.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import com.ydool.common.base.BaseController;
+import com.ydool.common.constant.UrlConstant;
+import com.ydool.common.data.dto.AjaxResult;
+import com.ydool.staff.dto.PersonnelDto;
+import com.ydool.staff.request.PersonnelDeleteRequest;
+import com.ydool.staff.request.PersonnelRequest;
+import com.ydool.staff.service.IPersonnelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author msh
+ * @version 1.0
+ * @date 2023/1/31 11:41
+ */
+@RestController
+@RequestMapping(UrlConstant.PERSON)
+@Api(tags = "人员", value = "人员")
+@ApiSupport(order = 6)
+public class PersonnelController extends BaseController {
+ @Autowired
+ private IPersonnelService personnelService;
+
+ @GetMapping(value = "personnelList")
+ @ApiOperation(value = "人员列表",response = PersonnelDto.class)
+ public AjaxResult personnelList(){
+ return personnelService.personnelList();
+ }
+
+ @PostMapping(value = "savePersonnel")
+ @ApiOperation(value = "新增人员申报",response = PersonnelRequest.class)
+ public AjaxResult savePersonnel(@Validated @RequestBody PersonnelRequest personnelRequest){
+ return personnelService.savePersonnel(personnelRequest);
+ }
+ @PostMapping(value = "deletePersonnel")
+ @ApiOperation(value = "删除/批量删除人员")
+ public AjaxResult deletePersonnel(@RequestBody PersonnelDeleteRequest personnelDeleteRequest){
+ return personnelService.deleteByIds(personnelDeleteRequest);
+ }
+
+}
diff --git a/src/main/java/com/ydool/staff/dto/PersonnelDto.java b/src/main/java/com/ydool/staff/dto/PersonnelDto.java
new file mode 100644
index 0000000..02de3a1
--- /dev/null
+++ b/src/main/java/com/ydool/staff/dto/PersonnelDto.java
@@ -0,0 +1,31 @@
+package com.ydool.staff.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author msh
+ * @version 1.0
+ * @date 2023/1/31 13:43
+ */
+@Data
+public class PersonnelDto {
+ @ApiModelProperty(value = "变更标志")
+ private String alterationSign;
+
+ @ApiModelProperty(value = "企业名称")
+ private String companyName;
+
+ @ApiModelProperty(value = "姓名")
+ private String name;
+
+ @ApiModelProperty(value = "身份证号")
+ private String numberId;
+
+ @ApiModelProperty(value = "所在部门")
+ private String presentDept;
+
+ @ApiModelProperty(value = "人员类型")
+ private String personnelType;
+
+}
diff --git a/src/main/java/com/ydool/staff/entity/Attachment.java b/src/main/java/com/ydool/staff/entity/Attachment.java
new file mode 100644
index 0000000..9b185b8
--- /dev/null
+++ b/src/main/java/com/ydool/staff/entity/Attachment.java
@@ -0,0 +1,42 @@
+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 msh
+ * @since 2023-01-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("t_sys_attachment")
+@ApiModel(value="Attachment对象", description="附件表")
+public class Attachment extends BaseEntity{
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "关联id")
+ private String targetId;
+
+ @ApiModelProperty(value = "附件类型")
+ private String targetType;
+
+ @ApiModelProperty(value = "附件名")
+ private String title;
+
+ @ApiModelProperty(value = "附件路径")
+ private String attachment;
+
+ @ApiModelProperty(value = "文件大小")
+ private String size;
+
+}
diff --git a/src/main/java/com/ydool/staff/entity/Personnel.java b/src/main/java/com/ydool/staff/entity/Personnel.java
index 974d488..5d3978e 100644
--- a/src/main/java/com/ydool/staff/entity/Personnel.java
+++ b/src/main/java/com/ydool/staff/entity/Personnel.java
@@ -34,7 +34,7 @@ public class Personnel extends BaseEntity {
private String socialCreditCode;
@ApiModelProperty(value = "姓名")
- private String username;
+ private String userName;
@ApiModelProperty(value = "企业名称")
private String companyName;
diff --git a/src/main/java/com/ydool/staff/mapper/AttachmentMapper.java b/src/main/java/com/ydool/staff/mapper/AttachmentMapper.java
new file mode 100644
index 0000000..e5449ae
--- /dev/null
+++ b/src/main/java/com/ydool/staff/mapper/AttachmentMapper.java
@@ -0,0 +1,18 @@
+package com.ydool.staff.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.ydool.staff.entity.Attachment;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ *
+ * 附件表 Mapper 接口
+ *
+ *
+ * @author msh
+ * @since 2023-01-30
+ */
+@Mapper
+public interface AttachmentMapper extends MPJBaseMapper {
+
+}
diff --git a/src/main/java/com/ydool/staff/request/AttachmentRequest.java b/src/main/java/com/ydool/staff/request/AttachmentRequest.java
new file mode 100644
index 0000000..85c99ac
--- /dev/null
+++ b/src/main/java/com/ydool/staff/request/AttachmentRequest.java
@@ -0,0 +1,25 @@
+package com.ydool.staff.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author msh
+ * @version 1.0
+ * @date 2023/1/31 16:15
+ */
+@Data
+public class AttachmentRequest {
+
+ @ApiModelProperty(value = "附件类型", required = true)
+ private String targetType;
+
+ @ApiModelProperty(value = "文件名", required = true)
+ private String name;
+
+ @ApiModelProperty(value = "路径", required = true)
+ private String path;
+
+ @ApiModelProperty(value = "大小", required = true)
+ private String size;
+}
diff --git a/src/main/java/com/ydool/staff/request/PersonnelDeleteRequest.java b/src/main/java/com/ydool/staff/request/PersonnelDeleteRequest.java
new file mode 100644
index 0000000..364089f
--- /dev/null
+++ b/src/main/java/com/ydool/staff/request/PersonnelDeleteRequest.java
@@ -0,0 +1,17 @@
+package com.ydool.staff.request;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author msh
+ * @version 1.0
+ * @date 2023/2/1 11:23
+ */
+@Data
+public class PersonnelDeleteRequest {
+ @ApiModelProperty(value = "id")
+ private List ids;
+}
diff --git a/src/main/java/com/ydool/staff/request/PersonnelRequest.java b/src/main/java/com/ydool/staff/request/PersonnelRequest.java
new file mode 100644
index 0000000..9ac41c6
--- /dev/null
+++ b/src/main/java/com/ydool/staff/request/PersonnelRequest.java
@@ -0,0 +1,144 @@
+package com.ydool.staff.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author msh
+ * @version 1.0
+ * @date 2023/1/31 15:23
+ */
+@Data
+public class PersonnelRequest {
+
+ @ApiModelProperty(value = "统一社会信用代码")
+ @NotBlank(message = "统一社会信用代码不能为空")
+ private String socialCreditCode;
+
+ @ApiModelProperty(value = "姓名")
+ @NotBlank(message = "姓名不能为空")
+ private String userName;
+
+ @ApiModelProperty(value = "企业名称")
+ @NotBlank(message = "企业名称不能为空")
+ private String companyName;
+
+ @ApiModelProperty(value = "性别")
+ @NotBlank(message = "性别不能为空")
+ private String gender;
+
+ @ApiModelProperty(value = "出生日期")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date birthday;
+
+ @ApiModelProperty(value = "身份证号")
+ @NotBlank(message = "身份证号不能为空")
+ private String numberId;
+
+ @ApiModelProperty(value = "民族")
+ @NotBlank(message = "民族不能为空")
+ private String nation;
+
+ @ApiModelProperty(value = "政治面貌")
+ @NotBlank(message = "政治面貌不能为空")
+ private String politicsStatus;
+
+ @ApiModelProperty(value = "学历")
+ @NotBlank(message = "学历不能为空")
+ private String education;
+
+ @ApiModelProperty(value = "是否应届毕业生")
+ @NotBlank(message = "是否应届毕业生不能为空")
+ private String freshGraduate;
+
+ @ApiModelProperty(value = "毕业院校")
+ @NotBlank(message = "毕业院校不能为空")
+ private String academy;
+
+ @ApiModelProperty(value = "专业")
+ @NotBlank(message = "专业不能为空")
+ private String specialty;
+
+ @ApiModelProperty(value = "录用方式")
+ @NotBlank(message = "录用方式不能为空")
+ private String hireType;
+
+ @ApiModelProperty(value = "执业资格")
+ @NotBlank(message = "执业资格不能为空")
+ private String qualification;
+
+ @ApiModelProperty(value = "专业技术职称")
+ @NotBlank(message = "专业技术职称不能为空")
+ private String jobTitle;
+
+ @ApiModelProperty(value = "所在部门")
+ @NotBlank(message = "所在部门不能为空")
+ private String presentDept;
+
+ @ApiModelProperty(value = "岗位职务")
+ @NotBlank(message = "岗位职务不能为空")
+ private String position;
+
+ @ApiModelProperty(value = "合同形式")
+ @NotBlank(message = "合同形式不能为空")
+ private String contractModality;
+
+ @ApiModelProperty(value = "人员类型")
+ @NotBlank(message = "人员类型不能为空")
+ private String personnelType;
+
+ @ApiModelProperty(value = "工作状态")
+ @NotBlank(message = "工作状态不能为空")
+ private String workState;
+
+ @ApiModelProperty(value = "人员性质")
+ @NotBlank(message = "人员性质不能为空")
+ private String personnelCharacter;
+
+ @ApiModelProperty(value = "年薪")
+ @NotNull(message = "年薪不能为空")
+ private BigDecimal annualSalary;
+
+ @ApiModelProperty(value = "入职时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date hiredate;
+
+ @ApiModelProperty(value = "退休时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date retirementTime;
+
+ @ApiModelProperty(value = "离职时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date resignationTime;
+
+ @ApiModelProperty(value = "退休返聘开始时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date txfpStartTime;
+
+ @ApiModelProperty(value = "退休返聘结束时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date txfpEndTime;
+
+ @ApiModelProperty(value = "人员招聘单号")
+ @NotBlank(message = "人员招聘单号不能为空")
+ private String recruitNumber;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+ @ApiModelProperty(value = "初审意见")
+ private String firstTrialRemark;
+
+ @ApiModelProperty(value = "终审意见")
+ private String finalTrialRemark;
+
+ @ApiModelProperty(value = "相关附件")
+ private List attachmentList;
+}
diff --git a/src/main/java/com/ydool/staff/service/IAttachmentService.java b/src/main/java/com/ydool/staff/service/IAttachmentService.java
new file mode 100644
index 0000000..375a43f
--- /dev/null
+++ b/src/main/java/com/ydool/staff/service/IAttachmentService.java
@@ -0,0 +1,17 @@
+package com.ydool.staff.service;
+
+import com.ydool.staff.entity.Attachment;
+
+/**
+ *
+ * 附件表 服务类
+ *
+ *
+ * @author msh
+ * @since 2023-01-30
+ */
+public interface IAttachmentService {
+
+ boolean savePersonnel(Attachment attachment);
+}
+
diff --git a/src/main/java/com/ydool/staff/service/IPersonnelService.java b/src/main/java/com/ydool/staff/service/IPersonnelService.java
index d4e96ac..f2be1c7 100644
--- a/src/main/java/com/ydool/staff/service/IPersonnelService.java
+++ b/src/main/java/com/ydool/staff/service/IPersonnelService.java
@@ -1,5 +1,11 @@
package com.ydool.staff.service;
+import com.ydool.common.data.dto.AjaxResult;
+import com.ydool.staff.request.PersonnelDeleteRequest;
+import com.ydool.staff.request.PersonnelRequest;
+
+import java.util.List;
+
/**
*
* 人员表 服务类
@@ -9,6 +15,15 @@ package com.ydool.staff.service;
* @since 2023-02-01
*/
public interface IPersonnelService {
+ /**
+ * 人员列表
+ * @return
+ */
+ AjaxResult personnelList();
+
+ AjaxResult savePersonnel(PersonnelRequest personnelRequest);
+
+ AjaxResult deleteByIds(PersonnelDeleteRequest personnelDeleteRequest);
}
diff --git a/src/main/java/com/ydool/staff/service/impl/AttachmentServiceImpl.java b/src/main/java/com/ydool/staff/service/impl/AttachmentServiceImpl.java
new file mode 100644
index 0000000..fbfcf22
--- /dev/null
+++ b/src/main/java/com/ydool/staff/service/impl/AttachmentServiceImpl.java
@@ -0,0 +1,26 @@
+package com.ydool.staff.service.impl;
+
+import com.ydool.common.base.BaseService;
+import com.ydool.staff.entity.Attachment;
+import com.ydool.staff.mapper.AttachmentMapper;
+import com.ydool.staff.service.IAttachmentService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 附件表 服务类
+ *
+ *
+ * @author msh
+ * @since 2023-01-30
+ */
+@Service
+public class AttachmentServiceImpl extends BaseService implements IAttachmentService {
+
+
+ @Override
+ public boolean savePersonnel(Attachment entity) {
+ return save(entity);
+ }
+}
+
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 dd1ba9a..a221bfa 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,24 @@
package com.ydool.staff.service.impl;
+import cn.hutool.core.bean.BeanUtil;
+import com.ydool.common.data.dto.AjaxResult;
+import com.ydool.staff.dto.PersonnelDto;
+import com.ydool.staff.entity.Attachment;
import com.ydool.staff.entity.Personnel;
import com.ydool.common.base.BaseService;
import com.ydool.staff.mapper.PersonnelMapper;
+import com.ydool.staff.request.AttachmentRequest;
+import com.ydool.staff.request.PersonnelDeleteRequest;
+import com.ydool.staff.request.PersonnelRequest;
+import com.ydool.staff.service.IAttachmentService;
import com.ydool.staff.service.IPersonnelService;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.thymeleaf.util.StringUtils;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
/**
*
@@ -16,6 +30,67 @@ import org.springframework.stereotype.Service;
*/
@Service
public class PersonnelServiceImpl extends BaseService implements IPersonnelService {
+ @Resource
+ private IAttachmentService attachmentService;
+ /**
+ * 人员列表
+ * @return
+ */
+ @Override
+ public AjaxResult personnelList() {
+ List list = list();
+ List personnelDtos = new ArrayList<>();
+ for (Personnel personnel : list) {
+ PersonnelDto dto = new PersonnelDto();
+ dto.setAlterationSign(personnel.getAlterationSign());
+ dto.setCompanyName(personnel.getCompanyName());
+ dto.setName(personnel.getUserName());
+ dto.setNumberId(personnel.getNumberId());
+ dto.setPresentDept(personnel.getPresentDept());
+ dto.setPersonnelType(personnel.getPersonnelType());
+ personnelDtos.add(dto);
+ }
+ return AjaxResult.ok().data(personnelDtos);
+ }
+
+ /**
+ * 新增人员申报
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult savePersonnel(PersonnelRequest personnelRequest) {
+ List attachmentList = personnelRequest.getAttachmentList();
+ Personnel personnel = BeanUtil.copyProperties(personnelRequest, Personnel.class);
+ ArrayList s = new ArrayList<>();
+ for (AttachmentRequest request : attachmentList) {
+ s.add(request.getPath());
+ personnel.setAttachmentFile(StringUtils.join(s,','));
+ }
+ boolean save = save(personnel);
+ List list = personnelRequest.getAttachmentList();
+ for (AttachmentRequest request : list) {
+ Attachment attachment = new Attachment();
+ attachment.setTargetType(request.getTargetType());
+ attachment.setSize(request.getSize());
+ attachment.setAttachment(request.getPath());
+ attachment.setTitle(request.getName());
+ attachment.setTargetId(personnel.getId());
+ attachmentService.savePersonnel(attachment);
+ }
+ return save ? AjaxResult.ok().msg("保存成功!"):AjaxResult.fail().msg("保存失败!");
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult deleteByIds(PersonnelDeleteRequest personnelDeleteRequest) {
+ List ids = personnelDeleteRequest.getIds();
+ boolean flag = false;
+ for (String id : ids) {
+ flag = removeById(id);
+ }
+ return flag?AjaxResult.ok().msg("删除成功!"):AjaxResult.fail().msg("删除失败!");
+ }
}