Browse Source

/evaluate/evaluateItem 评价项代码

phoenix 1 year ago
parent
commit
e8ae65d021

+ 70 - 0
src/main/java/com/xjrsoft/module/evaluate/controller/EvaluateItemController.java

@@ -0,0 +1,70 @@
+package com.xjrsoft.module.evaluate.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.bean.BeanUtil;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
+import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
+import com.xjrsoft.module.evaluate.vo.EvaluateItemVo;
+import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/evaluate" + "/evaluateItem")
+@Api(value = "/evaluate"  + "/evaluateItem",tags = "评价项代码")
+@AllArgsConstructor
+public class EvaluateItemController {
+
+
+    private final IEvaluateItemService evaluateItemService;
+
+    @GetMapping(value = "/evaluate-item")
+    @ApiOperation(value="评价模板维护评价项页面")
+    @SaCheckPermission("evaluateitem:detail")
+    public RT<MakeEvaluateItemVo> list(@Valid MakeEvaluateItemDto dto){
+        MakeEvaluateItemVo makeEvaluateItemVo = evaluateItemService.getMakeEvaluateItem(dto);
+        return RT.ok(makeEvaluateItemVo);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询评价项信息")
+    @SaCheckPermission("evaluateitem:detail")
+    public RT<EvaluateItemVo> info(@RequestParam Long id){
+        EvaluateItem evaluateItem = evaluateItemService.getById(id);
+        if (evaluateItem == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(evaluateItem, EvaluateItemVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增评价项")
+    @SaCheckPermission("evaluateitem:add")
+    public RT<Boolean> add(@Valid @RequestBody List<AddEvaluateItemDto> dto){
+        boolean isSuccess = evaluateItemService.addEvaluateItem(dto);
+        return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改评价项")
+    @SaCheckPermission("evaluateitem:edit")
+    public RT<Boolean> update(@Valid @RequestBody List<AddEvaluateItemDto> dto){
+        return RT.ok(evaluateItemService.updateEvaluateItem(dto));
+
+    }
+}

+ 58 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/AddEvaluateItemDto.java

@@ -0,0 +1,58 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class AddEvaluateItemDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 评价模版编号
+    */
+    @ApiModelProperty("评价模版编号")
+    private Long evaluateTemplateId;
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+    /**
+    * 题目名称
+    */
+    @ApiModelProperty("题目名称")
+    private String problem;
+    /**
+    * 题目分数(最小为0,只能整数)
+    */
+    @ApiModelProperty("题目分数(最小为0,只能整数)")
+    private Integer score;
+    /**
+    * 输入框是否为空
+    */
+    @ApiModelProperty("输入框是否为空")
+    private Integer inputNotNull;
+
+}

+ 23 - 0
src/main/java/com/xjrsoft/module/evaluate/dto/MakeEvaluateItemDto.java

@@ -0,0 +1,23 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+* @title: 评价项分页查询入参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class MakeEvaluateItemDto{
+
+    /**
+     * 评价模版编号
+     */
+    @ApiModelProperty("评价模版编号")
+    private Long evaluateTemplateId;
+}

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

@@ -0,0 +1,32 @@
+package com.xjrsoft.module.evaluate.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class UpdateEvaluateItemDto extends AddEvaluateItemDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+}

+ 100 - 0
src/main/java/com/xjrsoft/module/evaluate/entity/EvaluateItem.java

@@ -0,0 +1,100 @@
+package com.xjrsoft.module.evaluate.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+@TableName("evaluate_item")
+@ApiModel(value = "evaluate_item", description = "评价项")
+public class EvaluateItem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    @TableId
+    private Long id;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 修改人
+    */
+    @ApiModelProperty("修改人")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 修改时间
+    */
+    @ApiModelProperty("修改时间")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 删除标记
+    */
+    @ApiModelProperty("删除标记")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 有效标志
+    */
+    @ApiModelProperty("有效标志")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 评价模版编号
+    */
+    @ApiModelProperty("评价模版编号")
+    private Long evaluateTemplateId;
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+    /**
+    * 题目名称
+    */
+    @ApiModelProperty("题目名称")
+    private String problem;
+    /**
+    * 题目分数(最小为0,只能整数)
+    */
+    @ApiModelProperty("题目分数(最小为0,只能整数)")
+    private Integer score;
+    /**
+    * 输入框是否为空
+    */
+    @ApiModelProperty("输入框是否为空")
+    private Integer inputNotNull;
+
+
+}

+ 20 - 0
src/main/java/com/xjrsoft/module/evaluate/mapper/EvaluateItemMapper.java

@@ -0,0 +1,20 @@
+package com.xjrsoft.module.evaluate.mapper;
+
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Mapper
+public interface EvaluateItemMapper extends MPJBaseMapper<EvaluateItem> {
+
+    //清空指定表
+    @Delete("DELETE FROM evaluate_item WHERE evaluate_template_id = #{evaluateTemplateId}")
+    void physicalDeleteEvaluateItem(Long evaluateTemplateId);
+}

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

@@ -0,0 +1,41 @@
+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.MakeEvaluateItemDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
+
+import java.util.List;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+
+public interface IEvaluateItemService extends MPJBaseService<EvaluateItem> {
+
+    /**
+     *
+     * @param dto
+     * @return
+     */
+    MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto);
+
+    /**
+     * 新增评价项
+     * @param dto
+     * @return
+     */
+    Boolean addEvaluateItem(List<AddEvaluateItemDto> dto);
+
+    /**
+     * 修改评价项
+     * @param dto
+     * @return
+     */
+    Boolean updateEvaluateItem(List<AddEvaluateItemDto> dto);
+
+}

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

@@ -0,0 +1,92 @@
+package com.xjrsoft.module.evaluate.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.evaluate.dto.AddEvaluateItemDto;
+import com.xjrsoft.module.evaluate.dto.MakeEvaluateItemDto;
+import com.xjrsoft.module.evaluate.entity.EvaluateItem;
+import com.xjrsoft.module.evaluate.mapper.EvaluateItemMapper;
+import com.xjrsoft.module.evaluate.service.IEvaluateItemService;
+import com.xjrsoft.module.evaluate.vo.EvaluateItemGroupByTopicVo;
+import com.xjrsoft.module.evaluate.vo.EvaluateItemVo;
+import com.xjrsoft.module.evaluate.vo.MakeEvaluateItemVo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+* @title: 评价项
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class EvaluateItemServiceImpl extends MPJBaseServiceImpl<EvaluateItemMapper, EvaluateItem> implements IEvaluateItemService {
+
+    private EvaluateItemMapper evaluateItemMapper;
+    @Override
+    public MakeEvaluateItemVo getMakeEvaluateItem(MakeEvaluateItemDto dto) {
+        MakeEvaluateItemVo makeEvaluateItemVo = new MakeEvaluateItemVo();
+        //获取模板基本信息
+
+        //获取模板下的所有评价子项集合
+        MPJLambdaWrapper<EvaluateItem> evaluateItemWrapper = new MPJLambdaWrapper<>();
+        evaluateItemWrapper
+                .select(EvaluateItem::getId)
+                .select(EvaluateItem.class, x -> VoToColumnUtil.fieldsToColumns(EvaluateItemVo.class).contains(x.getProperty()))
+                .eq(EvaluateItem::getEvaluateTemplateId, dto.getEvaluateTemplateId());
+
+        List<EvaluateItemVo> evaluateItemVoList = this.selectJoinList(EvaluateItemVo.class, evaluateItemWrapper);
+
+        Map<String, List<EvaluateItemVo>> groupedEvaluateItemVo = evaluateItemVoList.stream()
+                .collect(Collectors.groupingBy(EvaluateItemVo::getTopic));
+
+        List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList = new ArrayList<>();
+        groupedEvaluateItemVo.forEach((topic, group) -> {
+            evaluateItemGroupByTopicVoList.add(new EvaluateItemGroupByTopicVo(){{
+                setTopic(topic);
+                setEvaluateItemVoList(group);
+            }});
+        });
+
+        makeEvaluateItemVo.setEvaluateItemGroupByTopicVoList(evaluateItemGroupByTopicVoList);
+
+        return makeEvaluateItemVo;
+    }
+
+    @Override
+    @Transactional
+    public Boolean addEvaluateItem(List<AddEvaluateItemDto> dto) {
+        //获取sortCode的最大数量
+        QueryWrapper<EvaluateItem> queryWrapperSortcode = new QueryWrapper<>();
+        queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
+        EvaluateItem e = this.getOne(queryWrapperSortcode);
+        int sortCode = e.getSortCode() + 1;
+        List<EvaluateItem> evaluateItemList = new ArrayList<>();
+        for (AddEvaluateItemDto addEvaluateItemDto : dto) {
+            addEvaluateItemDto.setSortCode(sortCode++);
+            EvaluateItem evaluateItem = BeanUtil.toBean(addEvaluateItemDto, EvaluateItem.class);
+            evaluateItem.setCreateDate(new Date());
+            evaluateItemList.add(evaluateItem);
+        }
+        return this.saveBatch(evaluateItemList);
+    }
+
+    @Override
+    public Boolean updateEvaluateItem(List<AddEvaluateItemDto> dto) {
+        //先物理删除数据库中该模板下的所有评价项
+        evaluateItemMapper.physicalDeleteEvaluateItem(dto.get(0).getEvaluateTemplateId());
+        //添加新的评价项
+        return addEvaluateItem(dto);
+    }
+}

+ 28 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateItemGroupByTopicVo.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 评价项表单根据标题名称分组出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateItemGroupByTopicVo {
+
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+
+    /**
+     * 评价项表单集合
+     */
+    @ApiModelProperty("评价项表单集合")
+    private List<EvaluateItemVo> evaluateItemVoList;
+}

+ 59 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/EvaluateItemVo.java

@@ -0,0 +1,59 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 评价项表单出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class EvaluateItemVo {
+
+    /**
+    * 主键编号
+    */
+    @ApiModelProperty("主键编号")
+    private Long id;
+    /**
+    * 序号
+    */
+    @ApiModelProperty("序号")
+    private Integer sortCode;
+    /**
+    * 评价模版编号
+    */
+    @ApiModelProperty("评价模版编号")
+    private Long evaluateTemplateId;
+    /**
+    * 标题名称
+    */
+    @ApiModelProperty("标题名称")
+    private String topic;
+    /**
+    * 题目名称
+    */
+    @ApiModelProperty("题目名称")
+    private String problem;
+    /**
+    * 题目分数(最小为0,只能整数)
+    */
+    @ApiModelProperty("题目分数(最小为0,只能整数)")
+    private Integer score;
+    /**
+    * 输入框是否为空
+    */
+    @ApiModelProperty("输入框是否为空")
+    private Integer inputNotNull;
+
+
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/evaluate/vo/MakeEvaluateItemVo.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.evaluate.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+* @title: 评价项表单制作页面出参
+* @Author szs
+* @Date: 2024-01-15
+* @Version 1.0
+*/
+@Data
+public class MakeEvaluateItemVo {
+
+    /**
+    * 评价模板主键编号
+    */
+    @ApiModelProperty("评价模板主键编号")
+    private Long id;
+    /**
+    * 模板名称
+    */
+    @ApiModelProperty("模板名称")
+    private String name;
+    /**
+    * 评价类型
+    */
+    @ApiModelProperty("评价类型")
+    private String evaluateTypeCN;
+    /**
+    * 评价总分
+    */
+    @ApiModelProperty("评价总分")
+    private Integer total;
+    /**
+     * 说明
+     */
+    @ApiModelProperty("说明")
+    private String remark;
+
+    /**
+     * 评价项表单根据标题名称分组出参集合
+     */
+    @ApiModelProperty("评价项表单根据标题名称分组出参集合")
+    private List<EvaluateItemGroupByTopicVo> evaluateItemGroupByTopicVoList;
+}

+ 3 - 3
src/main/java/com/xjrsoft/module/teacher/service/impl/WfTeacherleaveServiceImpl.java

@@ -86,9 +86,9 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
                         setCreateDate(new Date());
                         //setCreateUserId(StpUtil.getLoginIdAsLong());
                         QueryWrapper<WfHeadTeacherLeave> queryWrapperSortcode = new QueryWrapper<>();
-                        queryWrapperSortcode.select("IFNULL(MAX(sort_code),1) as sortCode");
+                        queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
                         WfHeadTeacherLeave w = wfHeadTeacherLeaveService.getOne(queryWrapperSortcode);
-                        setSortCode(w.getSortCode());
+                        setSortCode(w.getSortCode() + 1);
                     }});
                 }
                 /*
@@ -116,7 +116,7 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
                     QueryWrapper<WfHeadTeacherLeave> queryWrapperSortcode = new QueryWrapper<>();
                     queryWrapperSortcode.select("IFNULL(MAX(sort_code),0) as sortCode");
                     WfHeadTeacherLeave w = wfHeadTeacherLeaveService.getOne(queryWrapperSortcode);
-                    wfHeadTeacherLeave.setSortCode(w.getSortCode()+1);
+                    wfHeadTeacherLeave.setSortCode(w.getSortCode() + 1);
                     wfHeadTeacherLeaveList.add(wfHeadTeacherLeave);
                 }
             }

+ 20 - 22
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookStudentClaimServiceImpl.java

@@ -24,8 +24,6 @@ import com.xjrsoft.module.textbook.dto.TeacherCheckStuClaimDto;
 import com.xjrsoft.module.textbook.dto.TextbookClaimStudentConfirmDto;
 import com.xjrsoft.module.textbook.entity.Textbook;
 import com.xjrsoft.module.textbook.entity.TextbookStudentClaim;
-import com.xjrsoft.module.textbook.entity.WfTextbookClaim;
-import com.xjrsoft.module.textbook.entity.WfTextbookClaimItem;
 import com.xjrsoft.module.textbook.mapper.TextbookStudentClaimMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookClaimItemMapper;
 import com.xjrsoft.module.textbook.mapper.WfTextbookClaimMapper;
@@ -126,26 +124,26 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         IPage<TeacherCheckByclassVo> teacherCheckByclassVoList = textbookStudentClaimMapper.getTeacherCheckByclassList(ConventPage.getPage(dto), dto);
 
         //为每本书添加数据
-        for (TeacherCheckByclassVo t : teacherCheckByclassVoList.getRecords()) {
-            MPJLambdaWrapper<WfTextbookClaim> qweryActualReceivedNum = new MPJLambdaWrapper<>();
-            qweryActualReceivedNum
-                    .disableSubLogicDel()
-                    .selectSum(WfTextbookClaimItem::getIssueNumber, TeacherCheckByclassVo::getActualReceivedNum)
-                    .leftJoin(WfTextbookClaimItem.class, WfTextbookClaimItem::getWfTextbookClaimId, WfTextbookClaim::getId)
-                    .eq(WfTextbookClaim::getClassId, t.getClassId())
-                    .eq(WfTextbookClaimItem::getTextbookId, t.getTextbookId());
-            TeacherCheckByclassVo teacherCheckByclassVo = wfTextbookClaimMapper.selectJoinOne(TeacherCheckByclassVo.class, qweryActualReceivedNum);
-
-            t.setActualReceivedNum(teacherCheckByclassVo.getActualReceivedNum());
-
-            LambdaQueryWrapper<TextbookStudentClaim> queryActualClaimNum = new LambdaQueryWrapper<>();
-            queryActualClaimNum
-                    .eq(TextbookStudentClaim::getClassId, t.getClassId())
-                    .eq(TextbookStudentClaim::getTextbookId, t.getTextbookId())
-                    .eq(TextbookStudentClaim::getIsClaim, 1);
-            Long actualClaimNum = this.count(queryActualClaimNum);
-            t.setActualClaimNum(actualClaimNum);
-        }
+//        for (TeacherCheckByclassVo t : teacherCheckByclassVoList.getRecords()) {
+//            MPJLambdaWrapper<WfTextbookClaim> qweryActualReceivedNum = new MPJLambdaWrapper<>();
+//            qweryActualReceivedNum
+//                    .disableSubLogicDel()
+//                    .selectSum(WfTextbookClaimItem::getIssueNumber, TeacherCheckByclassVo::getActualReceivedNum)
+//                    .leftJoin(WfTextbookClaimItem.class, WfTextbookClaimItem::getWfTextbookClaimId, WfTextbookClaim::getId)
+//                    .eq(WfTextbookClaim::getClassId, t.getClassId())
+//                    .eq(WfTextbookClaimItem::getTextbookId, t.getTextbookId());
+//            TeacherCheckByclassVo teacherCheckByclassVo = wfTextbookClaimMapper.selectJoinOne(TeacherCheckByclassVo.class, qweryActualReceivedNum);
+//
+//            t.setActualReceivedNum(teacherCheckByclassVo.getActualReceivedNum());
+//
+//            LambdaQueryWrapper<TextbookStudentClaim> queryActualClaimNum = new LambdaQueryWrapper<>();
+//            queryActualClaimNum
+//                    .eq(TextbookStudentClaim::getClassId, t.getClassId())
+//                    .eq(TextbookStudentClaim::getTextbookId, t.getTextbookId())
+//                    .eq(TextbookStudentClaim::getIsClaim, 1);
+//            Long actualClaimNum = this.count(queryActualClaimNum);
+//            t.setActualClaimNum(actualClaimNum);
+//        }
         return teacherCheckByclassVoList;
     }
 

+ 46 - 22
src/main/resources/mapper/textbook/TextbookStudentClaimMapper.xml

@@ -23,28 +23,52 @@
         ORDER BY t.id DESC
     </select>
 
-    <select id="getTeacherCheckByclassList" parameterType="com.xjrsoft.module.textbook.dto.TeacherCheckByclassDto"
-            resultType="com.xjrsoft.module.textbook.vo.TeacherCheckByclassVo">
-        SELECT a.class_id,
-        b.id            as textbookId,
-        b.book_name,
-        c.name,
-        d.total_student as classStudentNum
-        from textbook b
-        right join (SELECT class_id, textbook_id
-        from textbook_student_claim
-        GROUP BY class_id, textbook_id) a on a.textbook_id = b.id
-        left join base_class c on a.class_id = c.id
-        left join base_class_major_set d on c.id = d.class_id
-        where a.class_id != 0
-        <if test="dto.classIdList != null and dto.classIdList.size() > 0">
-            and a.class_id in
-            <foreach item="classId" index="index" collection="dto.classIdList" open="(" close=")"
-                     separator=",">
-                #{classId}
-            </foreach>
-        </if>
-    </select>
+<select id="getTeacherCheckByclassList" parameterType="com.xjrsoft.module.textbook.dto.TeacherCheckByclassDto"
+        resultType="com.xjrsoft.module.textbook.vo.TeacherCheckByclassVo">
+    WITH textbook_claim_counts AS (
+    SELECT t.class_id, t1.textbook_id, count(t1.issue_number) AS received_num
+    FROM wf_textbook_claim t
+    LEFT JOIN wf_textbook_claim_item t1 ON t1.wf_textbook_claim_id = t.id
+    GROUP BY t.class_id, t1.textbook_id
+    ),
+    actual_claim_counts AS (
+    SELECT class_id, textbook_id, count(is_claim) AS claim_num
+    FROM textbook_student_claim
+    WHERE is_claim = 1
+    GROUP BY class_id, textbook_id
+    )
+    SELECT a.class_id,
+    b.id AS textbookId,
+    b.book_name,
+    c.name,
+    d.total_student AS classStudentNum,
+    tcc.received_num AS actualReceivedNum,
+    acc.claim_num AS actualClaimNum
+    FROM textbook b
+    INNER JOIN (
+    SELECT class_id, textbook_id
+    FROM textbook_student_claim
+    GROUP BY class_id, textbook_id
+    ) a ON a.textbook_id = b.id
+    INNER JOIN base_class c ON a.class_id = c.id
+    INNER JOIN base_class_major_set d ON c.id = d.class_id
+    LEFT JOIN textbook_claim_counts tcc ON tcc.class_id = a.class_id AND tcc.textbook_id = a.textbook_id
+    LEFT JOIN actual_claim_counts acc ON acc.class_id = a.class_id AND acc.textbook_id = a.textbook_id
+    WHERE a.class_id &lt;&gt; 0
+    <if test="dto.classIdList != null and dto.classIdList.size() > 0">
+        AND a.class_id IN
+        <foreach item="classId" index="index" collection="dto.classIdList" open="(" close=")"
+                 separator=",">
+            #{classId}
+        </foreach>
+    </if>
+    <if test="dto.claimStatus != null and dto.claimStatus == 2">
+        AND tcc.received_num = acc.claim_num
+    </if>
+    <if test="dto.claimStatus != null and dto.claimStatus == 3">
+        AND tcc.received_num > acc.claim_num
+    </if>
+</select>
 
     <select id="getTeacherCheckStuClaimList" parameterType="com.xjrsoft.module.textbook.dto.TeacherCheckStuClaimDto"
             resultType="com.xjrsoft.module.textbook.vo.TeacherCheckStuClaimVo">

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

@@ -1940,5 +1940,33 @@ public class FreeMarkerGeneratorTest {
         apiGeneratorService.generateCodes(params);
     }
 
+    /**
+     * 评价项
+     * @throws IOException
+     */
+    @Test
+    public void gcEvaluateItem() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("evaluate_item");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("szs");//作者名称
+        params.setPackageName("evaluate");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
 
+        apiGeneratorService.generateCodes(params);
+
+    }
 }