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

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java
大数据与最优化研究所 преди 1 година
родител
ревизия
0e7193e6c1
променени са 27 файла, в които са добавени 1091 реда и са изтрити 6 реда
  1. 2 4
      src/main/java/com/xjrsoft/common/mybatis/SqlRunnerAdapter.java
  2. 101 0
      src/main/java/com/xjrsoft/module/assessment/controller/AssessmentTemplateController.java
  3. 61 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionDto.java
  4. 48 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentQuestionOptionsDto.java
  5. 46 0
      src/main/java/com/xjrsoft/module/assessment/dto/AddAssessmentTemplateDto.java
  6. 26 0
      src/main/java/com/xjrsoft/module/assessment/dto/AssessmentTemplatePageDto.java
  7. 34 0
      src/main/java/com/xjrsoft/module/assessment/dto/UpdateAssessmentTemplateDto.java
  8. 116 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestion.java
  9. 98 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentQuestionOptions.java
  10. 96 0
      src/main/java/com/xjrsoft/module/assessment/entity/AssessmentTemplate.java
  11. 20 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionMapper.java
  12. 20 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentQuestionOptionsMapper.java
  13. 17 0
      src/main/java/com/xjrsoft/module/assessment/mapper/AssessmentTemplateMapper.java
  14. 40 0
      src/main/java/com/xjrsoft/module/assessment/service/IAssessmentTemplateService.java
  15. 79 0
      src/main/java/com/xjrsoft/module/assessment/service/impl/AssessmentTemplateServiceImpl.java
  16. 49 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionOptionsVo.java
  17. 59 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentQuestionVo.java
  18. 44 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplatePageVo.java
  19. 51 0
      src/main/java/com/xjrsoft/module/assessment/vo/AssessmentTemplateVo.java
  20. 4 0
      src/main/java/com/xjrsoft/module/material/service/impl/MaterialTypeServiceImpl.java
  21. 4 0
      src/main/java/com/xjrsoft/module/workflow/dto/UpdateWorkflowSchemaDto.java
  22. 3 0
      src/main/java/com/xjrsoft/module/workflow/entity/WorkflowSchema.java
  23. 14 2
      src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java
  24. 4 0
      src/main/java/com/xjrsoft/module/workflow/vo/UserTaskInfoVo.java
  25. 3 0
      src/main/java/com/xjrsoft/module/workflow/vo/WorkflowSchemaInfoVo.java
  26. 3 0
      src/main/java/com/xjrsoft/module/workflow/vo/WorkflowSchemaPageVo.java
  27. 49 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 2 - 4
src/main/java/com/xjrsoft/common/mybatis/SqlRunnerAdapter.java

@@ -242,9 +242,7 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
     public Boolean dynamicInsert(String tableName, Entity params) {
         ImmutablePair<String, List<String>> sql = dynamicInsertBuild(tableName, params);
         //执行sql
-//        long keyValue = IdUtil.getSnowflakeNextId();
-//        String sql = "insert into official_document_received(communication_number,emergency_level,document_level,communication_org,received_date,checkout_time,file_id,received_title,received_type,received_number,id,create_user_id,create_date,delete_mark,enabled_mark) VALUES ('12312','emergency_level2','document_level1','asdfasd','2024-02-26','2024-02-26 00:06:00','1761947003676405762','发生的发生的newnewnewnnewnewnewewewewe','rt_administrative','123123','" + keyValue + "','1000000000000000000','2024-02-27 17:43:59.140274','0','1')";
-        return this.insert(sql.left, sql.right.toArray());
+         return this.insert(sql.left, sql.right.toArray());
     }
 
     @Transactional
@@ -274,7 +272,7 @@ public class SqlRunnerAdapter implements ISqlRunner, Closeable {
                 continue;
             }
             String strValue = value.toString();
-            sql.INTO_COLUMNS(key);
+            sql.INTO_COLUMNS(String.format("`%s`", key));
             sql.INTO_VALUES(String.format("{%d}", i));
             args.add(strValue);
             i++;

+ 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;
+
+}

+ 4 - 0
src/main/java/com/xjrsoft/module/material/service/impl/MaterialTypeServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.material.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+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;
@@ -202,6 +203,9 @@ public class MaterialTypeServiceImpl extends MPJBaseServiceImpl<MaterialTypeMapp
 
         for(MaterialTypeVo materialTypeVo : pageOutput){
             String materialCategoryStr = materialTypeVo.getMaterialCategory();
+            if(StrUtil.isEmpty(materialCategoryStr)){
+                continue;
+            }
             String[] materialCategoryStrArr = materialCategoryStr.split(",");
 
             for (String category : materialCategoryStrArr) {

+ 4 - 0
src/main/java/com/xjrsoft/module/workflow/dto/UpdateWorkflowSchemaDto.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.workflow.dto;
 
 import com.xjrsoft.module.workflow.model.ProcessConfig;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotNull;
@@ -26,4 +27,7 @@ public class UpdateWorkflowSchemaDto implements Serializable {
     @NotNull(message = "子节点配置不能为空")
     private List<Map<String, Object>> childNodeConfig;
 
+    @ApiModelProperty("样式(0:表单 1:表格)")
+    private Integer styleType;
+
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/workflow/entity/WorkflowSchema.java

@@ -64,4 +64,7 @@ public class WorkflowSchema extends AuditEntity implements Serializable {
     @ApiModelProperty("流程设计图")
     private String workflowChat;
 
+    @ApiModelProperty("样式(0:表单 1:表格)")
+    private Integer styleType;
+
 }

+ 14 - 2
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -37,7 +37,6 @@ import com.xjrsoft.module.form.mapper.FormTemplateMapper;
 import com.xjrsoft.module.form.service.IFormExecuteService;
 import com.xjrsoft.module.magicapi.service.IMagicApiService;
 import com.xjrsoft.module.magicapi.vo.MagicApiInfoVo;
-import com.xjrsoft.module.oa.entity.News;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.service.IUserService;
@@ -294,6 +293,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
         WorkflowSchema workflowSchema = workflowSchemaMapper.selectOne(Wrappers.lambdaQuery(WorkflowSchema.class).eq(WorkflowSchema::getId, schemaIdVar.get().getValue()));
 
         UserTaskInfoVo vo = new UserTaskInfoVo();
+        vo.setStyleType(workflowSchema.getStyleType());
         vo.setWorkflowChat(workflowSchema.getWorkflowChat());
 
         //获取到整个流程模板的配置
@@ -529,10 +529,22 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
         WorkflowSchema workflowSchema = workflowSchemaMapper.selectOne(Wrappers.lambdaQuery(WorkflowSchema.class).eq(WorkflowSchema::getId, schemaIdVar.get().getValue()));
 
         //获取到整个流程模板的配置
-        WorkflowSchemaConfig workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
+        // TODO 判断当前流程是否发生了变更
+        WorkflowSchemaConfig workflowSchemaConfig = null;
+        if (workflowSchema.getDefinitionId().equals(historicProcessInstance.getProcessDefinitionId())) {
+            workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
+        } else {
+            WorkflowSchemaHistory workflowSchemaHistory = workflowSchemaHistoryMapper.selectOne(Wrappers.lambdaQuery(WorkflowSchemaHistory.class).eq(WorkflowSchemaHistory::getDefinitionId, historicProcessInstance.getProcessDefinitionId()));
+            if (workflowSchemaHistory == null) {
+                throw new MyException("流转历史记录已丢失!");
+            }
+            workflowSchemaConfig = JSONUtil.toBean(workflowSchemaHistory.getJsonContent(), WorkflowSchemaConfig.class);
+        }
+//        WorkflowSchemaConfig workflowSchemaConfig = JSONUtil.toBean(workflowSchema.getJsonContent(), WorkflowSchemaConfig.class);
 
         UserTaskInfoVo vo = new UserTaskInfoVo();
         vo.setWorkflowChat(workflowSchema.getWorkflowChat());
+        vo.setStyleType(workflowSchema.getStyleType());
         //如果 所有 节点 包含 用户任务 || 外部流程 ||子流程
         if (workflowSchemaConfig.getChildNodeConfig().stream().anyMatch(x -> x.containsValue(WorkflowConstant.BPMN_XML_USER_TASK_TYPE_NAME) || x.containsValue(WorkflowConstant.BPMN_XML_CALL_ACTIVITY_TYPE_NAME) || x.containsValue(WorkflowConstant.BPMN_XML_SUB_PROCESS_TYPE_NAME))) {
 //            ActivityInstance activityInstance = runtimeService.getActivityInstance(processId);

+ 4 - 0
src/main/java/com/xjrsoft/module/workflow/vo/UserTaskInfoVo.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.workflow.vo;
 import com.xjrsoft.module.workflow.entity.WorkflowApproveRecord;
 import com.xjrsoft.module.workflow.model.ButtonConfig;
 import com.xjrsoft.module.workflow.model.OpinionConfig;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.List;
@@ -70,4 +71,7 @@ public class UserTaskInfoVo {
      * 流程图
      */
     private String workflowChat;
+
+    @ApiModelProperty("样式(0:表单 1:表格)")
+    private Integer styleType = 0;
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/workflow/vo/WorkflowSchemaInfoVo.java

@@ -38,4 +38,7 @@ public class WorkflowSchemaInfoVo {
 
     @ApiModelProperty("模板Json")
     private String jsonContent;
+
+    @ApiModelProperty("样式(0:表单 1:表格)")
+    private Integer styleType;
 }

+ 3 - 0
src/main/java/com/xjrsoft/module/workflow/vo/WorkflowSchemaPageVo.java

@@ -47,5 +47,8 @@ public class WorkflowSchemaPageVo implements Serializable {
     @ApiModelProperty("备注")
     private String remark;
 
+    @ApiModelProperty("样式(0:表单 1:表格)")
+    private Integer styleType;
+
 
 }

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

@@ -2491,4 +2491,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);
+
+    }
 }