|
@@ -2,17 +2,17 @@ package org.jeecg.modules.business.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.IService;
|
|
import com.baomidou.mybatisplus.extension.service.IService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.jeecg.common.api.vo.Result;
|
|
import org.jeecg.common.api.vo.Result;
|
|
|
import org.jeecg.common.exception.JeecgBootException;
|
|
import org.jeecg.common.exception.JeecgBootException;
|
|
|
import org.jeecg.common.util.TokenUtils;
|
|
import org.jeecg.common.util.TokenUtils;
|
|
|
import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDetailDto;
|
|
import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDetailDto;
|
|
|
import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDto;
|
|
import org.jeecg.modules.business.dto.BusMeetingRoomScheduleDto;
|
|
|
-import org.jeecg.modules.business.entity.BusMeetingRoom;
|
|
|
|
|
-import org.jeecg.modules.business.entity.BusMeetingRoomSchedule;
|
|
|
|
|
-import org.jeecg.modules.business.entity.BusMeetingRoomScheduleDetail;
|
|
|
|
|
|
|
+import org.jeecg.modules.business.entity.*;
|
|
|
import org.jeecg.modules.business.enums.CouponsKeyEnum;
|
|
import org.jeecg.modules.business.enums.CouponsKeyEnum;
|
|
|
import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleMapper;
|
|
import org.jeecg.modules.business.mapper.BusMeetingRoomScheduleMapper;
|
|
|
import org.jeecg.modules.business.vo.BusMeetingKeyValueVo;
|
|
import org.jeecg.modules.business.vo.BusMeetingKeyValueVo;
|
|
@@ -20,14 +20,22 @@ import org.jeecg.modules.business.vo.BusMeetingRoomScheduleDetailVo;
|
|
|
import org.jeecg.modules.business.vo.BusMeetingRoomScheduleVo;
|
|
import org.jeecg.modules.business.vo.BusMeetingRoomScheduleVo;
|
|
|
import org.jeecg.modules.business.vo.MeetingRoomScheduleDetailVo;
|
|
import org.jeecg.modules.business.vo.MeetingRoomScheduleDetailVo;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
-import javax.transaction.Transactional;
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.LocalTime;
|
|
import java.time.LocalTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -49,11 +57,15 @@ public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoo
|
|
|
@Resource
|
|
@Resource
|
|
|
private BusMeetingRoomServiceImpl busMeetingRoomService;
|
|
private BusMeetingRoomServiceImpl busMeetingRoomService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private BusMeetingRoomScheduleOrderDetailServiceImpl busMeetingRoomScheduleOrderDetailService;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
*
|
|
*
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- @Transactional(rollbackOn = Exception.class)
|
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Result create(BusMeetingRoomScheduleDto dto){
|
|
public Result create(BusMeetingRoomScheduleDto dto){
|
|
|
DateTimeFormatter struct = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
DateTimeFormatter struct = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
String tenantId = TokenUtils.currentTenantId();
|
|
String tenantId = TokenUtils.currentTenantId();
|
|
@@ -76,6 +88,11 @@ public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoo
|
|
|
BeanUtil.copyProperties(dto,roomSchedule);
|
|
BeanUtil.copyProperties(dto,roomSchedule);
|
|
|
roomSchedule.setTenantId(tenantId);
|
|
roomSchedule.setTenantId(tenantId);
|
|
|
roomSchedule.setCreateTime(LocalDateTime.now());
|
|
roomSchedule.setCreateTime(LocalDateTime.now());
|
|
|
|
|
+ roomSchedule.setCreateId(TokenUtils.getAuthUser().getId());
|
|
|
|
|
+ roomSchedule.setPayType(1);
|
|
|
|
|
+ roomSchedule.setAmount(new BigDecimal(0));
|
|
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
|
|
|
|
|
+ roomSchedule.setOrderNo("HY"+sdf.format(System.currentTimeMillis()));
|
|
|
meetingRoomScheduleMapper.insert(roomSchedule);
|
|
meetingRoomScheduleMapper.insert(roomSchedule);
|
|
|
|
|
|
|
|
List<BusMeetingRoomScheduleDetail> details = new ArrayList<>();
|
|
List<BusMeetingRoomScheduleDetail> details = new ArrayList<>();
|
|
@@ -188,4 +205,46 @@ public class BusMeetingRoomScheduleServiceImpl extends ServiceImpl<BusMeetingRoo
|
|
|
});
|
|
});
|
|
|
return Result.ok(vos);
|
|
return Result.ok(vos);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 结算
|
|
|
|
|
+ * @param busMeetingRoomSchedule
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public Result settle(BusMeetingRoomSchedule busMeetingRoomSchedule) {
|
|
|
|
|
+ if (ObjectUtils.isEmpty(busMeetingRoomSchedule.getPaymentMethodList())) {
|
|
|
|
|
+ return Result.error("结算支付方式不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ BigDecimal sum = busMeetingRoomSchedule.getAmount().subtract(busMeetingRoomSchedule.getPreferentialAmount());
|
|
|
|
|
+ if (sum.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
|
|
+ return Result.error("优惠金额不能大于订单金额");
|
|
|
|
|
+ }
|
|
|
|
|
+ AtomicReference<BigDecimal> sumAmount = new AtomicReference<>(new BigDecimal(0));
|
|
|
|
|
+ busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
|
|
|
|
|
+ sumAmount.set(sumAmount.get().add(item.getAmount()));
|
|
|
|
|
+ });
|
|
|
|
|
+ if (sumAmount.get().compareTo(sum) != 0) {
|
|
|
|
|
+ return Result.error("输入必须等于结账应收金额");
|
|
|
|
|
+ }
|
|
|
|
|
+ busMeetingRoomSchedule.setBillStatus(1);
|
|
|
|
|
+ meetingRoomScheduleMapper.updateById(busMeetingRoomSchedule);
|
|
|
|
|
+ LambdaQueryWrapper<BusMeetingRoomScheduleOrderDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ lambdaQueryWrapper.eq(BusMeetingRoomScheduleOrderDetail::getMeetingRoomScheduleId, busMeetingRoomSchedule.getId());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetailService.remove(lambdaQueryWrapper);
|
|
|
|
|
+ List<BusMeetingRoomScheduleOrderDetail> busMeetingRoomScheduleOrderDetailList = new ArrayList<>();
|
|
|
|
|
+ busMeetingRoomSchedule.getPaymentMethodList().forEach(item -> {
|
|
|
|
|
+ if (item.getAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
+ BusMeetingRoomScheduleOrderDetail busMeetingRoomScheduleOrderDetail = new BusMeetingRoomScheduleOrderDetail();
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetail.setHotelId(busMeetingRoomSchedule.getHotelId());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetail.setTenantId(busMeetingRoomSchedule.getTenantId());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetail.setMeetingRoomScheduleId(busMeetingRoomSchedule.getId());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetail.setAmount(item.getAmount());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetail.setPayWay(item.getId());
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetailList.add(busMeetingRoomScheduleOrderDetail);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ busMeetingRoomScheduleOrderDetailService.saveBatch(busMeetingRoomScheduleOrderDetailList);
|
|
|
|
|
+ return Result.ok("结算成功!");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|