Bladeren bron

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

# Conflicts:
#	src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateExecuter.java
phoenix 1 jaar geleden
bovenliggende
commit
bbd4f79eb8
28 gewijzigde bestanden met toevoegingen van 1060 en 193 verwijderingen
  1. 63 0
      src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateObjectController.java
  2. 58 0
      src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateWriteController.java
  3. 7 23
      src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateExecuterDto.java
  4. 21 30
      src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateObjectDto.java
  5. 27 0
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateObjectListDto.java
  6. 24 0
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateWritePageDto.java
  7. 30 0
      src/main/java/com/xjrsoft/module/evaluate/dto/SaveEvaluateObjectDto.java
  8. 0 2
      src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateExecuter.java
  9. 2 11
      src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateObject.java
  10. 4 0
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateExecuterMapper.java
  11. 11 0
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateManageMapper.java
  12. 18 1
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java
  13. 8 1
      src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateManageService.java
  14. 25 0
      src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateObjectService.java
  15. 28 77
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java
  16. 132 0
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java
  17. 12 4
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateExecuterVo.java
  18. 60 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateObjectListVo.java
  19. 0 2
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateObjectVo.java
  20. 47 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWritePageVo.java
  21. 42 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWriteVo.java
  22. 16 1
      src/main/resources/mapper/evaluate/EvaluateManageMapper.xml
  23. 37 0
      src/main/resources/mapper/evaluate/EvaluateObjectMapper.xml
  24. 13 9
      src/main/resources/mapper/evaluationmanagemen/EvaluateTemplateMapper.xml
  25. 1 1
      src/main/resources/mapper/textbook/TextbookMapper.xml
  26. 2 1
      src/main/resources/sqlScript/20240112_sql.sql
  27. 366 30
      src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java
  28. 6 0
      src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

+ 63 - 0
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateObjectController.java

@@ -0,0 +1,63 @@
+package com.xjrsoft.module.evaluate.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.evaluate.dto.AddEvaluateObjectDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
+import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
+import com.xjrsoft.module.evaluate.service.IEvaluateObjectService;
+import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 评价管理
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/evaluate" + "/evaluateobject")
+@Api(value = "/evaluate"  + "/evaluateobject",tags = "被评对象管理代码")
+@AllArgsConstructor
+public class EvaluateObjectController {
+
+
+    private final IEvaluateObjectService evaluateObjectService;
+
+    @GetMapping(value = "/object-list")
+    @ApiOperation(value="评价对象列表(已生成数据)")
+    @SaCheckPermission("evaluateobject:detail")
+    public RT<List<EvaluateObjectListVo>> objectList(@Valid EvaluateObjectListDto dto){
+        List<EvaluateObjectListVo> list = evaluateObjectService.getObjectList(dto.getEvaluateManageId());
+        return RT.ok(list);
+    }
+
+    @PostMapping
+    @ApiOperation(value = "评价对象保存")
+    @SaCheckPermission("evaluateobject:save")
+    public RT<Boolean> save(@Valid @RequestBody SaveEvaluateObjectDto dto){
+        boolean isSuccess = evaluateObjectService.save(dto);
+        return RT.ok(isSuccess);
+    }
+
+
+    @GetMapping(value = "/use-object-list")
+    @ApiOperation(value="评价对象列表(用于选择的数据)")
+    @SaCheckPermission("evaluateobject:detail")
+    public RT<List<EvaluateObjectListVo>> useObjectList(@Valid EvaluateObjectListDto dto){
+        List<EvaluateObjectListVo> list = evaluateObjectService.getNewObjectList(dto);
+        return RT.ok(list);
+    }
+
+
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateWriteController.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.evaluate.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
+import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/evaluate" + "/evaluatewrite")
+@Api(value = "/evaluate"  + "/evaluatewrite",tags = "移动端评价管理代码")
+@AllArgsConstructor
+public class EvaluateWriteController {
+
+
+    private final IEvaluateManageService evaluateManageService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="评价管理列表(分页)")
+    @SaCheckPermission("evaluatemanage:detail")
+    public RT<PageOutput<EvaluateWritePageVo>> page(@Valid EvaluateWritePageDto dto){
+        Page<EvaluateWritePageVo> page = evaluateManageService.getMobilePage(new Page<>(dto.getLimit(), dto.getSize()), dto);
+        PageOutput<EvaluateWritePageVo> pageOutput = ConventPage.getPageOutput(page, EvaluateWritePageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询评价项信息")
+    @SaCheckPermission("evaluateitem:detail")
+    public RT<EvaluateWriteVo> info(@RequestParam Long id){
+        EvaluateWriteVo evaluateWriteVo = evaluateManageService.getWriteInfo(id);
+        if (evaluateWriteVo == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(evaluateWriteVo);
+    }
+
+
+}

+ 7 - 23
src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateExecuterDto.java

@@ -2,14 +2,8 @@ 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;
+import java.io.Serializable;
 
 
 
@@ -25,24 +19,14 @@ public class AddEvaluateExecuterDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-    * 序号
-    */
-    @ApiModelProperty("序号")
-    private Integer sortCode;
-    /**
-    * 评价管理编号
-    */
-    @ApiModelProperty("评价管理编号")
-    private Long evaluateManageId;
-    /**
-    * 被评对象id
+    * 参评人id
     */
-    @ApiModelProperty("被评对象id")
-    private Long evaluateObjectId;
+    @ApiModelProperty("参评人id")
+    private String executerId;
     /**
-    * 参加评价的人id
+    * 参评人姓名
     */
-    @ApiModelProperty("参加评价的人id")
-    private Long userId;
+    @ApiModelProperty("参评人姓名")
+    private String executerName;
 
 }

+ 21 - 30
src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateObjectDto.java

@@ -2,14 +2,9 @@ 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.io.Serializable;
 import java.util.List;
-import java.util.Date;
 
 
 
@@ -25,34 +20,30 @@ public class AddEvaluateObjectDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-    * 序号
+    * 被评价对象类别(teacher:老师,class:班级,student:学生)
     */
-    @ApiModelProperty("序号")
-    private Integer sortCode;
+    @ApiModelProperty("被评价对象类别(teacher:老师,class:班级,student:学生)")
+    private String objectType;
+
     /**
-    * 评价管理编号
-    */
-    @ApiModelProperty("评价管理编号")
-    private Long evaluateManageId;
+     * 被评价对象类别(teacher:老师,class:班级,student:学生)
+     */
+    @ApiModelProperty("被评价对象id")
+    private String objectId;
+
     /**
-    * 年级id
-    */
+     * 被评价对象类别(teacher:老师,class:班级,student:学生)
+     */
     @ApiModelProperty("年级id")
-    private Long baseGradeId;
-    /**
-    * 题目分数(最小为0,只能整数)
-    */
-    @ApiModelProperty("题目分数(最小为0,只能整数)")
-    private Long orgId;
-    /**
-    * 被评价对象id
-    */
-    @ApiModelProperty("被评价对象id")
-    private Long objectId;
+    private String gradeId;
+
     /**
-    * 被评价对象类别(teacher:老师,class:班级,student:学生)
-    */
-    @ApiModelProperty("被评价对象类别(teacher:老师,class:班级,student:学生)")
-    private String objectType;
+     * 被评价对象类别(teacher:老师,class:班级,student:学生)
+     */
+    @ApiModelProperty("被评价对象名称")
+    private String objectName;
+
+    @ApiModelProperty("参评人信息")
+    private List<AddEvaluateExecuterDto> executerList;
 
 }

+ 27 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateObjectListDto.java

@@ -0,0 +1,27 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+* @title: 评价管理分页查询入参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateObjectListDto implements Serializable {
+
+    @ApiModelProperty("评价管理id,添加时不用传")
+    private Long evaluateManageId;
+
+    @ApiModelProperty("参评的人数(all:全部, random15:随机15名),添加时传入使用")
+    private String executerCount;
+
+    @ApiModelProperty("年级id,添加时传入使用")
+    private Long gradeId;
+
+}

+ 24 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateWritePageDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 评价结果分页查询入参
+* @Author szs
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class EvaluateWritePageDto extends PageInput {
+
+    @ApiModelProperty("状态(1:已评分,0:未评分)")
+    private Integer status;
+
+    @ApiModelProperty("登录者id(前端不传,后端传)")
+    private Long loginUserId;
+}

+ 30 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/SaveEvaluateObjectDto.java

@@ -0,0 +1,30 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+* @title: 被评价对象
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class SaveEvaluateObjectDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private String evaluateManageId;
+
+    @ApiModelProperty("被评人信息")
+    private List<AddEvaluateObjectDto> objectList;
+
+}

+ 0 - 2
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateExecuter.java

@@ -91,6 +91,4 @@ public class EvaluateExecuter implements Serializable {
      */
     @ApiModelProperty("状态(1:已评分,0:未评分)")
     private Integer status;
-
-
 }

+ 2 - 11
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateObject.java

@@ -2,18 +2,14 @@ package com.xjrsoft.module.evaluate.entity;
 
 import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 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;
 
 
@@ -89,11 +85,6 @@ public class EvaluateObject implements Serializable {
     @ApiModelProperty("年级id")
     private Long baseGradeId;
     /**
-    * 题目分数(最小为0,只能整数)
-    */
-    @ApiModelProperty("题目分数(最小为0,只能整数)")
-    private Long orgId;
-    /**
     * 被评价对象id
     */
     @ApiModelProperty("被评价对象id")

+ 4 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateExecuterMapper.java

@@ -3,6 +3,7 @@ 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.EvaluateExecuter;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -14,4 +15,7 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface EvaluateExecuterMapper extends MPJBaseMapper<EvaluateExecuter> {
 
+    @Delete("DELETE FROM evaluate_executer WHERE evaluate_manage_id = #{evaluateManageId}")
+    Boolean deleteByEvaluateManageId(Long evaluateManageId);
+
 }

+ 11 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateManageMapper.java

@@ -3,8 +3,10 @@ package com.xjrsoft.module.evaluate.mapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -23,4 +25,13 @@ public interface EvaluateManageMapper extends MPJBaseMapper<EvaluateManage> {
      * @return
      */
     Page<EvaluateManagePageVo> getPage(Page<EvaluateManagePageDto> page, EvaluateManagePageDto dto);
+
+
+    /**
+     * 移动端分页查询
+     * @param page
+     * @param dto
+     * @return
+     */
+    Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto);
 }

+ 18 - 1
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java

@@ -1,9 +1,16 @@
 package com.xjrsoft.module.evaluate.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
+import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateObjectVo;
+import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
 * @title: 被评价对象
@@ -13,5 +20,15 @@ import org.apache.ibatis.annotations.Mapper;
 */
 @Mapper
 public interface EvaluateObjectMapper extends MPJBaseMapper<EvaluateObject> {
+    List<EvaluateObjectListVo> getObjectList(Long id);
+
+    List<EvaluateExecuterVo> getExecuterList(Long id);
+
+
+    List<EvaluateObjectListVo> getNewObjectList(@Param("dto") EvaluateObjectListDto dto);
+
+    List<EvaluateExecuterVo> getNewExecuterList(@Param("dto") EvaluateObjectListDto dto);
 
+    @Delete("DELETE FROM evaluate_object WHERE evaluate_manage_id = #{evaluateManageId}")
+    Boolean deleteByEvaluateManageId(Long evaluateManageId);
 }

+ 8 - 1
src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateManageService.java

@@ -3,9 +3,12 @@ package com.xjrsoft.module.evaluate.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
 
 import java.util.List;
 
@@ -56,5 +59,9 @@ public interface IEvaluateManageService extends MPJBaseService<EvaluateManage> {
      */
     Boolean release(Long id);
 
-    List<EvaluateObject> getObjectList(Long id);
+
+    Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto);
+
+    EvaluateWriteVo getWriteInfo(Long id);
+
 }

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

@@ -0,0 +1,25 @@
+package com.xjrsoft.module.evaluate.service;
+
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
+import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateObject;
+import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
+
+import java.util.List;
+
+/**
+* @title: 评价管理
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+
+public interface IEvaluateObjectService extends MPJBaseService<EvaluateObject> {
+
+    List<EvaluateObjectListVo> getObjectList(Long id);
+
+    Boolean save(SaveEvaluateObjectDto dto);
+
+    List<EvaluateObjectListVo> getNewObjectList(EvaluateObjectListDto dto);
+}

+ 28 - 77
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java

@@ -1,13 +1,17 @@
 package com.xjrsoft.module.evaluate.service.impl;
 
-import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
+import com.xjrsoft.module.evaluate.entity.EvaluateManageItem;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
 import com.xjrsoft.module.evaluate.mapper.EvaluateExecuterMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
@@ -16,13 +20,13 @@ import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper;
 import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateWriteVo;
 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;
 
 /**
 * @title: 评价管理
@@ -54,64 +58,6 @@ public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManage
     @Transactional(rollbackFor = Exception.class)
     public Boolean update(EvaluateManage evaluateManage) {
         evaluateManageMapper.updateById(evaluateManage);
-        //********************************* EvaluateObject  增删改  开始 *******************************************/
-        {
-            // 查出所有子级的id
-            List<EvaluateObject> evaluateObjectList = evaluateObjectMapper.selectList(Wrappers.lambdaQuery(EvaluateObject.class).eq(EvaluateObject::getEvaluateManageId, evaluateManage.getId()).select(EvaluateObject::getId));
-            List<Long> evaluateObjectIds = evaluateObjectList.stream().map(EvaluateObject::getId).collect(Collectors.toList());
-            //原有子表单 没有被删除的主键
-            List<Long> evaluateObjectOldIds = evaluateManage.getEvaluateObjectList().stream().map(EvaluateObject::getId).filter(Objects::nonNull).collect(Collectors.toList());
-            //找到需要删除的id
-            List<Long> evaluateObjectRemoveIds = evaluateObjectIds.stream().filter(item -> !evaluateObjectOldIds.contains(item)).collect(Collectors.toList());
-
-            for (EvaluateObject evaluateObject : evaluateManage.getEvaluateObjectList()) {
-                //如果不等于空则修改
-                if (evaluateObject.getId() != null) {
-                    evaluateObjectMapper.updateById(evaluateObject);
-                }
-                //如果等于空 则新增
-                else {
-                    //已经不存在的id 删除
-                    evaluateObject.setEvaluateManageId(evaluateManage.getId());
-                    evaluateObjectMapper.insert(evaluateObject);
-                }
-            }
-            //已经不存在的id 删除
-            if(evaluateObjectRemoveIds.size() > 0){
-                evaluateObjectMapper.deleteBatchIds(evaluateObjectRemoveIds);
-            }
-        }
-        //********************************* EvaluateObject  增删改  结束 *******************************************/
-
-        //********************************* EvaluateExecuter  增删改  开始 *******************************************/
-        {
-            // 查出所有子级的id
-            List<EvaluateExecuter> evaluateExecuterList = evaluateExecuterMapper.selectList(Wrappers.lambdaQuery(EvaluateExecuter.class).eq(EvaluateExecuter::getEvaluateManageId, evaluateManage.getId()).select(EvaluateExecuter::getId));
-            List<Long> evaluateExecuterIds = evaluateExecuterList.stream().map(EvaluateExecuter::getId).collect(Collectors.toList());
-            //原有子表单 没有被删除的主键
-            List<Long> evaluateExecuterOldIds = evaluateManage.getEvaluateExecuterList().stream().map(EvaluateExecuter::getId).filter(Objects::nonNull).collect(Collectors.toList());
-            //找到需要删除的id
-            List<Long> evaluateExecuterRemoveIds = evaluateExecuterIds.stream().filter(item -> !evaluateExecuterOldIds.contains(item)).collect(Collectors.toList());
-
-            for (EvaluateExecuter evaluateExecuter : evaluateManage.getEvaluateExecuterList()) {
-                //如果不等于空则修改
-                if (evaluateExecuter.getId() != null) {
-                    evaluateExecuterMapper.updateById(evaluateExecuter);
-                }
-                //如果等于空 则新增
-                else {
-                    //已经不存在的id 删除
-                    evaluateExecuter.setEvaluateManageId(evaluateManage.getId());
-                    evaluateExecuterMapper.insert(evaluateExecuter);
-                }
-            }
-            //已经不存在的id 删除
-            if(evaluateExecuterRemoveIds.size() > 0){
-                evaluateExecuterMapper.deleteBatchIds(evaluateExecuterRemoveIds);
-            }
-        }
-        //********************************* EvaluateExecuter  增删改  结束 *******************************************/
-
         return true;
     }
 
@@ -136,29 +82,34 @@ public class EvaluateManageServiceImpl extends MPJBaseServiceImpl<EvaluateManage
         if(evaluateManage == null){
             throw new MyException("未查询到数据,请检查传入的id是否正确");
         }
-        evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong());
-
-//        //查询模板中的评价项
-//        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.setEvaluateManageId(evaluateManage.getId());
-//            manageItem.setEvaluateItemId(manageItem.getId());
-//            evaluateManageItemMapper.insert(manageItem);
-//        }
+//        evaluateManageItemMapper.cloneItems(evaluateManage.getEvaluateTemplateId(), evaluateManage.getId(), StpUtil.getLoginIdAsLong());
+
+        //查询模板中的评价项
+        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.setEvaluateManageId(evaluateManage.getId());
+            manageItem.setEvaluateItemId(manageItem.getId());
+            evaluateManageItemMapper.insert(manageItem);
+        }
         //将评价管理状态改为进行中
         evaluateManage.setStatus(1);
-        evaluateManageMapper.insert(evaluateManage);
+        evaluateManageMapper.updateById(evaluateManage);
         return true;
     }
 
     @Override
-    public List<EvaluateObject> getObjectList(Long id) {
+    public Page<EvaluateWritePageVo> getMobilePage(Page<EvaluateWritePageDto> page, EvaluateWritePageDto dto) {
+        return null;
+    }
 
+    @Override
+    public EvaluateWriteVo getWriteInfo(Long id) {
         return null;
     }
+
 }

+ 132 - 0
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -0,0 +1,132 @@
+package com.xjrsoft.module.evaluate.service.impl;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.module.evaluate.dto.AddEvaluateExecuterDto;
+import com.xjrsoft.module.evaluate.dto.AddEvaluateObjectDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
+import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
+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.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.EvaluateObjectListVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Random;
+
+/**
+* @title: 评价管理
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObjectMapper, EvaluateObject> implements IEvaluateObjectService {
+    private final EvaluateManageMapper evaluateManageMapper;
+
+    private final EvaluateObjectMapper evaluateObjectMapper;
+    private final EvaluateExecuterMapper evaluateExecuterMapper;
+
+
+    @Override
+    public List<EvaluateObjectListVo> getObjectList(Long id) {
+        List<EvaluateObjectListVo> objectList = evaluateObjectMapper.getObjectList(id);
+        List<EvaluateExecuterVo> allExecuterList = evaluateObjectMapper.getExecuterList(id);
+        for (EvaluateObjectListVo objectVo : objectList) {
+            List<EvaluateExecuterVo> executerList = new ArrayList<>();
+            for (EvaluateExecuterVo executerVo : allExecuterList) {
+                if(objectVo.getId().equals(executerVo.getEvaluateObjectId())){
+                    executerList.add(executerVo);
+                }
+            }
+
+            objectVo.setExecuterCount(executerList.size());
+            objectVo.setExecuterList(executerList);
+        }
+        return objectList;
+    }
+
+    @Override
+    public Boolean save(SaveEvaluateObjectDto dto) {
+        EvaluateManage manage = evaluateManageMapper.selectById(dto.getEvaluateManageId());
+        if(manage == null){
+           throw new MyException("未查询到信息,evaluateManageId不正确");
+        }
+        //清空原有数据
+        evaluateObjectMapper.deleteByEvaluateManageId(manage.getId());
+        evaluateExecuterMapper.deleteByEvaluateManageId(manage.getId());
+        //保存新数据
+        Date createDate = new Date();
+        long createUserId = StpUtil.getLoginIdAsLong();
+        for (AddEvaluateObjectDto objectDto : dto.getObjectList()) {
+            EvaluateObject evaluateObject = new EvaluateObject();
+            evaluateObject.setObjectId(Long.parseLong(objectDto.getObjectId()));
+            evaluateObject.setEvaluateManageId(Long.parseLong(dto.getEvaluateManageId()));
+            evaluateObject.setDeleteMark(DeleteMark.NODELETE.getCode());
+            evaluateObject.setCreateDate(createDate);
+            evaluateObject.setCreateUserId(createUserId);
+            evaluateObject.setEnabledMark(EnabledMark.ENABLED.getCode());
+            evaluateObject.setBaseGradeId(Long.parseLong(objectDto.getGradeId()));
+            evaluateObjectMapper.insert(evaluateObject);
+
+            for (AddEvaluateExecuterDto executerDto : objectDto.getExecuterList()) {
+                EvaluateExecuter executer = new EvaluateExecuter();
+                executer.setCreateDate(createDate);
+                executer.setCreateUserId(createUserId);
+                executer.setEvaluateManageId(Long.parseLong(dto.getEvaluateManageId()));
+                executer.setEvaluateObjectId(evaluateObject.getId());
+                executer.setUserId(Long.parseLong(executerDto.getExecuterId()));
+                executer.setStatus(0);
+                evaluateExecuterMapper.insert(executer);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public List<EvaluateObjectListVo> getNewObjectList(EvaluateObjectListDto dto) {
+        List<EvaluateObjectListVo> newObjectList = evaluateObjectMapper.getNewObjectList(dto);
+        List<EvaluateExecuterVo> newExecuterList = evaluateObjectMapper.getNewExecuterList(dto);
+
+        for (EvaluateObjectListVo objectListVo : newObjectList) {
+            List<EvaluateExecuterVo> dataList = new ArrayList<>();
+            for (EvaluateExecuterVo executerVo : newExecuterList) {
+                if(!executerVo.getClassId().equals(objectListVo.getClassId())){
+                    continue;
+                }
+                dataList.add(executerVo);
+            }
+            List<EvaluateExecuterVo> executerList = new ArrayList<>();
+            if("random15".equals(dto.getExecuterCount()) && dataList.size() > 0){
+                List<Integer> randomList = new ArrayList<>();
+                Random random = new Random();
+                while(randomList.size() < 15){
+                    int nextInt = random.nextInt(dataList.size());
+                    if(!randomList.contains(nextInt) && nextInt >= 0){
+                        randomList.add(nextInt);
+                    }
+                }
+                for (Integer i : randomList) {
+                    executerList.add(dataList.get(i));
+                }
+            }else{
+                executerList.addAll(dataList);
+            }
+            objectListVo.setExecuterList(executerList);
+        }
+        return newObjectList;
+    }
+}

+ 12 - 4
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateExecuterVo.java

@@ -22,7 +22,7 @@ public class EvaluateExecuterVo {
     * 主键编号
     */
     @ApiModelProperty("主键编号")
-    private Long id;
+    private String id;
     /**
     * 序号
     */
@@ -32,18 +32,26 @@ public class EvaluateExecuterVo {
     * 评价管理编号
     */
     @ApiModelProperty("评价管理编号")
-    private Long evaluateManageId;
+    private String evaluateManageId;
     /**
     * 被评对象id
     */
     @ApiModelProperty("被评对象id")
-    private Long evaluateObjectId;
+    private String evaluateObjectId;
     /**
     * 参加评价的人id
     */
     @ApiModelProperty("参加评价的人id")
-    private Long userId;
+    private String executerId;
 
+    @ApiModelProperty("参加评价的人名称")
+    private String executerName;
 
 
+    @ApiModelProperty("班级id")
+    private String classId;
+
+    @ApiModelProperty("年级id")
+    private String gradeId;
+
 }

+ 60 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateObjectListVo.java

@@ -0,0 +1,60 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 被评价对象表单出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateObjectListVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private String id;
+    /**
+    * 年级id
+    */
+    @ApiModelProperty("年级id")
+    private String gradeId;
+    /**
+     * 年级名称
+     */
+    @ApiModelProperty("年级名称")
+    private String gradeName;
+
+    /**
+    * 被评价对象id
+    */
+    @ApiModelProperty("被评价对象id")
+    private String objectId;
+
+    /**
+     * 被评价对象名称
+     */
+    @ApiModelProperty("被评价对象名称")
+    private String objectName;
+
+    /**
+    * 参与评价的人数
+    */
+    @ApiModelProperty("参与评价的人数")
+    private Integer executerCount;
+
+
+    @ApiModelProperty("参与评价的人")
+    private List<EvaluateExecuterVo> executerList;
+
+    /**
+     * 被评价对象id
+     */
+    @ApiModelProperty("班级id")
+    private String classId;
+}

+ 0 - 2
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateObjectVo.java

@@ -54,6 +54,4 @@ public class EvaluateObjectVo {
     @ApiModelProperty("被评价对象类别(teacher:老师,class:班级,student:学生)")
     private String objectType;
 
-
-
 }

+ 47 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWritePageVo.java

@@ -0,0 +1,47 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 评价管理分页列表出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateWritePageVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private String id;
+    /**
+    * 评价类型-中文
+    */
+    @ApiModelProperty("评价类型-中文")
+    private String evaluateTypeCn;
+    /**
+    * 评价名称
+    */
+    @ApiModelProperty("评价名称")
+    private String name;
+
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("题目数量")
+    private Integer itemCount;
+
+}

+ 42 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateWriteVo.java

@@ -0,0 +1,42 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+* @title: 评价管理分页列表出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class EvaluateWriteVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("评价管理编号")
+    private String id;
+    /**
+    * 评价名称
+    */
+    @ApiModelProperty("评价名称")
+    private String name;
+
+    /**
+    * 开始时间
+    */
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+    * 结束时间
+    */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("题目数量")
+    private Integer itemCount;
+
+}

+ 16 - 1
src/main/resources/mapper/evaluate/EvaluateManageMapper.xml

@@ -36,6 +36,21 @@
         SELECT IFNULL(MAX(sort_code),1) FROM evaluate_manage WHERE delete_mark = 0
     </select>
 
-    <select id="getRoomClassCount" resultType="com.xjrsoft.module.room.vo.RoomClassCountVo">
+    <select id="getMobilePage" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateWritePageVo">
+        select t2.id, t2.name,t4.name as evaluate_type_cn,t2.start_time,t2.end_time
+        from evaluate_executer t1
+        left join evaluate_manage t2 on t2.id = t1.evaluate_manage_id
+        left join evaluate_template t3 on t3.id = t2.evaluate_template_id
+        left join xjr_dictionary_detail t4 on t4.code = t3.evaluate_type and t4.item_id = 1746831039385366530
+        where t1.delete_mark = 0 and t2.delete_mark = 0
+        and t1.status = #{dto.status} and t1.user_id = #{dto.loginUserId}
+    </select>
+    <select id="getWriteInfo" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateWritePageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateWriteVo">
+        select t1.id, t1.name,t1.start_time,t1.end_time,
+        (SELECT COUNT(*) FROM evaluate_manage_item WHERE enabled_mark = 0 AND evaluate_item_id = t1.id) AS item_count
+        from evaluate_manage t1
+        left join evaluate_template t2 on t2.id = t1.evaluate_template_id
+        where t1.delete_mark = 0
+        and t1.status = #{id}
     </select>
 </mapper>

+ 37 - 0
src/main/resources/mapper/evaluate/EvaluateObjectMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.evaluate.mapper.EvaluateObjectMapper">
+    <select id="getObjectList" resultType="com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo">
+        SELECT t1.id,t1.base_grade_id,t2.name AS grade_name,t1.object_id,t3.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
+        WHERE t1.delete_mark = 0 and t1.evaluate_manage_id = #{id}
+        ORDER BY t1.id
+    </select>
+    <select id="getExecuterList" resultType="com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo">
+        SELECT t1.evaluate_object_id,t2.name AS user_name,t1.user_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 = #{id}
+    </select>
+
+    <select id="getNewObjectList" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo">
+        SELECT t1.id AS class_id,t2.id AS object_id,t2.name AS object_name,t1.id as class_id,t1.grade_id FROM base_class t1
+        LEFT JOIN xjr_user t2 ON t1.teacher_id = t2.id
+        WHERE t1.delete_mark = 0
+        <if test="dto.gradeId != null">
+            and t1.grade_id = #{dto.gradeId}
+        </if>
+    </select>
+
+    <select id="getNewExecuterList" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo">
+        SELECT t2.id as executer_id,t2.name as executer_name,t1.class_id,t1.grade_id FROM base_student_school_roll t1
+        LEFT JOIN xjr_user t2 ON t1.user_id = t2.id
+        WHERE t1.delete_mark = 0 AND t2.delete_mark = 0
+        <if test="dto.gradeId != null">
+            and t1.grade_id = #{dto.gradeId}
+        </if>
+    </select>
+</mapper>

+ 13 - 9
src/main/resources/mapper/evaluationmanagemen/EvaluateTemplateMapper.xml

@@ -4,23 +4,27 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xjrsoft.module.evaluate.mapper.EvaluateTemplateMapper">
     <select id="getPage" parameterType="com.xjrsoft.module.evaluate.dto.EvaluateTemplatePageDto" resultType="com.xjrsoft.module.evaluate.vo.EvaluateTemplatePageVo">
-        SELECT t.id,t.name,t.evaluate_type,t.dept_ids,t.total,t.remark,t.status FROM evaluate_template t where t.delete_mark = 0
-
+        SELECT t.id, t.name,
+            (SELECT t1.name
+            FROM xjr_dictionary_detail t1
+            JOIN xjr_dictionary_item t2 ON t1.item_id = t2.id
+            WHERE t2.code = 'evaluate_type'
+            AND t1.code = t.evaluate_type) AS evaluate_type,
+        t.dept_ids, t.total, t.remark, t.status
+        FROM evaluate_template t
+        WHERE t.delete_mark = 0
         <if test="dto.deptIds != null and dto.deptIds != ''">
-            and t.dept_ids = #{dto.deptIds}
+            AND t.dept_ids = #{dto.deptIds}
         </if>
         <if test="dto.evaluateType != null and dto.evaluateType != ''">
-            and t.evaluate_type = #{dto.evaluateType}
+            AND t.evaluate_type = #{dto.evaluateType}
         </if>
         <if test="dto.name != null">
-            and t.name = #{dto.name}
+            AND t.name = #{dto.name}
         </if>
         <if test="dto.status != null">
-            and t.status = #{dto.status}
+            AND t.status = #{dto.status}
         </if>
-<!--        <if test="dto.status != null">-->
-<!--            and t.status = #{dto.status}-->
-<!--        </if>-->
         ORDER BY t.id
     </select>
 

+ 1 - 1
src/main/resources/mapper/textbook/TextbookMapper.xml

@@ -129,7 +129,7 @@
         order by t1.sort_code
     </select>
     <select id="issueList" resultType="com.xjrsoft.module.textbook.vo.TextbookIssueRecordListVo">
-        SELECT t1.create_date AS issue_date, t2.name AS issue_user, t1.issue_number, t6.name AS issue_mode, t1.remark
+        SELECT t1.create_date AS issue_date, t2.name AS issue_user, t1.issue_number, t6.name AS issue_mode
         FROM textbook_issue_record t1
                  LEFT JOIN xjr_user t2 ON t1.create_user_id = t2.id
                  LEFT JOIN wf_textbook_claim_item t3 ON t1.data_item_id = t3.id

+ 2 - 1
src/main/resources/sqlScript/20240112_sql.sql

@@ -107,7 +107,6 @@ CREATE TABLE evaluate_object
     `sort_code` INT NULL DEFAULT NULL COMMENT '序号',
     `evaluate_manage_id` BIGINT NOT NULL COMMENT '评价管理编号',
     `base_grade_id` BIGINT NULL DEFAULT NULL COMMENT '年级id',
-    `org_id` BIGINT NULL DEFAULT NULL COMMENT '发布部门id',
     `object_id` BIGINT NULL DEFAULT NULL COMMENT '被评价对象id',
     `object_type` VARCHAR(50) NULL DEFAULT NULL COMMENT '被评价对象类别(teacher:老师,class:班级,student:学生)',
     PRIMARY KEY (`id`)
@@ -132,6 +131,8 @@ CREATE TABLE evaluate_executer
     `user_id` BIGINT NULL DEFAULT NULL COMMENT '参加评价的人id',
     PRIMARY KEY (`id`)
 ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT '评价执行人';
+ALTER TABLE `tl`.`evaluate_executer`
+    ADD COLUMN `status` INT DEFAULT 0  NULL   COMMENT '状态(1:已评分,0:未评分)' AFTER `user_id`;
 
 -- ----------------------------
 -- 评价管理题目

+ 366 - 30
src/test/java/com/xjrsoft/xjrsoftboot/ScheduleFlowTest.java

@@ -1,19 +1,71 @@
 package com.xjrsoft.xjrsoftboot;
 
 import cn.dev33.satoken.secure.SaSecureUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.xjrsoft.XjrSoftApplication;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.module.base.entity.BaseCourseSubject;
+import com.xjrsoft.module.base.entity.BaseGrade;
+import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseClassroomMapper;
+import com.xjrsoft.module.base.service.IBaseCourseSubjectService;
+import com.xjrsoft.module.base.service.IBaseGradeService;
+import com.xjrsoft.module.base.service.IBaseSemesterService;
+import com.xjrsoft.module.schedule.vo.ClassroomJianyuekbVo;
+import com.xjrsoft.module.schedule.vo.StudentJianyuekbVo;
+import com.xjrsoft.module.student.mapper.BaseStudentMapper;
+import com.xjrsoft.module.teacher.entity.XjrUser;
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
 import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
 
 import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 // 简约课表测试
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = XjrSoftApplication.class)
 public class ScheduleFlowTest {
 
     public static final String ALGORITHM = "HmacSHA256";
+    public static final String apiUrl = "https://live.jianyuekb.com/api/v1/ScheduleFlowV2/OpenApi/";
+    @Autowired
+    private IBaseGradeService baseGradeService;
+    @Autowired
+    private IBaseSemesterService baseSemesterService;
+    
+    @Autowired
+    private IBaseCourseSubjectService baseCourseSubjectService;
+
+    @Autowired
+    private XjrUserMapper xjrUserMapper;
+
+    @Autowired
+    private BaseStudentMapper baseStudentMapper;
+    @Autowired
+    private BaseClassroomMapper baseClassroomMapper;
+
+
 
     public static String calculateHMac(String key, String data) throws Exception {
         Mac sha256_HMAC = Mac.getInstance(ALGORITHM);
@@ -60,41 +112,315 @@ public class ScheduleFlowTest {
     public void ScheduleFlowTest() throws Exception {
         long timestamp = System.currentTimeMillis();
 
-        String password = "";
+        String md5Str = SaSecureUtil.md5("Jh&NAbn6Rm#p@6ZZ" + timestamp);
 
-        String md5Str = SaSecureUtil.md5("Jh&NAbn6Rm#p@6ZZ1703240909745");
+        String sign = calculateHMac("UUFM5TID45X", md5Str);
+        //查询校区id
+        String schoolDistrictId = insertSchoolDistrictData(sign, timestamp);
+        System.out.println("schoolDistrictId:" + schoolDistrictId);
+//        //新增年级,并返回添加好的年级id
+//        Map<Long, String> gradeMap = insertGrade(sign, timestamp, schoolDistrictId);
+        //新增年级,并返回添加好的年级id
+        insertSemester(sign, timestamp);
+        //新增课程
+//        insertCourse(sign, timestamp);
+        //新增教师
+//        insertTeacher(sign, timestamp);
 
-        System.out.println(md5Str);
+//        insertStudent(sign, timestamp, gradeMap);
 
-        String sign = calculateHMac("UUFM5TID45X", md5Str);
+//        insertClassRoom(sign, timestamp,schoolDistrictId);
 
-        System.out.println(sign);
+    }
 
+    List<String> insertClass(String sign, Long timestamp, String schoolDistrictId) throws InterruptedException {
+        List<ClassroomJianyuekbVo> dataList = baseClassroomMapper.getJianyueList();
+        String url  = apiUrl + "class/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
 
-//        long timestamp = System.currentTimeMillis();
-//
-//        String password = "";
-//
-//        String md5Str = SaSecureUtil.md5(String.format("Jh&NAbn6Rm#p@6ZZ%d", timestamp));
-//
-//        System.out.println(md5Str);
-//
-//        String sign = calculateHMac("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320", md5Str);
-//
-//        System.out.println(sign);
-
-//        System.out.println(calculateHMac("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320", md5Str));
-//
-//        Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
-//        SecretKeySpec secret_key = new SecretKeySpec("a7dbed0dfc70ebd92934cf9292de8749e9af01a2405217be881f9e77f6ba5320".getBytes(), "HmacSHA256");
-//        sha256_HMAC.init(secret_key);
-//        byte[] bytes = sha256_HMAC.doFinal(md5Str.getBytes());
-//        String hash = byteArrayToHexString(bytes);
-//        System.out.println(hash);
+        String findUrl = apiUrl + "class/page";
 
+        for (ClassroomJianyuekbVo classroom : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("name", classroom.getName());
 
+//            paramJson.addProperty("peopleCount", classroom.getPeopleCount());
+//            paramJson.addProperty("location", classroom.getLocation());
+            paramJson.addProperty("peopleCount", 50);
+            paramJson.addProperty("location", "无");
+            paramJson.addProperty("extendId", classroom.getExtendId());
+            paramJson.addProperty("floor", classroom.getFloor());
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
     }
 
+    List<String> insertClassRoom(String sign, Long timestamp, String schoolDistrictId) throws InterruptedException {
+        List<ClassroomJianyuekbVo> dataList = baseClassroomMapper.getJianyueList();
+        String url  = apiUrl + "classroom/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "ClassRoom/page";
+
+        for (ClassroomJianyuekbVo classroom : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("name", classroom.getName());
+
+//            paramJson.addProperty("peopleCount", classroom.getPeopleCount());
+//            paramJson.addProperty("location", classroom.getLocation());
+            paramJson.addProperty("peopleCount", 50);
+            paramJson.addProperty("location", "无");
+            paramJson.addProperty("extendId", classroom.getExtendId());
+            paramJson.addProperty("floor", classroom.getFloor());
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertStudent(String sign, Long timestamp, Map<Long, String> gradeMap) throws InterruptedException {
+
+        List<StudentJianyuekbVo> dataList = baseStudentMapper.getJianyueStudentList();
+        String url  = apiUrl + "student/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "Student/page";
+
+        for (StudentJianyuekbVo student : dataList) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("registerNo", student.getRegisterNo());
+            paramJson.addProperty("gender", student.getGender());
+
+            paramJson.addProperty("realName", student.getRealName());
+            paramJson.addProperty("alias", student.getAlias());
+            paramJson.addProperty("extendId", student.getExtendId());
+            paramJson.addProperty("gradeSerialNo", gradeMap.get(student.getGradeSerialNo()));
+//            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+//            if(findResult != null){
+//                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+//                JsonObject data = resultJson.get("data").getAsJsonObject();
+//                if(data.get("total").getAsInt() != 0){
+//                    //调用update
+//                }
+//            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertTeacher(String sign, Long timestamp) throws InterruptedException {
+        List<XjrUser> xjrUsers = xjrUserMapper.selectJoinList(
+            XjrUser.class, new MPJLambdaWrapper<XjrUser>()
+            .innerJoin("xjr_user_role_relation t2 on t.id = t2.user_id")
+            .eq("t2.role_id", 2)
+        );
+        String url  = apiUrl + "teacher/create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+
+        String findUrl = apiUrl + "/Teacher/Page";
+
+        for (XjrUser user : xjrUsers) {
+            Thread.sleep(1000);
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("jobNumber", user.getUserName());
+            paramJson.addProperty("gender", user.getGender());
+
+            String name = user.getName().substring(0, 1) + user.getUserName();
+            paramJson.addProperty("name", name);
+            paramJson.addProperty("alias", name);
+            paramJson.addProperty("extendId", user.getId().toString());
+            String findResult = doPost(findUrl, paramJson.toString(), sign, timestamp);
+            if(findResult != null){
+                JsonObject resultJson = jsonParser.parse(findResult).getAsJsonObject();
+                JsonObject data = resultJson.get("data").getAsJsonObject();
+                if(data.get("total").getAsInt() != 0){
+                    //调用update
+                }
+            }
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println(paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+        return idList;
+    }
+
+    List<String> insertCourse(String sign, Long timestamp){
+        List<BaseCourseSubject> list = baseCourseSubjectService.list(
+                new QueryWrapper<BaseCourseSubject>().lambda()
+                        .eq(BaseCourseSubject::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url  = apiUrl + "courseclass/Create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+        for (BaseCourseSubject courseSubject : list) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("name", courseSubject.getName() + courseSubject.getCode());
+            paramJson.addProperty("code", courseSubject.getCode());
+            paramJson.addProperty("extendId", courseSubject.getId().toString());
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+            if(result == null){
+                System.out.println("result is null, paramJson: " + paramJson.toString());
+                continue;
+            }
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            if(resultJson.get("code").getAsInt() == -1){
+                System.out.println("paramJson: " + paramJson.toString() + ", 返回结果:" + result);
+            }
+            idList.add(resultJson.get("data").getAsString());
+        }
+
+        return idList;
+    }
+
+
+
+    List<String> insertSemester(String sign, Long timestamp){
+        List<BaseSemester> list = baseSemesterService.list(
+            new QueryWrapper<BaseSemester>().lambda()
+            .eq(BaseSemester::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url  = apiUrl + "semester/Create";
+        List<String> idList = new ArrayList<>();
+        JsonParser jsonParser = new JsonParser();
+        SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String spring = "春";
+        String autumn = "秋";
+
+        for (BaseSemester semester : list) {
+            JsonObject paramJson = new JsonObject();
+
+            paramJson.addProperty("schoolYear", Integer.parseInt(sdfYear.format(semester.getStartDate())));
+            Integer period = null;
+            if(semester.getName().contains(String.valueOf(spring))){
+                period = 1;
+            }else if(semester.getName().contains(autumn)){
+                period = 2;
+            }
+            paramJson.addProperty("period", period);
+            paramJson.addProperty("startDate", sdf.format(semester.getStartDate()));
+            paramJson.addProperty("endDate", sdf.format(semester.getEndDate()));
+            paramJson.addProperty("extendId", semester.getId().toString());
+
+            if(semester.getStartDate() != null && semester.getEndDate() != null && semester.getEndDate().getTime() > timestamp && semester.getStartDate().getTime() < timestamp){
+                paramJson.addProperty("isCurrent", Boolean.TRUE);
+            }else{
+                paramJson.addProperty("isCurrent", Boolean.FALSE);
+            }
+            System.out.println(paramJson.toString());
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+            idList.add(resultJson.get("data").getAsString());
+        }
+
+        return idList;
+    }
+
+    /**
+     *  由于简约中校区中的本部不能删除,如果没有多的校区,就只查询本部的id即可
+     * @param sign 签名
+     * @param timestamp 时间戳
+     * @return 返回添加好的校区id
+     */
+    String insertSchoolDistrictData(String sign, Long timestamp){
+        JsonParser jsonParser = new JsonParser();
+//        String url  = apiUrl + "SchoolDistrict/Create";
+//        JsonObject jsonObject = new JsonObject();
+//        jsonObject.addProperty("name", "test1");
+//        jsonObject.addProperty("shortName", "本部112");
+//        jsonObject.addProperty("note", "本部211");
+//        jsonObject.addProperty("sort", "2");
+//        String result = doPost(url, jsonObject.toString(), sign, timestamp);
+//        JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+        String url  = apiUrl + "SchoolDistrict/page";
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("keyword", "本部");
+        jsonObject.addProperty("pageSize", "15");
+        jsonObject.addProperty("pageIndex", "1");
+        String result = doPost(url, jsonObject.toString(), sign, timestamp);
+        JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+        String id = resultJson.get("data").getAsJsonObject().get("dataList").getAsJsonArray().get(0).getAsJsonObject().get("id").getAsString();
+        return id;
+    }
+
+    Map<Long, String> insertGrade(String sign, Long timestamp, String schoolDistrictId){
+        List<BaseGrade> list = baseGradeService.list(
+            new QueryWrapper<BaseGrade>().lambda()
+            .eq(BaseGrade::getDeleteMark, DeleteMark.NODELETE.getCode())
+        );
+        String url = apiUrl + "eduyear/create";
+        JsonParser jsonParser = new JsonParser();
+        Map<Long, String> idMap = new HashMap<>();
+        for (BaseGrade baseGrade : list) {
+            JsonObject paramJson = new JsonObject();
+            paramJson.addProperty("schoolDistrictId", schoolDistrictId);
+            paramJson.addProperty("period", 4);
+            paramJson.addProperty("startYear", baseGrade.getTitle().replaceAll("年", ""));
+            paramJson.addProperty("extendId", baseGrade.getId().toString());
+            paramJson.addProperty("year", 3);
+
+            String result = doPost(url, paramJson.toString(), sign, timestamp);
+
+            JsonObject resultJson = jsonParser.parse(result).getAsJsonObject();
+
+            idMap.put(baseGrade.getId(), resultJson.get("data").getAsString());
+        }
+
+        return idMap;
+    }
+
+
+
     public static String doGet(String httpurl) throws Exception {
         long timestamp = System.currentTimeMillis();
 
@@ -168,16 +494,20 @@ public class ScheduleFlowTest {
         return result;
     }
 
-    public static String doPost(String httpUrl, String param) {
+    public static String doPost(String httpUrl, String param, String sign, Long timestamp) {
         HttpURLConnection connection = null;
         InputStream is = null;
         OutputStream os = null;
         BufferedReader br = null;
         String result = null;
+        OutputStreamWriter writer = null;
         try {
             URL url = new URL(httpUrl);
             // 通过远程url连接对象打开连接
             connection = (HttpURLConnection) url.openConnection();
+            connection.setRequestProperty("schoolId","UUFM5TID45X");
+            connection.setRequestProperty("sign",sign);
+            connection.setRequestProperty("timestamp",String.format("%d",timestamp));
             // 设置连接请求方式
             connection.setRequestMethod("POST");
             // 设置连接主机服务器超时时间:15000毫秒
@@ -192,10 +522,16 @@ public class ScheduleFlowTest {
             connection.setRequestProperty("Content-Type", "application/json");
             // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0
 //            connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");
+            writer = new OutputStreamWriter(connection.getOutputStream(),"UTF-8");
+            //body参数放这里
+            writer.write(param);
+            writer.flush();
+
+            writer.close();
             // 通过连接对象获取一个输出流
-            os = connection.getOutputStream();
-            // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
-            os.write(param.getBytes());
+//            os = connection.getOutputStream();
+//            // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
+//            os.write(param.getBytes());
             // 通过连接对象获取一个输入流,向远程读取
             if (connection.getResponseCode() == 200) {
                 is = connection.getInputStream();

+ 6 - 0
src/test/java/com/xjrsoft/xjrsoftboot/StrTest.java

@@ -166,4 +166,10 @@ public class StrTest {
         }
         return dateList;
     }
+
+    @Test
+    void test22(){
+        String name = "2023年秋季";
+        System.out.println(name.contains("秋季"));
+    }
 }