Преглед на файлове

feat: 求职人员地图查询优化

zhangying преди 9 месеца
родител
ревизия
b3e3920dfc

+ 2 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/JobHuntCQuery.java

@@ -16,4 +16,6 @@ public interface JobHuntCQuery {
                                    @Param("isAccomplish") Integer isAccomplish, @Param("curLoginUserSiteJobUserIDs") String curLoginUserSiteJobUserIDs,
                                    @Param("siteID") String siteID, @Param("regionCode") String regionCode,
                                    @Param("startDate") Date startDate, @Param("endDate") Date endDate);
+
+    List<JobHuntVo> selectJobHuntInCompanyIDs(@Param("jobUserIDList") String jobUserIDList);
 }

+ 1 - 0
src/main/java/com/hz/employmentsite/mapper/cquery/LabelCQuery.java

@@ -10,6 +10,7 @@ public interface LabelCQuery {
                                @Param("labelType") String labelType, @Param("bigType") String bigType);
 
     List<LabelVo> getUserLabelList(@Param("jobUserID") String jobUserID);
+    List<LabelVo> getUserLabelListInUserIDs(@Param("jobUserIDList") String jobUserIDList);
 
     List<LabelVo> getCompanyLabelList(@Param("companyID") String companyID);
     List<LabelVo> getCompanyLabelListInCompanyIDs(@Param("companyIDList") String companyIDList);

+ 29 - 2
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java

@@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hz.employmentsite.filter.exception.BaseException;
 import com.hz.employmentsite.mapper.*;
+import com.hz.employmentsite.mapper.cquery.JobHuntCQuery;
 import com.hz.employmentsite.mapper.cquery.JobUserCQuery;
 import com.hz.employmentsite.mapper.cquery.LabelCQuery;
 import com.hz.employmentsite.model.*;
@@ -11,6 +12,7 @@ import com.hz.employmentsite.services.service.jobUserManager.JobUserService;
 import com.hz.employmentsite.services.service.system.DictionaryService;
 import com.hz.employmentsite.util.*;
 import com.hz.employmentsite.vo.dataMap.JobUserMapVo;
+import com.hz.employmentsite.vo.jobUserManager.JobHuntVo;
 import com.hz.employmentsite.vo.jobUserManager.JobUserVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -61,6 +63,8 @@ public class JobUserServiceImpl implements JobUserService {
     private AreaCodeMapper areaCodeMapper;
     @Autowired
     private LabelCQuery labelCQuery;
+    @Autowired
+    private JobHuntCQuery jobHuntCQuery;
 
     @Override
     public PageInfo<JobUserVo> getList(Integer pageIndex, Integer pageSize,
@@ -944,7 +948,30 @@ public class JobUserServiceImpl implements JobUserService {
     public PageInfo<JobUserMapVo> getDataMapList(int pageIndex, int pageSize, Integer keyTypeValue, String regionCode, String labelID, Integer minAge, Integer maxAge) {
         PageHelper.startPage(pageIndex, pageSize);
         List<JobUserMapVo> dataMapList = jobUserCQuery.getDataMapList(keyTypeValue, regionCode, labelID, minAge, maxAge);
-        PageInfo<JobUserMapVo> pageInfo = new PageInfo<>(dataMapList);
-        return pageInfo;
+        PageInfo<JobUserMapVo> result = new PageInfo<>(dataMapList);
+
+        // 获取所有的求职人员ID
+        List<String> jobUserIDs = result.getList().stream()
+                .filter(Objects::nonNull)
+                .map(JobUserMapVo::getJobUserID)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+        if (!jobUserIDs.isEmpty()) {
+            // 查询求职意向并映射到求职人员
+            List<JobHuntVo> jobHuntList = jobHuntCQuery.selectJobHuntInCompanyIDs(stringUtils.ListToInSql(jobUserIDs));
+            Map<String, List<JobHuntVo>> jobHuntMap = (jobHuntList != null) ?
+                    jobHuntList.stream()
+                            .filter(Objects::nonNull)
+                            .collect(Collectors.groupingBy(JobHuntVo::getJobUserID))
+                    : new HashMap<>();
+            // 填充求职意向数据
+            result.getList().forEach(jobUser -> {
+                if (jobUser != null && jobUser.getJobUserID() != null) {
+                    jobUser.setJobHuntList(jobHuntMap.getOrDefault(jobUser.getJobUserID(), new ArrayList<>()));
+                }
+            });
+        }
+        return result;
     }
 }

+ 4 - 1
src/main/java/com/hz/employmentsite/vo/dataMap/JobUserMapVo.java

@@ -1,7 +1,10 @@
 package com.hz.employmentsite.vo.dataMap;
 
+import com.hz.employmentsite.vo.jobUserManager.JobHuntVo;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class JobUserMapVo {
     private String jobUserID;
@@ -24,5 +27,5 @@ public class JobUserMapVo {
 
     // JSON格式的列表数据
     private String labelList;
-    private String jobHuntList;
+    private List<JobHuntVo> jobHuntList;
 }

+ 11 - 2
src/main/resources/mapping/cquery/JobHuntCQuery.xml

@@ -88,7 +88,16 @@
         profession.ParentProfessionID,jobUser.cultureRank,site.SiteID,inSites.InstitutionID,site.RegionCode
         order by jobHunt.CreateTime desc
     </select>
-    <!--    getJobHuntList的分组
 
-    -->
+    <select id="selectJobHuntInCompanyIDs" resultType="com.hz.employmentsite.vo.jobUserManager.JobHuntVo">
+        SELECT
+            jobhunt.JobUserID,
+            prof.ProfessionID,
+            prof.ProfessionName
+        FROM
+            pc_jobhunt jobhunt
+                LEFT JOIN pc_profession prof ON jobhunt.ProfessionID = prof.ProfessionID
+        WHERE
+            jobhunt.JobUserID in (${jobUserIDList})
+    </select>
 </mapper>

+ 15 - 31
src/main/resources/mapping/cquery/JobUserCQuery.xml

@@ -127,22 +127,6 @@
             site.SiteName,
             recommendCountData.RecommendedCount,
             mgtEntryState.EntryState,
-            (
-                SELECT
-                    JSON_ARRAYAGG( JSON_OBJECT( 'professionID', jobHuntTemp.ProfessionID, 'professionName', jobHuntTemp.ProfessionName ) )
-                FROM
-                    (
-                        SELECT
-                            prof.ProfessionID,
-                            prof.ProfessionName
-                        FROM
-                            pc_jobhunt jobhunt
-                                LEFT JOIN pc_profession prof ON jobhunt.ProfessionID = prof.ProfessionID
-                        WHERE
-                            jobhunt.JobUserID = jobuser.JobUserID
-                        LIMIT 4
-                    ) AS jobHuntTemp
-            ) AS jobHuntList,
             (
                 SELECT
                     JSON_ARRAYAGG( JSON_OBJECT( 'labelID', labelTemp.LabelID, 'labelName', labelTemp.LabelName ) )
@@ -152,8 +136,8 @@
                             label.LabelID,
                             label.LabelName
                         FROM
-                            pc_label label
-                                LEFT JOIN pc_label_jobuser label_jobuser ON label.LabelID = label_jobuser.LabelID
+                            pc_label_jobuser label_jobuser
+                                LEFT JOIN pc_label label ON label_jobuser.LabelID = label.LabelID
                         WHERE
                             label_jobuser.JobuserID = jobuser.JobuserID
                     ) AS labelTemp
@@ -196,18 +180,18 @@
         <if test="labelID != '' and labelID != null">
             and
             (
-            SELECT
-            JSON_ARRAYAGG( JSON_OBJECT( 'labelID', labelTemp.LabelID ) )
-            FROM
-            (
-            SELECT
-            label.LabelID
-            FROM
-            pc_label label
-            LEFT JOIN pc_label_jobuser label_jobuser ON label.LabelID = label_jobuser.LabelID
-            WHERE
-            label_jobuser.JobuserID = jobuser.JobuserID
-            ) AS labelTemp
+                SELECT
+                    JSON_ARRAYAGG( JSON_OBJECT( 'labelID', labelTemp.LabelID ) )
+                FROM
+                    (
+                    SELECT
+                        label.LabelID,
+                        label.LabelName
+                    FROM
+                        pc_label_jobuser label_jobuser
+                    LEFT JOIN pc_label label ON label_jobuser.LabelID = label.LabelID
+                    WHERE label_jobuser.JobuserID = jobuser.JobuserID
+                ) AS labelTemp
             ) like Concat('%',#{labelID},'%')
         </if>
         <if test="minAge != null and maxAge == null">
@@ -217,7 +201,7 @@
             jobuser.BirthDay,
             CURRENT_DATE ()) <![CDATA[ >= ]]> #{minAge}
         </if>
-        <if test="maxAge != null and minAge == null">
+        <if test="maxAge != null and minAge == null">    
             and
             TIMESTAMPDIFF(
             YEAR,

+ 14 - 0
src/main/resources/mapping/cquery/LabelCQuery.xml

@@ -31,6 +31,20 @@
         where JobUserID = #{jobUserID}
         order by b.SortNo
     </select>
+    <select id="getUserLabelListInUserIDs" resultType="com.hz.employmentsite.vo.baseSettings.LabelVo">
+        SELECT
+            label.LabelID,
+            label.LabelName,
+            label.LabelType,
+            label.BigType,
+            label.SortNo,
+            userLabel.JobuserID
+        FROM
+            pc_label_jobuser userLabel
+                LEFT JOIN pc_label label ON userLabel.LabelID = label.LabelID
+        where userLabel.JobuserID in (${jobUserIDList})
+        order by userLabel.JobuserID, label.SortNo
+    </select>
     <select id="getCompanyLabelList" resultType="com.hz.employmentsite.vo.baseSettings.LabelVo">
         select b.LabelID,b.LabelName,b.LabelType,b.BigType,b.SortNo
         from pc_label b

+ 0 - 1
vue/src/views/dataMap/jobUserDataMap.vue

@@ -259,7 +259,6 @@ function onSearch() {
 
     jobUserList.value.forEach((item: any) => {
       item.labelList = JSON.parse(item.labelList || '[]');
-      item.jobHuntList = JSON.parse(item.jobHuntList || '[]');
       item.labelExpanded = true;
     })