MH: Dienstplanung Bugfix Ladedauer

This commit is contained in:
2025-04-15 15:00:30 +02:00
parent 7036a36efa
commit 43a78054de
4 changed files with 67 additions and 46 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
@@ -8,6 +9,7 @@ using BS.Shared;
namespace BeWo.Data.Entities
{
[DebuggerDisplay("{Datum} Z{Zeile} E{EmployeeOid}: {Startzeit}-{Endzeit}")]
public class DienstEintrag : BeWoEntityBase
{
private long _EmployeeOid;

View File

@@ -26,48 +26,7 @@ namespace BeWo.Service.Dienstplanung
var anzahlZeilen = AppSettings.CreateSettings().DienstplanungStandardZeilenAnzahl;
var wh = DAOFactory.GenericDAO.GetByID<Wohnheim>(wohnheimOid);
#region Dienste, die eigentlich Einträge sind, aber irgendwie in Vertretungen gelandet sind, in die richtige Tabelle verschieben
var emps = new List<Employee>();
foreach (var e in wh.Employee2WohnheimList)
emps.Add(e.Employee);
List<DienstEintrag> eintraegeToInsert = new List<DienstEintrag>();
List<Dienstvertretung> falscheVertretungen = new List<Dienstvertretung>();
var vertretungen = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>().Where(v => v.WohnheimOid == wh.Oid);
foreach (var emp in emps)
{
falscheVertretungen = vertretungen.Where(v => v.EmployeeOid == emp.Oid && v.WohnheimOid == wh.Oid).ToList();
if (falscheVertretungen != null)
{
foreach (var vertretung in falscheVertretungen)
{
var eintrag = new DienstEintrag()
{
Datum = vertretung.Datum,
DauerInStunden = vertretung.DauerInStunden,
DienstOid = vertretung.DienstOid,
EmployeeOid = vertretung.EmployeeOid,
Endzeit = vertretung.Endzeit,
IsActive = vertretung.IsActive,
Notice = vertretung.Notice,
Startzeit = vertretung.Startzeit,
Version = vertretung.Version,
WohnheimOid = vertretung.WohnheimOid,
Zeile = vertretung.Zeile
};
eintraegeToInsert.Add(eintrag);
}
}
}
if (eintraegeToInsert.Count > 0)
{
DAOFactory.GenericDAO.Insert(eintraegeToInsert);
DAOFactory.GenericDAO.Deactivate(falscheVertretungen);
}
#endregion
DienstplanerRootDC root = new DienstplanerRootDC();
OperationsServiceImp os = new OperationsServiceImp();
@@ -99,6 +58,56 @@ namespace BeWo.Service.Dienstplanung
root.AlleDienstEintraege = GetAllDienstEintraegeAsList(wohnheimOid, date.Year, date.Month);
#region Dienste, die eigentlich Einträge sind, aber irgendwie in Vertretungen gelandet sind, in die richtige Tabelle verschieben
var emps = new List<Employee>();
foreach (var e in wh.Employee2WohnheimList)
emps.Add(e.Employee);
List<DienstEintrag> eintraegeToInsert = new List<DienstEintrag>();
List<Dienstvertretung> falscheVertretungen = new List<Dienstvertretung>();
var vertretungen = DAOFactory.GenericDAO.GetAllActive<Dienstvertretung>().Where(v => v.WohnheimOid == wh.Oid);
foreach (var emp in emps)
{
falscheVertretungen = vertretungen.Where(v => v.EmployeeOid == emp.Oid && v.WohnheimOid == wh.Oid).ToList();
if (falscheVertretungen != null)
{
foreach (var vertretung in falscheVertretungen)
{
if (!root.AlleDienstEintraege.Any(e => e.Zeile == vertretung.Zeile && e.EmployeeOid == vertretung.EmployeeOid && e.WohnheimOid == vertretung.WohnheimOid))
{
var eintrag = new DienstEintrag()
{
Datum = vertretung.Datum,
DauerInStunden = vertretung.DauerInStunden,
DienstOid = vertretung.DienstOid,
EmployeeOid = vertretung.EmployeeOid,
Endzeit = vertretung.Endzeit,
IsActive = vertretung.IsActive,
Notice = vertretung.Notice,
Startzeit = vertretung.Startzeit,
Version = vertretung.Version,
WohnheimOid = vertretung.WohnheimOid,
Zeile = vertretung.Zeile
};
eintraegeToInsert.Add(eintrag);
}
}
}
}
if (eintraegeToInsert.Count > 0)
{
DAOFactory.GenericDAO.Insert(eintraegeToInsert);
DAOFactory.GenericDAO.Deactivate(falscheVertretungen);
}
#endregion
foreach (var rd in root.RegelmaessigeDienste)
root.AlleDienstEintraege.AddRange(AddRegelmaessigeDiensteToDienstplaner(rd, root.AlleDienstEintraege, root.AlleDienstvertretungen, root.AbsenceTimes, root.Feiertage,
root.EnableDiensteAnFeiertagen, root.DienstZeilenListe, root.ZeitraumFuerPflichtbesetzungStart, root.ZeitraumFuerPflichtbesetzungEnde, root.EnableStatuszeile, date));
@@ -333,7 +342,8 @@ namespace BeWo.Service.Dienstplanung
var dienstEintraegeDC = MapperFactory.DienstEintragDC_DienstEintrag.MapToNewDCs(dienstEintraege);
//
List<DienstEintragDC> dopplungen = new List<DienstEintragDC>();
List<DienstEintragDC> schonGehabt = new List<DienstEintragDC>();
@@ -358,7 +368,7 @@ namespace BeWo.Service.Dienstplanung
if (d.EmployeeOid == eintrag.EmployeeOid && d.Datum == eintrag.Datum && d.Zeile == eintrag.Zeile && dienstEintraegeDC.Where(e => d.EmployeeOid == e.EmployeeOid && d.Datum == e.Datum && d.Zeile == e.Zeile).ToList().Count > 1)
{
dienstEintraegeDC.RemoveAt(i);
DeleteDienstEintrag(eintrag.EmployeeOid, eintrag.WohnheimOid, eintrag.Zeile, eintrag.Datum);
//DeleteDienstEintrag(eintrag.EmployeeOid, eintrag.WohnheimOid, eintrag.Zeile, eintrag.Datum);
}
}
}
@@ -840,6 +850,10 @@ namespace BeWo.Service.Dienstplanung
foreach (var item in konto.EmployeeDetailList)
{
if (item.Employee.Oid == 19)
{
}
root.StundenBeiAbwesenheit.Add(item.Employee.Oid, item.SollProTag);
var employee = MapperFactory.EmployeeDC_Employee.MapToNewDC(item.Employee);

View File

@@ -8,6 +8,7 @@ using BeWo.Data.Entities;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.Extensions;
using System.Diagnostics;
namespace BeWo.Service.Dienstplanung
{
@@ -228,6 +229,7 @@ namespace BeWo.Service.Dienstplanung
}
[DebuggerDisplay("{Employee.Oid} {Employee.Person.FirstNameLastName} Soll: {StundenSollOhneUrlaubKrankheit} Ist: {StundenGesamtIst}")]
public class EmployeeDetail
{
public IList<Team> Teams { get; set; }

View File

@@ -178,7 +178,10 @@ namespace BeWo.Service.Dienstplanung
}
if (emp.Oid == 19)
{ }
empDetail.SollProTag = (weeklyTotalHours / empDetail.ArbeitstageProWoche);
empDetail.SollProWoche = BerechneSollProWoche(c, empDetail);
HandleServiceRecords(empDetail, groupFilteredRecords, c);
@@ -846,10 +849,10 @@ namespace BeWo.Service.Dienstplanung
}
else if (ed.Employee.IsActive == ActivationTypeId.Archived)
{
if (ed.StundenGesamtIst != 0)
{
//if (ed.StundenGesamtIst != 0)
//{
newEmpList.Add(ed);
}
//}
}
}