further time calculation optimization

This commit is contained in:
Jörg Henke
2024-01-04 11:58:03 +01:00
parent 14ece3eed2
commit 8f414e1964
4 changed files with 65 additions and 23 deletions

View File

@ -23,7 +23,7 @@ apply plugin: 'maven-publish'
apply plugin: 'eclipse'
group = 'de.jottyfan'
version = '20240104'
version = '20240104b'
def artifactId = 'timetrackjooq'
def versionNumber = version

View File

@ -17,12 +17,12 @@ import java.util.function.Function;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Function4;
import org.jooq.Function5;
import org.jooq.Identity;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Records;
import org.jooq.Row4;
import org.jooq.Row5;
import org.jooq.Schema;
import org.jooq.SelectField;
import org.jooq.Table;
@ -75,6 +75,11 @@ public class TRequiredWorktime extends TableImpl<TRequiredWorktimeRecord> {
*/
public final TableField<TRequiredWorktimeRecord, Integer> FK_LOGIN = createField(DSL.name("fk_login"), SQLDataType.INTEGER.nullable(false), this, "");
/**
* The column <code>done.t_required_worktime.required_minutes</code>.
*/
public final TableField<TRequiredWorktimeRecord, Integer> REQUIRED_MINUTES = createField(DSL.name("required_minutes"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("480"), SQLDataType.INTEGER)), this, "");
private TRequiredWorktime(Name alias, Table<TRequiredWorktimeRecord> aliased) {
this(alias, aliased, null);
}
@ -185,18 +190,18 @@ public class TRequiredWorktime extends TableImpl<TRequiredWorktimeRecord> {
}
// -------------------------------------------------------------------------
// Row4 type methods
// Row5 type methods
// -------------------------------------------------------------------------
@Override
public Row4<Integer, LocalTime, LocalDate, Integer> fieldsRow() {
return (Row4) super.fieldsRow();
public Row5<Integer, LocalTime, LocalDate, Integer, Integer> fieldsRow() {
return (Row5) super.fieldsRow();
}
/**
* Convenience mapping calling {@link SelectField#convertFrom(Function)}.
*/
public <U> SelectField<U> mapping(Function4<? super Integer, ? super LocalTime, ? super LocalDate, ? super Integer, ? extends U> from) {
public <U> SelectField<U> mapping(Function5<? super Integer, ? super LocalTime, ? super LocalDate, ? super Integer, ? super Integer, ? extends U> from) {
return convertFrom(Records.mapping(from));
}
@ -204,7 +209,7 @@ public class TRequiredWorktime extends TableImpl<TRequiredWorktimeRecord> {
* Convenience mapping calling {@link SelectField#convertFrom(Class,
* Function)}.
*/
public <U> SelectField<U> mapping(Class<U> toType, Function4<? super Integer, ? super LocalTime, ? super LocalDate, ? super Integer, ? extends U> from) {
public <U> SelectField<U> mapping(Class<U> toType, Function5<? super Integer, ? super LocalTime, ? super LocalDate, ? super Integer, ? super Integer, ? extends U> from) {
return convertFrom(toType, Records.mapping(from));
}
}

View File

@ -11,8 +11,8 @@ import java.time.LocalTime;
import org.jooq.Field;
import org.jooq.Record1;
import org.jooq.Record4;
import org.jooq.Row4;
import org.jooq.Record5;
import org.jooq.Row5;
import org.jooq.impl.UpdatableRecordImpl;
@ -20,7 +20,7 @@ import org.jooq.impl.UpdatableRecordImpl;
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorktimeRecord> implements Record4<Integer, LocalTime, LocalDate, Integer> {
public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorktimeRecord> implements Record5<Integer, LocalTime, LocalDate, Integer, Integer> {
private static final long serialVersionUID = 1L;
@ -80,6 +80,20 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
return (Integer) get(3);
}
/**
* Setter for <code>done.t_required_worktime.required_minutes</code>.
*/
public void setRequiredMinutes(Integer value) {
set(4, value);
}
/**
* Getter for <code>done.t_required_worktime.required_minutes</code>.
*/
public Integer getRequiredMinutes() {
return (Integer) get(4);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@ -90,17 +104,17 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
}
// -------------------------------------------------------------------------
// Record4 type implementation
// Record5 type implementation
// -------------------------------------------------------------------------
@Override
public Row4<Integer, LocalTime, LocalDate, Integer> fieldsRow() {
return (Row4) super.fieldsRow();
public Row5<Integer, LocalTime, LocalDate, Integer, Integer> fieldsRow() {
return (Row5) super.fieldsRow();
}
@Override
public Row4<Integer, LocalTime, LocalDate, Integer> valuesRow() {
return (Row4) super.valuesRow();
public Row5<Integer, LocalTime, LocalDate, Integer, Integer> valuesRow() {
return (Row5) super.valuesRow();
}
@Override
@ -123,6 +137,11 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
return TRequiredWorktime.T_REQUIRED_WORKTIME.FK_LOGIN;
}
@Override
public Field<Integer> field5() {
return TRequiredWorktime.T_REQUIRED_WORKTIME.REQUIRED_MINUTES;
}
@Override
public Integer component1() {
return getPkRequiredWorktime();
@ -143,6 +162,11 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
return getFkLogin();
}
@Override
public Integer component5() {
return getRequiredMinutes();
}
@Override
public Integer value1() {
return getPkRequiredWorktime();
@ -163,6 +187,11 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
return getFkLogin();
}
@Override
public Integer value5() {
return getRequiredMinutes();
}
@Override
public TRequiredWorktimeRecord value1(Integer value) {
setPkRequiredWorktime(value);
@ -188,11 +217,18 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
}
@Override
public TRequiredWorktimeRecord values(Integer value1, LocalTime value2, LocalDate value3, Integer value4) {
public TRequiredWorktimeRecord value5(Integer value) {
setRequiredMinutes(value);
return this;
}
@Override
public TRequiredWorktimeRecord values(Integer value1, LocalTime value2, LocalDate value3, Integer value4, Integer value5) {
value1(value1);
value2(value2);
value3(value3);
value4(value4);
value5(value5);
return this;
}
@ -210,13 +246,14 @@ public class TRequiredWorktimeRecord extends UpdatableRecordImpl<TRequiredWorkti
/**
* Create a detached, initialised TRequiredWorktimeRecord
*/
public TRequiredWorktimeRecord(Integer pkRequiredWorktime, LocalTime required, LocalDate day, Integer fkLogin) {
public TRequiredWorktimeRecord(Integer pkRequiredWorktime, LocalTime required, LocalDate day, Integer fkLogin, Integer requiredMinutes) {
super(TRequiredWorktime.T_REQUIRED_WORKTIME);
setPkRequiredWorktime(pkRequiredWorktime);
setRequired(required);
setDay(day);
setFkLogin(fkLogin);
setRequiredMinutes(requiredMinutes);
resetChangedOnNotNull();
}
}

View File

@ -1,6 +1,6 @@
create table done.t_required_worktime (
pk_required_worktime int primary key generated always as identity,
required time without time zone not null default '8:0'::time,
required_minutes int not null default 480,
day date not null,
fk_login int not null references profile.t_login(pk),
unique(day, fk_login)
@ -54,7 +54,7 @@ with x(dayworktime, day, fk_login) as (
grant select on done.v_daylimit to timetrack;
create or replace view done.v_current_overtime as
select x.overtime_minutes + extract(minute from sum(l.dayworktime - r.required)) as overtime,
select x.overtime_minutes + sum(extract(minute from l.dayworktime) - r.required_minutes) as overtime,
to_char(now(), 'DD.MM.YYYY HH24:MI') as impact,
x.fk_login
from done.t_overtime x
@ -65,13 +65,13 @@ group by x.overtime_minutes, x.fk_login;
grant select on done.v_current_overtime to timetrack;
create view done.v_day as
create or replace view done.v_day as
with x(dayworktime, day, fk_login, required, starttime, endtime) as (
select sum(d.dayworktime), d.day, d.fk_login, r.required,
select sum(d.dayworktime), d.day, d.fk_login, make_interval(mins => r.required_minutes),
min(d.daytime_from), max(d.daytime_until)
from done.v_daylimit d
left join done.t_required_worktime r on r.day = d.day and r.fk_login = d.fk_login
group by d.day, d.fk_login, r.required
group by d.day, d.fk_login, r.required_minutes
) select day, starttime, endtime, dayworktime as worktime,
endtime - starttime - dayworktime as breaktime,
dayworktime - required as day_overtime, fk_login