Bläddra i källkod

成检产量统计表

姜永辉 5 månader sedan
förälder
incheckning
276a943b49
1 ändrade filer med 103 tillägg och 44 borttagningar
  1. 103 44
      wwwroot/mes/rpt/rpt017/rpt.ashx

+ 103 - 44
wwwroot/mes/rpt/rpt017/rpt.ashx

@@ -154,7 +154,7 @@ union all
  SELECT 1 as flag,
                                         TP.PRODUCTIONDATAID,
                                         TP.BARCODE,
-                                        decode(pdsemi.productiondataid, NULL, decode(pdsemicheck.productiondataid,NULL,tp.userid,pdfirst.userid) , decode(pdrefirst.userid, NULL, pdfirst.userid, pdrefirst.userid)) userid,
+                                         (CASE WHEN tp.checkflag IN (1, 3) THEN tp.userid ELSE pdfirst.userid  END) userid,
                                         TP.GOODSID,
                                         G.GOODSMODEL,
                                         G.GOODSCODE,
@@ -167,39 +167,110 @@ union all
                                         TP.GOODSLEVELTYPEID,
                                         TP.PROCEDUREID,
                                         MAX( PMAX.PRODUCTIONDATAID ) AS MAXPRODUCTIONDATAID,
-                                        decode(pdsemi.productiondataid
-                                         ,NULL
-                                         ,tp.classessettingid
-                                         ,decode(pdrefirst.classessettingid, NULL, pdfirst.classessettingid, pdrefirst.classessettingid))   CLASSESSETTINGID
+                                       (CASE
+                   WHEN tp.checkflag IN (1, 3) THEN
+                    tp.classessettingid
+                   ELSE
+                    pdfirst.classessettingid
+               END )      CLASSESSETTINGID
                                     FROM
 
                                         (SELECT MAX(tp.productiondataid) productiondataid
                                           ,tp.groutingdailydetailid
                                               FROM tp_pm_productiondata tp LEFT JOIN tp_pm_productiondata_semicheck semicheck ON semicheck.productiondataid = tp.productiondataid     
-                                             WHERE tp.procedureid IN (13, 35)   AND semicheck.productiondataid IS NULL  
+                                             WHERE tp.procedureid IN (13 )   AND semicheck.productiondataid IS NULL  
                                                AND tp.checktime >=  @DATEBEGIN@
                                                AND tp.checktime <= @DATEEND@
                                              GROUP BY tp.groutingdailydetailid) maxp
                                          INNER JOIN tp_pm_productiondata tp  ON maxp.productiondataid = tp.productiondataid
-                                    -- 研发
-                                  LEFT JOIN tp_pm_productiondata tprd
-                                    ON tprd.groutingdailydetailid = tp.groutingdailydetailid
-                                        AND tprd.valueflag = '1' AND tprd.procedureid = 34
-                                          -- 复检的数据
-                                        LEFT JOIN tp_pm_productiondata_semicheck pdsemi ON pdsemi.productiondataid = tp.productiondataid
-                                 -- 是否经过复检的数据
-                                        LEFT JOIN tp_pm_productiondata pdissemi
-                                            ON pdissemi.groutingdailydetailid = tp.groutingdailydetailid  
-                                           AND ((tprd.groutingdailydetailid IS NOT NULL AND
-                                                   pdissemi.kilncarbatchno IS NULL AND tp.kilncarbatchno IS NULL) OR
+                                        -- 研发
+                                      LEFT JOIN tp_pm_productiondata tprd
+                                        ON tprd.groutingdailydetailid = tp.groutingdailydetailid  AND tprd.valueflag = '1' AND tprd.procedureid = 34
+                                       
+                                        --   找到首检的那个人
+                                           LEFT JOIN tp_pm_productiondata pdfirst
+                                             ON pdfirst.groutingdailydetailid = tp.groutingdailydetailid
+                                            AND pdfirst.checkflag = 1
+                                            AND ((tprd.groutingdailydetailid IS NOT NULL AND
+                                                   pdfirst.kilncarbatchno IS NULL AND tp.kilncarbatchno IS NULL) OR
                                                    (tprd.groutingdailydetailid IS NULL AND
-                                                   pdissemi.kilncarbatchno = tp.kilncarbatchno))
-                                            AND pdissemi.productiondataid < tp.productiondataid
-                                            and pdissemi.procedureid IN (13, 35)                               
-                                        LEFT JOIN tp_pm_productiondata_semicheck pdsemicheck
-                                            ON pdsemicheck.productiondataid = pdissemi.productiondataid   
+                                                   pdfirst.kilncarbatchno = tp.kilncarbatchno))
+                                            AND pdfirst.productiondataid <= tp.productiondataid        
 
-                                        --   找到复检的那个人
+                                        INNER JOIN TP_PC_GROUTINGLINE L ON TP.GROUTINGLINEID = L.GROUTINGLINEID
+                                        LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID  AND PMAX.KILNCARBATCHNO = TP.KILNCARBATCHNO     and tp.checkflag = 3
+                                        AND PMAX.PRODUCTIONDATAID < TP.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'  AND pmax.procedureid IN (22, 23, 37, 20, 41)
+                                        LEFT JOIN TP_MST_GOODS G ON G.GOODSID = TP.GOODSID
+                                        LEFT JOIN TP_PM_GROUTINGDAILYDETAIL Gg ON TP.GROUTINGDAILYDETAILID = Gg.GROUTINGDAILYDETAILID
+                                        LEFT JOIN TP_MST_DATADICTIONARY D ON Gg.GLAZETYPEID = D.DICTIONARYID
+                                        LEFT JOIN TP_MST_LOGO O ON Gg.LOGOID = O.LOGOID
+                                        LEFT JOIN tp_mst_user mu ON mu.userid = (CASE WHEN tp.checkflag IN (1, 3) THEN tp.userid ELSE pdfirst.userid  END)
+                                    WHERE 
+                                        TP.PROCEDUREID IN ( 13  )
+                                        AND ( G.GOODSMODEL = @GOODSMODEL@ OR @GOODSMODEL@ IS NULL )
+                                        AND ( G.GOODSNAME = @GOODSNAME@ OR @GOODSNAME@ IS NULL )
+                                        AND ( mu.USERCODE = @USERCODE@ OR @USERCODE@ IS NULL )                                        
+                                         AND TP.checktime >= @DATEBEGIN@
+                                         AND TP.checktime <= @DATEEND@
+                                        {strFactoryInspectionCheckTime}
+                                        AND ( L.BUILDINGNO = @BUILDINGNO@ OR @BUILDINGNO@ IS NULL )
+                                        AND (Gg.LOGOID = @LOGOID@ OR @LOGOID@ IS NULL)
+                                        AND (Gg.GLAZETYPEID = @GLAZETYPEID@ OR @GLAZETYPEID@ IS NULL)
+                                    GROUP BY
+                                         TP.PRODUCTIONDATAID,
+                                        TP.BARCODE,
+                                        pdfirst.USERID, 
+                                        G.GOODSCODE,
+                                        G.GOODSNAME,
+                                        TP.GOODSID,
+                                        G.GOODSMODEL,
+                                        Gg.GLAZETYPEID,
+                                        D.DICTIONARYVALUE,
+                                        Gg.LOGOID,
+                                        O.LOGONAME,
+                                        TP.GROUTINGLINEID,
+                                        TP.GOODSLEVELTYPEID,
+                                        TP.PROCEDUREID,  pdfirst.CLASSESSETTINGID , tp.userid,tp.checkflag ,tp.classessettingid 
+
+
+union all 
+ SELECT 2 as flag,
+                                        TP.PRODUCTIONDATAID,
+                                        TP.BARCODE,
+                                        (CASE WHEN tp.checkflag IN (1, 3) THEN tp.userid ELSE pdfirst.userid  END) userid,
+                                        TP.GOODSID,
+                                        G.GOODSMODEL,
+                                        G.GOODSCODE,
+                                        G.GOODSNAME,
+                                        Gg.GLAZETYPEID AS 釉料ID,
+                                        D.DICTIONARYVALUE AS 釉料,
+                                        Gg.LOGOID AS 商标ID,
+                                        O.LOGONAME AS 商标,
+                                        TP.GROUTINGLINEID,
+                                        TP.GOODSLEVELTYPEID,
+                                        TP.PROCEDUREID,
+                                        MAX( PMAX.PRODUCTIONDATAID ) AS MAXPRODUCTIONDATAID,
+                                        (CASE
+                   WHEN tp.checkflag IN (1, 3) THEN
+                    tp.classessettingid
+                   ELSE
+                    pdfirst.classessettingid
+               END )  CLASSESSETTINGID
+                                    FROM
+
+                                        (SELECT MAX(tp.productiondataid) productiondataid
+                                          ,tp.groutingdailydetailid
+                                              FROM tp_pm_productiondata tp LEFT JOIN tp_pm_productiondata_semicheck semicheck ON semicheck.productiondataid = tp.productiondataid     
+                                             WHERE tp.procedureid IN ( 35)   AND semicheck.productiondataid IS NULL  
+                                               AND tp.checktime >=  @DATEBEGIN@
+                                               AND tp.checktime <= @DATEEND@
+                                             GROUP BY tp.groutingdailydetailid) maxp
+                                         INNER JOIN tp_pm_productiondata tp  ON maxp.productiondataid = tp.productiondataid
+                                        -- 研发
+                                      LEFT JOIN tp_pm_productiondata tprd
+                                        ON tprd.groutingdailydetailid = tp.groutingdailydetailid  AND tprd.valueflag = '1' AND tprd.procedureid = 34
+                                       
+                                        --   找到首检的那个人
                                            LEFT JOIN tp_pm_productiondata pdfirst
                                              ON pdfirst.groutingdailydetailid = tp.groutingdailydetailid
                                             AND pdfirst.checkflag = 1
@@ -208,25 +279,17 @@ union all
                                                    (tprd.groutingdailydetailid IS NULL AND
                                                    pdfirst.kilncarbatchno = tp.kilncarbatchno))
                                             AND pdfirst.productiondataid <= tp.productiondataid 
-                                            --   找到研磨 堵漏气 刷洗不良 的那个人
-                                             LEFT JOIN tp_pm_productiondata pdrefirst
-                                             ON pdrefirst.groutingdailydetailid = tp.groutingdailydetailid
-                                            AND pdrefirst.checkflag = 3
-                                              AND ((tprd.groutingdailydetailid IS NOT NULL AND
-                                                       pdrefirst.kilncarbatchno IS NULL AND tp.kilncarbatchno IS NULL) OR
-                                                       (tprd.groutingdailydetailid IS NULL AND
-                                                       pdrefirst.kilncarbatchno = tp.kilncarbatchno))
-                                            AND pdrefirst.productiondataid <= tp.productiondataid 
+                                           
                                         INNER JOIN TP_PC_GROUTINGLINE L ON TP.GROUTINGLINEID = L.GROUTINGLINEID
-                                        LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID  AND PMAX.KILNCARBATCHNO = TP.KILNCARBATCHNO  AND pdsemi.productiondataid IS NULL   and tp.checkflag = 3
+                                        LEFT JOIN TP_PM_PRODUCTIONDATA PMAX ON PMAX.GROUTINGDAILYDETAILID = TP.GROUTINGDAILYDETAILID  AND PMAX.KILNCARBATCHNO = TP.KILNCARBATCHNO    and tp.checkflag = 3
                                         AND PMAX.PRODUCTIONDATAID < TP.PRODUCTIONDATAID AND PMAX.VALUEFLAG = '1'  AND pmax.procedureid IN (22, 23, 37, 20, 41)
                                         LEFT JOIN TP_MST_GOODS G ON G.GOODSID = TP.GOODSID
                                         LEFT JOIN TP_PM_GROUTINGDAILYDETAIL Gg ON TP.GROUTINGDAILYDETAILID = Gg.GROUTINGDAILYDETAILID
                                         LEFT JOIN TP_MST_DATADICTIONARY D ON Gg.GLAZETYPEID = D.DICTIONARYID
                                         LEFT JOIN TP_MST_LOGO O ON Gg.LOGOID = O.LOGOID
-                                        LEFT JOIN tp_mst_user mu ON mu.userid =  decode(pdsemi.productiondataid, NULL, decode(pdsemicheck.productiondataid,NULL,tp.userid,pdfirst.userid), decode(pdrefirst.userid, NULL, pdfirst.userid, pdrefirst.userid))
+                                        LEFT JOIN tp_mst_user mu ON mu.userid = (CASE WHEN tp.checkflag IN (1, 3) THEN tp.userid ELSE pdfirst.userid  END)
                                     WHERE 
-                                        TP.PROCEDUREID IN ( 13, 35 )
+                                        TP.PROCEDUREID IN ( 35 )
                                         AND ( G.GOODSMODEL = @GOODSMODEL@ OR @GOODSMODEL@ IS NULL )
                                         AND ( G.GOODSNAME = @GOODSNAME@ OR @GOODSNAME@ IS NULL )
                                         AND ( mu.USERCODE = @USERCODE@ OR @USERCODE@ IS NULL )                                        
@@ -239,7 +302,7 @@ union all
                                     GROUP BY
                                         TP.PRODUCTIONDATAID,
                                         TP.BARCODE,
-                                        pdfirst.USERID, pdrefirst.userid,
+                                        pdfirst.USERID, 
                                         G.GOODSCODE,
                                         G.GOODSNAME,
                                         TP.GOODSID,
@@ -250,9 +313,7 @@ union all
                                         O.LOGONAME,
                                         TP.GROUTINGLINEID,
                                         TP.GOODSLEVELTYPEID,
-                                        TP.PROCEDUREID,
-                                                        pdfirst.CLASSESSETTINGID ,pdrefirst.classessettingid,pdsemi.productiondataid ,pdsemicheck.productiondataid,tp.userid ,tp.classessettingid
-
+                                        TP.PROCEDUREID,  pdfirst.CLASSESSETTINGID , tp.userid,tp.checkflag ,tp.classessettingid 
 
 )  ";
                      List<CDAParameter> sqlParaInert = new List<CDAParameter>();
@@ -422,11 +483,9 @@ union all
                                 P.商标ID,
                                 P.商标,
                                 0 AS OK_P,
-                                COUNT(distinct CASE WHEN p.flag = 1 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 13  AND tpp.checktime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd") + @"'
-                                           AND tpp.checktime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd") + @"'  AND p.maxproductiondataid IS NULL THEN P.BARCODE
+                                COUNT(distinct CASE WHEN p.flag = 1 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 13   AND p.maxproductiondataid IS NULL THEN P.BARCODE
                                              ELSE NULL END ) AS OK_B,
-                                COUNT(distinct CASE WHEN p.flag = 1 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 35  AND tpp.checktime >= date'" + Convert.ToDateTime(context.Request["datebeginMaster"]).ToString("yyyy-MM-dd") + @"'
-                                           AND tpp.checktime <= date'" + Convert.ToDateTime(context.Request["dateendMaster"]).AddSeconds(1).ToString("yyyy-MM-dd") + @"' AND p.maxproductiondataid IS NULL THEN P.BARCODE
+                                COUNT(distinct CASE WHEN p.flag = 2 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND P.PROCEDUREID = 35   AND p.maxproductiondataid IS NULL THEN P.BARCODE
                                              ELSE NULL END ) AS OK_R,
                                 COUNT(distinct CASE WHEN p.flag = 0 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND (pdd.procedureid = 22 OR pdd.procedureid = 23) AND  p.maxproductiondataid IS NOT NULL THEN P.BARCODE ELSE NULL END ) AS OK_L,
  COUNT(distinct CASE WHEN p.flag = 0 and  ( P.GOODSLEVELTYPEID = 4 OR P.GOODSLEVELTYPEID = 5 ) AND  pdd.procedureid = 20  AND  p.maxproductiondataid IS NOT NULL THEN P.BARCODE ELSE NULL END ) AS OK_YM,
@@ -472,7 +531,7 @@ union all
                             GROUPING SETS ( ( U.USERCODE,PP.GOODSCODE,PP.GOODSNAME,CDU.STAFFNAME, U.USERNAME, PP.GOODSMODEL,J.JOBSNAME,PP.釉料,PP.商标 ,G.GOODSSPECIFICATION), ( U.USERCODE ),())
                           HAVING SUM(pp.checknum1) <> 0 OR SUM(pp.checknum2) <> 0 OR SUM(pp.checknum3) <> 0 OR SUM(pp.checknum4) <> 0 
                     --  检验数_本烧  检验数_重烧 首检数_本烧  首检数_重烧 250924 和石磊沟通后暂时把 这四个为0的数据过滤  先不管后面的列的数据情况
-                    OR SUM(pp.ok_b) <> 0 OR SUM(pp.ok_r) <> 0 OR SUM(pp.ok_l) <> 0 OR SUM(pp.ok_all) <> 0 OR SUM(pp.ok_p) <> 0 
+                   -- OR SUM(pp.ok_b) <> 0 OR SUM(pp.ok_r) <> 0 OR SUM(pp.ok_l) <> 0 OR SUM(pp.ok_all) <> 0 OR SUM(pp.ok_p) <> 0 
 --  OR SUM(pp.dnum1) <> 0 OR SUM(pp.dnum2) <> 0 OR SUM(pp.dnum3) <> 0 OR SUM(pp.dnum4) <> 0
 
                         ORDER BY