|
@@ -18,7 +18,6 @@ import cn.hutool.core.collection.CollStreamUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
import cn.hutool.core.util.PhoneUtil;
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
@@ -29,7 +28,6 @@ import com.google.common.collect.Maps;
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.annotation.Resource;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
-import org.apache.commons.collections4.MapUtils;
|
|
|
|
import org.apache.commons.compress.utils.Lists;
|
|
import org.apache.commons.compress.utils.Lists;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -39,8 +37,9 @@ import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
import vip.xiaonuo.biz.modular.api.param.WxUserMsgParam;
|
|
import vip.xiaonuo.biz.modular.api.param.WxUserMsgParam;
|
|
import vip.xiaonuo.biz.modular.api.service.ApiService;
|
|
import vip.xiaonuo.biz.modular.api.service.ApiService;
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.param.*;
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.param.*;
|
|
-import vip.xiaonuo.biz.modular.bizappointmenttime.entity.BizAppointmentTime;
|
|
|
|
import vip.xiaonuo.biz.modular.bizappointmenttime.service.BizAppointmentTimeService;
|
|
import vip.xiaonuo.biz.modular.bizappointmenttime.service.BizAppointmentTimeService;
|
|
|
|
+import vip.xiaonuo.biz.modular.bizchargestation.entity.BizChargeStation;
|
|
|
|
+import vip.xiaonuo.biz.modular.bizchargestation.service.BizChargeStationService;
|
|
import vip.xiaonuo.biz.modular.bizconfig.entity.BizConfig;
|
|
import vip.xiaonuo.biz.modular.bizconfig.entity.BizConfig;
|
|
import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
|
|
import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
|
|
import vip.xiaonuo.biz.modular.bizexcessconfig.entity.BizExcessConfig;
|
|
import vip.xiaonuo.biz.modular.bizexcessconfig.entity.BizExcessConfig;
|
|
@@ -52,7 +51,6 @@ import vip.xiaonuo.biz.modular.bizloadappointsupplier.service.BizLoadAppointSupp
|
|
import vip.xiaonuo.biz.modular.bizloadtime.entity.BizLoadTime;
|
|
import vip.xiaonuo.biz.modular.bizloadtime.entity.BizLoadTime;
|
|
import vip.xiaonuo.biz.modular.bizloadtime.service.BizLoadTimeService;
|
|
import vip.xiaonuo.biz.modular.bizloadtime.service.BizLoadTimeService;
|
|
import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
|
|
import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
|
|
-import vip.xiaonuo.biz.modular.bizorder.param.BizOrderExportResult;
|
|
|
|
import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
|
|
import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
|
|
import vip.xiaonuo.biz.modular.bizorderconfig.entity.BizOrderConfig;
|
|
import vip.xiaonuo.biz.modular.bizorderconfig.entity.BizOrderConfig;
|
|
import vip.xiaonuo.biz.modular.bizorderconfig.service.BizOrderConfigService;
|
|
import vip.xiaonuo.biz.modular.bizorderconfig.service.BizOrderConfigService;
|
|
@@ -77,7 +75,6 @@ import vip.xiaonuo.biz.modular.record.service.BizRecordService;
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
import vip.xiaonuo.biz.modular.user.entity.BizUser;
|
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
import vip.xiaonuo.biz.modular.user.service.BizUserService;
|
|
import vip.xiaonuo.biz.modular.utils.CommonExportUtil;
|
|
import vip.xiaonuo.biz.modular.utils.CommonExportUtil;
|
|
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
import vip.xiaonuo.common.page.CommonPageRequest;
|
|
import vip.xiaonuo.common.page.CommonPageRequest;
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.entity.BizAppointmentRecord;
|
|
import vip.xiaonuo.biz.modular.bizappointmentrecord.entity.BizAppointmentRecord;
|
|
@@ -156,6 +153,10 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
|
|
@Resource
|
|
@Resource
|
|
private BizPipePlanService bizPipePlanService;
|
|
private BizPipePlanService bizPipePlanService;
|
|
|
|
|
|
|
|
+
|
|
|
|
+ @Resource
|
|
|
|
+ private BizChargeStationService bizChargeStationService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Page<BizAppointmentRecord> page(BizAppointmentRecordPageParam bizAppointmentRecordPageParam) {
|
|
public Page<BizAppointmentRecord> page(BizAppointmentRecordPageParam bizAppointmentRecordPageParam) {
|
|
QueryWrapper<BizAppointmentRecord> queryWrapper = getQueryWrapper(bizAppointmentRecordPageParam);
|
|
QueryWrapper<BizAppointmentRecord> queryWrapper = getQueryWrapper(bizAppointmentRecordPageParam);
|
|
@@ -1526,7 +1527,7 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void addOtherAppointment(BizOtherAppointmentAddParam bizOtherAppointmentAddParam) {
|
|
public void addOtherAppointment(BizOtherAppointmentAddParam bizOtherAppointmentAddParam) {
|
|
- checkOtherParam(bizOtherAppointmentAddParam.getLicenseNumber());
|
|
|
|
|
|
+ checkParam(bizOtherAppointmentAddParam.getLicenseNumber());
|
|
//获取流程配置判断预约是否需要审核
|
|
//获取流程配置判断预约是否需要审核
|
|
BizAppointmentRecord bizAppointmentRecord = BeanUtil.toBean(bizOtherAppointmentAddParam, BizAppointmentRecord.class);
|
|
BizAppointmentRecord bizAppointmentRecord = BeanUtil.toBean(bizOtherAppointmentAddParam, BizAppointmentRecord.class);
|
|
BizUser bizUser = bizUserService.getById(bizOtherAppointmentAddParam.getDriverId());
|
|
BizUser bizUser = bizUserService.getById(bizOtherAppointmentAddParam.getDriverId());
|
|
@@ -1545,7 +1546,7 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
|
|
public void editOtherAppointment(BizOtherAppointmentEditParam bizOtherAppointmentEditParam) {
|
|
public void editOtherAppointment(BizOtherAppointmentEditParam bizOtherAppointmentEditParam) {
|
|
BizAppointmentRecord bizAppointmentRecord = this.queryEntity(bizOtherAppointmentEditParam.getId());
|
|
BizAppointmentRecord bizAppointmentRecord = this.queryEntity(bizOtherAppointmentEditParam.getId());
|
|
if (!bizAppointmentRecord.getLicenseNumber().equals(bizOtherAppointmentEditParam.getLicenseNumber())) {
|
|
if (!bizAppointmentRecord.getLicenseNumber().equals(bizOtherAppointmentEditParam.getLicenseNumber())) {
|
|
- checkOtherParam(bizOtherAppointmentEditParam.getLicenseNumber());
|
|
|
|
|
|
+ checkParam(bizOtherAppointmentEditParam.getLicenseNumber());
|
|
}
|
|
}
|
|
BizAppointmentRecord bizAppointmentRecordUp = BeanUtil.toBean(bizOtherAppointmentEditParam, BizAppointmentRecord.class);
|
|
BizAppointmentRecord bizAppointmentRecordUp = BeanUtil.toBean(bizOtherAppointmentEditParam, BizAppointmentRecord.class);
|
|
BizUser bizUser = bizUserService.getById(bizOtherAppointmentEditParam.getDriverId());
|
|
BizUser bizUser = bizUserService.getById(bizOtherAppointmentEditParam.getDriverId());
|
|
@@ -1557,17 +1558,19 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- //其他预约校验
|
|
|
|
- public void checkOtherParam(String licenseNumber) {
|
|
|
|
|
|
+ //预约校验
|
|
|
|
+ public void checkParam(String licenseNumber) {
|
|
//校验车牌号
|
|
//校验车牌号
|
|
if (ObjectUtil.isNotEmpty(licenseNumber)) {
|
|
if (ObjectUtil.isNotEmpty(licenseNumber)) {
|
|
licenseNumber = licenseNumber.toUpperCase().trim();
|
|
licenseNumber = licenseNumber.toUpperCase().trim();
|
|
//校验车牌号是否添加过预约,排除11:已签收、 13:销售已审核 、 14:已取消
|
|
//校验车牌号是否添加过预约,排除11:已签收、 13:销售已审核 、 14:已取消
|
|
- long count = this.count(new QueryWrapper<BizAppointmentRecord>().lambda().
|
|
|
|
|
|
+ BizAppointmentRecord bizAppointmentRecord = this.getOne(new QueryWrapper<BizAppointmentRecord>().lambda().
|
|
eq(BizAppointmentRecord::getLicenseNumber, licenseNumber).
|
|
eq(BizAppointmentRecord::getLicenseNumber, licenseNumber).
|
|
- notIn(BizAppointmentRecord::getStatus, "10", "11", "12", "13", "14", "15"));
|
|
|
|
- if (count > 0) {
|
|
|
|
- throw new CommonException("车牌号:{}已经添加过预约!", licenseNumber);
|
|
|
|
|
|
+ notIn(BizAppointmentRecord::getStatus, "10", "11", "12", "13", "14", "15", "19")
|
|
|
|
+ .last("limit 1"));
|
|
|
|
+ if (bizAppointmentRecord != null) {
|
|
|
|
+ transService.transOne(bizAppointmentRecord);
|
|
|
|
+ throw new CommonException("车牌号:{}已经存在【" + (String) bizAppointmentRecord.getTransMap().get("appointmentTypeName") + "】类型的有效预约记录!", licenseNumber);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1661,4 +1664,118 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
|
|
return String.format("%03d", counter);
|
|
return String.format("%03d", counter);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public void addChargeStationReservation(BizChargeStationReservationAddParam bizChargeStationReservationAddParam) {
|
|
|
|
+ //校验是否存在有效得预约信息
|
|
|
|
+ checkParam(bizChargeStationReservationAddParam.getLicenseNumber());
|
|
|
|
+ lock.lock();
|
|
|
|
+ try {
|
|
|
|
+ //校验一下充电桩剩余数量是否够扣减
|
|
|
|
+ //查询充电桩配置信息
|
|
|
|
+ BizChargeStation bizChargeStation = bizChargeStationService.getOne(new QueryWrapper<BizChargeStation>()
|
|
|
|
+ .lambda().eq(BizChargeStation::getDeleteFlag, 0).last("limit 1"));
|
|
|
|
+ if (bizChargeStation != null && (bizChargeStation.getChargeStationTotalNumber() - bizChargeStation.getChargeStationUsedNumber()) < 1) {
|
|
|
|
+ throw new CommonException("充电桩已无剩余充电桩数量");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //获取流程配置判断预约是否需要审核
|
|
|
|
+ BizAppointmentRecord bizAppointmentRecord = BeanUtil.toBean(bizChargeStationReservationAddParam, BizAppointmentRecord.class);
|
|
|
|
+ BizUser bizUser = bizUserService.getById(bizChargeStationReservationAddParam.getDriverId());
|
|
|
|
+ if (bizUser != null) {
|
|
|
|
+ bizAppointmentRecord.setDriverName(bizUser.getName());
|
|
|
|
+ bizAppointmentRecord.setDriverMobile(bizUser.getPhone());
|
|
|
|
+ }
|
|
|
|
+ bizAppointmentRecord.setOtherNumber(getNumber("CD", "4"));
|
|
|
|
+ //默认赋值待入场状态
|
|
|
|
+ bizAppointmentRecord.setStatus("4");
|
|
|
|
+ bizAppointmentRecord.setAppointmentType("4");
|
|
|
|
+ //新增成功,并将充电桩已使用数量进行扣减
|
|
|
|
+ if (this.save(bizAppointmentRecord)) {
|
|
|
|
+ bizChargeStation.setChargeStationUsedNumber(bizChargeStation.getChargeStationUsedNumber() + 1);
|
|
|
|
+ bizChargeStationService.updateById(bizChargeStation);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ } finally {
|
|
|
|
+ lock.unlock();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void editChargeStationReservation(BizChargeStationReservationEditParam bizChargeStationReservationEditParam) {
|
|
|
|
+ BizAppointmentRecord bizAppointmentRecord = this.queryEntity(bizChargeStationReservationEditParam.getId());
|
|
|
|
+ if (!bizAppointmentRecord.getLicenseNumber().equals(bizChargeStationReservationEditParam.getLicenseNumber())) {
|
|
|
|
+ //校验是否存在有效得预约信息
|
|
|
|
+ checkParam(bizChargeStationReservationEditParam.getLicenseNumber());
|
|
|
|
+ }
|
|
|
|
+ BizAppointmentRecord bizAppointmentRecordUp = BeanUtil.toBean(bizChargeStationReservationEditParam, BizAppointmentRecord.class);
|
|
|
|
+ BizUser bizUser = bizUserService.getById(bizChargeStationReservationEditParam.getDriverId());
|
|
|
|
+ if (bizUser != null) {
|
|
|
|
+ bizAppointmentRecordUp.setDriverName(bizUser.getName());
|
|
|
|
+ bizAppointmentRecordUp.setDriverMobile(bizUser.getPhone());
|
|
|
|
+ }
|
|
|
|
+ this.updateById(bizAppointmentRecordUp);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public void deleteChargeStationReservation(List<BizAppointmentRecordIdParam> bizAppointmentRecordIdParamList) {
|
|
|
|
+ lock.lock();
|
|
|
|
+ try {
|
|
|
|
+ //释放充电数量
|
|
|
|
+ //查询充电桩配置信息
|
|
|
|
+ BizChargeStation bizChargeStation = bizChargeStationService.getOne(new QueryWrapper<BizChargeStation>()
|
|
|
|
+ .lambda().eq(BizChargeStation::getDeleteFlag, 0).last("limit 1"));
|
|
|
|
+ if (ObjectUtil.isNotNull(bizChargeStation)) {
|
|
|
|
+ bizChargeStation.setChargeStationUsedNumber(bizChargeStation.getChargeStationUsedNumber() - 1);
|
|
|
|
+ bizChargeStationService.updateById(bizChargeStation);
|
|
|
|
+ }
|
|
|
|
+ // 执行删除
|
|
|
|
+ this.removeByIds(CollStreamUtil.toList(bizAppointmentRecordIdParamList, BizAppointmentRecordIdParam::getId));
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ } finally {
|
|
|
|
+ lock.unlock();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ @Override
|
|
|
|
+ public void bizChargeStationReservationExit(BizAppointmentRecordIdParam bizAppointmentRecordIdParam) {
|
|
|
|
+ lock.lock();
|
|
|
|
+ try {
|
|
|
|
+ BizAppointmentRecord bizAppointmentRecord = this.queryEntity(bizAppointmentRecordIdParam.getId());
|
|
|
|
+ if ("10".equals(bizAppointmentRecord.getStatus())) {
|
|
|
|
+ throw new CommonException("当前流程已经强制结束,不可重复操作!");
|
|
|
|
+ }
|
|
|
|
+ //强制结束,将状态改成已出场,同时记录操作人以及操作时间
|
|
|
|
+ SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
|
+ bizAppointmentRecord.setExitOperator(loginUser.getName());
|
|
|
|
+ bizAppointmentRecord.setExitTime(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
|
|
|
|
+ .format(LocalDateTime.now()));
|
|
|
|
+ bizAppointmentRecord.setStatus("10");
|
|
|
|
+ if(this.updateById(bizAppointmentRecord)){
|
|
|
|
+ //释放充电数量
|
|
|
|
+ //查询充电桩配置信息
|
|
|
|
+ BizChargeStation bizChargeStation = bizChargeStationService.getOne(new QueryWrapper<BizChargeStation>()
|
|
|
|
+ .lambda().eq(BizChargeStation::getDeleteFlag, 0).last("limit 1"));
|
|
|
|
+ if (ObjectUtil.isNotNull(bizChargeStation)) {
|
|
|
|
+ bizChargeStation.setChargeStationUsedNumber(bizChargeStation.getChargeStationUsedNumber() - 1);
|
|
|
|
+ bizChargeStationService.updateById(bizChargeStation);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+
|
|
|
|
+ } finally {
|
|
|
|
+ lock.unlock();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|