AMResultTRProc.sql 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. USE [MES]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[AMResultTRProc] Script Date: 12/14/2021 16:10:17 ******/
  4. IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[AMResultTRProc]') AND type in (N'P', N'PC'))
  5. DROP PROCEDURE [dbo].[AMResultTRProc]
  6. GO
  7. USE [MES]
  8. GO
  9. /****** Object: StoredProcedure [dbo].[AMResultTRProc] Script Date: 12/14/2021 16:10:17 ******/
  10. SET ANSI_NULLS ON
  11. GO
  12. SET QUOTED_IDENTIFIER ON
  13. GO
  14. CREATE PROCEDURE [dbo].[AMResultTRProc](
  15. @Line varchar(30), --线体
  16. @Station varchar(30), --工站
  17. @TestDate DATE, --日期
  18. @TestHour INT, --整点
  19. @TestTime DATETIME, --时间
  20. @SN varchar(30), --SN
  21. @DSN varchar(30), --DSN
  22. @ODF varchar(30), --GetMaInfo.ODF
  23. @Model varchar(30), --GetMaInfo.Model
  24. @Dimension varchar(30), --GetMaInfo.SIZE
  25. @LastSN INT, --=0,表示上一次抄写的SN与当前SN不相同,=1表示相同
  26. @Result INT, --=0,表示抄写失败,=1表示抄写成功
  27. @ErrMsg varchar(300), --出错描述;
  28. @Remark varchar(100) --备注;
  29. )
  30. AS BEGIN
  31. --注意:试产NTF ResultType只有三种类型:OncePass、NTF、RealFail,量产也将同步些规则。
  32. --而且测试次数最多只有3次.
  33. DECLARE @Count INT
  34. DECLARE @RedoCount INT
  35. DECLARE @Test01 varchar(30)
  36. DECLARE @Test02 varchar(30)
  37. DECLARE @Test03 varchar(30)
  38. DECLARE @FinalTest varchar(30)
  39. DECLARE @ResultType varchar(30)
  40. -- 查询是否有记录;
  41. SELECT @Count=COUNT(1) FROM AMResult_TR WHERE SN=@SN and Station=@Station
  42. --根据抄写结果:新增记录时的默认设置;
  43. IF @Result = 1 --抄写成功;
  44. BEGIN
  45. SET @Test01='PASS'
  46. SET @Test02='NULL'
  47. SET @Test03='NULL'
  48. SET @FinalTest='PASS'
  49. SET @ResultType='OncePass'
  50. END
  51. ELSE --抄写失败;
  52. BEGIN
  53. SET @Test01='FAIL'
  54. SET @Test02='NULL'
  55. SET @Test03='NULL'
  56. SET @FinalTest='FAIL'
  57. SET @ResultType='RealFail'
  58. END
  59. --无记录则添加,有则更新处理;
  60. IF @Count = 0
  61. BEGIN
  62. PRINT '无记录,插入新记录'
  63. --插入新记录;
  64. INSERT INTO [AMResult_TR]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN],
  65. [FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [Test03], [DSN])
  66. VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @Test03, @DSN);
  67. END
  68. ELSE
  69. BEGIN
  70. IF @LastSN = 0 --非连续抄写,新增记录;
  71. BEGIN
  72. PRINT '有记录,非连续抄写,新增记录'
  73. --查询最大ReDo值;
  74. SELECT @RedoCount=MAX(ReDo) FROM AMResult_TR WHERE SN=@SN and Station=@Station
  75. --更新当前Redo=0的记录为Redo=MAX(Redo)+1;
  76. UPDATE AMResult_TR SET ReDo=convert(varchar(30),@RedoCount+1) WHERE SN=@SN and Station=@Station and ReDo='0'
  77. --然后新增记录;
  78. INSERT INTO [AMResult_TR]([TestDate], [TestHour], [Line], [Station], [Model], [Dimension], [TestTime], [ODF], [SN],
  79. [FinalTest], [ResultType], [ErrorMsg], [ReDo], [Remark], [Test01], [Test02], [Test03], [DSN])
  80. VALUES (@TestDate, @TestHour, @Line, @Station, @Model, @Dimension, @TestTime, @ODF, @SN, @FinalTest, @ResultType, @ErrMsg, '0', @Remark, @Test01, @Test02, @Test03, @DSN);
  81. END
  82. ELSE --连续抄写,更新记录;
  83. BEGIN
  84. PRINT '有记录,连续抄写,更新记录'
  85. DECLARE @ReDo0Test01 varchar(30)
  86. DECLARE @ReDo0Test02 varchar(30)
  87. DECLARE @ReDo0Test03 varchar(30)
  88. DECLARE @ReDo0FinalTest varchar(30)
  89. DECLARE @ReDo0ResultType varchar(30)
  90. --查询Redo=0的状态;
  91. 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'
  92. --test02=null & test03=null
  93. --test01=pass <&resulttype=oncepass>
  94. --result=pass
  95. --test02=pass;test03=null;finaltest=pass;resulttype=oncepass
  96. --result=fail
  97. --test02=fail;test03=null;finaltest=fail;resulttype=realfail
  98. --test01=fail <&resulttype=realfail>
  99. --result=pass
  100. --test02=pass;test03=null;finaltest=fail;resulttype=realfail
  101. --result=fail
  102. --test02=fail;test03=null;finaltest=fail;resulttype=realfail
  103. --test02!=null & test03=null
  104. --test01=pass&test02=pass <&resulttype=oncepass>
  105. --result=pass
  106. --test03=pass;finaltest=pass;resulttype=oncepass
  107. --result=fail
  108. --test03=fail;finaltest=fail;resulttype=realfail
  109. --test01=pass&test02=fail <&resulttype=realfail>
  110. --result=pass
  111. --test03=pass;finaltest=pass;resulttype=ntf
  112. --result=fail
  113. --test03=fail;finaltest=fail;resulttype=realfail
  114. --test01=fail&test02=pass <&resulttype=realfail>
  115. --result=pass
  116. --test03=pass;finaltest=pass;resulttype=ntf
  117. --result=fail
  118. --test03=fail;finaltest=fail;resulttype=realfail
  119. --test01=fail&test02=fail <&resulttype=realfail>
  120. --连续2次fail这种情况产生,测试被锁定,数据也锁定,需要后台解锁;
  121. --test03!=null
  122. --test01=pass&test02=fail&test03=pass&finaltest=pass&resulttype=ntf
  123. --result=fail
  124. --finaltest=fail
  125. --resulttype=realfial
  126. --result=pass
  127. --忽略,不变更状态;
  128. --其他情况忽略,不变更任何状态.
  129. PRINT '当前抄写(0=失败,1=成功):'+convert(varchar(30),@Result)+' 是否重流(0=重流,1=非重流):'+convert(varchar(30),@LastSN)
  130. PRINT '现在状态(Test01\Test02\Test03\FinalTest\ResultType):'+@Test01+'\'+@Test02+'\'+@Test03+'\'+@FinalTest+'\'+@ResultType
  131. PRINT '之前状态(Test01\Test02\Test03\FinalTest\ResultType):'+@ReDo0Test01+'\'+@ReDo0Test02+'\'+@ReDo0Test03+'\'+@ReDo0FinalTest+'\'+@ReDo0ResultType
  132. --更新Redo=0的状态;
  133. 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'
  134. END
  135. END
  136. --默认返回;
  137. END
  138. GO