|
@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
|
|
|
import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
|
|
|
import com.ym.mec.biz.dal.dto.LuckStatisDto;
|
|
|
import com.ym.mec.biz.dal.dto.OrderStatisDto;
|
|
|
+import com.ym.mec.biz.dal.dto.OrganMaxAmountDto;
|
|
|
import com.ym.mec.biz.dal.entity.Organization;
|
|
|
import com.ym.mec.common.controller.BaseController;
|
|
|
import com.ym.mec.common.entity.HttpResponseResult;
|
|
@@ -43,6 +44,8 @@ public class ActivityController extends BaseController {
|
|
|
Set<Integer> orderOrganIds = orders.stream().map(OrderStatisDto::getOrganId).collect(Collectors.toSet());
|
|
|
//获取所有分部预计的人数
|
|
|
List<OrderStatisDto> organNormalStudents = studentRegistrationDao.getOrganNormalStudent();
|
|
|
+ //获取分部的目标金额
|
|
|
+ List<OrganMaxAmountDto> maxAmount4Organs = sporadicChargeInfoDao.getActiveOrgansMaxAmount(12);
|
|
|
|
|
|
for (Organization organ : organs) {
|
|
|
if (!orderOrganIds.contains(organ.getId())) {
|
|
@@ -56,7 +59,15 @@ public class ActivityController extends BaseController {
|
|
|
Integer totalEstimatedNums = 0;
|
|
|
Integer totalNum = 0;
|
|
|
Integer totalTimes = 0;
|
|
|
+ BigDecimal totalMaxAmount = BigDecimal.ZERO;
|
|
|
for (OrderStatisDto order : orders) {
|
|
|
+ for (OrganMaxAmountDto maxAmount4Organ : maxAmount4Organs) {
|
|
|
+ if (order.getOrganId().equals(maxAmount4Organ.getId())) {
|
|
|
+ order.setMaxAmount(maxAmount4Organ.getMaxAmount() == null ? BigDecimal.ZERO.setScale(2) : maxAmount4Organ.getMaxAmount().setScale(2));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
for (OrderStatisDto organNormalStudent : organNormalStudents) {
|
|
|
if (order.getOrganId().equals(organNormalStudent.getOrganId())) {
|
|
|
order.setEstimatedNums(organNormalStudent.getEstimatedNums());
|
|
@@ -67,10 +78,11 @@ public class ActivityController extends BaseController {
|
|
|
totalNum += order.getNums();
|
|
|
totalTimes += order.getTimes();
|
|
|
totalMoney = totalMoney.add(order.getMoney());
|
|
|
- if (order.getEstimatedNums() <= 0) {
|
|
|
- order.setScale(new BigDecimal(order.getNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
- }else {
|
|
|
- order.setScale(new BigDecimal(order.getNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(order.getEstimatedNums()), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ totalMaxAmount = totalMaxAmount.add(order.getMaxAmount());
|
|
|
+ if (order.getMaxAmount().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ order.setScale(new BigDecimal("100.00"));
|
|
|
+ } else {
|
|
|
+ order.setScale(order.getMoney().multiply(new BigDecimal(100)).divide(order.getMaxAmount(), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
}
|
|
|
}
|
|
|
orders.sort(Comparator.comparing(OrderStatisDto::getMoney).reversed());
|
|
@@ -81,10 +93,11 @@ public class ActivityController extends BaseController {
|
|
|
luckStatisDto.setTotalNum(totalNum);
|
|
|
luckStatisDto.setTotalTimes(totalTimes);
|
|
|
luckStatisDto.setTotalMoney(totalMoney);
|
|
|
- if (luckStatisDto.getTotalEstimatedNums() <= 0) {
|
|
|
- totalEstimatedNums = 1;
|
|
|
+ luckStatisDto.setTotalMaxAmount(totalMaxAmount);
|
|
|
+ if (luckStatisDto.getTotalMaxAmount().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ totalMaxAmount = BigDecimal.ONE;
|
|
|
}
|
|
|
- luckStatisDto.setScale(new BigDecimal(totalNum).multiply(new BigDecimal(100)).divide(new BigDecimal(totalEstimatedNums), 2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ luckStatisDto.setScale(totalMoney.multiply(new BigDecimal(100)).divide(totalMaxAmount, 2, BigDecimal.ROUND_HALF_UP));
|
|
|
return succeed(luckStatisDto);
|
|
|
}
|
|
|
}
|