Przeglądaj źródła

看板缺陷的前4条数据 不对修正

姜永辉 9 miesięcy temu
rodzic
commit
bee7ce16d5
1 zmienionych plików z 188 dodań i 24 usunięć
  1. 188 24
      wwwroot/main/Procedure/Boardkanban/Boardkanban.ashx

+ 188 - 24
wwwroot/main/Procedure/Boardkanban/Boardkanban.ashx

@@ -276,13 +276,95 @@ SELECT
 													缺陷数量
 												FROM
 													(
-													select df.DEFECTNAME 缺陷名称, COUNT(distinct DF.BARCODE || df.DEFECTCODE) 缺陷数量  from 							
-								TP_PM_DEFECT df
-									LEFT JOIN TP_PM_PRODUCTIONDATA PD ON PD.BARCODE=DF.BARCODE 
-									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
-							WHERE
-												df.VALUEFLAG=1
-												AND PD.PROCEDUREID in ( 16) AND PD.VALUEFLAG=1 
+													select df.DEFECTNAME 缺陷名称
+													 ,COUNT(DISTINCT CASE
+																WHEN (pds.procedureid IN (4, 36, 53) AND
+																	df.defectcode IN
+																	('10', '12', '13', '14', '15', '16', '17', '18', '19', '22', '25', '35'))
+																	OR (pds.procedureid IN (5, 36, 52) AND
+																	df.defectcode IN ('01'
+																						,'02'
+																						,'03'
+																						,'04'
+																						,'05'
+																						,'06'
+																						,'07'
+																						,'08'
+																						,'09'
+																						,'10'
+																						,'28'
+																						,'34'
+																						,'35'))
+																	OR (pds.procedureid IN (55, 13, 25) AND
+																	df.defectcode IN ('61', '62', '63', '64', '65', '66', '67', '11'))
+																	OR (pds.procedureid IN (30, 39, 57) AND
+																	df.defectcode IN
+																	('69', '70', '71', '43', '73', '74', '75', '76', '77', '78', '79', '80')) THEN
+																(pd.productiondataid || df.barcode || df.defectcode)
+                     
+																ELSE
+																(pd.productiondataid || df.barcode || df.defectcode)
+															END) AS 缺陷数量 
+												 from  TP_PM_DEFECT df
+														LEFT JOIN 
+															(SELECT pd1.goodsname
+														  ,pd1.groutingdailydetailid
+														  ,pd1.goodsid
+														  ,pd1.goodscode
+														  ,pd1.groutinguserid
+														  ,pd1.groutingusercode
+														  ,pd1.createtime
+														  ,pd1.procedureid
+														  ,pd1.kilncarbatchno
+														  ,pd1.barcode
+														  ,pd1.valueflag
+														  ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+													  FROM (SELECT *
+															  FROM (SELECT pd28.goodsname
+																		  ,pd28.groutingdailydetailid
+																		  ,pd28.goodsid
+																		  ,pd28.goodscode
+																		  ,pd28.goodsleveltypeid
+																		  ,pd28.groutinguserid
+																		  ,pd28.groutingusercode
+																		  ,pd28.createtime
+																		  ,pd24.procedureid
+																		  ,pd28.kilncarbatchno
+																		  ,pd28.barcode
+																		  ,pd28.productiondataid
+																		  ,pd28.valueflag
+																		  ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																	  FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																	 INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																		ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																	 WHERE pd28.procedureid = 16
+																	   AND pd28.valueflag = 1
+																	   AND pd24.valueflag = 1
+																	   AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																	   AND pd28.createtime >= TRUNC(SYSDATE) 
+                                          
+																	   AND pd24.productiondataid < pd28.productiondataid) t
+															 WHERE rownums = 1
+															   AND t.procedureid IN (55, 13)) pd1
+													  LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+														ON pd61.procedureid = 60
+													   AND pd61.valueflag = 1
+													   AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+													   AND pd61.kilncarbatchno = pd1.kilncarbatchno
+													   AND pd61.productiondataid > pd1.productiondataid
+														  -- 取最近的数据
+													   AND NOT EXISTS
+													 (SELECT 1
+															  FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+															 WHERE pd28c.procedureid = 16
+															   AND pd28c.valueflag = 1
+															   AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+															   AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+															   AND pd28c.productiondataid > pd1.productiondataid
+															   AND pd28c.productiondataid < pd61.productiondataid)) PD ON PD.productiondataid=DF.productiondataid 
+														INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
+												WHERE
+												df.VALUEFLAG=1 
 												AND PD.CREATETIME >=TRUNC(SYSDATE)   AND DF.PROCEDUREID NOT IN  (61,28)
 													GROUP BY df.DEFECTNAME 
 													ORDER BY
@@ -311,23 +393,105 @@ SELECT
 													) 
 												WHERE 		缺陷名称 not  IN(
 													SELECT
-												缺陷名称
-												FROM
-													(
-													select df.DEFECTNAME 缺陷名称, COUNT(distinct DF.BARCODE || df.DEFECTCODE) 缺陷数量  from 							
-								TP_PM_DEFECT df
-									LEFT JOIN TP_PM_PRODUCTIONDATA PD ON PD.BARCODE=DF.BARCODE 
-									INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
-							WHERE
-												df.VALUEFLAG=1
-												AND PD.PROCEDUREID in ( 16) AND PD.VALUEFLAG=1 
-												AND PD.CREATETIME >=TRUNC(SYSDATE)   AND DF.PROCEDUREID NOT IN  (61,28)
-													GROUP BY df.DEFECTNAME 
-													ORDER BY
-														COUNT(distinct DF.BARCODE || df.DEFECTCODE) DESC 
-													) 
-												WHERE
-													ROWNUM <= 4 )
+														缺陷名称 
+														FROM
+														  (
+														  select df.DEFECTNAME 缺陷名称
+														   ,COUNT(DISTINCT CASE
+																WHEN (pds.procedureid IN (4, 36, 53) AND
+																  df.defectcode IN
+																  ('10', '12', '13', '14', '15', '16', '17', '18', '19', '22', '25', '35'))
+																  OR (pds.procedureid IN (5, 36, 52) AND
+																  df.defectcode IN ('01'
+																			,'02'
+																			,'03'
+																			,'04'
+																			,'05'
+																			,'06'
+																			,'07'
+																			,'08'
+																			,'09'
+																			,'10'
+																			,'28'
+																			,'34'
+																			,'35'))
+																  OR (pds.procedureid IN (55, 13, 25) AND
+																  df.defectcode IN ('61', '62', '63', '64', '65', '66', '67', '11'))
+																  OR (pds.procedureid IN (30, 39, 57) AND
+																  df.defectcode IN
+																  ('69', '70', '71', '43', '73', '74', '75', '76', '77', '78', '79', '80')) THEN
+																(pd.productiondataid || df.barcode || df.defectcode)
+                     
+																ELSE
+																(pd.productiondataid || df.barcode || df.defectcode)
+															  END) AS 缺陷数量 
+														 from  TP_PM_DEFECT df
+															LEFT JOIN 
+															  (SELECT pd1.goodsname
+															  ,pd1.groutingdailydetailid
+															  ,pd1.goodsid
+															  ,pd1.goodscode
+															  ,pd1.groutinguserid
+															  ,pd1.groutingusercode
+															  ,pd1.createtime
+															  ,pd1.procedureid
+															  ,pd1.kilncarbatchno
+															  ,pd1.barcode
+															  ,pd1.valueflag
+															  ,nvl(pd61.productiondataid, pd1.productiondataid) productiondataid
+															FROM (SELECT *
+																FROM (SELECT pd28.goodsname
+																	  ,pd28.groutingdailydetailid
+																	  ,pd28.goodsid
+																	  ,pd28.goodscode
+																	  ,pd28.goodsleveltypeid
+																	  ,pd28.groutinguserid
+																	  ,pd28.groutingusercode
+																	  ,pd28.createtime
+																	  ,pd24.procedureid
+																	  ,pd28.kilncarbatchno
+																	  ,pd28.barcode
+																	  ,pd28.productiondataid
+																	  ,pd28.valueflag
+																	  ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
+																	FROM tp_pm_productiondata pd28 -- 重烧质量登记
+																   INNER JOIN tp_pm_productiondata pd24 -- 重烧修补24 / 冷补42
+																	ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
+																   WHERE pd28.procedureid = 16
+																	 AND pd28.valueflag = 1
+																	 AND pd24.valueflag = 1
+																	 AND pd24.procedureid IN (55, 13, 42) --  重烧质量登记里包含 重烧修补24 / 冷补42 
+																	 AND pd28.createtime >= TRUNC(SYSDATE) 
+                                          
+																	 AND pd24.productiondataid < pd28.productiondataid) t
+															   WHERE rownums = 1
+																 AND t.procedureid IN (55, 13)) pd1
+															LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
+															ON pd61.procedureid = 60
+															 AND pd61.valueflag = 1
+															 AND pd61.groutingdailydetailid = pd1.groutingdailydetailid
+															 AND pd61.kilncarbatchno = pd1.kilncarbatchno
+															 AND pd61.productiondataid > pd1.productiondataid
+															  -- 取最近的数据
+															 AND NOT EXISTS
+														   (SELECT 1
+																FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
+															   WHERE pd28c.procedureid = 16
+																 AND pd28c.valueflag = 1
+																 AND pd28c.groutingdailydetailid = pd1.groutingdailydetailid
+																 AND pd28c.kilncarbatchno = pd1.kilncarbatchno
+																 AND pd28c.productiondataid > pd1.productiondataid
+																 AND pd28c.productiondataid < pd61.productiondataid)) PD ON PD.productiondataid=DF.productiondataid 
+															INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE AND pds.valueflag = 1
+														WHERE
+														df.VALUEFLAG=1 
+														AND PD.CREATETIME >=TRUNC(SYSDATE)   AND DF.PROCEDUREID NOT IN  (61,28)
+														  GROUP BY df.DEFECTNAME 
+														  ORDER BY
+															COUNT(distinct DF.BARCODE || df.DEFECTCODE) DESC 
+														  ) 
+														WHERE
+														  ROWNUM <= 4 )
 
 												),
 												检验数