26ff8d9b4f
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
482 lines
18 KiB
Plaintext
Executable File
482 lines
18 KiB
Plaintext
Executable File
<#@ template language="C#" #>
|
|
<#@ assembly name="System.Core" #>
|
|
<#@ import namespace="System.Linq" #>
|
|
<#@ import namespace="System.Text" #>
|
|
<#@ import namespace="System.Collections.Generic" #>
|
|
<#@ import namespace="WorkerService.Models.Reporting" #>
|
|
<#@ import namespace="WorkerService.Helpers" #>
|
|
--Setup flagged work order temp table
|
|
IF OBJECT_ID('tempdb.dbo.#Temp_WO', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #Temp_WO;
|
|
END
|
|
CREATE TABLE #Temp_WO (
|
|
WorkOrderNumber BIGINT NOT NULL,
|
|
LotNumber VARCHAR(30) NULL,
|
|
BranchCode VARCHAR(12) NULL,
|
|
ShortItemNumber BIGINT NOT NULL,
|
|
ManuallySpecified BIT NOT NULL DEFAULT 0,
|
|
SplitOrder BIT NOT NULL DEFAULT 0,
|
|
CARDEX BIT NOT NULL DEFAULT 0,
|
|
PartsList BIT NOT NULL DEFAULT 0,
|
|
Flagged BIT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY CLUSTERED(WorkOrderNumber)
|
|
);
|
|
CREATE INDEX TIX_Temp_WO_Lookup ON #Temp_WO(LotNumber, BranchCode, ShortItemNumber);
|
|
<# if(Model.WorkOrderFilterEnabled) { #>
|
|
|
|
--Add manually specified work order numbers to flagged list
|
|
WITH WOP_CTE AS(
|
|
SELECT DISTINCT wo.WorkOrderNumber,
|
|
wo.LotNumber,
|
|
wo.BranchCode,
|
|
wo.ShortItemNumber
|
|
FROM dbo.WorkOrder AS wo INNER JOIN
|
|
@p_WorkOrderFilter AS pwof ON (wo.WorkOrderNumber = pwof.WorkOrderNumber)
|
|
)
|
|
MERGE #Temp_WO AS TARGET
|
|
USING WOP_CTE AS SOURCE
|
|
ON (TARGET.WorkOrderNumber = SOURCE.WorkOrderNumber)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET TARGET.ManuallySpecified = 1
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT(WorkOrderNumber, LotNumber, BranchCode, ShortItemNumber, ManuallySpecified)
|
|
VALUES(SOURCE.WorkOrderNumber, SOURCE.LotNumber, SOURCE.BranchCode, SOURCE.ShortItemNumber, 1);
|
|
|
|
<#@ include file="SplitWorkOrderQuery.txt" #>
|
|
<# } #>
|
|
<# if(Model.ItemNumberFilterEnabled) { #>
|
|
|
|
--Setup item number filter temp table
|
|
IF OBJECT_ID('tempdb.dbo.#P_ItemNumbers', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #P_ItemNumbers;
|
|
END
|
|
CREATE TABLE #P_ItemNumbers (
|
|
ItemNumber VARCHAR(25) NOT NULL,
|
|
PRIMARY KEY CLUSTERED(ItemNumber)
|
|
);
|
|
|
|
INSERT INTO #P_ItemNumbers(ItemNumber)
|
|
SELECT DISTINCT LTRIM(RTRIM(pinf.ItemNumber))
|
|
FROM @p_ItemNumberFilter AS pinf
|
|
WHERE LTRIM(RTRIM(pinf.ItemNumber)) IS NOT NULL;
|
|
<# } #>
|
|
<# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #>
|
|
|
|
--Setup profit center / work center filter temp table
|
|
IF OBJECT_ID('tempdb.dbo.#P_WorkCenters', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #P_WorkCenters;
|
|
END
|
|
CREATE TABLE #P_WorkCenters (
|
|
Code VARCHAR(12) NOT NULL,
|
|
PRIMARY KEY CLUSTERED(Code)
|
|
);
|
|
<# } #>
|
|
<# if(Model.ProfitCenterFilterEnabled) { #>
|
|
WITH WCF_CTE AS(
|
|
SELECT LTRIM(RTRIM(oh.WorkCenterCode)) AS Code
|
|
FROM @p_ProfitCenterFilter AS ppcf INNER JOIN
|
|
dbo.OrgHierarchy AS oh ON (LTRIM(RTRIM(ppcf.Code)) = oh.ProfitCenterCode)
|
|
)
|
|
MERGE INTO #P_WorkCenters AS TARGET
|
|
USING WCF_CTE AS SOURCE
|
|
ON (TARGET.Code = SOURCE.Code)
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT(Code)
|
|
VALUES(SOURCE.Code);
|
|
<# } #>
|
|
<# if(Model.WorkCenterFilterEnabled) { #>
|
|
WITH WCF_CTE AS(
|
|
SELECT DISTINCT pwcf.Code
|
|
FROM @p_WorkCenterFilter AS pwcf
|
|
WHERE LTRIM(RTRIM(pwcf.Code)) IS NOT NULL
|
|
)
|
|
MERGE INTO #P_WorkCenters AS TARGET
|
|
USING WCF_CTE AS SOURCE
|
|
ON (TARGET.Code = SOURCE.Code)
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT(Code)
|
|
VALUES(SOURCE.Code);
|
|
<# } #>
|
|
<# if(Model.ComponentLotFilterEnabled) { #>
|
|
|
|
--Add downstream product for manually specified component lots
|
|
WITH CLN_CTE AS(
|
|
SELECT DISTINCT l.LotNumber,
|
|
l.ShortItemNumber,
|
|
l.BranchCode
|
|
FROM @p_ComponentLotFilter AS pclf INNER JOIN
|
|
dbo.Lot AS l ON (LTRIM(RTRIM(pclf.ComponentLotNumber)) = l.LotNumber AND LTRIM(RTRIM(pclf.ItemNumber)) = l.ItemNumber)
|
|
),
|
|
CLN_WO AS(
|
|
SELECT wo.WorkOrderNumber,
|
|
wo.BranchCode,
|
|
wo.LotNumber,
|
|
wo.ShortItemNumber
|
|
FROM CLN_CTE cln INNER JOIN
|
|
dbo.WorkOrderComponent AS woc ON (cln.LotNumber = woc.LotNumber AND cln.ShortItemNumber = woc.ShortItemNumber AND cln.BranchCode = woc.BranchCode) INNER JOIN
|
|
dbo.WorkOrder AS wo ON (woc.WorkOrderNumber = wo.WorkOrderNumber)
|
|
UNION ALL
|
|
SELECT wo.WorkOrderNumber,
|
|
wo.BranchCode,
|
|
wo.LotNumber,
|
|
wo.ShortItemNumber
|
|
FROM CLN_CTE cln INNER JOIN
|
|
dbo.LotUsage AS lu ON(cln.LotNumber = lu.LotNumber AND cln.ShortItemNumber = lu.ShortItemNumber AND cln.BranchCode = lu.BranchCode) INNER JOIN
|
|
dbo.WorkOrder AS wo ON(lu.WorkOrderNumber = wo.WorkOrderNumber)
|
|
),
|
|
CLN_FILTERED_WO AS(
|
|
SELECT DISTINCT cln.WorkOrderNumber,
|
|
cln.BranchCode,
|
|
cln.LotNumber,
|
|
cln.ShortItemNumber
|
|
FROM CLN_WO cln
|
|
)
|
|
MERGE INTO #Temp_WO AS TARGET
|
|
USING CLN_FILTERED_WO AS SOURCE
|
|
ON (TARGET.WorkOrderNumber = SOURCE.WorkOrderNumber AND TARGET.BranchCode = SOURCE.BranchCode)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET TARGET.CARDEX = 1
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT (WorkOrderNumber, LotNumber, BranchCode, ShortItemNumber, CARDEX)
|
|
VALUES (SOURCE.WorkOrderNumber, COALESCE(SOURCE.LotNumber, CAST(SOURCE.WorkOrderNumber AS VARCHAR(8))), SOURCE.BranchCode, SOURCE.ShortItemNumber, 1);
|
|
<#@ include file="SplitWorkOrderQuery.txt" #>
|
|
<# } #>
|
|
<# if(Model.OperatorFilterEnabled) { #>
|
|
|
|
--Setup operator filter temp table
|
|
IF OBJECT_ID('tempdb.dbo.#P_OperatorIDs', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #P_OperatorIDs;
|
|
END
|
|
CREATE TABLE #P_OperatorIDs(
|
|
AddressNumber BIGINT NOT NULL,
|
|
UserID VARCHAR(10) NULL,
|
|
PRIMARY KEY CLUSTERED(AddressNumber)
|
|
);
|
|
|
|
WITH O_CTE AS(
|
|
SELECT ju.AddressNumber,
|
|
ju.UserID,
|
|
ROW_NUMBER() OVER(PARTITION BY ju.AddressNumber ORDER BY ju.UserID DESC) RN
|
|
FROM @p_OperatorFilter AS pof INNER JOIN
|
|
dbo.JdeUser AS ju ON (LTRIM(RTRIM(pof.UserName)) = ju.UserID)
|
|
)
|
|
INSERT INTO #P_OperatorIDs(AddressNumber, UserID)
|
|
SELECT o.AddressNumber,
|
|
o.UserID
|
|
FROM O_CTE o
|
|
WHERE o.RN = 1;
|
|
<# } #>
|
|
<# if(Model.ItemOperationMisFilterEnabled) { #>
|
|
|
|
--Setup item/operation/mis filter temp table
|
|
IF OBJECT_ID('tempdb.dbo.#P_PartOperations', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #P_PartOperations;
|
|
END
|
|
CREATE TABLE #P_PartOperations(
|
|
ItemNumber VARCHAR(32) NOT NULL,
|
|
OperationNumber VARCHAR(32) NOT NULL,
|
|
MisNumber VARCHAR(32) NOT NULL,
|
|
MisRevision VARCHAR(32) NOT NULL,
|
|
PRIMARY KEY CLUSTERED(ItemNumber,OperationNumber, MisNumber, MisRevision)
|
|
);
|
|
|
|
INSERT INTO #P_PartOperations(ItemNumber, OperationNumber, MisNumber, MisRevision)
|
|
SELECT DISTINCT LTRIM(RTRIM(piomf.ItemNumber)),
|
|
LTRIM(RTRIM(piomf.OperationNumber)),
|
|
LTRIM(RTRIM(piomf.MisNumber)),
|
|
LTRIM(RTRIM(piomf.MisRevision))
|
|
FROM @p_ItemOperationMisFilter AS piomf
|
|
WHERE LTRIM(RTRIM(piomf.ItemNumber)) IS NOT NULL AND
|
|
LTRIM(RTRIM(piomf.OperationNumber)) IS NOT NULL AND
|
|
LTRIM(RTRIM(piomf.MisNumber)) IS NOT NULL AND
|
|
LTRIM(RTRIM(piomf.MisRevision)) IS NOT NULL;
|
|
<# } #>
|
|
<# if(Model.ExtractMisData) { #>
|
|
IF OBJECT_ID('tempdb.dbo.#TempMisData', 'U') IS NOT NULL
|
|
BEGIN
|
|
DROP TABLE #TempMisData;
|
|
END
|
|
CREATE TABLE #TempMisData (
|
|
WorkOrderNumber BIGINT,
|
|
ItemNumber VARCHAR(25),
|
|
ItemDescription VARCHAR(30),
|
|
BranchCode VARCHAR(12),
|
|
WorkCenterCode VARCHAR(12),
|
|
StepTimestamp DATETIME,
|
|
SequenceNumber DECIMAL(7, 2),
|
|
FunctionCode VARCHAR(15),
|
|
FunctionOperationDescription VARCHAR(80),
|
|
MatchedSequenceNumber DECIMAL(7, 2),
|
|
RoutingMatch BIT,
|
|
MasterMatch BIT,
|
|
MisNumber VARCHAR(32),
|
|
RevID VARCHAR(32),
|
|
CharNumber VARCHAR(32),
|
|
MisSequenceNumber VARCHAR(32),
|
|
TestDescription VARCHAR(2000),
|
|
SamplingType VARCHAR(32),
|
|
SamplingValue VARCHAR(32),
|
|
ToolsGauges VARCHAR(2000),
|
|
WorkInstructions VARCHAR(2000),
|
|
Status VARCHAR(32),
|
|
ReleaseDate DATETIME
|
|
);
|
|
<# } #>
|
|
<# if(Model.ShouldSearchSteps()) { #>
|
|
|
|
--Query data
|
|
WITH LU_WO AS(
|
|
SELECT DISTINCT
|
|
step.WorkOrderNumber,
|
|
step.LotNumber,
|
|
step.BranchCode,
|
|
step.ShortItemNumber
|
|
FROM (
|
|
SELECT DISTINCT
|
|
wo.WorkOrderNumber,
|
|
COALESCE(wo.LotNumber, CAST(wo.WorkOrderNumber AS VARCHAR(8))) AS LotNumber,
|
|
wo.BranchCode,
|
|
wo.ShortItemNumber
|
|
FROM dbo.WorkOrder wo INNER JOIN <# if(Model.ItemNumberFilterEnabled) { #>
|
|
#P_ItemNumbers p_in ON (wo.ItemNumber = p_in.ItemNumber) INNER JOIN<# } #>
|
|
dbo.WorkOrderStep wos ON (wo.WorkOrderNumber = wos.WorkOrderNumber AND wo.BranchCode = wos.BranchCode) LEFT OUTER JOIN
|
|
dbo.WorkOrderTime wot ON (wos.WorkOrderNumber = wot.WorkOrderNumber AND wos.StepNumber = wot.StepNumber AND wos.BranchCode = wot.BranchCode)<# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #> INNER JOIN
|
|
#P_WorkCenters p_wc ON (wos.WorkCenterCode = p_wc.Code)<# } if(Model.OperatorFilterEnabled) { #> INNER JOIN
|
|
#P_OperatorIDs p_oi ON (wot.AddressNumber = p_oi.AddressNumber)<# } if(Model.ItemOperationMisFilterEnabled) { #> CROSS APPLY
|
|
dbo.MatchMIS(wo.WorkOrderNumber, wo.ItemNumber, wo.BranchCode, wo.RoutingType, wo.IssueDate, wos.WorkCenterCode,
|
|
wos.StepNumber, wos.EndDT, wos.FunctionCode, wos.FunctionOperationDescription) AS mm INNER JOIN
|
|
#P_PartOperations p_po on (mm.ItemNumber = p_po.ItemNumber AND mm.MisSequenceNumber = p_po.OperationNumber AND mm.MisNumber = p_po.MisNumber AND mm.RevID = p_po.MisRevision) <# } #>
|
|
<# this.Write("\r\n");
|
|
if(Model.TimespanFilterEnabled) { #>
|
|
WHERE (wos.EndDT <= @p_MaximumDT AND wos.EndDT >= @p_MinimumDT) OR
|
|
(wot.GlDate <= @p_MaximumDT AND wot.GlDate >= @p_MinimumDT)
|
|
<# } if(!Model.ItemOperationMisFilterEnabled) { #>
|
|
UNION
|
|
SELECT DISTINCT
|
|
wo.WorkOrderNumber,
|
|
COALESCE(wo.LotNumber, CAST(wo.WorkOrderNumber AS VARCHAR(8))) AS LotNumber,
|
|
wo.BranchCode,
|
|
wo.ShortItemNumber
|
|
FROM dbo.WorkOrder wo INNER JOIN <# if(Model.ItemNumberFilterEnabled) { #>
|
|
#P_ItemNumbers p_in ON (wo.ItemNumber = p_in.ItemNumber) INNER JOIN<# } #>
|
|
dbo.WorkOrderTime wot ON (wo.WorkOrderNumber = wot.WorkOrderNumber AND wo.BranchCode = wot.BranchCode)<# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #> INNER JOIN
|
|
#P_WorkCenters p_wc ON (wot.WorkCenterCode = p_wc.Code)<# } if(Model.OperatorFilterEnabled) { #> INNER JOIN
|
|
#P_OperatorIDs p_oi ON (wot.AddressNumber = p_oi.AddressNumber)<# } #>
|
|
<# this.Write("\r\n");
|
|
if(Model.MinimumDT.HasValue && Model.MaximumDT.HasValue) { #>
|
|
WHERE (wot.GlDate <= @p_MaximumDT AND wot.GlDate >= @p_MinimumDT)
|
|
<# } } #>
|
|
) step
|
|
)
|
|
MERGE INTO #Temp_WO AS TARGET
|
|
USING LU_WO AS SOURCE
|
|
ON (TARGET.WorkOrderNumber = SOURCE.WorkOrderNumber AND TARGET.BranchCode = SOURCE.BranchCode)
|
|
WHEN MATCHED THEN
|
|
UPDATE SET TARGET.Flagged = 1
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
INSERT(WorkOrderNumber, LotNumber, BranchCode, ShortItemNumber, Flagged)
|
|
VALUES(SOURCE.WorkOrderNumber, SOURCE.LotNumber, SOURCE.BranchCode, SOURCE.ShortItemNumber, 1);
|
|
<# } #>
|
|
|
|
--Add downlevel work orders that were issued material from flagged work orders
|
|
DECLARE @c_MAX_RUNS INT = 20;
|
|
DECLARE @v_NumWO INT = -1;
|
|
DECLARE @v_NewNumWO INT;
|
|
DECLARE @v_NumRuns INT = 0;
|
|
|
|
WHILE(1 = 1) BEGIN
|
|
SET @v_NumWO = @v_NewNumWO;
|
|
|
|
<# this.PushIndent(" "); #>
|
|
<#@ include file="ComponentUsageQuery.txt" #>
|
|
|
|
<#@ include file="SplitWorkOrderQuery.txt" #>
|
|
<# this.PopIndent(); #>
|
|
|
|
SELECT @v_NewNumWO = COUNT(*) FROM #Temp_WO;
|
|
SET @v_NumRuns = @v_NumRuns + 1;
|
|
|
|
IF(@v_NumWO = @v_NewNumWO OR @v_NumRuns = @c_MAX_RUNS) BEGIN
|
|
BREAK;
|
|
END
|
|
END;
|
|
|
|
--Lookup flagged work order details
|
|
WITH LAST_WOS AS
|
|
(
|
|
SELECT wos.WorkOrderNumber,
|
|
wos.BranchCode,
|
|
wos.StepNumber,
|
|
wos.StepDescription,
|
|
wos.FunctionOperationDescription,
|
|
wos.LastUpdateDT,
|
|
ROW_NUMBER() OVER (PARTITION BY wos.WorkOrderNumber, wos.BranchCode ORDER BY wos.EndDT DESC, wos.StepNumber DESC) AS RN
|
|
FROM dbo.WorkOrderStep AS wos LEFT OUTER JOIN
|
|
#Temp_WO t_wo ON (wos.WorkOrderNumber = t_wo.WorkOrderNumber AND wos.BranchCode = t_wo.BranchCode)
|
|
)
|
|
SELECT wo.WorkOrderNumber,
|
|
wo.BranchCode AS WorkOrderBranchCode,
|
|
wo.LotNumber,
|
|
wo.ItemNumber,
|
|
i.PlanningFamily,
|
|
i.StockingType,
|
|
t_wo.ManuallySpecified,
|
|
t_wo.SplitOrder,
|
|
t_wo.CARDEX,
|
|
t_wo.PartsList,
|
|
t_wo.Flagged,
|
|
wo.OrderQuantity,
|
|
wo.HeldQuantity,
|
|
COALESCE(wots.TotalScrappedQuantity, 0) AS ScrappedQuantity,
|
|
wo.ShippedQuantity,
|
|
LTRIM(RTRIM(lwos.BranchCode)) AS StepBranchCode,
|
|
lwos.StepNumber,
|
|
lwos.StepDescription,
|
|
lwos.FunctionOperationDescription,
|
|
lwos.LastUpdateDT AS StepUpdateDT,
|
|
wo.StatusCode,
|
|
sc.Description AS StatusDescription,
|
|
wo.StatusCodeUpdateDT AS StatusUpdateDT
|
|
FROM dbo.WorkOrder AS wo INNER JOIN
|
|
#Temp_WO AS t_wo ON (t_wo.WorkOrderNumber = wo.WorkOrderNumber AND t_wo.BranchCode = wo.BranchCode) LEFT OUTER JOIN
|
|
dbo.Item i on (wo.ShortItemNumber = i.ShortItemNumber) INNER JOIN
|
|
dbo.StatusCode AS sc ON (sc.Code = wo.StatusCode) LEFT OUTER JOIN
|
|
LAST_WOS lwos ON (wo.WorkOrderNumber = lwos.WorkOrderNumber AND wo.BranchCode = lwos.BranchCode) LEFT OUTER JOIN
|
|
dbo.WorkOrderTotalScrap wots ON (wo.WorkOrderNumber = wots.WorkOrderNumber AND wo.BranchCode = wots.BranchCode)
|
|
WHERE lwos.RN IS NULL OR
|
|
lwos.RN = 1;
|
|
<# if(Model.ExtractMisData) { #>
|
|
WITH MIS_CTE AS(
|
|
SELECT DISTINCT wo.WorkOrderNumber,
|
|
wo.ItemNumber,
|
|
wo.BranchCode,
|
|
wo.RoutingType,
|
|
wo.IssueDate,
|
|
wos.WorkCenterCode,
|
|
wos.StepNumber,
|
|
wos.EndDT,
|
|
wos.FunctionCode,
|
|
wos.FunctionOperationDescription
|
|
FROM dbo.WorkOrderStep AS wos INNER JOIN
|
|
dbo.WorkOrder AS wo ON (wos.WorkOrderNumber = wo.WorkOrderNumber AND LTRIM(wos.BranchCode) = wo.BranchCode) LEFT OUTER JOIN
|
|
dbo.WorkOrderTime AS wot ON (wos.WorkOrderNumber = wot.WorkOrderNumber AND LTRIM(wos.BranchCode) = wot.BranchCode AND wos.StepNumber = wot.StepNumber) <# if(Model.ItemNumberFilterEnabled) { #> INNER JOIN
|
|
#P_ItemNumbers p_in ON (wo.ItemNumber = p_in.ItemNumber)<# } if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #> INNER JOIN
|
|
#P_WorkCenters p_wc ON (wos.WorkCenterCode = p_wc.Code)<# } if(Model.OperatorFilterEnabled) { #> INNER JOIN
|
|
#P_OperatorIDs p_oi ON (wot.AddressNumber = p_oi.AddressNumber)<# } #>
|
|
<# if(Model.MinimumDT.HasValue && Model.MaximumDT.HasValue) { #>
|
|
WHERE (((wos.EndDT <= @p_MaximumDT) AND (wos.EndDT >= @p_MinimumDT)) OR
|
|
((wot.GlDate <= @p_MaximumDT) AND (wot.GlDate >= @p_MinimumDT)))
|
|
<# } else if(Model.MinimumDT.HasValue && !Model.MaximumDT.HasValue) { #>
|
|
WHERE (wos.EndDT >= @p_MinimumDT OR wot.GlDate >= @p_MinimumDT)
|
|
<# } else if(!Model.MinimumDT.HasValue && Model.MaximumDT.HasValue) { #>
|
|
WHERE (wos.EndDT <= @p_MaximumDT OR wot.GlDate <= @p_MaximumDT))
|
|
<# } #>
|
|
)
|
|
INSERT INTO #TempMISData
|
|
(
|
|
WorkOrderNumber,
|
|
ItemNumber,
|
|
ItemDescription,
|
|
BranchCode,
|
|
WorkCenterCode,
|
|
StepTimestamp,
|
|
SequenceNumber,
|
|
FunctionCode,
|
|
FunctionOperationDescription,
|
|
MatchedSequenceNumber,
|
|
RoutingMatch,
|
|
MasterMatch,
|
|
MisNumber,
|
|
RevID,
|
|
CharNumber,
|
|
MisSequenceNumber,
|
|
TestDescription,
|
|
SamplingType,
|
|
SamplingValue,
|
|
ToolsGauges,
|
|
WorkInstructions,
|
|
Status,
|
|
ReleaseDate
|
|
)
|
|
SELECT mm.WorkOrderNumber,
|
|
mm.ItemNumber,
|
|
mm.ItemDescription,
|
|
mm.BranchCode,
|
|
mm.WorkCenterCode,
|
|
mm.StepTimestamp,
|
|
mm.SequenceNumber,
|
|
mm.FunctionCode,
|
|
mm.FunctionOperationDescription,
|
|
mm.MatchedSequenceNumber,
|
|
mm.RoutingMatch,
|
|
mm.MasterMatch,
|
|
mm.MisNumber,
|
|
mm.RevID,
|
|
mm.CharNumber,
|
|
mm.MisSequenceNumber,
|
|
mm.TestDescription,
|
|
mm.SamplingType,
|
|
mm.SamplingValue,
|
|
mm.ToolsGauges,
|
|
mm.WorkInstructions,
|
|
mm.Status,
|
|
mm.ReleaseDate
|
|
FROM MIS_CTE c CROSS APPLY
|
|
dbo.MatchMIS(c.WorkOrderNumber, c.ItemNumber, c.BranchCode, c.RoutingType,
|
|
c.IssueDate, c.WorkCenterCode, c.StepNumber, c.EndDT,
|
|
c.FunctionCode, c.FunctionOperationDescription) AS mm;
|
|
|
|
--Get MIS search results
|
|
SELECT DISTINCT tmd.ItemNumber,
|
|
tmd.ItemDescription,
|
|
tmd.BranchCode,
|
|
tmd.MisSequenceNumber AS SequenceNumber,
|
|
tmd.FunctionCode,
|
|
tmd.FunctionOperationDescription,
|
|
tmd.SequenceNumber AS JobStepSequenceNumber,
|
|
tmd.MatchedSequenceNumber,
|
|
tmd.RoutingMatch,
|
|
tmd.MasterMatch,
|
|
tmd.MisNumber,
|
|
tmd.RevID,
|
|
tmd.CharNumber,
|
|
tmd.TestDescription,
|
|
tmd.SamplingType,
|
|
tmd.SamplingValue,
|
|
tmd.ToolsGauges,
|
|
tmd.WorkInstructions,
|
|
tmd.Status,
|
|
tmd.ReleaseDate
|
|
FROM #TempMisData AS tmd
|
|
ORDER BY tmd.ItemNumber,
|
|
tmd.BranchCode,
|
|
tmd.SequenceNumber,
|
|
tmd.MatchedSequenceNumber;
|
|
|
|
--Get no-match MIS search results
|
|
SELECT DISTINCT tmd.WorkCenterCode,
|
|
tmd.WorkOrderNumber,
|
|
wo.IssueDate AS WorkOrderStartDate,
|
|
tmd.SequenceNumber AS JobStepNumber,
|
|
tmd.FunctionOperationDescription AS JobStepDescription,
|
|
tmd.StepTimestamp AS JobStepEndDate,
|
|
CASE WHEN wo.RoutingType='NMR' OR NOT EXISTS(SELECT * FROM dbo.WorkOrderRouting wor WHERE tmd.WorkOrderNumber = wor.WorkOrderNumber AND wor.StepNumber = tmd.SequenceNumber) THEN 1 ELSE 0 END AS WasJobStepAdded,
|
|
CASE WHEN wo.RoutingType='NMR' THEN NULL ELSE (SELECT TOP 1 wor.StepNumber FROM dbo.WorkOrderRouting wor WHERE (tmd.WorkOrderNumber = wor.WorkOrderNumber AND tmd.WorkCenterCode = wor.WorkCenterCode AND tmd.FunctionCode = wor.FunctionCode) AND wor.StepNumber <> tmd.SequenceNumber) END AS MatchedJobStepNumber,
|
|
tmd.FunctionCode,
|
|
tmd.ItemNumber,
|
|
i.Description AS ItemDescription,
|
|
wo.RoutingType
|
|
FROM #TempMisData AS tmd INNER JOIN
|
|
dbo.WorkOrder AS wo ON (tmd.WorkOrderNumber = wo.WorkOrderNumber AND tmd.BranchCode = wo.BranchCode) LEFT OUTER JOIN
|
|
dbo.Item AS i ON (wo.ShortItemNumber = i.ShortItemNumber)
|
|
WHERE (tmd.RoutingMatch = 0 AND
|
|
tmd.MasterMatch = 0) OR
|
|
tmd.MisNumber IS NULL
|
|
ORDER BY tmd.WorkOrderNumber,
|
|
tmd.SequenceNumber;
|
|
<# } #> |