Merge branch 'develop' into SDK

This commit is contained in:
Samuele E. Locatelli
2020-01-23 18:23:54 +01:00
14 changed files with 313 additions and 77 deletions
+168 -19
View File
@@ -126,23 +126,6 @@ namespace AppData
return answ;
}
//public object getEstAnsw(int BatchId)
//{
// List<nestReplyBatchFinal> answ = null;
// var collNAA = database.GetCollection<nestReplyBatchFinal>("NestAnswArchive");
// // oggetto filtraggio x nest answ
// var builderNAA = Builders<nestReplyBatchFinal>.Filter;
// var filtBatchId = builderNAA.Eq(u => u.BatchID, BatchId);
// var datiCorrenti = collNAA.Find(filtBatchId);
// foreach (var item in datiCorrenti)
// {
// }
// return answ;
//}
/// <summary>
/// restitusice ultima chiamata REST registrata su REDIS
/// </summary>
@@ -186,8 +169,6 @@ namespace AppData
#region definizione classi impiegate con PROD
public static string PositionStatusDescr(object value)
{
string answ = "";
@@ -205,6 +186,12 @@ namespace AppData
case BatchPosition.StackDone:
answ = traduci("StackDone");
break;
case BatchPosition.Current:
answ = traduci("StackCurrent");
break;
case BatchPosition.Completed:
answ = traduci("StackCompleted");
break;
default:
break;
}
@@ -1629,7 +1616,12 @@ namespace AppData
// sostituisco
dictData.Remove(deviceId);
}
// salvo!
rawData = JsonConvert.SerializeObject(dictData);
memLayer.ML.setRSV($"{redKeyBase}:ItemsSel", rawData);
answ = true;
// reset memoria redis del CSS x obbligare refresh...
memLayer.ML.setRSV($"{redKeyBase}:Css", "");
}
catch
{ }
@@ -1704,6 +1696,163 @@ namespace AppData
return currCss;
}
/// <summary>
/// IP del device
/// </summary>
/// <returns></returns>
public static string GetIPAddress()
{
HttpContext context = HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
/// <summary>
/// Calcola area REDIS per MACCHINA
/// </summary>
/// <param name="SheetID"></param>
/// <returns></returns>
public static string machineArea(string machineCod)
{
string answ = memLayer.ML.redHash($"currMachineData:{machineCod}");
return answ;
}
/// <summary>
/// Recupera prossimo batch da DB (NEXT... da db x status... ok SOLO x singola macchina)
/// </summary>
protected int getNextBatch
{
get
{
int answ = 0;
try
{
var currData = DataLayer.man.taBL.getNextAvailable();
if (currData.Count > 0)
{
answ = currData[0].BatchID;
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// Recupera SHEET da batch e sstati permessi...
/// </summary>
/// <param name="BatchID"></param>
/// <param name="minVal"></param>
/// <param name="maxVal"></param>
/// <returns></returns>
protected int getSheetIdByBatch(int BatchID, int minVal, int maxVal)
{
int answ = 0;
try
{
var tabSheet = DataLayer.man.taSHL.getByMLStatus(BatchID, minVal, maxVal);
if (tabSheet.Count > 0)
{
answ = tabSheet[0].SheetID;
}
}
catch
{ }
return answ;
}
/// <summary>
/// Fornisce un dictionary di valori ATTUALI per una specifica macchina
/// </summary>
/// <param name="machineCod"></param>
/// <returns></returns>
public Dictionary<string, string> getCurrMachineData(string machineCod)
{
Dictionary<string, string> answ = new Dictionary<string, string>();
// cerco in REDIS
string rawData = memLayer.ML.getRSV(machineArea(machineCod));
if (!string.IsNullOrEmpty(rawData))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
}
else
{
// recupero batch e sheet...
int batchId = getNextBatch;
// se non trovo creo un oggetto NUOVO e vuoto x ogni oggetto... e salvo...
answ.Add("BatchID", batchId.ToString());
answ.Add("SheetID_load", getSheetIdByBatch(batchId, 0, 1).ToString());
answ.Add("SheetID_print", getSheetIdByBatch(batchId, 1, 2).ToString());
answ.Add("SheetID_work", getSheetIdByBatch(batchId, 2, 3).ToString());
answ.Add("SheetID_unload", getSheetIdByBatch(batchId, 3, 5).ToString());
// serializzo e salvo!
saveMachineData(machineCod, answ);
}
// restituisco!
return answ;
}
/// <summary>
/// Salvataggio array dati di una macchina
/// </summary>
/// <param name="machineCod"></param>
/// <param name="paramsArray"></param>
/// <returns></returns>
public bool saveMachineData(string machineCod, Dictionary<string, string> paramsArray)
{
bool answ = false;
try
{
// serializzo e salvo!
string rawData = JsonConvert.SerializeObject(paramsArray);
memLayer.ML.setRSV(machineArea(machineCod), rawData);
answ = true;
}
catch
{ }
// restituisco!
return answ;
}
/// <summary>
/// Fornisce un dictionary di valori ATTUALI per una specifica macchina
/// </summary>
/// <param name="machineCod"></param>
/// <param name="Key"></param>
/// <param name="Val"></param>
/// <returns></returns>
public bool saveMachineParam(string machineCod, string Key, string Val)
{
bool answ = false;
// recupero i dati
try
{
var currData = getCurrMachineData(machineCod);
// aggiorno il record
if (currData.ContainsKey(Key))
{
currData[Key] = Val;
}
// oppure aggiungo...
else
{
currData.Add(Key, Val);
}
// salvo...
saveMachineData(machineCod, currData);
answ = true;
}
catch
{ }
return answ;
}
#endregion
Vendored
+1 -1
View File
@@ -17,7 +17,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=211']) {
withEnv(['NEXT_BUILD_NUMBER=215']) {
// env.versionNumber = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.versionNumberBeta = VersionNumber(versionNumberString : '0.9.${BUILD_DATE_FORMATTED, "yyMM"}-beta.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
+1 -2
View File
@@ -440,7 +440,6 @@ namespace NKC_SDK
#endregion
#region classi per PROD
/// <summary>
@@ -609,5 +608,5 @@ namespace NKC_SDK
#endregion
}
+1 -1
View File
@@ -16,7 +16,7 @@
<Columns>
<asp:TemplateField HeaderText="Cod" SortExpression="BinDtmx">
<ItemTemplate>
<b><asp:Label ID="Label1" runat="server" Text='<%# Eval("BinDtmx") %>' CssClass='<%# getCssByRatio(getRatio(Eval("TotItemLoad"),Eval("TotItem"))) %>' /></b>
<b><asp:Label ID="Label1" runat="server" Text='<%# Eval("BinIndex","B{0}") %>' CssClass='<%# getCssByRatio(getRatio(Eval("TotItemLoad"),Eval("TotItem"))) %>' /></b>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="D/T" SortExpression="TotItem">
+1 -1
View File
@@ -16,7 +16,7 @@
<Columns>
<asp:TemplateField HeaderText="Cod" SortExpression="CartDtmx">
<ItemTemplate>
<b><asp:Label ID="Label1" runat="server" Text='<%# Eval("CartDtmx") %>' CssClass='<%# getCssByRatio(getRatio(Eval("TotItemLoad"),Eval("TotItem"))) %>' /></b>
<b><asp:Label ID="Label1" runat="server" Text='<%# Eval("CartIndex","C{0}") %>' CssClass='<%# getCssByRatio(getRatio(Eval("TotItemLoad"),Eval("TotItem"))) %>' /></b>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="D/T" SortExpression="TotItem">
+1 -1
View File
@@ -39,7 +39,7 @@
</asp:TemplateField>
<asp:TemplateField HeaderText="Activity" SortExpression="Position">
<ItemTemplate>
<asp:Label ID="lblPosition" runat="server" Text='<%# PStatus(Eval("Position")) %>' />
<asp:Label ID="lblPosition" runat="server" Text='<%# BatchPositionStatus(Eval("Position")) %>' />
</ItemTemplate>
<ItemStyle CssClass="text-right" />
</asp:TemplateField>
+4 -4
View File
@@ -12,7 +12,7 @@ namespace NKC_WF.WebUserControls
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
if (!Page.IsPostBack)
{
checkVisibility();
}
@@ -24,7 +24,7 @@ namespace NKC_WF.WebUserControls
grView.Visible = !divSelected.Visible;
// imposto css titolo...
string titleClass = "row font-weight-bold";
if(divSelected.Visible)
if (divSelected.Visible)
{
titleClass += " table-primary";
}
@@ -78,11 +78,11 @@ namespace NKC_WF.WebUserControls
return answ;
}
/// <summary>
/// Converte il codice POSITION in effettivo campo
/// Converte il codice POSITION di un BATCH in traduzione
/// </summary>
/// <param name="_status"></param>
/// <returns></returns>
public string PStatus(object _status)
public string BatchPositionStatus(object _status)
{
string answ = ComLib.PositionStatusDescr(_status);
return answ;
@@ -3,6 +3,9 @@
<%@ Register Src="~/WebUserControls/cmp_barcode.ascx" TagPrefix="uc1" TagName="cmp_barcode" %>
<div class="mx-0">
<asp:HiddenField ID="hfBatchID" runat="server" />
<asp:HiddenField ID="hfSheetID" runat="server" />
<asp:HiddenField ID="hfDeviceId" runat="server" />
<div class="card text-center" style="width: 100%;">
<h4 class="card-header bg-secondary text-light"><%: traduci("MachineUnloadSmart") %></h4>
<div class="card-body py-1">
+43 -32
View File
@@ -12,35 +12,33 @@ namespace NKC_WF.WebUserControls
/// <summary>
/// ID univoco da IP
/// </summary>
protected string deviceId = "AAA";
protected string DeviceId
{
set
{
hfDeviceId.Value = value;
}
get
{
return hfDeviceId.Value;
}
}
/// <summary>
/// Batch selezionato
/// </summary>
protected int BatchID;
/// <summary>
/// Sheet selezionato...
/// </summary>
protected int SheetID;
/// <summary>
/// IP del device
/// </summary>
/// <returns></returns>
protected string GetIPAddress()
protected int SheetID
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
set
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
hfSheetID.Value = value.ToString();
}
get
{
int answ = 0;
int.TryParse(hfSheetID.Value, out answ);
return answ;
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
protected string secOp
{
@@ -58,20 +56,34 @@ namespace NKC_WF.WebUserControls
/// </summary>
protected void updateCurrData()
{
//!!!FIXME!!! fare calcolo del VERO batch corrente...
BatchID = 242;
// FORSE 5/5?!?
var sheetList = DataLayer.man.taSHL.getByMLStatus(BatchID, 3, 5);
var sheetList = DataLayer.man.taSHL.getByMLStatus(BatchId, 3, 5);
if (sheetList.Count > 0)
{
SheetID = sheetList[0].SheetID;
}
DeviceId = ComLib.GetIPAddress().Replace(".", "0").Replace(":", "0");
}
/// <summary>
/// Batch corrente...
/// </summary>
public int BatchId
{
set
{
hfBatchID.Value = value.ToString();
}
get
{
int answ = 0;
int.TryParse(hfBatchID.Value, out answ);
return answ;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
deviceId = GetIPAddress().Replace(".", "_");
resetIcons();
updateCurrData();
}
@@ -143,7 +155,7 @@ namespace NKC_WF.WebUserControls
case codeType.UNK:
cmp_barcode.showOutput("text-danger", $"Unknown Data: {decoData.rawData} --> no action");
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
ComLib.resetItemPickup(SheetID, DeviceId);
doRaiseEv = true;
break;
case codeType.Item:
@@ -183,7 +195,7 @@ namespace NKC_WF.WebUserControls
default:
cmp_barcode.showOutput("text-danger", $"Unknown Data: {decoData.rawData} --> no action");
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
ComLib.resetItemPickup(SheetID, DeviceId);
break;
}
@@ -197,8 +209,7 @@ namespace NKC_WF.WebUserControls
{
// salvo in item sel...
updateCurrData();
deviceId = GetIPAddress().Replace(".", "0").Replace(":", "0");
ComLib.saveItemPickup(SheetID, deviceId, itemDtmx);
ComLib.saveItemPickup(SheetID, DeviceId, itemDtmx);
}
/// <summary>
@@ -257,7 +268,7 @@ namespace NKC_WF.WebUserControls
DataLayer.man.taIL.updateStatus(itemIdSelected, 4, "WRK001");
lblDestination.Text = $"Item {itemIdSelected} PUT IN CART {rawData}";
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
ComLib.resetItemPickup(SheetID, DeviceId);
}
}
break;
@@ -277,7 +288,7 @@ namespace NKC_WF.WebUserControls
DataLayer.man.taIL.updateStatus(itemIdSelected, 5, "WRK001");
lblDestination.Text = $"Item {itemIdSelected} PUT IN BIN {rawData}";
// elimino item sel...
ComLib.resetItemPickup(SheetID, deviceId);
ComLib.resetItemPickup(SheetID, DeviceId);
}
}
break;
+27
View File
@@ -14,6 +14,33 @@ namespace NKC_WF.WebUserControls
public partial class cmp_unloadSmart
{
/// <summary>
/// Controllo hfBatchID.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfBatchID;
/// <summary>
/// Controllo hfSheetID.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfSheetID;
/// <summary>
/// Controllo hfDeviceId.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfDeviceId;
/// <summary>
/// Controllo cmp_barcode.
/// </summary>
+1 -1
View File
@@ -27,7 +27,7 @@
<uc1:cmp_MU_carts runat="server" ID="cmp_MU_carts" />
</div>
</div>
<uc1:cmp_MU_suggestions runat="server" id="cmp_MU_suggestions" />
<uc1:cmp_MU_suggestions runat="server" id="cmp_MU_suggestions" Visible="false"/>
</div>
</div>
</div>
+1
View File
@@ -5,5 +5,6 @@
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<asp:HiddenField ID="hfBatchID" runat="server" />
<uc1:cmp_unloadSmart runat="server" ID="cmp_unloadSmart" />
</asp:Content>
+36 -1
View File
@@ -1,6 +1,41 @@
namespace NKC_WF
using System;
namespace NKC_WF
{
public partial class MachineUnloadSmart : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
doUpdate();
}
}
/// <summary>
/// Batch corrente...
/// </summary>
public int BatchId
{
set
{
hfBatchID.Value = value.ToString();
}
get
{
int answ = 0;
int.TryParse(hfBatchID.Value, out answ);
return answ;
}
}
/// <summary>
/// Aggiorna componente principale e child components
/// </summary>
private void doUpdate()
{
//!!!FIXME!!! fare calcolo del VERO batch corrente...
BatchId = 242; // fixed x test!
// aggiorno child
cmp_unloadSmart.BatchId = BatchId;
}
}
}
+25 -14
View File
@@ -7,18 +7,29 @@
// </generato automaticamente>
//------------------------------------------------------------------------------
namespace NKC_WF {
public partial class MachineUnloadSmart {
/// <summary>
/// Controllo cmp_unloadSmart.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::NKC_WF.WebUserControls.cmp_unloadSmart cmp_unloadSmart;
}
namespace NKC_WF
{
public partial class MachineUnloadSmart
{
/// <summary>
/// Controllo hfBatchID.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfBatchID;
/// <summary>
/// Controllo cmp_unloadSmart.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::NKC_WF.WebUserControls.cmp_unloadSmart cmp_unloadSmart;
}
}