|
|
@@ -3382,173 +3382,110 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
|
|
|
{
|
|
|
parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
|
|
|
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 = "\n" +
|
|
|
- "select qdgroup.gid,\n" +
|
|
|
- //" decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
|
|
|
- " decode(qdgroup.gid, 3, '总计', 1, '合计', qdgroup.kilncode) kilncode,\n" +
|
|
|
- //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
|
|
|
- " decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') subgoodstypecode,\n" +
|
|
|
- //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
|
|
|
- //" decode(qdgroup.gid, 0, qdgroup.goodscode, '--') goodscode,\n" +
|
|
|
- " to_char(qdgroup.OutKilnCount) OutKilnCount,\n" +
|
|
|
- //" qdgroup.GoodCount,\n" +
|
|
|
- // 质量是合格率(正品+副品)
|
|
|
- //" to_char((qdgroup.GoodCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
|
|
|
- " to_char(((qdgroup.GoodCount + qdgroup.BadCount) / qdgroup.OutKilnCount) * 100, '990.00') || '%' GoodPercent\n" +
|
|
|
- //" qdgroup.SubstandardCount,\n" +
|
|
|
- //" to_char((qdgroup.SubstandardCount / qdgroup.OutKilnCount) * 100,\n" +
|
|
|
- //" '990.00') || '%' SubstandardPercent,\n" +
|
|
|
- //" qdgroup.BadCount\n" +
|
|
|
- //" to_char((qdgroup.BadCount / qdgroup.OutKilnCount) * 100, '990.00') || '%' BadPercent,\n" +
|
|
|
- //" qdgroup.ReFireCount,\n" +
|
|
|
- //" to_char((qdgroup.ReFireCount / qdgroup.OutKilnCount) * 100,\n" +
|
|
|
- //" '990.00') || '%' ReFirePercent\n" +
|
|
|
- " from (select grouping_id(--pcpl.productionlinename,\n" +
|
|
|
- " mstkiln.kilncode,\n" +
|
|
|
- " mstgoodstype2.goodstypename) gid,\n" +
|
|
|
- //" mstgoodstype.goodstypename,\n" +
|
|
|
- //" mstgoods.goodscode) gid,\n" +
|
|
|
- //" pcpl.productionlinename,\n" +
|
|
|
- " --qd.kilnid,\n" +
|
|
|
- " mstkiln.kilncode,\n" +
|
|
|
- " mstgoodstype2.goodstypename goodstypename2,\n" +
|
|
|
- //" mstgoodstype.goodstypename,\n" +
|
|
|
- //" mstgoods.goodscode,\n" +
|
|
|
- " sum(qd.OutKilnCount) OutKilnCount,\n" +
|
|
|
- " sum(qd.GoodCount) GoodCount,\n" +
|
|
|
- //" sum(qd.SubstandardCount) SubstandardCount,\n" +
|
|
|
- " sum(qd.BadCount) BadCount\n" +
|
|
|
- //" sum(qd.ReFireCount) ReFireCount\n" +
|
|
|
- " from (select --pdbc.barcode,\n" +
|
|
|
- //" pdbc.productionlineid,\n" +
|
|
|
- " pdbc.goodsid,\n" +
|
|
|
- " pdbc.kilnid,\n" +
|
|
|
- " --pdbc.kilncarid,\n" +
|
|
|
- " --pdbc.kilncarbatchno,\n" +
|
|
|
- " 1 OutKilnCount,\n" +
|
|
|
- " case\n" +
|
|
|
- " when glt.goodsleveltypeid in (5, 6, 7) then\n" +
|
|
|
- " 0\n" +
|
|
|
- " else\n" +
|
|
|
- " 1\n" +
|
|
|
- " end GoodCount,\n" +
|
|
|
- //" case\n" +
|
|
|
- //" when glt.goodsleveltypeid = 7 then\n" +
|
|
|
- //" 1\n" +
|
|
|
- //" else\n" +
|
|
|
- //" 0\n" +
|
|
|
- //" end SubstandardCount,\n" +
|
|
|
- //" case\n" +
|
|
|
- //" when glt.goodsleveltypeid = 6 then\n" +
|
|
|
- //" 1\n" +
|
|
|
- //" else\n" +
|
|
|
- //" 0\n" +
|
|
|
- //" end ReFireCount,\n" +
|
|
|
- " case\n" +
|
|
|
- " when glt.goodsleveltypeid = 5 then\n" +
|
|
|
- " 1\n" +
|
|
|
- " else\n" +
|
|
|
- " 0\n" +
|
|
|
- " end BadCount\n" +
|
|
|
- " from (select distinct pd.barcode,\n" +
|
|
|
- " pd.productionlineid,\n" +
|
|
|
- " pd.goodsid,\n" +
|
|
|
- " pd.kilnid,\n" +
|
|
|
- " --pd.kilncarid,\n" +
|
|
|
- " pd.kilncarbatchno\n" +
|
|
|
- " from tp_pm_productiondata pd\n" +
|
|
|
- " where pd.valueflag = '1'\n" +
|
|
|
- " and pd.procedureid = :in_rptSprocedureId \n" +
|
|
|
- " and pd.AccountID = :AccountID\n";
|
|
|
- StringBuilder selSql = new StringBuilder(sqlString);
|
|
|
- if (se.CreateTimeStart.HasValue)
|
|
|
- {
|
|
|
- selSql.Append(" AND pd.createtime >= :CreateTimeStart\n");
|
|
|
- parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
|
|
|
- }
|
|
|
- if (se.CreateTimeEnd.HasValue)
|
|
|
- {
|
|
|
- selSql.Append(" AND pd.createtime < :CreateTimeEnd\n");
|
|
|
- parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
|
|
|
- }
|
|
|
- //if (!string.IsNullOrEmpty(se.GoodsIDS))
|
|
|
- //{
|
|
|
- // selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd.GoodsId||',') > 0\n");
|
|
|
- // parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
|
|
|
- //}
|
|
|
- //if (se.ProductionLineID.HasValue)
|
|
|
- //{
|
|
|
- // selSql.Append(" AND pd.ProductionLineId = :ProductionLineID\n");
|
|
|
- // parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
|
|
|
- //}
|
|
|
- //if (!string.IsNullOrEmpty(se.GroutingUserIDS))
|
|
|
- //{
|
|
|
- // selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd.groutinguserid||',') > 0\n");
|
|
|
- // parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
|
|
|
- //}
|
|
|
- //if (!string.IsNullOrEmpty(se.GroutingLineIDS))
|
|
|
- //{
|
|
|
- // selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd.groutinglineid||',') > 0\n");
|
|
|
- // parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
|
|
|
- //}
|
|
|
- //selSql.Append(" AND exists (Select 1 from TP_MST_UserPurview up where up.PurviewType= 7 and up.UserID = :UserID and (up.PurviewID=-1 or up.PurviewID= pd.ProductionLineId))");
|
|
|
- //parameters.Add(new OracleParameter(":UserID", OracleDbType.NVarchar2, user.UserID, ParameterDirection.Input));
|
|
|
- //if (se.KilnID.HasValue)
|
|
|
- //{
|
|
|
- // selSql.Append(" AND pd.KilnID = :KilnID\n");
|
|
|
- // parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
|
|
|
- //}
|
|
|
- sqlString =
|
|
|
- " ) pdbc\n" +
|
|
|
- " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid\n" +
|
|
|
- " from (select pd.barcode,\n" +
|
|
|
- " pd.kilncarbatchno,\n" +
|
|
|
- " pd.goodsleveltypeid,\n" +
|
|
|
- " pd.productiondataid,\n" +
|
|
|
- " ROW_NUMBER() OVER(PARTITION BY pd.barcode, pd.kilncarbatchno ORDER BY pd.productiondataid desc) AS dataid\n" +
|
|
|
- " from tp_pm_productiondata pd\n" +
|
|
|
- " where pd.valueflag = '1'\n" +
|
|
|
- " and pd.AccountID = :AccountID\n" +
|
|
|
- " and length(pd.kilncarbatchno) > 0\n" +
|
|
|
- " AND pd.createtime >= :CreateTimeStart\n" +
|
|
|
- " and pd.modeltype = -1) kcbc\n" +
|
|
|
- " where kcbc.dataid = 1) glt\n" +
|
|
|
- " on pdbc.kilncarbatchno = glt.kilncarbatchno\n" +
|
|
|
- " and pdbc.barcode = glt.barcode) qd\n" +
|
|
|
- //" inner join tp_pc_productionline pcpl\n" +
|
|
|
- //" on pcpl.productionlineid = qd.productionlineid\n" +
|
|
|
- " inner join tp_mst_kiln mstkiln\n" +
|
|
|
- " on mstkiln.kilnid = qd.kilnid\n" +
|
|
|
- " inner join tp_mst_goods mstgoods\n" +
|
|
|
- " on mstgoods.goodsid = qd.goodsid\n" +
|
|
|
- " inner join tp_mst_goodstype mstgoodstype\n" +
|
|
|
- " on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
|
|
|
- " and mstgoodstype.accountid = mstgoods.accountid\n" +
|
|
|
- " inner join tp_mst_goodstype mstgoodstype2\n" +
|
|
|
- " on mstgoodstype2.goodstypecode =\n" +
|
|
|
- " substr(mstgoodstype.goodstypecode, 0, 6)\n" +
|
|
|
- " and mstgoodstype.accountid = mstgoodstype2.accountid\n" +
|
|
|
- //" where 1=1\n";
|
|
|
- //selSql.Append(sqlString);
|
|
|
- //if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
|
|
|
- //{
|
|
|
- // selSql.Append(" AND instr(','||:GoodsTypeIDS||',', ','||mstgoods.GOODSTYPEId||',') > 0\n");
|
|
|
- // parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
|
|
|
- //}
|
|
|
+ string sqlString = "";
|
|
|
+ if (se.RptSProcedureID == 16) {
|
|
|
+ sqlString = @" SELECT CASE WHEN KILNCODE IS NULL THEN '总计'
|
|
|
+ WHEN GOODSTYPECODE IS NULL AND KILNCODE IS NOT NULL THEN '合计' else TO_CHAR(KILNCODE) END KILNCODE ,GOODSTYPECODE,
|
|
|
+ COUNT(DISTINCT BARCODE ) as OutKilnCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END) AS 出窑量_产量,
|
|
|
+ COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4,5) AND GOODSLEVELTYPEID IS NOT NULL THEN BARCODE ELSE NULL END) AS 出窑量_残品,
|
|
|
+ DECODE( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ), 0, '0%', TO_CHAR( ( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ) / DECODE( NVL( COUNT(DISTINCT BARCODE ), 1 ), 0, 1, NVL( COUNT(DISTINCT BARCODE ), 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) GoodPercent
|
|
|
+
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ BARCODE,PROCEDUREIDS,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
|
|
|
+ HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPECODE,GOODSTYPENAME,KILNCODE,
|
|
|
+ row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ DISTINCT pd.BARCODE,PDS.PROCEDUREID AS PROCEDUREIDS,
|
|
|
+ PD.REWORKPROCEDUREID,
|
|
|
+ pd.GROUTINGLINECODE,
|
|
|
+ pd.GOODSCODE,
|
|
|
+ pd.GOODSNAME,
|
|
|
+ LOGO.LOGONAME,
|
|
|
+ good.GOODSSPECIFICATION,
|
|
|
+ TP_MST_DataDictionary.DICTIONARYVALUE,
|
|
|
+ GL.HIGHPRESSUREFLAG,
|
|
|
+ pd.PROCEDUREID AS PROCEDUREID,
|
|
|
+ pd.KILNCODE,
|
|
|
+ CASE WHEN instr(gtp.GOODSTYPECODE,'001001')>0 THEN '大件'
|
|
|
+ ELSE '小件' END GOODSTYPECODE,
|
|
|
+ gtp.GOODSTYPENAME,
|
|
|
+ CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
+ WHEN PD.GOODSLEVELTYPEID < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
|
|
|
+ WHEN PDL.GOODSLEVELTYPEID IS NULL THEN PD.GOODSLEVELTYPEID
|
|
|
+ WHEN PD.GOODSLEVELTYPEID = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
+ ELSE NULL END GOODSLEVELTYPEID
|
|
|
+ FROM TP_PM_PRODUCTIONDATA pd
|
|
|
+ INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
|
|
|
+ LEFT JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=60 AND PDL.VALUEFLAG=1
|
|
|
+ LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
|
|
|
+ LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
|
|
|
+ LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=pd.LOGOID
|
|
|
+ LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
|
|
|
+ LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
|
|
|
+ LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
|
|
|
+ WHERE PD.PROCEDUREID IN(16) AND PD.VALUEFLAG=1
|
|
|
+ AND PD.CREATETIME >= :CreateTimeStart AND PD.CREATETIME < :CreateTimeEnd
|
|
|
+ ) )WHERE rownums=1
|
|
|
+ GROUP BY Grouping sets ((KILNCODE,GOODSTYPECODE),(KILNCODE),())";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ sqlString = @" SELECT CASE WHEN KILNCODE IS NULL THEN '总计'
|
|
|
+ WHEN GOODSTYPECODE IS NULL AND KILNCODE IS NOT NULL THEN '合计' else TO_CHAR(KILNCODE) END KILNCODE ,
|
|
|
+ GOODSTYPECODE,
|
|
|
+ COUNT(DISTINCT BARCODE ) as OutKilnCount,
|
|
|
+ COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END) AS 出窑量_产量,
|
|
|
+ COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4,5) AND GOODSLEVELTYPEID IS NOT NULL THEN BARCODE ELSE NULL END) AS 出窑量_残品,
|
|
|
+ DECODE( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ), 0, '0%', TO_CHAR( ( NVL( COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID IN (4,5) THEN BARCODE ELSE NULL END), 0 ) / DECODE( NVL( COUNT(DISTINCT BARCODE ), 1 ), 0, 1, NVL( COUNT(DISTINCT BARCODE ), 1 ) ) ) * 100, 'fm99990.00' ) || '%' ) GoodPercent
|
|
|
+
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ BARCODE,PROCEDUREIDS,REWORKPROCEDUREID,GROUTINGLINECODE,GOODSCODE,GOODSNAME,LOGONAME,GOODSLEVELTYPEID,GOODSSPECIFICATION,DICTIONARYVALUE,
|
|
|
+ HIGHPRESSUREFLAG,PROCEDUREID,GOODSTYPECODE,GOODSTYPENAME,KILNCODE,
|
|
|
+ row_number() over (partition by BARCODE order by GOODSLEVELTYPEID DESC ) as rownums
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ DISTINCT pd.BARCODE,PDS.PROCEDUREID AS PROCEDUREIDS,
|
|
|
+ PD.REWORKPROCEDUREID,
|
|
|
+ pd.GROUTINGLINECODE,
|
|
|
+ pd.GOODSCODE,
|
|
|
+ pd.GOODSNAME,
|
|
|
+ LOGO.LOGONAME,
|
|
|
+ good.GOODSSPECIFICATION,
|
|
|
+ TP_MST_DataDictionary.DICTIONARYVALUE,
|
|
|
+ GL.HIGHPRESSUREFLAG,
|
|
|
+ pd.PROCEDUREID AS PROCEDUREID,
|
|
|
+ pd.KILNCODE,
|
|
|
+ CASE WHEN instr(gtp.GOODSTYPECODE,'001001')>0 THEN '大件'
|
|
|
+ ELSE '小件' END GOODSTYPECODE,
|
|
|
+ gtp.GOODSTYPENAME,
|
|
|
+ CASE WHEN PDL.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
+ WHEN PD.GOODSLEVELTYPEID < PDL.GOODSLEVELTYPEID THEN PDL.GOODSLEVELTYPEID
|
|
|
+ WHEN PDL.GOODSLEVELTYPEID IS NULL THEN PD.GOODSLEVELTYPEID
|
|
|
+ WHEN PD.GOODSLEVELTYPEID = PDL.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
+ ELSE NULL END GOODSLEVELTYPEID
|
|
|
+ FROM TP_PM_PRODUCTIONDATA pd
|
|
|
+ INNER JOIN TP_PM_PRODUCTIONDATA PDS ON PDS.BARCODE=PD.BARCODE
|
|
|
+ LEFT JOIN TP_PM_PRODUCTIONDATA PDL ON PDL.BARCODE=PD.BARCODE AND PDL.PROCEDUREID=61 AND PDL.VALUEFLAG=1
|
|
|
+ LEFT JOIN TP_MST_GOODS good on good.GOODSID=PD.GOODSID
|
|
|
+ LEFT JOIN TP_MST_GOODSTYPE gtp ON good.GOODSTYPEID=gtp.GOODSTYPEID
|
|
|
+ LEFT JOIN TP_MST_LOGO logo ON logo.LOGOID=pd.LOGOID
|
|
|
+ LEFT JOIN TP_PM_GROUTINGDAILYDETAIL gd ON gd.barcode=pd.barcode
|
|
|
+ LEFT JOIN TP_PC_GROUTINGLINE GL ON GL.GROUTINGLINEID=gd.GROUTINGLINEID
|
|
|
+ LEFT JOIN TP_MST_DataDictionary ON TP_MST_DataDictionary.DICTIONARYID=gd.GLAZETYPEID AND TP_MST_DataDictionary.DictionaryType = 'TPC002'
|
|
|
+ WHERE PD.PROCEDUREID IN(28) AND PD.VALUEFLAG=1 AND PDL.CREATETIME >= PD.CREATETIME
|
|
|
+ AND PD.CREATETIME >= :CreateTimeStart AND PD.CREATETIME < :CreateTimeEnd
|
|
|
+ ) )WHERE rownums=1
|
|
|
+ GROUP BY Grouping sets ((KILNCODE,GOODSTYPECODE),(KILNCODE),())";
|
|
|
|
|
|
- //sqlString =
|
|
|
- " group by grouping sets((mstkiln.kilncode,\n" +
|
|
|
- " mstgoodstype2.goodstypename),\n" +
|
|
|
- " mstkiln.kilncode,())\n" +
|
|
|
- " order by --pcpl.productionlinename,\n" +
|
|
|
- " mstkiln.kilncode,\n" +
|
|
|
- " mstgoodstype2.goodstypename\n" +
|
|
|
- " ) qdgroup\n";
|
|
|
-
|
|
|
- selSql.Append(sqlString);
|
|
|
- return selSql.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ return sqlString;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|