소스 검색

HR端求职管理

yanliming 4 년 전
부모
커밋
626a9a6954

+ 21 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dto/JobUserDTO.java

@@ -0,0 +1,21 @@
+package com.jpsoft.employment.modules.job.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class JobUserDTO {
+
+    @ApiModelProperty(value = "入职企业名称")
+    private String companyName;
+
+    @ApiModelProperty(value = "入职人员姓名")
+    private String realName;
+
+    @ApiModelProperty(value = "身份证号")
+    private String idCard;
+
+    @ApiModelProperty(value = "入职工作地")
+    private String area;
+
+}

+ 55 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dto/ResumeDeliverDTO.java

@@ -0,0 +1,55 @@
+package com.jpsoft.employment.modules.job.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jpsoft.employment.modules.sys.entity.DataDictionary;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ResumeDeliverDTO {
+
+    @ApiModelProperty(value = "ID")
+    private String id;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "应聘职位")
+    private String position;
+
+    @ApiModelProperty(value = "求职人数")
+    private Integer positionNumber;
+
+    @ApiModelProperty(value = "期望薪资")
+    private String dreamMoney;
+
+    @ApiModelProperty(value = "工作经验")
+    private String workExp;
+
+    @ApiModelProperty(value = "学历")
+    private String education;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
+    @ApiModelProperty(value = "出生日期")
+    private Date birthday;
+
+    @ApiModelProperty(value = "工作状态(是否上班")
+    private String jobStatus;
+
+    @ApiModelProperty(value = "工作状态(是否上班")
+    private String jobStatusN;
+
+    @ApiModelProperty(value = "沟通状态")
+    private String chatStatus;
+
+    @ApiModelProperty(value = "沟通状态")
+    private String chatStatusN;
+
+
+    private List<DataDictionary> chatStatusList;
+}

+ 17 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dto/ResumeDeliverRecordDTO.java

@@ -0,0 +1,17 @@
+package com.jpsoft.employment.modules.job.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ResumeDeliverRecordDTO {
+
+    private String id;
+    private String chatType;
+    private Date chatDate;
+    private String chatTime;
+    private String remark;
+
+}

+ 2 - 0
common/src/main/java/com/jpsoft/employment/modules/job/entity/Resume.java

@@ -59,6 +59,8 @@ public class Resume {
 	@ApiModelProperty(value = "期望工作地点")
 	private String dreamAdd;
 
+	@DateTimeFormat(pattern="yyyy-MM-dd")
+	@JsonFormat(pattern = "yyyy-MM-dd",timezone ="GMT+8")
 	@ApiModelProperty(value = "出生日期")
 	private Date birthday;
 

+ 3 - 0
common/src/main/java/com/jpsoft/employment/modules/job/entity/ResumeDeliverRecord.java

@@ -22,6 +22,9 @@ public class ResumeDeliverRecord {
 	@ApiModelProperty(value = "创建人")
 	private String createBy;
 
+	@ApiModelProperty(value = "创建人")
+	private String createByN;
+
 	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
 	@ApiModelProperty(value = "创建时间")

+ 18 - 0
common/src/main/java/com/jpsoft/employment/modules/sys/entity/User.java

@@ -21,6 +21,8 @@ public class User {
 	private String updateBy;
 	private List<String> roles;
 	private String openId;
+	private String companyId;
+	private String companyName;
 
 		/**
 	 *获取用户编号
@@ -160,4 +162,20 @@ public class User {
 	public void setOpenId(String openId) {
 		this.openId = openId;
 	}
+
+	public String getCompanyId() {
+		return companyId;
+	}
+
+	public void setCompanyId(String companyId) {
+		this.companyId = companyId;
+	}
+
+	public String getCompanyName() {
+		return companyName;
+	}
+
+	public void setCompanyName(String companyName) {
+		this.companyName = companyName;
+	}
 }

+ 1 - 1
common/src/main/resources/mapper/base/Company.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
-<mapper namespace="com.jpsoft.employment.dao.CompanyDAO">
+<mapper namespace="com.jpsoft.employment.modules.base.dao.CompanyDAO">
 	<resultMap id="CompanyMap" type="com.jpsoft.employment.modules.base.entity.Company">
 		<id property="id" column="id_" />
 			<result property="name" column="name_" />

+ 9 - 9
common/src/main/resources/mapper/job/JobUser.xml

@@ -3,7 +3,7 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <!-- namespace必须指向DAO接口 -->
 <mapper namespace="com.jpsoft.employment.modules.job.dao.JobUserDAO">
-	<resultMap id="UserMap" type="com.jpsoft.employment.modules.job.entity.JobUser">
+	<resultMap id="JobUserMap" type="com.jpsoft.employment.modules.job.entity.JobUser">
 		<id property="id" column="id_" />
 			<result property="createBy" column="create_by" />
 			<result property="createTime" column="create_time" />
@@ -32,7 +32,7 @@
 	</selectKey>
 	-->
 	<![CDATA[
-		insert into job_user
+		insert into job_jobuser
 	    (id_,create_by,create_time,update_by,update_time,del_flag,user_name,password_,real_name,open_id,tel_,sex_,birthday_,address_,first_job_time,head_image_url,is_authentication,id_card,id_card_url,job_status)
 		values
 		(
@@ -60,10 +60,10 @@
 	]]>
 	</insert>
 	<delete id="delete" parameterType="string">
-		delete from job_user where id_=#{id,jdbcType=VARCHAR}
+		delete from job_jobuser where id_=#{id,jdbcType=VARCHAR}
 	</delete>
 	<update id="update" parameterType="com.jpsoft.employment.modules.job.entity.JobUser">
-		update job_user
+		update job_jobuser
 		<set>
 				<if test="createBy!=null">
 		create_by=#{createBy,jdbcType=VARCHAR},
@@ -125,19 +125,19 @@
 		</set>
 	where id_=#{id}
 	</update>
-	<select id="get" parameterType="string" resultMap="UserMap">
+	<select id="get" parameterType="string" resultMap="JobUserMap">
 		select 
-id_,create_by,create_time,update_by,update_time,del_flag,user_name,password_,real_name,open_id,tel_,sex_,birthday_,address_,first_job_time,head_image_url,is_authentication,id_card,id_card_url,job_status		from job_user where id_=#{0}
+id_,create_by,create_time,update_by,update_time,del_flag,user_name,password_,real_name,open_id,tel_,sex_,birthday_,address_,first_job_time,head_image_url,is_authentication,id_card,id_card_url,job_status		from job_jobuser where id_=#{0}
 	</select>
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from job_user where id_=#{0}
 	</select>
-	<select id="list" resultMap="UserMap">
+	<select id="list" resultMap="JobUserMap">
 		select * from job_user
 	</select>
-	<select id="search" parameterType="hashmap" resultMap="UserMap">
+	<select id="search" parameterType="hashmap" resultMap="JobUserMap">
 		<![CDATA[
-			select * from job_user
+			select * from job_jobuser
 		]]>
 		<where>
 			<if test="searchParams.id != null">

+ 7 - 3
common/src/main/resources/mapper/job/ResumeDeliver.xml

@@ -92,11 +92,15 @@ id_,create_by,create_time,update_by,update_time,del_flag,job_user_id,job_resume_
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="ResumeDeliverMap">
 		<![CDATA[
-			select * from job_resume_deliver
+			select a.* from job_resume_deliver a inner join job_jobuser b on a.job_user_id = b.id_
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			a.del_flag = false
+			<if test="searchParams.chatStatus != null">
+				and a.chat_status = #{searchParams.chatStatus}
+			</if>
+			<if test="searchParams.name != null">
+				and b.real_name like #{searchParams.name}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 3 - 2
common/src/main/resources/mapper/job/ResumeDeliverRecord.xml

@@ -85,8 +85,9 @@ id_,create_by,create_time,update_by,update_time,del_flag,resume_deliver_id,step_
 			select * from job_resume_deliver_record
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			del_flag = false
+			<if test="searchParams.resumeDeliverId!=null">
+				and resume_deliver_id = #{searchParams.resumeDeliverId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 6 - 1
common/src/main/resources/mapper/sys/User.xml

@@ -14,6 +14,7 @@
         <result property="createBy" column="create_by"/>
         <result property="updateBy" column="update_by"/>
         <result property="openId" column="open_id"/>
+        <result property="companyId" column="company_id"/>
     </resultMap>
     <insert id="insert" parameterType="com.jpsoft.employment.modules.sys.entity.User">
         <!--
@@ -24,7 +25,7 @@
         <![CDATA[
 		insert into sys_user
 	    (id_,user_name,password_,real_name,create_time,update_time,
-	    del_flag,create_by,update_by,open_id)
+	    del_flag,create_by,update_by,open_id,company_id)
 		values
 		(
             #{id,jdbcType=VARCHAR}
@@ -37,6 +38,7 @@
             ,#{createBy,jdbcType=VARCHAR}
             ,#{updateBy,jdbcType=VARCHAR}
             ,#{openId,jdbcType=VARCHAR}
+            ,#{companyId,jdbcType=VARCHAR}
 		)
 	]]>
     </insert>
@@ -73,6 +75,9 @@
             <if test="openId!=null">
                 open_id=#{openId,jdbcType=VARCHAR},
             </if>
+            <if test="companyId!=null">
+                company_id=#{companyId,jdbcType=VARCHAR},
+            </if>
         </set>
         where id_=#{id}
     </update>

+ 2 - 2
web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeController.java

@@ -143,8 +143,8 @@ public class ResumeController {
     }
 
     @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
             String id,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,

+ 512 - 22
web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverController.java

@@ -1,19 +1,37 @@
 package com.jpsoft.employment.modules.job.controller;
 
 import com.github.pagehelper.Page;
+import com.jpsoft.employment.config.OSSConfig;
+import com.jpsoft.employment.modules.base.entity.Company;
+import com.jpsoft.employment.modules.base.service.CompanyService;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
+import com.jpsoft.employment.modules.common.utils.OSSUtil;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
-import com.jpsoft.employment.modules.job.entity.ResumeDeliver;
-import com.jpsoft.employment.modules.job.service.ResumeDeliverService;
+import com.jpsoft.employment.modules.job.dto.JobUserDTO;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverDTO;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverRecordDTO;
+import com.jpsoft.employment.modules.job.entity.*;
+import com.jpsoft.employment.modules.job.service.*;
+import com.jpsoft.employment.modules.sys.entity.DataDictionary;
+import com.jpsoft.employment.modules.sys.entity.User;
+import com.jpsoft.employment.modules.sys.service.DataDictionaryService;
+import com.jpsoft.employment.modules.sys.service.UserService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -25,19 +43,138 @@ public class ResumeDeliverController {
     @Autowired
     private ResumeDeliverService resumeDeliverService;
 
+
+    @Autowired
+    private JobUserService jobUserService;
+
+    @Autowired
+    private RecruitmentService recruitmentService;
+
+    @Autowired
+    private ResumeService RsumeService;
+
+    @Autowired
+    private PositionCategoryService positionCategoryService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CompanyService companyService;
+
+    @Autowired
+    private ResumeDeliverRecordService resumeDeliverRecordService;
+
+    @Autowired
+    private OSSConfig ossConfig;
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
-    public MessageResult<ResumeDeliver> add(@ModelAttribute ResumeDeliver resumeDeliver){
-        MessageResult<ResumeDeliver> msgResult = new MessageResult<>();
+    public MessageResult<ResumeDeliverRecord> add(@RequestBody ResumeDeliverRecordDTO resumeDeliverRecordDTO,@RequestAttribute String subject){
+        MessageResult<ResumeDeliverRecord> msgResult = new MessageResult<>();
 
         try {
-            resumeDeliver.setId(UUID.randomUUID().toString());
+            ResumeDeliverRecord resumeDeliverRecord=new ResumeDeliverRecord();
+            resumeDeliverRecord.setId(UUID.randomUUID().toString());
+            resumeDeliverRecord.setCreateBy(subject);
+            Date now = new Date();
+
+            resumeDeliverRecord.setCreateTime(now);
+
+            resumeDeliverRecord.setDelFlag(false);
+            resumeDeliverRecord.setResumeDeliverId(resumeDeliverRecordDTO.getId());
+
+            String chatStatusN = dataDictionaryService.findNameByCatalogNameAndValue("沟通状态",resumeDeliverRecordDTO.getChatType());
+
+            resumeDeliverRecord.setStep("发送"+chatStatusN);
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+            String ChatDateStr = "";
+
 
-            int affectCount = resumeDeliverService.insert(resumeDeliver);
+            //邀请沟通
+            if(resumeDeliverRecordDTO.getChatType().equals("2")) {
+
+                String beginTime = "";
+                String endTime = "";
+
+                if (StringUtils.isNotEmpty(resumeDeliverRecordDTO.getChatTime())) {
+                    String[] ChatTimeArray = resumeDeliverRecordDTO.getChatTime().split(",");
+                    beginTime = ChatTimeArray[0];
+                    endTime = ChatTimeArray[1];
+                }
+
+                if (resumeDeliverRecordDTO.getChatDate() != null) {
+                    ChatDateStr = sdf.format(resumeDeliverRecordDTO.getChatDate());
+                }
+
+                resumeDeliverRecord.setRemark("沟通时间:" + ChatDateStr + " " + beginTime + "-" + endTime);
+            }
+            else if(resumeDeliverRecordDTO.getChatType().equals("3")){
+                //邀请面试
+                if (resumeDeliverRecordDTO.getChatDate() != null) {
+                    ChatDateStr = sdf.format(resumeDeliverRecordDTO.getChatDate());
+                }
+                resumeDeliverRecord.setRemark("面试时间:" + ChatDateStr + " " + resumeDeliverRecordDTO.getChatTime());
+            }
+            else if(resumeDeliverRecordDTO.getChatType().equals("4")){
+                //邀请入职
+                ResumeDeliver resumeDeliver = resumeDeliverService.get(resumeDeliverRecordDTO.getId());
+
+                if (resumeDeliver != null) {
+                    JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
+
+                    Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
+
+                    Company company = companyService.get(recruitment.getCompanyId());
+
+                    String entryPosition = "";
+                    String entryDepartment = "";
+
+                    if (StringUtils.isNotEmpty(resumeDeliverRecordDTO.getChatTime())) {
+                        String[] ChatTimeArray = resumeDeliverRecordDTO.getChatTime().split(",");
+                        entryPosition = ChatTimeArray[0];
+                        entryDepartment = ChatTimeArray[1];
+                    }
+
+                    resumeDeliverRecord.setRemark("录用人:"+jobUser.getRealName()+",身份证号:"+jobUser.getIdCard()+",入职公司:"+company.getName()+",入职岗位:"+entryPosition+",入职部门:"+entryDepartment+",工作地点:"+recruitment.getArea());
+                }
+            }
+            else if(resumeDeliverRecordDTO.getChatType().equals("6")){
+                //拒绝/不合适
+                resumeDeliverRecord.setRemark("拒绝理由:" + resumeDeliverRecordDTO.getRemark());
+            }
+
+            int affectCount = resumeDeliverRecordService.insert(resumeDeliverRecord);
 
             if (affectCount > 0) {
-                msgResult.setResult(true);
-                msgResult.setData(resumeDeliver);
+                ResumeDeliver resumeDeliver = resumeDeliverService.get(resumeDeliverRecordDTO.getId());
+
+                if(resumeDeliver!=null){
+                    resumeDeliver.setChatStatus(resumeDeliverRecordDTO.getChatType());
+                    resumeDeliver.setUpdateBy(subject);
+                    resumeDeliver.setUpdateTime(now);
+
+                    //更改沟通状态
+                    int count = resumeDeliverService.update(resumeDeliver);
+
+                    if(count>0){
+                        msgResult.setResult(true);
+                        msgResult.setData(resumeDeliverRecord);
+                    }
+                    else{
+                        msgResult.setResult(false);
+                        msgResult.setMessage("数据库添加失败");
+                    }
+                }
+                else{
+                    msgResult.setResult(false);
+                    msgResult.setMessage("数据库添加失败");
+                }
             } else {
                 msgResult.setResult(false);
                 msgResult.setMessage("数据库添加失败");
@@ -54,19 +191,76 @@ public class ResumeDeliverController {
     }
 
     @ApiOperation(value="获取信息")
-    @GetMapping("detail/{id}")
-    public MessageResult<ResumeDeliver> detail(@PathVariable("id") String id){
-        MessageResult<ResumeDeliver> msgResult = new MessageResult<>();
+    @GetMapping("edit/{id}")
+    public MessageResult<User> edit(@PathVariable("id") String id,@RequestAttribute String subject){
+        MessageResult<User> msgResult = new MessageResult<>();
 
         try {
+            User user = userService.get(subject);
+
+            if (user != null) {
+                Company company = companyService.get(user.getCompanyId());
+                if(company!=null){
+                    user.setCompanyName(company.getName());
+                }
+                msgResult.setResult(true);
+                msgResult.setData(user);
+            }
+            else{
+                msgResult.setResult(true);
+                msgResult.setMessage("用户未登录或登录过期,请重新登录!");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
+
+
+    @ApiOperation(value="获取录用人信息")
+    @GetMapping("edit3/{id}")
+    public MessageResult<JobUserDTO> edit3(@PathVariable("id") String id){
+        MessageResult<JobUserDTO> msgResult = new MessageResult<>();
+
+        try {
+
             ResumeDeliver resumeDeliver = resumeDeliverService.get(id);
 
             if (resumeDeliver != null) {
+                JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
+
+                Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
+
+
+                JobUserDTO dto = new JobUserDTO();
+
+                if(jobUser!=null) {
+                    dto.setRealName(jobUser.getRealName());
+                    dto.setIdCard(jobUser.getIdCard());
+                }
+
+                if(recruitment!=null){
+                    Company company = companyService.get(recruitment.getCompanyId());
+                    if(company!=null){
+                        dto.setCompanyName(company.getName());
+
+                    }
+                    dto.setArea(recruitment.getArea());
+
+                }
+
                 msgResult.setResult(true);
-                msgResult.setData(resumeDeliver);
-            } else {
-                msgResult.setResult(false);
-                msgResult.setMessage("数据库不存在该记录!");
+                msgResult.setData(dto);
+            }
+            else{
+                msgResult.setResult(true);
+                msgResult.setMessage("系统错误,投递的简历不存在!");
             }
         }
         catch(Exception ex){
@@ -143,9 +337,9 @@ public class ResumeDeliverController {
     }
 
     @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(
-            String id,
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String chatStatus,String name,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -159,19 +353,315 @@ public class ResumeDeliverController {
         Map<String,Object> searchParams = new HashMap<>();
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("a.create_time","desc"));
+
+        if (!"0".equals(chatStatus)) {
+            searchParams.put("chatStatus",chatStatus);
+        }
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+        if (StringUtils.isNotEmpty(name)) {
+            searchParams.put("name","%" + name + "%");
         }
 
 
+
         Page<ResumeDeliver> page = resumeDeliverService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
+        Page<ResumeDeliverDTO> pageDto = new Page<>();
+
+        for (ResumeDeliver resumeDeliver:page) {
+            ResumeDeliverDTO dto = new ResumeDeliverDTO();
+
+            dto.setId(resumeDeliver.getId());
+
+            JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
+
+            if(jobUser!=null){
+                dto.setName(jobUser.getRealName());
+                dto.setJobStatus(jobUser.getJobStatus());
+
+                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
+                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
+                    dto.setJobStatusN(jobStatusN);
+                }
+
+
+            }
+
+            Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
+
+            if(recruitment!=null){
+
+                dto.setPositionNumber(recruitment.getPositionNumber());
+
+                PositionCategory positionCategory = positionCategoryService.get(recruitment.getPosition());
+
+                dto.setPosition(positionCategory.getName());
+
+            }
+
+            Resume resume = RsumeService.get(resumeDeliver.getJobResumeId());
+
+            if(resume!=null){
+                dto.setDreamMoney(resume.getDreamMoney());
+                dto.setWorkExp(resume.getWorkExp());
+                dto.setEducation(resume.getEducation());
+                dto.setBirthday(resume.getBirthday());
+            }
+
+            dto.setChatStatus(resumeDeliver.getChatStatus());
+
+            if(StringUtils.isNotEmpty(resumeDeliver.getChatStatus())) {
+                String chatStatusN = dataDictionaryService.findNameByCatalogNameAndValue("沟通状态", resumeDeliver.getChatStatus());
+                dto.setChatStatusN(chatStatusN);
+
+                String curChatStatus = resumeDeliver.getChatStatus();
+
+                List<DataDictionary> dataDictionaryList = dataDictionaryService.findByCatalogName("沟通状态");
+
+                List<DataDictionary> newDataDictionaryList = new ArrayList<>();
+
+                for (DataDictionary dataDictionary:dataDictionaryList) {
+                    if(Integer.parseInt(dataDictionary.getValue())>Integer.parseInt(curChatStatus)&&!dataDictionary.getName().equals("接受入职")){
+                        newDataDictionaryList.add(dataDictionary);
+                    }
+                }
+
+                dto.setChatStatusList(newDataDictionaryList);
+
+            }
+
+            pageDto.add(dto);
+        }
+
+        pageDto.setPages(page.getPages());
+        pageDto.setTotal(page.getTotal());
+        pageDto.setPageNum(page.getPageNum());
+
 
         msgResult.setResult(true);
-        msgResult.setData(PojoUtils.pageWrapper(page));
+        msgResult.setData(PojoUtils.pageWrapper(pageDto));
 
         return msgResult;
     }
+
+
+
+    @ApiOperation(value = "导出")
+    @PostMapping(value = "exportXls")
+    public MessageResult<Object> exportXls(
+            String name,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="10000") int pageSize,
+            @RequestAttribute String subject) {
+
+        MessageResult<Object> messageResult = new MessageResult<>();
+
+        List<List<Map>> totalMapList = new ArrayList<>();
+
+        List<Map> mapList = getMap(subject, name, "0", pageIndex, pageSize);
+        List<Map> mapList2 = getMap(subject, name, "1", pageIndex, pageSize);
+        List<Map> mapList3 = getMap(subject, name, "2", pageIndex, pageSize);
+        List<Map> mapList4 = getMap(subject, name, "3", pageIndex, pageSize);
+        List<Map> mapList5 = getMap(subject, name, "4", pageIndex, pageSize);
+        List<Map> mapList6 = getMap(subject, name, "5", pageIndex, pageSize);
+        List<Map> mapList7 = getMap(subject, name, "6", pageIndex, pageSize);
+
+        totalMapList.add(mapList);
+        totalMapList.add(mapList2);
+        totalMapList.add(mapList3);
+        totalMapList.add(mapList4);
+        totalMapList.add(mapList5);
+        totalMapList.add(mapList6);
+        totalMapList.add(mapList7);
+
+        String downloadUrl = "";
+
+        Workbook workbook = new HSSFWorkbook();
+
+        for (int j=0;j<totalMapList.size();j++) {
+
+            Sheet sheet;
+
+            if(j==1){
+                sheet = workbook.createSheet("已投递");
+            }
+            else if(j==2){
+                sheet = workbook.createSheet("邀请沟通");
+            }
+            else if(j==3){
+                sheet = workbook.createSheet("邀请面试");
+            }
+            else if(j==4){
+                sheet = workbook.createSheet("邀请入职");
+            }
+            else if(j==5){
+                sheet = workbook.createSheet("接受入职");
+            }
+            else if(j==6){
+                sheet = workbook.createSheet("拒绝或者不合适");
+            }
+            else{
+                sheet = workbook.createSheet("全部");
+            }
+
+
+            //表头
+            Row rowTitle = sheet.createRow(0);
+
+            String[] titles = new String[]{"姓名","应聘岗位","招聘人数",
+                    "期望薪资","工作经历","学历","出生年月","工作状态","沟通状态"};
+
+            for (int i=0;i<titles.length;i++) {
+                Cell cell = rowTitle.createCell(i);
+                cell.setCellValue(titles[i]);
+            }
+
+            for (int i=0;i<totalMapList.get(j).size();i++){
+                Map<String,Object> map = totalMapList.get(j).get(i);
+
+                Row row = sheet.createRow(i+1);
+
+                int colIndex = 0;
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("name"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("position"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("positionNumber"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("dreamMoney"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("workExp"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("education"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("birthday"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("jobStatusN"),""));
+                row.createCell(colIndex++).setCellValue(com.jpsoft.employment.modules.common.utils.StringUtils.strValue(map.get("chatStatusN"),""));
+
+            }
+        }
+
+        ByteArrayOutputStream output = new ByteArrayOutputStream();
+
+        try {
+
+            workbook.write(output);
+
+            byte[] buffer = output.toByteArray();
+
+            ByteArrayInputStream input = new ByteArrayInputStream(buffer);
+
+            downloadUrl = OSSUtil.upload(ossConfig,"resumeDeliver","求职管理.xls",input);
+
+            messageResult.setData(downloadUrl);
+            messageResult.setResult(true);
+        }
+        catch (Exception ex){
+            logger.error(ex.getMessage(),ex);
+            messageResult.setResult(false);
+        }
+
+        return messageResult;
+
+    }
+
+    private List<Map> getMap(String subject,String name,String chatStatus,int pageIndex,int pageSize){
+
+        //当前用户ID
+        System.out.println(subject);
+
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("a.create_time","desc"));
+
+        if (!"0".equals(chatStatus)) {
+            searchParams.put("chatStatus",chatStatus);
+        }
+
+        if (StringUtils.isNotEmpty(name)) {
+            searchParams.put("name","%" + name + "%");
+        }
+
+
+
+        Page<ResumeDeliver> page = resumeDeliverService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        List<Map> mapList = new ArrayList<>();
+
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+
+        for (ResumeDeliver resumeDeliver:page) {
+
+            Map map = new HashMap();
+
+            map.put("id",resumeDeliver.getId());
+
+            JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
+
+            if(jobUser!=null){
+                map.put("name",jobUser.getRealName());
+                map.put("jobStatus",jobUser.getJobStatus());
+
+                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
+                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
+                    map.put("jobStatusN",jobStatusN);
+                }
+
+
+            }
+
+            Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
+
+            if(recruitment!=null){
+
+                map.put("positionNumber",recruitment.getPositionNumber());
+
+                PositionCategory positionCategory = positionCategoryService.get(recruitment.getPosition());
+
+                map.put("position",positionCategory.getName());
+            }
+
+            Resume resume = RsumeService.get(resumeDeliver.getJobResumeId());
+
+            if(resume!=null){
+                map.put("dreamMoney",resume.getDreamMoney());
+                map.put("workExp",resume.getWorkExp());
+                map.put("education",resume.getEducation());
+
+                String birthday="";
+
+                if(resume.getBirthday()!=null){
+                    birthday = sdf.format(resume.getBirthday());
+                }
+
+                map.put("birthday",birthday);
+            }
+
+            map.put("chatStatus",resumeDeliver.getChatStatus());
+
+            if(StringUtils.isNotEmpty(resumeDeliver.getChatStatus())) {
+                String chatStatusN = dataDictionaryService.findNameByCatalogNameAndValue("沟通状态", resumeDeliver.getChatStatus());
+
+                map.put("chatStatusN",chatStatusN);
+
+                String curChatStatus = resumeDeliver.getChatStatus();
+
+                List<DataDictionary> dataDictionaryList = dataDictionaryService.findByCatalogName("沟通状态");
+
+                List<DataDictionary> newDataDictionaryList = new ArrayList<>();
+
+                for (DataDictionary dataDictionary:dataDictionaryList) {
+                    if(Integer.parseInt(dataDictionary.getValue())>Integer.parseInt(curChatStatus)&&!dataDictionary.getName().equals("接受入职")){
+                        newDataDictionaryList.add(dataDictionary);
+                    }
+                }
+
+                map.put("chatStatusList",newDataDictionaryList);
+
+            }
+
+            mapList.add(map);
+        }
+
+
+        return mapList;
+    }
 }

+ 18 - 6
web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverRecordController.java

@@ -6,6 +6,8 @@ import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
 import com.jpsoft.employment.modules.job.entity.ResumeDeliverRecord;
 import com.jpsoft.employment.modules.job.service.ResumeDeliverRecordService;
+import com.jpsoft.employment.modules.sys.entity.User;
+import com.jpsoft.employment.modules.sys.service.UserService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -25,6 +27,9 @@ public class ResumeDeliverRecordController {
     @Autowired
     private ResumeDeliverRecordService resumeDeliverRecordService;
 
+    @Autowired
+    private UserService userService;
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
     public MessageResult<ResumeDeliverRecord> add(@ModelAttribute ResumeDeliverRecord resumeDeliverRecord){
@@ -143,9 +148,9 @@ public class ResumeDeliverRecordController {
     }
 
     @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(
-            String id,
+    @RequestMapping(value = "pageList",method = RequestMethod.POST)
+    public MessageResult<Map> pageList(
+            String resumeDeliverId,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -159,15 +164,22 @@ public class ResumeDeliverRecordController {
         Map<String,Object> searchParams = new HashMap<>();
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("id_","asc"));
+        sortList.add(new Sort("create_time","desc"));
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+        if (StringUtils.isNotEmpty(resumeDeliverId)) {
+            searchParams.put("resumeDeliverId",resumeDeliverId);
         }
 
 
         Page<ResumeDeliverRecord> page = resumeDeliverRecordService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
+        for (ResumeDeliverRecord resumeDeliverRecord:page) {
+            User user = userService.get(resumeDeliverRecord.getCreateBy());
+            if(user!=null) {
+                resumeDeliverRecord.setCreateByN(user.getRealName());
+            }
+        }
+
 
         msgResult.setResult(true);
         msgResult.setData(PojoUtils.pageWrapper(page));