Merge branch 'release/AddYeldPreview_01'
This commit is contained in:
@@ -1,49 +1,62 @@
|
||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="cmp_BP_sheetList.ascx.cs" Inherits="NKC_WF.WebUserControls.cmp_BP_sheetList" %>
|
||||
|
||||
<asp:HiddenField ID="hfBunkIndex" runat="server" />
|
||||
<asp:HiddenField ID="hfStackID" runat="server" />
|
||||
<asp:GridView runat="server" ID="grView" AutoGenerateColumns="False" DataKeyNames="SheetID" DataSourceID="ods" CssClass="table table-sm table-striped" AllowSorting="True" OnSelectedIndexChanged="grView_SelectedIndexChanged">
|
||||
<HeaderStyle CssClass="default" />
|
||||
<PagerStyle CssClass="active GridPager" />
|
||||
<PagerSettings Mode="NumericFirstLast" />
|
||||
<SelectedRowStyle CssClass="table-info" />
|
||||
<EmptyDataTemplate>
|
||||
<%: traduci("NoRecord") %>
|
||||
</EmptyDataTemplate>
|
||||
<Columns>
|
||||
<asp:TemplateField ShowHeader="False">
|
||||
<HeaderTemplate>
|
||||
<asp:LinkButton ID="lbtReset" runat="server" OnClick="lbtReset_Click" CssClass="btn btn-sm btn-primary" Visible="true" ToolTip="Reset"><i class="fa fa-refresh"></i></asp:LinkButton>
|
||||
</HeaderTemplate>
|
||||
<ItemTemplate>
|
||||
<asp:LinkButton ID="lbSelect" runat="server" CausesValidation="False" CommandName="Select" CssClass="btn btn-sm btn-primary"><i class="fa fa-search" aria-hidden="true"></i></asp:LinkButton>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField DataField="SheetIndex" HeaderText="#" ReadOnly="True" SortExpression="SheetIndex" />
|
||||
<asp:TemplateField HeaderText="Material" SortExpression="MatExtCode">
|
||||
<ItemTemplate>
|
||||
<div class="row">
|
||||
<div class="col-8 text-left">
|
||||
<asp:Label ID="lblMatExtCode" runat="server" Text='<%# Eval("MatExtCode") %>' CssClass="font-weight-bold"></asp:Label>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<asp:Label ID="lblSheetID" runat="server" Text='<%# Eval("SheetID") %>' CssClass="small text-right"></asp:Label>
|
||||
</div>
|
||||
<div class="col-12 text-left">
|
||||
<asp:Label ID="lblMatDesc" runat="server" Text='<%# Eval("MatDesc") %>' CssClass="small"></asp:Label>
|
||||
</div>
|
||||
</div>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="Estim" SortExpression="WrkTimeEst">
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="lblWrkTimeEst" runat="server" Text='<%# formatMinSec(Eval("WrkTimeEst", "{0:N0}")) %>'></asp:Label>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
<HeaderStyle CssClass="default" />
|
||||
<PagerStyle CssClass="active GridPager" />
|
||||
<PagerSettings Mode="NumericFirstLast" />
|
||||
<SelectedRowStyle CssClass="table-info" />
|
||||
<EmptyDataTemplate>
|
||||
<%: traduci("NoRecord") %>
|
||||
</EmptyDataTemplate>
|
||||
<Columns>
|
||||
<asp:TemplateField ShowHeader="False">
|
||||
<HeaderTemplate>
|
||||
<asp:LinkButton ID="lbtReset" runat="server" OnClick="lbtReset_Click" CssClass="btn btn-sm btn-primary" Visible="true" ToolTip="Reset"><i class="fa fa-refresh"></i></asp:LinkButton>
|
||||
</HeaderTemplate>
|
||||
<ItemTemplate>
|
||||
<asp:LinkButton ID="lbSelect" runat="server" CausesValidation="False" CommandName="Select" CssClass="btn btn-sm btn-primary"><i class="fa fa-search" aria-hidden="true"></i></asp:LinkButton>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:BoundField DataField="SheetIndex" HeaderText="#" ReadOnly="True" SortExpression="SheetIndex" />
|
||||
<asp:TemplateField HeaderText="Material" SortExpression="MatExtCode">
|
||||
<ItemTemplate>
|
||||
<div class="row">
|
||||
<div class="col-8 text-left">
|
||||
<asp:Label ID="lblMatExtCode" runat="server" Text='<%# Eval("MatExtCode") %>' CssClass="font-weight-bold"></asp:Label>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<asp:Label ID="lblSheetID" runat="server" Text='<%# Eval("SheetID") %>' CssClass="small text-right"></asp:Label>
|
||||
</div>
|
||||
<div class="col-12 text-left">
|
||||
<asp:Label ID="lblMatDesc" runat="server" Text='<%# Eval("MatDesc") %>' CssClass="small"></asp:Label>
|
||||
</div>
|
||||
</div>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="Estim" SortExpression="WrkTimeEst">
|
||||
<ItemTemplate>
|
||||
<div class="row">
|
||||
<div class="col-12 text-left">
|
||||
<asp:Label ID="lblWrkTimeEst" runat="server" Text='<%# formatMinSec(Eval("WrkTimeEst", "{0:N0}")) %>'></asp:Label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-4 text-left">
|
||||
P: <asp:Label ID="lblSheetParts" runat="server" Text='<%# GetSheetPartQty(Eval("SheetIndex")) %>'></asp:Label>
|
||||
</div>
|
||||
<div class="col-8 text-right">
|
||||
<asp:Label ID="lblSheetYels" runat="server" Text='<%# GetSheetYeld(Eval("SheetIndex")) %>'></asp:Label>
|
||||
</div>
|
||||
</div>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
</asp:GridView>
|
||||
<asp:ObjectDataSource ID="ods" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getByStack" TypeName="AppData.DS_AppTableAdapters.SheetListTableAdapter">
|
||||
<SelectParameters>
|
||||
<asp:ControlParameter ControlID="hfStackID" DefaultValue="0" Name="StackID" PropertyName="Value" Type="Int32" />
|
||||
<asp:Parameter Name="Machine" DefaultValue="" />
|
||||
</SelectParameters>
|
||||
<SelectParameters>
|
||||
<asp:ControlParameter ControlID="hfStackID" DefaultValue="0" Name="StackID" PropertyName="Value" Type="Int32" />
|
||||
<asp:Parameter Name="Machine" DefaultValue="" />
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource>
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
using System;
|
||||
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
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Bunk corrente...
|
||||
/// </summary>
|
||||
@@ -16,6 +20,9 @@ namespace NKC_WF.WebUserControls
|
||||
set
|
||||
{
|
||||
hfStackID.Value = value.ToString();
|
||||
// aggiorno dati mongo...
|
||||
updateMongoData(BatchId, value);
|
||||
// disegno datagrid...
|
||||
grView.DataBind();
|
||||
}
|
||||
get
|
||||
@@ -25,6 +32,18 @@ namespace NKC_WF.WebUserControls
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Num totale Sheets
|
||||
/// </summary>
|
||||
public int numSheets
|
||||
{
|
||||
get
|
||||
{
|
||||
return grView.Rows.Count;
|
||||
}
|
||||
}
|
||||
|
||||
// <summary>
|
||||
/// Indice selezionato
|
||||
/// </summary>
|
||||
@@ -40,6 +59,7 @@ namespace NKC_WF.WebUserControls
|
||||
grView.DataBind();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// SheetId selezionato
|
||||
/// </summary>
|
||||
@@ -63,27 +83,11 @@ namespace NKC_WF.WebUserControls
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// comando reset
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
protected void lbtReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
resetSelezione();
|
||||
}
|
||||
public void resetSelezione()
|
||||
{
|
||||
//lblStack.Text = "";
|
||||
grView.SelectedIndex = -1;
|
||||
grView.DataBind();
|
||||
raiseEvent();
|
||||
}
|
||||
|
||||
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
raiseEvent();
|
||||
}
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Formatta in min/sec il tempo in sec decimale
|
||||
/// </summary>
|
||||
@@ -101,14 +105,175 @@ namespace NKC_WF.WebUserControls
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Num totale Sheets
|
||||
/// Recupera valore YELD dato SheetID
|
||||
/// </summary>
|
||||
public int numSheets
|
||||
/// <param name="sId"></param>
|
||||
/// <returns></returns>
|
||||
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}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recupera valore YELD dato SheetID
|
||||
/// </summary>
|
||||
/// <param name="sId"></param>
|
||||
/// <returns></returns>
|
||||
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
|
||||
|
||||
/// <summary>
|
||||
/// Tabella dei dati di quante part siano presenti x foglio recuperato dai dati nesting da mongoDB
|
||||
/// </summary>
|
||||
protected Dictionary<int, int> SheetPartQty = new Dictionary<int, int>();
|
||||
|
||||
/// <summary>
|
||||
/// Tabella dei dati di resa (Yeald) x foglio recuperato dai dati nesting da mongoDB
|
||||
/// </summary>
|
||||
protected Dictionary<int, double> SheetYeld = new Dictionary<int, double>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
/// <summary>
|
||||
/// Batch corrente...
|
||||
/// </summary>
|
||||
protected int BatchId
|
||||
{
|
||||
get
|
||||
{
|
||||
return grView.Rows.Count;
|
||||
int answ = memLayer.ML.QSI("BatchId");
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected void grView_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
raiseEvent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// comando reset
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
protected void lbtReset_Click(object sender, EventArgs e)
|
||||
{
|
||||
resetSelezione();
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Methods
|
||||
|
||||
/// <summary>
|
||||
/// Aggiorna i dati di stima recuperando da Mongo le risposte complete dal supervisor
|
||||
/// </summary>
|
||||
/// <param name="BatchId">ID del Batch di cui recuperare le info</param>
|
||||
/// <param name="BunkId">ID del BUNK da considerare</param>
|
||||
private void updateMongoData(int BatchId, int BunkId)
|
||||
{
|
||||
if (memLayer.ML.CRB("enableMongo"))
|
||||
{
|
||||
SheetYeld = new Dictionary<int, double>();
|
||||
SheetPartQty = new Dictionary<int, int>();
|
||||
// cerco da lista salvataggi Nest...
|
||||
var nestAnsw = ComLib.man.getNestAnsw(BatchId);
|
||||
// recupero bunk da DB
|
||||
DataLayer dlMan = new DataLayer();
|
||||
var bunkList = dlMan.taSTL.getByBatch(BatchId);
|
||||
var bunkRow = bunkList.Where(x => x.StackID == BunkId).FirstOrDefault();
|
||||
// elenchi x ricerca duplicati
|
||||
List<int> partListNest = new List<int>();
|
||||
List<int> partListNestDupl = new List<int>();
|
||||
|
||||
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
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,15 @@ namespace NKC_WF.WebUserControls
|
||||
public partial class cmp_BP_sheetList
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// hfBunkIndex control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HiddenField hfBunkIndex;
|
||||
|
||||
/// <summary>
|
||||
/// hfStackID control.
|
||||
/// </summary>
|
||||
|
||||
@@ -60,15 +60,19 @@ namespace NKC_WF.WebUserControls
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private void updateMongoData(int value)
|
||||
/// <summary>
|
||||
/// Aggiorna i dati di stima recuperando da Mongo le risposte complete dal supervisor
|
||||
/// </summary>
|
||||
/// <param name="batchId">BatchId di cui recuperare le info</param>
|
||||
private void updateMongoData(int batchId)
|
||||
{
|
||||
lblMatDet.Text = "";
|
||||
lblProdDet.Text = "";
|
||||
if (memLayer.ML.CRB("enableMongo"))
|
||||
{
|
||||
// cerco da lista salvataggi Estim/Nest...
|
||||
var estimAnsw = ComLib.man.getEstAnsw(value);
|
||||
var nestAnsw = ComLib.man.getNestAnsw(value);
|
||||
var estimAnsw = ComLib.man.getEstAnsw(batchId);
|
||||
var nestAnsw = ComLib.man.getNestAnsw(batchId);
|
||||
StringBuilder sbDebug = new StringBuilder();
|
||||
sbDebug.AppendLine("Debug Info:");
|
||||
// elenchi x ricerca duplicati
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
<div class="col-2 pr-0 small">
|
||||
<uc1:cmp_BP_bunkList runat="server" ID="cmp_BP_bunkList" />
|
||||
</div>
|
||||
<div class="col-8 px-0">
|
||||
<div class="col-7 px-0">
|
||||
<h3><%# traduci("BatchPreview") %></h3>
|
||||
<uc1:cmp_slider runat="server" ID="cmp_slider" />
|
||||
<uc1:cmp_MU_svgViewer runat="server" ID="cmp_MU_svgViewer" />
|
||||
</div>
|
||||
<div class="col-2 pl-0 small">
|
||||
<div class="col-3 pl-0 small">
|
||||
<uc1:cmp_BP_sheetList runat="server" ID="cmp_BP_sheetList" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -159,6 +159,9 @@ namespace NKC_WF.site
|
||||
cmp_slider.selValue = num;
|
||||
// recupero bunk e sheets e seleziono
|
||||
cmp_BP_sheetList.BunkId = cmp_BP_bunkList.BunkIdSel;
|
||||
#if false
|
||||
cmp_BP_sheetList.BatchId = BatchId;
|
||||
#endif
|
||||
sheetIndex = currRow.SheetIndex - 1;
|
||||
// update svg...
|
||||
cmp_MU_svgViewer.SheetId = currRow.SheetID;
|
||||
|
||||
+23
-23
@@ -1,10 +1,10 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <generato automaticamente>
|
||||
// Codice generato da uno strumento.
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
|
||||
// il codice viene rigenerato.
|
||||
// </generato automaticamente>
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace NKC_WF.site
|
||||
@@ -15,56 +15,56 @@ namespace NKC_WF.site
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Controllo uplBody.
|
||||
/// uplBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.UpdatePanel uplBody;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo hfBatchID.
|
||||
/// hfBatchID control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HiddenField hfBatchID;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo cmp_BP_bunkList.
|
||||
/// cmp_BP_bunkList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::NKC_WF.WebUserControls.cmp_BP_bunkList cmp_BP_bunkList;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo cmp_slider.
|
||||
/// cmp_slider control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::NKC_WF.WebUserControls.cmp_slider cmp_slider;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo cmp_MU_svgViewer.
|
||||
/// cmp_MU_svgViewer control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::NKC_WF.WebUserControls.cmp_MU_svgViewer cmp_MU_svgViewer;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo cmp_BP_sheetList.
|
||||
/// cmp_BP_sheetList control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::NKC_WF.WebUserControls.cmp_BP_sheetList cmp_BP_sheetList;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user