|
@@ -3,19 +3,24 @@ package com.ym.mec.biz.service.impl;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.ym.mec.biz.dal.entity.Organization;
|
|
|
+import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
|
|
|
+import com.ym.mec.biz.dal.entity.*;
|
|
|
import com.ym.mec.biz.dal.enums.EDegreeStatus;
|
|
|
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
|
|
|
import com.ym.mec.biz.service.OrganizationService;
|
|
|
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
|
|
|
+import com.ym.mec.biz.service.StudentPaymentOrderService;
|
|
|
import com.ym.mec.common.tenant.TenantContextHolder;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import com.ym.mec.biz.dal.entity.Degree;
|
|
|
import com.ym.mec.biz.dal.wrapper.DegreeWrapper;
|
|
|
import com.ym.mec.biz.dal.mapper.DegreeMapper;
|
|
|
import com.ym.mec.biz.service.DegreeService;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
@@ -33,6 +38,15 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
|
|
|
@Autowired
|
|
|
private OrganizationService organizationService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private DegreeRegistrationDao degreeRegistrationDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentPaymentOrderService studentPaymentOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
|
|
|
+
|
|
|
/**
|
|
|
* 查询详情
|
|
|
* @param id 详情ID
|
|
@@ -133,4 +147,61 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
|
|
|
|
|
|
return this.updateById(JSON.parseObject(degree.jsonString(), Degree.class));
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public DegreeWrapper.DegreeStatistical statistic(Long id) {
|
|
|
+ Degree degree = getById(id);
|
|
|
+ if (Objects.isNull(degree)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ DegreeWrapper.DegreeStatistical statistical = new DegreeWrapper.DegreeStatistical();
|
|
|
+ statistical.setId(id);
|
|
|
+ statistical.setRegisterTotal(degree.getRegisterTotal());
|
|
|
+ statistical.setPurchaseCourse(degree.getPurchaseCourse());
|
|
|
+ statistical.setActualAmount(BigDecimal.ZERO);
|
|
|
+ statistical.setDegreeIncome(BigDecimal.ZERO);
|
|
|
+ statistical.setCourseIncome(BigDecimal.ZERO);
|
|
|
+
|
|
|
+ // 查询考级报名的订单
|
|
|
+ List<DegreeRegistration> registrations = degreeRegistrationDao.selectByDegreeId(id);
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(registrations)) {
|
|
|
+ return statistical;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 过滤出支付的订单
|
|
|
+ registrations = registrations.stream().filter(o -> o.getStatus().equals(2)).collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(registrations)) {
|
|
|
+ return statistical;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 订单号集合
|
|
|
+ List<String> orderNos = registrations.stream().map(DegreeRegistration::getOrderNo).collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 通过订单号查询订单
|
|
|
+ List<StudentPaymentOrder> orderByOrderNos = studentPaymentOrderService.findOrderByOrderNos(orderNos);
|
|
|
+ if (CollectionUtils.isEmpty(orderByOrderNos)) {
|
|
|
+ return statistical;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 订单ID集合
|
|
|
+ List<Long> orderIds = orderByOrderNos.stream().map(StudentPaymentOrder::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<StudentPaymentOrderDetail> orderDetailList = studentPaymentOrderDetailDao.getByOrderIdAndType(orderIds, OrderDetailTypeEnum.DEGREE_REGISTRATION);
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(orderDetailList)) {
|
|
|
+ return statistical;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 总金额
|
|
|
+ BigDecimal totalAmount = orderDetailList.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ statistical.setActualAmount(statistical.getActualAmount().add(totalAmount));
|
|
|
+
|
|
|
+ statistical.setDegreeIncome(statistical.getDegreeIncome().add(totalAmount));
|
|
|
+
|
|
|
+ return statistical;
|
|
|
+ }
|
|
|
}
|