Как подвести итоги продолжительности смен за неделюJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как подвести итоги продолжительности смен за неделю

Сообщение Anonymous »

У меня проблема со сбором фактов DaySetting.
public class DaySetting {
String businessDate;
Integer weekNo;
Integer monthNo;
}

У меня очередная смена класса:
public class Shift {
@PlanningId
private String id;

private LocalDateTime start;
private LocalDateTime end;

public Long getShiftDuration() {
long minutes = ChronoUnit.MINUTES.between(start, end);

return minutes;
}
public String getStartDate() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String dateStr = getStart().toLocalDate().format(formatter);
return dateStr;
}
}

Настройка дня может принимать такие значения, как:
public class DaySetting {
String businessDate = 2024-06-01;
Integer weekNo = 1; // first week of June
Integer monthNo = 6;//June
}
public class DaySetting {
String businessDate = 2024-06-02;
Integer weekNo = 1; // first week of June
Integer monthNo = 6;//June
}
public class DaySetting {
String businessDate = 2024-06-09;
Integer weekNo = 2; // Second week of June
Integer monthNo = 6;//June
}

public class DaySetting {
String businessDate = 2024-06-10;
Integer weekNo = 2; // second week of June
Integer monthNo = 6;//June
}

Мне нужно суммировать продолжительность работы на основе значения WeekNo. на неделю№1 2 смены, будут суммироваться. Продолжительность первых двух смен будет суммироваться за 1 неделю,
Последние две смены будут суммироваться за 2 неделю.
Итак, далеко то, что я пробовал ниже:
Constraint workingHoursLessThanMaximumInContractPerWeek(ConstraintFactory constraintFactory) {
return constraintFactory.forEach(DaySetting.class)
.join(Shift.class)
.groupBy((daySetting, shift) -> day.getWeekNo(),
ConstraintCollectors.sumLong((daySetting, shift) -> shift.getShiftDuration()))
//Shift don't have weekNo field. It only have getStartDate() to get the business date,
//so we have to take the date value from DaySettings class and match with the date of Shift class. How to achieve this with the constraints.
.penalize(HardMediumSoftScore.ONE_SOFT, ((weekNo, sumValue))->{
return sumValue;
})
.asConstraint("Working Hours Greater Than Maximum In Contract Per Week");
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... for-a-week
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»