|
|
@@ -7,41 +7,42 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.enums.ClaimTypeEnum;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.page.ConventPage;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.module.base.entity.BaseClass;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClassAdminCourse;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClassCourse;
|
|
|
import com.xjrsoft.module.base.entity.BaseSemester;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseClassAdminCourseMapper;
|
|
|
+import com.xjrsoft.module.base.mapper.BaseClassCourseMapper;
|
|
|
import com.xjrsoft.module.base.service.IBaseClassService;
|
|
|
import com.xjrsoft.module.base.service.IBaseSemesterService;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudent;
|
|
|
import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
|
|
|
+import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.teacher.entity.AttendanceRecord;
|
|
|
import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
-import com.xjrsoft.module.textbook.dto.TeacherCheckByStuDto;
|
|
|
-import com.xjrsoft.module.textbook.dto.TeacherCheckByclassDto;
|
|
|
-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.dto.*;
|
|
|
+import com.xjrsoft.module.textbook.entity.*;
|
|
|
import com.xjrsoft.module.textbook.mapper.TextbookStudentClaimMapper;
|
|
|
import com.xjrsoft.module.textbook.mapper.WfTextbookClaimItemMapper;
|
|
|
-import com.xjrsoft.module.textbook.mapper.WfTextbookClaimMapper;
|
|
|
import com.xjrsoft.module.textbook.service.ITextbookStudentClaimService;
|
|
|
-import com.xjrsoft.module.textbook.vo.TeacherCheckByStuVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.TeacherCheckByclassVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.TeacherCheckStuClaimVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.TextbookClaimStudentConfirmVo;
|
|
|
-import com.xjrsoft.module.textbook.vo.TextbookClaimVO;
|
|
|
-import com.xjrsoft.module.textbook.vo.TextbookStudentSemesterVo;
|
|
|
+import com.xjrsoft.module.textbook.vo.*;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @title: 学生教材认领记录
|
|
|
@@ -61,10 +62,117 @@ public class TextbookStudentClaimServiceImpl extends MPJBaseServiceImpl<Textbook
|
|
|
|
|
|
private final IBaseClassService baseClassService;
|
|
|
|
|
|
- private final WfTextbookClaimMapper wfTextbookClaimMapper;
|
|
|
+ private final BaseClassAdminCourseMapper baseClassAdminCourseMapper;
|
|
|
+
|
|
|
+ private final BaseClassCourseMapper baseClassCourseMapper;
|
|
|
|
|
|
private final WfTextbookClaimItemMapper wfTextbookClaimItemMapper;
|
|
|
|
|
|
+ @Override
|
|
|
+ public HeadTeaLookClassBookVo headTeaLookClassBook(HeadTeaLookClassBookDto dto) {
|
|
|
+ HeadTeaLookClassBookVo result = new HeadTeaLookClassBookVo();
|
|
|
+
|
|
|
+ // 先去申领中找,如果申领中没有数据,那么就到班级课程中找
|
|
|
+ MPJLambdaWrapper<WfTextbookClaimItem> wfTextbookClaimItemMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ wfTextbookClaimItemMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .selectAs(Textbook::getBookName, HeadTeaLookClassBookCategoryDetailVo::getBookName)
|
|
|
+ .selectAs(Textbook::getPrice, HeadTeaLookClassBookCategoryDetailVo::getPrice)
|
|
|
+ .selectAs(Textbook::getTextbookType, HeadTeaLookClassBookCategoryDetailVo::getTextbookType)
|
|
|
+ .selectAs(WfTextbookClaimItem::getCreateDate, HeadTeaLookClassBookCategoryDetailVo::getClaimTime)
|
|
|
+ .select("1 as claim_num")
|
|
|
+ .innerJoin(WfTextbookClaim.class, WfTextbookClaim::getId, WfTextbookClaimItem::getWfTextbookClaimId)
|
|
|
+ .innerJoin(Textbook.class, Textbook::getId, WfTextbookClaimItem::getTextbookId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, HeadTeaLookClassBookCategoryDetailVo::getTextbookTypeCn)
|
|
|
+ )
|
|
|
+ .eq(WfTextbookClaim::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq(WfTextbookClaim::getClassId, dto.getBaseClassId())
|
|
|
+ .eq(WfTextbookClaim::getClaimType, ClaimTypeEnum.ClaimClass.getCode())
|
|
|
+ ;
|
|
|
+ List<HeadTeaLookClassBookCategoryDetailVo> claimResultList = wfTextbookClaimItemMapper.selectJoinList(HeadTeaLookClassBookCategoryDetailVo.class, wfTextbookClaimItemMPJLambdaWrapper);
|
|
|
+
|
|
|
+ if(ObjectUtils.isEmpty(claimResultList)){
|
|
|
+ MPJLambdaWrapper<BaseClassCourse> baseClassCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ baseClassCourseMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .selectAs(Textbook::getBookName, HeadTeaLookClassBookCategoryDetailVo::getBookName)
|
|
|
+ .selectAs(Textbook::getPrice, HeadTeaLookClassBookCategoryDetailVo::getPrice)
|
|
|
+ .selectAs(Textbook::getTextbookType, HeadTeaLookClassBookCategoryDetailVo::getTextbookType)
|
|
|
+ .select("1 as claim_num")
|
|
|
+ .innerJoin(BaseClassAdminCourse.class, BaseClassAdminCourse::getId, BaseClassCourse::getClassId)
|
|
|
+ .innerJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
+ .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, Textbook::getTextbookType,
|
|
|
+ wrapper -> wrapper
|
|
|
+ .selectAs(DictionaryDetail::getName, HeadTeaLookClassBookCategoryDetailVo::getTextbookTypeCn)
|
|
|
+ )
|
|
|
+ .eq(BaseClassAdminCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq(BaseClassAdminCourse::getClassId, dto.getBaseClassId())
|
|
|
+ ;
|
|
|
+ claimResultList = baseClassCourseMapper.selectJoinList(HeadTeaLookClassBookCategoryDetailVo.class, baseClassCourseMPJLambdaWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ObjectUtils.isNotEmpty(claimResultList)){
|
|
|
+ // 处理数据
|
|
|
+ // 根据类型分组
|
|
|
+ Map<String, List<HeadTeaLookClassBookCategoryDetailVo>> detailByCategoryMap = claimResultList.stream()
|
|
|
+ .filter(detail -> StringUtils.isNotEmpty(detail.getTextbookType())) // Exclude entries where textbookType is null
|
|
|
+ .collect(Collectors.groupingBy(HeadTeaLookClassBookCategoryDetailVo::getTextbookType));
|
|
|
+
|
|
|
+ BigDecimal totalPrice = BigDecimal.ZERO;
|
|
|
+ List<HeadTeaLookClassBookCategoryVo> categoryVos = new ArrayList<>();
|
|
|
+ BigDecimal categoryTotalPrice;
|
|
|
+ HeadTeaLookClassBookCategoryVo headTeaLookClassBookCategoryVo;
|
|
|
+ for (Map.Entry<String, List<HeadTeaLookClassBookCategoryDetailVo>> entry : detailByCategoryMap.entrySet()){
|
|
|
+ String key = entry.getKey();
|
|
|
+ List<HeadTeaLookClassBookCategoryDetailVo> value = entry.getValue();
|
|
|
+
|
|
|
+ if(ObjectUtils.isNotEmpty(value)){
|
|
|
+ headTeaLookClassBookCategoryVo = new HeadTeaLookClassBookCategoryVo();
|
|
|
+ headTeaLookClassBookCategoryVo.setTextbookType(key);
|
|
|
+ headTeaLookClassBookCategoryVo.setTextbookTypeCn(value.get(0).getTextbookTypeCn());
|
|
|
+ headTeaLookClassBookCategoryVo.setCategoryDetailVos(value);
|
|
|
+
|
|
|
+ categoryTotalPrice = BigDecimal.ZERO;
|
|
|
+ for (HeadTeaLookClassBookCategoryDetailVo vo : value){
|
|
|
+ if(ObjectUtils.isEmpty(vo.getPrice())){
|
|
|
+ vo.setPrice(BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ categoryTotalPrice = categoryTotalPrice.add(vo.getPrice().multiply(BigDecimal.valueOf(vo.getClaimNum())));
|
|
|
+ totalPrice = totalPrice.add(vo.getPrice().multiply(BigDecimal.valueOf(vo.getClaimNum())));
|
|
|
+ }
|
|
|
+ headTeaLookClassBookCategoryVo.setCategoryTotalPrice(categoryTotalPrice);
|
|
|
+
|
|
|
+ categoryVos.add(headTeaLookClassBookCategoryVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ result.setTotalPrice(totalPrice);
|
|
|
+ result.setCategoryVos(categoryVos);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<HeadTeaLookClassBookSemesterVo> headTeaLookClassBookSemester() {
|
|
|
+ Long loginId = StpUtil.getLoginIdAsLong();
|
|
|
+
|
|
|
+ MPJLambdaWrapper<BaseClassAdminCourse> baseClassAdminCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ baseClassAdminCourseMPJLambdaWrapper
|
|
|
+ .disableSubLogicDel()
|
|
|
+ .selectAs(BaseClassAdminCourse::getBaseSemesterId, HeadTeaLookClassBookSemesterVo::getBaseSemesterId)
|
|
|
+ .selectAs(BaseSemester::getName, HeadTeaLookClassBookSemesterVo::getBaseSemesterIdCn)
|
|
|
+ .selectAs(BaseClassAdminCourse::getClassId, HeadTeaLookClassBookSemesterVo::getBaseClassId)
|
|
|
+ .selectAs(BaseClass::getName, HeadTeaLookClassBookSemesterVo::getBaseClassIdCn)
|
|
|
+ .innerJoin(BaseClass.class, BaseClass::getId, BaseClassAdminCourse::getClassId)
|
|
|
+ .leftJoin(BaseSemester.class, BaseSemester::getId, BaseClassAdminCourse::getBaseSemesterId)
|
|
|
+ .eq(BaseClass::getTeacherId, loginId)
|
|
|
+ .orderByDesc(BaseSemester::getName)
|
|
|
+ ;
|
|
|
+ return baseClassAdminCourseMapper.selectJoinList(HeadTeaLookClassBookSemesterVo.class, baseClassAdminCourseMPJLambdaWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public TextbookClaimStudentConfirmVo getStudentConfirmList(TextbookClaimStudentConfirmDto dto) {
|
|
|
//获取当前登录学生的信息
|