using AppData; using SteamWare; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; namespace NKC_WF.WebUserControls { public partial class cmp_BP_sheetList : BaseUserControl { #region Public Properties /// /// Bunk corrente... /// public int BunkId { set { hfStackID.Value = value.ToString(); // aggiorno dati mongo... updateMongoData(BatchId, value); // disegno datagrid... grView.DataBind(); } get { int answ = 0; int.TryParse(hfStackID.Value, out answ); return answ; } } /// /// Num totale Sheets /// public int numSheets { get { return grView.Rows.Count; } } // /// Indice selezionato /// public int selIndex { get { return grView.SelectedIndex; } set { grView.SelectedIndex = value; grView.DataBind(); } } /// /// SheetId selezionato /// public int SheetIdSel { get { int answ = 0; try { if (grView != null) { if (grView.SelectedValue != null) { int.TryParse(grView.SelectedValue.ToString(), out answ); } } } catch { } return answ; } } #endregion Public Properties #region Public Methods /// /// Formatta in min/sec il tempo in sec decimale /// /// /// public string formatMinSec(object _timeSec) { int totSec = 0; string answ = ""; int.TryParse(_timeSec.ToString().Replace(".", ""), out totSec); int numMin = totSec / 60; int numSec = totSec - (60 * numMin); answ = $"{numMin:00}:{numSec:00}"; return answ; } /// /// Recupera valore YELD dato SheetID /// /// /// public string GetSheetPartQty(object sId) { int answ = 0; int sheetId = 0; if (int.TryParse($"{sId}", out sheetId)) { if (SheetPartQty.ContainsKey(sheetId)) { answ = SheetPartQty[sheetId]; } } return $"{answ:N0}"; } /// /// Recupera valore YELD dato SheetID /// /// /// public string GetSheetYeld(object sId) { double answ = 0; int sheetId = 0; if (int.TryParse($"{sId}", out sheetId)) { if (SheetYeld.ContainsKey(sheetId)) { answ = SheetYeld[sheetId]; } } return $"{answ:P1}"; } public void resetSelezione() { //lblStack.Text = ""; grView.SelectedIndex = -1; grView.DataBind(); raiseEvent(); } #endregion Public Methods #region Protected Fields /// /// Tabella dei dati di quante part siano presenti x foglio recuperato dai dati nesting da mongoDB /// protected Dictionary SheetPartQty = new Dictionary(); /// /// Tabella dei dati di resa (Yeald) x foglio recuperato dai dati nesting da mongoDB /// protected Dictionary SheetYeld = new Dictionary(); #endregion Protected Fields #region Protected Properties /// /// Batch corrente... /// protected int BatchId { get { int answ = memLayer.ML.QSI("BatchId"); return answ; } } #endregion Protected Properties #region Protected Methods protected void grView_SelectedIndexChanged(object sender, EventArgs e) { raiseEvent(); } /// /// comando reset /// /// /// protected void lbtReset_Click(object sender, EventArgs e) { resetSelezione(); } protected void Page_Load(object sender, EventArgs e) { } #endregion Protected Methods #region Private Methods /// /// Aggiorna i dati di stima recuperando da Mongo le risposte complete dal supervisor /// /// ID del Batch di cui recuperare le info /// ID del BUNK da considerare private void updateMongoData(int BatchId, int BunkId) { SheetYeld = new Dictionary(); SheetPartQty = new Dictionary(); DataLayer dlMan = new DataLayer(); if (memLayer.ML.CRB("enableMongo")) { var bunkList = dlMan.taSTL.getByBatch(BatchId); var bunkRow = bunkList.Where(x => x.StackID == BunkId).FirstOrDefault(); // da eliminare quando testato altro metodo... #if false // cerco da lista salvataggi Nest... var nestAnsw = ComLib.man.getNestAnsw(BatchId); // recupero bunk da DB // elenchi x ricerca duplicati List partListNest = new List(); List partListNestDupl = new List(); if (nestAnsw != null && bunkRow != null) { double num = 0; double den = 1; double currRatio = 0; try { if (nestAnsw.BunkList != null) { foreach (var bunk in nestAnsw.BunkList) { if (bunkRow.StackIndex == bunk.BunkIndex) { // procedo SOLO per il bunk corrente... foreach (var sheet in bunk.SheetList) { num = sheet.SurfaceWork > 0 ? sheet.SurfaceWork : 0; den = sheet.SurfaceTotal > 0 ? sheet.SurfaceTotal : 1; currRatio = ComLib.ratioProt(num, den); if (SheetYeld.ContainsKey(sheet.SheetIndex)) { SheetYeld[sheet.SheetIndex] = currRatio; } else { SheetYeld.Add(sheet.SheetIndex, currRatio); } if (SheetPartQty.ContainsKey(sheet.SheetIndex)) { SheetPartQty[sheet.SheetIndex] = sheet.PartList.Count; } else { SheetPartQty.Add(sheet.SheetIndex, sheet.PartList.Count); } } } } } } catch { } } #endif // leggo da obj di DlMan var statData = DLMan.GetYeldStatsFromMongoData(BatchId); if (statData != null) { List sList = statData .ListBySheet .Where(x => x.BunkIdx == bunkRow.StackIndex) .ToList(); // converto... SheetYeld = sList.ToDictionary(r => r.SheetIdx, r => r.Yeld); SheetPartQty = sList.ToDictionary(r => r.SheetIdx, r => r.NumParts); } } } #endregion Private Methods protected void grView_PageIndexChanged(object sender, EventArgs e) { updateMongoData(BatchId, BunkId); } } }