Merge branch 'beta' into ADM
This commit is contained in:
Vendored
+1
-1
@@ -13,7 +13,7 @@ pipeline {
|
||||
steps {
|
||||
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
|
||||
script {
|
||||
withEnv(['NEXT_BUILD_NUMBER=1410']) {
|
||||
withEnv(['NEXT_BUILD_NUMBER=1411']) {
|
||||
// env.versionNumber = VersionNumber(versionNumberString : '6.13.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
|
||||
env.versionNumber = VersionNumber(versionNumberString : '6.13.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
|
||||
env.APP_NAME = 'MAPO'
|
||||
|
||||
@@ -280,6 +280,12 @@ namespace MP_IO.Controllers
|
||||
// aggiorno valore e data
|
||||
trovato.value = item.valore;
|
||||
trovato.lastRead = DateTime.Now;
|
||||
// se fosse un valore WRITE e mi ha dato un valore vuoto --> mando un fix x riscrittura
|
||||
if (trovato.writable && string.IsNullOrEmpty(item.valore))
|
||||
{
|
||||
taskType currTask = (taskType)Enum.Parse(typeof(taskType), trovato.uid);
|
||||
DataLayerObj.addCheckTask4Machine(id, currTask, item.valore);
|
||||
}
|
||||
}
|
||||
// altrimenti AGGIUNGO (READ ONLY)...
|
||||
else
|
||||
|
||||
+11
-23
@@ -4,31 +4,19 @@
|
||||
<%@ Register Src="~/WebUserControls/mod_sendParameters.ascx" TagPrefix="uc1" TagName="mod_sendParameters" %>
|
||||
<%@ Register Src="~/WebUserControls/mod_dettMacchina.ascx" TagPrefix="uc1" TagName="mod_dettMacchina" %>
|
||||
|
||||
|
||||
|
||||
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
|
||||
|
||||
<div class="container-flow m-3" role="main">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-8 col-lg-9 col-xl-10">
|
||||
<uc1:mod_dettMacchina runat="server" ID="mod_dettMacchina" />
|
||||
<uc1:mod_sendParameters runat="server" ID="mod_sendParameters" />
|
||||
<%--<div class="row textCondens">
|
||||
<div class="col-6">
|
||||
<asp:HyperLink runat="server" ID="hlScarti" NavigateUrl="~/Scarti" CssClass="btn btn-info btn-lg btn-block"><i class="fa fa-bug"></i> Reg. SCARTI</asp:HyperLink>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<asp:HyperLink runat="server" ID="hlControlli" NavigateUrl="~/Controlli" CssClass="btn btn-primary btn-lg btn-block"><i class="fa fa-wrench"></i> Reg.CONTROLLI</asp:HyperLink>
|
||||
</div>
|
||||
</div>--%>
|
||||
</div>
|
||||
<div class="col-12 col-md-4 col-lg-3 col-xl-2">
|
||||
<uc1:mod_directLinks runat="server" ID="mod_directLinks" />
|
||||
</div>
|
||||
<div class="container-flow m-3" role="main">
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-8 col-lg-9 col-xl-10">
|
||||
<uc1:mod_dettMacchina runat="server" ID="mod_dettMacchina" />
|
||||
<uc1:mod_sendParameters runat="server" ID="mod_sendParameters" />
|
||||
</div>
|
||||
<div class="col-12 col-md-4 col-lg-3 col-xl-2">
|
||||
<uc1:mod_directLinks runat="server" ID="mod_directLinks" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</asp:Content>
|
||||
</asp:Content>
|
||||
Generated
+32
-32
@@ -1,44 +1,44 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <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 MoonProTablet
|
||||
{
|
||||
|
||||
|
||||
public partial class SendParameters
|
||||
{
|
||||
public partial class SendParameters
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Controllo mod_dettMacchina.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_dettMacchina mod_dettMacchina;
|
||||
/// <summary>
|
||||
/// mod_dettMacchina control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_dettMacchina mod_dettMacchina;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo mod_sendParameters.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_sendParameters mod_sendParameters;
|
||||
/// <summary>
|
||||
/// mod_sendParameters control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_sendParameters mod_sendParameters;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo mod_directLinks.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_directLinks mod_directLinks;
|
||||
}
|
||||
/// <summary>
|
||||
/// mod_directLinks control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::MoonProTablet.WebUserControls.mod_directLinks mod_directLinks;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -857,6 +857,9 @@ namespace MoonProTablet.WebUserControls
|
||||
Response.Redirect("~/DettaglioMacchina.aspx");
|
||||
}
|
||||
}
|
||||
// invio task x end produzione...
|
||||
DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.endProd, "");
|
||||
|
||||
// resetto ODL su redis...
|
||||
DataLayerObj.emptyCurrODL(idxMacchinaFix);
|
||||
// reset ODL!...
|
||||
|
||||
@@ -13,10 +13,29 @@ namespace MoonProTablet.WebUserControls
|
||||
{
|
||||
public partial class mod_sendParameters : BaseUserControl
|
||||
{
|
||||
#region Protected Methods
|
||||
|
||||
protected void grView_RowEditing(object sender, GridViewEditEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
protected void grView_RowUpdating(object sender, GridViewUpdateEventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
protected void lbtReload_Click(object sender, EventArgs e)
|
||||
{
|
||||
grView.DataBind();
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// wrapper recupero parametri macchina
|
||||
/// </summary>
|
||||
@@ -53,38 +72,7 @@ namespace MoonProTablet.WebUserControls
|
||||
DataLayerObj.updateMachineParameter(idxMacchina, Original_uid, reqValue);
|
||||
}
|
||||
}
|
||||
protected void lbtReload_Click(object sender, EventArgs e)
|
||||
{
|
||||
grView.DataBind();
|
||||
}
|
||||
|
||||
protected void grView_RowUpdating(object sender, GridViewUpdateEventArgs e)
|
||||
{
|
||||
#if false
|
||||
var txtReqVal = grView.Rows[e.RowIndex].FindControl("txtReqValue") as TextBox;
|
||||
string Original_uid = e.Keys[0].ToString();
|
||||
// recupero items...
|
||||
List<objItem> dcList = DataLayer.getCurrObjItems(idxMacchina);
|
||||
// cerco quello da aggiornare
|
||||
objItem trovato = dcList.Find(obj => obj.uid == Original_uid);
|
||||
List<objItem> list2Update = new List<objItem>();
|
||||
// se trovato procedo
|
||||
if (trovato != null)
|
||||
{
|
||||
// aggiorno valore richiesto + dt richiesta
|
||||
trovato.reqValue = txtReqVal.Text.Trim();
|
||||
trovato.lastRequest = DateTime.Now;
|
||||
list2Update.Add(trovato);
|
||||
DataLayer.upsertCurrObjItems(idxMacchina, list2Update);
|
||||
// accodo in task 2 exe la richiesta di processing
|
||||
DataLayer.addTask4Machine(idxMacchina, taskType.setParameter, trovato.uid);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
protected void grView_RowEditing(object sender, GridViewEditEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
+107
-57
@@ -786,6 +786,16 @@ namespace MapoDb
|
||||
return mHash(string.Format("PzCount:{0}", idxMacchina));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hash dati SAVED (EXE) TASK x la macchina specificata x poter ripristinare in caso di perdita valore WRITE
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <returns></returns>
|
||||
public static string savedTaskHash(string idxMacchina)
|
||||
{
|
||||
return mHash(string.Format("SavedTask:{0}", idxMacchina));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hash dati STATUS x la macchina specificata.
|
||||
/// - dati ODL
|
||||
@@ -809,6 +819,41 @@ namespace MapoDb
|
||||
return mHash($"VetoOdlMacc:{idxMacchina}");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// verifica se sia da reinviare un task alla macchina dall'elenco di quelli salvati (in modalità upsert) se non scaduti
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <param name="taskKey"></param>
|
||||
/// <param name="taskVal"></param>
|
||||
/// <returns></returns>
|
||||
public bool addCheckTask4Machine(string idxMacchina, taskType taskKey, string taskVal)
|
||||
{
|
||||
bool answ = false;
|
||||
string currHash = exeTaskHash(idxMacchina);
|
||||
logger.lg.scriviLog($"addCheckTask4Machine idxMacchina: {idxMacchina} | taskKey: {taskKey} | taskVal: {taskVal}");
|
||||
try
|
||||
{
|
||||
Dictionary<string, string> savedTask = mSavedTaskMacchina(idxMacchina);
|
||||
// cerco valore saved
|
||||
string savedVal = savedTask[taskKey.ToString()];
|
||||
// se ho un valore != "" --> rimetto in coda di invio...
|
||||
if (!string.IsNullOrEmpty(savedVal) && (savedVal != taskVal))
|
||||
{
|
||||
// leggo task attuali...
|
||||
Dictionary<string, string> currTask = mTaskMacchina(idxMacchina);
|
||||
// rimetto in task da eseguire...
|
||||
currTask[taskKey.ToString()] = savedVal;
|
||||
answ = memLayer.ML.redSaveHashDict(currHash, currTask);
|
||||
logger.lg.scriviLog($"re-issued task4machine: idxMacchina: {idxMacchina} | taskKey: {taskKey} | savedVal: {savedVal}");
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
// chiamo update come task di scrittura
|
||||
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Aggiunge un PARAMETRO OPZIONALE all'elenco di quelli salvati (in modalità upsert)
|
||||
/// </summary>
|
||||
@@ -842,15 +887,40 @@ namespace MapoDb
|
||||
{
|
||||
bool answ = false;
|
||||
string currHash = exeTaskHash(idxMacchina);
|
||||
string currSavedParHash = savedTaskHash(idxMacchina);
|
||||
Dictionary<string, string> currTask = new Dictionary<string, string>();
|
||||
Dictionary<string, string> savedTask = new Dictionary<string, string>();
|
||||
try
|
||||
{
|
||||
// leggo task attuali...
|
||||
var currTask = mTaskMacchina(idxMacchina);
|
||||
currTask = mTaskMacchina(idxMacchina);
|
||||
currTask[taskKey.ToString()] = taskVal;
|
||||
answ = memLayer.ML.redSaveHashDict(currHash, currTask);
|
||||
logger.lg.scriviLog($"Task ADD - idxMacchina: {idxMacchina} | taskKey: {taskKey.ToString()} | taskVal: {taskVal}");
|
||||
logger.lg.scriviLog($"Task ADD - idxMacchina: {idxMacchina} | taskKey: {taskKey} | taskVal: {taskVal}");
|
||||
}
|
||||
catch { }
|
||||
// verifico in base al tipo di task se fare backup...
|
||||
switch (taskKey)
|
||||
{
|
||||
case taskType.setArt:
|
||||
case taskType.setComm:
|
||||
case taskType.setPzComm:
|
||||
case taskType.setProg:
|
||||
// leggo task SALVATI attuali...
|
||||
savedTask = mSavedTaskMacchina(idxMacchina);
|
||||
savedTask[taskKey.ToString()] = taskVal;
|
||||
answ = memLayer.ML.redSaveHashDict(currSavedParHash, savedTask);
|
||||
break;
|
||||
|
||||
case taskType.endProd:
|
||||
// salvo un DICT vuoto x resettare
|
||||
savedTask = new Dictionary<string, string>();
|
||||
answ = memLayer.ML.redSaveHashDict(currSavedParHash, savedTask);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
@@ -1931,6 +2001,28 @@ namespace MapoDb
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restitusice elenco KVP dei TASK SALVATI (da passare a IOB-WIN) per l'impianto indicato
|
||||
/// </summary>
|
||||
/// <param name="idxMacchina"></param>
|
||||
/// <returns></returns>
|
||||
public Dictionary<string, string> mSavedTaskMacchina(string idxMacchina)
|
||||
{
|
||||
// hard coded dimensione vettore DatiMacchine
|
||||
Dictionary<string, string> answ = new Dictionary<string, string>();
|
||||
// ORA recupero da memoria redis...
|
||||
try
|
||||
{
|
||||
string currHash = savedTaskHash(idxMacchina);
|
||||
answ = memLayer.ML.redGetHashDict(currHash);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore in recupero dati SAVED TASK x Redis mSavedTaskMacchina - idxMacchina {2}:{0}{1}", Environment.NewLine, exc, idxMacchina));
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restitusice elenco KVP
|
||||
/// key: IdxMacchina
|
||||
@@ -2010,7 +2102,7 @@ namespace MapoDb
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore in compilazione dati EXE TASK x Redis - idxMacchina {2}:{0}{1}", Environment.NewLine, exc, idxMacchina));
|
||||
logger.lg.scriviLog(string.Format("Errore in recupero dati EXE TASK x Redis mTaskMacchina - idxMacchina {2}:{0}{1}", Environment.NewLine, exc, idxMacchina));
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
@@ -3333,6 +3425,17 @@ namespace MapoDb
|
||||
{
|
||||
string serVal = JsonConvert.SerializeObject(currValues);
|
||||
memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
|
||||
|
||||
// controllo se ha valori write...
|
||||
foreach (var item in currValues)
|
||||
{
|
||||
// se fosse un valore WRITE e mi ha dato un valore vuoto --> mando un fix x riscrittura
|
||||
if (item.writable && string.IsNullOrEmpty(item.value))
|
||||
{
|
||||
taskType currTask = (taskType)Enum.Parse(typeof(taskType), item.uid);
|
||||
addCheckTask4Machine(idxMacchina, currTask, item.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
@@ -3467,57 +3570,4 @@ namespace MapoDb
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
|
||||
/// <summary>
|
||||
/// Elenco task ammessi (x IOB-WIN da eseguire...)
|
||||
/// </summary>
|
||||
public enum taskType {
|
||||
/// <summary>
|
||||
/// Task nullo / fake
|
||||
/// </summary>
|
||||
nihil,
|
||||
/// <summary>
|
||||
/// Rimanda a PLC eventuale segnale NON in setup (MA NON RESETTA)
|
||||
/// </summary>
|
||||
fixStopSetup,
|
||||
/// <summary>
|
||||
/// Indica al PLC di forzare il reset del contapezzi
|
||||
/// </summary>
|
||||
forceResetPzCount,
|
||||
/// <summary>
|
||||
/// Indica al PLC di forzare il NUOVO valore di contapezzi (impostato come value)
|
||||
/// </summary>
|
||||
forceSetPzCount,
|
||||
/// <summary>
|
||||
/// Imposta Articolo su PLC
|
||||
/// </summary>
|
||||
setArt,
|
||||
/// <summary>
|
||||
/// Imposta Commessa su PLC
|
||||
/// </summary>
|
||||
setComm,
|
||||
/// <summary>
|
||||
/// Set Programma CNC su PLC
|
||||
/// </summary>
|
||||
setProg,
|
||||
/// <summary>
|
||||
/// Indica al PLC iniziato setup (e secondo casi ferma contapezzi /resetta)
|
||||
/// </summary>
|
||||
startSetup,
|
||||
/// <summary>
|
||||
/// Indica al PLC finito setup (e secondo casi ferma contapezzi /resetta)
|
||||
/// </summary>
|
||||
stopSetup,
|
||||
/// <summary>
|
||||
/// Richiesta invio watchdog a PLC
|
||||
/// </summary>
|
||||
sendWatchDogMes2Plc
|
||||
}
|
||||
public enum tipoSelettore {
|
||||
articoli
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
+6
-1
@@ -173,7 +173,12 @@
|
||||
/// <summary>
|
||||
/// Richiesta invio watchdog a PLC
|
||||
/// </summary>
|
||||
sendWatchDogMes2Plc
|
||||
sendWatchDogMes2Plc,
|
||||
|
||||
/// <summary>
|
||||
/// Indica che è FINITA la produzione (e quindi cancello dati backup)
|
||||
/// </summary>
|
||||
endProd,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user