ProductionUiCOrdonel: - generic requirement check

This commit is contained in:
Thomas Wiedebusch
2025-06-18 13:04:32 +02:00
parent 0b683319c5
commit c25391ab10
3 changed files with 121 additions and 83 deletions
@@ -647,6 +647,9 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.EolPr
/// <remarks date="2025-Jan-21" author="Thomas Wiedebusch">
/// - New IsSpecialApproved and IsStandardApproved.
/// </remarks>
/// <remarks date="2025-Jun-18" author="Thomas Wiedebusch">
/// - Modified for generic checks.
/// </remarks>
private EOLStatus CheckRequirements(out String feedbackMsg)
{
feedbackMsg = "";
@@ -658,26 +661,9 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.EolPr
return EOLStatus.FAIL;
}
// Check if requirement is active (free for production) and approved by a second person. Priority special
// requirement.
var isSpecialActive = false;
var isStandardActive = false;
if (ProductionRequirements.IsSpecialActive != null && (Boolean)ProductionRequirements.IsSpecialActive &&
ProductionRequirements.IsSpecialApproved != null && (Boolean)ProductionRequirements.IsSpecialApproved)
isSpecialActive = true;
if (ProductionRequirements.IsStandardActive != null && (Boolean)ProductionRequirements.IsStandardActive &&
ProductionRequirements.IsStandardApproved != null && (Boolean)ProductionRequirements.IsStandardApproved)
isStandardActive = true;
// At least one requirement needs to be active and a requirement number and version has to be set
if ((!isStandardActive && !isSpecialActive) ||
// The standard Id and version have always to be set even if the special is active
ProductionRequirements.StandardId == null || ProductionRequirements.StandardVersion == null ||
// If the special is active the version and Id have to be defined
(isSpecialActive && (ProductionRequirements.SpecialId == null ||
ProductionRequirements.SpecialVersion == null)))
var statusReturn = GenericChecks.CheckRequirements(ProductionRequirements, out feedbackMsg);
if (StatusReturn.Failed == statusReturn)
{
feedbackMsg = Resources.StrErrorMsgRequirementInactive;
EolProgress.RequirementRequestChecked = EOLStatus.FAIL;
}
else
@@ -689,14 +675,6 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.EolPr
EolProgress.SpecialRequirementId = ProductionRequirements.SpecialId;
EolProgress.SpecialRequirementVersion = ProductionRequirements.SpecialVersion;
feedbackMsg = isSpecialActive &&
ProductionRequirements.SpecialId != null &&
ProductionRequirements.SpecialVersion != null ?
Resources.StrWarningMsgSpecialRequirementActive +
$" Id.Ver: {ProductionRequirements.SpecialId}.{ProductionRequirements.SpecialVersion}" :
Resources.StrSuccessMsgRequirementActive +
$" Id.Ver {ProductionRequirements.StandardId}.{ProductionRequirements.StandardVersion}";
EolProgress.RequirementRequestChecked = EOLStatus.OK;
}
@@ -3,6 +3,7 @@ using Logic.ProductionToProductMapper.Files.Fw;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using Newtonsoft.Json;
using Xylem.Common.CommonCore.Configuration;
using Xylem.Common.CommonCore.Consts;
@@ -18,6 +19,65 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Gener
{
internal static class GenericChecks
{
/// <summary>
/// Check for requirement permission special or standard or none:
/// - If the special requirement is active all fields a filled with the according values from this "special"
/// requirement,
/// - Else those fields contain the "standard" requirements!
///
/// Software Requirement Specification:
/// [SRS_TBF_PICK_PP_CHECK_PROD_STATE_001]_Check_Requirements
///
/// </summary>
/// <param name="productionRequirements"></param>
/// <param name="feedbackMsg"></param>
/// <returns></returns>
/// <remarks date="2025-Mai-15" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
public static StatusReturn CheckRequirements(CordonelRequirements productionRequirements, out String feedbackMsg)
{
feedbackMsg = "";
if (productionRequirements == null)
{
feedbackMsg = Resources.StrErrorMsgProductionRequirements;
return StatusReturn.Failed;
}
// Check if requirement is active (free for production) and approved by a second person. Priority special
// requirement.
var isSpecialActive = false;
var isStandardActive = false;
if (productionRequirements.IsSpecialActive != null && (Boolean)productionRequirements.IsSpecialActive &&
productionRequirements.IsSpecialApproved != null && (Boolean)productionRequirements.IsSpecialApproved)
isSpecialActive = true;
if (productionRequirements.IsStandardActive != null && (Boolean)productionRequirements.IsStandardActive &&
productionRequirements.IsStandardApproved != null && (Boolean)productionRequirements.IsStandardApproved)
isStandardActive = true;
// At least one requirement needs to be active and a requirement number and version has to be set
if ((!isStandardActive && !isSpecialActive) ||
// The standard Id and version have always to be set even if the special is active
productionRequirements.StandardId == null || productionRequirements.StandardVersion == null ||
// If the special is active the version and Id have to be defined
(isSpecialActive && (productionRequirements.SpecialId == null ||
productionRequirements.SpecialVersion == null)))
{
feedbackMsg = Resources.StrErrorMsgRequirementInactive;
return StatusReturn.Failed;
}
feedbackMsg = isSpecialActive &&
productionRequirements.SpecialId != null &&
productionRequirements.SpecialVersion != null ?
Resources.StrWarningMsgSpecialRequirementActive +
$" Id.Ver: {productionRequirements.SpecialId}.{productionRequirements.SpecialVersion}" :
Resources.StrSuccessMsgRequirementActive +
$" Id.Ver {productionRequirements.StandardId}.{productionRequirements.StandardVersion}";
return StatusReturn.Okay;
}
/// <summary>
/// Check the measurements from Kitron for this specific Cordonel if it is an EMEA region.
/// </summary>
@@ -61,7 +121,7 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Gener
return StatusReturn.Failed;
}
feedbackMsg = Resources.StrSuccessMsgRadioSignalLevels + ". " + meterInfo;
feedbackMsg = Resources.StrSuccessMsgRadioSignalLevels + " - " + meterInfo;
return StatusReturn.Okay;
}
@@ -154,14 +154,14 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Picki
/// - Remaining run time in years,
/// </summary>
/// <returns></returns>
/// <remarks date="2025-Mai-15" author="Roland Drahbesh">
/// <remarks date="2025-Jun-18" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
public override StatusReturn ExecuteProcess()
{
#region ----------------------------------- Check Requirements --------------------------------------------
var statusReturn = CheckRequirements(out var feedbackMsg);
var statusReturn = GenericChecks.CheckRequirements(ProductionRequirements, out var feedbackMsg);
if (StatusReturn.Failed == statusReturn)
{
ErrorMsgDispatcher(feedbackMsg);
@@ -337,64 +337,64 @@ namespace Xylem.Common.Production.ProductionUiCordonel.ProductionProcesses.Picki
return StatusReturn.Failed;
}
/// <summary>
/// Check for requirement permission special or standard or none:
/// - If the special requirement is active all fields a filled with the according values from this "special"
/// requirement,
/// - Else those fields contain the "standard" requirements!
///
/// Software Requirement Specification:
/// [SRS_TBF_PICK_PP_CHECK_PROD_STATE_001]_Check_Requirements
///
/// </summary>
/// <param name="feedbackMsg"></param>
/// <returns></returns>
/// <remarks date="2025-Mai-15" author="Thomas Wiedebusch">
/// - Initial.
/// </remarks>
private StatusReturn CheckRequirements(out String feedbackMsg)
{
feedbackMsg = "";
if (ProductionRequirements == null)
{
feedbackMsg = Resources.StrErrorMsgProductionRequirements;
return StatusReturn.Failed;
}
///// <summary>
///// Check for requirement permission special or standard or none:
///// - If the special requirement is active all fields a filled with the according values from this "special"
///// requirement,
///// - Else those fields contain the "standard" requirements!
/////
///// Software Requirement Specification:
///// [SRS_TBF_PICK_PP_CHECK_PROD_STATE_001]_Check_Requirements
/////
///// </summary>
///// <param name="feedbackMsg"></param>
///// <returns></returns>
///// <remarks date="2025-Mai-15" author="Thomas Wiedebusch">
///// - Initial.
///// </remarks>
//private StatusReturn CheckRequirements(out String feedbackMsg)
//{
// feedbackMsg = "";
// if (ProductionRequirements == null)
// {
// feedbackMsg = Resources.StrErrorMsgProductionRequirements;
// return StatusReturn.Failed;
// }
// Check if requirement is active (free for production) and approved by a second person. Priority special
// requirement.
var isSpecialActive = false;
var isStandardActive = false;
if (ProductionRequirements.IsSpecialActive != null && (Boolean)ProductionRequirements.IsSpecialActive &&
ProductionRequirements.IsSpecialApproved != null && (Boolean)ProductionRequirements.IsSpecialApproved)
isSpecialActive = true;
if (ProductionRequirements.IsStandardActive != null && (Boolean)ProductionRequirements.IsStandardActive &&
ProductionRequirements.IsStandardApproved != null && (Boolean)ProductionRequirements.IsStandardApproved)
isStandardActive = true;
// // Check if requirement is active (free for production) and approved by a second person. Priority special
// // requirement.
// var isSpecialActive = false;
// var isStandardActive = false;
// if (ProductionRequirements.IsSpecialActive != null && (Boolean)ProductionRequirements.IsSpecialActive &&
// ProductionRequirements.IsSpecialApproved != null && (Boolean)ProductionRequirements.IsSpecialApproved)
// isSpecialActive = true;
// if (ProductionRequirements.IsStandardActive != null && (Boolean)ProductionRequirements.IsStandardActive &&
// ProductionRequirements.IsStandardApproved != null && (Boolean)ProductionRequirements.IsStandardApproved)
// isStandardActive = true;
// At least one requirement needs to be active and a requirement number and version has to be set
if ((!isStandardActive && !isSpecialActive) ||
// The standard Id and version have always to be set even if the special is active
ProductionRequirements.StandardId == null || ProductionRequirements.StandardVersion == null ||
// If the special is active the version and Id have to be defined
(isSpecialActive && (ProductionRequirements.SpecialId == null ||
ProductionRequirements.SpecialVersion == null)))
{
feedbackMsg = Resources.StrErrorMsgRequirementInactive;
return StatusReturn.Failed;
}
// // At least one requirement needs to be active and a requirement number and version has to be set
// if ((!isStandardActive && !isSpecialActive) ||
// // The standard Id and version have always to be set even if the special is active
// ProductionRequirements.StandardId == null || ProductionRequirements.StandardVersion == null ||
// // If the special is active the version and Id have to be defined
// (isSpecialActive && (ProductionRequirements.SpecialId == null ||
// ProductionRequirements.SpecialVersion == null)))
// {
// feedbackMsg = Resources.StrErrorMsgRequirementInactive;
// return StatusReturn.Failed;
// }
feedbackMsg = isSpecialActive &&
ProductionRequirements.SpecialId != null &&
ProductionRequirements.SpecialVersion != null ?
Resources.StrWarningMsgSpecialRequirementActive +
$" Id.Ver: {ProductionRequirements.SpecialId}.{ProductionRequirements.SpecialVersion}" :
Resources.StrSuccessMsgRequirementActive +
$" Id.Ver {ProductionRequirements.StandardId}.{ProductionRequirements.StandardVersion}";
// feedbackMsg = isSpecialActive &&
// ProductionRequirements.SpecialId != null &&
// ProductionRequirements.SpecialVersion != null ?
// Resources.StrWarningMsgSpecialRequirementActive +
// $" Id.Ver: {ProductionRequirements.SpecialId}.{ProductionRequirements.SpecialVersion}" :
// Resources.StrSuccessMsgRequirementActive +
// $" Id.Ver {ProductionRequirements.StandardId}.{ProductionRequirements.StandardVersion}";
return StatusReturn.Okay;
}
// return StatusReturn.Okay;
//}
/// <summary>
/// Check production order number between meter and requirements.