浏览代码

1、优化人才地图相关接口

rayson 7 月之前
父节点
当前提交
16153c5985
共有 17 个文件被更改,包括 144 次插入24 次删除
  1. 1 1
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobSeekStatusEnum.java
  2. 5 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/talent/TalentMapInfoController.java
  3. 0 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/edu/TalentMapEduExpSaveReqVO.java
  4. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoRespVO.java
  5. 6 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoSaveReqVO.java
  6. 0 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/work/TalentMapWorkExpSaveReqVO.java
  7. 7 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapInfoDO.java
  8. 2 2
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapTrainExpDO.java
  9. 31 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/resume/OnlineResumeServiceImpl.java
  10. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapEduExpService.java
  11. 5 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapEduExpServiceImpl.java
  12. 8 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoService.java
  13. 45 6
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoServiceImpl.java
  14. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpService.java
  15. 5 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpServiceImpl.java
  16. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapWorkExpService.java
  17. 6 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapWorkExpServiceImpl.java

+ 1 - 1
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/job/JobSeekStatusEnum.java

@@ -30,6 +30,6 @@ public enum JobSeekStatusEnum {
                 return statusEnum;
             }
         }
-        return NOT_CONSIDER;
+        return CONSIDER;
     }
 }

+ 5 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/talent/TalentMapInfoController.java

@@ -7,6 +7,7 @@ import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.excel.core.util.ExcelUtils;
+import com.citu.module.menduner.system.controller.base.talent.TalentMapDetailRespVO;
 import com.citu.module.menduner.system.controller.base.talent.TalentMapSaveReqVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoPageReqVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoRespVO;
@@ -66,17 +67,15 @@ public class TalentMapInfoController {
     @Operation(summary = "获得人才地图-人才基本信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-info:query')")
-    public CommonResult<TalentMapInfoRespVO> getTalentMapInfo(@RequestParam("id") Long id) {
-        TalentMapInfoDO talentMapInfo = talentMapInfoService.getTalentMapInfo(id);
-        return success(BeanUtils.toBean(talentMapInfo, TalentMapInfoRespVO.class));
+    public CommonResult<TalentMapDetailRespVO> detail(@RequestParam("id") Long id) {
+        return success(talentMapInfoService.detail(id));
     }
 
     @GetMapping("/page")
     @Operation(summary = "获得人才地图-人才基本信息分页")
     @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-info:query')")
-    public CommonResult<PageResult<TalentMapInfoRespVO>> getTalentMapInfoPage(@Valid TalentMapInfoPageReqVO pageReqVO) {
-        PageResult<TalentMapInfoDO> pageResult = talentMapInfoService.getTalentMapInfoPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, TalentMapInfoRespVO.class));
+    public CommonResult<PageResult<TalentMapDetailRespVO>> getTalentMapInfoPage(@Valid TalentMapInfoPageReqVO pageReqVO) {
+        return success(talentMapInfoService.page(pageReqVO));
     }
 
     @GetMapping("/export-excel")

+ 0 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/edu/TalentMapEduExpSaveReqVO.java

@@ -45,7 +45,6 @@ public class TalentMapEduExpSaveReqVO {
     private String major;
 
     @Schema(description = "在校开始日期", requiredMode = Schema.RequiredMode.REQUIRED)
-    @NotNull(message = "在校开始日期不能为空")
     private LocalDateTime startTime;
 
     @Schema(description = "在校结束时间")

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoRespVO.java

@@ -152,7 +152,11 @@ public class TalentMapInfoRespVO {
 
     @Schema(description = "意向工作城市")
     @ExcelProperty("意向工作城市")
-    private String interestedAreaIdList;
+    private List<String> interestedAreaIdList;
+
+    @Schema(description = "意向工作城市文本")
+    @ExcelProperty("意向工作城市文本")
+    private List<String> interestedAreaStrList;
 
     @Schema(description = "人才标签")
     @ExcelProperty("人才标签")

+ 6 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoSaveReqVO.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.system.controller.base.talent.info;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -113,10 +114,13 @@ public class TalentMapInfoSaveReqVO {
     private Boolean prepareExp;
 
     @Schema(description = "意向工作城市")
-    private String interestedAreaIdList;
+    private List<String> interestedAreaIdList;
+
+    @Schema(description = "意向工作城市文本")
+    private List<String> interestedAreaStrList;
 
     @Schema(description = "人才标签")
-    private String tagList;
+    private List<String> tagList;
 
     @Schema(description = "意向职位")
     private List<String> jobInterestedList;

+ 0 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/work/TalentMapWorkExpSaveReqVO.java

@@ -28,7 +28,6 @@ public class TalentMapWorkExpSaveReqVO {
     private Long enterpriseId;
 
     @Schema(description = "企业名称(没有选择系统企业时可自定义)", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
-    @NotEmpty(message = "企业名称(没有选择系统企业时可自定义)不能为空")
     private String enterpriseName;
 
     @Schema(description = "企业类型", example = "2")
@@ -47,7 +46,6 @@ public class TalentMapWorkExpSaveReqVO {
     private Long positionId;
 
     @Schema(description = "职位名称(没有选择系统职位时可自定义)", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
-    @NotEmpty(message = "职位名称(没有选择系统职位时可自定义)不能为空")
     private String positionName;
 
     @Schema(description = "在职开始日期")

+ 7 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapInfoDO.java

@@ -172,7 +172,13 @@ public class TalentMapInfoDO extends TenantBaseDO {
     /**
      * 意向工作城市
      */
-    private String interestedAreaIdList;
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> interestedAreaIdList;
+    /**
+     * 意向工作城市文本
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> interestedAreaStrList;
     /**
      * 人才标签
      */

+ 2 - 2
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapTrainExpDO.java

@@ -12,8 +12,8 @@ import java.time.LocalDateTime;
  *
  * @author Rayson
  */
-@TableName("mde_talent_map_work_exp")
-@KeySequence("mde_talent_map_work_exp") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@TableName("mde_talent_map_train_exp")
+@KeySequence("mde_talent_map_train_exp") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)

+ 31 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/resume/OnlineResumeServiceImpl.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.resume;
 
 import cn.hutool.core.codec.Base64;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.citu.module.menduner.system.controller.base.job.interested.JobInterestedRespVO;
 import com.citu.module.menduner.system.controller.base.person.info.PersonDetailExtendRespVO;
@@ -199,6 +200,29 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
             // 国籍
             talentMapInfoRespVO.setNationality(split[0]);
         }
+
+        // 意向城市
+        if (StringUtils.isNotBlank(temResumeResVo.getExpectJLocationNorm())) {
+            String expectJLocationNorm =  temResumeResVo.getExpectJLocationNorm().replaceAll(" ", "");
+            String[] split = expectJLocationNorm.split("-");// 规范化的城市名,到“区县”一级: 中国-广东省 中国-湖南省-岳阳市 中国-湖南省-岳阳市-华容县
+            // 只有省级别
+            if (split.length == 2) {
+                AreaDO areaDO = areaService.getAreaByName(split[1]);
+                if (null != areaDO) {
+                    talentMapInfoRespVO.setInterestedAreaIdList(Collections.singletonList(String.valueOf(areaDO.getId())));
+                    talentMapInfoRespVO.setInterestedAreaStrList(Collections.singletonList(areaDO.getName()));
+                }
+            }
+            // 只有市级别
+            if (split.length == 3) {
+                AreaDO areaDO = areaService.getAreaByName(split[2]);
+                if (null != areaDO) {
+                    talentMapInfoRespVO.setInterestedAreaIdList(Collections.singletonList(String.valueOf(areaDO.getId())));
+                    talentMapInfoRespVO.setInterestedAreaStrList(Collections.singletonList(areaDO.getName()));
+                }
+            }
+        }
+
         // talentMapInfoRespVO.setJobType(); //	expect_jnature 期望工作性质
         //  talentMapInfoRespVO.setJobStatus();// //	expect_jstatus 期望工作性质
 
@@ -230,7 +254,13 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
 
         // 求职意向
         if (StringUtils.isNotBlank(temResumeResVo.getExpectJob())) {
-            talentMapInfoRespVO.setJobInterestedList(Collections.singletonList(temResumeResVo.getExpectJob()));
+            // 定义分隔符数组
+            String[] delimiters = {"/", ",", "、",","};
+            // 将多个分隔符转换为一个正则表达式
+            String regex = StrUtil.join("|", Arrays.asList(delimiters));
+            // 使用正则表达式分割字符串
+            String[] parts = temResumeResVo.getExpectJob().split(regex);
+            talentMapInfoRespVO.setJobInterestedList(new ArrayList<>(Arrays.asList(parts)));
         }
         return talentMapInfoRespVO;
     }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapEduExpService.java

@@ -62,4 +62,10 @@ public interface TalentMapEduExpService {
      */
     List<TalentMapEduExpDO> selectListByPersonId(Long personId);
 
+    /**
+     * 根据人才id删除数据
+     * @param personId 人才id
+     */
+    void deleteByPersonId(Long personId);
+
 }

+ 5 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapEduExpServiceImpl.java

@@ -75,4 +75,9 @@ public class TalentMapEduExpServiceImpl implements TalentMapEduExpService {
     public List<TalentMapEduExpDO> selectListByPersonId(Long personId) {
         return talentMapEduExpMapper.selectListByPersonId(personId);
     }
+
+    @Override
+    public void deleteByPersonId(Long personId) {
+        talentMapEduExpMapper.delete(TalentMapEduExpDO::getPersonId, personId);
+    }
 }

+ 8 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoService.java

@@ -47,6 +47,14 @@ public interface TalentMapInfoService {
      */
     TalentMapInfoDO getTalentMapInfo(Long id);
 
+    /**
+     * 获得人才地图-人才基本信息
+     *
+     * @param id 编号
+     * @return 人才地图-人才基本信息
+     */
+    TalentMapDetailRespVO detail(Long id);
+
     /**
      * 获得人才地图-人才基本信息分页
      *

+ 45 - 6
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoServiceImpl.java

@@ -1,9 +1,11 @@
 package com.citu.module.menduner.system.service.talent;
 
 
+import cn.hutool.core.codec.Base64Decoder;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.infra.api.file.FileApi;
 import com.citu.module.menduner.system.controller.base.talent.TalentMapDetailRespVO;
 import com.citu.module.menduner.system.controller.base.talent.TalentMapSaveReqVO;
 import com.citu.module.menduner.system.controller.base.talent.edu.TalentMapEduExpRespVO;
@@ -19,10 +21,7 @@ import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapEduExpDO;
 import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapInfoDO;
 import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
 import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapWorkExpDO;
-import com.citu.module.menduner.system.dal.mysql.talent.TalentMapEduExpMapper;
 import com.citu.module.menduner.system.dal.mysql.talent.TalentMapInfoMapper;
-import com.citu.module.menduner.system.dal.mysql.talent.TalentMapTrainExpMapper;
-import com.citu.module.menduner.system.dal.mysql.talent.TalentMapWorkExpMapper;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -55,6 +54,9 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
     @Resource
     private TalentMapTrainExpService talentMapTrainExpService;
 
+    @Resource
+    private FileApi fileApi;
+
     @Override
     public Long createTalentMapInfo(TalentMapInfoSaveReqVO createReqVO) {
         // 插入
@@ -74,11 +76,15 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
     }
 
     @Override
+    @DSTransactional
     public void deleteTalentMapInfo(Long id) {
         // 校验存在
         validateTalentMapInfoExists(id);
         // 删除
         talentMapInfoMapper.deleteById(id);
+        talentMapEduExpService.deleteByPersonId(id);
+        talentMapWorkExpService.deleteByPersonId(id);
+        talentMapTrainExpService.deleteByPersonId(id);
     }
 
     private void validateTalentMapInfoExists(Long id) {
@@ -92,6 +98,30 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
         return talentMapInfoMapper.selectById(id);
     }
 
+    @Override
+    public TalentMapDetailRespVO detail(Long id) {
+        TalentMapInfoDO info = talentMapInfoMapper.selectById(id);
+        TalentMapDetailRespVO resp = new TalentMapDetailRespVO();
+        // 基本信息
+        resp.setPerson(BeanUtils.toBean(info, TalentMapInfoRespVO.class));
+        // 教育经历
+        List<TalentMapEduExpDO> eduList = talentMapEduExpService.selectListByPersonId(info.getId());
+        if (ObjectUtils.isNotEmpty(eduList)) {
+            resp.setEduList(BeanUtils.toBean(eduList, TalentMapEduExpRespVO.class));
+        }
+        // 工作经历
+        List<TalentMapWorkExpDO> workList = talentMapWorkExpService.selectListByPersonId(info.getId());
+        if (ObjectUtils.isNotEmpty(workList)) {
+            resp.setWorkList(BeanUtils.toBean(workList, TalentMapWorkExpRespVO.class));
+        }
+        // 培训经历
+        List<TalentMapTrainExpDO> trainList = talentMapTrainExpService.selectListByPersonId(info.getId());
+        if (ObjectUtils.isNotEmpty(trainList)) {
+            resp.setTrainList(BeanUtils.toBean(trainList, TalentMapTrainExpRespVO.class));
+        }
+        return resp;
+    }
+
     @Override
     public PageResult<TalentMapInfoDO> getTalentMapInfoPage(TalentMapInfoPageReqVO pageReqVO) {
         return talentMapInfoMapper.selectPage(pageReqVO);
@@ -132,11 +162,20 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
     @DSTransactional
     public void add(TalentMapSaveReqVO reqVO) {
         TalentMapInfoDO talentMapInfo = BeanUtils.toBean(reqVO.getPerson(), TalentMapInfoDO.class);
+        if (talentMapInfo.getAvatar().contains("base64")) {
+            // base64编码
+            // 截取, 之后的所有
+            int index = talentMapInfo.getAvatar().indexOf(", ");
+            byte[] data = Base64Decoder.decode(talentMapInfo.getAvatar().substring(index + 1));
+            // 转为图片地址保存
+            String path = "talent/map/" + talentMapInfo.getName() + "_" +
+                    talentMapInfo.getAvatar()
+                            .substring(talentMapInfo.getAvatar().length() - 10).replaceAll("/", "") + ".jpg";
+            talentMapInfo.setAvatar(fileApi.createFile(talentMapInfo.getName(), path, data));
+        }
         if (null == talentMapInfo.getId()) {
             // 新增
             talentMapInfoMapper.insert(talentMapInfo);
-        } else {
-            talentMapInfoMapper.updateById(talentMapInfo);
         }
 
         for (TalentMapEduExpSaveReqVO eduReqVO : reqVO.getEduList()) {
@@ -156,7 +195,7 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
             }
         }
 
-        for (TalentMapTrainExpSaveReqVO trainReqVO: reqVO.getTrainList()) {
+        for (TalentMapTrainExpSaveReqVO trainReqVO : reqVO.getTrainList()) {
             if (null == trainReqVO.getId()) {
                 trainReqVO.setPersonId(talentMapInfo.getId());
                 // 新增

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpService.java

@@ -62,4 +62,10 @@ public interface TalentMapTrainExpService {
      */
     List<TalentMapTrainExpDO> selectListByPersonId(Long personId);
 
+    /**
+     * 根据人才id删除数据
+     * @param personId 人才id
+     */
+    void deleteByPersonId(Long personId);
+
 }

+ 5 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpServiceImpl.java

@@ -11,7 +11,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-
 import java.util.List;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -75,4 +74,9 @@ public class TalentMapTrainExpServiceImpl implements TalentMapTrainExpService {
     public List<TalentMapTrainExpDO> selectListByPersonId(Long personId) {
         return talentMapTrainExpMapper.selectListByPersonId(personId);
     }
+
+    @Override
+    public void deleteByPersonId(Long personId) {
+        talentMapTrainExpMapper.delete(TalentMapTrainExpDO::getPersonId, personId);
+    }
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapWorkExpService.java

@@ -61,4 +61,10 @@ public interface TalentMapWorkExpService {
      * @return 人才地图-工作经历列表
      */
     List<TalentMapWorkExpDO> selectListByPersonId(Long personId);
+
+    /**
+     * 根据人才id删除数据
+     * @param personId 人才id
+     */
+    void deleteByPersonId(Long personId);
 }

+ 6 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapWorkExpServiceImpl.java

@@ -5,6 +5,7 @@ import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpPageReqVO;
 import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
 import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapWorkExpDO;
 import com.citu.module.menduner.system.dal.mysql.talent.TalentMapWorkExpMapper;
 import org.springframework.stereotype.Service;
@@ -75,4 +76,9 @@ public class TalentMapWorkExpServiceImpl implements TalentMapWorkExpService {
     public List<TalentMapWorkExpDO> selectListByPersonId(Long personId) {
         return talentMapWorkExpMapper.selectListByPersonId(personId);
     }
+
+    @Override
+    public void deleteByPersonId(Long personId) {
+        talentMapWorkExpMapper.delete(TalentMapWorkExpDO::getPersonId, personId);
+    }
 }