Browse Source

解决当申领类型为学生的时候,为班级每个学生生成领取(确认信息)认领记录重复添加

phoenix 1 year ago
parent
commit
6394e8c0b0

+ 1 - 0
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookServiceImpl.java

@@ -226,6 +226,7 @@ public class TextbookServiceImpl extends MPJBaseServiceImpl<TextbookMapper, Text
                         //查询年级,如果添加的班级只存在一个年级,添加年级字段值
                         LambdaQueryWrapper<BaseClass> queryWrapper1 = new LambdaQueryWrapper<>();
                         queryWrapper1
+                                .select(BaseClass::getGradeId)
                                 .in(BaseClass::getId, classIdList)
                                 .groupBy(BaseClass::getGradeId);
                         List<BaseClass> baseClassList = baseClassService.list(queryWrapper1);

+ 6 - 1
src/main/java/com/xjrsoft/module/textbook/service/impl/TextbookStudentClaimServiceImpl.java

@@ -85,7 +85,12 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
     public List<TextbookStudentSemesterVo> getStudentSemesterList() {
         //获取当前学生领取记录的所有学期
         MPJLambdaWrapper<TextbookStudentClaim> qwerySemester = new MPJLambdaWrapper<>();
-        qwerySemester.disableSubLogicDel().selectAs(BaseSemester::getName, TextbookStudentSemesterVo::getBaseSemesterIdCN).leftJoin(BaseSemester.class, BaseSemester::getId, TextbookStudentClaim::getBaseSemesterId).eq(TextbookStudentClaim::getStudentUserId, StpUtil.getLoginIdAsLong());
+        qwerySemester
+                .disableSubLogicDel()
+                .selectAs(BaseSemester::getName, TextbookStudentSemesterVo::getBaseSemesterIdCN)
+                .select(TextbookStudentClaim.class, x -> VoToColumnUtil.fieldsToColumns(TextbookStudentSemesterVo.class).contains(x.getProperty()))
+                .leftJoin(BaseSemester.class, BaseSemester::getId, TextbookStudentClaim::getBaseSemesterId)
+                .eq(TextbookStudentClaim::getStudentUserId, StpUtil.getLoginIdAsLong());
         List<TextbookStudentSemesterVo> textbookStudentSemesterVoList = this.selectJoinList(TextbookStudentSemesterVo.class, qwerySemester);
         if (ObjectUtil.isNull(textbookStudentSemesterVoList) && textbookStudentSemesterVoList.size() == 0) {
             return null;

+ 16 - 8
src/main/java/com/xjrsoft/module/textbook/service/impl/WfTextbookClaimServiceImpl.java

@@ -258,21 +258,29 @@ public class WfTextbookClaimServiceImpl extends MPJBaseServiceImpl<WfTextbookCla
 
 
             //当申领类型为学生的时候,为班级每个学生生成领取(确认信息)认领记录
-            //查出班上的所有学生id
             if (ObjectUtil.isNotNull(wfTextbookClaim.getClaimType()) && wfTextbookClaim.getClaimType().equals(ClaimTypeEnum.ClaimStudent.getCode())) {
+                //查出班上的所有学生id
                 List<Long> userIdList = xjrUserMapper.getUserIdByClassId(wfTextbookClaim.getClassId());
 
                 if (ObjectUtil.isNull(userIdList) && userIdList.size() == 0) {
                     throw new MyException("申领班级有误,请核实");
                 }
 
-                for (Long userId : userIdList) {
-                    textbookStudentClaimService.save(new TextbookStudentClaim() {{
-                        setStudentUserId(userId);
-                        setBaseSemesterId(wfTextbookClaim.getBaseSemesterId());
-                        setClassId(wfTextbookClaim.getClassId());
-                        setTextbookId(wfTextbookClaimItem.getTextbookId());
-                    }});
+                LambdaQueryWrapper<TextbookStudentClaim> queryWrapperRecord = new LambdaQueryWrapper<>();
+                queryWrapperRecord
+                        .eq(TextbookStudentClaim::getTextbookId, wfTextbookClaimItem.getTextbookId())
+                        .eq(TextbookStudentClaim::getStudentUserId, wfTextbookClaim.getClassId());
+                Long count = textbookStudentClaimService.count(queryWrapperRecord);
+                //为0的时候表示该班级该书没有生成领取记录
+                if(count <= 0){
+                    for (Long userId : userIdList) {
+                        textbookStudentClaimService.save(new TextbookStudentClaim() {{
+                            setStudentUserId(userId);
+                            setBaseSemesterId(wfTextbookClaim.getBaseSemesterId());
+                            setClassId(wfTextbookClaim.getClassId());
+                            setTextbookId(wfTextbookClaimItem.getTextbookId());
+                        }});
+                    }
                 }
             }
         }

+ 1 - 1
src/test/java/com/xjrsoft/module/textbook/service/impl/TextbookServiceImplTest.java

@@ -18,7 +18,7 @@ class TextbookServiceImplTest {
 
     @Test
     void dataHandleAddTextbookNode() {
-        textbookService.dataHandleAddTextbookNode(1739238143509458944L);
+        textbookService.dataHandleAddTextbookNode(1742724751068033024L);
     }
 
     @Test

+ 1 - 1
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -1900,7 +1900,7 @@ public class FreeMarkerGeneratorTest {
         IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
 
         apiGeneratorService.generateCodes(params);
-    }
+
 }
     /**
      * 查寝记录