|
|
@@ -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();
|
|
|
}
|
|
|
|