Przeglądaj źródła

1、更改web内容缓存
2、增加人才地图相关

rayson 7 miesięcy temu
rodzic
commit
edf7ded417
21 zmienionych plików z 791 dodań i 20 usunięć
  1. 3 0
      menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java
  2. 94 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/talent/TalentMapTrainExpController.java
  3. 2 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/TalentMapDetailRespVO.java
  4. 26 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/TalentMapSaveReqVO.java
  5. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoRespVO.java
  6. 10 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/info/TalentMapInfoSaveReqVO.java
  7. 42 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpPageReqVO.java
  8. 47 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpRespVO.java
  9. 38 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpSaveReqVO.java
  10. 13 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapInfoDO.java
  11. 57 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/dataobject/talent/TalentMapTrainExpDO.java
  12. 30 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/talent/TalentMapTrainExpMapper.java
  13. 43 16
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/resume/OnlineResumeServiceImpl.java
  14. 9 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoService.java
  15. 68 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapInfoServiceImpl.java
  16. 56 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpService.java
  17. 72 0
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpServiceImpl.java
  18. 1 1
      menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/web/WebContentServiceImpl.java
  19. 147 0
      menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpServiceImplTest.java
  20. 2 1
      menduner/menduner-system-biz/src/test/resources/sql/clean.sql
  21. 18 1
      menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

+ 3 - 0
menduner/menduner-system-api/src/main/java/com/citu/module/menduner/system/enums/ErrorCodeConstants.java

@@ -601,4 +601,7 @@ public interface ErrorCodeConstants {
 
     // ========== 人才地图-人才教育经历 1_100_061_000 ==========
     ErrorCode TALENT_MAP_EDU_EXP_NOT_EXISTS = new ErrorCode(1_100_061_001, "人才地图-人才教育经历不存在");
+
+    // ========== 人才地图-人才培训经历 1_100_062_000 ==========
+    ErrorCode TALENT_MAP_TRAIN_EXP_NOT_EXISTS = new ErrorCode(1_100_062_001, "人才地图-人才培训经历不存在");
 }

+ 94 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/admin/talent/TalentMapTrainExpController.java

@@ -0,0 +1,94 @@
+package com.citu.module.menduner.system.controller.admin.talent;
+
+
+import com.citu.framework.apilog.core.annotation.ApiAccessLog;
+import com.citu.framework.common.pojo.CommonResult;
+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.train.TalentMapTrainExpPageReqVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpRespVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
+import com.citu.module.menduner.system.service.talent.TalentMapTrainExpService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static com.citu.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 人才地图-人才培训经历")
+@RestController
+@RequestMapping("/menduner/system/talent-map-train-exp")
+@Validated
+public class TalentMapTrainExpController {
+
+    @Resource
+    private TalentMapTrainExpService talentMapTrainExpService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建人才地图-人才培训经历")
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:create')")
+    public CommonResult<Long> createTalentMapTrainExp(@Valid @RequestBody TalentMapTrainExpSaveReqVO createReqVO) {
+        return success(talentMapTrainExpService.createTalentMapTrainExp(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新人才地图-人才培训经历")
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:update')")
+    public CommonResult<Boolean> updateTalentMapTrainExp(@Valid @RequestBody TalentMapTrainExpSaveReqVO updateReqVO) {
+        talentMapTrainExpService.updateTalentMapTrainExp(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除人才地图-人才培训经历")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:delete')")
+    public CommonResult<Boolean> deleteTalentMapTrainExp(@RequestParam("id") Long id) {
+        talentMapTrainExpService.deleteTalentMapTrainExp(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得人才地图-人才培训经历")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:query')")
+    public CommonResult<TalentMapTrainExpRespVO> getTalentMapTrainExp(@RequestParam("id") Long id) {
+        TalentMapTrainExpDO talentMapTrainExp = talentMapTrainExpService.getTalentMapTrainExp(id);
+        return success(BeanUtils.toBean(talentMapTrainExp, TalentMapTrainExpRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得人才地图-人才培训经历分页")
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:query')")
+    public CommonResult<PageResult<TalentMapTrainExpRespVO>> getTalentMapTrainExpPage(@Valid TalentMapTrainExpPageReqVO pageReqVO) {
+        PageResult<TalentMapTrainExpDO> pageResult = talentMapTrainExpService.getTalentMapTrainExpPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, TalentMapTrainExpRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出人才地图-人才培训经历 Excel")
+    @PreAuthorize("@ss.hasPermission('menduner:system:talent-map-train-exp:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportTalentMapTrainExpExcel(@Valid TalentMapTrainExpPageReqVO pageReqVO,
+                                             HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<TalentMapTrainExpDO> list = talentMapTrainExpService.getTalentMapTrainExpPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "人才地图-人才培训经历.xls", "数据", TalentMapTrainExpRespVO.class,
+                BeanUtils.toBean(list, TalentMapTrainExpRespVO.class));
+    }
+
+}

+ 2 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/TalentMapDetailRespVO.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.controller.base.talent;
 
 import com.citu.module.menduner.system.controller.base.talent.edu.TalentMapEduExpRespVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoRespVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpRespVO;
 import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpRespVO;
 import com.citu.module.menduner.system.controller.base.trainexp.TrainExpRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -23,5 +24,5 @@ public class TalentMapDetailRespVO {
     private List<TalentMapWorkExpRespVO> workList;
 
     @Schema(description = "人才培训经历")
-    private List<TrainExpRespVO> trainList;
+    private List<TalentMapTrainExpRespVO> trainList;
 }

+ 26 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/TalentMapSaveReqVO.java

@@ -0,0 +1,26 @@
+package com.citu.module.menduner.system.controller.base.talent;
+
+import com.citu.module.menduner.system.controller.base.talent.edu.TalentMapEduExpSaveReqVO;
+import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoSaveReqVO;
+import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpSaveReqVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "menduner - 人才地图信息保存 Request VO")
+@Data
+public class TalentMapSaveReqVO {
+
+    @Schema(description = "人才信息")
+    private TalentMapInfoSaveReqVO person;
+
+    @Schema(description = "人才教育经历")
+    private List<TalentMapEduExpSaveReqVO> eduList;
+
+    @Schema(description = "人才工作经历")
+    private List<TalentMapWorkExpSaveReqVO> workList;
+
+    @Schema(description = "人才培训经历")
+    private List<TalentMapWorkExpSaveReqVO> trainList;
+}

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

@@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "管理后台 - 人才地图-人才基本信息 Response VO")
 @Data
@@ -121,6 +122,14 @@ public class TalentMapInfoRespVO {
     @ExcelProperty("个人优势")
     private String advantage;
 
+    @Schema(description = "身高")
+    @ExcelProperty("身高")
+    private String height;
+
+    @Schema(description = "体重")
+    @ExcelProperty("体重")
+    private String weight;
+
     @Schema(description = "工作经验", example = "2")
     @ExcelProperty("工作经验")
     private String expType;
@@ -149,6 +158,10 @@ public class TalentMapInfoRespVO {
     @ExcelProperty("人才标签")
     private String tagList;
 
+    @Schema(description = "意向职位")
+    @ExcelProperty("意向职位")
+    private List<String> jobInterestedList;
+
     @Schema(description = "配偶家乡id", example = "9408")
     @ExcelProperty("配偶家乡id")
     private Long spouseHometownId;

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

@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Schema(description = "管理后台 - 人才地图-人才基本信息新增/修改 Request VO")
 @Data
@@ -90,6 +91,12 @@ public class TalentMapInfoSaveReqVO {
     @Schema(description = "个人优势")
     private String advantage;
 
+    @Schema(description = "身高")
+    private String height;
+
+    @Schema(description = "体重")
+    private String weight;
+
     @Schema(description = "工作经验", example = "2")
     private String expType;
 
@@ -111,6 +118,9 @@ public class TalentMapInfoSaveReqVO {
     @Schema(description = "人才标签")
     private String tagList;
 
+    @Schema(description = "意向职位")
+    private List<String> jobInterestedList;
+
     @Schema(description = "配偶家乡id", example = "9408")
     private Long spouseHometownId;
 

+ 42 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpPageReqVO.java

@@ -0,0 +1,42 @@
+package com.citu.module.menduner.system.controller.base.talent.train;
+
+import com.citu.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 人才地图-培训经历分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class TalentMapTrainExpPageReqVO extends PageParam {
+
+    @Schema(description = "人才id", example = "2483")
+    private Long personId;
+
+    @Schema(description = "培训开始时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "培训结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] endTime;
+
+    @Schema(description = "培训机构名称", example = "芋艿")
+    private String orgName;
+
+    @Schema(description = "培训课程")
+    private String course;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpRespVO.java

@@ -0,0 +1,47 @@
+package com.citu.module.menduner.system.controller.base.talent.train;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 人才地图-培训经历 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class TalentMapTrainExpRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27649")
+    @ExcelProperty("id")
+    private Long id;
+
+    @Schema(description = "人才id", example = "2483")
+    @ExcelProperty("人才id")
+    private Long personId;
+
+    @Schema(description = "培训开始时间")
+    @ExcelProperty("培训开始时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "培训结束时间")
+    @ExcelProperty("培训结束时间")
+    private LocalDateTime endTime;
+
+    @Schema(description = "培训机构名称", example = "芋艿")
+    @ExcelProperty("培训机构名称")
+    private String orgName;
+
+    @Schema(description = "培训课程")
+    @ExcelProperty("培训课程")
+    private String course;
+
+    @Schema(description = "描述说明")
+    @ExcelProperty("描述说明")
+    private String content;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 38 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/base/talent/train/TalentMapTrainExpSaveReqVO.java

@@ -0,0 +1,38 @@
+package com.citu.module.menduner.system.controller.base.talent.train;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static com.citu.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+
+@Schema(description = "管理后台 - 人才地图-培训经历新增/修改 Request VO")
+@Data
+public class TalentMapTrainExpSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27649")
+    private Long id;
+
+    @Schema(description = "人才id", example = "2483")
+    private Long personId;
+
+    @Schema(description = "培训开始时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDateTime startTime;
+
+    @Schema(description = "培训结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDateTime endTime;
+
+    @Schema(description = "培训机构名称", example = "芋艿")
+    private String orgName;
+
+    @Schema(description = "培训课程")
+    private String course;
+
+    @Schema(description = "描述说明")
+    private String content;
+
+}

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

@@ -141,6 +141,14 @@ public class TalentMapInfoDO extends TenantBaseDO {
      * 个人优势
      */
     private String advantage;
+    /**
+     * 身高
+     */
+    private String height;
+    /**
+     * 体重
+     */
+    private String weight;
     /**
      * 工作经验
      */
@@ -170,6 +178,11 @@ public class TalentMapInfoDO extends TenantBaseDO {
      */
     @TableField(typeHandler = JacksonTypeHandler.class)
     private List<String> tagList;
+    /**
+     * 求职意向
+     */
+    @TableField(typeHandler = JacksonTypeHandler.class)
+    private List<String> jobInterestedList;
     /**
      * 配偶家乡id
      */

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

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.system.dal.dataobject.talent;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.citu.framework.tenant.core.db.TenantBaseDO;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+
+/**
+ * 人才地图-培训经历 DO
+ *
+ * @author Rayson
+ */
+@TableName("mde_talent_map_work_exp")
+@KeySequence("mde_talent_map_work_exp") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TalentMapTrainExpDO extends TenantBaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 人才id
+     */
+    private Long personId;
+    /**
+     * 培训开始时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 培训结束时间
+     */
+    @TableField( updateStrategy = FieldStrategy.ALWAYS)
+    private LocalDateTime endTime;
+    /**
+     * 培训机构名称
+     */
+    private String orgName;
+    /**
+     * 培训课程
+     */
+    private String course;
+    /**
+     * 描述说明
+     */
+    @TableField( updateStrategy = FieldStrategy.ALWAYS)
+    private String content;
+
+}

+ 30 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/dal/mysql/talent/TalentMapTrainExpMapper.java

@@ -0,0 +1,30 @@
+package com.citu.module.menduner.system.dal.mysql.talent;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.mybatis.core.mapper.BaseMapperX;
+import com.citu.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpPageReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 人才地图-人才培训经历 Mapper
+ *
+ * @author Rayson
+ */
+@Mapper
+public interface TalentMapTrainExpMapper extends BaseMapperX<TalentMapTrainExpDO> {
+
+    default PageResult<TalentMapTrainExpDO> selectPage(TalentMapTrainExpPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<TalentMapTrainExpDO>()
+                .eqIfPresent(TalentMapTrainExpDO::getPersonId, reqVO.getPersonId())
+                .betweenIfPresent(TalentMapTrainExpDO::getStartTime, reqVO.getStartTime())
+                .betweenIfPresent(TalentMapTrainExpDO::getEndTime, reqVO.getEndTime())
+                .likeIfPresent(TalentMapTrainExpDO::getOrgName, reqVO.getOrgName())
+                .likeIfPresent(TalentMapTrainExpDO::getCourse, reqVO.getCourse())
+                .betweenIfPresent(TalentMapTrainExpDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(TalentMapTrainExpDO::getId));
+    }
+
+}

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

@@ -9,8 +9,8 @@ import com.citu.module.menduner.system.controller.base.projectexp.ProjectExpResp
 import com.citu.module.menduner.system.controller.base.resume.resumesdk.*;
 import com.citu.module.menduner.system.controller.base.talent.edu.TalentMapEduExpRespVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoRespVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpRespVO;
 import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpRespVO;
-import com.citu.module.menduner.system.controller.base.trainexp.TrainExpRespVO;
 import com.citu.module.menduner.system.dal.dataobject.area.AreaDO;
 import com.citu.module.menduner.system.enums.eduexp.EducationTypeEnum;
 import com.citu.module.menduner.system.enums.job.JobSeekStatusEnum;
@@ -24,11 +24,10 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalTime;
+import java.util.*;
 
 import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.citu.module.menduner.system.enums.ErrorCodeConstants.MDE_PERSON_RESUME_ERROR;
@@ -86,10 +85,11 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
         talentMapInfoRespVO.setResumeUrl(fileUrl);
         talentMapInfoRespVO.setName(temResumeResVo.getName());
         // talentMapInfoRespVO.setForeignName(temResumeResVo.getNameEn());
-        PersonSexEnum sexEnum = PersonSexEnum.getEnumByName(temResumeResVo.getGenderInf());
-        if (!PersonSexEnum.UNKNOWN.equals(sexEnum)) {
-            talentMapInfoRespVO.setSex(sexEnum.getType());
-            talentMapInfoRespVO.setSexStr(sexEnum.getName());
+        PersonSexEnum sexEnum = PersonSexEnum.getEnumByName(temResumeResVo.getGender());
+        PersonSexEnum sexEnum2 = PersonSexEnum.getEnumByName(temResumeResVo.getGenderInf());
+        if (!PersonSexEnum.UNKNOWN.equals(sexEnum) || !PersonSexEnum.UNKNOWN.equals(sexEnum2)) {
+            talentMapInfoRespVO.setSex(PersonSexEnum.UNKNOWN.equals(sexEnum) ? sexEnum2.getType() : sexEnum.getType());
+            talentMapInfoRespVO.setSexStr(PersonSexEnum.UNKNOWN.equals(sexEnum) ? sexEnum2.getName() : sexEnum.getName());
         }
 
         // 图片地址为空就用base64
@@ -99,12 +99,33 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
         talentMapInfoRespVO.setEmail(temResumeResVo.getEmail());
         talentMapInfoRespVO.setQq(temResumeResVo.getQq());
         talentMapInfoRespVO.setWxCode(temResumeResVo.getWeixin());
-        talentMapInfoRespVO.setBirthday(convertDate(temResumeResVo.getBirthday()));
+        // 出生日期
+        LocalDateTime birthday = convertDate(temResumeResVo.getBirthday());
+        if (null != birthday) {
+            talentMapInfoRespVO.setBirthday(birthday);
+        } else {
+            Integer age = temResumeResVo.getAge();
+            if (null != age && age > 0) {
+                // 获取当前日期和时间
+                LocalDate currentDate = LocalDate.now();
+                // 计算出生年份
+                int birthYear = currentDate.getYear() - age;
+                // 计算出生月份和日期(这里简单设为1月1日,因为通常只知道年龄,不知道确切的月份和日期)
+                LocalDate estimatedBirthday = LocalDate.of(birthYear, 1, 1);
+                // 如果需要精确到小时和分钟(通常不需要),可以添加默认时间,如00:00
+                LocalDateTime estimatedBirthdayTime = estimatedBirthday.atTime(LocalTime.MIDNIGHT);
+                // 设置计算出的出生日期到响应对象
+                talentMapInfoRespVO.setBirthday(estimatedBirthdayTime);
+            }
+        }
+        talentMapInfoRespVO.setHeight(temResumeResVo.getHeight());
+        talentMapInfoRespVO.setWeight(temResumeResVo.getWeight());
         // 是否党员
         if (StringUtils.isNotBlank(temResumeResVo.getPolitStatus())) {
-            if ("党员".equals(temResumeResVo.getPolitStatus())
+            if ("党员".contains(temResumeResVo.getPolitStatus())
                     || "共产党员".equals(temResumeResVo.getPolitStatus())
-                    || "共产党党员".equals(temResumeResVo.getPolitStatus())) {
+                    || "共产党党员".equals(temResumeResVo.getPolitStatus())
+                    || "中共党员".equals(temResumeResVo.getPolitStatus())) {
                 talentMapInfoRespVO.setPartyMember(true);
             } else {
                 talentMapInfoRespVO.setPartyMember(false);
@@ -115,6 +136,7 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
 
         // 婚姻状态
         talentMapInfoRespVO.setMaritalStatus(MaritalStatusEnum.NOT_DISCLOSED.getType());
+        talentMapInfoRespVO.setMaritalStatusStr(MaritalStatusEnum.NOT_DISCLOSED.getName());
         if (StringUtils.isNotBlank(temResumeResVo.getMaritalStatus())) {
 
             String maritalStatus = temResumeResVo.getMaritalStatus().replaceAll(" ", "");
@@ -129,7 +151,7 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
             maritalStatusMap.put("已婚已育", MaritalStatusEnum.MARRIED);
             MaritalStatusEnum maritalStatusEnum = maritalStatusMap.getOrDefault(maritalStatus, MaritalStatusEnum.NOT_DISCLOSED);
             talentMapInfoRespVO.setMaritalStatus(maritalStatusEnum.getType());
-            talentMapInfoRespVO.setMaritalStatus(maritalStatusEnum.getName());
+            talentMapInfoRespVO.setMaritalStatusStr(maritalStatusEnum.getName());
         }
 
         // 所在城市
@@ -205,6 +227,11 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
         JobTypeEnum jobTypeEnum = JobTypeEnum.getEnumByName(temResumeResVo.getWorkJobNature());
         talentMapInfoRespVO.setJobType(jobTypeEnum.getType());
         talentMapInfoRespVO.setJobTypeStr(jobTypeEnum.getName());
+
+        // 求职意向
+        if (StringUtils.isNotBlank(temResumeResVo.getExpectJob())) {
+            talentMapInfoRespVO.setJobInterestedList(Collections.singletonList(temResumeResVo.getExpectJob()));
+        }
         return talentMapInfoRespVO;
     }
 
@@ -278,10 +305,10 @@ public class OnlineResumeServiceImpl implements OnlineResumeService {
         return respVOS;
     }
 
-    List<TrainExpRespVO> temResumeResVoConvertToTrainExpRespVO(TemResumeContent temResumeResVo) {
-        List<TrainExpRespVO> respVOS = new ArrayList<>();
+    List<TalentMapTrainExpRespVO> temResumeResVoConvertToTrainExpRespVO(TemResumeContent temResumeResVo) {
+        List<TalentMapTrainExpRespVO> respVOS = new ArrayList<>();
         for (TemResumetTrainingVo trainingObj : temResumeResVo.getTrainingObjs()) {
-            TrainExpRespVO trainExpRespVO = new TrainExpRespVO();
+            TalentMapTrainExpRespVO trainExpRespVO = new TalentMapTrainExpRespVO();
             trainExpRespVO.setStartTime(convertDate(trainingObj.getStartDate()));
             trainExpRespVO.setEndTime(convertDate(trainingObj.getEndDate()));
             trainExpRespVO.setOrgName(trainingObj.getTrainOrg());

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

@@ -2,6 +2,7 @@ package com.citu.module.menduner.system.service.talent;
 
 
 import com.citu.framework.common.pojo.PageResult;
+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.TalentMapInfoSaveReqVO;
 import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapInfoDO;
@@ -53,4 +54,12 @@ public interface TalentMapInfoService {
      */
     PageResult<TalentMapInfoDO> getTalentMapInfoPage(TalentMapInfoPageReqVO pageReqVO);
 
+
+    /**
+     * 保存人才信息
+     *
+     * @param reqVO 信息
+     */
+    void save(TalentMapSaveReqVO reqVO);
+
 }

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

@@ -1,12 +1,22 @@
 package com.citu.module.menduner.system.service.talent;
 
 
+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.menduner.system.controller.base.talent.TalentMapSaveReqVO;
+import com.citu.module.menduner.system.controller.base.talent.edu.TalentMapEduExpSaveReqVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoPageReqVO;
 import com.citu.module.menduner.system.controller.base.talent.info.TalentMapInfoSaveReqVO;
+import com.citu.module.menduner.system.controller.base.talent.work.TalentMapWorkExpSaveReqVO;
+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.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -27,6 +37,15 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
     @Resource
     private TalentMapInfoMapper talentMapInfoMapper;
 
+    @Resource
+    private TalentMapEduExpMapper talentMapEduExpMapper;
+
+    @Resource
+    private TalentMapWorkExpMapper talentMapWorkExpMapper;
+
+    @Resource
+    private TalentMapTrainExpMapper talentMapTrainExpMapper;
+
     @Override
     public Long createTalentMapInfo(TalentMapInfoSaveReqVO createReqVO) {
         // 插入
@@ -69,4 +88,53 @@ public class TalentMapInfoServiceImpl implements TalentMapInfoService {
         return talentMapInfoMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    @DSTransactional
+    public void save(TalentMapSaveReqVO reqVO) {
+        TalentMapInfoDO talentMapInfo = BeanUtils.toBean(reqVO.getPerson(), TalentMapInfoDO.class);
+        if(null == talentMapInfo.getId()) {
+            // 新增
+            talentMapInfoMapper.insert(talentMapInfo);
+        }else {
+            talentMapInfoMapper.updateById(talentMapInfo);
+        }
+
+        for (TalentMapEduExpSaveReqVO eduReqVO  : reqVO.getEduList()) {
+
+            TalentMapEduExpDO edu = BeanUtils.toBean(eduReqVO, TalentMapEduExpDO.class);
+            edu.setPersonId(talentMapInfo.getId());
+            if(null == edu.getId()) {
+                // 新增
+                talentMapEduExpMapper.insert(edu);
+            }else {
+
+                talentMapEduExpMapper.updateById(edu);
+            }
+        }
+
+        for (TalentMapWorkExpSaveReqVO workReqVO  : reqVO.getWorkList()) {
+
+            TalentMapWorkExpDO work = BeanUtils.toBean(workReqVO, TalentMapWorkExpDO.class);
+            work.setPersonId(talentMapInfo.getId());
+            if(null == work.getId()) {
+                // 新增
+                talentMapWorkExpMapper.insert(work);
+            }else {
+                talentMapWorkExpMapper.updateById(work);
+            }
+        }
+
+        for (TalentMapWorkExpSaveReqVO trainReqVO  : reqVO.getTrainList()){
+            TalentMapTrainExpDO train = BeanUtils.toBean(trainReqVO, TalentMapTrainExpDO.class);
+            train.setPersonId(talentMapInfo.getId());
+            if(null == train.getId()) {
+                // 新增
+                talentMapTrainExpMapper.insert(train);
+            }else {
+                talentMapTrainExpMapper.updateById(train);
+            }
+        }
+
+
+    }
 }

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

@@ -0,0 +1,56 @@
+package com.citu.module.menduner.system.service.talent;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpPageReqVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
+
+import javax.validation.Valid;
+
+/**
+ * 人才地图-人才培训经历 Service 接口
+ *
+ * @author Rayson
+ */
+public interface TalentMapTrainExpService {
+
+    /**
+     * 创建人才地图-人才培训经历
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createTalentMapTrainExp(@Valid TalentMapTrainExpSaveReqVO createReqVO);
+
+    /**
+     * 更新人才地图-人才培训经历
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateTalentMapTrainExp(@Valid TalentMapTrainExpSaveReqVO updateReqVO);
+
+    /**
+     * 删除人才地图-人才培训经历
+     *
+     * @param id 编号
+     */
+    void deleteTalentMapTrainExp(Long id);
+
+    /**
+     * 获得人才地图-人才培训经历
+     *
+     * @param id 编号
+     * @return 人才地图-人才培训经历
+     */
+    TalentMapTrainExpDO getTalentMapTrainExp(Long id);
+
+    /**
+     * 获得人才地图-人才培训经历分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 人才地图-人才培训经历分页
+     */
+    PageResult<TalentMapTrainExpDO> getTalentMapTrainExpPage(TalentMapTrainExpPageReqVO pageReqVO);
+
+}

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

@@ -0,0 +1,72 @@
+package com.citu.module.menduner.system.service.talent;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.common.util.object.BeanUtils;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpPageReqVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
+import com.citu.module.menduner.system.dal.mysql.talent.TalentMapTrainExpMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.TALENT_MAP_TRAIN_EXP_NOT_EXISTS;
+
+/**
+ * 人才地图-人才培训经历 Service 实现类
+ *
+ * @author Rayson
+ */
+@Service
+@Validated
+public class TalentMapTrainExpServiceImpl implements TalentMapTrainExpService {
+
+    @Resource
+    private TalentMapTrainExpMapper talentMapTrainExpMapper;
+
+    @Override
+    public Long createTalentMapTrainExp(TalentMapTrainExpSaveReqVO createReqVO) {
+        // 插入
+        TalentMapTrainExpDO talentMapTrainExp = BeanUtils.toBean(createReqVO, TalentMapTrainExpDO.class);
+        talentMapTrainExpMapper.insert(talentMapTrainExp);
+        // 返回
+        return talentMapTrainExp.getId();
+    }
+
+    @Override
+    public void updateTalentMapTrainExp(TalentMapTrainExpSaveReqVO updateReqVO) {
+        // 校验存在
+        validateTalentMapTrainExpExists(updateReqVO.getId());
+        // 更新
+        TalentMapTrainExpDO updateObj = BeanUtils.toBean(updateReqVO, TalentMapTrainExpDO.class);
+        talentMapTrainExpMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteTalentMapTrainExp(Long id) {
+        // 校验存在
+        validateTalentMapTrainExpExists(id);
+        // 删除
+        talentMapTrainExpMapper.deleteById(id);
+    }
+
+    private void validateTalentMapTrainExpExists(Long id) {
+        if (talentMapTrainExpMapper.selectById(id) == null) {
+            throw exception(TALENT_MAP_TRAIN_EXP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public TalentMapTrainExpDO getTalentMapTrainExp(Long id) {
+        return talentMapTrainExpMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<TalentMapTrainExpDO> getTalentMapTrainExpPage(TalentMapTrainExpPageReqVO pageReqVO) {
+        return talentMapTrainExpMapper.selectPage(pageReqVO);
+    }
+
+}

+ 1 - 1
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/web/WebContentServiceImpl.java

@@ -65,7 +65,7 @@ public class WebContentServiceImpl implements WebContentService {
     }
 
     @Override
-    @Cacheable(cacheNames = RedisKeyConstants.MDE_WEB_CONTENT+ "#1h", key = "#id",
+    @Cacheable(cacheNames = RedisKeyConstants.MDE_WEB_CONTENT+ "#5m", key = "#id",
             unless = "#result == null")
     public WebContentDO getWebContent(Long id) {
         return webContentMapper.selectById(id);

+ 147 - 0
menduner/menduner-system-biz/src/test/java/com/citu/module/menduner/system/service/talent/TalentMapTrainExpServiceImplTest.java

@@ -0,0 +1,147 @@
+package com.citu.module.menduner.system.service.talent;
+
+
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.test.core.ut.BaseDbUnitTest;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpPageReqVO;
+import com.citu.module.menduner.system.controller.base.talent.train.TalentMapTrainExpSaveReqVO;
+import com.citu.module.menduner.system.dal.dataobject.talent.TalentMapTrainExpDO;
+import com.citu.module.menduner.system.dal.mysql.talent.TalentMapTrainExpMapper;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.annotation.Import;
+
+import javax.annotation.Resource;
+
+import static com.citu.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime;
+import static com.citu.framework.common.util.object.ObjectUtils.cloneIgnoreId;
+import static com.citu.framework.test.core.util.AssertUtils.assertPojoEquals;
+import static com.citu.framework.test.core.util.AssertUtils.assertServiceException;
+import static com.citu.framework.test.core.util.RandomUtils.randomLongId;
+import static com.citu.framework.test.core.util.RandomUtils.randomPojo;
+import static com.citu.module.menduner.system.enums.ErrorCodeConstants.TALENT_MAP_TRAIN_EXP_NOT_EXISTS;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link TalentMapTrainExpServiceImpl} 的单元测试类
+ *
+ * @author Rayson
+ */
+@Import(TalentMapTrainExpServiceImpl.class)
+public class TalentMapTrainExpServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private TalentMapTrainExpServiceImpl talentMapTrainExpService;
+
+    @Resource
+    private TalentMapTrainExpMapper talentMapTrainExpMapper;
+
+    @Test
+    public void testCreateTalentMapTrainExp_success() {
+        // 准备参数
+        TalentMapTrainExpSaveReqVO createReqVO = randomPojo(TalentMapTrainExpSaveReqVO.class).setId(null);
+
+        // 调用
+        Long talentMapTrainExpId = talentMapTrainExpService.createTalentMapTrainExp(createReqVO);
+        // 断言
+        assertNotNull(talentMapTrainExpId);
+        // 校验记录的属性是否正确
+        TalentMapTrainExpDO talentMapTrainExp = talentMapTrainExpMapper.selectById(talentMapTrainExpId);
+        assertPojoEquals(createReqVO, talentMapTrainExp, "id");
+    }
+
+    @Test
+    public void testUpdateTalentMapTrainExp_success() {
+        // mock 数据
+        TalentMapTrainExpDO dbTalentMapTrainExp = randomPojo(TalentMapTrainExpDO.class);
+        talentMapTrainExpMapper.insert(dbTalentMapTrainExp);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        TalentMapTrainExpSaveReqVO updateReqVO = randomPojo(TalentMapTrainExpSaveReqVO.class, o -> {
+            o.setId(dbTalentMapTrainExp.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        talentMapTrainExpService.updateTalentMapTrainExp(updateReqVO);
+        // 校验是否更新正确
+        TalentMapTrainExpDO talentMapTrainExp = talentMapTrainExpMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, talentMapTrainExp);
+    }
+
+    @Test
+    public void testUpdateTalentMapTrainExp_notExists() {
+        // 准备参数
+        TalentMapTrainExpSaveReqVO updateReqVO = randomPojo(TalentMapTrainExpSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> talentMapTrainExpService.updateTalentMapTrainExp(updateReqVO), TALENT_MAP_TRAIN_EXP_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteTalentMapTrainExp_success() {
+        // mock 数据
+        TalentMapTrainExpDO dbTalentMapTrainExp = randomPojo(TalentMapTrainExpDO.class);
+        talentMapTrainExpMapper.insert(dbTalentMapTrainExp);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbTalentMapTrainExp.getId();
+
+        // 调用
+        talentMapTrainExpService.deleteTalentMapTrainExp(id);
+        // 校验数据不存在了
+        assertNull(talentMapTrainExpMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteTalentMapTrainExp_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> talentMapTrainExpService.deleteTalentMapTrainExp(id), TALENT_MAP_TRAIN_EXP_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetTalentMapTrainExpPage() {
+        // mock 数据
+        TalentMapTrainExpDO dbTalentMapTrainExp = randomPojo(TalentMapTrainExpDO.class, o -> { // 等会查询到
+            o.setPersonId(null);
+            o.setStartTime(null);
+            o.setEndTime(null);
+            o.setOrgName(null);
+            o.setCourse(null);
+            o.setContent(null);
+            o.setCreateTime(null);
+        });
+        talentMapTrainExpMapper.insert(dbTalentMapTrainExp);
+        // 测试 personId 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setPersonId(null)));
+        // 测试 startTime 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setStartTime(null)));
+        // 测试 endTime 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setEndTime(null)));
+        // 测试 orgName 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setOrgName(null)));
+        // 测试 course 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setCourse(null)));
+        // 测试 content 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setContent(null)));
+        // 测试 createTime 不匹配
+        talentMapTrainExpMapper.insert(cloneIgnoreId(dbTalentMapTrainExp, o -> o.setCreateTime(null)));
+        // 准备参数
+        TalentMapTrainExpPageReqVO reqVO = new TalentMapTrainExpPageReqVO();
+        reqVO.setPersonId(null);
+        reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+        reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+        reqVO.setOrgName(null);
+        reqVO.setCourse(null);
+        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+        // 调用
+        PageResult<TalentMapTrainExpDO> pageResult = talentMapTrainExpService.getTalentMapTrainExpPage(reqVO);
+        // 断言
+        assertEquals(1, pageResult.getTotal());
+        assertEquals(1, pageResult.getList().size());
+        assertPojoEquals(dbTalentMapTrainExp, pageResult.getList().get(0));
+    }
+
+}

+ 2 - 1
menduner/menduner-system-biz/src/test/resources/sql/clean.sql

@@ -49,4 +49,5 @@ DELETE FROM "mde_job_fair";
 DELETE FROM "mde_web_content";
 DELETE FROM "mde_talent_map_info";
 DELETE FROM "mde_talent_map_work_exp";
-DELETE FROM "mde_talent_map_edu_exp";
+DELETE FROM "mde_talent_map_edu_exp";
+DELETE FROM "mde_talent_map_train_exp";

+ 18 - 1
menduner/menduner-system-biz/src/test/resources/sql/create_tables.sql

@@ -933,4 +933,21 @@ CREATE TABLE IF NOT EXISTS "mde_talent_map_edu_exp" (
     "deleted" bit NOT NULL DEFAULT FALSE,
     "tenant_id" bigint NOT NULL,
     PRIMARY KEY ("id")
-) COMMENT '人才地图-人才教育经历';
+) COMMENT '人才地图-人才教育经历';
+
+CREATE TABLE IF NOT EXISTS "mde_talent_map_train_exp" (
+    "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
+    "person_id" bigint,
+    "start_time" varchar,
+    "end_time" varchar,
+    "org_name" varchar,
+    "course" varchar,
+    "content" varchar,
+    "creator" varchar DEFAULT '',
+    "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
+    "updater" varchar DEFAULT '',
+    "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+    "deleted" bit NOT NULL DEFAULT FALSE,
+    "tenant_id" bigint NOT NULL,
+    PRIMARY KEY ("id")
+) COMMENT '人才地图-人才培训经历';