Pārlūkot izejas kodu

考核模板管理

dzx 1 gadu atpakaļ
vecāks
revīzija
ba3005891e
19 mainītis faili ar 1054 papildinājumiem un 0 dzēšanām
  1. 101 0
      src/main/java/com/xjrsoft/module/assessment/controller/AssessmentTemplateController.java
  2. 61 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionDto.java
  3. 48 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionOptionsDto.java
  4. 46 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentTemplateDto.java
  5. 26 0
      src/main/java/com/xjrsoft/module/assessment/dto/AssessmentTemplatePageDto.java
  6. 34 0
      src/main/java/com/xjrsoft/module/assessment/dto/UpdateAssessmentTemplateDto.java
  7. 116 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestion.java
  8. 98 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestionOptions.java
  9. 96 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentTemplate.java
  10. 20 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionMapper.java
  11. 20 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionOptionsMapper.java
  12. 17 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentTemplateMapper.java
  13. 40 0
      src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplateService.java
  14. 79 0
      src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplateServiceImpl.java
  15. 49 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionOptionsVo.java
  16. 59 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionVo.java
  17. 44 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePageVo.java
  18. 51 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplateVo.java
  19. 49 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 101 - 0
src/main/java/com/xjrsoft/module/assessment/controller/AssessmentTemplateController.java

@@ -0,0 +1,101 @@
+package com.xjrsoft.module.assessment.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.assessment.dto.AddAssessmentTemplateDto;
+import com.xjrsoft.module.assessment.dto.UpdateAssessmentTemplateDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.assessment.dto.AssessmentTemplatePageDto;
+import com.xjrsoft.module.assessment.entity.AssessmentTemplate;
+import com.xjrsoft.module.assessment.service.IAssessmentTemplateService;
+import com.xjrsoft.module.assessment.vo.AssessmentTemplatePageVo;
+
+import com.xjrsoft.module.assessment.vo.AssessmentTemplateVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/assessment" + "/assessmentTemplate")
+@Api(value = "/assessment"  + "/assessmentTemplate",tags = "考核模板代码")
+@AllArgsConstructor
+public class AssessmentTemplateController {
+
+
+    private final IAssessmentTemplateService assessmentTemplateService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="考核模板列表(分页)")
+    @SaCheckPermission("assessmenttemplate:detail")
+    public RT<PageOutput<AssessmentTemplatePageVo>> page(@Valid AssessmentTemplatePageDto dto){
+
+        LambdaQueryWrapper<AssessmentTemplate> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(AssessmentTemplate::getId)
+                .select(AssessmentTemplate.class,x -> VoToColumnUtil.fieldsToColumns(AssessmentTemplatePageVo.class).contains(x.getProperty()));
+        IPage<AssessmentTemplate> page = assessmentTemplateService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<AssessmentTemplatePageVo> pageOutput = ConventPage.getPageOutput(page, AssessmentTemplatePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询考核模板信息")
+    @SaCheckPermission("assessmenttemplate:detail")
+    public RT<AssessmentTemplateVo> info(@RequestParam Long id){
+        AssessmentTemplate assessmentTemplate = assessmentTemplateService.getByIdDeep(id);
+        if (assessmentTemplate == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(assessmentTemplate, AssessmentTemplateVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增考核模板")
+    @SaCheckPermission("assessmenttemplate:add")
+    public RT<Boolean> add(@Valid @RequestBody AddAssessmentTemplateDto dto){
+        AssessmentTemplate assessmentTemplate = BeanUtil.toBean(dto, AssessmentTemplate.class);
+        boolean isSuccess = assessmentTemplateService.add(assessmentTemplate);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改考核模板")
+    @SaCheckPermission("assessmenttemplate:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateAssessmentTemplateDto dto){
+
+        AssessmentTemplate assessmentTemplate = BeanUtil.toBean(dto, AssessmentTemplate.class);
+        return RT.ok(assessmentTemplateService.update(assessmentTemplate));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除考核模板")
+    @SaCheckPermission("assessmenttemplate:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(assessmentTemplateService.delete(ids));
+    }
+
+}

+ 61 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionDto.java

@@ -0,0 +1,61 @@
+package com.xjrsoft.module.assessment.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 考核模板题目
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AddAssessmentQuestionDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 题目题干
+    */
+    @ApiModelProperty("题目题干")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 题目类型
+    */
+    @ApiModelProperty("题目类型")
+    private String type;
+    /**
+    * 是否必填(1:是 0:否)
+    */
+    @ApiModelProperty("是否必填(1:是 0:否)")
+    private Short required;
+    /**
+    * 考核模板id(assessment_template)
+    */
+    @ApiModelProperty("考核模板id(assessment_template)")
+    private Long assessmentTemplateId;
+
+    @ApiModelProperty("assessmentQuestionOptions子表")
+    private List<AddAssessmentQuestionOptionsDto> options;
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionOptionsDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.assessment.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 考核模板题目选项
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AddAssessmentQuestionOptionsDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 选项名称
+    */
+    @ApiModelProperty("选项名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 考核题目id(assessment_question)
+    */
+    @ApiModelProperty("考核题目id(assessment_question)")
+    private Long assessmentQuestionId;
+
+}

+ 46 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentTemplateDto.java

@@ -0,0 +1,46 @@
+package com.xjrsoft.module.assessment.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestion;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestionOptions;
+
+
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AddAssessmentTemplateDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 名称
+    */
+    @ApiModelProperty("名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+
+    /**
+    * assessmentQuestion
+    */
+    @ApiModelProperty("assessmentQuestion子表")
+    private List<AddAssessmentQuestionDto> children;
+
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/assessment/dto/AssessmentTemplatePageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.assessment.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 考核模板分页查询入参
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class AssessmentTemplatePageDto extends PageInput {
+
+
+}

+ 34 - 0
src/main/java/com/xjrsoft/module/assessment/dto/UpdateAssessmentTemplateDto.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.assessment.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestion;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestionOptions;
+
+
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class UpdateAssessmentTemplateDto extends AddAssessmentTemplateDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 116 - 0
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestion.java

@@ -0,0 +1,116 @@
+package com.xjrsoft.module.assessment.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考核模板题目
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+@TableName("assessment_question")
+@ApiModel(value = "assessment_question", description = "考核模板题目")
+public class AssessmentQuestion implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 题目题干
+    */
+    @ApiModelProperty("题目题干")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 题目类型
+    */
+    @ApiModelProperty("题目类型")
+    private String type;
+    /**
+    * 是否必填(1:是 0:否)
+    */
+    @ApiModelProperty("是否必填(1:是 0:否)")
+    private Short required;
+    /**
+    * 考核模板id(assessment_template)
+    */
+    @ApiModelProperty("考核模板id(assessment_template)")
+    private Long assessmentTemplateId;
+
+    /**
+     * assessmentQuestionOptions
+     */
+    @ApiModelProperty("assessmentQuestionOptions子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "assessmentQuestionId")
+    private List<AssessmentQuestionOptions> options;
+
+
+}

+ 98 - 0
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestionOptions.java

@@ -0,0 +1,98 @@
+package com.xjrsoft.module.assessment.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考核模板题目选项
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+@TableName("assessment_question_options")
+@ApiModel(value = "assessment_question_options", description = "考核模板题目选项")
+public class AssessmentQuestionOptions implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 选项名称
+    */
+    @ApiModelProperty("选项名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 考核题目id(assessment_question)
+    */
+    @ApiModelProperty("考核题目id(assessment_question)")
+    private Long assessmentQuestionId;
+
+
+}

+ 96 - 0
src/main/java/com/xjrsoft/module/assessment/entity/AssessmentTemplate.java

@@ -0,0 +1,96 @@
+package com.xjrsoft.module.assessment.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+@TableName("assessment_template")
+@ApiModel(value = "assessment_template", description = "考核模板")
+public class AssessmentTemplate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 名称
+    */
+    @ApiModelProperty("名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+
+    /**
+    * assessmentQuestion
+    */
+    @ApiModelProperty("assessmentQuestion子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "assessmentTemplateId")
+    private List<AssessmentQuestion> children;
+
+
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionMapper.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.assessment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestion;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
+
+/**
+* @title: 考核模板题目
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Mapper
+public interface AssessmentQuestionMapper extends MPJBaseMapper<AssessmentQuestion> {
+    @Update("update assessment_question set delete_mark = 1 WHERE assessment_question_id = #{assessmentTemplateId}")
+    Boolean deleteByAssessmentTemplateId(Long assessmentTemplateId);
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionOptionsMapper.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.assessment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestionOptions;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
+
+/**
+* @title: 考核模板题目选项
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Mapper
+public interface AssessmentQuestionOptionsMapper extends MPJBaseMapper<AssessmentQuestionOptions> {
+
+    @Update("update assessment_question_options set delete_mark = 1 WHERE assessment_question_id = #{assessmentTemplateId}")
+    Boolean deleteByAssessmentQuestionId(Long assessmentQuestionId);
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentTemplateMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.assessment.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.assessment.entity.AssessmentTemplate;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Mapper
+public interface AssessmentTemplateMapper extends MPJBaseMapper<AssessmentTemplate> {
+
+}

+ 40 - 0
src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplateService.java

@@ -0,0 +1,40 @@
+package com.xjrsoft.module.assessment.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.assessment.entity.AssessmentTemplate;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+
+public interface IAssessmentTemplateService extends MPJBaseService<AssessmentTemplate> {
+    /**
+    * 新增
+    *
+    * @param assessmentTemplate
+    * @return
+    */
+    Boolean add(AssessmentTemplate assessmentTemplate);
+
+    /**
+    * 更新
+    *
+    * @param assessmentTemplate
+    * @return
+    */
+    Boolean update(AssessmentTemplate assessmentTemplate);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+}

+ 79 - 0
src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplateServiceImpl.java

@@ -0,0 +1,79 @@
+package com.xjrsoft.module.assessment.service.impl;
+
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestion;
+import com.xjrsoft.module.assessment.mapper.AssessmentQuestionMapper;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestionOptions;
+import com.xjrsoft.module.assessment.mapper.AssessmentQuestionOptionsMapper;
+import com.xjrsoft.module.assessment.entity.AssessmentTemplate;
+import com.xjrsoft.module.assessment.mapper.AssessmentTemplateMapper;
+import com.xjrsoft.module.assessment.service.IAssessmentTemplateService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 考核模板
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class AssessmentTemplateServiceImpl extends MPJBaseServiceImpl<AssessmentTemplateMapper, AssessmentTemplate> implements IAssessmentTemplateService {
+    private final AssessmentTemplateMapper assessmentTemplateMapper;
+
+    private final AssessmentQuestionMapper assessmentQuestionMapper;
+    private final AssessmentQuestionOptionsMapper assessmentQuestionOptionsMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AssessmentTemplate assessmentTemplate) {
+        assessmentTemplateMapper.insert(assessmentTemplate);
+        for (AssessmentQuestion assessmentQuestion : assessmentTemplate.getChildren()) {
+            assessmentQuestion.setAssessmentTemplateId(assessmentTemplate.getId());
+            assessmentQuestionMapper.insert(assessmentQuestion);
+
+            for (AssessmentQuestionOptions child : assessmentQuestion.getOptions()) {
+                child.setAssessmentQuestionId(assessmentQuestion.getId());
+                assessmentQuestionOptionsMapper.insert(child);
+            }
+        }
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(AssessmentTemplate assessmentTemplate) {
+        assessmentTemplateMapper.updateById(assessmentTemplate);
+        //删除下面的子集重新添加
+        assessmentQuestionMapper.deleteByAssessmentTemplateId(assessmentTemplate.getId());
+        for (AssessmentQuestion assessmentQuestion : assessmentTemplate.getChildren()) {
+            assessmentQuestion.setAssessmentTemplateId(assessmentTemplate.getId());
+            assessmentQuestionMapper.insert(assessmentQuestion);
+
+            assessmentQuestionOptionsMapper.deleteByAssessmentQuestionId(assessmentQuestion.getId());
+            for (AssessmentQuestionOptions child : assessmentQuestion.getOptions()) {
+                child.setAssessmentQuestionId(assessmentQuestion.getId());
+                assessmentQuestionOptionsMapper.insert(child);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        assessmentTemplateMapper.deleteBatchIds(ids);
+        assessmentQuestionMapper.delete(Wrappers.lambdaQuery(AssessmentQuestion.class).in(AssessmentQuestion::getAssessmentTemplateId, ids));
+        assessmentQuestionOptionsMapper.delete(Wrappers.lambdaQuery(AssessmentQuestionOptions.class).in(AssessmentQuestionOptions::getAssessmentQuestionId, ids));
+
+        return true;
+    }
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionOptionsVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.assessment.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 考核模板题目选项表单出参
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AssessmentQuestionOptionsVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 选项名称
+    */
+    @ApiModelProperty("选项名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 考核题目id(assessment_question)
+    */
+    @ApiModelProperty("考核题目id(assessment_question)")
+    private Long assessmentQuestionId;
+
+
+
+}

+ 59 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionVo.java

@@ -0,0 +1,59 @@
+package com.xjrsoft.module.assessment.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 考核模板题目表单出参
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AssessmentQuestionVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 题目题干
+    */
+    @ApiModelProperty("题目题干")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+    /**
+    * 题目类型
+    */
+    @ApiModelProperty("题目类型")
+    private String type;
+    /**
+    * 是否必填(1:是 0:否)
+    */
+    @ApiModelProperty("是否必填(1:是 0:否)")
+    private Short required;
+    /**
+    * 考核模板id(assessment_template)
+    */
+    @ApiModelProperty("考核模板id(assessment_template)")
+    private Long assessmentTemplateId;
+
+
+
+}

+ 44 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePageVo.java

@@ -0,0 +1,44 @@
+package com.xjrsoft.module.assessment.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 考核模板分页列表出参
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AssessmentTemplatePageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 
+    */
+    @ApiModelProperty("创建时间")
+    private Date createDate;
+    /**
+    * 名称
+    */
+    @ApiModelProperty("名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+
+}

+ 51 - 0
src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplateVo.java

@@ -0,0 +1,51 @@
+package com.xjrsoft.module.assessment.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestion;
+import com.xjrsoft.module.assessment.entity.AssessmentQuestionOptions;
+
+/**
+* @title: 考核模板表单出参
+* @Author dzx
+* @Date: 2024-03-29
+* @Version 1.0
+*/
+@Data
+public class AssessmentTemplateVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 名称
+    */
+    @ApiModelProperty("名称")
+    private String name;
+    /**
+    * 分数
+    */
+    @ApiModelProperty("分数")
+    private Long score;
+
+
+    /**
+    * assessmentQuestion
+    */
+    @ApiModelProperty("assessmentQuestion子表")
+    private List<AssessmentQuestionVo> assessmentQuestionList;
+    /**
+    * assessmentQuestionOptions
+    */
+    @ApiModelProperty("assessmentQuestionOptions子表")
+    private List<AssessmentQuestionOptionsVo> assessmentQuestionOptionsList;
+
+}

+ 49 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -2460,4 +2460,53 @@ public class FreeMarkerGeneratorTest {
         apiGeneratorService.generateCodes(params);
 
     }
+
+    /**
+     * 考核
+     *
+     * @throws IOException
+     */
+    @Test
+    public void gcAssessment() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("assessment_template");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        mainTable = new TableConfig();
+        mainTable.setTableName("assessment_question");//init_sql中的表名
+        mainTable.setIsMain(false);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        mainTable.setRelationField("assessment_template_id");//设置外键
+        mainTable.setRelationTableField(GlobalConstant.DEFAULT_PK);//设置外键
+        tableConfigs.add(mainTable);
+
+        mainTable = new TableConfig();
+        mainTable.setTableName("assessment_question_options");//init_sql中的表名
+        mainTable.setIsMain(false);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        mainTable.setRelationField("assessment_question_id");//设置外键
+        mainTable.setRelationTableField(GlobalConstant.DEFAULT_PK);//设置外键
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("assessment");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+
+    }
 }