Ver código fonte

上传相关的文档

jianfeng1.wang 2 anos atrás
pai
commit
4dd4641ae0

+ 82 - 0
Doc/G客户相关/AMResult.sql

@@ -0,0 +1,82 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : MESOtherData2
+ Source Server Type    : SQL Server
+ Source Server Version : 11002100
+ Source Host           : 10.126.64.131:1433
+ Source Catalog        : MESOtherData
+ Source Schema         : dbo
+
+ Target Server Type    : SQL Server
+ Target Server Version : 11002100
+ File Encoding         : 65001
+
+ Date: 13/08/2021 14:12:44
+*/
+
+
+-- ----------------------------
+-- Table structure for AMResult
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AMResult]') AND type IN ('U'))
+	DROP TABLE [dbo].[AMResult]
+GO
+
+CREATE TABLE [dbo].[AMResult] (
+  [TestDate] date  NOT NULL,                                  /* 日期班次 */
+  [TestHour] int  NOT NULL,                                   /* 小时 */
+  [Line] varchar(30) COLLATE Chinese_PRC_CI_AS  NOT NULL,     /* 线体:UI界面或配置文件提供 */
+  [Station] varchar(30) COLLATE Chinese_PRC_CI_AS  NOT NULL,  /* 工站:UI界面或配置文件提供,抄写工具固定为:DataBurning */
+  [Model] varchar(30) COLLATE Chinese_PRC_CI_AS  NULL,        /* 机型:HTTP接口获取 */
+  [Dimension] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,    /* 尺寸:HTTP接口获取 */
+  [TestTime] varchar(30) COLLATE Chinese_PRC_CI_AS  NULL,     /* 测试时间 */
+  [ODF] varchar(20) COLLATE Chinese_PRC_CI_AS  NOT NULL,      /* 批次:HTTP接口获取 */
+  [SN] varchar(30) COLLATE Chinese_PRC_CI_AS  NOT NULL,       /* 本次抄写SN */
+  [ErrorMsg] varchar(300) COLLATE Chinese_PRC_CI_AS  NULL,    /* 抄写失败描述 */
+  [ReDo] varchar(10) COLLATE Chinese_PRC_CI_AS  NOT NULL,     /* 重流标识 */
+  [Remark] varchar(100) COLLATE Chinese_PRC_CI_AS  NULL,      /* 备注:一般用于重流标记 */
+  [Test01] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,       /* 首次测试结果 */
+  [Test02] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,       /* 第二次测试结果 */
+  [FinalTest] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,    /* 最终测试结果 */
+  [ResultType] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,   /* 结果类型:OncePass、NTF、FinalPass、TwiceFail、FinalPass、OnceFail、FinalFail */
+  [DSN] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL           /* 本次抄写DSN */
+)
+GO
+
+ALTER TABLE [dbo].[AMResult] SET (LOCK_ESCALATION = TABLE)
+GO
+
+
+-- ----------------------------
+-- Indexes structure for table AMResult
+-- ----------------------------
+CREATE NONCLUSTERED INDEX [NonClu_AMResult_ODF]
+ON [dbo].[AMResult] (
+  [ODF] ASC
+)
+INCLUDE ([SN])
+GO
+
+CREATE NONCLUSTERED INDEX [NonClu_AMResult_TestDate]
+ON [dbo].[AMResult] (
+  [TestDate] ASC
+)
+INCLUDE ([TestHour])
+GO
+
+CREATE NONCLUSTERED INDEX [NonClu_AMResult_Line]
+ON [dbo].[AMResult] (
+  [Line] ASC
+)
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table AMResult
+-- ----------------------------
+ALTER TABLE [dbo].[AMResult] ADD CONSTRAINT [PK_AMResult] PRIMARY KEY CLUSTERED ([Station], [SN], [ReDo])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+

+ 170 - 0
Doc/G客户相关/AMResultProc.sql

@@ -0,0 +1,170 @@
+USE [MES]
+GO
+
+/****** Object:  StoredProcedure [dbo].[AMResultProc]    Script Date: 12/14/2021 16:10:17 ******/
+IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AMResultProc]') AND type in (N'P', N'PC'))
+DROP PROCEDURE [dbo].[AMResultProc]
+GO
+
+USE [MES]
+GO
+
+/****** Object:  StoredProcedure [dbo].[AMResultProc]    Script Date: 12/14/2021 16:10:17 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE PROCEDURE [dbo].[AMResultProc](
+	@Line varchar(30),			--线体
+	@Station varchar(30),		--工站
+	@TestDate DATE,				--日期
+	@TestHour INT,				--整点
+	@TestTime DATETIME,			--时间
+	@SN varchar(30),			--SN
+	@DSN varchar(30),			--DSN
+	@ODF varchar(30),			--GetMaInfo.ODF
+	@Model varchar(30),			--GetMaInfo.Model
+	@Dimension varchar(30),		--GetMaInfo.SIZE
+	@LastSN INT,				--=0,表示上一次抄写的SN与当前SN不相同,=1表示相同
+	@Result INT,				--=0,表示抄写失败,=1表示抄写成功
+	@ErrMsg varchar(300),		--出错描述;
+	@Remark varchar(100)		--备注;
+	)
+AS BEGIN
+	DECLARE @Count INT
+	DECLARE @RedoCount INT
+	DECLARE @Test01 varchar(30)
+	DECLARE @Test02 varchar(30)
+	DECLARE @FinalTest varchar(30)
+	DECLARE @ResultType varchar(30)
+	-- 查询是否有记录;
+	SELECT @Count=COUNT(1) FROM AMResult WHERE SN=@SN and Station=@Station 
+	--根据抄写结果:新增记录时的默认设置;
+	IF @Result = 1	--抄写成功;
+		BEGIN
+			SET @Test01='PASS'
+			SET @Test02='NULL'
+			SET @FinalTest='PASS'
+			SET @ResultType='OncePass'
+		END
+	ELSE			--抄写失败;
+		BEGIN
+			SET @Test01='FAIL'
+			SET @Test02='NULL'
+			SET @FinalTest='FAIL'
+			SET @ResultType='OnceFail'
+		END
+	
+	--无记录则添加,有则更新处理;
+	IF @Count = 0
+		BEGIN
+			PRINT '无记录,插入新记录'
+			--插入新记录;
+			INSERT INTO [AMResult]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN], 
+				[FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [DSN]) 
+			VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @DSN);
+		END
+	ELSE
+		BEGIN
+			IF @LastSN = 0	--非连续抄写,新增记录;
+				BEGIN
+					PRINT '有记录,非连续抄写,新增记录'
+					--查询最大ReDo值;
+					SELECT @RedoCount=MAX(ReDo) FROM AMResult WHERE SN=@SN and Station=@Station 
+					--更新当前Redo=0的记录为Redo=MAX(Redo)+1;
+					UPDATE AMResult SET ReDo=convert(varchar(30),@RedoCount+1) WHERE SN=@SN and Station=@Station and ReDo='0'
+					--然后新增记录;
+					INSERT INTO [AMResult]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN], 
+						[FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [DSN]) 
+					VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @DSN);
+				END
+			ELSE			--连续抄写,更新记录;
+				BEGIN
+					PRINT '有记录,连续抄写,更新记录'
+					DECLARE @ReDo0Test01 varchar(30)
+					DECLARE @ReDo0Test02 varchar(30)
+					DECLARE @ReDo0FinalTest varchar(30)
+					DECLARE @ReDo0ResultType varchar(30)
+					--查询Redo=0的状态;
+					SELECT @ReDo0Test01=lower(Test01), @ReDo0Test02=lower(isnull(Test02,'null')), @ReDo0FinalTest=lower(FinalTest), @ReDo0ResultType=lower(ResultType) FROM AMResult WHERE SN=@SN and Station=@Station and ReDo='0'
+					--原状态为:OncePass
+					IF @ReDo0Test01 = 'pass' AND @ReDo0Test02 = 'null' AND @ReDo0FinalTest = 'pass'
+						IF @Result = 1
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02='PASS'
+								SET @FinalTest='PASS'
+								SET @ResultType='FinalPass'
+							END
+						ELSE
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02='FAIL'
+								SET @FinalTest='FAIL'
+								SET @ResultType='FinalFail'
+							END
+					--原状态为:OnceFail
+					ELSE IF @ReDo0Test01 = 'fail' AND @ReDo0Test02 = 'null' AND @ReDo0FinalTest = 'fail'
+						IF @Result = 1
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02='PASS'
+								SET @FinalTest='PASS'
+								SET @ResultType='NTF'
+							END
+						ELSE
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02='FAIL'
+								SET @FinalTest='FAIL'
+								SET @ResultType='TwiceFail'
+							END
+					--原状态为:NTF 或 FinalFail
+					ELSE IF @ReDo0Test01 = 'fail' AND @ReDo0Test02 = 'pass' AND (@ReDo0FinalTest = 'pass' OR @ReDo0FinalTest = 'fail')
+						IF @Result = 1
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02=upper(@ReDo0Test02)
+								SET @FinalTest='PASS'
+								SET @ResultType='NTF'
+							END
+						ELSE
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02=upper(@ReDo0Test02)
+								SET @FinalTest='FAIL'
+								SET @ResultType='FinalFail'
+							END
+					ELSE	--原状态为:剩余的FinalPass 或 FinalFail
+						IF @Result = 1
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02=upper(@ReDo0Test02)
+								SET @FinalTest='PASS'
+								SET @ResultType='FinalPass'
+							END
+						ELSE
+							BEGIN
+								SET @Test01=upper(@ReDo0Test01)
+								SET @Test02=upper(@ReDo0Test02)
+								SET @FinalTest='FAIL'
+								SET @ResultType='FinalFail'
+							END
+					
+					PRINT '当前抄写(0=失败,1=成功):'+convert(varchar(30),@Result)+' 是否重流(0=重流,1=非重流):'+convert(varchar(30),@LastSN)
+					PRINT '现在状态(Test01\Test02\FinalTest\ResultType):'+@Test01+'\'+@Test02+'\'+@FinalTest+'\'+@ResultType
+					PRINT '之前状态(Test01\Test02\FinalTest\ResultType):'+@ReDo0Test01+'\'+@ReDo0Test02+'\'+@ReDo0FinalTest+'\'+@ReDo0ResultType
+					--更新Redo=0的状态;
+					UPDATE AMResult SET Test01=@Test01, Test02=@Test02, FinalTest=@FinalTest, ResultType=@ResultType, ErrorMsg=@ErrMsg, Remark=@Remark WHERE SN=@SN and Station=@Station and ReDo='0'
+				END
+		END
+	--默认返回;
+END
+
+
+
+GO
+
+

+ 154 - 0
Doc/G客户相关/AMResultTRProc.sql

@@ -0,0 +1,154 @@
+USE [MES]
+GO
+
+/****** Object:  StoredProcedure [dbo].[AMResultTRProc]    Script Date: 12/14/2021 16:10:17 ******/
+IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AMResultTRProc]') AND type in (N'P', N'PC'))
+DROP PROCEDURE [dbo].[AMResultTRProc]
+GO
+
+USE [MES]
+GO
+
+/****** Object:  StoredProcedure [dbo].[AMResultTRProc]    Script Date: 12/14/2021 16:10:17 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+
+CREATE PROCEDURE [dbo].[AMResultTRProc](
+	@Line varchar(30),			--线体
+	@Station varchar(30),		--工站
+	@TestDate DATE,				--日期
+	@TestHour INT,				--整点
+	@TestTime DATETIME,			--时间
+	@SN varchar(30),			--SN
+	@DSN varchar(30),			--DSN
+	@ODF varchar(30),			--GetMaInfo.ODF
+	@Model varchar(30),			--GetMaInfo.Model
+	@Dimension varchar(30),		--GetMaInfo.SIZE
+	@LastSN INT,				--=0,表示上一次抄写的SN与当前SN不相同,=1表示相同
+	@Result INT,				--=0,表示抄写失败,=1表示抄写成功
+	@ErrMsg varchar(300),		--出错描述;
+	@Remark varchar(100)		--备注;
+	)
+AS BEGIN
+	--注意:试产NTF ResultType只有三种类型:OncePass、NTF、RealFail,量产也将同步些规则。
+	--而且测试次数最多只有3次.
+	DECLARE @Count INT
+	DECLARE @RedoCount INT
+	DECLARE @Test01 varchar(30)
+	DECLARE @Test02 varchar(30)
+	DECLARE @Test03 varchar(30)
+	DECLARE @FinalTest varchar(30)
+	DECLARE @ResultType varchar(30)
+	-- 查询是否有记录;
+	SELECT @Count=COUNT(1) FROM AMResult_TR WHERE SN=@SN and Station=@Station 
+	--根据抄写结果:新增记录时的默认设置;
+	IF @Result = 1	--抄写成功;
+		BEGIN
+			SET @Test01='PASS'
+			SET @Test02='NULL'
+			SET @Test03='NULL'
+			SET @FinalTest='PASS'
+			SET @ResultType='OncePass'
+		END
+	ELSE			--抄写失败;
+		BEGIN
+			SET @Test01='FAIL'
+			SET @Test02='NULL'
+			SET @Test03='NULL'
+			SET @FinalTest='FAIL'
+			SET @ResultType='RealFail'
+		END
+	
+	--无记录则添加,有则更新处理;
+	IF @Count = 0
+		BEGIN
+			PRINT '无记录,插入新记录'
+			--插入新记录;
+			INSERT INTO [AMResult_TR]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN], 
+				[FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [Test03], [DSN]) 
+			VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @Test03, @DSN);
+		END
+	ELSE
+		BEGIN
+			IF @LastSN = 0	--非连续抄写,新增记录;
+				BEGIN
+					PRINT '有记录,非连续抄写,新增记录'
+					--查询最大ReDo值;
+					SELECT @RedoCount=MAX(ReDo) FROM AMResult_TR WHERE SN=@SN and Station=@Station 
+					--更新当前Redo=0的记录为Redo=MAX(Redo)+1;
+					UPDATE AMResult_TR SET ReDo=convert(varchar(30),@RedoCount+1) WHERE SN=@SN and Station=@Station and ReDo='0'
+					--然后新增记录;
+					INSERT INTO [AMResult_TR]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN], 
+						[FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [Test03], [DSN]) 
+					VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @Test03, @DSN);
+				END
+			ELSE			--连续抄写,更新记录;
+				BEGIN
+					PRINT '有记录,连续抄写,更新记录'
+					DECLARE @ReDo0Test01 varchar(30)
+					DECLARE @ReDo0Test02 varchar(30)
+					DECLARE @ReDo0Test03 varchar(30)
+					DECLARE @ReDo0FinalTest varchar(30)
+					DECLARE @ReDo0ResultType varchar(30)
+					--查询Redo=0的状态;
+					SELECT @ReDo0Test01=lower(Test01), @ReDo0Test02=lower(isnull(Test02,'null')), @ReDo0Test03=lower(isnull(Test03,'null')), @ReDo0FinalTest=lower(FinalTest), @ReDo0ResultType=lower(ResultType) FROM AMResult_TR WHERE SN=@SN and Station=@Station and ReDo='0'
+					
+					--test02=null & test03=null
+					  	--test01=pass	<&resulttype=oncepass>
+							--result=pass
+								--test02=pass;test03=null;finaltest=pass;resulttype=oncepass
+							--result=fail
+								--test02=fail;test03=null;finaltest=fail;resulttype=realfail
+						--test01=fail	<&resulttype=realfail>
+							--result=pass
+								--test02=pass;test03=null;finaltest=fail;resulttype=realfail
+							--result=fail
+								--test02=fail;test03=null;finaltest=fail;resulttype=realfail
+					
+					--test02!=null & test03=null
+						--test01=pass&test02=pass	<&resulttype=oncepass>
+							--result=pass
+								--test03=pass;finaltest=pass;resulttype=oncepass
+							--result=fail
+								--test03=fail;finaltest=fail;resulttype=realfail
+						--test01=pass&test02=fail	<&resulttype=realfail>
+							--result=pass
+								--test03=pass;finaltest=pass;resulttype=ntf
+							--result=fail
+								--test03=fail;finaltest=fail;resulttype=realfail
+						--test01=fail&test02=pass	<&resulttype=realfail>
+							--result=pass
+								--test03=pass;finaltest=pass;resulttype=ntf
+							--result=fail
+								--test03=fail;finaltest=fail;resulttype=realfail
+						--test01=fail&test02=fail	<&resulttype=realfail>
+							--连续2次fail这种情况产生,测试被锁定,数据也锁定,需要后台解锁;
+					
+					--test03!=null
+						--test01=pass&test02=fail&test03=pass&finaltest=pass&resulttype=ntf
+							--result=fail
+								--finaltest=fail
+								--resulttype=realfial
+							--result=pass
+								--忽略,不变更状态;
+						--其他情况忽略,不变更任何状态.
+					
+					
+					PRINT '当前抄写(0=失败,1=成功):'+convert(varchar(30),@Result)+' 是否重流(0=重流,1=非重流):'+convert(varchar(30),@LastSN)
+					PRINT '现在状态(Test01\Test02\Test03\FinalTest\ResultType):'+@Test01+'\'+@Test02+'\'+@Test03+'\'+@FinalTest+'\'+@ResultType
+					PRINT '之前状态(Test01\Test02\Test03\FinalTest\ResultType):'+@ReDo0Test01+'\'+@ReDo0Test02+'\'+@ReDo0Test03+'\'+@ReDo0FinalTest+'\'+@ReDo0ResultType
+					--更新Redo=0的状态;
+					UPDATE AMResult_TR SET Test01=@Test01, Test02=@Test02, FinalTest=@FinalTest, ResultType=@ResultType, ErrorMsg=@ErrMsg, Remark=@Remark WHERE SN=@SN and Station=@Station and ReDo='0'
+				END
+		END
+	--默认返回;
+END
+
+
+
+GO
+
+

+ 93 - 0
Doc/G客户相关/AMYields.sql

@@ -0,0 +1,93 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : MESOtherData2
+ Source Server Type    : SQL Server
+ Source Server Version : 11002100
+ Source Host           : 10.126.64.131:1433
+ Source Catalog        : MESOtherData
+ Source Schema         : dbo
+
+ Target Server Type    : SQL Server
+ Target Server Version : 11002100
+ File Encoding         : 65001
+
+ Date: 13/08/2021 14:12:33
+*/
+
+
+-- ----------------------------
+-- Table structure for AMYields
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[AMYields]') AND type IN ('U'))
+	DROP TABLE [dbo].[AMYields]
+GO
+
+CREATE TABLE [dbo].[AMYields] (
+  [TestDate] date  NOT NULL,                                  /* 日期班次 */
+  [TestHour] int  NOT NULL,                                   /* 小时 */
+  [Line] varchar(30) COLLATE Chinese_PRC_CI_AS  NOT NULL,     /* 线体:UI界面或配置文件提供 */
+  [Station] varchar(30) COLLATE Chinese_PRC_CI_AS  NOT NULL,  /* 工站:UI界面或配置文件提供,抄写工具固定为:DataBurning */
+  [ODF] varchar(20) COLLATE Chinese_PRC_CI_AS  NOT NULL,      /* 批次:HTTP接口获取 */
+  [DeviceNum] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,    /* 机架编号:HTTP接口获取 */
+  [Model] varchar(30) COLLATE Chinese_PRC_CI_AS  NULL,        /* 机型:HTTP接口获取 */
+  [Dimension] varchar(20) COLLATE Chinese_PRC_CI_AS  NULL,    /* 尺寸:HTTP接口获取 */
+  [OncePass] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,     /* 第一次Pass的数量:抄写一次就成功的整机(注意:GetKeys网络通信失败的不要视为Fail加入统计,进入工厂模式失败的也不要加入Fail) */
+  [NTF] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,          /* 第二次Pass的数量:第一次抄写失败,则进行第二次抄写成功的数量 */
+  [TwiceFail] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,    /* 连续2次Fail的数量 */
+  [RealFail] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,     /* 实际Fail的数量 */
+  [Total] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,        /* 测试产品总数:是否包含回流的? */
+  [FPY] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,          /* 一次测试Pass的合格率:计算方式= OncePass/Total */
+  [SPY] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,          /* 两次以内测试Pass的合格率:计算方式=(OnecPass+NTF)/Total */
+  [RPY] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,          /* 实际合格率:计算方式=1-RealFail/Total */
+  [YieldRate] varchar(10) COLLATE Chinese_PRC_CI_AS  NULL,    /* 去掉重码实际合格率:查找所有Redo=0的记录=Total(与前面的Total不一样),再查询所有Redo=0的FinalPass数量 FinalPass/Total */
+  [Remark] varchar(100) COLLATE Chinese_PRC_CI_AS  NULL,      /* 备注 */
+  [NTF_SN] varchar(500) COLLATE Chinese_PRC_CI_AS  NULL,      /* 记录NTF的FSN号,使用分号分隔 */
+  [FailDSN] varchar(500) COLLATE Chinese_PRC_CI_AS  NULL,     /* 记录实际Fail的FSN号 */
+  [ID] bigint  IDENTITY(1,1) NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[AMYields] SET (LOCK_ESCALATION = TABLE)
+GO
+
+
+-- ----------------------------
+-- Auto increment value for AMYields
+-- ----------------------------
+DBCC CHECKIDENT ('[dbo].[AMYields]', RESEED, 25040)
+GO
+
+
+-- ----------------------------
+-- Indexes structure for table AMYields
+-- ----------------------------
+CREATE NONCLUSTERED INDEX [IX_AMYields]
+ON [dbo].[AMYields] (
+  [TestDate] ASC
+)
+INCLUDE ([TestHour])
+GO
+
+CREATE NONCLUSTERED INDEX [IX_AMYields_1]
+ON [dbo].[AMYields] (
+  [ODF] ASC
+)
+GO
+
+CREATE NONCLUSTERED INDEX [IX_AMYields_2]
+ON [dbo].[AMYields] (
+  [Line] ASC,
+  [Station] ASC
+)
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table AMYields
+-- ----------------------------
+ALTER TABLE [dbo].[AMYields] ADD CONSTRAINT [PK_AMYields] PRIMARY KEY CLUSTERED ([ID])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+

+ 36 - 0
Doc/G客户相关/FUN_AddAMResult使用.sql

@@ -0,0 +1,36 @@
+DECLARE @RC int
+DECLARE @Line varchar(30)
+DECLARE @Station varchar(30)
+DECLARE @TestDate date
+DECLARE @TestHour int
+DECLARE @TestTime datetime
+DECLARE @SN varchar(30)
+DECLARE @DSN varchar(30)
+DECLARE @ODF varchar(30)
+DECLARE @Model varchar(30)
+DECLARE @Dimension varchar(30)
+DECLARE @LastSN int
+DECLARE @Result int
+DECLARE @ErrMsg varchar(300)
+DECLARE @Remark varchar(100)
+
+-- TODO: 在此处设置参数值。
+SET @Line = 'Test'
+SET @Station = 'DataBurning'
+SET @TestDate = '2021-12-02'
+SET @TestHour = 10
+SET @TestTime = '2021-12-02 12:12:03'
+SET @SN = 'DGG75096992112000808'
+SET @DSN = ''
+SET @ODF = 'DGG7509699'
+SET @Model = '55D2010'
+SET @Dimension = '55'
+SET @LastSN = 1			-- 是否连续抄写: 0表示非连续抄写,1表示连续抄写;
+SET @Result = 1			-- 抄写结果:0表示抄写失败, 1表示抄写成功;
+SET @ErrMsg = ''
+SET @Remark = '测试数据'
+
+EXECUTE @RC = [MES].[dbo].[DealAMResult] @Line,@Station,@TestDate,@TestHour,@TestTime,@SN,@DSN,@ODF,@Model,@Dimension,@LastSN,@Result,@ErrMsg,@Remark
+
+SELECT * FROM AMResult WHERE Line=@Line AND Station=@Station AND SN=@SN
+--DELETE FROM AMResult WHERE Line=@Line AND Station=@Station AND SN=@SN

+ 0 - 0
Doc/G客户试产线NTF统计(2021.12.06).xlsx → Doc/G客户相关/G客户试产线NTF统计(2021.12.06).xlsx


BIN
Doc/G客户相关/G客户试产软件NTF说明.pptx


+ 59 - 0
Doc/G客户相关/HourlyResult.sql

@@ -0,0 +1,59 @@
+USE [MES]
+GO
+
+/****** Object:  UserDefinedFunction [dbo].[HourlyResult]    Script Date: 12/20/2021 18:35:41 ******/
+IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[HourlyResult]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
+DROP FUNCTION [dbo].[HourlyResult]
+GO
+
+USE [MES]
+GO
+
+/****** Object:  UserDefinedFunction [dbo].[HourlyResult]    Script Date: 12/20/2021 18:35:41 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+/*
+TotalAll
+TotalZero
+OncePassAll
+OncePassZero
+NTFAll
+NTFZero
+RealFail
+NTFSN
+FailDSN
+*/
+CREATE FUNCTION [dbo].[HourlyResult](
+	@Line varchar(30),
+	@Station varchar(30),
+	@ODF varchar(30),
+	@TestDate DATE,
+	@TestHour INT)
+RETURNS TABLE as
+	RETURN select 
+		--抄写总数,含重流;
+		TotalAll = count(1),-- as 'Total',
+		--抄写总数,去重流;
+		TotalZero = count(case when ReDo = '0' then 1 else null end),-- as 'Total',
+		--一次成功数量,含重流;
+		OncePassAll = count(case when ResultType = 'OncePass' then 1 else null end),-- as 'OncePass',
+		--一次成功数量,去重流;
+		OncePassZero = count(case when ResultType = 'OncePass' and ReDo = '0' then 1 else null end),-- as 'OncePass',
+		--NTF总数数量,含重流;
+		NTFAll = count(case when ResultType = 'NTF' then 1 else null end),-- as 'NTF',
+		--NTF总数数量,去重流;
+		NTFZero = count(case when ResultType = 'NTF' and ReDo = '0' then 1 else null end),-- as 'NTF',
+		--实际失败数量,含重流.
+		RealFail = count(case when ResultType = 'RealFail' then 1 else null end),-- as 'RealFail',
+		--NTF的SN集合;
+		NTFSN = stuff((select ',' + SN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and ResultType='NTF' for XML PATH('')),1,1,''),-- as 'NTFSN',
+		--FinalTest为Fail的集合;
+		FailDSN = stuff((select ',' + DSN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and FinalTest='FAIL' for XML PATH('')),1,1,'')-- as 'FailDSN' 
+		--查询条件:线体、工站、ODF、测试日期、整点
+		from  AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour
+	
+GO
+

+ 49 - 0
Doc/G客户相关/HourlyResultTR.sql

@@ -0,0 +1,49 @@
+USE [MES]
+GO
+
+/****** Object:  UserDefinedFunction [dbo].[HourlyResultTR]    Script Date: 12/20/2021 18:35:41 ******/
+IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[HourlyResultTR]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
+DROP FUNCTION [dbo].[HourlyResultTR]
+GO
+
+USE [MES]
+GO
+
+/****** Object:  UserDefinedFunction [dbo].[HourlyResultTR]    Script Date: 12/20/2021 18:35:41 ******/
+SET ANSI_NULLS ON
+GO
+
+SET QUOTED_IDENTIFIER ON
+GO
+/*
+Total
+OncePass
+NTF
+RealFail
+*/
+CREATE FUNCTION [dbo].[HourlyResultTR](
+	@Line varchar(30),
+	@Station varchar(30),
+	@ODF varchar(30),
+	@TestDate DATE,
+	@TestHour INT)
+RETURNS TABLE as
+	RETURN select 
+		--抄写总数(包含重流和非重流的)
+		TotalAll = count(1),-- as 'Total',
+		TotalZero = count(case when ReDo = '0' then 1 else null end),-- as 'Total',
+		--有且只有一次测试且成功 Test01=FinalTest=PASS & Test02=NULL
+		OncePassAll = count(case when ResultType = 'OncePass' then 1 else null end),-- as 'OncePass',
+		OncePassZero = count(case when ResultType = 'OncePass' and ReDo = '0' then 1 else null end),-- as 'OncePass',
+		--抄写2次或2次以上:Test01=FAIL & Test02=FinalTest=PASS
+		NTFAll = count(case when ResultType = 'NTF' then 1 else null end),-- as 'NTF',
+		NTFZero = count(case when ResultType = 'NTF' and ReDo = '0' then 1 else null end),-- as 'NTF',
+		--含重码.
+		RealFail = count(case when ResultType = 'RealFail' then 1 else null end),-- as 'RealFail',
+		NTFSN = stuff((select ',' + SN from AMResult_TR where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and ResultType='NTF' for XML PATH('')),1,1,''),-- as 'NTFSN',
+		FailDSN = stuff((select ',' + DSN from AMResult_TR where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and FinalTest='FAIL' for XML PATH('')),1,1,'')-- as 'FailDSN' 
+		from  AMResult_TR where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour
+	
+GO
+
+

+ 0 - 0
Doc/NTF修改要求.xlsx → Doc/G客户相关/NTF修改要求.xlsx


+ 43 - 0
Doc/G客户相关/NTF相关函数.sql

@@ -0,0 +1,43 @@
+USE [MES]
+GO
+/****** Object:  UserDefinedFunction [dbo].[GET_HOURRESULT]    Script Date: 12/14/2021 10:28:25 ******/
+SET ANSI_NULLS ON
+GO
+SET QUOTED_IDENTIFIER ON
+GO
+ALTER FUNCTION [dbo].[GET_HOURRESULT](
+	@Line varchar(30),
+	@Station varchar(30),
+	@ODF varchar(30),
+	@TestDate DATE,
+	@TestHour INT)
+RETURNS TABLE as
+	RETURN select 
+		--抄写总数(包含重流和非重流的)
+		Total = count(1),-- as 'Total',
+		--实际数量:非重流的,即ReDo=0
+		RealTotal = count(case when ReDo = '0' then 1 else null end),-- as 'RealTotal', 
+		--有且只有一次测试且成功 Test01=FinalTest=PASS & Test02=NULL
+		OncePass = count(case when ResultType = 'OncePass' then 1 else null end),-- as 'OncePass',
+		--有且只有一次测试且失败 Test01=FinalTest=FAIL & Test02=NULL
+		OnceFail = count(case when ResultType = 'OnceFail' then 1 else null end),-- as 'OnceFail',
+		--抄写2次或2次以上:Test01=FAIL & Test02=FinalTest=PASS
+		NTF = count(case when ResultType = 'NTF' then 1 else null end),-- as 'NTF',
+		--抄写2次或2次以上:Test01=Test02=FinalTest=FAIL
+		TwiceFail = count(case when ResultType = 'TwiceFail' then 1 else null end),-- as 'TwiceFail',
+		--2次或2次以上:Test01=PASS & Test02=FinalTest=FAIL 
+		--或者 抄写3次及以上:Test01=Test02=PASS & FinalTest=FAIL
+		--或者 抄写3次及以上:Test01=FAIL & Test02=PASS & FinalTest=FAIL
+		FinalFail = count(case when ResultType = 'FinalFail' then 1 else null end),-- as 'FinalFail',
+		--2次或2次以上:Test01=Test02=FinalTest=PASS 
+		--或者 抄写3次及以上:Test01=FinalTest=PASS & Test02=FAIL
+		FinalPass = count(case when ResultType = 'FinalPass' then 1 else null end),-- as 'FinalPass',
+		--真实成功:Redo=0的SN.
+		RealPass = count(case when FinalTest = 'PASS' and ReDo = '0' then 1 else null end),-- as 'RealPass',
+		--真实失败:Redo=0的SN.
+		RealFail = count(case when FinalTest = 'FAIL' and ReDo = '0' then 1 else null end),-- as 'RealFail',
+		NTFSN = stuff((select ',' + SN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and ResultType='NTF' for XML PATH('')),1,1,''),-- as 'NTFSN',
+		FailDSN = stuff((select ',' + DSN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and FinalTest='FAIL' for XML PATH('')),1,1,'')-- as 'FailDSN' 
+		from  AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour
+	
+	--HourlyResultTR

+ 50 - 0
Doc/G客户相关/查询AMResult表NTF数据.sql

@@ -0,0 +1,50 @@
+declare @Line varchar(30) 
+declare @Station varchar(30) 
+declare @ODF varchar(30)
+declare @TestDate DATE
+declare @TestHour INT
+declare @THour varchar
+set @Line='Test'
+set @Station='DataBurning'
+set @ODF='DGG7509699'
+set @TestDate='2021-12-02'
+set @TestHour=10
+
+SELECT * FROM [GET_HOURRESULT] (@Line, @Station, @ODF, @TestDate, @TestHour)
+
+/*
+print @Line
+
+select 
+--抄写总数(包含重流和非重流的)
+count(1) as 'Total',
+--实际数量:非重流的,即ReDo=0
+count(case when ReDo = '0' then 1 else null end) as 'RealTotal', 
+--有且只有一次测试且成功 Test01=FinalTest=PASS & Test02=NULL
+count(case when ResultType = 'OncePass' then 1 else null end) as 'OncePass',
+--有且只有一次测试且失败 Test01=FinalTest=FAIL & Test02=NULL
+count(case when ResultType = 'OnceFail' then 1 else null end) as 'OnceFail',
+--抄写2次或2次以上:Test01=FAIL & Test02=FinalTest=PASS
+count(case when ResultType = 'NTF' then 1 else null end) as 'NTF',
+--抄写2次或2次以上:Test01=Test02=FinalTest=FAIL
+count(case when ResultType = 'TwiceFail' then 1 else null end) as 'TwiceFail',
+--2次或2次以上:Test01=PASS & Test02=FinalTest=FAIL 
+--或者 抄写3次及以上:Test01=Test02=PASS & FinalTest=FAIL
+--或者 抄写3次及以上:Test01=FAIL & Test02=PASS & FinalTest=FAIL
+count(case when ResultType = 'FinalFail' then 1 else null end) as 'FinalFail',
+--2次或2次以上:Test01=Test02=FinalTest=PASS 
+--或者 抄写3次及以上:Test01=FinalTest=PASS & Test02=FAIL
+count(case when ResultType = 'FinalPass' then 1 else null end) as 'FinalPass',
+--真实成功:Redo=0的SN.
+count(case when FinalTest = 'PASS' and ReDo = '0' then 1 else null end) as 'RealPass',
+--真实失败:Redo=0的SN.
+count(case when FinalTest = 'FAIL' and ReDo = '0' then 1 else null end) as 'RealFail',
+stuff((select ',' + SN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and ResultType='NTF' for XML PATH('')),1,1,'') as 'NTFSN',
+stuff((select ',' + DSN from AMResult where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour and FinalTest='FAIL' for XML PATH('')),1,1,'') as 'FailDSN' 
+from  AMResult where  Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour
+
+
+*/
+select SN,ODF,FinalTest, ResultType, ReDo, Test01, Test02,DSN from AMResult 
+where Line=@Line and Station=@Station and ODF=@ODF and TestDate=@TestDate and TestHour=@TestHour
+

+ 117 - 0
Doc/G客户相关/相关信息.txt

@@ -0,0 +1,117 @@
+一、数据库语句:
+Provider=SqlOLEDB;Data Source=10.126.64.131;initial catalog=MESOtherData;user ID=XMUpdate;password=695Xm@123#;connect timeout=30;
+
+数据库类型:MSSQL
+数据库地址:10.126.64.131
+数据库名称:MESOtherData
+数据库用户:XMUpdate
+数据库密码:695Xm@123#
+
+二、NTF上传使用的表:
+AMYields:
+统计合格率,这是针对每小时的合格率做统计
+每一条记录统计的是时间整点范围内、指定线体、批次号、
+AMResult:
+字段ResultType分析:
+OncePass:      有且只有1次测试,且测试成功。  ErrorMsg=一次Pass
+OnceFail:      有且只有1次测试,且测试Fail。  ErrorMsg=仅测试一次且FAIL
+NTF:           有且只有2次测试,第一次失败,第二次成功。   ErrroMsg=1st:Fail;2nd:PASS
+TwiceFail:     有且只有2次测试,且连续2次Fail。    ErrorMsg=连续两次FAIL
+FinalPass:     测试三次或三次以上,前面不管成功或失败,只要最后一次成功。  ErrroMsg=最终PASS
+FinalFail:     测试三次或三次以上,前面不管成功或失败,只要最后一次为Fail。    ErrorMsg=最终FAIL
+
+
+表一
+OncePass:只测试一次,且成功。
+NTF:只测试2次,第一次失败,第二次成功。
+TwiceFail:只测试2次,且连续测试2次,2次都失败。
+RealFail:实际结果为Fail的测试,这里的情况更多
+Total:是否包含重流的整机,待确认!
+FPY:一次测试合格率,计算方式待确认!
+SPY:二次测试合格率,计算方式待确认!
+RPY:最终测试合格率,计算方式待确认!
+YieldRate:去掉重流的合格率,计算方式待确认!
+
+表二
+ReDo:回流标记,标记方式:当前的永远=0,上一次的值为 Value = Select MAX(ReDo) from AMYields where SN = '目标SN' 加1的值。
+Test01:首次测试结果
+Test02:第二次测试结果
+FinalTest:最终测试结果,最后一次的测试结果,与Test01、Test02一起决定ResultType的值。
+Test01=Pass & Test02=NULL,则FinalTest=Pass,ResultType=OnecePass
+Test01=Fail & Test02 = Pass,没有第三次测试,则FinalTest=Pass,ResultType=NTF
+Test01=Fail & Test02=Fail, 第三次=Pass,则FinalTest=Pass, ResutlType=FinalPass
+Test01=Fail & Test02 = Fail,没有第三次,则FinalTest=Fail,ResultType=TwiceFail
+Test01=Fail & Test02 = Fail,第三次=Pass,则FinaTest=Pass,RestulType=FinalPass
+Test01=Fail & Test02 = NULL,则FinalTest=Fail,ResultType=OneceFail
+Test01=Fail & Test02 = Fail ,第三次或最后一次=Fail,则FinalTest=Fail,ResultType=FinalFail
+ResultType:结果类型:OncePass、NTF、FinalPass、TwiceFail、FinalPass、OnceFail、FinalFail
+
+三、注意事项:
+1、
+
+
+四、HTTP接口
+
+实时抄写记录提交,参数:
+TestDate
+Line
+Station
+DSN
+ODF->MaInfo.ODF
+Model->MaInfo.Model
+Dimension->MaInfo.SIZE
+TestHour
+TestTime
+SN
+Result(抄写结果)
+LastSN(=0,表示上一次抄写的SN与当前SN不相同,=1表示相同)。
+
+->查询AMResult表,以Station、SN为查询条件。
+	->如果没有这条数据,插入新数据到AMResult表中,ReDo=0。
+		->返回数据表AMResult插入数据情况。
+	->如果有这条数据,更新AMResult表。
+		->以Station、SN、ReDo=0为查询条件,查询出ReDo=0的记录。
+			->如果没有ReDo=0的记录,插入新数据到AMResult表中,ReDo字段为0
+			->如果有记录。
+				->LastSN=0
+					->只更新当前记录:UpdateReDo0AMResult
+				->LastSN=1
+					->将原ReDo=0的记录更新为ReDo=1即可,再新增当前记录为ReDo=0.
+
+
+接口一:获取订单类型
+参数:SN
+返回:订单类型:试产订单、量产订单
+
+接口二:新增或更新AMResult\AMResult_TR表
+参数:
+TestDate、Line、Station、DSN、TestHour、TestTime、SN、Result(抄写结果)
+ODF->MaInfo.ODF、Model->MaInfo.Model、Dimension->MaInfo.SIZE、=>建议由GetMaInfo获取,抄写工具不提供
+LastSN(=0,表示上一次抄写的SN与当前SN不相同,=1表示相同)。
+TR(=0表示量产订单,更新AMResult表;=1表示试产订单,更新AMResult_TR表)
+返回:更新成功或失败
+
+接口三:获取AMResult\AMResult_TR统计表记录
+参数:
+TestDate、Line、Station、TestHour、ODF、TR(=0表示量产订单,查询AMResult表;=1表示试产订单,查询AMResult_TR表)
+返回:失败返回原因,成功返回以下统计数据
+TotalCount
+RealTotalCount
+OncePassCount
+OnceFailCount
+NTFCount
+TwiceFailCount
+FinalFailCount
+FinalPassCount
+RealFailCount
+RealPassCount
+NTFSSN
+FailDSN
+
+接口四:更新AMYields\AMYields_TR表
+参数:
+TestDate、Line、Station、TestHour、ODF、
+ODF->MaInfo.ODF、Model->MaInfo.Model、Dimension->MaInfo.SIZE、=>建议由GetMaInfo获取,抄写工具不提供
+OncePass、NTF、TwiceFail、RealFail、Total、FPY、RPY、YieldRate、NTF_SN、FailDSN、Remark
+
+

BIN
Doc/三华MES对接/ATE接口文档20220520_.pdf


BIN
Doc/三华MES对接/三华ME对接.vsdx


+ 38 - 0
Doc/三华MES对接/茂佳接口调用顺序.txt

@@ -0,0 +1,38 @@
+1、http://10.0.0.166:1111/api/MESTestCollect/CheckLogin
+   幣箭�
+   {
+	"password": "",
+	"resourceCode": "",
+	"staffCode": ""
+}
+
+2、http://10.0.0.166:1111/api/MESTestCollect/ProductRouteCheck
+    幣箭�
+    {
+	 
+	"jigEdition": "",
+	"productSN": "",
+	"resourceCode": "",
+	"staffCode": ""
+}
+
+3、http://10.0.0.166:1111/api/MESTestCollect/UploadIdcData
+ 幣箭�
+  {
+	"attr":{"ACASID","ACASID000001"},
+	"jigEdition": "",
+	"productSN": "",
+	"resourceCode": "",
+	"staffCode": ""
+}
+
+4、http://10.0.0.166:1111/api/MESTestCollect/ProductMoveNext
+   幣箭�
+   {
+	"defectCode": "",
+	"jigEdition": "",
+	"productSN": "",
+	"resourceCode": "",
+	"result": "",
+	"staffCode": ""
+}

BIN
Doc/三华MES对接/茂佳测试工序流程图 (ACASID上传).pdf


BIN
Doc/小米MES对接.vsdx


BIN
Doc/抄写工具批量下载抄写流程.vsdx