Răsfoiți Sursa

生产过渡表二期的修正

姜永辉 11 luni în urmă
părinte
comite
89ec9e0547
1 a modificat fișierele cu 163 adăugiri și 33 ștergeri
  1. 163 33
      wwwroot/mes/rpt/rpt026/rpt.ashx

+ 163 - 33
wwwroot/mes/rpt/rpt026/rpt.ashx

@@ -1049,7 +1049,7 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                ,0 A_Y_2
                ,0 A_S_2
                ,SUM(CASE
-                      WHEN T.PROCEDUREID IN (3, 39,34) AND
+                      WHEN T.PROCEDUREID IN (3, 39,26) AND
                            GL.BUILDINGNO = '2#' THEN
                        1
                       ELSE
@@ -1084,7 +1084,7 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                        0
                     END) Y_1_2
                ,SUM(CASE
-                      WHEN T.PROCEDUREID = 21 AND
+                      WHEN T.PROCEDUREID  IN (21, 53) AND
                            GL.BUILDINGNO = '2#' THEN
                        1
                       ELSE
@@ -1107,22 +1107,62 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                ,0 B_J_2
                ,0 B_Y_2
                ,0 B_S_2
-          FROM TP_PM_PRODUCTIONDATA T
+          FROM (
+                 SELECT DISTINCT CASE  WHEN p.procedureid = 34 THEN  26 ELSE  p.procedureid  END procedureid
+                 ,p.goodsid 
+                 ,p.barcode
+                  ,p.groutinglineid
+                 FROM TP_PM_PRODUCTIONDATA P
+                 INNER JOIN TP_MST_GOODS G
+                    ON P.GOODSID = G.GOODSID 
+                 WHERE P.CREATETIME >= @DATEBEGIN@
+                   AND P.CREATETIME < @DATEEND@
+                   AND (
+                        P.PROCEDUREID = 3                       
+                        OR P.PROCEDUREID = 34
+                        OR P.PROCEDUREID = 39 
+                    )
+                  AND  G.GOODSCODE IN({goodsCodes})
+                 UNION ALL
+
+                SELECT DISTINCT CASE  WHEN p.procedureid = 24 THEN  34 ELSE  p.procedureid  END procedureid
+                    ,p.goodsid 
+                    ,p.barcode
+                    ,p.groutinglineid
+                    FROM TP_PM_PRODUCTIONDATA P
+                    INNER JOIN TP_MST_GOODS G
+                    ON P.GOODSID = G.GOODSID 
+                    WHERE P.CREATETIME >= @DATEBEGIN@
+                    AND P.CREATETIME < @DATEEND@
+                    AND (
+                         P.PROCEDUREID = 24
+                        OR P.PROCEDUREID = 28                        
+                        OR P.PROCEDUREID = 34 
+                    )
+                    AND  G.GOODSCODE IN({goodsCodes})
+
+                    UNION ALL
+                    SELECT DISTINCT CASE  WHEN p.procedureid IN (21) THEN  53 ELSE  p.procedureid  END procedureid
+                     ,p.goodsid 
+                    ,p.barcode
+                    ,p.groutinglineid
+                     FROM TP_PM_PRODUCTIONDATA P
+                     INNER JOIN TP_MST_GOODS G
+                        ON P.GOODSID = G.GOODSID 
+                     WHERE P.CREATETIME >= @DATEBEGIN@
+                       AND P.CREATETIME < @DATEEND@
+                       AND (
+                            P.PROCEDUREID = 21 
+                            OR P.procedureid = 53
+                        )
+                      AND  G.GOODSCODE IN({goodsCodes})            
+
+        ) T
          INNER JOIN TP_MST_GOODS G
             ON T.GOODSID = G.GOODSID
          INNER JOIN TP_PC_GROUTINGLINE GL
             ON GL.GROUTINGLINEID = T.GROUTINGLINEID
-         WHERE T.CREATETIME >= @DATEBEGIN@
-           AND T.CREATETIME < @DATEEND@
-           AND (
-                 T.PROCEDUREID = 3
-                OR T.PROCEDUREID = 39
-                OR T.PROCEDUREID = 38
-                OR T.PROCEDUREID = 24
-                OR T.PROCEDUREID = 21
-                OR T.PROCEDUREID = 34  
-           )
-          AND  G.GOODSCODE IN({goodsCodes})
+          
          GROUP BY G.GOODSCODE
         UNION ALL
         -- 入库撤销
@@ -1140,7 +1180,7 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                ,0 A_Y_2
                ,0 A_S_2
                ,SUM(CASE
-                      WHEN T.PROCEDUREID IN (3, 39,34) AND
+                      WHEN T.PROCEDUREID IN (3, 39,26) AND
                            GL.BUILDINGNO = '2#' THEN
                        -1
                       ELSE
@@ -1175,7 +1215,7 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                        0
                     END) Y_1_2
                ,SUM(CASE
-                      WHEN T.PROCEDUREID = 21 AND
+                      WHEN T.PROCEDUREID   IN (21, 53) AND
                            GL.BUILDINGNO = '2#' THEN
                        -1
                       ELSE
@@ -1198,22 +1238,66 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                ,0 B_J_2
                ,0 B_Y_2
                ,0 B_S_2
-          FROM TP_PM_PRODUCTIONDATA T
+          FROM 
+(
+                 SELECT DISTINCT CASE  WHEN p.procedureid = 34 and pp.procedureid is null  THEN  26  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null  END procedureid
+                 ,p.goodsid 
+                 ,p.barcode
+                    ,p.groutinglineid
+                 FROM TP_PM_PRODUCTIONDATA P
+                 left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
+                 INNER JOIN TP_MST_GOODS G
+                    ON P.GOODSID = G.GOODSID 
+                 WHERE P.BACKOUTTIME >= @DATEBEGIN@
+                   AND P.BACKOUTTIME < @DATEEND@
+                   AND (
+                        P.PROCEDUREID = 3                       
+                        OR P.PROCEDUREID = 34
+                        OR P.PROCEDUREID = 39 
+                    )
+                  AND  G.GOODSCODE IN({goodsCodes})
+                 UNION ALL
+
+                SELECT DISTINCT CASE  WHEN p.procedureid =24   and pp.procedureid is null THEN  34  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null   END procedureid
+                    ,p.goodsid 
+                    ,p.barcode
+                    ,p.groutinglineid
+                    FROM TP_PM_PRODUCTIONDATA P
+                    left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
+                    INNER JOIN TP_MST_GOODS G
+                    ON P.GOODSID = G.GOODSID 
+                    WHERE P.BACKOUTTIME >= @DATEBEGIN@
+                    AND P.BACKOUTTIME < @DATEEND@
+                    AND (
+                         P.PROCEDUREID = 24
+                        OR P.PROCEDUREID = 28                        
+                        OR P.PROCEDUREID = 34 
+                    )
+                    AND  G.GOODSCODE IN({goodsCodes})
+
+                    UNION ALL
+                    SELECT DISTINCT CASE  WHEN p.procedureid IN (21 )  and pp.procedureid is null THEN  53  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null   END procedureid
+                     ,p.goodsid 
+                    ,p.barcode
+                    ,p.groutinglineid
+                     FROM TP_PM_PRODUCTIONDATA P
+                     left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
+                     INNER JOIN TP_MST_GOODS G
+                        ON P.GOODSID = G.GOODSID 
+                     WHERE P.BACKOUTTIME >= @DATEBEGIN@
+                       AND P.BACKOUTTIME < @DATEEND@
+                       AND (
+                            P.PROCEDUREID = 21 
+                            OR P.procedureid = 53
+                        )
+                      AND  G.GOODSCODE IN({goodsCodes})
+
+          )  T
          INNER JOIN TP_MST_GOODS G
             ON T.GOODSID = G.GOODSID
          INNER JOIN TP_PC_GROUTINGLINE GL
             ON GL.GROUTINGLINEID = T.GROUTINGLINEID
-         WHERE T.BACKOUTTIME >= @DATEBEGIN@
-           AND T.BACKOUTTIME < @DATEEND@
-           AND (
-                 T.PROCEDUREID = 3
-                OR T.PROCEDUREID = 39
-                OR T.PROCEDUREID = 38
-                OR T.PROCEDUREID = 24
-                OR T.PROCEDUREID = 21
-                OR T.PROCEDUREID = 34
-           )
-          AND  G.GOODSCODE IN({goodsCodes})
+          
          GROUP BY G.GOODSCODE
 UNION ALL
         -- 2#窑坯转1#登窑
@@ -1365,6 +1449,49 @@ INNER join TP_PM_PRODUCTIONDATA TT ON tt.groutingdailydetailID = t.groutingdaily
            AND T.CHECKBATCHNO = 1
           AND  G.GOODSCODE IN({goodsCodes})
          GROUP BY G.GOODSCODE
+ UNION ALL
+        -- 成品
+        SELECT G.GOODSCODE GOODS_CODE
+               ,0 Z_J_1
+               ,0 Z_Y_1
+               ,0 Z_S_1
+               ,0 Z_J_2
+               ,0 Z_Y_2
+               ,0 Z_S_2
+               ,0 A_J_1
+               ,0 A_Y_1
+               ,0 A_S_1
+               ,0 A_J_2
+               ,0 A_Y_2
+               ,0 A_S_2
+               ,0 J_2
+               ,0 J_1_2
+               ,0 J_2_1
+               ,0 Y_2
+               ,0 Y_1_2
+               ,0 S_2
+               ,0 S_1_2
+               ,COUNT(t.productiondataid) C_2
+               ,0 C_2_0
+               ,0 C_1_2
+               ,0 C_2_1
+               ,0 B_J_1
+               ,0 B_Y_1
+               ,0 B_S_1
+               ,0 B_J_2
+               ,0 B_Y_2
+               ,0 B_S_2
+          FROM TP_PM_PRODUCTIONDATA T
+         INNER JOIN TP_MST_GOODS G
+            ON T.GOODSID = G.GOODSID
+         INNER JOIN TP_PC_GROUTINGLINE GL
+            ON GL.GROUTINGLINEID = T.GROUTINGLINEID
+         WHERE T.createtime >= @DATEBEGIN@
+           AND T.createtime < @DATEEND@
+           AND T.VALUEFLAG = '1'
+           AND T.PROCEDUREID = 53 
+          AND  G.GOODSCODE IN({goodsCodes})
+         GROUP BY G.GOODSCODE
         UNION ALL
         -- 报损
         SELECT G.GOODSCODE GOODS_CODE
@@ -1600,8 +1727,8 @@ INNER join TP_PM_PRODUCTIONDATA TT ON tt.groutingdailydetailID = t.groutingdaily
           FROM TP_PM_GOODSCHANGEHISTORY T
          INNER JOIN tp_pm_groutingdailydetail gdd
             ON gdd.GROUTINGDAILYDETAILID = T.GROUTINGDAILYDETAILID
-            AND gdd.CREATETIME >= @DATEBEGIN@
-            AND gdd.CREATETIME < @DATEEND@
+           --  AND gdd.CREATETIME >= @DATEBEGIN@
+           --  AND gdd.CREATETIME < @DATEEND@
          INNER JOIN tp_pc_groutingline gl
             ON gl.groutinglineid = gdd.Groutinglineid
          INNER JOIN TP_MST_GOODS G
@@ -1859,10 +1986,11 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                     END) S
                ,0 C
           FROM  (
-                 SELECT DISTINCT CASE  WHEN p.procedureid = 34 THEN  26 ELSE  p.procedureid  END procedureid
+                 SELECT DISTINCT CASE  WHEN p.procedureid = 34 and pp.procedureid is null  THEN  26  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null  END procedureid
                  ,p.goodsid 
                  ,p.barcode
                  FROM TP_PM_PRODUCTIONDATA P
+                 left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
                  INNER JOIN TP_MST_GOODS G
                     ON P.GOODSID = G.GOODSID 
                  WHERE P.BACKOUTTIME >= @DATEBEGIN@
@@ -1876,10 +2004,11 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                   AND  G.GOODSCODE IN({goodsCodes})
                  UNION ALL
 
-                SELECT DISTINCT CASE  WHEN p.procedureid =24 THEN  34 ELSE  p.procedureid  END procedureid
+                SELECT DISTINCT CASE  WHEN p.procedureid =24   and pp.procedureid is null THEN  34  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null   END procedureid
                     ,p.goodsid 
                     ,p.barcode
                     FROM TP_PM_PRODUCTIONDATA P
+                    left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
                     INNER JOIN TP_MST_GOODS G
                     ON P.GOODSID = G.GOODSID 
                     WHERE P.BACKOUTTIME >= @DATEBEGIN@
@@ -1893,10 +2022,11 @@ SELECT DECODE(GROUPING_ID(TT.GOODS_CODE), 1, '总计', TT.GOODS_CODE) AS 产品
                     AND  G.GOODSCODE IN({goodsCodes})
 
                     UNION ALL
-                    SELECT DISTINCT CASE  WHEN p.procedureid IN (21, 31) THEN  53 ELSE  p.procedureid  END procedureid
+                    SELECT DISTINCT CASE  WHEN p.procedureid IN (21, 31)  and pp.procedureid is null THEN  53  WHEN p.procedureid is not null and pp.procedureid is null  THEN  p.procedureid ELSE null   END procedureid
                      ,p.goodsid 
                     ,p.barcode
                      FROM TP_PM_PRODUCTIONDATA P
+                     left JOIN tp_pm_productiondata pp on p.procedureid = pp.procedureid  and  p.barcode = pp.barcode   and pp.valueflag=1
                      INNER JOIN TP_MST_GOODS G
                         ON P.GOODSID = G.GOODSID 
                      WHERE P.BACKOUTTIME >= @DATEBEGIN@