Commit 6768c80d by liyanlin

fix

parent 7d907fac
......@@ -168,8 +168,10 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
/*5、下班前预约的,只要开始时间在下班前的,服务结束的时间没有超过最晚可预约时间,就可以约
如果勾选了超出最晚可预约时间是否可约,那就是只要开始时间是下班前的,就都可约
因此这里改为下班后不可约,下班前预约的做特殊时间段处理*/
Period latestScheduledTimeMillsPeriod = new Period(workEndTime, dayEndTime);
periodList.add(latestScheduledTimeMillsPeriod);
//休息时间
long maxTime = periodList.stream().map(Period::getEndTime).distinct().max(Long::compareTo).get();
Period breakTime = new Period(workEndTime > maxTime ? workEndTime : maxTime, dayEndTime);
//periodList.add(latestScheduledTimeMillsPeriod);
/*if (StringUtils.isNotEmpty(latestScheduledTime) && storeClassesTechnician.getClassesManage().getLatestScheduledTimeEnable() == 1) {
long latestScheduledTimeMills = simpleDateFormat.parse(day + " " + latestScheduledTime).getTime();
Period latestScheduledTimeMillsPeriod = new Period(latestScheduledTimeMills, dayEndTime);
......@@ -213,7 +215,8 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
storeClassesTechnician.getTechnicianManage(),
latestScheduledTimeMills,
storeClassesTechnician.getClassesManage().getLatestScheduledTimeEnable(),
workEndTime);
workEndTime,
breakTime);
storeTechnicianPeriodList.add(storeTechnicianDTO);
}
......@@ -312,10 +315,10 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List<IdleTimeDTO> idleTimeDTOList = new ArrayList<>(qry.getDateTimeList().size());
ExecutorService threadPool = ThreadUtil.newExecutor(qry.getDateTimeList().size());
//ExecutorService threadPool = ThreadUtil.newExecutor(qry.getDateTimeList().size());
for (Long dateTime : qry.getDateTimeList()) {
threadPool.submit(() -> {
System.out.println("threadName:" + Thread.currentThread().getName());
//threadPool.submit(() -> {
//System.out.println("threadName:" + Thread.currentThread().getName());
//每个主服务由不同的美甲师做,setter主服务的时间period
mainScheduleServeQueryLinkedList.forEach(mainScheduleServeQuery -> {
......@@ -347,16 +350,16 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
idleTimeDTO.setDefaultNodeList(defaultNodeList);
idleTimeDTOList.add(idleTimeDTO);
});
//});
}
threadPool.shutdown();
//threadPool.shutdown();
//等待直到所有任务完成
try {
/*try {
threadPool.awaitTermination(Long.MAX_VALUE, TimeUnit.MINUTES);
} catch (InterruptedException e) {
e.printStackTrace();
}
}*/
if (qry.getShowNodeDetail() != null && !qry.getShowNodeDetail()) {
idleTimeDTOList.forEach(idleTimeDTO -> {
......@@ -505,21 +508,28 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
for (TreeProgram treeProgram : treePrograms) {
StoreTechnicianPeriod storeTechnician = treeProgram.getStoreTechnicianDTO();
ScheduleServeQuery scheduleServeQuery = treeProgram.getScheduleServeQuery();
if(storeTechnician.getName().equals("梁正菊")&&scheduleServeQuery.getPeriod().getStartTime() >= 1633942800000L){
log.info("--------------");
}
for (Period period : storeTechnician.getPeriodList()) {
boolean pass = true;
if (period.conflict(scheduleServeQuery.getPeriod())) {
pass = false;
}
/*下班前预约的,只要开始时间在下班前的,服务结束的时间没有超过最晚可预约时间,就可以约
如果勾选了超出最晚可预约时间是否可约,那就是只要开始时间是下班前的,就都可约*/
if(scheduleServeQuery.getPeriod().in(storeTechnician.getWorkEndTime())) {
if (storeTechnician.getLatestScheduledTimeEnable() != 1 &&
scheduleServeQuery.getPeriod().getEndTime() > storeTechnician.getLatestScheduledTimeMills()) {
//未勾选
bool = false;
//前面的判断没有冲突,并且服务开始时间小于下班时间时
if (pass && scheduleServeQuery.getPeriod().getStartTime() <= storeTechnician.getWorkEndTime()) {
if (storeTechnician.getLatestScheduledTimeEnable() != 1 && scheduleServeQuery.getPeriod().getEndTime() > storeTechnician.getLatestScheduledTimeMills()){
pass = false;
}
}
else if (period.conflict(scheduleServeQuery.getPeriod())) {
bool = false;
else if(pass && scheduleServeQuery.getPeriod().getStartTime() > storeTechnician.getWorkEndTime()){
pass = false;
}
if(!pass)
bool = false;
}
}
......
......@@ -30,11 +30,22 @@ public class Period implements Serializable {
public Period() {
}
/**
* this 包含 period
* @param period
* @return
*/
public boolean in(Period period) {
return period.getEndTime() >= endTime
&& period.getStartTime() <= startTime;
}
/**
* this 包含 datetime
* @param datetime
* @return
*/
public boolean in(long datetime) {
return datetime >= startTime
......@@ -50,6 +61,11 @@ public class Period implements Serializable {
}
/**
* 冲突
* @param period
* @return
*/
public boolean conflict(Period period) {
return (startTime < period.getEndTime() && startTime > period.getStartTime())
......
......@@ -29,6 +29,12 @@ public class StoreTechnicianPeriod implements Serializable {
long workEndTime;
/**
* 美甲师休息时间
*/
@JsonIgnore
Period breakTime;
/**
* 超过最晚时间是否可约
*/
@JsonIgnore
......@@ -61,7 +67,7 @@ public class StoreTechnicianPeriod implements Serializable {
}
public StoreTechnicianPeriod(List<Period> periodList, StoreTechnician storeTechnician, long latestScheduledTimeMills, Integer latestScheduledTimeEnable, long workEndTime) {
public StoreTechnicianPeriod(List<Period> periodList, StoreTechnician storeTechnician, long latestScheduledTimeMills, Integer latestScheduledTimeEnable, long workEndTime, Period breakTime) {
this.periodList = periodList;
this.technicianId = storeTechnician.getId();
this.name = storeTechnician.getName();
......@@ -71,6 +77,7 @@ public class StoreTechnicianPeriod implements Serializable {
this.latestScheduledTimeMills = latestScheduledTimeMills;
this.latestScheduledTimeEnable = latestScheduledTimeEnable;
this.workEndTime = workEndTime;
this.breakTime = breakTime;
}
}
......@@ -29,6 +29,6 @@ public class QCloudSmsServiceImplTest {
@Test
public void sendBindSmsCode() {
smsService.sendBindSmsCode("13272036791", "123456");
smsService.sendBindSmsCode("13272036791", "123456",1);
}
}
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