Procházet zdrojové kódy

Merge branch 'pre'

dzx před 1 rokem
rodič
revize
c71d9a52d5
26 změnil soubory, kde provedl 509 přidání a 51 odebrání
  1. 45 3
      src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateManageController.java
  2. 6 0
      src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateManageDto.java
  3. 0 2
      src/main/java/com/xjrsoft/module/evaluate/dto/EvaluateObjectListDto.java
  4. 7 6
      src/main/java/com/xjrsoft/module/evaluate/dto/MobileResultPageDto.java
  5. 32 0
      src/main/java/com/xjrsoft/module/evaluate/dto/TeaEvaluateClassDto.java
  6. 5 0
      src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateManage.java
  7. 5 2
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateExecuterMapper.java
  8. 3 2
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java
  9. 4 0
      src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateResultMapper.java
  10. 5 0
      src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateItemService.java
  11. 70 0
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateItemServiceImpl.java
  12. 0 1
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java
  13. 29 12
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java
  14. 9 1
      src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java
  15. 77 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageBodyVo.java
  16. 6 0
      src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageVo.java
  17. 29 0
      src/main/java/com/xjrsoft/module/evaluate/vo/TeaEvaluateClassListVo.java
  18. 6 0
      src/main/java/com/xjrsoft/module/student/dto/CalssQuantitativeAssessmentPageDto.java
  19. 6 0
      src/main/java/com/xjrsoft/module/student/dto/QuantitativeAssessmentExcelDto.java
  20. 8 0
      src/main/java/com/xjrsoft/module/student/service/IQuotaFormulaRuleService.java
  21. 105 3
      src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java
  22. 18 0
      src/main/java/com/xjrsoft/module/student/service/impl/QuotaFormulaRuleServiceImpl.java
  23. 1 1
      src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java
  24. 7 5
      src/main/resources/mapper/evaluate/EvaluateManageMapper.xml
  25. 13 0
      src/main/resources/mapper/evaluate/EvaluateResultMapper.xml
  26. 13 13
      src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

+ 45 - 3
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateManageController.java

@@ -6,6 +6,8 @@ import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.enums.DeleteMark;
+import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
@@ -13,15 +15,15 @@ import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.evaluate.dto.AddEvaluateManageDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateManageChangeStatusDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
-import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
 import com.xjrsoft.module.evaluate.dto.UpdateEvaluateManageDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateTemplate;
+import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
 import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
 import com.xjrsoft.module.evaluate.service.IEvaluateTemplateService;
+import com.xjrsoft.module.evaluate.vo.EvaluateManageBodyVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateManagePageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateManageVo;
-import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -53,7 +55,9 @@ public class EvaluateManageController {
 
 
     private final IEvaluateManageService evaluateManageService;
-    private final IEvaluateTemplateService evaluateTemplateService;
+    private final IEvaluateTemplateService templateService;
+    private final IEvaluateItemService evaluateItemService;
+
 
     @GetMapping(value = "/page")
     @ApiOperation(value="评价管理列表(分页)")
@@ -120,6 +124,21 @@ public class EvaluateManageController {
     @ApiOperation(value = "新增评价管理")
     @SaCheckPermission("evaluatemanage:add")
     public RT<Boolean> add(@Valid @RequestBody AddEvaluateManageDto dto){
+
+        EvaluateTemplate evaluateTemplate = templateService.getById(dto.getEvaluateTemplateId());
+        if(evaluateTemplate.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())){
+            List<EvaluateManage> list = evaluateManageService.list(
+                    new QueryWrapper<EvaluateManage>().lambda()
+                            .eq(EvaluateManage::getYear, dto.getYear())
+                            .eq(EvaluateManage::getMonth, dto.getMonth())
+                            .eq(EvaluateManage::getEvaluateTemplateId, dto.getEvaluateTemplateId())
+                            .eq(EvaluateManage::getDeleteMark, DeleteMark.NODELETE.getCode())
+            );
+            if(!list.isEmpty()){
+                return RT.error("该模板已有同月份的计划,无法添加");
+            }
+        }
+
         EvaluateManage evaluateManage = BeanUtil.toBean(dto, EvaluateManage.class);
         evaluateManage.setCreateDate(new Date());
         evaluateManage.setCreateUserId(StpUtil.getLoginIdAsLong());
@@ -140,6 +159,20 @@ public class EvaluateManageController {
     public RT<Boolean> update(@Valid @RequestBody UpdateEvaluateManageDto dto){
 
         EvaluateManage evaluateManage = BeanUtil.toBean(dto, EvaluateManage.class);
+        EvaluateTemplate evaluateTemplate = templateService.getById(dto.getEvaluateTemplateId());
+        if(evaluateTemplate.getEvaluateType().equals(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode())){
+            List<EvaluateManage> list = evaluateManageService.list(
+                    new QueryWrapper<EvaluateManage>().lambda()
+                            .eq(EvaluateManage::getYear, dto.getYear())
+                            .eq(EvaluateManage::getMonth, dto.getMonth())
+                            .eq(EvaluateManage::getEvaluateTemplateId, dto.getEvaluateTemplateId())
+                            .eq(EvaluateManage::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .ne(EvaluateManage::getId, dto.getId())
+            );
+            if(!list.isEmpty()){
+                return RT.error("该模板已有同月份的计划,无法修改");
+            }
+        }
         return RT.ok(evaluateManageService.update(evaluateManage));
 
     }
@@ -151,4 +184,13 @@ public class EvaluateManageController {
         return RT.ok(evaluateManageService.delete(ids));
     }
 
+    @GetMapping(value = "/evaluate-item")
+    @ApiOperation(value="评价模板维护评价项页面")
+    @SaCheckPermission("evaluateitem:detail")
+    public RT<EvaluateManageBodyVo> list(@Valid EvaluateManageChangeStatusDto dto){
+        EvaluateManageBodyVo evaluateManageItem = evaluateItemService.getEvaluateManageItem(dto);
+
+        return RT.ok(evaluateManageItem);
+    }
+
 }

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

@@ -70,4 +70,10 @@ public class AddEvaluateManageDto implements Serializable {
     @ApiModelProperty("状态(-1:未发布,1:进行中,0,暂停)")
     private Integer status;
 
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
+
 }

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

@@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.time.LocalDate;
-import java.util.List;
 
 
 /**

+ 7 - 6
src/main/java/com/xjrsoft/module/evaluate/dto/MobileResultPageDto.java

@@ -3,8 +3,7 @@ package com.xjrsoft.module.evaluate.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-
-import java.time.LocalDateTime;
+import org.springframework.format.annotation.DateTimeFormat;
 
 
 /**
@@ -28,9 +27,11 @@ public class MobileResultPageDto extends MobileIndexPageDto {
     @ApiModelProperty(value = "专业id")
     private Long majorId;
 
-    @ApiModelProperty(value = "开始时间", hidden = true)
-    private LocalDateTime startTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("开始时间")
+    private String startTime;
 
-    @ApiModelProperty(value = "结束时间", hidden = true)
-    private LocalDateTime endTime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("结束时间")
+    private String endTime;
 }

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

@@ -0,0 +1,32 @@
+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 TeaEvaluateClassDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 评价管理编号
+    */
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
+
+    @ApiModelProperty("月份")
+    private String evaluateType;
+
+}

+ 5 - 0
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateManage.java

@@ -136,4 +136,9 @@ public class EvaluateManage implements Serializable {
     @EntityMapping(thisField = "id", joinField = "evaluateManageId")
     private List<EvaluateExecuter> evaluateExecuterList;
 
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
 }

+ 5 - 2
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateExecuterMapper.java

@@ -1,9 +1,11 @@
 package com.xjrsoft.module.evaluate.mapper;
 
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateExecuter;
 import org.apache.ibatis.annotations.Delete;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 评价执行人
@@ -14,7 +16,8 @@ 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);
+    @Delete("DELETE FROM evaluate_executer WHERE evaluate_object_id IN (" +
+            " SELECT id FROM evaluate_object WHERE evaluate_manage_id = #{dto.evaluateManageId} and base_grade_id = #{dto.gradeId} )")
+    Boolean deleteByEvaluateManageId(@Param("dto") SaveEvaluateObjectDto dto);
 
 }

+ 3 - 2
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateObjectMapper.java

@@ -3,6 +3,7 @@ package com.xjrsoft.module.evaluate.mapper;
 import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.dto.EvaluateObjectListDto;
 import com.xjrsoft.module.evaluate.dto.ObjectGradeDeleteDto;
+import com.xjrsoft.module.evaluate.dto.SaveEvaluateObjectDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateObject;
 import com.xjrsoft.module.evaluate.vo.EvaluateExecuterVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateObjectListVo;
@@ -28,8 +29,8 @@ public interface EvaluateObjectMapper extends MPJBaseMapper<EvaluateObject> {
 
     List<EvaluateExecuterVo> getNewExecuterList(@Param("dto") EvaluateObjectListDto dto);
 
-    @Delete("DELETE FROM evaluate_object WHERE evaluate_manage_id = #{evaluateManageId}")
-    Boolean deleteByEvaluateManageId(Long evaluateManageId);
+    @Delete("DELETE FROM evaluate_object WHERE evaluate_manage_id = #{dto.evaluateManageId} and base_grade_id = #{dto.gradeId}")
+    Boolean deleteByEvaluateManageId(@Param("dto") SaveEvaluateObjectDto dto);
 
     Boolean objectGradeDeleteExecuter(@Param("dto") ObjectGradeDeleteDto dto);
 

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

@@ -5,12 +5,14 @@ import com.github.yulichang.base.MPJBaseMapper;
 import com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDetailDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateResultDetailPageDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateResultIndexPageDto;
+import com.xjrsoft.module.evaluate.dto.TeaEvaluateClassDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateResult;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailList;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageDetailVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultDetailPageVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateResultIndexPageVo;
 import com.xjrsoft.module.evaluate.vo.ResultViewingPageVo;
+import com.xjrsoft.module.evaluate.vo.TeaEvaluateClassListVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -37,4 +39,6 @@ public interface EvaluateResultMapper extends MPJBaseMapper<EvaluateResult> {
     List<ResultViewingPageVo> listTopicScoreByObjectIdAndTopic(@Param("evaluateObjectIdList") List<Long> evaluateObjectIdList, @Param("evaluateManageItemIdList") List<Long> evaluateManageItemIdList);
 
     List<ResultViewingPageVo> listSynthesisScore(@Param("evaluateObjectIdList") List<Long> evaluateObjectIdList, @Param("evaluateManageItemIdList") List<Long> evaluateManageItemIdList);
+
+    List<TeaEvaluateClassListVo> getTeaEvaluateClassList(@Param("dto") TeaEvaluateClassDto dto);
 }

+ 5 - 0
src/main/java/com/xjrsoft/module/evaluate/service/IEvaluateItemService.java

@@ -2,8 +2,10 @@ package com.xjrsoft.module.evaluate.service;
 
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateManageChangeStatusDto;
 import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import com.xjrsoft.module.evaluate.vo.EvaluateManageBodyVo;
 import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
 
 import java.util.List;
@@ -32,4 +34,7 @@ public interface IEvaluateItemService extends MPJBaseService<EvaluateItem> {
     Boolean addEvaluateItem(List<AddEvaluateItemDto> dto);
 
 
+    EvaluateManageBodyVo getEvaluateManageItem(EvaluateManageChangeStatusDto dto);
+
+
 }

+ 70 - 0
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateItemServiceImpl.java

@@ -9,15 +9,23 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.base.mapper.BaseSemesterMapper;
 import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
+import com.xjrsoft.module.evaluate.dto.EvaluateManageChangeStatusDto;
 import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
 import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import com.xjrsoft.module.evaluate.entity.EvaluateManage;
 import com.xjrsoft.module.evaluate.entity.EvaluateTemplate;
 import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
+import com.xjrsoft.module.evaluate.mapper.EvaluateManageMapper;
 import com.xjrsoft.module.evaluate.mapper.EvaluateTemplateMapper;
 import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
+import com.xjrsoft.module.evaluate.service.IEvaluateManageService;
 import com.xjrsoft.module.evaluate.vo.EvaluateItemGroupByTopicVo;
 import com.xjrsoft.module.evaluate.vo.EvaluateItemVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateManageBodyVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateManageItemVo;
 import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
 import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.mapper.DepartmentMapper;
@@ -48,6 +56,13 @@ public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapp
     private EvaluateTemplateMapper evaluateTemplateMapper;
 
     private DepartmentMapper departmentMapper;
+
+    private EvaluateManageMapper manageMapper;
+    
+    private BaseSemesterMapper semesterMapper;
+    
+    private IEvaluateManageService manageService;
+
     @Override
     public MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto){
         //获取模板基本信息
@@ -153,4 +168,59 @@ public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapp
         }
         return this.saveBatch(evaluateItemList);
     }
+
+    
+    @Override
+    public EvaluateManageBodyVo getEvaluateManageItem(EvaluateManageChangeStatusDto dto) {
+        EvaluateManageBodyVo result = new EvaluateManageBodyVo();
+        EvaluateManage manage = manageMapper.selectById(dto.getId());
+        EvaluateTemplate template = evaluateTemplateMapper.selectById(manage.getEvaluateTemplateId());
+        BaseSemester baseSemester = semesterMapper.selectById(manage.getBaseSemesterId());
+
+        result.setName(manage.getName());
+        result.setYear(manage.getYear());
+        result.setMonth(manage.getMonth());
+        result.setSemesterName(baseSemester.getName());
+        result.setStartTime(manage.getStartTime());
+        result.setEndTime(manage.getEndTime());
+        result.setTemplateName(template.getName());
+        result.setTotal(template.getTotal());
+        result.setRemark(template.getRemark());
+        List<String> deptIdList = new ArrayList<>();
+        if(deptIdList != null && deptIdList.size() > 0 && !deptIdList.get(0).equals("0")){
+            String deptIdStr = String.join(",", deptIdList);
+            LambdaQueryWrapper<Department> departmentLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            departmentLambdaQueryWrapper
+                    .in(Department::getId, deptIdList);
+            List<Department> departmentList = departmentMapper.selectList(departmentLambdaQueryWrapper);
+            StringBuilder deptStr = new StringBuilder();
+
+            for (int i = 0; i < departmentList.size(); i++) {
+                deptStr.append(departmentList.get(i).getName());
+                if(i < departmentList.size() - 1){
+                    deptStr.append(",");
+                }
+            }
+            result.setDeptIds("[" + deptIdStr +"]");
+            result.setDeptIdsCN(deptStr.toString());
+        }
+        
+        //查询题目
+        List<EvaluateManageItemVo> itemList = manageService.getItemList(dto.getId());
+        List<EvaluateItemVo> evaluateItemVos = BeanUtil.copyToList(itemList, EvaluateItemVo.class);
+        Map<String, List<EvaluateItemVo>> groupedEvaluateItemVo = evaluateItemVos.stream()
+                .collect(Collectors.groupingBy(EvaluateItemVo::getTopic, LinkedHashMap::new, Collectors.toList()));
+
+        List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList = new ArrayList<>();
+        groupedEvaluateItemVo.forEach((topic, group) -> {
+            evaluateItemGroupByTopicVoList.add(new EvaluateItemGroupByTopicVo(){{
+                setTopic(topic);
+                setEvaluateItemVoList(group);
+            }});
+        });
+
+        result.setEvaluateItemGroupByTopicVoList(evaluateItemGroupByTopicVoList);
+
+        return result;
+    }
 }

+ 0 - 1
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateManageServiceImpl.java

@@ -13,7 +13,6 @@ import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.exception.MyException;
 import com.xjrsoft.common.utils.VoToColumnUtil;
-import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.evaluate.dto.DrillEvaluateClassListDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateManagePageDto;
 import com.xjrsoft.module.evaluate.dto.EvaluateManageScoreDto;

+ 29 - 12
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateObjectServiceImpl.java

@@ -9,6 +9,7 @@ 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.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseGrade;
 import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
@@ -42,7 +43,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -70,12 +70,13 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         List<EvaluateObjectListVo> objectList = evaluateObjectMapper.getObjectList(dto);
         List<EvaluateExecuterVo> allExecuterList = evaluateObjectMapper.getExecuterList(dto);
 
-        Map<String, List<EvaluateExecuterVo>> groupEvaluateExecuterByEvaluateObjectId = allExecuterList.stream()
-                .collect(Collectors.groupingBy(EvaluateExecuterVo::getEvaluateObjectId));
+//        Map<String, List<EvaluateExecuterVo>> groupEvaluateExecuterByEvaluateObjectId = allExecuterList.stream()
+//                .collect(Collectors.groupingBy(EvaluateExecuterVo::getEvaluateObjectId));
         for (EvaluateObjectListVo objectVo : objectList) {
-            objectVo.setExecuterCount(groupEvaluateExecuterByEvaluateObjectId.get(objectVo.getId()).size());
-            objectVo.setExecuterList(groupEvaluateExecuterByEvaluateObjectId.get(objectVo.getId()));
-            /*List<EvaluateExecuterVo> executerList = new ArrayList<>();
+//            List<EvaluateExecuterVo> executerVoList = groupEvaluateExecuterByEvaluateObjectId.get(objectVo.getId());
+//            objectVo.setExecuterCount(executerVoList.size());
+//            objectVo.setExecuterList(executerVoList);
+            List<EvaluateExecuterVo> executerList = new ArrayList<>();
             for (EvaluateExecuterVo executerVo : allExecuterList) {
                 if(objectVo.getId().equals(executerVo.getEvaluateObjectId())){
                     executerList.add(executerVo);
@@ -83,7 +84,7 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
             }
 
             objectVo.setExecuterCount(executerList.size());
-            objectVo.setExecuterList(executerList);*/
+            objectVo.setExecuterList(executerList);
         }
         return objectList;
     }
@@ -137,10 +138,12 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
     }
 
     @Override
+    @Transactional
     public Boolean save(SaveEvaluateObjectDto dto) {
         //获取当前评价管理的类型
         MPJLambdaWrapper<EvaluateManage> evaluateManageMPJLambdaWrapper = new MPJLambdaWrapper<>();
         evaluateManageMPJLambdaWrapper
+                .select(EvaluateManage::getId)
                 .selectAs(EvaluateTemplate::getEvaluateType, EvaluateManageVo::getEvaluateType)
                 .select(EvaluateManage.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateManageVo.class).contains(x.getProperty()))
                 .innerJoin(EvaluateTemplate.class, EvaluateTemplate::getId, EvaluateManage::getEvaluateTemplateId)
@@ -156,8 +159,21 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
         }
 
         //清空原有数据
-        evaluateObjectMapper.deleteByEvaluateManageId(evaluateManageVo.getId());
-        evaluateExecuterMapper.deleteByEvaluateManageId(evaluateManageVo.getId());
+        String delSql = "DELETE FROM evaluate_executer WHERE evaluate_object_id IN (" +
+                " SELECT id FROM evaluate_object WHERE evaluate_manage_id = #{dto.evaluateManageId}";
+        if(dto.getObjectList() != null && !dto.getObjectList().isEmpty()){
+            List<String> gradeIds = dto.getObjectList().stream().map(AddEvaluateObjectDto::getGradeId).collect(Collectors.toList());
+            delSql += " and base_grade_id in (" + gradeIds.toString().replace("[", "").replace("]", "") + ")";
+        }
+        delSql += ")";
+        SqlRunnerAdapter.db().delete(delSql);
+
+        delSql = "DELETE FROM evaluate_object WHERE evaluate_manage_id = " + dto.getEvaluateManageId();
+        if(dto.getObjectList() != null && !dto.getObjectList().isEmpty()){
+            List<String> gradeIds = dto.getObjectList().stream().map(AddEvaluateObjectDto::getGradeId).collect(Collectors.toList());
+            delSql += " and base_grade_id in (" + gradeIds.toString().replace("[", "").replace("]", "") + ")";
+        }
+        SqlRunnerAdapter.db().delete(delSql);
 
         //保存新数据
         Date createDate = new Date();
@@ -188,7 +204,7 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                 executer.setCreateUserId(createUserId);
                 executer.setEvaluateManageId(Long.parseLong(dto.getEvaluateManageId()));
                 executer.setEvaluateObjectId(evaluateObject.getId());
-                executer.setUserId(Long.parseLong(executerDto.getExecuterId()));
+                executer.setUserId(Long.parseLong(executerDto.getExecuterId().trim()));
                 executer.setStatus(0);
                 evaluateExecuterMapper.insert(executer);
             }
@@ -275,8 +291,9 @@ public class EvaluateObjectServiceImpl extends MPJBaseServiceImpl<EvaluateObject
                     String[] teacherIds = executerVo.getTeacherId().split(",");
                     for (String teacherId : teacherIds) {
                         EvaluateExecuterVo evaluateExecuterVo = new EvaluateExecuterVo();
-                        evaluateExecuterVo.setEvaluateObjectId(teacherId);
-                        evaluateExecuterVo.setExecuterName(userMap.get(Long.parseLong(teacherId)));
+                        evaluateExecuterVo.setExecuterId(teacherId);
+                        evaluateExecuterVo.setEvaluateObjectId(objectListVo.getObjectId());
+                        evaluateExecuterVo.setExecuterName(userMap.get(Long.parseLong(teacherId.trim())));
                         evaluateExecuterVo.setEvaluateManageId(dto.getEvaluateManageId().toString());
                         currentExecuterList.add(evaluateExecuterVo);
                     }

+ 9 - 1
src/main/java/com/xjrsoft/module/evaluate/service/impl/EvaluateResultServiceImpl.java

@@ -4,12 +4,14 @@ import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.alibaba.excel.write.merge.LoopMergeStrategy;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.model.result.RT;
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.evaluate.dto.AddEvaluateResultDto;
@@ -310,7 +312,12 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
             return "已经评价,请勿重复评价";
         }
 
-        //评价结果保存
+        if(dto.getSubmitType() != null && dto.getSubmitType() == 2){
+            //评价结果保存
+            String delSql = "DELETE FROM evaluate_result WHERE submit_record_id = '" + mobileResultPageVo.getEvaluateSubmitRecordId() + "'";
+            SqlRunnerAdapter.db().delete(delSql);
+        }
+
         List<AddEvaluateResultDto> resultList = dto.getResultList();
         for (AddEvaluateResultDto addEvaluateResultDto : resultList) {
             EvaluateResult evaluateResult = BeanUtil.toBean(addEvaluateResultDto, EvaluateResult.class);
@@ -324,6 +331,7 @@ public class EvaluateResultServiceImpl extends MPJBaseServiceImpl<EvaluateResult
             evaluateResultMapper.insert(evaluateResult);
         }
 
+
         //修改答题人状态
         evaluateExecuterMapper.updateById(new EvaluateExecuter(){{
             setId(Long.parseLong(mobileResultPageVo.getEvaluateUserId()));

+ 77 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageBodyVo.java

@@ -0,0 +1,77 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @title: 评价项表单出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateManageBodyVo {
+
+    /**
+     * 评价模板主键编号
+     */
+    @ApiModelProperty("评价计划主键编号")
+    private Long id;
+    /**
+     * 模板名称
+     */
+    @ApiModelProperty("计划名称")
+    private String name;
+    /**
+     * 评价类型
+     */
+    @ApiModelProperty("模板名称")
+    private String templateName;
+    /**
+     * 使用部门ids
+     */
+    @ApiModelProperty("使用部门ids")
+    private String deptIds;
+    /**
+     * 使用部门ids
+     */
+    @ApiModelProperty("使用部门ids")
+    private String deptIdsCN;
+    /**
+     * 评价总分
+     */
+    @ApiModelProperty("评价总分")
+    private Integer total;
+    /**
+     * 说明
+     */
+    @ApiModelProperty("说明")
+    private String remark;
+
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
+
+    /**
+     * 评价项表单根据标题名称分组出参集合
+     */
+    @ApiModelProperty("评价项表单根据标题名称分组出参集合")
+    private List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList;
+
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateManageVo.java

@@ -92,4 +92,10 @@ public class EvaluateManageVo {
     @ApiModelProperty("evaluateExecuter子表")
     private List<EvaluateExecuterVo> evaluateExecuterList;
 
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
+
 }

+ 29 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/TeaEvaluateClassListVo.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+* @title: 被评价对象表单出参
+* @Author dzx
+* @Date: 2024-01-16
+* @Version 1.0
+*/
+@Data
+public class TeaEvaluateClassListVo {
+
+    @ApiModelProperty("id")
+    private Long id;
+
+    @ApiModelProperty("问题")
+    private String problem;
+
+    @ApiModelProperty("被评价对象数")
+    private Long userId;
+
+    @ApiModelProperty("参与评价的人数")
+    private Integer score;
+
+    @ApiModelProperty("班级id")
+    private Long evaluatedObjectId;
+}

+ 6 - 0
src/main/java/com/xjrsoft/module/student/dto/CalssQuantitativeAssessmentPageDto.java

@@ -63,4 +63,10 @@ public class CalssQuantitativeAssessmentPageDto extends PageInput {
      */
     @ApiModelProperty(value = "学期ID(base_semester)")
     private Long baseStudentAssessmentCategoryId;
+
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/student/dto/QuantitativeAssessmentExcelDto.java

@@ -64,4 +64,10 @@ public class QuantitativeAssessmentExcelDto implements Serializable {
      */
     @ApiModelProperty(value = "子表的类型", hidden = true)
     private Long baseStudentAssessmentCategoryId;
+
+    @ApiModelProperty("年份")
+    private Integer year;
+
+    @ApiModelProperty("月份")
+    private Integer month;
 }

+ 8 - 0
src/main/java/com/xjrsoft/module/student/service/IQuotaFormulaRuleService.java

@@ -15,4 +15,12 @@ import com.xjrsoft.module.student.vo.QuotaFormulaRulePageVo;
 
 public interface IQuotaFormulaRuleService extends MPJBaseService<QuotaFormulaRule> {
     Page<QuotaFormulaRulePageVo> getPage(Page<QuotaFormulaRulePageDto> page, QuotaFormulaRulePageDto dto);
+
+
+    /**
+     * 根据绑定的指标查询公式
+     * @param bindQuota
+     * @return
+     */
+    String getFormulaByQuota(String bindQuota);
 }

+ 105 - 3
src/main/java/com/xjrsoft/module/student/service/impl/BaseStudentAssessmentInspectionServiceImpl.java

@@ -17,12 +17,16 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.AssessmentTypeEnum;
+import com.xjrsoft.common.enums.EvaluateTypeEnum;
 import com.xjrsoft.common.enums.ScoreTypeEnum;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.common.utils.excel.ExcelMergeUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
+import com.xjrsoft.module.evaluate.dto.TeaEvaluateClassDto;
+import com.xjrsoft.module.evaluate.mapper.EvaluateResultMapper;
+import com.xjrsoft.module.evaluate.vo.TeaEvaluateClassListVo;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.service.IUserService;
@@ -46,6 +50,7 @@ import com.xjrsoft.module.student.mapper.BaseStudentAssessmentProjectMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentAssessmentStudentRelationMapper;
 import com.xjrsoft.module.student.mapper.BaseStudentSchoolRollMapper;
 import com.xjrsoft.module.student.service.IBaseStudentAssessmentInspectionService;
+import com.xjrsoft.module.student.service.IQuotaFormulaRuleService;
 import com.xjrsoft.module.student.vo.BaseStudentAssessmentClassListVo;
 import com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionMobilePageVo;
 import com.xjrsoft.module.student.vo.BaseStudentAssessmentInspectionMobileVo;
@@ -58,13 +63,20 @@ import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.system.service.IFileService;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
+import me.zhyd.oauth.log.Log;
 import org.springframework.beans.BeanUtils;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import javax.script.ScriptException;
 import java.io.ByteArrayOutputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.ArrayList;
@@ -73,7 +85,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
-import static javax.swing.UIManager.put;
 
 /**
  * @title: 学生班级巡查考核
@@ -105,6 +116,10 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
 
     private final IWeChatService weChatService;
 
+    private final EvaluateResultMapper evaluateResultMapper;
+
+    private final IQuotaFormulaRuleService quotaFormulaRuleService;
+
     @Override
     public Page<BaseStudentAssessmentInspectionPageVo> getPage(Page<BaseStudentAssessmentInspectionPageDto> page, BaseStudentAssessmentInspectionPageDto dto) {
         Page<BaseStudentAssessmentInspectionPageVo> result = assessmentInspectionMapper.getPage(page, dto);
@@ -275,7 +290,6 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                     CalssQuantitativeAssessmentPageDto calssQuantitativeAssessmentPageDto = new CalssQuantitativeAssessmentPageDto();
                     BeanUtils.copyProperties(dto, calssQuantitativeAssessmentPageDto);
 
-
                     //学生个人行为
                     dto.setBaseStudentAssessmentCategoryId(1768178717588197377L);
                     Map<Long , QuantitativeAssessmentSingleScoreVo> individualBehaviorMap = getQuantitativeAssessmentSingleScoreMap(calssQuantitativeAssessmentPageDto);
@@ -297,6 +311,22 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                         awardsAndHonorableMap.put(q.getClassId(), q);
                     }
 
+                    //查询任课教师查询班级的数据
+                    TeaEvaluateClassDto evaluateClassDto = new TeaEvaluateClassDto();
+                    evaluateClassDto.setEvaluateType(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode());
+                    evaluateClassDto.setYear(dto.getYear());
+                    LocalDate now = LocalDate.now();
+                    if(dto.getYear() == null){
+                        evaluateClassDto.setYear(now.getYear());
+                    }
+                    evaluateClassDto.setMonth(dto.getMonth());
+                    if(dto.getMonth() == null){
+                        evaluateClassDto.setMonth(now.getMonthValue());
+                    }
+                    List<TeaEvaluateClassListVo> teaEvaluateClassList = evaluateResultMapper.getTeaEvaluateClassList(evaluateClassDto);
+                    Map<Long, List<TeaEvaluateClassListVo>> classEvaluateMap = teaEvaluateClassList.stream().collect(Collectors.groupingBy(TeaEvaluateClassListVo::getEvaluatedObjectId));
+                    String jskhFormula = quotaFormulaRuleService.getFormulaByQuota("teacher_assessment");
+
                     //将结果写进对应的班级里
                     for(CalssQuantitativeAssessmentPageVo c: resultList){
                         Long classId = Long.parseLong(c.getClassId());
@@ -328,6 +358,33 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                                 c.setClassStatusCn("毕业");
                             }
                         }
+
+                        if(classEvaluateMap.containsKey(classId)){
+                            Map<Long, List<TeaEvaluateClassListVo>> evaluateCategoryMap = classEvaluateMap.get(classId).stream().collect(Collectors.groupingBy(TeaEvaluateClassListVo::getId));
+                            int size = evaluateCategoryMap.size();
+
+                            List<Double> evaluateSocreList = new ArrayList<>();//存每个项的平均分
+                            for (Long id : evaluateCategoryMap.keySet()) {
+                                List<TeaEvaluateClassListVo> evaluateList = evaluateCategoryMap.get(id);
+                                int allSorce = evaluateList.stream().mapToInt(TeaEvaluateClassListVo::getScore).sum();
+                                double avgScore = BigDecimal.valueOf(allSorce).divide(BigDecimal.valueOf(resultList.size())).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                                evaluateSocreList.add(avgScore);
+                            }
+
+                            double sum = evaluateSocreList.stream().mapToDouble(Double::doubleValue).sum();
+                            double jskhValue = BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(size),2, RoundingMode.HALF_UP).doubleValue();
+                            c.setTeacherAssessComprehensiveIndex(jskhValue);
+                            String replacedExpression = jskhFormula.replace("JSKH", Double.toString(jskhValue));
+
+                            ScriptEngineManager manager = new ScriptEngineManager();
+                            ScriptEngine engine = manager.getEngineByName("JavaScript");
+                            try {
+                                double result = ((Number) engine.eval(replacedExpression)).doubleValue();
+                                c.setTeacherAssessScore(result);
+                            } catch (ScriptException e) {
+                                Log.error(e.getMessage(), e);
+                            }
+                        }
                     }
                 }
                 //sheet名
@@ -421,6 +478,22 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                 awardsAndHonorableMap.put(q.getClassId(), q);
             }
 
+            //查询任课教师查询班级的数据
+            TeaEvaluateClassDto evaluateClassDto = new TeaEvaluateClassDto();
+            evaluateClassDto.setEvaluateType(EvaluateTypeEnum.TEACHER_EVALUATE_CLASS.getCode());
+            evaluateClassDto.setYear(dto.getYear());
+            LocalDate now = LocalDate.now();
+            if(dto.getYear() == null){
+                evaluateClassDto.setYear(now.getYear());
+            }
+            evaluateClassDto.setMonth(dto.getMonth());
+            if(dto.getMonth() == null){
+                evaluateClassDto.setMonth(now.getMonthValue());
+            }
+            List<TeaEvaluateClassListVo> teaEvaluateClassList = evaluateResultMapper.getTeaEvaluateClassList(evaluateClassDto);
+            Map<Long, List<TeaEvaluateClassListVo>> classEvaluateMap = teaEvaluateClassList.stream().collect(Collectors.groupingBy(TeaEvaluateClassListVo::getEvaluatedObjectId));
+            String jskhFormula = quotaFormulaRuleService.getFormulaByQuota("teacher_assessment");
+
             //将结果写进对应的班级里
             for(CalssQuantitativeAssessmentPageVo c: resultPage.getRecords()){
                 Long classId = Long.parseLong(c.getClassId());
@@ -447,7 +520,11 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
 
                 if(conventionalManagementMap.get(classId) != null){
                     c.setClassConventionalManageSubScore(conventionalManagementMap.get(classId).getSumScore());
-                    c.setClassConventionalManageScore((100 + conventionalManagementMap.get(classId).getSumScore())/100*25);
+                    Double SumScore = 0D;
+                    if(conventionalManagementMap.get(classId).getSumScore() != null){
+                        SumScore = conventionalManagementMap.get(classId).getSumScore();
+                    }
+                    c.setClassConventionalManageScore((100 + SumScore)/100*25);
                 }
 
                 if(awardsAndHonorableMap.get(classId) != null){
@@ -458,6 +535,31 @@ public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceIm
                         c.setHonorScore(10D);
                     }
                 }
+
+                if(classEvaluateMap.containsKey(classId)){
+                    Map<Long, List<TeaEvaluateClassListVo>> evaluateCategoryMap = classEvaluateMap.get(classId).stream().collect(Collectors.groupingBy(TeaEvaluateClassListVo::getId));
+                    int size = evaluateCategoryMap.size();
+                    List<Double> evaluateSocreList = new ArrayList<>();//存每个项的平均分
+                    for (Long id : evaluateCategoryMap.keySet()) {
+                        List<TeaEvaluateClassListVo> resultList = evaluateCategoryMap.get(id);
+                        int allSorce = resultList.stream().mapToInt(TeaEvaluateClassListVo::getScore).sum();
+                        double avgScore = BigDecimal.valueOf(allSorce).divide(BigDecimal.valueOf(resultList.size())).setScale(2, RoundingMode.HALF_UP).doubleValue();
+                        evaluateSocreList.add(avgScore);
+                    }
+                    double sum = evaluateSocreList.stream().mapToDouble(Double::doubleValue).sum();
+                    double jskhValue = BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(size),2, RoundingMode.HALF_UP).doubleValue();
+                    c.setTeacherAssessComprehensiveIndex(jskhValue);
+                    String replacedExpression = jskhFormula.replace("JSKH", Double.toString(jskhValue));
+
+                    ScriptEngineManager manager = new ScriptEngineManager();
+                    ScriptEngine engine = manager.getEngineByName("JavaScript");
+                    try {
+                        double result = ((Number) engine.eval(replacedExpression)).doubleValue();
+                        c.setTeacherAssessScore(result);
+                    } catch (ScriptException e) {
+                        Log.error(e.getMessage(), e);
+                    }
+                }
             }
         }
 

+ 18 - 0
src/main/java/com/xjrsoft/module/student/service/impl/QuotaFormulaRuleServiceImpl.java

@@ -1,7 +1,9 @@
 package com.xjrsoft.module.student.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.module.student.dto.QuotaFormulaRulePageDto;
 import com.xjrsoft.module.student.entity.QuotaFormulaRule;
 import com.xjrsoft.module.student.mapper.QuotaFormulaRuleMapper;
@@ -10,6 +12,8 @@ import com.xjrsoft.module.student.vo.QuotaFormulaRulePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
 * @title: 指标公式规则管理
 * @Author szs
@@ -24,4 +28,18 @@ public class QuotaFormulaRuleServiceImpl extends MPJBaseServiceImpl<QuotaFormula
     public Page<QuotaFormulaRulePageVo> getPage(Page<QuotaFormulaRulePageDto> page, QuotaFormulaRulePageDto dto) {
         return quotaFormulaRuleMapper.getPage(page, dto);
     }
+
+    @Override
+    public String getFormulaByQuota(String bindQuota) {
+        List<QuotaFormulaRule> list = list(
+                new QueryWrapper<QuotaFormulaRule>().lambda()
+                        .eq(QuotaFormulaRule::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .eq(QuotaFormulaRule::getBindQuota, bindQuota)
+                        .orderByDesc(QuotaFormulaRule::getCreateDate)
+        );
+        if(!list.isEmpty()){
+            return list.get(0).getFormula();
+        }
+        return null;
+    }
 }

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

@@ -3602,7 +3602,7 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
                     new QueryWrapper<WorkflowFormRelation>().lambda()
                             .in(WorkflowFormRelation::getProcessId, processIds)
             );
-            Map<String, String> stateMap = relations.stream().collect(Collectors.toMap(WorkflowFormRelation::getProcessId, WorkflowFormRelation::getCurrentState));
+            Map<String, String> stateMap = relations.stream().filter(x -> x.getCurrentState() != null).collect(Collectors.toMap(WorkflowFormRelation::getProcessId, WorkflowFormRelation::getCurrentState));
 
 
             for (HistoricProcessInstance historicProcessInstance : historicProcessInstances) {

+ 7 - 5
src/main/resources/mapper/evaluate/EvaluateManageMapper.xml

@@ -99,11 +99,13 @@
             <if test="dto.status != null">
                 and t.status = #{dto.status}
             </if>
-            <if test="dto.startTime != null and dto.startTime != ''">
-                and t1.start_time >= #{dto.startTime}
-            </if>
-            <if test="dto.endTime != null and dto.startTime != ''">
-                and #{dto.endTime} >= t1.end_time
+            <if test="dto.startTime != null and dto.startTime != '' and dto.endTime != null and dto.startTime != ''">
+                AND (
+                (t1.start_time BETWEEN #{dto.startTime} and #{dto.endTime})
+                OR (t1.end_time BETWEEN #{dto.startTime} and #{dto.endTime})
+                OR (t1.start_time > #{dto.startTime} and #{dto.endTime} > t1.end_time)
+                OR (#{dto.startTime} > t1.start_time and t1.end_time > #{dto.endTime})
+                )
             </if>
         order by t.status;
     </select>

+ 13 - 0
src/main/resources/mapper/evaluate/EvaluateResultMapper.xml

@@ -188,4 +188,17 @@
         </foreach>
         group by t1.object_id;
     </select>
+
+    <select id="getTeaEvaluateClassList" parameterType="com.xjrsoft.module.evaluate.dto.TeaEvaluateClassDto" resultType="com.xjrsoft.module.evaluate.vo.TeaEvaluateClassListVo">
+        SELECT t2.evaluate_item_id as id, t2.problem,t1.score,t1.user_id,t5.object_id as evaluated_object_id FROM evaluate_result t1
+        INNER JOIN evaluate_manage_item t2 ON t1.evaluate_item_id = t2.id
+        INNER JOIN evaluate_manage t3 ON t3.id = t2.evaluate_manage_id
+        INNER JOIN evaluate_template t4 ON t3.evaluate_template_id = t4.id
+        inner join evaluate_object t5 on t1.evaluated_object_id = t5.id
+        WHERE t1.delete_mark = 0 AND t2.delete_mark = 0 AND t3.delete_mark = 0
+        AND t4.delete_mark = 0 AND t5.delete_mark = 0
+        AND t3.year = #{dto.year}
+        AND t3.month = #{dto.month}
+        AND t4.evaluate_type = #{dto.evaluateType}
+    </select>
 </mapper>

+ 13 - 13
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

@@ -206,19 +206,19 @@ class JianyuekbScheduleTaskTest2 {
                 long between = ChronoUnit.DAYS.between(startDateObj, endDateObj);
                 int times = Integer.parseInt(((between / 7) + 1) + "");
 
-//                for (int index = 0; index < times; index ++) {
-//                    LocalDate statrTime = startDateObj.plusDays(index * 7L);
-//                    String startDate = statrTime.format(formatter);
-//                    LocalDate endTime = statrTime.plusDays(6L);
-//                    if(endTime.isAfter(endDateObj)){
-//                        endTime = endDateObj;
-//                    }
-//
-//                    String endDate = endTime.format(formatter);
-//                    //获取课表并存到数据库
-//                    JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
-//                    allScheduleInfo.addAll(scheduleInfo);
-//                }
+                for (int index = 0; index < times; index ++) {
+                    LocalDate statrTime = startDateObj.plusDays(index * 7L);
+                    String startDate = statrTime.format(formatter);
+                    LocalDate endTime = statrTime.plusDays(6L);
+                    if(endTime.isAfter(endDateObj)){
+                        endTime = endDateObj;
+                    }
+
+                    String endDate = endTime.format(formatter);
+                    //获取课表并存到数据库
+                    JsonArray scheduleInfo = dataUtil.getScheduleInfoByGrade(eduYearSerialNo, startDate, endDate);
+                    allScheduleInfo.addAll(scheduleInfo);
+                }
 
                 updSql = "update course_receive_msg set is_callback = 1 where id = " + receiveMsg.get("id").toString();
                 SqlRunnerAdapter.db().update(updSql);