further time calculation optimization
This commit is contained in:
@ -23,7 +23,7 @@ apply plugin: 'maven-publish'
|
||||
apply plugin: 'eclipse'
|
||||
|
||||
group = 'de.jottyfan'
|
||||
version = '20240104'
|
||||
version = '20240104b'
|
||||
def artifactId = 'timetrackjooq'
|
||||
def versionNumber = version
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user