Explorar el Código

pda=>产成品质量分析表查询方法插入大件

李士越 hace 1 año
padre
commit
f8d496bd5e
Se han modificado 1 ficheros con 293 adiciones y 8 borrados
  1. 293 8
      DK.Service/PDAModuleLogic/PDAModuleLogic.cs

+ 293 - 8
DK.Service/PDAModuleLogic/PDAModuleLogic.cs

@@ -3301,8 +3301,9 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
             parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
             parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
             parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
-            // 2015-06-16 modify by chenxy
-            string sqlString = @"--查询当前页面所需字段
+
+            string sqlString = @"SELECT * from (
+--查询当前页面所需字段
 SELECT
 GID,
 kilncode,
@@ -3318,10 +3319,10 @@ select qdgroup.gid
              ,'合计'
              ,7
              ,'总计'
-             ,qdgroup.kilncode) kilncode
-      , CASE WHEN qdgroup.goodstypename='隐藏式水箱座便器'  THEN '隐藏式'
-             WHEN qdgroup.goodstypename = '小便斗' THEN '小便斗' 
-             WHEN qdgroup.goodstypename = '柜盆' THEN '柜盆' 
+             ,CAST(qdgroup.kilncode AS VARCHAR2(50))) kilncode
+      , CASE WHEN qdgroup.goodstypename='隐藏式水箱座便器'  THEN CAST('隐藏式' AS VARCHAR2(50)) 
+             WHEN qdgroup.goodstypename = '小便斗' THEN  CAST('小便斗' AS VARCHAR2(50)) 
+             WHEN qdgroup.goodstypename = '柜盆' THEN CAST('柜盆' AS VARCHAR2(50)) 
             ELSE TO_CHAR(decode(qdgroup.gid  
              ,1
              ,qdgroup.goodstypename2
@@ -3417,7 +3418,7 @@ select
                  INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
                  where pd.valueflag = '1'
                      and pd.modeltype = -1
-                     and pd.accountid = :AccountID
+                     and pd.accountid = 1
 					 AND DEFECT.VALUEFLAG=1
 					 AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
                      and length(pd.kilncarbatchno) > 0
@@ -3450,7 +3451,291 @@ select
          group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
 				 (productionlinename, kilncode, goodstypename2),
 				 (productionlinename, kilncode),(productionlinename))							 ) qdgroup	 
-				 ) WHERE GID <>0";
+				 ) WHERE GID <>0 
+ union ALL
+ 
+ 
+SELECT
+2 GID,
+kilncode,
+goodstypename2 as subgoodstypecode,
+OutKilnCount,
+TO_CHAR(QualifiedPercent* 100, '990.00')|| '%' as GoodPercent
+FROM(
+--处理统计过后的数据 在进行分组统计
+select qdgroup.gid
+      ,qdgroup.productionlinename
+      ,CAST(qdgroup.kilncode AS VARCHAR2(50)) kilncode
+      , qdgroup.goodstypename2
+      ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
+      ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
+      ,qdgroup.OutKilnCount
+      ,qdgroup.GoodCount
+      ,decode(qdgroup.OutKilnCount
+             ,0
+             ,to_number(null)
+             ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 2)) GoodPercent
+      ,qdgroup.SubstandardCount
+      ,decode(qdgroup.OutKilnCount
+             ,0
+             ,to_number(null)
+             ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
+      ,qdgroup.GoodCount + qdgroup.BadCount Qualified
+      ,decode(qdgroup.OutKilnCount
+             ,0
+             ,to_number(null)
+             ,round((qdgroup.GoodCount + qdgroup.BadCount) /
+                    qdgroup.OutKilnCount
+                   ,4)) QualifiedPercent
+      ,qdgroup.BadCount
+      ,decode(qdgroup.OutKilnCount
+             ,0
+             ,to_number(null)
+             ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
+      ,qdgroup.ReFireCount
+      ,decode(qdgroup.OutKilnCount
+             ,0
+             ,to_number(null)
+             ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
+  from (
+	--对所需数据进行统计
+select grouping_id(productionlinename,kilncode,goodstypename2
+                          ,goodscode) gid
+							,productionlinename
+              ,kilncode
+              ,goodstypename2
+              ,goodstypename
+              ,goodscode
+              ,nvl(sum(decode(goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
+              ,nvl(sum(decode(goodsleveltypeid, 5, 1, 0)), 0) BadCount
+              ,nvl(sum(decode(goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
+              ,nvl(sum(decode(goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
+              ,nvl(sum(decode(goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GoodCount
+FROM(
+--当前select 获取计算关键字段 
+select  
+              pcpl.productionlinename
+              ,mstkiln.kilncode
+              ,CASE  WHEN  mstgoodstype.GOODSTYPECODE in ('001001001','001001003')
+							THEN TO_CHAR(mstgoodstype2.goodstypename)
+							END goodstypename2 --转换当前字段名称 方便下次grouping 分组统计
+              ,mstgoodstype.goodstypename
+              ,mstgoods.goodscode
+              ,ppcc.goodsleveltypeid
+          from (
+			
+					select 0                   goodsleveltypeid -- 出窑数量
+                      ,pd.barcode
+                      ,pd.productionlineid
+                      ,pd.goodsid
+                      ,pd.kilnid
+                      ,pd.kilncarbatchno
+                      ,1                   cc
+                  from tp_pm_productiondata pd
+                  LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+				 LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+                 where pd.valueflag = '1'
+                 AND   GDT.goodstypecode in ('001001001','001001003')
+                   and pd.procedureid = :in_rptSprocedureId
+                   and pd.accountid = 1
+    AND pd.createtime >= :CreateTimeStart
+    AND pd.createtime < :CreateTimeEnd
+                union all
+                select distinct pd.goodsleveltypeid
+                               ,pd.barcode
+                               ,pd.productionlineid
+                               ,pd.goodsid
+                               ,pd.kilnid
+                               ,pd.kilncarbatchno
+                               ,1 cc
+                  from tp_pm_productiondata pd
+                  LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+				 LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+                 INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
+                 where pd.valueflag = '1'
+                     and pd.modeltype = -1
+                     and pd.accountid = 1
+					 AND DEFECT.VALUEFLAG=1
+					 AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
+                     and length(pd.kilncarbatchno) > 0
+					 AND GDT.goodstypecode in ('001001001','001001003')
+    AND pd.createtime >= :CreateTimeStart
+    AND pd.createtime < :CreateTimeEnd
+                   and exists
+                 (select 1
+                          from tp_pm_productiondata outpd
+                         where outpd.barcode = pd.barcode
+                           and outpd.procedureid = :in_rptSprocedureId
+                           and outpd.valueflag = '1'
+                           and outpd.kilncarbatchno = pd.kilncarbatchno)
+            
+													 ) ppcc
+         inner join tp_pc_productionline pcpl
+            on pcpl.productionlineid = ppcc.productionlineid
+         inner join tp_mst_kiln mstkiln
+            on mstkiln.kilnid = ppcc.kilnid
+         inner join tp_mst_goods mstgoods
+            on mstgoods.goodsid = ppcc.goodsid
+         inner join tp_mst_goodstype mstgoodstype
+            on mstgoodstype.goodstypeid = mstgoods.goodstypeid
+           and mstgoodstype.accountid = mstgoods.accountid
+            inner join tp_mst_goodstype mstgoodstype2  on mstgoodstype2.goodstypecode = substr(mstgoodstype.goodstypecode, 0, 6)  
+				AND mstgoodstype2.goodstypecode NOT IN ('001001002') 
+                                    )
+         group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
+				 (productionlinename, kilncode, goodstypename2))							 ) qdgroup	 
+				 ) WHERE GID not in(0,3) ) a ORDER BY GID";
+
+            // 2015-06-16 modify by chenxy
+//            string sqlString = @"--查询当前页面所需字段
+//SELECT
+//GID,
+//kilncode,
+//goodstypename2 as subgoodstypecode,
+//OutKilnCount,
+//TO_CHAR(QualifiedPercent* 100, '990.00')|| '%' as GoodPercent
+//FROM(
+//--处理统计过后的数据 在进行分组统计
+//select qdgroup.gid
+//      ,decode(qdgroup.gid, 7, '总计', qdgroup.productionlinename) productionlinename
+//      ,decode(qdgroup.gid
+//             ,3
+//             ,'合计'
+//             ,7
+//             ,'总计'
+//             ,qdgroup.kilncode) kilncode
+//      , CASE WHEN qdgroup.goodstypename='隐藏式水箱座便器'  THEN '隐藏式'
+//             WHEN qdgroup.goodstypename = '小便斗' THEN '小便斗' 
+//             WHEN qdgroup.goodstypename = '柜盆' THEN '柜盆' 
+//            ELSE TO_CHAR(decode(qdgroup.gid  
+//             ,1
+//             ,qdgroup.goodstypename2
+//             ,0
+//             ,qdgroup.goodstypename2
+//             ,'--')) END AS  goodstypename2
+//      ,decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename
+//      ,decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode
+//      ,qdgroup.OutKilnCount
+//      ,qdgroup.GoodCount
+//      ,decode(qdgroup.OutKilnCount
+//             ,0
+//             ,to_number(null)
+//             ,round(qdgroup.GoodCount / qdgroup.OutKilnCount, 2)) GoodPercent
+//      ,qdgroup.SubstandardCount
+//      ,decode(qdgroup.OutKilnCount
+//             ,0
+//             ,to_number(null)
+//             ,round(qdgroup.SubstandardCount / qdgroup.OutKilnCount, 4)) SubstandardPercent
+//      ,qdgroup.GoodCount + qdgroup.BadCount Qualified
+//      ,decode(qdgroup.OutKilnCount
+//             ,0
+//             ,to_number(null)
+//             ,round((qdgroup.GoodCount + qdgroup.BadCount) /
+//                    qdgroup.OutKilnCount
+//                   ,4)) QualifiedPercent
+//      ,qdgroup.BadCount
+//      ,decode(qdgroup.OutKilnCount
+//             ,0
+//             ,to_number(null)
+//             ,round(qdgroup.BadCount / qdgroup.OutKilnCount, 4)) BadPercent
+//      ,qdgroup.ReFireCount
+//      ,decode(qdgroup.OutKilnCount
+//             ,0
+//             ,to_number(null)
+//             ,round(qdgroup.ReFireCount / qdgroup.OutKilnCount, 4)) ReFirePercent
+//  from (
+//	--对所需数据进行统计
+//select grouping_id(productionlinename,kilncode,goodstypename2
+//                          ,goodscode) gid
+//							,productionlinename
+//              ,kilncode
+//              ,goodstypename2
+//              ,goodstypename
+//              ,goodscode
+//              ,nvl(sum(decode(goodsleveltypeid, 0, 1, 0)), 0) OutKilnCount
+//              ,nvl(sum(decode(goodsleveltypeid, 5, 1, 0)), 0) BadCount
+//              ,nvl(sum(decode(goodsleveltypeid, 6, 1, 0)), 0) ReFireCount
+//              ,nvl(sum(decode(goodsleveltypeid, 7, 1, 0)), 0) SubstandardCount
+//              ,nvl(sum(decode(goodsleveltypeid, 0, 1, 5, -1, 6, -1, 7, -1, 0)), 0) GoodCount
+//FROM(
+//--当前select 获取计算关键字段 
+//select  
+//              pcpl.productionlinename
+//              ,mstkiln.kilncode
+//              ,CASE WHEN mstgoodstype.goodstypename='隐藏式水箱座便器' THEN '隐藏式 ' 
+//               WHEN mstgoodstype.goodstypename = '小便斗' THEN  '小便斗 '
+//               WHEN mstgoodstype.goodstypename = '柜盆' THEN  '柜盆 '
+//               WHEN mstgoodstype2.goodstypename = '大件' THEN TO_CHAR(mstgoodstype.goodstypename)
+//                ELSE TO_CHAR(mstgoodstype2.goodstypename) END goodstypename2 --转换当前字段名称 方便下次grouping 分组统计
+//              ,mstgoodstype.goodstypename
+//              ,mstgoods.goodscode
+//              ,ppcc.goodsleveltypeid
+//          from (
+			
+//					select 0                   goodsleveltypeid -- 出窑数量
+//                      ,pd.barcode
+//                      ,pd.productionlineid
+//                      ,pd.goodsid
+//                      ,pd.kilnid
+//                      ,pd.kilncarbatchno
+//                      ,1                   cc
+//                  from tp_pm_productiondata pd
+//                  LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+//				 LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+//                 where pd.valueflag = '1'
+//                 AND GDT.goodstypecode NOT IN ('001001002')
+//                   and pd.procedureid = :in_rptSprocedureId
+//                   and pd.accountid = :AccountID
+//    AND pd.createtime >= :CreateTimeStart
+//    AND pd.createtime < :CreateTimeEnd
+//                union all
+//                select distinct pd.goodsleveltypeid
+//                               ,pd.barcode
+//                               ,pd.productionlineid
+//                               ,pd.goodsid
+//                               ,pd.kilnid
+//                               ,pd.kilncarbatchno
+//                               ,1 cc
+//                  from tp_pm_productiondata pd
+//                  LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+//				 LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+//                 INNER JOIN TP_PM_DEFECT DEFECT ON DEFECT.BARCODE = PD.BARCODE
+//                 where pd.valueflag = '1'
+//                     and pd.modeltype = -1
+//                     and pd.accountid = :AccountID
+//					 AND DEFECT.VALUEFLAG=1
+//					 AND SUBSTR(DEFECT.DEFECTCODE, 0, 1) <> 0
+//                     and length(pd.kilncarbatchno) > 0
+//					 AND GDT.goodstypecode NOT IN ('001001002')
+//    AND pd.createtime >= :CreateTimeStart
+//    AND pd.createtime < :CreateTimeEnd
+//                   and exists
+//                 (select 1
+//                          from tp_pm_productiondata outpd
+//                         where outpd.barcode = pd.barcode
+//                           and outpd.procedureid = :in_rptSprocedureId
+//                           and outpd.valueflag = '1'
+//                           and outpd.kilncarbatchno = pd.kilncarbatchno)
+            
+//													 ) ppcc
+//         inner join tp_pc_productionline pcpl
+//            on pcpl.productionlineid = ppcc.productionlineid
+//         inner join tp_mst_kiln mstkiln
+//            on mstkiln.kilnid = ppcc.kilnid
+//         inner join tp_mst_goods mstgoods
+//            on mstgoods.goodsid = ppcc.goodsid
+//         inner join tp_mst_goodstype mstgoodstype
+//            on mstgoodstype.goodstypeid = mstgoods.goodstypeid
+//           and mstgoodstype.accountid = mstgoods.accountid
+//            inner join tp_mst_goodstype mstgoodstype2  on mstgoodstype2.goodstypecode = substr(mstgoodstype.goodstypecode, 0, 6)  
+//				AND mstgoodstype2.goodstypecode NOT IN ('001001002')
+//						LEFT JOIN tp_mst_goodstype mstgoodstype3 on mstgoodstype3.goodstypecode = mstgoodstype.goodstypecode AND mstgoodstype3.goodstypecode  ='001001004'
+//           and mstgoodstype.accountid = mstgoodstype2.accountid
+//                                    )
+//         group by grouping sets((productionlinename,kilncode,goodstypename2,goodstypename,goodscode),
+//				 (productionlinename, kilncode, goodstypename2),
+//				 (productionlinename, kilncode),(productionlinename))							 ) qdgroup	 
+//				 ) WHERE GID <>0";
             return sqlString.ToString();
         }