wip
This commit is contained in:
parent
fbc6a18b0e
commit
514d412a20
90
TODO
90
TODO
@ -1,56 +1,34 @@
|
|||||||
Grupo6 string `json:"grupo6"`
|
<div class="columns">
|
||||||
Po int `json:"po" gorm:"index"`
|
<div class="column is-one-fifth">
|
||||||
Co int `json:"co"`
|
<aside class="menu">
|
||||||
Colada string `json:"colada"`
|
<p class="menu-label">Panel</p>
|
||||||
Calidad string `json:"calidad"`
|
<ul class="menu-list">
|
||||||
Matnr string `json:"matnr"`
|
<li><a href="/">Inicio</a></li>
|
||||||
Dibujo int `json:"dibujo"`
|
</ul>
|
||||||
Operador string `json:"operador"`
|
<p class="menu-label">Etiquetas leídas</p>
|
||||||
Serie int `json:"serie"`
|
<ul class="menu-list">
|
||||||
Nromatricula string `gorm:"primaryKey" json:"nromatricula"`
|
<li><a href="/barcodes">Consultar</a></li>
|
||||||
NroBulto string `json:"nro_bulto"`
|
</ul>
|
||||||
EtiquetaDoble string `json:"etiqueta_doble"`
|
<p class="menu-label">Paquetes</p>
|
||||||
Fecha int `json:"fecha"`
|
<ul class="menu-list">
|
||||||
Turno string `json:"turno"`
|
<li><a href="/bundle">Consultar</a></li>
|
||||||
Observacion1 string `json:"observacion1"`
|
</ul>
|
||||||
Observacion2 string `json:"observacion2"`
|
<p class="menu-label">Datos de fabricación</p>
|
||||||
Observacion3 string `json:"observacion3"`
|
<ul class="menu-list">
|
||||||
PaqueteLongitud float64 `json:"paquete_longitud"`
|
<li><a href="/po">Orden de producción</a></li>
|
||||||
PaqueteAncho int `json:"paquete_ancho"`
|
<li><a href="/co">Orden de cliente</a></li>
|
||||||
PaqueteAlto float64 `json:"paquete_alto"`
|
<li><a href="/bcp">Orden de corte placa</a></li>
|
||||||
PaquetePeso int `json:"paquete_peso"`
|
<li><a href="/lcp">Orden de corte layer</a></li>
|
||||||
PaqueteNroSecciones int `json:"paquete_nro_secciones"`
|
<li><a href="/hbcp">Hoja BCP</a></li>
|
||||||
PaqueteNroMantos int `json:"paquete_nro_mantos"`
|
</ul>
|
||||||
PaqueteNroSeccManto int `json:"paquete_nro_secc_manto"`
|
<p class="menu-label">Calidad</p>
|
||||||
SeccionTipo string `gorm:"index" json:"seccion_tipo"`
|
<ul class="menu-list">
|
||||||
SeccionLongitud int `json:"seccion_longitud"`
|
<li><a href="/standards">Normas</a></li>
|
||||||
SeccionAncho float64 `json:"seccion_ancho"`
|
</ul>
|
||||||
SeccionAlto float64 `json:"seccion_alto"`
|
<p class="menu-label">Etiquetas</p>
|
||||||
Idioma string `json:"idioma"`
|
<ul class="menu-list">
|
||||||
Destino int `json:"destino"`
|
<li><a href="/labels">Últimas etiquetas</a></li>
|
||||||
Hora int `json:"hora"`
|
</ul>
|
||||||
Horario int `json:"horario"`
|
</aside>
|
||||||
Inst string `json:"inst"`
|
</div>
|
||||||
Tren int `json:"tren"`
|
</div>
|
||||||
Normed string `json:"normed"`
|
|
||||||
Norpro string `json:"norpro"`
|
|
||||||
Nortol string `json:"nortol"`
|
|
||||||
Spras string `json:"spras"`
|
|
||||||
Statu int `json:"statu"`
|
|
||||||
Crlf string `json:"crlf"`
|
|
||||||
Maquina int `json:"maquina"`
|
|
||||||
Padre string `json:"padre"`
|
|
||||||
Paqpadre string `json:"paqpadre"`
|
|
||||||
RelevantTime string `json:"relevant_time"`
|
|
||||||
Desvio float64 `json:"desvio"`
|
|
||||||
Pesoteorico float64 `json:"pesoteorico"`
|
|
||||||
PesoteoricoReal float64 `json:"pesoteorico_real"`
|
|
||||||
DesvioTeoricoReal float64 `json:"desvio_teorico_real"`
|
|
||||||
FechaImpresion string `json:"fecha_impresion"`
|
|
||||||
PesoNivel1 float64 `json:"peso_nivel1"`
|
|
||||||
L3Sended bool `json:"l3_sended,omitempty"`
|
|
||||||
Confirmed bool `json:"confirmed,omitempty"`
|
|
||||||
SAP bool `json:"sap,omitempty"`
|
|
||||||
CreatedAt time.Time `gorm:"->;<-:create" json:"createdat,omitempty"`
|
|
||||||
UpdatedAt time.Time `json:"updatedat,omitempty"`
|
|
||||||
DeletedAt gorm.DeletedAt `gorm:"index" json:"deletedat,omitempty"`
|
|
@ -37,6 +37,13 @@ func BundleHandler(storage storage.Storager) httprouter.Handle {
|
|||||||
fechas := r.FormValue("fechas")
|
fechas := r.FormValue("fechas")
|
||||||
// loading bed
|
// loading bed
|
||||||
evacuadores := r.FormValue("evacuadores")
|
evacuadores := r.FormValue("evacuadores")
|
||||||
|
// checkbox value
|
||||||
|
onoff := r.FormValue("confirmed")
|
||||||
|
// confirmed
|
||||||
|
confirmed := false
|
||||||
|
if onoff == "on" {
|
||||||
|
confirmed = true
|
||||||
|
}
|
||||||
// check form values
|
// check form values
|
||||||
if codigo != "" {
|
if codigo != "" {
|
||||||
// call storager
|
// call storager
|
||||||
@ -62,7 +69,7 @@ func BundleHandler(storage storage.Storager) httprouter.Handle {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
// call storager
|
// call storager
|
||||||
data, err := storage.ListBundle(r.Context(), lb, inicio, final)
|
data, err := storage.ListBundle(r.Context(), lb, inicio, final, confirmed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
|
@ -3,15 +3,42 @@ package handlers
|
|||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"text/template"
|
"text/template"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.espin.casa/albert/cml04-falcon-ui/helper"
|
||||||
"git.espin.casa/albert/cml04-falcon-ui/storage"
|
"git.espin.casa/albert/cml04-falcon-ui/storage"
|
||||||
|
"git.espin.casa/albert/cml04-falcon-ui/types"
|
||||||
"github.com/julienschmidt/httprouter"
|
"github.com/julienschmidt/httprouter"
|
||||||
)
|
)
|
||||||
|
|
||||||
func IndexHandler(storage storage.Storager) httprouter.Handle {
|
func IndexHandler(storage storage.Storager) httprouter.Handle {
|
||||||
|
type PageView struct {
|
||||||
|
Stats *types.Stats
|
||||||
|
Bundles []types.BundleData
|
||||||
|
Barcodes []types.Barcode
|
||||||
|
}
|
||||||
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
return func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
|
||||||
|
// get current shift dates
|
||||||
|
dates, err := helper.GetShiftDates(time.Now())
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//
|
||||||
|
bundles, err := storage.ShiftListBundle(r.Context(), dates[0], dates[1])
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// create view
|
||||||
|
view := &PageView{
|
||||||
|
Stats: &types.Stats{},
|
||||||
|
Bundles: bundles,
|
||||||
|
Barcodes: []types.Barcode{},
|
||||||
|
}
|
||||||
|
|
||||||
t, _ := template.ParseFiles("templates/base.html", "templates/index.html")
|
t, _ := template.ParseFiles("templates/base.html", "templates/index.html")
|
||||||
err := t.Execute(w, nil)
|
err = t.Execute(w, view)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package helper
|
package helper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -24,3 +25,27 @@ func Dates(dr string) (start, finish time.Time, err error) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetShiftDates(inputTime time.Time) ([]time.Time, error) {
|
||||||
|
if inputTime.Hour() >= 6 && inputTime.Hour() < 14 {
|
||||||
|
// First shift: 6 to 14 hours
|
||||||
|
startTime := time.Date(inputTime.Year(), inputTime.Month(), inputTime.Day(), 6, 0, 0, 0, inputTime.Location())
|
||||||
|
endTime := time.Date(inputTime.Year(), inputTime.Month(), inputTime.Day(), 14, 0, 0, 0, inputTime.Location())
|
||||||
|
|
||||||
|
return []time.Time{startTime, endTime}, nil
|
||||||
|
} else if inputTime.Hour() >= 14 && inputTime.Hour() < 22 {
|
||||||
|
// Second shift: 14 to 22 hours
|
||||||
|
startTime := time.Date(inputTime.Year(), inputTime.Month(), inputTime.Day(), 14, 0, 0, 0, inputTime.Location())
|
||||||
|
endTime := time.Date(inputTime.Year(), inputTime.Month(), inputTime.Day(), 22, 0, 0, 0, inputTime.Location())
|
||||||
|
|
||||||
|
return []time.Time{startTime, endTime}, nil
|
||||||
|
} else if inputTime.Hour() >= 22 || inputTime.AddDate(0, 0, 1).Hour() < 6 {
|
||||||
|
// Third shift: 22 hours to 6 next day
|
||||||
|
startTime := time.Date(inputTime.Year(), inputTime.Month(), inputTime.Day(), 22, 0, 0, 0, inputTime.Location())
|
||||||
|
endTime := time.Date(inputTime.AddDate(0, 0, 1).Year(), inputTime.AddDate(0, 0, 1).Month(), inputTime.AddDate(0, 0, 1).Day(), 6, 0, 0, 0, inputTime.Location())
|
||||||
|
|
||||||
|
return []time.Time{startTime, endTime}, nil
|
||||||
|
} else {
|
||||||
|
return nil, fmt.Errorf("el horario de entrada no es válido")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
42
helper/helper_test.go
Normal file
42
helper/helper_test.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
package helper
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetShiftDates(t *testing.T) {
|
||||||
|
// First case 1: First shift
|
||||||
|
inputTime := time.Date(2023, 1, 15, 7, 0, 0, 0, time.UTC)
|
||||||
|
expectedStart := time.Date(2023, 1, 15, 6, 0, 0, 0, time.UTC)
|
||||||
|
expectedEnd := time.Date(2023, 1, 15, 14, 0, 0, 0, time.UTC)
|
||||||
|
shifts, err := GetShiftDates(inputTime)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error GetShiftDates: %v", err)
|
||||||
|
}
|
||||||
|
if shifts[0] != expectedStart || shifts[1] != expectedEnd {
|
||||||
|
t.Errorf("not expected results: got %v, %v; want %v, %v", shifts[0], shifts[1], expectedStart, expectedEnd)
|
||||||
|
}
|
||||||
|
// Second case 1: Second shift
|
||||||
|
inputTime = time.Date(2023, 1, 15, 14, 0, 0, 0, time.UTC)
|
||||||
|
expectedStart = time.Date(2023, 1, 15, 14, 0, 0, 0, time.UTC)
|
||||||
|
expectedEnd = time.Date(2023, 1, 15, 22, 0, 0, 0, time.UTC)
|
||||||
|
shifts, err = GetShiftDates(inputTime)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error GetShiftDates: %v", err)
|
||||||
|
}
|
||||||
|
if shifts[0] != expectedStart || shifts[1] != expectedEnd {
|
||||||
|
t.Errorf("not expected results: got %v, %v; want %v, %v", shifts[0], shifts[1], expectedStart, expectedEnd)
|
||||||
|
}
|
||||||
|
// Third case 3: Third shift
|
||||||
|
inputTime = time.Date(2023, 1, 15, 23, 0, 0, 0, time.UTC)
|
||||||
|
expectedStart = time.Date(2023, 1, 15, 22, 0, 0, 0, time.UTC)
|
||||||
|
expectedEnd = time.Date(2023, 1, 16, 6, 0, 0, 0, time.UTC)
|
||||||
|
shifts, err = GetShiftDates(inputTime)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error GetShiftDates: %v", err)
|
||||||
|
}
|
||||||
|
if shifts[0] != expectedStart || shifts[1] != expectedEnd {
|
||||||
|
t.Errorf("not expected results: got %v, %v; want %v, %v", shifts[0], shifts[1], expectedStart, expectedEnd)
|
||||||
|
}
|
||||||
|
}
|
@ -24,6 +24,7 @@ type Storager interface {
|
|||||||
ListBarcode(ctx context.Context, lb types.LoadingBed, inicio, final time.Time) (barcodes []types.Barcode, err error)
|
ListBarcode(ctx context.Context, lb types.LoadingBed, inicio, final time.Time) (barcodes []types.Barcode, err error)
|
||||||
Bundle(ctx context.Context, ua string) (bundle *types.BundleData, err error)
|
Bundle(ctx context.Context, ua string) (bundle *types.BundleData, err error)
|
||||||
ListBundle(ctx context.Context, lb types.LoadingBed, inicio, final time.Time, confirmed bool) (bundles []types.BundleData, err error)
|
ListBundle(ctx context.Context, lb types.LoadingBed, inicio, final time.Time, confirmed bool) (bundles []types.BundleData, err error)
|
||||||
|
ShiftListBundle(ctx context.Context, inicio, final time.Time) (bundles []types.BundleData, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type storage struct {
|
type storage struct {
|
||||||
@ -31,6 +32,14 @@ type storage struct {
|
|||||||
mux sync.RWMutex
|
mux sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ShiftListBundle implements Storager.
|
||||||
|
func (s *storage) ShiftListBundle(ctx context.Context, inicio, final time.Time) (bundles []types.BundleData, err error) {
|
||||||
|
if err := s.db.Where("created_at >= ? and created_at < ?", inicio, final).Find(&bundles).WithContext(ctx).Error; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// ListBundle implements Storager.
|
// ListBundle implements Storager.
|
||||||
func (s *storage) ListBundle(ctx context.Context, lb types.LoadingBed, inicio time.Time, final time.Time, confirmed bool) (bundles []types.BundleData, err error) {
|
func (s *storage) ListBundle(ctx context.Context, lb types.LoadingBed, inicio time.Time, final time.Time, confirmed bool) (bundles []types.BundleData, err error) {
|
||||||
if lb == types.ALL {
|
if lb == types.ALL {
|
||||||
|
@ -4,38 +4,6 @@
|
|||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="far fa-file"></i> Busqueda de códigos</p>
|
<p class="panel-heading"><i class="far fa-file"></i> Busqueda de códigos</p>
|
||||||
@ -112,7 +80,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
<tbody>
|
<tbody>
|
||||||
{{ range . }}
|
{{ range . }}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ .Barcode }}</td>
|
<td>{{ .Barcode }}</td>
|
||||||
<td>{{ .FormatLoadingBed }}</td>
|
<td>{{ .FormatLoadingBed }}</td>
|
||||||
|
@ -17,13 +17,65 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="notification is-link banner">
|
<!-- <div class="notification is-link banner">
|
||||||
<p>FALCON
|
<p>FALCON
|
||||||
<figure class="image is-64x64">
|
<figure class="image is-64x64">
|
||||||
<img src="/assets/img/falcon-transparent-white.png" alt="white falcon" />
|
<img src="/assets/img/falcon-transparent-white.png" alt="white falcon" />
|
||||||
</figure>
|
</figure>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div> -->
|
||||||
|
<nav class="navbar is-link">
|
||||||
|
<div class="navbar-brand">
|
||||||
|
<a class="navbar-item" href="#"></a>
|
||||||
|
<div id="navbarBasicExample" class="navbar-menu">
|
||||||
|
<div class="navbar-start">
|
||||||
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
|
<a class="navbar-link">
|
||||||
|
Etiquetas Leídas
|
||||||
|
</a>
|
||||||
|
<div class="navbar-dropdown">
|
||||||
|
<a class="navbar-item">
|
||||||
|
Consultar
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
|
<a class="navbar-link">
|
||||||
|
Paquetes
|
||||||
|
</a>
|
||||||
|
<div class="navbar-dropdown">
|
||||||
|
<a class="navbar-item">
|
||||||
|
Consultar
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
|
<a class="navbar-link">
|
||||||
|
Datos Producción
|
||||||
|
</a>
|
||||||
|
<div class="navbar-dropdown">
|
||||||
|
<a href="/po" class="navbar-item">Orden de producción</a>
|
||||||
|
<a href="/co" class="navbar-item">Orden de cliente</a>
|
||||||
|
<a href="/bcp" class="navbar-item">Orden de corte placa</a>
|
||||||
|
<a href="/lcp" class="navbar-item">Orden de corte layer</a>
|
||||||
|
<a href="/hbcp" class="navbar-item">Hoja cortes</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="navbar-item has-dropdown is-hoverable">
|
||||||
|
<a class="navbar-link">
|
||||||
|
Calidad
|
||||||
|
</a>
|
||||||
|
<div class="navbar-dropdown">
|
||||||
|
<a href="/normas" class="navbar-item">Normas</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="navbar-item">
|
||||||
|
Etiquetas
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
{{ template "body" . }}
|
{{ template "body" . }}
|
||||||
|
|
||||||
|
@ -3,40 +3,9 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
|
<hr>
|
||||||
|
<h3 class="title is-3">Orden corte placa</h3>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="fas fa-pencil-ruler" aria-hidden="true"></i> Orden de corte placa</p>
|
<p class="panel-heading"><i class="fas fa-pencil-ruler" aria-hidden="true"></i> Orden de corte placa</p>
|
||||||
|
@ -3,40 +3,9 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
|
<hr>
|
||||||
|
<h3 class="title is-3">Orden cliente</h3>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="fas fa-user-edit" aria-hidden="true"></i> Orden de cliente</p>
|
<p class="panel-heading"><i class="fas fa-user-edit" aria-hidden="true"></i> Orden de cliente</p>
|
||||||
|
@ -3,39 +3,9 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
|
<hr>
|
||||||
|
<h3 class="title is-3">Hoja cortes</h3>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="far fa-file"></i> Hoja patrón corte</p>
|
<p class="panel-heading"><i class="far fa-file"></i> Hoja patrón corte</p>
|
||||||
|
@ -3,38 +3,36 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
<div class="columns">
|
<hr>
|
||||||
<div class="column is-one-fifth">
|
<h3 class="title is-3">Panel principal</h3>
|
||||||
<aside class="menu">
|
<div class="columns is-multiline">
|
||||||
<p class="menu-label">Panel</p>
|
<div class="column is-12">
|
||||||
<ul class="menu-list">
|
<nav class="panel is-link">
|
||||||
<li><a href="/">Inicio</a></li>
|
<p class="panel-heading"><i class="fas fa-chart-line" aria-hidden="true"></i> Estadísticas turno</p>
|
||||||
</ul>
|
<div class="panel-block">
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
<table class="table">
|
||||||
<ul class="menu-list">
|
<thead>
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
<tr>
|
||||||
</ul>
|
<td>Paq.Etiquetados</td>
|
||||||
<p class="menu-label">Paquetes</p>
|
<td>Eti.Leídas</td>
|
||||||
<ul class="menu-list">
|
<td>Paq.Confirmados</td>
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
</tr>
|
||||||
</ul>
|
</thead>
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
<!-- <tfoot>
|
||||||
<ul class="menu-list">
|
<tr>
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
<td>Paq.Etiquetados</td>
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
<td>Eti.Leídas</td>
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
<td>Paq.Confirmados</td>
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
</tr>
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
</tfoot> -->
|
||||||
</ul>
|
<tbody>
|
||||||
<p class="menu-label">Calidad</p>
|
<tr>
|
||||||
<ul class="menu-list">
|
<td></td>
|
||||||
<li><a href="/standards">Normas</a></li>
|
</tr>
|
||||||
</ul>
|
</tbody>
|
||||||
<p class="menu-label">Etiquetas</p>
|
</table>
|
||||||
<ul class="menu-list">
|
</div>
|
||||||
<li><a href="/labels">Últimas etiquetas</a></li>
|
</nav>
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="column is-one-quarter">
|
<div class="column is-one-quarter">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
@ -65,14 +63,8 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<nav class="panel is-link">
|
|
||||||
<p class="panel-heading"><i class="fas fa-chart-line" aria-hidden="true"></i> Estadísticas turno</p>
|
|
||||||
<div class="panel-block">
|
|
||||||
|
|
||||||
<span class="tag is-success is-medium">100</span><p> Etiquetas leídas</p>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ if .Bundles }}
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="fas fa-box"></i> Paquetes</p>
|
<p class="panel-heading"><i class="fas fa-box"></i> Paquetes</p>
|
||||||
@ -83,15 +75,15 @@
|
|||||||
<th><abbr title="Unidad de almacén">UA</abbr></th>
|
<th><abbr title="Unidad de almacén">UA</abbr></th>
|
||||||
<th>PO</th>
|
<th>PO</th>
|
||||||
<th>CO</th>
|
<th>CO</th>
|
||||||
<th>Colada</th>
|
|
||||||
<th>Calidad</th>
|
<th>Calidad</th>
|
||||||
<th>Código SAP</th>
|
<th>Código SAP</th>
|
||||||
<th>Producto</th>
|
<th>Producto</th>
|
||||||
<th>Peso</th>
|
<th>Peso</th>
|
||||||
<th>Desvío</th>
|
<th>Desvío</th>
|
||||||
<th>Confirmado</th>
|
<th><abbr title="Paquete confirmado">Conf.</abbr></th>
|
||||||
<th>Nivel 3</th>
|
<th><abbr title="Nivel 3">N3</abbr></th>
|
||||||
<th>SAP</th>
|
<th>SAP</th>
|
||||||
|
<th>Fecha</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
@ -99,37 +91,40 @@
|
|||||||
<th><abbr title="Unidad de almacén">UA</abbr></th>
|
<th><abbr title="Unidad de almacén">UA</abbr></th>
|
||||||
<th>PO</th>
|
<th>PO</th>
|
||||||
<th>CO</th>
|
<th>CO</th>
|
||||||
<th>Colada</th>
|
|
||||||
<th>Calidad</th>
|
<th>Calidad</th>
|
||||||
<th>Código SAP</th>
|
<th>Código SAP</th>
|
||||||
<th>Producto</th>
|
<th>Producto</th>
|
||||||
<th>Peso</th>
|
<th>Peso</th>
|
||||||
<th>Desvío</th>
|
<th>Desvío</th>
|
||||||
<th>Confirmado</th>
|
<th><abbr title="Paquete confirmado">Conf.</abbr></th>
|
||||||
<th>Nivel 3</th>
|
<th><abbr title="Nivel 3">N3</abbr></th>
|
||||||
<th>SAP</th>
|
<th>SAP</th>
|
||||||
|
<th>Fecha</th>
|
||||||
</tr>
|
</tr>
|
||||||
</tfoot>
|
</tfoot>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{{ range .Bundles }}
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="">9402555315</a></td>
|
<td><a href="">{{ .Nromatricula }}</a></td>
|
||||||
<td><a href="">131620</a> </td>
|
<td><a href="">{{ .Po }}</a></td>
|
||||||
<td><a href="">40160750</a></td>
|
<td><a href="">{{ .Co }}</a></td>
|
||||||
<td>CE253242</td>
|
<td>{{ .Calidad }}</td>
|
||||||
<td>S 275 JR +AR</td>
|
<td>{{ .Matnr }}</td>
|
||||||
<td>BB01-140X12.1</td>
|
<td>{{ .SeccionTipo }}</td>
|
||||||
<td>HEB140</td>
|
<td>{{ .PaquetePeso }}</td>
|
||||||
<td>4776</td>
|
<td>{{ .FormatDesvio }}</td>
|
||||||
<td>-2.40</td>
|
<td>{{if .L3Sended }} Sí {{ else }} No {{ end }}</td>
|
||||||
<td>No</td>
|
<td>{{if .Confirmed }} Sí {{ else }} No {{ end }}</td>
|
||||||
<td>No</td>
|
<td>{{if .SAP }} Sí {{ else }} No {{ end }}</td>
|
||||||
<td>No</td>
|
<td>{{ .FormatCreatedAt }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{{ end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
@ -3,40 +3,9 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
|
<hr>
|
||||||
|
<h3 class="title is-3">Ordenes de corte layer</h3>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="fas fa-pencil-ruler" aria-hidden="true"></i> Orden de corte layer</p>
|
<p class="panel-heading"><i class="fas fa-pencil-ruler" aria-hidden="true"></i> Orden de corte layer</p>
|
||||||
|
@ -3,40 +3,9 @@
|
|||||||
{{define "body"}}
|
{{define "body"}}
|
||||||
|
|
||||||
<div class="container is-fluid">
|
<div class="container is-fluid">
|
||||||
|
<hr>
|
||||||
|
<h3 class="title is-3">Orden fabricación</h3>
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column is-one-fifth">
|
|
||||||
<aside class="menu">
|
|
||||||
<p class="menu-label">Panel</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/">Inicio</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas leídas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/barcodes">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Paquetes</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/bundle">Consultar</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Datos de fabricación</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/po">Orden de producción</a></li>
|
|
||||||
<li><a href="/co">Orden de cliente</a></li>
|
|
||||||
<li><a href="/bcp">Orden de corte placa</a></li>
|
|
||||||
<li><a href="/lcp">Orden de corte layer</a></li>
|
|
||||||
<li><a href="/hbcp">Hoja BCP</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Calidad</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/standards">Normas</a></li>
|
|
||||||
</ul>
|
|
||||||
<p class="menu-label">Etiquetas</p>
|
|
||||||
<ul class="menu-list">
|
|
||||||
<li><a href="/labels">Ultimas etiquetas</a></li>
|
|
||||||
</ul>
|
|
||||||
</aside>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<nav class="panel is-link">
|
<nav class="panel is-link">
|
||||||
<p class="panel-heading"><i class="fas fa-industry" aria-hidden="true"></i> Orden de producción</p>
|
<p class="panel-heading"><i class="fas fa-industry" aria-hidden="true"></i> Orden de producción</p>
|
||||||
|
20
types/stats.go
Normal file
20
types/stats.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package types
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
type Stats struct {
|
||||||
|
PaquetesEtiquetados int
|
||||||
|
EtiquetasLeidas int
|
||||||
|
PaquetesConfirmados int
|
||||||
|
PaquetesPrimeras int
|
||||||
|
ToneladasPrimeras float64
|
||||||
|
PaquetesSegundas int
|
||||||
|
ToneladasSegundas float64
|
||||||
|
PaquetesPendientes int
|
||||||
|
ToneladasPendientes float64
|
||||||
|
PaquetesCortas int
|
||||||
|
ToneladasCortas float64
|
||||||
|
DesvioPromedio float64
|
||||||
|
FechaInicio time.Time
|
||||||
|
FechaFinal time.Time
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user