mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'fix/ot-progress' into 'main'
Fix/ot progress See merge request jjimenez/safekat!786
This commit is contained in:
@ -119,6 +119,7 @@ return [
|
||||
//IMPRESION
|
||||
"impresion_bn" => "Impresión BN",
|
||||
"cubierta" => "Cubierta/Portada",
|
||||
"sobrecubierta" => "Sobrecubierta",
|
||||
"guarda" => "Guarda",
|
||||
"encuadernacion" => "Encuadernación",
|
||||
|
||||
|
||||
@ -228,8 +228,8 @@ class ProductionService extends BaseService
|
||||
$this->maquinaModel = model(MaquinaModel::class);
|
||||
$this->otModel = model(OrdenTrabajoModel::class);
|
||||
$ot = $this->otModel->find($orden_trabajo_id);
|
||||
if($ot == null){
|
||||
throw new Exception(lang('Produccion.errors.ot_not_found',['ot_id' => $orden_trabajo_id]));
|
||||
if ($ot == null) {
|
||||
throw new Exception(lang('Produccion.errors.ot_not_found', ['ot_id' => $orden_trabajo_id]));
|
||||
}
|
||||
$this->ot = $ot;
|
||||
$pedido = $this->ot->pedido();
|
||||
@ -610,11 +610,11 @@ class ProductionService extends BaseService
|
||||
}
|
||||
return ["tareas" => $tareas];
|
||||
}
|
||||
public function getTareasWithMaquina(int $maquina_id,?array $tareaEstados = null) : ?array
|
||||
public function getTareasWithMaquina(int $maquina_id, ?array $tareaEstados = null): ?array
|
||||
{
|
||||
return $this->otModel->queryMaquinaTareas($maquina_id, $tareaEstados)
|
||||
->where('ordenes_trabajo.id', $this->ot->id)
|
||||
->get()->getResult(OrdenTrabajoTareaEntity::class);
|
||||
->where('ordenes_trabajo.id', $this->ot->id)
|
||||
->get()->getResult(OrdenTrabajoTareaEntity::class);
|
||||
}
|
||||
|
||||
public function getPdf()
|
||||
@ -1439,6 +1439,16 @@ class ProductionService extends BaseService
|
||||
}
|
||||
return $pedidoUserDates;
|
||||
}
|
||||
public function getTiempoEstimadoTotalTareasSeconds(): int
|
||||
{
|
||||
try {
|
||||
$time_tareas_seconds = array_map(fn($q) => $q->tiempo_estimado ?? 0, $this->ot->tareas());
|
||||
$seconds = array_sum($time_tareas_seconds);
|
||||
return $seconds;
|
||||
} catch (\Throwable $th) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
public function getTiempoProcesamientoHHMMSS(): ?string
|
||||
{
|
||||
try {
|
||||
@ -1490,33 +1500,36 @@ class ProductionService extends BaseService
|
||||
}
|
||||
return $uvi;
|
||||
}
|
||||
//TODO ACTUALIZAR
|
||||
|
||||
public function updateProgress(): bool
|
||||
{
|
||||
$userDates = $this->ordenTrabajoConfig->DATE_USER_MAPPING;
|
||||
$pedidoUserDates = $this->ordenTrabajoConfig->DATE_USER_MAPPING_PEDIDO;
|
||||
|
||||
$fill_dates = 0;
|
||||
$status = false;
|
||||
$total = count($userDates) + count($pedidoUserDates);
|
||||
$progress = $this->getOtProgress();
|
||||
if ($this->ot->estado != "F") {
|
||||
if ($this->ot->dates()) {
|
||||
|
||||
foreach ($userDates as $key => $value) {
|
||||
if ($this->ot->dates()->{$key} != null) $fill_dates++;
|
||||
}
|
||||
foreach ($pedidoUserDates as $key => $value) {
|
||||
if ($this->pedido->{$key} != null) $fill_dates++;
|
||||
}
|
||||
|
||||
$progreso = (float) $fill_dates / $total * 100;
|
||||
$status = $this->otModel->update($this->ot->id, ["progreso" => round($progreso, 2)]);
|
||||
}
|
||||
$status = $this->otModel->update($this->ot->id, ["progreso" => round($progress, 2)]);
|
||||
} else {
|
||||
$status = $this->otModel->update($this->ot->id, ["progreso" => 100]);
|
||||
}
|
||||
return $status;
|
||||
}
|
||||
public function getOtProgress()
|
||||
{
|
||||
$datesWithTime = $this->getOrdenTrabajoTareaDatesWithTiempoEstimado();
|
||||
$tiempo_estimado_total = $this->getTiempoEstimadoTotalTareasSeconds();
|
||||
$progress = 0;
|
||||
$otDates = $this->ot->dates();
|
||||
foreach ($datesWithTime as $key => $dateWithTime) {
|
||||
["date" => $date, "tiempo_estimado" => $tiempo_estimado] = $dateWithTime;
|
||||
try {
|
||||
if ($otDates->{$date}) {
|
||||
$progress += $tiempo_estimado / $tiempo_estimado_total * 100;
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
//throw $th;
|
||||
$progress += 0;
|
||||
}
|
||||
}
|
||||
return $progress;
|
||||
}
|
||||
public function getOtColorStatus(): string
|
||||
{
|
||||
if ($this->ot->dates()) {
|
||||
@ -2194,6 +2207,15 @@ class ProductionService extends BaseService
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
public function getOrdenTrabajoTareaDatesWithTiempoEstimado(): array
|
||||
{
|
||||
$dates = [];
|
||||
foreach ($this->ot->tareas() as $key => $tarea) {
|
||||
$dates[$tarea->id]["date"] = $this->getOrdenTrabajoTareaDate($tarea);
|
||||
$dates[$tarea->id]["tiempo_estimado"] = $tarea->tiempo_estimado;
|
||||
}
|
||||
return $dates;
|
||||
}
|
||||
public function getOrdenTrabajoTareaDates(): array
|
||||
{
|
||||
$dates = [];
|
||||
|
||||
@ -16,14 +16,14 @@ class OrdenTrabajoDatatable {
|
||||
|
||||
this.datatableColumns = [
|
||||
{ data: 'pdf_check', searchable: false, sortable: false, render: d => `<input class="form-check-input pdf-check" data-id="${d}" type="checkbox">` },
|
||||
{ data: 'id', searchable: false, sortable: true },
|
||||
{ data: 'pedido_id', searchable: false, sortable: false },
|
||||
{ data: 'fecha_encuadernado_at', searchable: false, sortable: false },
|
||||
{ data: 'cliente_nombre', searchable: false, sortable: false },
|
||||
{ data: 'presupuesto_titulo', searchable: false, sortable: false },
|
||||
{ data: 'ubicacion_nombre', searchable: false, sortable: false },
|
||||
{ data: 'total_tirada', searchable: false, sortable: false, render: (d) => `<span class="autonumeric">${d}</span>` },
|
||||
{ data: 'tipo_presupuesto_impresion', searchable: false, sortable: false },
|
||||
{ data: 'id', searchable: true, sortable: true },
|
||||
{ data: 'pedido_id', searchable: true, sortable: true },
|
||||
{ data: 'fecha_encuadernado_at',name:"pedidos.fecha_encuadernado", searchable: true, sortable: true },
|
||||
{ data: 'cliente_nombre', name:"clientes.nombre", searchable: true, sortable: false },
|
||||
{ data: 'presupuesto_titulo', name:"presupuestos.titulo", searchable: true, sortable: true },
|
||||
{ data: 'ubicacion_nombre', name:"ubicaciones.nombre", searchable: true, sortable: true },
|
||||
{ data: 'total_tirada', name:"pedidos.total_tirada",searchable: true, sortable: true, render: (d) => `<span class="autonumeric">${d}</span>` },
|
||||
{ data: 'tipo_presupuesto_impresion', name:"tipos_presupuestos.codigo", searchable: true, sortable: true },
|
||||
{
|
||||
data: 'logo', searchable: false, sortable: false, render: (d, t) => {
|
||||
return `<div class="logo-container">
|
||||
@ -33,7 +33,7 @@ class OrdenTrabajoDatatable {
|
||||
}
|
||||
},
|
||||
{
|
||||
data: 'progreso', searchable: false, sortable: false, render: (d, t) => {
|
||||
data: 'progreso',name:"ordenes_trabajo.progreso", searchable: false, sortable: true, render: (d, t) => {
|
||||
return `<div class="progress border rounded-2" style="height: 1rem;">
|
||||
<div id="ot-progress-bar" class="progress-bar" role="progressbar" style="width: ${parseInt(d)}%;" aria-valuenow="${d}" aria-valuemin="0" aria-valuemax="100">${d}%</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user