|
|
@@ -4316,12 +4316,32 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
|
|
|
return sre;
|
|
|
}
|
|
|
|
|
|
+ // 增加三行综合数据,出窑量取本烧出窑量,后边合格品、正品……数据和现在总计数据一致,合格率、正品率……以本烧数据做分母 260401
|
|
|
+ parameters.Clear();
|
|
|
+ sql = ReportModuleLogic.GetRPT040105S1SQLNew(user, se, ref parameters);
|
|
|
+ DataTable datanew = conn.GetSqlResultToDt(sql, parameters.ToArray());
|
|
|
+ DataRow[] drs1 = datanew.Select("goodstypecode2 = '001001'"); //大件
|
|
|
+ int outkilncount1 = 0;
|
|
|
+ if (drs1 != null && drs1.Length > 0)
|
|
|
+ {
|
|
|
+ outkilncount1 = Convert.ToInt32(drs1[0]["outkilncount"]); // 出窑数
|
|
|
+ }
|
|
|
+ DataRow[] drs2 = datanew.Select("goodstypecode2 = '001002'"); //小件
|
|
|
+ int outkilncount2 = 0;
|
|
|
+ if (drs2 != null && drs2.Length > 0)
|
|
|
+ {
|
|
|
+ outkilncount2 = Convert.ToInt32(drs2[0]["outkilncount"]); // 出窑数
|
|
|
+ }
|
|
|
data.Columns.Add("GCount", typeof(int));
|
|
|
//data.Columns.Add("OutGCount", typeof(string));
|
|
|
//data.Columns.Add("GoodGCount", typeof(string));
|
|
|
data.Columns.Add("OutGCount", typeof(decimal));
|
|
|
data.Columns.Add("GoodGCount", typeof(decimal));
|
|
|
|
|
|
+ int outkilncountnew = 0;
|
|
|
+ string goodstypename2new = "";
|
|
|
+ sre.Data = new DataSet();
|
|
|
+ List<DataRow> newRows = new List<DataRow>();
|
|
|
foreach (DataRow item in data.Rows)
|
|
|
{
|
|
|
int gid = Convert.ToInt32(item["gid"]);
|
|
|
@@ -4335,10 +4355,22 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
|
|
|
if (gid == 2)
|
|
|
{
|
|
|
drs = dataCount.Select("goodstypecode2 = '" + item["goodstypecode2"].ToString() + "'");
|
|
|
+ if (drs1[0]["goodstypecode2"] +"" == item["goodstypecode2"].ToString())
|
|
|
+ {
|
|
|
+ outkilncountnew = outkilncount1;
|
|
|
+ goodstypename2new = "大件综合";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ outkilncountnew = outkilncount2;
|
|
|
+ goodstypename2new = "小件综合";
|
|
|
+ }
|
|
|
}
|
|
|
else if (gid == 3)
|
|
|
{
|
|
|
drs = dataCount.Select("goodstypecode2 is null");
|
|
|
+ outkilncountnew = outkilncount1 + outkilncount2;
|
|
|
+ goodstypename2new = "综合总计";
|
|
|
}
|
|
|
if (drs != null && drs.Length > 0)
|
|
|
{
|
|
|
@@ -4357,9 +4389,51 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
|
|
|
item["OutGCount"] = DBNull.Value;
|
|
|
item["GoodGCount"] = DBNull.Value;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ // 新增三行数据
|
|
|
+ DataRow drowRow = data.NewRow();
|
|
|
+ drowRow["productionlinename"] = item["productionlinename"];
|
|
|
+ drowRow["goodstypename2"] = goodstypename2new;
|
|
|
+ drowRow["goodstypecode2"] = item["goodstypecode2"];
|
|
|
+ drowRow["OutKilnCount"] = outkilncountnew;
|
|
|
+ drowRow["GoodCount"] = item["GoodCount"];
|
|
|
+ drowRow["SubstandardCount"] = item["SubstandardCount"];
|
|
|
+ drowRow["Qualified"] = item["Qualified"];
|
|
|
+ drowRow["BadCount"] = item["BadCount"];
|
|
|
+ drowRow["ReFireCount"] = item["ReFireCount"];
|
|
|
+ drowRow["GCount"] = item["GCount"];
|
|
|
+ if (drs != null && drs.Length > 0 && outkilncountnew > 0)
|
|
|
+ {
|
|
|
+ drowRow["OutGCount"] = Math.Round(outkilncountnew * 1.0 / Convert.ToInt32(item["GCount"]), 4);
|
|
|
+ drowRow["GoodGCount"] = Math.Round(goodCount * 1.0 / Convert.ToInt32(item["GCount"]), 4);
|
|
|
+ drowRow["GoodPercent"] = Math.Round(Convert.ToInt32(item["GoodCount"]) * 1.0 / outkilncountnew, 4);
|
|
|
+ drowRow["SubstandardPercent"] = Math.Round(Convert.ToInt32(item["SubstandardCount"]) * 1.0 / outkilncountnew, 4);
|
|
|
+ drowRow["QualifiedPercent"] = Math.Round(Convert.ToInt32(item["Qualified"]) * 1.0 / outkilncountnew, 4);
|
|
|
+ drowRow["BadPercent"] = Math.Round(Convert.ToInt32(item["BadCount"]) * 1.0 / outkilncountnew, 4);
|
|
|
+ drowRow["ReFirePercent"] = Math.Round(Convert.ToInt32(item["ReFireCount"]) * 1.0 / outkilncountnew, 4);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ drowRow["OutGCount"] = DBNull.Value;
|
|
|
+ drowRow["GoodGCount"] = DBNull.Value;
|
|
|
+ drowRow["GoodPercent"] = DBNull.Value;
|
|
|
+ drowRow["SubstandardPercent"] = DBNull.Value;
|
|
|
+ drowRow["QualifiedPercent"] = DBNull.Value;
|
|
|
+ drowRow["BadPercent"] = DBNull.Value;
|
|
|
+ drowRow["ReFirePercent"] = DBNull.Value;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 添加到临时集合
|
|
|
+ newRows.Add(drowRow);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历结束后,统一把新行添加到DataTable
|
|
|
+ foreach (DataRow row in newRows)
|
|
|
+ {
|
|
|
+ data.Rows.Add(row);
|
|
|
}
|
|
|
|
|
|
- sre.Data = new DataSet();
|
|
|
sre.Data.Tables.Add(data);
|
|
|
return sre;
|
|
|
}
|
|
|
@@ -4866,6 +4940,166 @@ namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
+ /// 获取RPT040105画面(质量报表-)的查询sql-本烧的数据260402
|
|
|
+ /// </summary>
|
|
|
+ /// <returns>sql</returns>
|
|
|
+ private static string GetRPT040105S1SQLNew(SUserInfo user, RPT040105_SE se, ref List<OracleParameter> parameters)
|
|
|
+ {
|
|
|
+ parameters.Add(new OracleParameter(":in_AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
|
|
|
+ parameters.Add(new OracleParameter(":in_OutProcedureIDS", OracleDbType.Varchar2, se.OutProcedureIDS, ParameterDirection.Input));
|
|
|
+ parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, se.RptSProcedureID, ParameterDirection.Input));
|
|
|
+ // 202603604
|
|
|
+ StringBuilder selSql = new StringBuilder();
|
|
|
+
|
|
|
+ string sqlString =
|
|
|
+ @" SELECT pcpl.productionlinename
|
|
|
+ ,mstgoodstype2.goodstypename goodstypename2
|
|
|
+ ,mstgoodstype2.goodstypecode goodstypecode2
|
|
|
+ ,ppcc.dtsource ,COUNT(DISTINCT ppcc.barcode) outkilncount
|
|
|
+ FROM ( SELECT DISTINCT nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
|
|
|
+ ,pd.barcode
|
|
|
+ ,pd.productionlineid
|
|
|
+ ,pd.goodsid
|
|
|
+ ,pd.kilnid
|
|
|
+ ,pd.kilncarbatchno
|
|
|
+ ,1 cc
|
|
|
+ ,CASE
|
|
|
+ WHEN pd.procedureid IN (55, 13) THEN
|
|
|
+ '本烧'
|
|
|
+ WHEN pd.procedureid IN (24) THEN
|
|
|
+ '重烧'
|
|
|
+ ELSE
|
|
|
+ '冷修'
|
|
|
+ END dtsource
|
|
|
+ FROM(SELECT *
|
|
|
+ FROM(SELECT pd28.productionlineid
|
|
|
+ , pd28.goodsid
|
|
|
+ , pd28.goodscode
|
|
|
+ , pd28.goodsleveltypeid
|
|
|
+ , pd28.groutingdailydetailid
|
|
|
+ , pd28.kilnid
|
|
|
+ , pd24.procedureid
|
|
|
+ , pd28.kilncarbatchno
|
|
|
+ , pd28.barcode
|
|
|
+ , pd28.productiondataid
|
|
|
+ , row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
|
|
|
+ FROM tp_pm_productiondata pd28-- 重烧质量登记
|
|
|
+ INNER JOIN tp_pm_productiondata pd24-- 重烧修补24 / 冷补42
|
|
|
+ ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
|
|
|
+ INNER JOIN tp_pm_groutingdailydetail gdd
|
|
|
+ ON gdd.groutingdailydetailid = pd28.groutingdailydetailid
|
|
|
+ WHERE pd28.procedureid in (16 )
|
|
|
+ AND pd28.valueflag = 1
|
|
|
+ AND pd24.valueflag = 1 ";
|
|
|
+ selSql.Append(sqlString);
|
|
|
+ // 试验标识
|
|
|
+ if (!string.IsNullOrEmpty(se.TestMouldFlag))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND gdd.TestMouldFlag = :TestMouldFlag ");
|
|
|
+ parameters.Add(new OracleParameter(":TestMouldFlag", OracleDbType.Char, se.TestMouldFlag, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (se.CreateTimeStart.HasValue)
|
|
|
+ {
|
|
|
+ //selSql.Append(" AND pd.checktime >= :checktimeStart\n");
|
|
|
+ selSql.Append(" AND pd28.checktime >= :CreateTimeStart\n");
|
|
|
+ parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, se.CreateTimeStart.Value, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (se.CreateTimeEnd.HasValue)
|
|
|
+ {
|
|
|
+ //selSql.Append(" AND pd.checktime < :checktimeEnd\n");
|
|
|
+ selSql.Append(" AND pd28.checktime < :CreateTimeEnd\n");
|
|
|
+ parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, se.CreateTimeEnd.Value, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(se.GoodsIDS))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND instr(','||:GoodsIDS||',', ','||pd28.GoodsId||',') > 0\n");
|
|
|
+ parameters.Add(new OracleParameter(":GoodsIDS", OracleDbType.NVarchar2, se.GoodsIDS, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (se.ProductionLineID.HasValue)
|
|
|
+ {
|
|
|
+ selSql.Append(" AND pd28.ProductionLineId = :ProductionLineID\n");
|
|
|
+ parameters.Add(new OracleParameter(":ProductionLineID", OracleDbType.Int32, se.ProductionLineID, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(se.GroutingUserIDS))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND instr(','||:GroutingUserIDS||',', ','||pd28.groutinguserid||',') > 0\n");
|
|
|
+ parameters.Add(new OracleParameter(":GroutingUserIDS", OracleDbType.NVarchar2, se.GroutingUserIDS, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(se.GroutingLineIDS))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND instr(','||:GroutingLineIDS||',', ','||pd28.groutinglineid||',') > 0\n");
|
|
|
+ parameters.Add(new OracleParameter(":GroutingLineIDS", OracleDbType.NVarchar2, se.GroutingLineIDS, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (se.KilnID.HasValue)
|
|
|
+ {
|
|
|
+ selSql.Append(" AND pd28.KilnID = :KilnID\n");
|
|
|
+ parameters.Add(new OracleParameter(":KilnID", OracleDbType.Int32, se.KilnID, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ sqlString = @" AND pd24.procedureid IN (55, 13, 42)
|
|
|
+ AND pd24.productiondataid < pd28.productiondataid) t
|
|
|
+ WHERE rownums = 1
|
|
|
+ AND t.procedureid IN (55, 13)) pd
|
|
|
+ LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测
|
|
|
+ ON pd61.procedureid in ( 60 )
|
|
|
+ AND pd61.valueflag = 1
|
|
|
+ AND pd61.groutingdailydetailid = pd.groutingdailydetailid
|
|
|
+ AND pd61.kilncarbatchno = pd.kilncarbatchno
|
|
|
+ AND pd61.productiondataid > pd.productiondataid
|
|
|
+ -- 取最近的数据
|
|
|
+ AND NOT EXISTS (SELECT 1
|
|
|
+ FROM tp_pm_productiondata pd28c -- 重烧质量登记 重复的
|
|
|
+ WHERE pd28c.procedureid in ( 16 )
|
|
|
+ AND pd28c.valueflag = 1
|
|
|
+ AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
|
|
|
+ AND pd28c.kilncarbatchno = pd.kilncarbatchno
|
|
|
+ AND pd28c.productiondataid > pd.productiondataid
|
|
|
+ AND pd28c.productiondataid < pd61.productiondataid) ";
|
|
|
+ selSql.Append(sqlString);
|
|
|
+
|
|
|
+ sqlString =
|
|
|
+ " ) ppcc\n" +
|
|
|
+ " inner join tp_pc_productionline pcpl\n" +
|
|
|
+ " on pcpl.productionlineid = ppcc.productionlineid\n" +
|
|
|
+ " inner join tp_mst_kiln mstkiln\n" +
|
|
|
+ " on mstkiln.kilnid = ppcc.kilnid\n" +
|
|
|
+ " inner join tp_mst_goods mstgoods\n" +
|
|
|
+ " on mstgoods.goodsid = ppcc.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 :in_AccountID = mstgoodstype2.accountid\n";
|
|
|
+ // 产品类别
|
|
|
+ selSql.Append(sqlString);
|
|
|
+ if (!string.IsNullOrEmpty(se.GoodsTypeIDS))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND instr(mstgoodstype.GOODSTYPECode,:GoodsTypeIDS)=1\n");
|
|
|
+ parameters.Add(new OracleParameter(":GoodsTypeIDS", OracleDbType.NVarchar2, se.GoodsTypeIDS, ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ if (!string.IsNullOrEmpty(se.GoodsTypeCode))
|
|
|
+ {
|
|
|
+ selSql.Append(" AND mstgoodstype.GOODSTYPECode LIKE :GoodsTypeCode\n");
|
|
|
+ parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, se.GoodsTypeCode + "%", ParameterDirection.Input));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ selSql.Append(" AND mstgoodstype.GOODSTYPECode LIKE '%' \n");
|
|
|
+ }
|
|
|
+ sqlString = @"GROUP BY pcpl.productionlinename
|
|
|
+ ,mstgoodstype2.goodstypename
|
|
|
+ ,mstgoodstype2.goodstypecode
|
|
|
+ ,ppcc.dtsource
|
|
|
+ ORDER BY pcpl.productionlinename
|
|
|
+ ,ppcc.dtsource
|
|
|
+ ,mstgoodstype2.goodstypecode ";
|
|
|
+
|
|
|
+ selSql.Append(sqlString);
|
|
|
+ return selSql.ToString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
/// 取得RPT040106画面(缺陷报表)的查询数据
|
|
|
/// </summary>
|
|
|
/// <param name="user">登录用户信息</param>
|