Bladeren bron

学生自己确认领取

大数据与最优化研究所 9 maanden geleden
bovenliggende
commit
34d58d337f

+ 2 - 2
src/main/java/com/xjrsoft/module/textbook/controller/TextbookStudentClaimController.java

@@ -127,8 +127,8 @@ public class TextbookStudentClaimController {
     @PutMapping("/confirm")
     @ApiOperation(value = "学生自己确认已经领取")
     @SaCheckPermission("textbookstudentclaim:edit")
-    public RT<Boolean> confirm(@Valid @RequestBody List<Long> textbookStudentClaimIds){
-        return RT.ok(textbookStudentClaimService.updateByIds(textbookStudentClaimIds));
+    public RT<Boolean> studentConfirm(@Valid @RequestBody StudentConfirmDto dto){
+        return RT.ok(textbookStudentClaimService.studentConfirm(dto));
     }
 
     @PutMapping("/teacher-confirm")

+ 28 - 0
src/main/java/com/xjrsoft/module/textbook/dto/StudentConfirmDto.java

@@ -0,0 +1,28 @@
+package com.xjrsoft.module.textbook.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+* @title: 教师帮助学生确认已经领取入参
+* @Author szs
+* @Date: 2023-12-25
+* @Version 1.0
+*/
+@Data
+public class StudentConfirmDto {
+    @ApiModelProperty(value = "学期主键编号")
+    private Long baseSemesterId;
+
+    @ApiModelProperty(value = "教材主键编号")
+    private List<Long> textbookIds;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("是否领取(1:已领取 0:未领取)")
+    private Integer isClaim;
+}

+ 3 - 0
src/main/java/com/xjrsoft/module/textbook/dto/TeacherConfirmBatchByTextbookDto.java

@@ -22,4 +22,7 @@ public class TeacherConfirmBatchByTextbookDto implements Serializable {
 
     @ApiModelProperty("学生主键编号")
     private List<Long> userIds;
+
+    @ApiModelProperty("是否领取(1:已领取 0:未领取)")
+    private Integer isClaim;
 }

+ 2 - 0
src/main/java/com/xjrsoft/module/textbook/service/ITextbookStudentClaimService.java

@@ -82,5 +82,7 @@ public interface ITextbookStudentClaimService extends MPJBaseService<TextbookStu
 
     Boolean teacherConfirm(List<TeacherConfirmDto> dtos);
 
+    Boolean studentConfirm(StudentConfirmDto dto);
+
     List<TeacherConfirmBatchTextbookListVo> teacherConfirmBatchTextbookList(TeacherConfirmBatchTextbookListDto dto);
 }

+ 80 - 4
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookStudentClaimServiceImpl.java

@@ -195,6 +195,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         // 获取学期
         BaseSemester baseSemester = baseSemesterMapper.selectById(dto.getBaseSemesterId());
 
+        Long loginId = StpUtil.getLoginIdAsLong();
         // 获取当前学生的信息
         MPJLambdaWrapper<BaseStudentSchoolRoll> baseStudentSchoolRollMPJLambdaWrapper = new MPJLambdaWrapper<>();
         baseStudentSchoolRollMPJLambdaWrapper
@@ -205,6 +206,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                 .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
                 .leftJoin(XjrUser.class, XjrUser::getId, BaseStudentSchoolRoll::getUserId)
                 .leftJoin(BaseStudent.class, BaseStudent::getUserId, BaseStudentSchoolRoll::getUserId)
+                .eq(BaseStudentSchoolRoll::getUserId, loginId)
                 .last("limit 1")
                 ;
         TextbookClaimStudentConfirmVo result = baseStudentSchoolRollMapper.selectJoinOne(TextbookClaimStudentConfirmVo.class, baseStudentSchoolRollMPJLambdaWrapper);
@@ -312,6 +314,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     for (HeadTeaLookClassBookCategoryDetailVo vo : value) {
                         textbookStudentClaim = byTextbookId.get(vo.getTextbookId());
                         if(ObjectUtils.isNotEmpty(textbookStudentClaim)){
+                            vo.setTextbookStudentClaimId(textbookStudentClaim.getId());
                             vo.setIsClaim(textbookStudentClaim.getIsClaim());
                         }else {
                             vo.setIsClaim(0);
@@ -712,7 +715,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                 if(ObjectUtils.isNotEmpty(oldTextbookStudentClaim)){
                     updateTextbookStudentClaim = new TextbookStudentClaim();
                     updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
-                    updateTextbookStudentClaim.setIsClaim(oldTextbookStudentClaim.getIsClaim() == 1 ? 0 : 1);
+                    updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
                     updateTextbookStudentClaim.setModifyDate(nowDate);
                     updateTextbookStudentClaim.setModifyUserId(loginUserId);
                     updateList.add(updateTextbookStudentClaim);
@@ -722,7 +725,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     insertTextbookStudentClaim.setClassId(dto.getClassId());
                     insertTextbookStudentClaim.setStudentUserId(userId);
                     insertTextbookStudentClaim.setTextbookId(textbookId);
-                    insertTextbookStudentClaim.setIsClaim(1);
+                    insertTextbookStudentClaim.setIsClaim(dto.getIsClaim());
                     insertTextbookStudentClaim.setCreateDate(nowDate);
                     insertTextbookStudentClaim.setCreateUserId(loginUserId);
                     insertList.add(insertTextbookStudentClaim);
@@ -802,7 +805,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                 if(ObjectUtils.isNotEmpty(oldTextbookStudentClaim)){
                     updateTextbookStudentClaim = new TextbookStudentClaim();
                     updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
-                    updateTextbookStudentClaim.setIsClaim(oldTextbookStudentClaim.getIsClaim() == 1 ? 0 : 1);
+                    updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
                     updateTextbookStudentClaim.setModifyDate(nowDate);
                     updateTextbookStudentClaim.setModifyUserId(loginUserId);
                     updateList.add(updateTextbookStudentClaim);
@@ -812,7 +815,7 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
                     insertTextbookStudentClaim.setClassId(dto.getClassId());
                     insertTextbookStudentClaim.setStudentUserId(dto.getStudentUserId());
                     insertTextbookStudentClaim.setTextbookId(dto.getTextbookId());
-                    insertTextbookStudentClaim.setIsClaim(1);
+                    insertTextbookStudentClaim.setIsClaim(dto.getIsClaim());
                     insertTextbookStudentClaim.setCreateDate(nowDate);
                     insertTextbookStudentClaim.setCreateUserId(loginUserId);
                     insertList.add(insertTextbookStudentClaim);
@@ -835,6 +838,79 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
         return true;
     }
 
+    @Override
+    public Boolean studentConfirm(StudentConfirmDto dto) {
+        Long loginId = StpUtil.getLoginIdAsLong();
+        // 获取当前学生的信息
+        LambdaQueryWrapper<BaseStudentSchoolRoll> baseStudentSchoolRollLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        baseStudentSchoolRollLambdaQueryWrapper
+                .eq(BaseStudentSchoolRoll::getUserId, loginId)
+                .eq(BaseStudentSchoolRoll::getDeleteMark, DeleteMark.NODELETE.getCode())
+                .last("limit 1")
+        ;
+        BaseStudentSchoolRoll baseStudentSchoolRoll = baseStudentSchoolRollMapper.selectOne(baseStudentSchoolRollLambdaQueryWrapper);
+
+        if(ObjectUtils.isEmpty(baseStudentSchoolRoll)){
+            throw new MyException("学生信息有误,请重新登录");
+        }
+
+        // 根据学期,班级,学生,教材信息获取记录
+        LambdaQueryWrapper<TextbookStudentClaim> textbookStudentClaimLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        textbookStudentClaimLambdaQueryWrapper
+                .eq(TextbookStudentClaim::getBaseSemesterId, dto.getBaseSemesterId())
+                .eq(TextbookStudentClaim::getClassId, baseStudentSchoolRoll.getClassId())
+                .eq(TextbookStudentClaim::getStudentUserId, baseStudentSchoolRoll.getUserId())
+                .in(TextbookStudentClaim::getTextbookId, dto.getTextbookIds())
+        ;
+        List<TextbookStudentClaim> textbookStudentClaimList = textbookStudentClaimMapper.selectList(textbookStudentClaimLambdaQueryWrapper);
+
+        Map<String, TextbookStudentClaim> byUserIdAndTextbookId = textbookStudentClaimList.stream()
+                .collect(Collectors.toMap(t -> "" + t.getStudentUserId() + t.getTextbookId(), t -> t, (t1, t2) -> t1));
+
+        List<TextbookStudentClaim> insertList = new ArrayList<>();
+        List<TextbookStudentClaim> updateList = new ArrayList<>();
+        TextbookStudentClaim oldTextbookStudentClaim;
+        TextbookStudentClaim insertTextbookStudentClaim;
+        TextbookStudentClaim updateTextbookStudentClaim;
+        Date nowDate = new Date();
+        Long loginUserId = StpUtil.getLoginIdAsLong();
+        for (Long textbookId : dto.getTextbookIds()){
+            oldTextbookStudentClaim = byUserIdAndTextbookId.get("" + baseStudentSchoolRoll.getUserId() + textbookId);
+            if(ObjectUtils.isNotEmpty(oldTextbookStudentClaim)){
+                updateTextbookStudentClaim = new TextbookStudentClaim();
+                updateTextbookStudentClaim.setId(oldTextbookStudentClaim.getId());
+                updateTextbookStudentClaim.setIsClaim(dto.getIsClaim());
+                updateTextbookStudentClaim.setModifyDate(nowDate);
+                updateTextbookStudentClaim.setModifyUserId(loginUserId);
+                updateList.add(updateTextbookStudentClaim);
+            }else {
+                insertTextbookStudentClaim = new TextbookStudentClaim();
+                insertTextbookStudentClaim.setBaseSemesterId(dto.getBaseSemesterId());
+                insertTextbookStudentClaim.setClassId(baseStudentSchoolRoll.getClassId());
+                insertTextbookStudentClaim.setStudentUserId(baseStudentSchoolRoll.getUserId());
+                insertTextbookStudentClaim.setTextbookId(textbookId);
+                insertTextbookStudentClaim.setIsClaim(dto.getIsClaim());
+                insertTextbookStudentClaim.setCreateDate(nowDate);
+                insertTextbookStudentClaim.setCreateUserId(loginUserId);
+                insertList.add(insertTextbookStudentClaim);
+            }
+        }
+
+        if (ObjectUtils.isNotEmpty(insertList)) {
+            for (TextbookStudentClaim insert : insertList) {
+                textbookStudentClaimMapper.insert(insert);
+            }
+        }
+
+        if (ObjectUtils.isNotEmpty(updateList)) {
+            for (TextbookStudentClaim update : updateList) {
+                textbookStudentClaimMapper.updateById(update);
+            }
+        }
+
+        return null;
+    }
+
     @Override
     public List<TeacherConfirmBatchTextbookListVo> teacherConfirmBatchTextbookList(TeacherConfirmBatchTextbookListDto dto) {
         MPJLambdaWrapper<WfTextbookClaimItem> wfTextbookClaimItemMPJLambdaWrapper = new MPJLambdaWrapper<>();

+ 3 - 0
src/main/java/com/xjrsoft/module/textbook/vo/HeadTeaLookClassBookCategoryDetailVo.java

@@ -9,6 +9,9 @@ import java.time.LocalDateTime;
 @Data
 public class HeadTeaLookClassBookCategoryDetailVo {
 
+    @ApiModelProperty("书名")
+    private Long textbookStudentClaimId;
+
     @ApiModelProperty("书名")
     private Long textbookId;