Skip to content

Commit

Permalink
Merge pull request #103 from ttthanhf/hotfix/feature/task
Browse files Browse the repository at this point in the history
Hotfix/feature/task-Fix load qtyOver errors from DB
  • Loading branch information
ttthanhf committed Nov 13, 2023
2 parents abe687c + 6bb9a28 commit 8924cb5
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/main/java/housemate/entities/TaskReport.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ public class TaskReport {
@Column(name = "note", length = 3000)
private String note;

@Column(name = "quantity_over", length = 3000)
private int qutyOver;
@Transient
private int qtyOver;

@Transient
List<Image> taskReportImages;
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/housemate/entities/UserUsage.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public class UserUsage implements Cloneable {
public UserUsage clone() {
return (UserUsage) super.clone();
}

@Transient
private Service service;
}
31 changes: 19 additions & 12 deletions src/main/java/housemate/services/TaskBuildupService.java
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ public TaskViewDTO convertIntoTaskViewDtoFromTask(Task task) {
List<Image> reportTaskImgs = imgRepo
.findAllByEntityIdAndImageType(x.getTaskReportId(), ImageType.WORKING).orElse(List.of());
x.setTaskReportImages(reportTaskImgs);
x.setQutyOver(userUsageRepo.findById(taskRepo.findById(x.getTaskId()).get().getSchedule().getUserUsageId()).get().getQtyOver());
x.setQtyOver(userUsageRepo.findById(taskRepo.findById(x.getTaskId()).get().getSchedule().getUserUsageId()).get().getQtyOver());
});
}
Schedule schedule = scheduleRepo.findById(task.getScheduleId()).orElse(null);
Expand Down Expand Up @@ -513,9 +513,12 @@ public TaskRes<TaskReport> reportTask(Task task, TaskReportType taskReport, Task
return TaskRes.build(taskReportResult, TaskMessType.REJECT_REPORT_TASK,
"Trước khi báo cáo hãy điền giá trị khối lượng cho loại dịch vụ thuộc \"Gửi trả\"");
quantity = reportNewDTO.getQtyOfGroupReturn();
if(quantity > userUsage.getRemaining())
if(userUsage.getRemaining() == 0)
return TaskRes.build(taskReportResult, TaskMessType.REJECT_REPORT_TASK,
"Lượng tài nguyên của gói đã hết ! Hãy đặt mua gói mới !");
if(quantity > userUsage.getRemaining())
userUsage.setQtyOver(quantity - userUsage.getRemaining());

task.getSchedule().setQuantityRetrieve(quantity);
}
task.setTaskStatus(TaskStatus.DONE);
Expand All @@ -524,6 +527,11 @@ public TaskRes<TaskReport> reportTask(Task task, TaskReportType taskReport, Task
int newQuantityRemaining = userUsage.getRemaining() - task.getSchedule().getQuantityRetrieve();
userUsage.setRemaining(newQuantityRemaining < 0 ? 0 : newQuantityRemaining);
userUsageRepo.save(userUsage);
int plusStaffScore = task.getStaff().getProfiencyScore() + PLUS_SCORE_PER_SUCCESS_TASK.getNum();
int plustCustomerScore = userRepo.findByUserId(task.getSchedule().getCustomerId()).getProficiencyScore() + PLUS_SCORE_PER_SUCCESS_TASK.getNum();
task.getStaff().setProfiencyScore(plusStaffScore > 100 ? 100 : plusStaffScore);
userRepo.findByUserId(task.getSchedule().getCustomerId()).setProficiencyScore(plustCustomerScore > 100 ? 100 : plustCustomerScore);


// TODO: NOTI STAFF DONE TO CUSTOMER
TaskBuildupService.createAndSendNotification(
Expand All @@ -532,6 +540,7 @@ public TaskRes<TaskReport> reportTask(Task task, TaskReportType taskReport, Task
"Nhân viên " + task.getStaff().getStaffInfo().getFullName() + "\"Đã hoàn thành công việc\"",
String.valueOf(task.getSchedule().getCustomerId()));


break;
}
}
Expand Down Expand Up @@ -589,7 +598,7 @@ public void run() {
"Nhân viên đang sắp tới phục vụ bạn. Mở cửa cho nhân viên khi tới nhé",
String.valueOf(task.getSchedule().getCustomerId()));

log.info("Task {} upcomging - staff not null - send at {}", task.getTaskId(), dateFormat.format(new Date()));
log.info("Task {} time coming - staff not null - send at {}", task.getTaskId(), dateFormat.format(new Date()));
}
}
};
Expand All @@ -600,7 +609,7 @@ public void run() {
}
eventNotiList.get(theTask.getTaskId()).add(taskEvent);

log.info("Task {} create event send noti when incoming task - will send at {} ",
log.info("Task {} create event send noti when time coming task - will send at {} ",
theTask.getTaskId(), LocalDateTime.ofInstant(timeSendNotiInstant, dateTimeZone));
}

Expand Down Expand Up @@ -670,14 +679,12 @@ private void createEventForReportTask(Task theTask, LocalDateTime timeStartWorki
3. Trigger event for auto report Done status for the task has already report Doing at the time after end time working is DURATION_HOURS_SYST_AUTO_DONE_TASK hours
4. Trigger event cancel task when staff not report for status DONE after the end of day at 00 PM every day and minus the score MINUS_POINTS_FOR_NOT_COMPLETE_REPORT_TASK
*/
ZonedDateTime timeStartWorkingZone = timeStartWorking.atZone(dateTimeZone);
ZonedDateTime timeEndWorkingZone = timeEndWorking.atZone(dateTimeZone);
//Trigger 1
Instant timeMinusScoreForNotReportArrived = timeStartWorkingZone.plusMinutes(DURATION_MINUTES_TIMES_STAFF_START_REPORT.getNum()).toInstant();
Instant timeMinusScoreForNotReportArrived = timeStartWorking.plusMinutes(DURATION_MINUTES_TIMES_STAFF_START_REPORT.getNum()).atZone(dateTimeZone).toInstant();
//Trigger 2
Instant timeCancelTaskForNotReportDoing = timeEndWorkingZone.toInstant();
Instant timeCancelTaskForNotReportDoing = timeEndWorking.atZone(dateTimeZone).toInstant();
//Trigger 4
Instant timeCancelTaskForNotReportDone = timeEndWorkingZone.plusMinutes(DURATION_HOURS_SYST_AUTO_DONE_TASK.getNum()).toInstant();
Instant timeCancelTaskForNotReportDone = timeEndWorking.plusMinutes(DURATION_HOURS_SYST_AUTO_DONE_TASK.getNum()).atZone(dateTimeZone).toInstant();

//Trigger 1
{
Expand Down Expand Up @@ -823,8 +830,8 @@ public void run() {
theTask.getTaskId(), timeCancelTaskForNotReportDone);
}

log.info("Task {} Trigger 1 timeMinusScoreForNotReportArrived call at {}", theTask.getTaskId(), LocalDateTime.ofInstant(timeCancelTaskForNotReportDone, dateTimeZone));
log.info("Task {} Trigger 2 timeCancelTaskForNotReportDoing call at {}", theTask.getTaskId(), LocalDateTime.ofInstant(timeMinusScoreForNotReportArrived, dateTimeZone));
log.info("Task {} Trigger 1 timeMinusScoreForNotReportArrived call at {}", theTask.getTaskId(), LocalDateTime.ofInstant(timeMinusScoreForNotReportArrived, dateTimeZone));
log.info("Task {} Trigger 2 timeCancelTaskForNotReportDoing call at {}", theTask.getTaskId(), LocalDateTime.ofInstant(timeCancelTaskForNotReportDoing, dateTimeZone));
log.info("Task {} Trigger 3 timeCancelTaskForNotReportDone call at {}", theTask.getTaskId(), LocalDateTime.ofInstant(timeCancelTaskForNotReportDone, dateTimeZone));

}
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/housemate/services/TaskService.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ public ResponseEntity<?> createNewTask(HttpServletRequest request, int scheduleI
+ " điểm lịch của bạn đến hẹn làm việc ! Vui lòng tạo lịch"
+ " mới để hệ thống lên lịch làm việc cho bạn !");
if (schedule.getStatus().equals(ScheduleStatus.CANCEL))
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Bạn đã hủy lịch này ! Vui lòng tạo lịch mới để hệ thống lên lịch làm việc cho bạn !");
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Lịch này đã bị hủy ! Vui lòng tạo lịch mới để hệ thống lên lịch làm việc cho bạn !");

Task createdTask = taskRepo.findExistingTaskForSchedule(scheduleId);
if (createdTask != null)
Expand Down Expand Up @@ -266,7 +266,8 @@ public ResponseEntity<?> cancelTask(HttpServletRequest request, int scheduleId)
return ResponseEntity.ok()
.body("Bạn đã hủy lịch này thày công !\nChú ý bạn, bạn được phép hủy lịch trước giờ làm việc trước "
+ DURATION_HOURS_CUSTOMER_SHOULD_NOT_CANCEL_TASK.getNum()
+ " tiếng để đảm bảo nhân viên của chúng tôi sắp xếp được lịch làm việc .\nSau khoảng thời gian này chúng tôi sẽ trừ điểm uy tín của bạn.\nĐiểm uy tín nếu bằng 0 tài khoản sẽ bị cấm bởi hệ thống");
+ " tiếng để đảm bảo nhân viên của chúng tôi sắp xếp được lịch làm việc ."
+ "\nSau khoảng thời gian này chúng tôi sẽ trừ điểm uy tín của bạn.\nĐiểm uy tín nếu bằng 0 tài khoản sẽ bị cấm bởi hệ thống");
if (customer.getAccountStatus().equals(AccountStatus.BANNED))
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("Tài khoản của bạn đã bị cấm khỏi hệ thống vì đã vượt giới hạn số lần được hủy và điểm uy tín của bạn bằng 0 !");
Expand Down

0 comments on commit 8924cb5

Please sign in to comment.