|
@@ -1,6 +1,9 @@
|
|
|
package com.template.services.impl;
|
|
package com.template.services.impl;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.date.DateField;
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
+import cn.hutool.core.date.format.DatePrinter;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.core.util.URLUtil;
|
|
import cn.hutool.core.util.URLUtil;
|
|
@@ -15,18 +18,18 @@ import com.template.common.utils.BeanUtil;
|
|
|
import com.template.common.utils.IPageUtil;
|
|
import com.template.common.utils.IPageUtil;
|
|
|
import com.template.component.ParkingFeeSystemComponent;
|
|
import com.template.component.ParkingFeeSystemComponent;
|
|
|
import com.template.component.bo.AddVisitorCarBO;
|
|
import com.template.component.bo.AddVisitorCarBO;
|
|
|
-import com.template.mapper.WelcomeStudentDormitoryMapper;
|
|
|
|
|
import com.template.mapper.WelcomeVisitorMapper;
|
|
import com.template.mapper.WelcomeVisitorMapper;
|
|
|
|
|
+import com.template.model.pojo.WelcomeSetting;
|
|
|
import com.template.model.pojo.WelcomeVisitor;
|
|
import com.template.model.pojo.WelcomeVisitor;
|
|
|
import com.template.model.query.WelcomeVisitorQuery;
|
|
import com.template.model.query.WelcomeVisitorQuery;
|
|
|
import com.template.model.request.WelcomeVisitorRequest;
|
|
import com.template.model.request.WelcomeVisitorRequest;
|
|
|
import com.template.model.result.PageUtils;
|
|
import com.template.model.result.PageUtils;
|
|
|
import com.template.model.vo.WelcomeVisitorVO;
|
|
import com.template.model.vo.WelcomeVisitorVO;
|
|
|
|
|
+import com.template.services.WelcomeSettingService;
|
|
|
import com.template.services.WelcomeVisitorService;
|
|
import com.template.services.WelcomeVisitorService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.context.request.RequestAttributes;
|
|
import org.springframework.web.context.request.RequestAttributes;
|
|
@@ -45,19 +48,14 @@ import java.util.List;
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper, WelcomeVisitor> implements WelcomeVisitorService {
|
|
public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper, WelcomeVisitor> implements WelcomeVisitorService {
|
|
|
|
|
|
|
|
- @Autowired
|
|
|
|
|
- private WelcomeVisitorMapper welcomeVisitorMapper;
|
|
|
|
|
private final ParkingFeeSystemComponent parkingFeeSystemComponent;
|
|
private final ParkingFeeSystemComponent parkingFeeSystemComponent;
|
|
|
|
|
+ private final WelcomeSettingService settingService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional
|
|
@Transactional
|
|
|
public void addVisitor(String studentCard, WelcomeVisitorRequest visitorRequest) {
|
|
public void addVisitor(String studentCard, WelcomeVisitorRequest visitorRequest) {
|
|
|
// 查询当前用户是否已有访客记录
|
|
// 查询当前用户是否已有访客记录
|
|
|
- LambdaQueryWrapper<WelcomeVisitor> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
- queryWrapper.eq(WelcomeVisitor::getStudentCard, studentCard);
|
|
|
|
|
- if (this.count(queryWrapper) > 0) {
|
|
|
|
|
- throw new MyCustomException(ResponseStatusEnum.EXISTS);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ checkBeforeAdd(visitorRequest);
|
|
|
|
|
|
|
|
// TODO 查询学生学费缴纳情况
|
|
// TODO 查询学生学费缴纳情况
|
|
|
|
|
|
|
@@ -113,6 +111,28 @@ public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper,
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void addVisitorByAdmin(WelcomeVisitorRequest visitorRequest) {
|
|
public void addVisitorByAdmin(WelcomeVisitorRequest visitorRequest) {
|
|
|
|
|
+ checkBeforeAdd(visitorRequest);
|
|
|
|
|
+
|
|
|
|
|
+ // 新增访客记录
|
|
|
|
|
+ WelcomeVisitor visitor = new WelcomeVisitor();
|
|
|
|
|
+ BeanUtils.copyProperties(visitorRequest, visitor);
|
|
|
|
|
+ visitor.setRemark("管理员新增");
|
|
|
|
|
+
|
|
|
|
|
+ save(visitor);
|
|
|
|
|
+
|
|
|
|
|
+ // 新增车辆信息
|
|
|
|
|
+ addVisitorCar(visitor);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void checkBeforeAdd(WelcomeVisitorRequest visitorRequest) {
|
|
|
|
|
+ DateTime startTime = DateUtil.parse(visitorRequest.getStartTime());
|
|
|
|
|
+ DateTime endTime = DateUtil.parse(visitorRequest.getEndTime());
|
|
|
|
|
+
|
|
|
|
|
+ // 判断startTime是否在endTime之前
|
|
|
|
|
+ if (startTime.isAfter(endTime)) {
|
|
|
|
|
+ throw new MyCustomException(ResponseStatusEnum.SEND_PARAMS);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 查询当前用户是否已有访客记录
|
|
// 查询当前用户是否已有访客记录
|
|
|
LambdaQueryWrapper<WelcomeVisitor> queryWrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<WelcomeVisitor> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(WelcomeVisitor::getStudentCard, visitorRequest.getStudentCard());
|
|
queryWrapper.eq(WelcomeVisitor::getStudentCard, visitorRequest.getStudentCard());
|
|
@@ -122,19 +142,54 @@ public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper,
|
|
|
|
|
|
|
|
// TODO 查询学生学费缴纳情况
|
|
// TODO 查询学生学费缴纳情况
|
|
|
|
|
|
|
|
- // 新增访客记录
|
|
|
|
|
- WelcomeVisitor visitor = new WelcomeVisitor();
|
|
|
|
|
- BeanUtils.copyProperties(visitorRequest, visitor);
|
|
|
|
|
- visitor.setRemark("管理员新增");
|
|
|
|
|
|
|
+ // 校验车牌数量 4 固定写法
|
|
|
|
|
+ WelcomeSetting setting = settingService.getManageById("4");
|
|
|
|
|
+ Integer carNum = setting.getCarNum();
|
|
|
|
|
|
|
|
- save(visitor);
|
|
|
|
|
|
|
+ // 判断两天是否为同一天,如果为同一天,则比较当天的车辆数量
|
|
|
|
|
+ if (DateUtil.isSameDay(startTime, endTime)) {
|
|
|
|
|
+ checkCarNum(visitorRequest.getId(), startTime.toJdkDate(), carNum);
|
|
|
|
|
+ }
|
|
|
|
|
+ // 循环遍历,判断每天的车辆数量
|
|
|
|
|
+ else {
|
|
|
|
|
+ do {
|
|
|
|
|
+ checkCarNum(visitorRequest.getId(), startTime.toJdkDate(), carNum);
|
|
|
|
|
+
|
|
|
|
|
+ // startTime 加一天
|
|
|
|
|
+ startTime = startTime.offset(DateField.DAY_OF_MONTH, 1);
|
|
|
|
|
+ } while (startTime.isBefore(endTime));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- // 新增车辆信息
|
|
|
|
|
- addVisitorCar(visitor);
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 校验当天的车辆数量
|
|
|
|
|
+ * @param id 访问预约id,新增时为null
|
|
|
|
|
+ * @param curDay 当前日期
|
|
|
|
|
+ * @param carNum 车辆最大可预约数量
|
|
|
|
|
+ */
|
|
|
|
|
+ private void checkCarNum(Integer id, Date curDay, Integer carNum) {
|
|
|
|
|
+ // 获取当天的起始时间字符串
|
|
|
|
|
+ String curDayStartStr = DateUtil.format(curDay, "yyyy-MM-dd 00:00:00");
|
|
|
|
|
+ // 获取当天的结束时间字符串
|
|
|
|
|
+ String curDayEndStr = DateUtil.format(curDay, "yyyy-MM-dd 23:59:59");
|
|
|
|
|
+
|
|
|
|
|
+ LambdaQueryWrapper<WelcomeVisitor> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ queryWrapper.ne(ObjectUtil.isNotNull(id), WelcomeVisitor::getId, id);
|
|
|
|
|
+
|
|
|
|
|
+ // 查询条件:访客记录的开始时间或结束时间在当天范围内
|
|
|
|
|
+ queryWrapper.le(WelcomeVisitor::getStartTime, curDayEndStr);
|
|
|
|
|
+ queryWrapper.ge(WelcomeVisitor::getEndTime, curDayStartStr);
|
|
|
|
|
+
|
|
|
|
|
+ int count = this.count(queryWrapper);
|
|
|
|
|
+ if (count >= carNum) {
|
|
|
|
|
+ throw new MyCustomException(ResponseStatusEnum.CAR_NUM_EXCEED);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void updateVisitorByAdmin(WelcomeVisitorRequest visitorRequest) {
|
|
public void updateVisitorByAdmin(WelcomeVisitorRequest visitorRequest) {
|
|
|
|
|
+ checkBeforeAdd(visitorRequest);
|
|
|
|
|
+
|
|
|
WelcomeVisitor visitor = getById(visitorRequest.getId());
|
|
WelcomeVisitor visitor = getById(visitorRequest.getId());
|
|
|
if (ObjectUtil.isNull(visitor)) {
|
|
if (ObjectUtil.isNull(visitor)) {
|
|
|
throw new MyCustomException(ResponseStatusEnum.SEND_PARAMS);
|
|
throw new MyCustomException(ResponseStatusEnum.SEND_PARAMS);
|
|
@@ -155,7 +210,6 @@ public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper,
|
|
|
LambdaQueryWrapper<WelcomeVisitor> wrapper = new LambdaQueryWrapper<>();
|
|
LambdaQueryWrapper<WelcomeVisitor> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.like(StrUtil.isNotBlank(visitorQuery.getCarNumber()), WelcomeVisitor::getCarNumber, visitorQuery.getCarNumber());
|
|
wrapper.like(StrUtil.isNotBlank(visitorQuery.getCarNumber()), WelcomeVisitor::getCarNumber, visitorQuery.getCarNumber());
|
|
|
wrapper.like(StrUtil.isNotBlank(visitorQuery.getName()), WelcomeVisitor::getName, visitorQuery.getName());
|
|
wrapper.like(StrUtil.isNotBlank(visitorQuery.getName()), WelcomeVisitor::getName, visitorQuery.getName());
|
|
|
- wrapper.eq(WelcomeVisitor::getDeleted,0);
|
|
|
|
|
|
|
|
|
|
IPage<WelcomeVisitor> page = baseMapper.selectPage(new IPageUtil<WelcomeVisitor>().getPage(visitorQuery), wrapper);
|
|
IPage<WelcomeVisitor> page = baseMapper.selectPage(new IPageUtil<WelcomeVisitor>().getPage(visitorQuery), wrapper);
|
|
|
|
|
|
|
@@ -210,7 +264,7 @@ public class WelcomeVisitorServiceImpl extends ServiceImpl<WelcomeVisitorMapper,
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public int deleteData(List<Long> ids) {
|
|
public int deleteData(List<Long> ids) {
|
|
|
- int deleteDatas = welcomeVisitorMapper.deleteBatchIds(ids);
|
|
|
|
|
|
|
+ int deleteDatas = baseMapper.deleteBatchIds(ids);
|
|
|
return deleteDatas;
|
|
return deleteDatas;
|
|
|
}
|
|
}
|
|
|
|
|
|