فهرست منبع

移动端评价结果保存

phoenix 1 سال پیش
والد
کامیت
bd2db3789e
17فایلهای تغییر یافته به همراه587 افزوده شده و 40 حذف شده
  1. 102 0
      src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateSubmitRecordController.java
  2. 48 0
      src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateSubmitRecordDto.java
  3. 6 0
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultSaveDto.java
  4. 26 0
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateSubmitRecordPageDto.java
  5. 32 0
      src/main/java/com/xjrsoft/module/evaluate/dto/UpdateEvaluateSubmitRecordDto.java
  6. 7 12
      src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateResult.java
  7. 67 0
      src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateSubmitRecord.java
  8. 17 0
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateSubmitRecordMapper.java
  9. 17 0
      src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateSubmitRecordService.java
  10. 21 12
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java
  11. 15 4
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java
  12. 69 10
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java
  13. 25 0
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateSubmitRecordServiceImpl.java
  14. 54 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateSubmitRecordPageVo.java
  15. 49 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateSubmitRecordVo.java
  16. 3 2
      src/main/resources/mapper/evaluate/EvaluateObjectMapper.xml
  17. 29 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 102 - 0
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateSubmitRecordController.java

@@ -0,0 +1,102 @@
+package com.xjrsoft.module.evaluate.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.evaluate.dto.AddEvaluateSubmitRecordDto;
+import com.xjrsoft.module.evaluate.dto.UpdateEvaluateSubmitRecordDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.evaluate.dto.EvaluateSubmitRecordPageDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateSubmitRecord;
+import com.xjrsoft.module.evaluate.service.IEvaluateSubmitRecordService;
+import com.xjrsoft.module.evaluate.vo.EvaluateSubmitRecordPageVo;
+
+import com.xjrsoft.module.evaluate.vo.EvaluateSubmitRecordVo;
+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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/evaluate" + "/evaluateSubmitRecord")
+@Api(value = "/evaluate"  + "/evaluateSubmitRecord",tags = "参评人提交记录表代码")
+@AllArgsConstructor
+public class EvaluateSubmitRecordController {
+
+
+    private final IEvaluateSubmitRecordService evaluateSubmitRecordService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="参评人提交记录表列表(分页)")
+    @SaCheckPermission("evaluatesubmitrecord:detail")
+    public RT<PageOutput<EvaluateSubmitRecordPageVo>> page(@Valid EvaluateSubmitRecordPageDto dto){
+
+        LambdaQueryWrapper<EvaluateSubmitRecord> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(EvaluateSubmitRecord::getId)
+                .select(EvaluateSubmitRecord.class,x -> VoToColumnUtil.fieldsToColumns(EvaluateSubmitRecordPageVo.class).contains(x.getProperty()));
+        IPage<EvaluateSubmitRecord> page = evaluateSubmitRecordService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<EvaluateSubmitRecordPageVo> pageOutput = ConventPage.getPageOutput(page, EvaluateSubmitRecordPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询参评人提交记录表信息")
+    @SaCheckPermission("evaluatesubmitrecord:detail")
+    public RT<EvaluateSubmitRecordVo> info(@RequestParam Long id){
+        EvaluateSubmitRecord evaluateSubmitRecord = evaluateSubmitRecordService.getById(id);
+        if (evaluateSubmitRecord == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(evaluateSubmitRecord, EvaluateSubmitRecordVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增参评人提交记录表")
+    @SaCheckPermission("evaluatesubmitrecord:add")
+    public RT<Boolean> add(@Valid @RequestBody AddEvaluateSubmitRecordDto dto){
+        EvaluateSubmitRecord evaluateSubmitRecord = BeanUtil.toBean(dto, EvaluateSubmitRecord.class);
+        boolean isSuccess = evaluateSubmitRecordService.save(evaluateSubmitRecord);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改参评人提交记录表")
+    @SaCheckPermission("evaluatesubmitrecord:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateEvaluateSubmitRecordDto dto){
+
+        EvaluateSubmitRecord evaluateSubmitRecord = BeanUtil.toBean(dto, EvaluateSubmitRecord.class);
+        return RT.ok(evaluateSubmitRecordService.updateById(evaluateSubmitRecord));
+
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除参评人提交记录表")
+    @SaCheckPermission("evaluatesubmitrecord:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(evaluateSubmitRecordService.removeBatchByIds(ids));
+
+    }
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateSubmitRecordDto.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.evaluate.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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+public class AddEvaluateSubmitRecordDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private Long evaluateManageId;
+    /**
+    * 参评人编号
+    */
+    @ApiModelProperty("参评人编号")
+    private Long evaluateExecuterId;
+    /**
+    * 被评对象(teacher:老师,class:班级,student:学生)
+    */
+    @ApiModelProperty("被评对象(teacher:老师,class:班级,student:学生)")
+    private String evaluatedObject;
+    /**
+    * 被评对象编号
+    */
+    @ApiModelProperty("被评对象编号")
+    private Long evaluatedObjectId;
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateResultSaveDto.java

@@ -28,6 +28,12 @@ public class EvaluateResultSaveDto implements Serializable {
     @ApiModelProperty(value = "评价对象主键编号",required = true)
     private Long evaluateObjectId;
 
+    /**
+     * 评价类型
+     */
+    @ApiModelProperty(value = "评价类型")
+    private String evaluateType;
+
     @ApiModelProperty(value = "填写答案信息")
     private List<AddEvaluateResultDto> resultList;
 }

+ 26 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateSubmitRecordPageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.evaluate.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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvaluateSubmitRecordPageDto extends PageInput {
+
+
+}

+ 32 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/UpdateEvaluateSubmitRecordDto.java

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.evaluate.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;
+
+
+
+/**
+* @title: 参评人提交记录表
+* @Author szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+public class UpdateEvaluateSubmitRecordDto extends AddEvaluateSubmitRecordDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 7 - 12
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateResult.java

@@ -1,19 +1,11 @@
 package com.xjrsoft.module.evaluate.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 com.baomidou.mybatisplus.annotation.*;
 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;
 
 
@@ -103,6 +95,9 @@ public class EvaluateResult implements Serializable {
     */
     @ApiModelProperty("建议/意见")
     private String opinion;
-
-
+    /**
+     * 提交记录主键编号
+     */
+    @ApiModelProperty("提交记录主键编号")
+    private Long submitRecordId;
 }

+ 67 - 0
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateSubmitRecord.java

@@ -0,0 +1,67 @@
+package com.xjrsoft.module.evaluate.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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+@TableName("evaluate_submit_record")
+@ApiModel(value = "evaluate_submit_record", description = "参评人提交记录表")
+public class EvaluateSubmitRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private Long evaluateManageId;
+    /**
+    * 参评人编号
+    */
+    @ApiModelProperty("参评人编号")
+    private Long evaluateExecuterId;
+    /**
+    * 提交时间
+    */
+    @ApiModelProperty("提交时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 被评对象(teacher:老师,class:班级,student:学生)
+    */
+    @ApiModelProperty("被评对象(teacher:老师,class:班级,student:学生)")
+    private String evaluatedObject;
+    /**
+    * 被评对象编号
+    */
+    @ApiModelProperty("被评对象编号")
+    private Long evaluatedObjectId;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateSubmitRecordMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.evaluate.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.evaluate.entity.EvaluateSubmitRecord;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 参评人提交记录表
+* @Author szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Mapper
+public interface EvaluateSubmitRecordMapper extends MPJBaseMapper<EvaluateSubmitRecord> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateSubmitRecordService.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.evaluate.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.evaluate.entity.EvaluateSubmitRecord;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 参评人提交记录表
+* @Author szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+
+public interface IEvaluateSubmitRecordService extends MPJBaseService<EvaluateSubmitRecord> {
+}

+ 21 - 12
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java

@@ -84,20 +84,29 @@ public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManage
         }
 //        evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong());
 
-        //查询模板中的评价项
-        List<EvaluateItem> evaluateItemList = evaluateItemMapper.selectList(
-            new QueryWrapper<EvaluateItem>().lambda()
-            .eq(EvaluateItem::getEvaluateTemplateId, evaluateManage.getEvaluateTemplateId())
+        List<EvaluateManageItem> evaluateManageItemList = evaluateManageItemMapper.selectList(
+                new QueryWrapper<EvaluateManageItem>().lambda()
+                        .eq(EvaluateManageItem::getEvaluateManageId, id)
         );
-        //克隆一份,存到评价管理下面,可以采用sql语句
-        for (EvaluateItem evaluateItem : evaluateItemList) {
-            EvaluateManageItem manageItem = BeanUtil.toBean(evaluateItem, EvaluateManageItem.class);
-            manageItem.setEvaluateManageId(evaluateManage.getId());
-            manageItem.setEvaluateItemId(manageItem.getId());
-            manageItem.setCreateDate(new Date());
-            manageItem.setCreateUserId(StpUtil.getLoginIdAsLong());
-            evaluateManageItemMapper.insert(manageItem);
+
+        if(evaluateManageItemList.size() <= 0){
+            //查询模板中的评价项
+            List<EvaluateItem> evaluateItemList = evaluateItemMapper.selectList(
+                    new QueryWrapper<EvaluateItem>().lambda()
+                            .eq(EvaluateItem::getEvaluateTemplateId, evaluateManage.getEvaluateTemplateId())
+            );
+            //克隆一份,存到评价管理下面,可以采用sql语句
+            for (EvaluateItem evaluateItem : evaluateItemList) {
+                EvaluateManageItem manageItem = BeanUtil.toBean(evaluateItem, EvaluateManageItem.class);
+                manageItem.setId(null);
+                manageItem.setEvaluateManageId(evaluateManage.getId());
+                manageItem.setEvaluateItemId(evaluateItem.getId());
+                manageItem.setCreateDate(new Date());
+                manageItem.setCreateUserId(StpUtil.getLoginIdAsLong());
+                evaluateManageItemMapper.insert(manageItem);
+            }
         }
+
         //将评价管理状态改为进行中
         evaluateManage.setStatus(1);
         evaluateManage.setModifyDate(new Date());

+ 15 - 4
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -8,16 +8,19 @@ import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.evaluate.dto.*;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
+import com.xjrsoft.module.evaluate.entity.EvaluateTemplate;
 import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
 import com.xjrsoft.module.evaluate.service.IEvaluateObjectService;
 import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateManageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectGradeListVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
 import lombok.AllArgsConstructor;
@@ -103,13 +106,21 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
 
     @Override
     public Boolean save(SaveEvaluateObjectDto dto) {
-        EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
-        if(manage == null){
+        //获取当前评价管理的类型
+        MPJLambdaWrapper<EvaluateManage> evaluateManageMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        evaluateManageMPJLambdaWrapper
+                .selectAs(EvaluateTemplate::getEvaluateType, EvaluateManageVo::getEvaluateType)
+                .select(EvaluateManage.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateManageVo.class).contains(x.getProperty()))
+                .innerJoin(EvaluateTemplate.class, EvaluateTemplate::getId, EvaluateManage::getEvaluateTemplateId)
+                .eq(EvaluateManage::getId, dto.getEvaluateManageId())
+                .disableSubLogicDel();
+        EvaluateManageVo evaluateManageVo = evaluateManageMapper.selectJoinOne(EvaluateManageVo.class, evaluateManageMPJLambdaWrapper);
+        if(evaluateManageVo == null){
            throw new MyException("未查询到信息,evaluateManageId不正确");
         }
         //清空原有数据
-        evaluateObjectMapper.deleteByEvaluateManageId(manage.getId());
-        evaluateExecuterMapper.deleteByEvaluateManageId(manage.getId());
+        evaluateObjectMapper.deleteByEvaluateManageId(evaluateManageVo.getId());
+        evaluateExecuterMapper.deleteByEvaluateManageId(evaluateManageVo.getId());
         //保存新数据
         Date createDate = new Date();
         long createUserId = StpUtil.getLoginIdAsLong();

+ 69 - 10
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java

@@ -12,18 +12,14 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.evaluate.dto.*;
-import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
-import com.xjrsoft.module.evaluate.entity.EvaluateManageItem;
-import com.xjrsoft.module.evaluate.entity.EvaluateObject;
-import com.xjrsoft.module.evaluate.entity.EvaluateResult;
-import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
-import com.xjrsoft.module.evaluate.mapper.EvaluateManageItemMapper;
-import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
-import com.xjrsoft.module.evaluate.mapper.EvaluateResultMapper;
+import com.xjrsoft.module.evaluate.entity.*;
+import com.xjrsoft.module.evaluate.mapper.*;
 import com.xjrsoft.module.evaluate.service.IEvaluateResultService;
 import com.xjrsoft.module.evaluate.vo.*;
 import com.xjrsoft.module.teacher.entity.XjrUser;
@@ -33,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.ByteArrayOutputStream;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -50,8 +47,12 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
 
     private EvaluateResultMapper evaluateResultMapper;
 
+    private EvaluateManageMapper evaluateManageMapper;
+
     private EvaluateManageItemMapper evaluateManageItemMapper;
 
+    private EvaluateSubmitRecordMapper evaluateSubmitRecordMapper;
+
     private EvaluateExecuterMapper evaluateExecuterMapper;
 
     @Override
@@ -265,7 +266,20 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
     public String saveBatch(EvaluateResultSaveDto dto) {
         Long loginUserId = StpUtil.getLoginIdAsLong();
         Date createDate = new Date();
-        //修改答题人状态
+        //获取当前评价管理的类型
+        MPJLambdaWrapper<EvaluateManage> evaluateManageMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        evaluateManageMPJLambdaWrapper
+                .selectAs(EvaluateTemplate::getEvaluateType, EvaluateManageVo::getEvaluateType)
+                .select(EvaluateManage.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateManageVo.class).contains(x.getProperty()))
+                .innerJoin(EvaluateTemplate.class, EvaluateTemplate::getId, EvaluateManage::getEvaluateTemplateId)
+                .eq(EvaluateManage::getId, dto.getEvaluateManageId())
+                .disableSubLogicDel();
+        EvaluateManageVo evaluateManageVo = evaluateManageMapper.selectJoinOne(EvaluateManageVo.class, evaluateManageMPJLambdaWrapper);
+
+        if(evaluateManageVo == null){
+            return "该评价已失效!";
+        }
+
         EvaluateExecuter executer = evaluateExecuterMapper.selectOne(
             new QueryWrapper<EvaluateExecuter>().lambda()
             .eq(EvaluateExecuter::getUserId, loginUserId)
@@ -273,18 +287,63 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
             .eq(EvaluateExecuter::getEvaluateObjectId, dto.getEvaluateObjectId())
         );
 
+        if(executer == null){
+            return "该评价已失效!";
+        }
+
+        if(executer.getStatus() == 1){
+            return "已经评价,请勿重复评价";
+        }
+
+        //当评价需要重复评价,判断今天是否已经评价
+        if(evaluateManageVo.getIsAutoCreate() == 1){
+            //查询参评人提交记录
+            EvaluateSubmitRecord oldEvaluateSubmitRecord = evaluateSubmitRecordMapper.selectOne(
+                    new QueryWrapper<EvaluateSubmitRecord>().lambda()
+                            .eq(EvaluateSubmitRecord::getEvaluateManageId, dto.getEvaluateManageId())
+                            .eq(EvaluateSubmitRecord::getEvaluatedObjectId, dto.getEvaluateObjectId())
+                            .eq(EvaluateSubmitRecord::getEvaluateExecuterId, executer.getId())
+                            .like(EvaluateSubmitRecord::getCreateDate, LocalDate.now())
+            );
+
+            if(oldEvaluateSubmitRecord != null){
+                return "今日已经评价,请勿重复评价";
+            }
+        }
+
+        //新增参评人提交记录表
+        EvaluateSubmitRecord evaluateSubmitRecord = new EvaluateSubmitRecord();
+        evaluateSubmitRecord.setEvaluateManageId(evaluateManageVo.getId());
+        evaluateSubmitRecord.setEvaluateExecuterId(executer.getId());
+        evaluateSubmitRecord.setCreateDate(createDate);
+        if(evaluateManageVo.getEvaluateType().equals(EvaluateTypeEnum.DRILLMASTER_EVALUATE_CLASS.getCode())){
+            evaluateSubmitRecord.setEvaluatedObject("class");
+        }
+        if(evaluateManageVo.getEvaluateType().equals(EvaluateTypeEnum.STUDENT_EVALUATE_HEAD_TEACHER.getCode())){
+            evaluateSubmitRecord.setEvaluatedObject("teacher");
+        }
+        evaluateSubmitRecord.setEvaluatedObjectId(executer.getEvaluateObjectId());
+        evaluateSubmitRecordMapper.insert(evaluateSubmitRecord);
+
         List<AddEvaluateResultDto> resultList = dto.getResultList();
         for (AddEvaluateResultDto addEvaluateResultDto : resultList) {
             EvaluateResult evaluateResult = BeanUtil.toBean(addEvaluateResultDto, EvaluateResult.class);
-            evaluateResult.setEvaluatedObject("teacher");
+            if(evaluateManageVo.getEvaluateType().equals(EvaluateTypeEnum.DRILLMASTER_EVALUATE_CLASS.getCode())){
+                evaluateResult.setEvaluatedObject("class");
+            }
+            if(evaluateManageVo.getEvaluateType().equals(EvaluateTypeEnum.STUDENT_EVALUATE_HEAD_TEACHER.getCode())){
+                evaluateResult.setEvaluatedObject("teacher");
+            }
             evaluateResult.setUserId(executer.getId());
             evaluateResult.setEvaluatedObjectId(executer.getEvaluateObjectId());
             evaluateResult.setDeleteMark(DeleteMark.NODELETE.getCode());
             evaluateResult.setEnabledMark(EnabledMark.ENABLED.getCode());
             evaluateResult.setCreateDate(createDate);
+            evaluateResult.setSubmitRecordId(evaluateSubmitRecord.getId());
             evaluateResultMapper.insert(evaluateResult);
         }
 
+        //修改答题人状态
         UpdateWrapper<EvaluateExecuter> updateWrapper = new UpdateWrapper<>();
         updateWrapper.eq("id", executer.getId());
         updateWrapper.setSql("status = 1");

+ 25 - 0
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateSubmitRecordServiceImpl.java

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.evaluate.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.evaluate.entity.EvaluateSubmitRecord;
+import com.xjrsoft.module.evaluate.mapper.EvaluateSubmitRecordMapper;
+import com.xjrsoft.module.evaluate.service.IEvaluateSubmitRecordService;
+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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EvaluateSubmitRecordServiceImpl extends MPJBaseServiceImpl<EvaluateSubmitRecordMapper, EvaluateSubmitRecord> implements IEvaluateSubmitRecordService {
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateSubmitRecordPageVo.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.evaluate.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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+public class EvaluateSubmitRecordPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private Long evaluateManageId;
+    /**
+    * 参评人编号
+    */
+    @ApiModelProperty("参评人编号")
+    private Long evaluateExecuterId;
+    /**
+    * 提交时间
+    */
+    @ApiModelProperty("提交时间")
+    private Date createDate;
+    /**
+    * 被评对象(teacher:老师,class:班级,student:学生)
+    */
+    @ApiModelProperty("被评对象(teacher:老师,class:班级,student:学生)")
+    private String evaluatedObject;
+    /**
+    * 被评对象编号
+    */
+    @ApiModelProperty("被评对象编号")
+    private Long evaluatedObjectId;
+
+}

+ 49 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateSubmitRecordVo.java

@@ -0,0 +1,49 @@
+package com.xjrsoft.module.evaluate.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 szs
+* @Date: 2024-02-02
+* @Version 1.0
+*/
+@Data
+public class EvaluateSubmitRecordVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private Long evaluateManageId;
+    /**
+    * 参评人编号
+    */
+    @ApiModelProperty("参评人编号")
+    private Long evaluateExecuterId;
+    /**
+    * 被评对象(teacher:老师,class:班级,student:学生)
+    */
+    @ApiModelProperty("被评对象(teacher:老师,class:班级,student:学生)")
+    private String evaluatedObject;
+    /**
+    * 被评对象编号
+    */
+    @ApiModelProperty("被评对象编号")
+    private Long evaluatedObjectId;
+
+
+
+}

+ 3 - 2
src/main/resources/mapper/evaluate/EvaluateObjectMapper.xml

@@ -5,10 +5,11 @@
 <mapper namespace="com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper">
     <select id="getObjectList" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto"
             resultType="com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo">
-        SELECT distinct t1.id,t1.base_grade_id,t2.name AS grade_name,t1.object_id,t3.name AS object_name
+        SELECT distinct t1.id,t1.base_grade_id as gradeId,t2.name AS grade_name,t1.object_id,ifnull(t3.name, t6.name) AS object_name
         FROM evaluate_object t1
         LEFT JOIN base_grade t2 ON t2.id = t1.base_grade_id
         LEFT JOIN xjr_user t3 ON t3.id = t1.object_id
+        LEFT JOIN base_class t6 ON t6.id = t1.object_id
         LEFT JOIN xjr_user_dept_relation t4 ON t4.user_id = t1.object_id
         LEFT JOIN base_class t5 ON t5.grade_id = t2.id
         WHERE t1.delete_mark = 0 and t1.evaluate_manage_id = #{dto.evaluateManageId}
@@ -29,7 +30,7 @@
 
     <select id="getExecuterList" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto"
             resultType="com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo">
-        SELECT t1.evaluate_object_id,t2.name AS executer_name,t1.id as executer_id FROM evaluate_executer t1
+        SELECT t1.id, t1.evaluate_object_id,t2.name AS executer_name,t1.user_id as executer_id FROM evaluate_executer t1
         LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
         WHERE t1.delete_mark = 0 and t1.evaluate_manage_id = #{dto.evaluateManageId}
     </select>

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

@@ -2186,4 +2186,33 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    /**
+     * 评价提交记录
+     * @throws IOException
+     */
+    @Test
+    public void gcEvaluateSubmitRecord() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("evaluate_submit_record");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("szs");//作者名称
+        params.setPackageName("evaluate");//包名
+        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);
+    }
 }