Commit 78d8b38c by huluobin

update

parent e276a7ac
......@@ -10,6 +10,8 @@ import com.gogirl.shared.order.*;
import com.gogirl.shared.product.LeisureScheduleServeQuery;
import com.gogirl.shared.product.LeisureScheduleServeResp;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.util.List;
......@@ -142,19 +144,29 @@ public interface ScheduleManageService extends IService<ScheduleManage> {
IPage<LeisureScheduleServeResp> queryPageLeisureScheduleServe(LeisureScheduleServeQuery query);
/**
* 查询美甲师信息和美甲师不可用时间段
* 查询店铺下的美甲师和美甲师不可用时间段
*
* @param scheduledId 是否必传
* @param scheduledId 是否必传:否。为过滤条件,如果是修改的话传预约id在查询不可用时间段的时候会过滤被修改的预约。
* @param departmentId 店铺id
* @param scheduleDate localData
* @param serveIdList 预约的服务id
* @return
* @param day 日期 形如yyyy-MM-dd
* @param serveIdList 预约的服务id。为过滤条件:过滤不能做服务的美甲师id
* @return departmentId下的美甲师和美甲师不可用时间段
* @throws ParseException
*/
List<StoreTechnicianPeriod> queryStoreTechnicianPeriod(Integer scheduledId,
Integer departmentId,
String scheduleDate,
List<Integer> serveIdList) throws ParseException;
List<StoreTechnicianPeriod> queryStoreTechnicianPeriod(@Null Integer scheduledId,
@NotNull Integer departmentId,
@NotNull String day,
@Null List<Integer> serveIdList) throws ParseException;
List<StoreTechnician> queryLeisureTechnician(Integer departmentId, Integer serveId, LocalDateTime serveStartTime, LocalDateTime serveEndTime) throws ParseException;
/**
* 查询店铺下能做服务的美甲师
*
* @param departmentId 店铺id
* @param serveId 服务id
* @param serveStartTime 服务开始时间
* @param serveEndTime 服务结束时间
* @return
* @throws ParseException
*/
List<StoreTechnician> queryAvailableTechnician(Integer departmentId, Integer serveId, LocalDateTime serveStartTime, LocalDateTime serveEndTime) throws ParseException;
}
......@@ -22,6 +22,7 @@ import com.gogirl.domain.store.store.StoreTechnician;
import com.gogirl.domain.user.customer.Customer;
import com.gogirl.infrastructure.common.exception.RRException;
import com.gogirl.infrastructure.common.util.CloneUtil;
import com.gogirl.infrastructure.common.util.DateUtils;
import com.gogirl.infrastructure.common.util.ListUtil;
import com.gogirl.infrastructure.common.util.StringUtils;
import com.gogirl.infrastructure.config.property.GogirlProperties;
......@@ -33,6 +34,7 @@ import com.gogirl.infrastructure.mapper.order.serve.ScheduleServeMapper;
import com.gogirl.infrastructure.mapper.product.purchase.PurchaseSkuMapper;
import com.gogirl.infrastructure.mapper.product.serve.*;
import com.gogirl.infrastructure.mapper.store.oa.TakeLeaveEventMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreClassesTechnicianMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreManageMapper;
import com.gogirl.infrastructure.mapper.store.store.StoreTechnicianMapper;
import com.gogirl.infrastructure.service.push.TechnicianPushService;
......@@ -77,6 +79,8 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
private final StoreManageMapper storeManageMapper;
private final OwnProduceMapper ownProduceMapper;
private final BaseScheduledTypeMapper baseScheduledTypeMapper;
private final ProducePromotionTimeMapper producePromotionTimeMapper;
private final StoreClassesTechnicianMapper storeClassesTechnicianMapper;
private final StoreClassesTechnicianService storeClassesTechnicianService;
......@@ -99,11 +103,11 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
@Override
public List<StoreTechnicianPeriod> queryStoreTechnicianPeriod(Integer scheduledId,
Integer departmentId,
String scheduleDate,
String day,
List<Integer> serveIdList) throws ParseException {
/*1.查询美甲师排班*/
List<StoreClassesTechnician> storeClassesTechnicianList = storeClassesTechnicianService.listClassesTechnician(scheduledId, departmentId, scheduleDate);
List<StoreClassesTechnician> storeClassesTechnicianList = storeClassesTechnicianMapper.listClassesTechnician(scheduledId, departmentId, day);
//过滤不能做服务的美甲师
if (ListUtil.isNotEmpty(serveIdList)) {
......@@ -118,9 +122,9 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//一天开始的时间
long dayStartTime = simpleDateFormat.parse(scheduleDate + " 00:00:00").getTime();
long dayStartTime = simpleDateFormat.parse(day + " 00:00:00").getTime();
//一天结束的时间
long dayEndTime = simpleDateFormat.parse(scheduleDate + " 23:59:59").getTime();
long dayEndTime = simpleDateFormat.parse(day + " 23:59:59").getTime();
//遍历美甲师排班 获取每个美甲师的不可用时间段
......@@ -133,9 +137,9 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
//上班结束时间str
String endTime = storeClassesTechnician.getClassesManage().getEndTime().toString();
//上班开始时间
long workStartTime = simpleDateFormat.parse(scheduleDate + " " + startTime).getTime();
long workStartTime = simpleDateFormat.parse(day + " " + startTime).getTime();
//上班结束时间
long workEndTime = simpleDateFormat.parse(scheduleDate + " " + endTime).getTime();
long workEndTime = simpleDateFormat.parse(day + " " + endTime).getTime();
//最晚可预约时间
String latestScheduledTime = storeClassesTechnician.getClassesManage().getLatestScheduledTime().toString();
......@@ -151,7 +155,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
/*5、如果开启了门店最晚预约时间,最晚可预约时间之后的时间不可用*/
if (StringUtils.isNotEmpty(latestScheduledTime) && storeClassesTechnician.getClassesManage().getLatestScheduledTimeEnable() == 1) {
long latestScheduledTimeMills = simpleDateFormat.parse(scheduleDate + " " + latestScheduledTime).getTime();
long latestScheduledTimeMills = simpleDateFormat.parse(day + " " + latestScheduledTime).getTime();
Period latestScheduledTimeMillsPeriod = new Period(latestScheduledTimeMills, dayEndTime);
periodList.add(latestScheduledTimeMillsPeriod);
}
......@@ -186,15 +190,21 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
}
@Override
public List<StoreTechnician> queryLeisureTechnician(Integer departmentId,
Integer serveId,
LocalDateTime serveStartTime,
LocalDateTime serveEndTime) throws ParseException {
public List<StoreTechnician> queryAvailableTechnician(Integer departmentId,
Integer serveId,
LocalDateTime serveStartTime,
LocalDateTime serveEndTime) throws ParseException {
//查询店铺的美甲师和美甲师的可用时间
List<StoreTechnicianPeriod> storeTechnicianPeriodList = this.queryStoreTechnicianPeriod(null, departmentId, serveStartTime.toLocalDate().toString(), Lists.newArrayList(serveId));
//服务占用的时间区间
Period servePeriod = new Period(serveStartTime.toInstant(ZoneOffset.of("+8")).toEpochMilli(), serveEndTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
List<Integer> technicianIds = storeTechnicianPeriodList.stream().filter(storeTechnicianPeriod ->
!storeTechnicianPeriod.getPeriodList().stream().map(period -> period.conflict(servePeriod))
//过滤返回可用美甲师
List<Integer> technicianIds = storeTechnicianPeriodList
.stream()
.filter(storeTechnicianPeriod -> !storeTechnicianPeriod.getPeriodList()
.stream()
.map(period -> period.conflict(servePeriod))
.collect(Collectors.toList()).contains(true))
.map(StoreTechnicianPeriod::getTechnicianId)
.collect(Collectors.toList());
......@@ -204,7 +214,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
return Lists.newArrayList();
}
@Override
public List<IdleTimeDTO> queryIdleTime(IdleTimeQuery qry) throws ParseException, ExecutionException, InterruptedException {
......@@ -463,22 +472,15 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
@Override
public List<IdleTimeDTO> queryLeisureTime(Integer departmentId, String scheduleDate) throws ParseException {
//当前周几
int weekday = DateUtils.getWeek(new SimpleDateFormat("yyyy-MM-dd").parse(scheduleDate);
Date today = new SimpleDateFormat("yyyy-MM-dd").parse(scheduleDate);
Calendar c = Calendar.getInstance();
c.setTime(today);
int weekday = c.get(Calendar.DAY_OF_WEEK);
if (weekday == 1) {
weekday = 7;
} else {
weekday = weekday - 1;
}
//根据店铺id和周几查询闲时间折扣配置
List<LeisureDiscountConfig> leisureDiscountConfigList = leisureDiscountConfigMapper.selectByDepartmentIdAndWeekIgnoreLimit(departmentId, weekday);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//闲时预约时间节点
Set<Long> dateTimeListSet = new HashSet<>();
for (LeisureDiscountConfig leisureDiscountConfig : leisureDiscountConfigList) {
......@@ -492,7 +494,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
}
}
List<Long> dateTimeList = new ArrayList<>(dateTimeListSet);
dateTimeList.sort(Comparator.comparing(Long::longValue));
......@@ -502,17 +503,17 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
return Lists.newArrayList();
}
//查询店铺美甲师和美甲师不可用时间列表
List<StoreTechnicianPeriod> storeTechnicianPeriodList = this.queryStoreTechnicianPeriod(null, departmentId, scheduleDate, null);
int finalWeekday = weekday;
List<IdleTimeDTO> result = dateTimeList.stream()
return dateTimeList.stream()
.map(dateTime -> {
IdleTimeDTO idleTimeDTO = new IdleTimeDTO();
idleTimeDTO.setDateTime(dateTime);
idleTimeDTO.setTime(new SimpleDateFormat("HH:mm").format(new Date(dateTime)));
List<LeisureTechServe> leisureTechServeList = new ArrayList<>();
List<BaseServe> list = leisureDiscountConfigMapper.selectByDepartmentIdAndWeekAndDateTime(departmentId, finalWeekday, idleTimeDTO.getTime());
List<BaseServe> list = leisureDiscountConfigMapper.selectByDepartmentIdAndWeekAndDateTime(departmentId, weekday, idleTimeDTO.getTime());
storeTechnicianPeriodList.forEach(storeTechnicianPeriod -> {
List<BaseServe> canScheduledServeList = list.stream()
.filter(baseServe -> {
......@@ -532,7 +533,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
return idleTimeDTO;
})
.collect(Collectors.toList());
return result;
}
@Override
......@@ -679,180 +679,6 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
});
}
private void addLeisureTechServe(List<LeisureTechServe> leisureTechServeList, Integer technicianId, Integer serveId) {
leisureTechServeList.stream()
.filter(leisureTechServe -> leisureTechServe.getServeId().equals(serveId))
.findAny()
.map(leisureTechServe -> leisureTechServe.getTechnicianIdList().add(technicianId))
.orElseGet(() -> {
LeisureTechServe leisureTechServe = new LeisureTechServe();
leisureTechServe.setServeId(serveId);
Set<Integer> set = new HashSet<>();
set.add(technicianId);
leisureTechServe.setTechnicianIdList(set);
leisureTechServeList.add(leisureTechServe);
return null;
});
}
/**
* 店铺短码-服务短码(s)-美甲师短码-时间-4位最大单号
*
* @param departmentId
* @param scheduleId
* @return
*/
private String getOrderNo(Integer departmentId, Integer scheduleId) {
StoreManage storeManage = storeManageMapper.selectById(departmentId);
List<ScheduleServe> scheduleServeList = scheduleServeMapper.selectList(new LambdaQueryWrapper<ScheduleServe>().eq(ScheduleServe::getSchId, scheduleId));
BaseServe baseServe = baseServeMapper.selectById(scheduleServeList.get(0).getServeId());
BaseType baseType = baseTypeService.getById(baseServe.getTypeId());
StoreTechnician storeTechnician = storeTechnicianMapper.selectById(scheduleServeList.get(0).getTechnicianId());
OrderManage latestOfDay = orderManageMapper.latestOfDay();
String latestOfDayString;
//
if (latestOfDay == null) {
latestOfDayString = "0001";
}
//
else {
latestOfDayString = String.format("%04d", Integer.parseInt(latestOfDay.getOrderNo().substring(latestOfDay.getOrderNo().length() - 4)) + 1);
}
//
return (storeManage.getShortCode() == null ? "NNN" : storeManage.getShortCode()) + "-" +
(StringUtils.isEmpty(baseType.getShortCode()) ? "NNN" : baseType.getShortCode()) + "-" +
(StringUtils.isEmpty(storeTechnician.getShortCode()) ? "NNN" : storeTechnician.getShortCode()) + "-" +
new SimpleDateFormat("yyMMdd").format(new Date()) + "-" +
latestOfDayString;
}
private void validSubmit(ScheduleManage scheduleManage) {
/*用户提交 更新预约校验*/
if (SessionUtils.isSourceFromCustomer()) {
if (ListUtil.isEmpty(scheduleManage.getListScheduleServer())) {
throw new RRException("校验失败,请重试");
}
/*1、校验同类型服务一天只能预约一次*/
scheduleManage.getListScheduleServer().forEach(scheduleServe -> {
if (scheduleServe.getMainServeId() == null) {
BaseServe baseServe = baseServeMapper.selectById(scheduleServe.getServeId());
List<ScheduleServe> typeConflictScheduleServe = scheduleServeMapper.selectConflictType(
scheduleManage.getScheduledUser(),
scheduleManage.getArriveTime(),
baseServe.getSchTypeId(),
scheduleManage.getId());
if (ListUtil.isNotEmpty(typeConflictScheduleServe)) {
throw new RRException("同类型服务一天只能预约一次");
}
}
});
try {
/*2、校验提交的预约时间是否可约*/
IdleTimeQuery query = new IdleTimeQuery();
//店铺id
query.setDepartmentId(scheduleManage.getDepartmentId());
//预约日期
query.setScheduleDate(new SimpleDateFormat("yyyy-MM-dd").format(scheduleManage.getArriveTime()));
query.setListScheduleServer(scheduleManage.getListScheduleServer()
.stream()
.map(scheduleServeCommand -> {
ScheduleServeQuery scheduleServe = new ScheduleServeQuery();
//时长
scheduleServe.setLengthTimeForEndTime(scheduleServeCommand.getLengthTime());
//款式id
scheduleServe.setProduceId(scheduleServeCommand.getProduceId());
//服务id
scheduleServe.setServeId(scheduleServeCommand.getServeId());
return scheduleServe;
})
.collect(Collectors.toList()));
//是否显示详情
query.setShowNodeDetail(true);
//查询时间节点
query.setDateTimeList(Lists.newArrayList(scheduleManage.getArriveTime().getTime()));
//
query.setId(scheduleManage.getId());
//查询方案树
List<IdleTimeDTO> idleTimeDTOList = this.queryIdleTime(query);
//如果时间节点不可用返回false
IdleTimeDTO idleTimeDTO = idleTimeDTOList.stream().findAny().orElseThrow(NullPointerException::new);
if (!idleTimeDTO.isStatus()) {
throw new RRException("预约时间已过期");
}
} catch (RRException e) {
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
//新增预约 修改预约时 校验自带款式是否设置
if (SessionUtils.isSourceFromTechnician()) {
scheduleManage.getListScheduleServer().forEach(
scheduleServe -> {
if (scheduleServe.getIsOwnProduce() == 1 && scheduleServe.getOwnProduceId() == null) {
throw new RRException("请补全自带款式");
}
}
);
}
}
/**
* ScheduleManageServiceImpl
* 通过ScheduleServe构建TreeProgram
*
* @param scheduleServe
* @return
*/
private final TreeProgram getNode(ScheduleServe scheduleServe) {
TreeProgram node = new TreeProgram();
StoreTechnicianPeriod storeTechnicianPeriod = new StoreTechnicianPeriod();
storeTechnicianPeriod.setTechnicianId(scheduleServe.getTechnicianId());
node.setStoreTechnicianDTO(storeTechnicianPeriod);
ScheduleServeQuery scheduleServeQuery = new ScheduleServeQuery();
scheduleServeQuery.setServeId(scheduleServe.getServeId());
scheduleServeQuery.setProduceId(scheduleServe.getProduceId());
scheduleServeQuery.setLengthTimeForEndTime(scheduleServe.getLengthTimeForEndTime());
Period period = new Period(scheduleServe.getStartTime(), scheduleServe.getEndTime());
scheduleServeQuery.setPeriod(period);
node.setScheduleServeQuery(scheduleServeQuery);
return node;
}
private String getScheduleNo(Integer debarmentId) {
//调用店铺服务根据id查询店铺
StoreManage storeManage = storeManageMapper.selectById(debarmentId);
//生成预约单号
String shortCode = storeManage.getShortCode();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMdd");
String day = simpleDateFormat.format(new Date());
String lastOfDayString;
ScheduleManage lastOfDay = scheduleManageMapper.lastOfDay();
//第一单
if (lastOfDay == null) {
lastOfDayString = "0001";
}
//累加
else {
lastOfDayString = String.format("%04d", (Integer.parseInt(lastOfDay.getScheduledNo().substring(lastOfDay.getScheduledNo().length() - 4)) + 1));
}
return shortCode + day + lastOfDayString;
}
@Override
public void submitSchedule(SubmitScheduleCommand cmd) {
......@@ -916,14 +742,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
insertScheduleServeList.forEach(scheduleServeMapper::insert);
updateScheduleServeList.forEach(scheduleServeMapper::updateById);
// //数据库死锁
// scheduleServeList.forEach(scheduleServe -> {
// if (scheduleServe.getId() != null) {
// scheduleServeMapper.updateById(scheduleServe);
// } else {
// scheduleServeMapper.insert(scheduleServe);
// }
// });
List<Integer> removeIds = oldScheduleServeIds.stream().filter(id -> !scheduleServeList.stream().map(ScheduleServe::getId).collect(Collectors.toList()).contains(id)).collect(Collectors.toList());
if (ListUtil.isNotEmpty(removeIds)) {
scheduleServeMapper.deleteBatchIds(removeIds);
......@@ -1128,9 +947,12 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
query.setLatitude(23.14084243774414);
}
/*1、查询闲时折扣*/
IPage<LeisureScheduleServeResp> page = new Page<>(query.getPageNum(), query.getPageSize());
page = scheduleManageMapper.queryPageLeisureScheduleServe(page, query.getLatitude(), query.getLongitude());
/*算距离*/
page.getRecords().forEach(leisureScheduleServeResp -> {
leisureScheduleServeResp.setDistance(MapDistanceUtils.getDistance(query.getLatitude().toString(),
query.getLongitude().toString(),
......@@ -1153,15 +975,23 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
return page;
}
/**
* 查询闲时可以做服务的美甲师
*
* @param leisureScheduleServeResp
* @return
* @throws ParseException
*/
private List<StoreTechnician> queryLeisureTechnician(LeisureScheduleServeResp leisureScheduleServeResp) throws ParseException {
//闲时服务
BaseServe baseServe = baseServeMapper.selectById(leisureScheduleServeResp.getServeId());
//服务开始时间
LocalDateTime startTime = leisureScheduleServeResp.getDateTime();
//服务结束时间
LocalDateTime endTime = startTime.plusMinutes(baseServe.getServiceDuration()).plusMinutes(60);
return this.queryLeisureTechnician(leisureScheduleServeResp.getDepartmentId(), baseServe.getId(), startTime, endTime);
return this.queryAvailableTechnician(leisureScheduleServeResp.getDepartmentId(), baseServe.getId(), startTime, endTime);
}
private final ProducePromotionTimeMapper producePromotionTimeMapper;
/**
* 参数补全
*
......@@ -1641,4 +1471,155 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
}
return 3;
}
private void addLeisureTechServe(List<LeisureTechServe> leisureTechServeList, Integer technicianId, Integer serveId) {
leisureTechServeList.stream()
.filter(leisureTechServe -> leisureTechServe.getServeId().equals(serveId))
.findAny()
.map(leisureTechServe -> leisureTechServe.getTechnicianIdList().add(technicianId))
.orElseGet(() -> {
LeisureTechServe leisureTechServe = new LeisureTechServe();
leisureTechServe.setServeId(serveId);
Set<Integer> set = new HashSet<>();
set.add(technicianId);
leisureTechServe.setTechnicianIdList(set);
leisureTechServeList.add(leisureTechServe);
return null;
});
}
/**
* 店铺短码-服务短码(s)-美甲师短码-时间-4位最大单号
*
* @param departmentId
* @param scheduleId
* @return
*/
private String getOrderNo(Integer departmentId, Integer scheduleId) {
StoreManage storeManage = storeManageMapper.selectById(departmentId);
List<ScheduleServe> scheduleServeList = scheduleServeMapper.selectList(new LambdaQueryWrapper<ScheduleServe>().eq(ScheduleServe::getSchId, scheduleId));
BaseServe baseServe = baseServeMapper.selectById(scheduleServeList.get(0).getServeId());
BaseType baseType = baseTypeService.getById(baseServe.getTypeId());
StoreTechnician storeTechnician = storeTechnicianMapper.selectById(scheduleServeList.get(0).getTechnicianId());
OrderManage latestOfDay = orderManageMapper.latestOfDay();
String latestOfDayString;
//
if (latestOfDay == null) {
latestOfDayString = "0001";
}
//
else {
latestOfDayString = String.format("%04d", Integer.parseInt(latestOfDay.getOrderNo().substring(latestOfDay.getOrderNo().length() - 4)) + 1);
}
//
return (storeManage.getShortCode() == null ? "NNN" : storeManage.getShortCode()) + "-" +
(StringUtils.isEmpty(baseType.getShortCode()) ? "NNN" : baseType.getShortCode()) + "-" +
(StringUtils.isEmpty(storeTechnician.getShortCode()) ? "NNN" : storeTechnician.getShortCode()) + "-" +
new SimpleDateFormat("yyMMdd").format(new Date()) + "-" +
latestOfDayString;
}
private void validSubmit(ScheduleManage scheduleManage) {
/*用户提交 更新预约校验*/
if (SessionUtils.isSourceFromCustomer()) {
if (ListUtil.isEmpty(scheduleManage.getListScheduleServer())) {
throw new RRException("校验失败,请重试");
}
/*1、校验同类型服务一天只能预约一次*/
scheduleManage.getListScheduleServer().forEach(scheduleServe -> {
if (scheduleServe.getMainServeId() == null) {
BaseServe baseServe = baseServeMapper.selectById(scheduleServe.getServeId());
List<ScheduleServe> typeConflictScheduleServe = scheduleServeMapper.selectConflictType(
scheduleManage.getScheduledUser(),
scheduleManage.getArriveTime(),
baseServe.getSchTypeId(),
scheduleManage.getId());
if (ListUtil.isNotEmpty(typeConflictScheduleServe)) {
throw new RRException("同类型服务一天只能预约一次");
}
}
});
try {
/*2、校验提交的预约时间是否可约*/
IdleTimeQuery query = new IdleTimeQuery();
//店铺id
query.setDepartmentId(scheduleManage.getDepartmentId());
//预约日期
query.setScheduleDate(new SimpleDateFormat("yyyy-MM-dd").format(scheduleManage.getArriveTime()));
query.setListScheduleServer(scheduleManage.getListScheduleServer()
.stream()
.map(scheduleServeCommand -> {
ScheduleServeQuery scheduleServe = new ScheduleServeQuery();
//时长
scheduleServe.setLengthTimeForEndTime(scheduleServeCommand.getLengthTime());
//款式id
scheduleServe.setProduceId(scheduleServeCommand.getProduceId());
//服务id
scheduleServe.setServeId(scheduleServeCommand.getServeId());
return scheduleServe;
})
.collect(Collectors.toList()));
//是否显示详情
query.setShowNodeDetail(true);
//查询时间节点
query.setDateTimeList(Lists.newArrayList(scheduleManage.getArriveTime().getTime()));
//
query.setId(scheduleManage.getId());
//查询方案树
List<IdleTimeDTO> idleTimeDTOList = this.queryIdleTime(query);
//如果时间节点不可用返回false
IdleTimeDTO idleTimeDTO = idleTimeDTOList.stream().findAny().orElseThrow(NullPointerException::new);
if (!idleTimeDTO.isStatus()) {
throw new RRException("预约时间已过期");
}
} catch (RRException e) {
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
//新增预约 修改预约时 校验自带款式是否设置
if (SessionUtils.isSourceFromTechnician()) {
scheduleManage.getListScheduleServer().forEach(
scheduleServe -> {
if (scheduleServe.getIsOwnProduce() == 1 && scheduleServe.getOwnProduceId() == null) {
throw new RRException("请补全自带款式");
}
}
);
}
}
private String getScheduleNo(Integer debarmentId) {
//调用店铺服务根据id查询店铺
StoreManage storeManage = storeManageMapper.selectById(debarmentId);
//生成预约单号
String shortCode = storeManage.getShortCode();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyMMdd");
String day = simpleDateFormat.format(new Date());
String lastOfDayString;
ScheduleManage lastOfDay = scheduleManageMapper.lastOfDay();
//第一单
if (lastOfDay == null) {
lastOfDayString = "0001";
}
//累加
else {
lastOfDayString = String.format("%04d", (Integer.parseInt(lastOfDay.getScheduledNo().substring(lastOfDay.getScheduledNo().length() - 4)) + 1));
}
return shortCode + day + lastOfDayString;
}
}
......@@ -13,15 +13,6 @@ import java.util.List;
public interface StoreClassesTechnicianService extends IService<StoreClassesTechnician> {
/**
* 查询美甲师排班表
*
* @param scheduledId 预约id
* @param departmentId 店铺id
* @param days day like '2020-02-02'
* @return
*/
List<StoreClassesTechnician> listClassesTechnician(Integer scheduledId, Integer departmentId, String days);
/**
......
......@@ -10,7 +10,6 @@ public interface StoreTechnicianService extends IService<StoreTechnician> {
List<StoreTechnician> listTechnicianForPage(StoreTechnician technicianManage);
/**
* 美甲师登陆
*
......
......@@ -44,10 +44,6 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT
private final GogirlTokenService gogirlTokenService;
@Override
public List<StoreClassesTechnician> listClassesTechnician(Integer scheduledId, Integer departmentId, String days) {
return storeClassesTechnicianMapper.listClassesTechnician(scheduledId, departmentId, days);
}
@Override
public List<StoreClassesTechnician> listClassesTechnicianDetail(Integer userId, String days) {
......@@ -165,9 +161,5 @@ public class StoreClassesTechnicianServiceImpl extends ServiceImpl<StoreClassesT
private final StoreTechnicianMapper storeTechnicianMapper;
// @Override
// public List<StoreTechnician> queryDayTechnicianClassesList(Integer departmentId, Date day) {
// return ;
// }
}
......@@ -3,7 +3,6 @@ package com.gogirl.application.store.store.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gogirl.application.order.serve.OrderManageService;
import com.gogirl.application.store.store.StoreTechnicianService;
import com.gogirl.application.xcx.GogirlTokenService;
import com.gogirl.application.xcx.WechatService;
......@@ -37,7 +36,6 @@ public class StoreTechnicianServiceImpl extends ServiceImpl<StoreTechnicianMappe
private final GogirlTokenService gogirlTokenService;
private final StoreManageMapper storeManageMapper;
private final OrderManageService orderManageService;
@Override
public List<StoreTechnician> listTechnicianForPage(StoreTechnician technicianManage) {
......
......@@ -14,9 +14,6 @@ import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* Created by yinyong on 2018/9/20.
*/
@ApiModel("每天排班记录")
@TableName("store_classes_technician")
@Builder
......@@ -36,18 +33,22 @@ public class StoreClassesTechnician {
@ApiModelProperty("班次id")
private Integer classes;
@ApiModelProperty("")
private Integer status;
/**
* 非数据库id
* 非数据库字段
*/
@ApiModelProperty("班次")
@TableField(exist = false)
private StoreClasses classesManage;
@ApiModelProperty("美甲师")
@TableField(exist = false)
private StoreTechnician technicianManage;
@ApiModelProperty("美甲师正在做的服务")
@TableField(exist = false)
private List<ScheduleServe> listScheduleServe;
}
......@@ -70,8 +70,7 @@ public class ScheduleManageController {
@ApiOperation(value = "查询显示预约时间列表")
@GetMapping("/customer/schedule/queryLeisureTime")
public JsonResult<List<IdleTimeDTO>> queryLeisureTime(@RequestHeader String token,
@RequestParam Integer departmentId,
public JsonResult<List<IdleTimeDTO>> queryLeisureTime(@RequestParam Integer departmentId,
@RequestParam String scheduleDate) throws ParseException {
List<IdleTimeDTO> idleTimeDTOList = scheduleManageService.queryLeisureTime(departmentId, scheduleDate);
return JsonResult.success(idleTimeDTOList);
......@@ -244,8 +243,7 @@ public class ScheduleManageController {
@ApiOperation("更新预约服务状态")
@GetMapping("/technician/schedule/updateScheduledServeStatus")
public JsonResult<Void> updateScheduledServeStatus(@RequestHeader String token,
@RequestParam Integer scheduleServeId,
public JsonResult<Void> updateScheduledServeStatus(@RequestParam Integer scheduleServeId,
@RequestParam Integer status,
@RequestParam Integer forceLeisureConfig) {
ScheduleServe scheduleServe = scheduleServeService.getById(scheduleServeId);
......@@ -266,8 +264,7 @@ public class ScheduleManageController {
@ApiOperation("当前服务是否在闲时间范围内 1-是 2-否")
@GetMapping("/technician/schedule/getScheduledServeLeisure")
public JsonResult<Integer> getScheduledServeLeisure(@RequestHeader String token,
@RequestParam Integer scheduleServeId) {
public JsonResult<Integer> getScheduledServeLeisure(@RequestParam Integer scheduleServeId) {
Integer result = scheduleManageService.getScheduledServeLeisure(scheduleServeId);
return JsonResult.success(result);
}
......@@ -284,7 +281,7 @@ public class ScheduleManageController {
@ApiOperation("查询闲时美甲师")
@PostMapping("/customer/queryLeisureTechnician")
public JsonResult<StoreTechnician> queryLeisureTechnician(@RequestBody QueryLeisureTechnicianReq req) throws ParseException {
scheduleManageService.queryLeisureTechnician(req.getDepartmentId(), req.getServeId(), req.getStartTime(), req.getEndTime());
scheduleManageService.queryAvailableTechnician(req.getDepartmentId(), req.getServeId(), req.getStartTime(), req.getEndTime());
return JsonResult.success();
}
}
......@@ -36,6 +36,9 @@ public class StoreTechnicianPeriod implements Serializable {
*/
private String grade;
@JsonIgnore
private StoreTechnician storeTechnician;
public StoreTechnicianPeriod() {
}
......@@ -47,6 +50,7 @@ public class StoreTechnicianPeriod implements Serializable {
this.name = storeTechnician.getName();
this.picturePath = storeTechnician.getPicturePath();
this.grade = storeTechnician.getGrade();
this.storeTechnician = storeTechnician
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment