Bladeren bron

Merge remote-tracking branch 'origin/master'

xiao547607 3 jaren geleden
bovenliggende
commit
ce255d10eb
21 gewijzigde bestanden met toevoegingen van 1108 en 73 verwijderingen
  1. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/dao/RecruitmentCollectionDAO.java
  2. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseDAO.java
  3. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseHrDAO.java
  4. 52 0
      common/src/main/java/com/jpsoft/employment/modules/job/dto/ResumeDeliverHrDTO.java
  5. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/service/RecruitmentCollectionService.java
  6. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseHrService.java
  7. 1 0
      common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseService.java
  8. 5 1
      common/src/main/java/com/jpsoft/employment/modules/job/service/impl/RecruitmentCollectionServiceImpl.java
  9. 6 0
      common/src/main/java/com/jpsoft/employment/modules/job/service/impl/UserBrowseHrServiceImpl.java
  10. 14 5
      common/src/main/java/com/jpsoft/employment/modules/job/service/impl/UserBrowseServiceImpl.java
  11. 26 3
      common/src/main/resources/mapper/job/JobUser.xml
  12. 29 3
      common/src/main/resources/mapper/job/RecruitmentCollection.xml
  13. 71 3
      common/src/main/resources/mapper/job/UserBrowse.xml
  14. 31 4
      common/src/main/resources/mapper/job/UserBrowseHr.xml
  15. 4 0
      web/src/main/java/com/jpsoft/employment/modules/base/controller/LabourServicesController.java
  16. 68 17
      web/src/main/java/com/jpsoft/employment/modules/job/controller/JobUserController.java
  17. 200 17
      web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentCollectionController.java
  18. 36 0
      web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentController.java
  19. 124 10
      web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverController.java
  20. 257 8
      web/src/main/java/com/jpsoft/employment/modules/job/controller/UserBrowseController.java
  21. 179 2
      web/src/main/java/com/jpsoft/employment/modules/job/controller/UserBrowseHrController.java

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dao/RecruitmentCollectionDAO.java

@@ -16,6 +16,7 @@ public interface RecruitmentCollectionDAO {
 	int exist(String id);
 	RecruitmentCollection get(String id);
 	int delete(String id);
+	RecruitmentCollection findByUserIdAndCompanyIdAndResumeId(@Param("userId")String userId,@Param("companyId")String companyId,@Param("resumeid")String resumeid);
 	List<RecruitmentCollection> list();
 	List<RecruitmentCollection> search(@Param("searchParams") Map<String,Object> searchParams, @Param("sortList")List<Sort> sortList);
     /**

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseDAO.java

@@ -18,6 +18,7 @@ public interface UserBrowseDAO {
 	int delete(String id);
 	List<UserBrowse> list();
 	List<UserBrowse> search(Map<String, Object> searchParams, List<Sort> sortList);
+	List<UserBrowse> searchHR(Map<String, Object> searchParams, List<Sort> sortList);
 	List<Recruitment> loadUserBrowses(Map<String, Object> searchParams, List<Sort> sortList);
 	int findNumberByRId(String recruitmentId);
 }

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dao/UserBrowseHrDAO.java

@@ -15,6 +15,7 @@ public interface UserBrowseHrDAO {
 	UserBrowseHr get(String id);
 	int delete(String id);
 	List<UserBrowseHr> list();
+	UserBrowseHr findBySysUserIdAndResumeId(@Param("sysUserId")String sysUserId,@Param("resumeId")String resumeId);
 	List<UserBrowseHr> search(@Param("searchParams") Map<String,Object> searchParams, @Param("sortList")List<Sort> sortList);
     /**
      * 统计hr浏览的简历数

+ 52 - 0
common/src/main/java/com/jpsoft/employment/modules/job/dto/ResumeDeliverHrDTO.java

@@ -0,0 +1,52 @@
+package com.jpsoft.employment.modules.job.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jpsoft.employment.modules.job.entity.ResumeWorkExperience;
+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 ResumeDeliverHrDTO {
+
+    @ApiModelProperty(value = "ID")
+    private String id;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "应聘职位")
+    private String positionName;
+
+    @ApiModelProperty(value = "头像")
+    private String headImageUrl;
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+
+    @ApiModelProperty(value = "性别")
+    private String sexN;
+
+    @ApiModelProperty(value = "年龄")
+    private Integer age;
+
+    @ApiModelProperty(value = "工作经验")
+    private String workExp;
+
+    @ApiModelProperty(value = "学历")
+    private String education;
+
+    @ApiModelProperty(value = "期望薪资")
+    private String dreamMoney;
+
+    @ApiModelProperty(value = "联系方式")
+    private String userTel;
+
+    @ApiModelProperty(value = "工作经历")
+    private List<ResumeWorkExperience> resumeWorkExperienceList;
+}

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/RecruitmentCollectionService.java

@@ -13,6 +13,7 @@ public interface RecruitmentCollectionService {
 	int insert(RecruitmentCollection model);
 	int update(RecruitmentCollection model);
 	int delete(String id);
+	RecruitmentCollection findByUserIdAndCompanyIdAndResumeId(String userId,String companyId,String resumeid);
 	List<RecruitmentCollection> list();
 	Page<RecruitmentCollection> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseHrService.java

@@ -13,6 +13,7 @@ public interface UserBrowseHrService {
 	int update(UserBrowseHr model);
 	int delete(String id);
 	List<UserBrowseHr> list();
+	UserBrowseHr findBySysUserIdAndResumeId(String sysUserId,String resumeId);
 	Page<UserBrowseHr> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 	/**
 	 * 统计hr浏览的简历数

+ 1 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/UserBrowseService.java

@@ -17,5 +17,6 @@ public interface UserBrowseService {
 	int findNumberByRId(String recruitmentId);
 	List<UserBrowse> list();
 	Page<UserBrowse> pageSearch(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
+	Page<UserBrowse> pageSearchHR(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 	Page<Recruitment> loadUserBrowses(Map<String, Object> searchParams, int pageNum, int pageSize, boolean count, List<Sort> sortList);
 }

+ 5 - 1
common/src/main/java/com/jpsoft/employment/modules/job/service/impl/RecruitmentCollectionServiceImpl.java

@@ -54,7 +54,11 @@ public class RecruitmentCollectionServiceImpl implements RecruitmentCollectionSe
 		
 		return count > 0 ? true : false;
 	}
-	
+
+	@Override
+	public RecruitmentCollection findByUserIdAndCompanyIdAndResumeId(String userId,String companyId,String resumeid){
+		return recruitmentCollectionDAO.findByUserIdAndCompanyIdAndResumeId(userId,companyId,resumeid);
+	}
 	@Override
 	public List<RecruitmentCollection> list() {
 		// TODO Auto-generated method stub

+ 6 - 0
common/src/main/java/com/jpsoft/employment/modules/job/service/impl/UserBrowseHrServiceImpl.java

@@ -58,6 +58,12 @@ public class UserBrowseHrServiceImpl implements UserBrowseHrService {
 		// TODO Auto-generated method stub
 		return userBrowseHrDAO.list();
 	}
+
+
+	@Override
+	public UserBrowseHr findBySysUserIdAndResumeId(String sysUserId,String resumeId){
+		return userBrowseHrDAO.findBySysUserIdAndResumeId(sysUserId,resumeId);
+	}
 		
 	@Override
 	public Page<UserBrowseHr> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {

+ 14 - 5
common/src/main/java/com/jpsoft/employment/modules/job/service/impl/UserBrowseServiceImpl.java

@@ -63,11 +63,20 @@ public class UserBrowseServiceImpl implements UserBrowseService {
 		
 	@Override
 	public Page<UserBrowse> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
-        Page<UserBrowse> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
-            userBrowseDAO.search(searchParams,sortList);
-        });
-        
-        return page;
+		Page<UserBrowse> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+			userBrowseDAO.search(searchParams,sortList);
+		});
+
+		return page;
+	}
+
+	@Override
+	public Page<UserBrowse> pageSearchHR(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+		Page<UserBrowse> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+			userBrowseDAO.searchHR(searchParams,sortList);
+		});
+
+		return page;
 	}
 
 	@Override

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

@@ -145,13 +145,36 @@
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="JobUserMap">
 		<![CDATA[
-			select * from job_jobuser
+			select * from job_jobuser a left join job_resume b on a.id_ = b.job_user_id
 		]]>
 		<where>
-			del_flag=false
+			a.del_flag=false and b.del_flag=false
 			<if test="searchParams.not_jobStatus != null">
 				<![CDATA[
-					and job_status <> #{searchParams.not_jobStatus}
+					and a.job_status <> #{searchParams.not_jobStatus}
+				]]>
+			</if>
+			<if test="searchParams.positionCategoryId != null">
+				and b.position_category_id = #{searchParams.positionCategoryId}
+			</if>
+			<if test="searchParams.name != null">
+				and a.real_name like #{searchParams.name}
+			</if>
+			<if test="searchParams.sex != null">
+				and b.sex_ = #{searchParams.sex}
+			</if>
+			<if test="searchParams.workExp != null">
+				and b.work_exp = #{searchParams.workExp}
+			</if>
+			<if test="searchParams.education != null">
+				and b.education_ = #{searchParams.education}
+			</if>
+			<if test="searchParams.dreamMoney != null">
+				and b.dream_money = #{searchParams.dreamMoney}
+			</if>
+			<if test="searchParams.curDate != null">
+				<![CDATA[
+					and a.birthday_ <= #{searchParams.curDate}
 				]]>
 			</if>
 		</where>

+ 29 - 3
common/src/main/resources/mapper/job/RecruitmentCollection.xml

@@ -92,6 +92,14 @@
 		</set>
 	where id_=#{id}
 	</update>
+	<select id="findByUserIdAndCompanyIdAndResumeId" parameterType="string" resultMap="RecruitmentCollectionMap">
+		select * from job_recruitment_collection
+		where del_flag=false
+		and sys_user_id=#{userId}
+		and company_id=#{companyId}
+		and resume_id=#{resumeid}
+		limit 1
+	</select>
 	<select id="get" parameterType="string" resultMap="RecruitmentCollectionMap">
 		select 
 id_,create_by,create_time,update_by,update_time,del_flag,company_id,sys_user_id,resume_id		from job_recruitment_collection where id_=#{0}
@@ -104,11 +112,29 @@ id_,create_by,create_time,update_by,update_time,del_flag,company_id,sys_user_id,
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="RecruitmentCollectionMap">
 		<![CDATA[
-			select * from job_recruitment_collection
+			select * from job_recruitment_collection a left join job_resume b on a.resume_id = b.id_
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			a.del_flag = false and b.del_flag = false
+			<if test="searchParams.sysUserId != null">
+				and a.sys_user_id = #{searchParams.sysUserId}
+			</if>
+			<if test="searchParams.positionCategoryId != null">
+				and b.position_category_id = #{searchParams.positionCategoryId}
+			</if>
+			<if test="searchParams.sex != null">
+				and b.sex_ = #{searchParams.sex}
+			</if>
+			<if test="searchParams.workExp != null">
+				and b.work_exp = #{searchParams.workExp}
+			</if>
+			<if test="searchParams.education != null">
+				and b.education_ = #{searchParams.education}
+			</if>
+			<if test="searchParams.curDate != null">
+				<![CDATA[
+					and a.birthday_ <= #{searchParams.curDate}
+				]]>
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 71 - 3
common/src/main/resources/mapper/job/UserBrowse.xml

@@ -107,11 +107,37 @@
 	</select>
 	<select id="search" parameterType="hashmap" resultMap="UserBrowseMap">
 		<![CDATA[
-			select * from job_user_browse
+			select * from job_user_browse a
+			left join job_resume b on a.job_user_id = b.job_user_id
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			a.del_flag = 0 and b.del_flag = 0
+			<if test="searchParams.positionCategoryId != null">
+				and b.position_category_id = #{searchParams.positionCategoryId}
+			</if>
+			<if test="searchParams.sex != null">
+				and b.sex_ = #{searchParams.sex}
+			</if>
+			<if test="searchParams.workExp != null">
+				and b.work_exp = #{searchParams.workExp}
+			</if>
+			<if test="searchParams.education != null">
+				and b.education_ = #{searchParams.education}
+			</if>
+			<if test="searchParams.curDate != null">
+				<![CDATA[
+					and a.birthday_ <= #{searchParams.curDate}
+				]]>
+			</if>
+			<if test="searchParams.beginTime != null">
+				<![CDATA[
+                  and a.create_time >= #{searchParams.beginTime}
+                ]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+                  and a.create_time <= #{searchParams.endTime}
+                ]]>
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">
@@ -119,6 +145,48 @@
 	 	</foreach>
 	</select>
 
+	<select id="searchHR" parameterType="hashmap" resultMap="UserBrowseMap">
+		<![CDATA[
+			select a.* from job_user_browse a
+			left join job_resume b on a.job_user_id = b.job_user_id
+		]]>
+		<where>
+			a.del_flag = 0 and b.del_flag = 0
+			<if test="searchParams.positionCategoryId != null">
+				and b.position_category_id = #{searchParams.positionCategoryId}
+			</if>
+			<if test="searchParams.sex != null">
+				and b.sex_ = #{searchParams.sex}
+			</if>
+			<if test="searchParams.workExp != null">
+				and b.work_exp = #{searchParams.workExp}
+			</if>
+			<if test="searchParams.education != null">
+				and b.education_ = #{searchParams.education}
+			</if>
+			<if test="searchParams.curDate != null">
+				<![CDATA[
+					and a.birthday_ <= #{searchParams.curDate}
+				]]>
+			</if>
+			<if test="searchParams.beginTime != null">
+				<![CDATA[
+                  and a.create_time >= #{searchParams.beginTime}
+                ]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+                  and a.create_time <= #{searchParams.endTime}
+                ]]>
+			</if>
+		</where>
+		GROUP BY a.job_user_id
+		<foreach item="sort" collection="sortList"  open="order by" separator=",">
+			${sort.name} ${sort.order}
+		</foreach>
+
+	</select>
+
 	<select id="loadUserBrowses" parameterType="hashmap" resultType="Map">
 		<![CDATA[
 			select

+ 31 - 4
common/src/main/resources/mapper/job/UserBrowseHr.xml

@@ -74,14 +74,41 @@
 	<select id="list" resultMap="UserBrowseHrMap">
 		select * from job_user_browse_hr
 	</select>
+	<select id="findBySysUserIdAndResumeId" resultMap="UserBrowseHrMap">
+		select * from job_user_browse_hr where del_flag = false and sys_user_id=#{sysUserId} and job_resume_id=#{resumeId} limit 1
+	</select>
 	<select id="search" parameterType="hashmap" resultMap="UserBrowseHrMap">
 		<![CDATA[
-			select * from job_user_browse_hr
+			select * from job_user_browse_hr a left join job_resume b on a.job_resume_id = b.id_
 		]]>
 		<where>
-			del_flag = 0
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			a.del_flag = 0 and b.del_flag = 0
+			<if test="searchParams.positionCategoryId != null">
+				and b.position_category_id = #{searchParams.positionCategoryId}
+			</if>
+			<if test="searchParams.sex != null">
+				and b.sex_ = #{searchParams.sex}
+			</if>
+			<if test="searchParams.workExp != null">
+				and b.work_exp = #{searchParams.workExp}
+			</if>
+			<if test="searchParams.education != null">
+				and b.education_ = #{searchParams.education}
+			</if>
+			<if test="searchParams.curDate != null">
+				<![CDATA[
+					and a.birthday_ <= #{searchParams.curDate}
+				]]>
+			</if>
+			<if test="searchParams.beginTime != null">
+				<![CDATA[
+                  and a.create_time >= #{searchParams.beginTime}
+                ]]>
+			</if>
+			<if test="searchParams.endTime != null">
+				<![CDATA[
+                  and a.create_time <= #{searchParams.endTime}
+                ]]>
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 4 - 0
web/src/main/java/com/jpsoft/employment/modules/base/controller/LabourServicesController.java

@@ -92,6 +92,10 @@ public class LabourServicesController {
             LabourServices labourServices = labourServicesService.get(id);
 
             if (labourServices != null) {
+                String typeN = dataDictionaryService.findNameByCatalogNameAndValue("劳务对接类型",labourServices.getType());
+
+                labourServices.setTypeN(typeN);
+
                 msgResult.setResult(true);
                 msgResult.setData(labourServices);
             } else {

+ 68 - 17
web/src/main/java/com/jpsoft/employment/modules/job/controller/JobUserController.java

@@ -6,14 +6,8 @@ import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
 import com.jpsoft.employment.modules.job.dto.TalentPoolDTO;
-import com.jpsoft.employment.modules.job.entity.JobUser;
-import com.jpsoft.employment.modules.job.entity.Resume;
-import com.jpsoft.employment.modules.job.entity.ResumeWorkExperience;
-import com.jpsoft.employment.modules.job.entity.WorkCategory;
-import com.jpsoft.employment.modules.job.service.JobUserService;
-import com.jpsoft.employment.modules.job.service.ResumeService;
-import com.jpsoft.employment.modules.job.service.ResumeWorkExperienceService;
-import com.jpsoft.employment.modules.job.service.WorkCategoryService;
+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.service.DataDictionaryService;
 import io.swagger.annotations.ApiOperation;
@@ -24,10 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @RestController
 @RequestMapping("/job/jobUser")
@@ -41,6 +33,9 @@ public class JobUserController {
     @Autowired
     private ResumeService resumeService;
 
+    @Autowired
+    private UserBrowseHrService userBrowseHrService;
+
     @Autowired
     private WorkCategoryService workCategoryService;
 
@@ -54,6 +49,8 @@ public class JobUserController {
     @ApiOperation(value="列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     public MessageResult<Map> pageList(
+            String positionCategoryId,String name,Integer age,String sex,
+            String workExp,String education,String dreamMoney,String createTimeRange,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -67,10 +64,50 @@ public class JobUserController {
         Map<String,Object> searchParams = new HashMap<>();
 
         List<Sort> sortList = new ArrayList<>();
-        sortList.add(new Sort("create_time","desc"));
+        sortList.add(new Sort("a.create_time","desc"));
 
         searchParams.put("not_jobStatus","1");
 
+        if(StringUtils.isNotEmpty(positionCategoryId)){
+            searchParams.put("positionCategoryId",positionCategoryId);
+        }
+
+        if(StringUtils.isNotEmpty(name)){
+            searchParams.put("name","%"+name+"%");
+        }
+
+        if(StringUtils.isNotEmpty(sex)){
+            if(!"100b3725-cb26-4d71-af3c-5b01c98f776b".equals(sex)) {
+                searchParams.put("sex", sex);
+            }
+        }
+
+        if(age!=null){
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+
+            Calendar cal = Calendar.getInstance();
+
+            cal.setTime(new Date());
+
+            cal.add(Calendar.YEAR,-age);
+
+            String curDate = sdf.format(cal.getTime());
+
+            searchParams.put("curDate",curDate);
+        }
+
+        if(StringUtils.isNotEmpty(workExp)){
+            searchParams.put("workExp",workExp);
+        }
+
+        if(StringUtils.isNotEmpty(education)){
+            searchParams.put("education",education);
+        }
+
+        if(StringUtils.isNotEmpty(dreamMoney)){
+            searchParams.put("dreamMoney",dreamMoney);
+        }
+
 
         Page<JobUser> page = jobUserService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
@@ -97,8 +134,8 @@ public class JobUserController {
             dto.setSex(jobUser.getSex());
 
             if(StringUtils.isNotEmpty(jobUser.getIdCard())){
-                int age = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
-                dto.setAge(age);
+                int ageN = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
+                dto.setAge(ageN);
             }
 
             Resume resume = resumeService.findByUserId(jobUser.getId());
@@ -166,7 +203,7 @@ public class JobUserController {
 
     @ApiOperation(value="获取信息")
     @GetMapping("edit/{id}")
-    public MessageResult<TalentPoolDTO> edit(@PathVariable("id") String id){
+    public MessageResult<TalentPoolDTO> edit(@PathVariable("id") String id,@RequestAttribute String subject){
         MessageResult<TalentPoolDTO> msgResult = new MessageResult<>();
 
         try {
@@ -241,6 +278,21 @@ public class JobUserController {
                     resumeWorkExperienceList = resumeWorkExperienceService.findByResumeId(resume.getId());
 
 
+                    UserBrowseHr userBrowseHr = userBrowseHrService.findBySysUserIdAndResumeId(subject,resume.getId());
+
+                    //HR未查看过该简历
+                    if(userBrowseHr==null){
+                        userBrowseHr = new UserBrowseHr();
+                        userBrowseHr.setJobResumeId(resume.getId());
+                        userBrowseHr.setSysUserId(subject);
+                        userBrowseHr.setCreateBy(subject);
+                        userBrowseHr.setCreateTime(new Date());
+                        userBrowseHr.setDelFlag(false);
+                        userBrowseHr.setId(UUID.randomUUID().toString());
+
+                        int count = userBrowseHrService.insert(userBrowseHr);
+                    }
+
                 }
 
                 dto.setWorkExpName(workExpName);
@@ -253,7 +305,6 @@ public class JobUserController {
                 dto.setResumeWorkExperienceList(resumeWorkExperienceList);
 
 
-
                 msgResult.setResult(true);
                 msgResult.setData(dto);
             } else {

+ 200 - 17
web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentCollectionController.java

@@ -1,11 +1,19 @@
 package com.jpsoft.employment.modules.job.controller;
 
+import cn.hutool.core.util.IdcardUtil;
 import com.github.pagehelper.Page;
+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.PojoUtils;
-import com.jpsoft.employment.modules.job.entity.RecruitmentCollection;
-import com.jpsoft.employment.modules.job.service.RecruitmentCollectionService;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverHrDTO;
+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.slf4j.Logger;
@@ -25,22 +33,73 @@ public class RecruitmentCollectionController {
     @Autowired
     private RecruitmentCollectionService recruitmentCollectionService;
 
+    @Autowired
+    private JobUserService jobUserService;
+
+    @Autowired
+    private ResumeService rsumeService;
+
+    @Autowired
+    private ResumeWorkExperienceService resumeWorkExperienceService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+    @Autowired
+    private WorkCategoryService workCategoryService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private CompanyService companyService;
+
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
-    public MessageResult<RecruitmentCollection> add(@ModelAttribute RecruitmentCollection recruitmentCollection){
+    public MessageResult<RecruitmentCollection> add(@RequestBody RecruitmentCollection recruitmentCollection,@RequestAttribute String subject){
         MessageResult<RecruitmentCollection> msgResult = new MessageResult<>();
 
         try {
-            recruitmentCollection.setId(UUID.randomUUID().toString());
+            User user = userService.get(subject);
 
-            int affectCount = recruitmentCollectionService.insert(recruitmentCollection);
+            if(user==null){
+                throw new Exception("用户未登录,请先登录!");
+            }
 
-            if (affectCount > 0) {
-                msgResult.setResult(true);
-                msgResult.setData(recruitmentCollection);
-            } else {
+            Company company = companyService.get(user.getCompanyId());
+
+            if(company==null){
+                throw new Exception("未查询到登录人员所在公司!");
+            }
+            String resumeId = recruitmentCollection.getResumeId();
+
+            RecruitmentCollection validateItem = recruitmentCollectionService.findByUserIdAndCompanyIdAndResumeId(user.getId(),company.getId(),resumeId);
+
+            if(validateItem==null) {
+
+
+                recruitmentCollection.setId(UUID.randomUUID().toString());
+                recruitmentCollection.setDelFlag(false);
+                recruitmentCollection.setCreateBy(subject);
+                recruitmentCollection.setCreateTime(new Date());
+                recruitmentCollection.setCompanyId(company.getId());
+                recruitmentCollection.setSysUserId(user.getId());
+
+
+                int affectCount = recruitmentCollectionService.insert(recruitmentCollection);
+
+                if (affectCount > 0) {
+                    msgResult.setResult(true);
+                    msgResult.setData(recruitmentCollection);
+                } else {
+                    msgResult.setResult(false);
+                    msgResult.setMessage("数据库添加失败");
+                }
+            }
+            else{
                 msgResult.setResult(false);
-                msgResult.setMessage("数据库添加失败");
+                msgResult.setMessage("该简历已收藏过了,不能重复收藏!");
             }
         }
         catch(Exception ex){
@@ -143,9 +202,10 @@ public class RecruitmentCollectionController {
     }
 
     @ApiOperation(value="列表")
-    @RequestMapping(value = "list",method = RequestMethod.POST)
-    public MessageResult<Map> list(
-            String id,
+    @RequestMapping(value = "pageListHR",method = RequestMethod.POST)
+    public MessageResult<Map> pageListHR(
+            String positionCategoryId,Integer age,String sex,
+            String workExp,String education,String createTimeRange,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -159,18 +219,141 @@ public class RecruitmentCollectionController {
         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"));
+
+        searchParams.put("sysUserId",subject);
+
+        if(StringUtils.isNotEmpty(positionCategoryId)){
+            searchParams.put("positionCategoryId",positionCategoryId);
+        }
+
+        if(StringUtils.isNotEmpty(sex)){
+            if(!"100b3725-cb26-4d71-af3c-5b01c98f776b".equals(sex)) {
+                searchParams.put("sex", sex);
+            }
+        }
+
+        if(age!=null){
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+
+            Calendar cal = Calendar.getInstance();
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+            cal.setTime(new Date());
+
+            cal.add(Calendar.YEAR,-age);
+
+            String curDate = sdf.format(cal.getTime());
+
+            searchParams.put("curDate",curDate);
+        }
+
+        if(StringUtils.isNotEmpty(workExp)){
+            searchParams.put("workExp",workExp);
+        }
+
+        if(StringUtils.isNotEmpty(education)){
+            searchParams.put("education",education);
+        }
+
+        if (StringUtils.isNotEmpty(createTimeRange)) {
+            String[] timeRangeArray = createTimeRange.split(",");
+            String beginTime = "";
+            String endTime = "";
+            beginTime+=" 00:00:00";
+            if (timeRangeArray.length == 1) {
+                beginTime = timeRangeArray[0];
+            } else if (timeRangeArray.length == 2) {
+                beginTime = timeRangeArray[0];
+                endTime = timeRangeArray[1];
+                beginTime+=" 00:00:00";
+                endTime+=" 23:59:59";
+            }
+
+            searchParams.put("beginTime", beginTime);
+            searchParams.put("endTime", endTime);
         }
 
 
         Page<RecruitmentCollection> page = recruitmentCollectionService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
 
+        Page<ResumeDeliverHrDTO> pageDto = new Page<>();
+
+        for (RecruitmentCollection recruitmentCollection:page) {
+
+            ResumeDeliverHrDTO dto = new ResumeDeliverHrDTO();
+
+            dto.setId(recruitmentCollection.getId());
+            dto.setCreateTime(recruitmentCollection.getCreateTime());
+
+            Resume resume = rsumeService.get(recruitmentCollection.getResumeId());
+
+            String workExpName="";
+            String dreamMoneyName="";
+            String educationName="";
+            String positionName = "";
+
+            if(resume!=null){
+                DataDictionary dataDictionary = dataDictionaryService.get(resume.getWorkExp());
+
+                if(dataDictionary!=null){
+                    workExpName = dataDictionary.getName();
+                }
+
+                DataDictionary dataDictionary1 = dataDictionaryService.get(resume.getDreamMoney());
+                if(dataDictionary1!=null){
+                    dreamMoneyName = dataDictionary1.getName();
+                }
+
+                DataDictionary dataDictionary2 = dataDictionaryService.get(resume.getEducation());
+
+                if(dataDictionary2!=null){
+                    educationName = dataDictionary2.getName();
+                }
+
+
+                List<ResumeWorkExperience> resumeWorkExperienceList = resumeWorkExperienceService.findByResumeId(resume.getId());
+
+                dto.setResumeWorkExperienceList(resumeWorkExperienceList);
+
+
+
+                JobUser jobUser = jobUserService.get(resume.getJobUserId());
+
+                if(jobUser!=null){
+                    dto.setHeadImageUrl(jobUser.getHeadImageUrl());
+                    dto.setName(jobUser.getRealName());
+                    dto.setSexN(jobUser.getSex());
+                    dto.setUserTel(jobUser.getTel());
+
+                    if(StringUtils.isNotEmpty(jobUser.getIdCard())){
+                        int ageN = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
+                        dto.setAge(ageN);
+                    }
+                }
+
+                WorkCategory workCategory = workCategoryService.get(resume.getPositionCategoryId());
+                if(workCategory!=null){
+                    positionName = workCategory.getName();
+                }
+
+            }
+
+            dto.setPositionName(positionName);
+            dto.setWorkExp(workExpName);
+            dto.setEducation(educationName);
+            dto.setDreamMoney(dreamMoneyName);
+
+
+            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;
     }

+ 36 - 0
web/src/main/java/com/jpsoft/employment/modules/job/controller/RecruitmentController.java

@@ -402,6 +402,42 @@ public class RecruitmentController {
         return msgResult;
     }
 
+
+    @ApiOperation(value="批量下架")
+    @PostMapping("batchDown")
+    public MessageResult<Integer> batchDown(@RequestBody List<String> idList,@RequestAttribute String subject){
+        MessageResult<Integer> msgResult = new MessageResult<>();
+
+        try {
+            int affectCount = 0;
+
+            for (String id : idList) {
+                Recruitment recruitment = recruitmentService.get(id);
+                recruitment.setStatus("0");
+                recruitment.setUpdateBy(subject);
+                recruitment.setUpdateTime(new Date());
+
+                affectCount += recruitmentService.update(recruitment);
+            }
+
+            if (affectCount > 0) {
+                msgResult.setResult(true);
+                msgResult.setData(affectCount);
+            } else {
+                msgResult.setResult(false);
+                msgResult.setMessage("下架失败");
+            }
+        }
+        catch(Exception ex){
+            logger.error(ex.getMessage(),ex);
+
+            msgResult.setResult(false);
+            msgResult.setMessage(ex.getMessage());
+        }
+
+        return msgResult;
+    }
+
     @ApiOperation(value="列表")
     @RequestMapping(value = "pageList",method = RequestMethod.POST)
     public MessageResult<Map> pageList(

+ 124 - 10
web/src/main/java/com/jpsoft/employment/modules/job/controller/ResumeDeliverController.java

@@ -1,5 +1,6 @@
 package com.jpsoft.employment.modules.job.controller;
 
+import cn.hutool.core.util.IdcardUtil;
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.config.OSSConfig;
 import com.jpsoft.employment.modules.base.entity.Company;
@@ -10,6 +11,7 @@ import com.jpsoft.employment.modules.common.utils.OSSUtil;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
 import com.jpsoft.employment.modules.job.dto.JobUserDTO;
 import com.jpsoft.employment.modules.job.dto.ResumeDeliverDTO;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverHrDTO;
 import com.jpsoft.employment.modules.job.dto.ResumeDeliverRecordDTO;
 import com.jpsoft.employment.modules.job.entity.*;
 import com.jpsoft.employment.modules.job.service.*;
@@ -51,7 +53,7 @@ public class ResumeDeliverController {
     private RecruitmentService recruitmentService;
 
     @Autowired
-    private ResumeService RsumeService;
+    private ResumeService rsumeService;
 
     @Autowired
     private WorkCategoryService workCategoryService;
@@ -71,6 +73,9 @@ public class ResumeDeliverController {
     @Autowired
     private OSSConfig ossConfig;
 
+    @Autowired
+    private ResumeWorkExperienceService resumeWorkExperienceService;
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
     public MessageResult<ResumeDeliverRecord> add(@RequestBody ResumeDeliverRecordDTO resumeDeliverRecordDTO,@RequestAttribute String subject){
@@ -378,6 +383,11 @@ public class ResumeDeliverController {
 
             if(jobUser!=null){
                 dto.setName(jobUser.getRealName());
+
+                if(StringUtils.isNotEmpty(jobUser.getJobStatus())) {
+                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", jobUser.getJobStatus());
+                    dto.setJobStatusN(jobStatusN);
+                }
             }
 
             Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
@@ -394,19 +404,15 @@ public class ResumeDeliverController {
 
             }
 
-            Resume resume = RsumeService.get(resumeDeliver.getJobResumeId());
+            Resume resume = rsumeService.get(resumeDeliver.getJobResumeId());
 
             if(resume!=null){
-                dto.setDreamMoney(resume.getDreamMoney());
-                dto.setWorkExp(resume.getWorkExp());
-                dto.setEducation(resume.getEducation());
+                dto.setDreamMoney(dataDictionaryService.getName(resume.getDreamMoney()));
+                dto.setWorkExp(dataDictionaryService.getName(resume.getWorkExp()));
+                dto.setEducation(dataDictionaryService.getName(resume.getEducation()));
                 dto.setBirthday(resume.getBirthday());
                 dto.setJobStatus(resume.getJobStatus());
 
-                if(StringUtils.isNotEmpty(resume.getJobStatus())) {
-                    String jobStatusN = dataDictionaryService.findNameByCatalogNameAndValue("工作在职状态", resume.getJobStatus());
-                    dto.setJobStatusN(jobStatusN);
-                }
             }
 
             dto.setChatStatus(resumeDeliver.getChatStatus());
@@ -611,7 +617,7 @@ public class ResumeDeliverController {
                 map.put("position",workCategory.getName());
             }
 
-            Resume resume = RsumeService.get(resumeDeliver.getJobResumeId());
+            Resume resume = rsumeService.get(resumeDeliver.getJobResumeId());
 
             if(resume!=null){
                 map.put("dreamMoney",resume.getDreamMoney());
@@ -662,4 +668,112 @@ public class ResumeDeliverController {
 
         return mapList;
     }
+
+
+
+    @ApiOperation(value="HR列表")
+    @RequestMapping(value = "pageListHR",method = RequestMethod.POST)
+    public MessageResult<Map> pageListHR(
+            String id,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        MessageResult<Map> msgResult = new MessageResult<>();
+
+        Map<String,Object> searchParams = new HashMap<>();
+
+        List<Sort> sortList = new ArrayList<>();
+        sortList.add(new Sort("create_time","desc"));
+
+        if (StringUtils.isNotEmpty(id)) {
+            searchParams.put("id",id);
+        }
+
+        Page<ResumeDeliver> page = resumeDeliverService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+        Page<ResumeDeliverHrDTO> pageDto = new Page<>();
+
+        for (ResumeDeliver resumeDeliver:page) {
+            ResumeDeliverHrDTO dto = new ResumeDeliverHrDTO();
+            dto.setId(resumeDeliver.getId());
+            dto.setCreateTime(resumeDeliver.getCreateTime());
+
+
+            String positionName = "";
+
+            if(StringUtils.isNotEmpty(resumeDeliver.getJobRecruitmentId())){
+
+                Recruitment recruitment = recruitmentService.get(resumeDeliver.getJobRecruitmentId());
+
+                if(recruitment!=null){
+                    WorkCategory workCategory = workCategoryService.get(recruitment.getPosition());
+                    if(workCategory!=null){
+                        positionName = workCategory.getName();
+                    }
+                }
+            }
+
+            dto.setPositionName(positionName);
+
+            JobUser jobUser = jobUserService.get(resumeDeliver.getJobUserId());
+
+            if(jobUser!=null){
+                dto.setHeadImageUrl(jobUser.getHeadImageUrl());
+                dto.setName(jobUser.getRealName());
+                dto.setSexN(jobUser.getSex());
+
+                if(StringUtils.isNotEmpty(jobUser.getIdCard())){
+                    int age = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
+                    dto.setAge(age);
+                }
+            }
+
+            Resume resume = rsumeService.get(resumeDeliver.getJobResumeId());
+
+            String workExpName="";
+            String dreamMoneyName="";
+            String educationName="";
+
+            if(resume!=null){
+                DataDictionary dataDictionary = dataDictionaryService.get(resume.getWorkExp());
+
+                if(dataDictionary!=null){
+                    workExpName = dataDictionary.getName();
+                }
+
+                DataDictionary dataDictionary1 = dataDictionaryService.get(resume.getDreamMoney());
+                if(dataDictionary1!=null){
+                    dreamMoneyName = dataDictionary1.getName();
+                }
+
+                DataDictionary dataDictionary2 = dataDictionaryService.get(resume.getEducation());
+
+                if(dataDictionary2!=null){
+                    educationName = dataDictionary2.getName();
+                }
+
+
+                List<ResumeWorkExperience> resumeWorkExperienceList = resumeWorkExperienceService.findByResumeId(resume.getId());
+
+                dto.setResumeWorkExperienceList(resumeWorkExperienceList);
+                dto.setUserTel(resume.getUserTel());
+            }
+
+            dto.setWorkExp(workExpName);
+            dto.setEducation(educationName);
+            dto.setDreamMoney(dreamMoneyName);
+
+
+            pageDto.add(dto);
+        }
+
+        pageDto.setPages(page.getPages());
+        pageDto.setTotal(page.getTotal());
+        pageDto.setPageNum(page.getPageNum());
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(pageDto));
+
+        return msgResult;
+    }
 }

+ 257 - 8
web/src/main/java/com/jpsoft/employment/modules/job/controller/UserBrowseController.java

@@ -1,11 +1,17 @@
 package com.jpsoft.employment.modules.job.controller;
 
+import cn.hutool.core.util.IdcardUtil;
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
-import com.jpsoft.employment.modules.job.entity.UserBrowse;
-import com.jpsoft.employment.modules.job.service.UserBrowseService;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverHrDTO;
+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.slf4j.Logger;
@@ -25,6 +31,30 @@ public class UserBrowseController {
     @Autowired
     private UserBrowseService userBrowseService;
 
+    @Autowired
+    private RecruitmentService recruitmentService;
+
+    @Autowired
+    private ResumeService rsumeService;
+
+    @Autowired
+    private WorkCategoryService workCategoryService;
+
+    @Autowired
+    private ResumeWorkExperienceService resumeWorkExperienceService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+
+    @Autowired
+    private JobUserService jobUserService;
+
+
+
+    @Autowired
+    private UserService userService;
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
     public MessageResult<UserBrowse> add(@ModelAttribute UserBrowse userBrowse){
@@ -107,11 +137,18 @@ public class UserBrowseController {
 
     @ApiOperation(value="删除用户")
     @PostMapping("delete/{id}")
-    public MessageResult<UserBrowse> delete(@PathVariable("id") String id){
+    public MessageResult<UserBrowse> delete(@PathVariable("id") String id,@RequestAttribute String subject){
         MessageResult<UserBrowse> msgResult = new MessageResult<>();
 
         try {
-            int affectCount = userBrowseService.delete(id);
+            UserBrowse userBrowse = userBrowseService.get(id);
+
+            userBrowse.setUpdateBy(subject);
+            userBrowse.setDelFlag(true);
+            userBrowse.setUpdateTime(new Date());
+
+            int affectCount = userBrowseService.update(userBrowse);
+
 
             if (affectCount > 0) {
                 msgResult.setResult(true);
@@ -145,7 +182,8 @@ public class UserBrowseController {
     @ApiOperation(value="列表")
     @RequestMapping(value = "list",method = RequestMethod.POST)
     public MessageResult<Map> list(
-            String id,
+            String positionCategoryId,Integer age,String sex,
+            String workExp,String education,String createTimeRange,
             @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
             @RequestParam(value="pageSize",defaultValue="20") int pageSize,
             HttpServletRequest request){
@@ -159,10 +197,56 @@ public class UserBrowseController {
         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(StringUtils.isNotEmpty(positionCategoryId)){
+            searchParams.put("positionCategoryId",positionCategoryId);
+        }
+
+        if(StringUtils.isNotEmpty(sex)){
+            if(!"100b3725-cb26-4d71-af3c-5b01c98f776b".equals(sex)) {
+                searchParams.put("sex", sex);
+            }
+        }
+
+        if(age!=null){
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
 
-        if (StringUtils.isNotEmpty(id)) {
-            searchParams.put("id","%" + id + "%");
+            Calendar cal = Calendar.getInstance();
+
+            cal.setTime(new Date());
+
+            cal.add(Calendar.YEAR,-age);
+
+            String curDate = sdf.format(cal.getTime());
+
+            searchParams.put("curDate",curDate);
+        }
+
+        if(StringUtils.isNotEmpty(workExp)){
+            searchParams.put("workExp",workExp);
+        }
+
+        if(StringUtils.isNotEmpty(education)){
+            searchParams.put("education",education);
+        }
+
+        if (StringUtils.isNotEmpty(createTimeRange)) {
+            String[] timeRangeArray = createTimeRange.split(",");
+            String beginTime = "";
+            String endTime = "";
+            beginTime+=" 00:00:00";
+            if (timeRangeArray.length == 1) {
+                beginTime = timeRangeArray[0];
+            } else if (timeRangeArray.length == 2) {
+                beginTime = timeRangeArray[0];
+                endTime = timeRangeArray[1];
+                beginTime+=" 00:00:00";
+                endTime+=" 23:59:59";
+            }
+
+            searchParams.put("beginTime", beginTime);
+            searchParams.put("endTime", endTime);
         }
 
 
@@ -174,4 +258,169 @@ public class UserBrowseController {
 
         return msgResult;
     }
+
+
+    @ApiOperation(value="HR列表")
+    @RequestMapping(value = "pageListHR",method = RequestMethod.POST)
+    public MessageResult<Map> pageListHR(
+            String positionCategoryId,Integer age,String sex,
+            String workExp,String education,String createTimeRange,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        String subject = (String)request.getAttribute("subject");
+
+        //当前用户ID
+        System.out.println(subject);
+
+        User user = userService.get(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(StringUtils.isNotEmpty(positionCategoryId)){
+            searchParams.put("positionCategoryId",positionCategoryId);
+        }
+
+        if(StringUtils.isNotEmpty(sex)){
+            if(!"100b3725-cb26-4d71-af3c-5b01c98f776b".equals(sex)) {
+                searchParams.put("sex", sex);
+            }
+        }
+
+        if(age!=null){
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+
+            Calendar cal = Calendar.getInstance();
+
+            cal.setTime(new Date());
+
+            cal.add(Calendar.YEAR,-age);
+
+            String curDate = sdf.format(cal.getTime());
+
+            searchParams.put("curDate",curDate);
+        }
+
+        if(StringUtils.isNotEmpty(workExp)){
+            searchParams.put("workExp",workExp);
+        }
+
+        if(StringUtils.isNotEmpty(education)){
+            searchParams.put("education",education);
+        }
+
+        if (StringUtils.isNotEmpty(createTimeRange)) {
+            String[] timeRangeArray = createTimeRange.split(",");
+            String beginTime = "";
+            String endTime = "";
+            beginTime+=" 00:00:00";
+            if (timeRangeArray.length == 1) {
+                beginTime = timeRangeArray[0];
+            } else if (timeRangeArray.length == 2) {
+                beginTime = timeRangeArray[0];
+                endTime = timeRangeArray[1];
+                beginTime+=" 00:00:00";
+                endTime+=" 23:59:59";
+            }
+
+            searchParams.put("beginTime", beginTime);
+            searchParams.put("endTime", endTime);
+        }
+
+        searchParams.put("companyId",user.getCompanyId());
+
+        Page<UserBrowse> page = userBrowseService.pageSearchHR(searchParams,pageIndex,pageSize,true,sortList);
+
+        Page<ResumeDeliverHrDTO> pageDto = new Page<>();
+
+        for (UserBrowse userBrowse:page) {
+            ResumeDeliverHrDTO dto = new ResumeDeliverHrDTO();
+
+
+            if(StringUtils.isNotEmpty(userBrowse.getJobRecruitmentId())){
+                Recruitment recruitment = recruitmentService.get(userBrowse.getJobRecruitmentId());
+
+                dto.setId(userBrowse.getId());
+                dto.setCreateTime(userBrowse.getCreateTime());
+
+
+                String positionName = "";
+
+                if(recruitment!=null){
+                    WorkCategory workCategory = workCategoryService.get(recruitment.getPosition());
+                    if(workCategory!=null){
+                        positionName = workCategory.getName();
+                    }
+                }
+
+
+                dto.setPositionName(positionName);
+
+                JobUser jobUser = jobUserService.get(userBrowse.getJobUserId());
+
+                if(jobUser!=null){
+                    dto.setHeadImageUrl(jobUser.getHeadImageUrl());
+                    dto.setName(jobUser.getRealName());
+                    dto.setSexN(jobUser.getSex());
+                    dto.setUserTel(jobUser.getTel());
+
+                    if(StringUtils.isNotEmpty(jobUser.getIdCard())){
+                        int ageN = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
+                        dto.setAge(ageN);
+                    }
+                }
+
+                Resume resume = rsumeService.findByUserId(userBrowse.getJobUserId());
+
+                String workExpName="";
+                String dreamMoneyName="";
+                String educationName="";
+
+                if(resume!=null){
+                    DataDictionary dataDictionary = dataDictionaryService.get(resume.getWorkExp());
+
+                    if(dataDictionary!=null){
+                        workExpName = dataDictionary.getName();
+                    }
+
+                    DataDictionary dataDictionary1 = dataDictionaryService.get(resume.getDreamMoney());
+                    if(dataDictionary1!=null){
+                        dreamMoneyName = dataDictionary1.getName();
+                    }
+
+                    DataDictionary dataDictionary2 = dataDictionaryService.get(resume.getEducation());
+
+                    if(dataDictionary2!=null){
+                        educationName = dataDictionary2.getName();
+                    }
+
+
+                    List<ResumeWorkExperience> resumeWorkExperienceList = resumeWorkExperienceService.findByResumeId(resume.getId());
+
+                    dto.setResumeWorkExperienceList(resumeWorkExperienceList);
+
+                }
+
+                dto.setWorkExp(workExpName);
+                dto.setEducation(educationName);
+                dto.setDreamMoney(dreamMoneyName);
+            }
+
+            pageDto.add(dto);
+        }
+
+        pageDto.setPages(page.getPages());
+        pageDto.setTotal(page.getTotal());
+        pageDto.setPageNum(page.getPageNum());
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(pageDto));
+
+        return msgResult;
+    }
 }

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

@@ -1,11 +1,15 @@
 package com.jpsoft.employment.modules.job.controller;
 
+import cn.hutool.core.util.IdcardUtil;
 import com.github.pagehelper.Page;
 import com.jpsoft.employment.modules.common.dto.MessageResult;
 import com.jpsoft.employment.modules.common.dto.Sort;
 import com.jpsoft.employment.modules.common.utils.PojoUtils;
-import com.jpsoft.employment.modules.job.entity.UserBrowseHr;
-import com.jpsoft.employment.modules.job.service.UserBrowseHrService;
+import com.jpsoft.employment.modules.job.dto.ResumeDeliverHrDTO;
+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.service.DataDictionaryService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -25,6 +29,21 @@ public class UserBrowseHrController {
     @Autowired
     private UserBrowseHrService userBrowseHrService;
 
+    @Autowired
+    private JobUserService jobUserService;
+
+    @Autowired
+    private ResumeService rsumeService;
+
+    @Autowired
+    private ResumeWorkExperienceService resumeWorkExperienceService;
+
+    @Autowired
+    private DataDictionaryService dataDictionaryService;
+
+    @Autowired
+    private WorkCategoryService workCategoryService;
+
     @ApiOperation(value="添加信息")
     @PostMapping("add")
     public MessageResult<UserBrowseHr> add(@ModelAttribute UserBrowseHr userBrowseHr){
@@ -174,4 +193,162 @@ public class UserBrowseHrController {
 
         return msgResult;
     }
+
+
+
+    @ApiOperation(value="列表HR")
+    @RequestMapping(value = "pageListHR",method = RequestMethod.POST)
+    public MessageResult<Map> pageListHR(
+            String positionCategoryId,Integer age,String sex,
+            String workExp,String education,String createTimeRange,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            HttpServletRequest request){
+        String subject = (String)request.getAttribute("subject");
+
+        //当前用户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(StringUtils.isNotEmpty(positionCategoryId)){
+            searchParams.put("positionCategoryId",positionCategoryId);
+        }
+
+        if(StringUtils.isNotEmpty(sex)){
+            if(!"100b3725-cb26-4d71-af3c-5b01c98f776b".equals(sex)) {
+                searchParams.put("sex", sex);
+            }
+        }
+
+        if(age!=null){
+            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
+
+            Calendar cal = Calendar.getInstance();
+
+            cal.setTime(new Date());
+
+            cal.add(Calendar.YEAR,-age);
+
+            String curDate = sdf.format(cal.getTime());
+
+            searchParams.put("curDate",curDate);
+        }
+
+        if(StringUtils.isNotEmpty(workExp)){
+            searchParams.put("workExp",workExp);
+        }
+
+        if(StringUtils.isNotEmpty(education)){
+            searchParams.put("education",education);
+        }
+
+        if (StringUtils.isNotEmpty(createTimeRange)) {
+            String[] timeRangeArray = createTimeRange.split(",");
+            String beginTime = "";
+            String endTime = "";
+            beginTime+=" 00:00:00";
+            if (timeRangeArray.length == 1) {
+                beginTime = timeRangeArray[0];
+            } else if (timeRangeArray.length == 2) {
+                beginTime = timeRangeArray[0];
+                endTime = timeRangeArray[1];
+                beginTime+=" 00:00:00";
+                endTime+=" 23:59:59";
+            }
+
+            searchParams.put("beginTime", beginTime);
+            searchParams.put("endTime", endTime);
+        }
+
+
+        Page<UserBrowseHr> page = userBrowseHrService.pageSearch(searchParams,pageIndex,pageSize,true,sortList);
+
+
+        Page<ResumeDeliverHrDTO> pageDto = new Page<>();
+
+        for (UserBrowseHr userBrowseHr:page) {
+
+            ResumeDeliverHrDTO dto = new ResumeDeliverHrDTO();
+
+            dto.setId(userBrowseHr.getId());
+            dto.setCreateTime(userBrowseHr.getCreateTime());
+
+            Resume resume = rsumeService.get(userBrowseHr.getJobResumeId());
+
+            String workExpName="";
+            String dreamMoneyName="";
+            String educationName="";
+            String positionName = "";
+
+
+            if(resume!=null){
+                DataDictionary dataDictionary = dataDictionaryService.get(resume.getWorkExp());
+
+                if(dataDictionary!=null){
+                    workExpName = dataDictionary.getName();
+                }
+
+                DataDictionary dataDictionary1 = dataDictionaryService.get(resume.getDreamMoney());
+                if(dataDictionary1!=null){
+                    dreamMoneyName = dataDictionary1.getName();
+                }
+
+                DataDictionary dataDictionary2 = dataDictionaryService.get(resume.getEducation());
+
+                if(dataDictionary2!=null){
+                    educationName = dataDictionary2.getName();
+                }
+
+
+                List<ResumeWorkExperience> resumeWorkExperienceList = resumeWorkExperienceService.findByResumeId(resume.getId());
+
+                dto.setResumeWorkExperienceList(resumeWorkExperienceList);
+
+
+
+                JobUser jobUser = jobUserService.get(resume.getJobUserId());
+
+                if(jobUser!=null){
+                    dto.setHeadImageUrl(jobUser.getHeadImageUrl());
+                    dto.setName(jobUser.getRealName());
+                    dto.setSexN(jobUser.getSex());
+                    dto.setUserTel(jobUser.getTel());
+
+                    if(StringUtils.isNotEmpty(jobUser.getIdCard())){
+                        int ageN = IdcardUtil.getAgeByIdCard(jobUser.getIdCard());
+                        dto.setAge(ageN);
+                    }
+                }
+
+                WorkCategory workCategory = workCategoryService.get(resume.getPositionCategoryId());
+                if(workCategory!=null){
+                    positionName = workCategory.getName();
+                }
+            }
+
+            dto.setPositionName(positionName);
+            dto.setWorkExp(workExpName);
+            dto.setEducation(educationName);
+            dto.setDreamMoney(dreamMoneyName);
+
+
+            pageDto.add(dto);
+        }
+
+        pageDto.setPages(page.getPages());
+        pageDto.setTotal(page.getTotal());
+        pageDto.setPageNum(page.getPageNum());
+
+
+        msgResult.setResult(true);
+        msgResult.setData(PojoUtils.pageWrapper(pageDto));
+
+        return msgResult;
+    }
 }