|
@@ -3693,6 +3693,293 @@ namespace Dongke.IBOSS.PRD.Service.PDAModuleLogic
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
|
|
+ /// 取得FP00002_1画面(工号产量质量分析表-中陶)的查询数据
|
|
|
|
|
+ /// </summary>
|
|
|
|
|
+ /// <param name="user">登录用户信息</param>
|
|
|
|
|
+ /// <param name="se">查询条件</param>
|
|
|
|
|
+ /// <returns>查询结果</returns>
|
|
|
|
|
+ public static ServiceResultEntity GetFP00002_1Data(SUserInfo user, int rptSProcedureID, string usercode, DateTime date, string goodscode)
|
|
|
|
|
+ {
|
|
|
|
|
+ //if(string.IsNullOrWhiteSpace(usercode))
|
|
|
|
|
+ //{
|
|
|
|
|
+ // ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
|
|
+ // sre.Status = Constant.ServiceResultStatus.NoSearchResults;
|
|
|
|
|
+ // return sre;
|
|
|
|
|
+ //}
|
|
|
|
|
+ IDBConnection conn = null;
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ conn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString);
|
|
|
|
|
+ List<OracleParameter> parameters = new List<OracleParameter>();
|
|
|
|
|
+ date = date.Date;
|
|
|
|
|
+ parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, user.AccountID, ParameterDirection.Input));
|
|
|
|
|
+ parameters.Add(new OracleParameter(":CreateTimeStart", OracleDbType.Date, date, ParameterDirection.Input));
|
|
|
|
|
+ parameters.Add(new OracleParameter(":CreateTimeEnd", OracleDbType.Date, date.AddDays(1), ParameterDirection.Input));
|
|
|
|
|
+ parameters.Add(new OracleParameter(":Usercode", OracleDbType.NVarchar2, usercode, ParameterDirection.Input));
|
|
|
|
|
+ parameters.Add(new OracleParameter(":goodscode", OracleDbType.Varchar2, goodscode, ParameterDirection.Input));
|
|
|
|
|
+
|
|
|
|
|
+ #region
|
|
|
|
|
+ // 产量
|
|
|
|
|
+ string sqlString = "\n" +
|
|
|
|
|
+ "select qdgroup.gid,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 7, '总计', 0, qdgroup.productionlinename, '--') productionlinename,\n" +
|
|
|
|
|
+ " decode(qdgroup.gid, 3, '总计', 1, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
|
|
|
|
|
+ //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 0, qdgroup.goodstypename, '--') goodstypename,\n" +
|
|
|
|
|
+ " decode(qdgroup.gid, 0, qdgroup.goodscode, '') goodscode,\n" +
|
|
|
|
|
+ " to_char(qdgroup.production) production\n" +
|
|
|
|
|
+ " from (select grouping_id(--pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename,\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ " mstgoods.goodscode) gid,\n" +
|
|
|
|
|
+ //" pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename goodstypename2,\n" +
|
|
|
|
|
+ " --qd.usercode,\n" +
|
|
|
|
|
+ //" mstgoodstype.goodstypename,\n" +
|
|
|
|
|
+ " mstgoods.goodscode,\n" +
|
|
|
|
|
+ " sum(qd.production) production\n" +
|
|
|
|
|
+ " from (select --pd.barcode,\n" +
|
|
|
|
|
+ //" pd.productionlineid,\n" +
|
|
|
|
|
+ " pd.procedureid,\n" +
|
|
|
|
|
+ " pd.goodsid,\n" +
|
|
|
|
|
+ " --pd.userid,\n" +
|
|
|
|
|
+ " --pd.usercode,\n" +
|
|
|
|
|
+ " 1 production\n" +
|
|
|
|
|
+ " from tp_pm_productiondata pd\n" +
|
|
|
|
|
+ " where pd.valueflag = '1'\n" +
|
|
|
|
|
+ " and ((pd.modeltype <> 5) or\n" +
|
|
|
|
|
+ " (pd.modeltype = 5 and pd.SpecialRepairFlag = '0'))\n" +
|
|
|
|
|
+ " and pd.Usercode = :Usercode\n" +
|
|
|
|
|
+ " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
|
|
|
|
|
+ " and pd.AccountID = :AccountID\n" +
|
|
|
|
|
+ " AND pd.createtime >= :CreateTimeStart\n" +
|
|
|
|
|
+ " AND pd.createtime < :CreateTimeEnd) qd\n" +
|
|
|
|
|
+ //" left join tp_pc_productionline pcpl\n" +
|
|
|
|
|
+ //" on pcpl.productionlineid = qd.productionlineid\n" +
|
|
|
|
|
+ " left join tp_pc_procedure pcp\n" +
|
|
|
|
|
+ " on pcp.procedureid = qd.procedureid\n" +
|
|
|
|
|
+ " left join tp_mst_goods mstgoods\n" +
|
|
|
|
|
+ " on mstgoods.goodsid = qd.goodsid\n" +
|
|
|
|
|
+ //" left join tp_mst_goodstype mstgoodstype\n" +
|
|
|
|
|
+ //" on mstgoodstype.goodstypeid = mstgoods.goodstypeid\n" +
|
|
|
|
|
+ //" left join tp_mst_goodstype mstgoodstype2\n" +
|
|
|
|
|
+ //" on mstgoodstype2.goodstypecode =\n" +
|
|
|
|
|
+ //" substr(mstgoodstype.goodstypecode, 0, 6)\n" +
|
|
|
|
|
+ " group by grouping sets((--pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename,\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ //" mstgoodstype.goodstypename,\n" +
|
|
|
|
|
+ " mstgoods.goodscode),\n" +
|
|
|
|
|
+ " pcp.procedurename,())\n" +
|
|
|
|
|
+ " order by --pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename,\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ //" mstgoodstype.goodstypename,\n" +
|
|
|
|
|
+ " mstgoods.goodscode) qdgroup";
|
|
|
|
|
+
|
|
|
|
|
+ DataTable data = conn.GetSqlResultToDt(sqlString, parameters.ToArray());
|
|
|
|
|
+ ServiceResultEntity sre = new ServiceResultEntity();
|
|
|
|
|
+ if (data == null)
|
|
|
|
|
+ {
|
|
|
|
|
+ sre.Status = Constant.ServiceResultStatus.NoSearchResults;
|
|
|
|
|
+ return sre;
|
|
|
|
|
+ }
|
|
|
|
|
+ sre.Data = new DataSet();
|
|
|
|
|
+ sre.Data.Tables.Add(data);
|
|
|
|
|
+ #endregion
|
|
|
|
|
+ parameters.Add(new OracleParameter(":in_rptSprocedureId", OracleDbType.Int32, rptSProcedureID, ParameterDirection.Input));
|
|
|
|
|
+ #region
|
|
|
|
|
+ string sqlString1 = "\n" +
|
|
|
|
|
+ "select qdgroup.gid,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 0, qdgroup.productionlinename, '--') productionlinename,\n" +
|
|
|
|
|
+ " decode(qdgroup.gid, 7, '总计', 3, '合计', 0, qdgroup.procedurename, '') procedurename,\n" +
|
|
|
|
|
+ " decode(qdgroup.gid, 1, '小计', 0, qdgroup.kilncode, '') kilncode,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 1, '小计', 0, qdgroup.goodstypename2, '--') goodstypename2,\n" +
|
|
|
|
|
+ //" decode(qdgroup.gid, 0, qdgroup.goodstypename2, '') goodstypename2,\n" +
|
|
|
|
|
+ //" --decode(qdgroup.gid, 0, qdgroup.usercode, '--') usercode,\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" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ " mstkiln.kilncode,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename) gid,\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ " mstgoods.goodscode) gid,\n" +
|
|
|
|
|
+ //" pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ " mstkiln.kilncode,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename goodstypename2,\n" +
|
|
|
|
|
+ //" --qd.usercode,\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" +
|
|
|
|
|
+ " pdata.procedureid,\n" +
|
|
|
|
|
+ //" --pdata.usercode,\n" +
|
|
|
|
|
+ " pdbc.goodsid,\n" +
|
|
|
|
|
+ " pdbc.kilnid,\n" +
|
|
|
|
|
+ " 1 OutKilnCount,\n" +
|
|
|
|
|
+ " case\n" +
|
|
|
|
|
+ " when defect.defectprocedureid is not null and glt.goodsleveltypeid in (5, 6, 7) then\n" +
|
|
|
|
|
+ " 0\n" +
|
|
|
|
|
+ " else\n" +
|
|
|
|
|
+ " 1\n" +
|
|
|
|
|
+ " end GoodCount,\n" +
|
|
|
|
|
+ //" case\n" +
|
|
|
|
|
+ //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 7 then\n" +
|
|
|
|
|
+ //" 1\n" +
|
|
|
|
|
+ //" else\n" +
|
|
|
|
|
+ //" 0\n" +
|
|
|
|
|
+ //" end SubstandardCount,\n" +
|
|
|
|
|
+ //" case\n" +
|
|
|
|
|
+ //" when defect.defectprocedureid is not null and glt.goodsleveltypeid = 6 then\n" +
|
|
|
|
|
+ //" 1\n" +
|
|
|
|
|
+ //" else\n" +
|
|
|
|
|
+ //" 0\n" +
|
|
|
|
|
+ //" end ReFireCount,\n" +
|
|
|
|
|
+ " case\n" +
|
|
|
|
|
+ " when defect.defectprocedureid is not null and 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.kilncarbatchno\n" +
|
|
|
|
|
+ " from tp_pm_productiondata pd\n" +
|
|
|
|
|
+ " where pd.valueflag = '1'\n" +
|
|
|
|
|
+ " and pd.procedureid = :in_rptSprocedureId \n" +
|
|
|
|
|
+ " and pd.AccountID = :AccountID\n" +
|
|
|
|
|
+ " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
|
|
|
|
|
+ " and pd.checktime >= :CreateTimeStart\n" +
|
|
|
|
|
+ " and pd.checktime < :CreateTimeEnd\n" +
|
|
|
|
|
+ " ) pdbc\n" +
|
|
|
|
|
+ " inner join (select pd.barcode,\n" +
|
|
|
|
|
+ //" --pd.userid,\n" +
|
|
|
|
|
+ //" --pd.usercode,\n" +
|
|
|
|
|
+ " pd.procedureid\n" +
|
|
|
|
|
+ " from tp_pm_productiondata pd\n" +
|
|
|
|
|
+ " where pd.valueflag = '1'\n" +
|
|
|
|
|
+ " and pd.AccountID = :AccountID\n" +
|
|
|
|
|
+ " and pd.usercode = :Usercode\n" +
|
|
|
|
|
+ " and (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\n" +
|
|
|
|
|
+ // 公坯、干补不算交坯工序的质量。
|
|
|
|
|
+ //" and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.IsPublicBody = '0' and pd.SpecialRepairFlag = '0')) \n" +
|
|
|
|
|
+ // 干补不算交坯工序的质量。
|
|
|
|
|
+ " and ((pd.modeltype <> 5) or (pd.modeltype = 5 and pd.SpecialRepairFlag = '0')) \n" +
|
|
|
|
|
+ " ) pdata\n" +
|
|
|
|
|
+ " on pdata.barcode = pdbc.barcode\n" +
|
|
|
|
|
+ " left join (select kcbc.barcode, kcbc.kilncarbatchno, kcbc.goodsleveltypeid, kcbc.productiondataid\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 (:goodscode is null or instr(pd.goodscode, :goodscode) > 0)\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\n" +
|
|
|
|
|
+ " left join (select distinct productiondataid, defectprocedureid" +
|
|
|
|
|
+ " from tp_pm_defect def " +
|
|
|
|
|
+ " where def.valueflag='1'" +
|
|
|
|
|
+ " and def.AccountID = :AccountID\n" +
|
|
|
|
|
+ " and (:goodscode is null or instr(def.goodscode, :goodscode) > 0)\n" +
|
|
|
|
|
+ " AND def.createtime >= :CreateTimeStart) defect\n" +
|
|
|
|
|
+ " on defect.productiondataid = glt.productiondataid\n" +
|
|
|
|
|
+ " and pdata.procedureid = defect.defectprocedureid) qd\n" +
|
|
|
|
|
+ //" inner join tp_pc_productionline pcpl\n" +
|
|
|
|
|
+ //" on pcpl.productionlineid = qd.productionlineid\n" +
|
|
|
|
|
+ " inner join tp_pc_procedure pcp\n" +
|
|
|
|
|
+ " on pcp.procedureid = qd.procedureid\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" +
|
|
|
|
|
+ //" inner join tp_mst_goodstype mstgoodstype2\n" +
|
|
|
|
|
+ //" on mstgoodstype2.goodstypecode =\n" +
|
|
|
|
|
+ //" substr(mstgoodstype.goodstypecode, 0, 6)\n" +
|
|
|
|
|
+ //" and mstgoodstype.AccountID = mstgoodstype2.AccountID\n" +
|
|
|
|
|
+ " group by grouping sets((--pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ " mstkiln.kilncode,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename),\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ //" mstgoodstype.goodstypename,\n" +
|
|
|
|
|
+ " mstgoods.goodscode),\n" +
|
|
|
|
|
+ " (--pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ " mstkiln.kilncode),\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename),\n" +
|
|
|
|
|
+ " (--pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename),\n" +
|
|
|
|
|
+ //" mstkiln.kilncode),\n" +
|
|
|
|
|
+ " ())\n" +
|
|
|
|
|
+ " order by --pcpl.productionlinename,\n" +
|
|
|
|
|
+ " pcp.procedurename,\n" +
|
|
|
|
|
+ " mstkiln.kilncode,\n" +
|
|
|
|
|
+ //" mstgoodstype2.goodstypename\n" +
|
|
|
|
|
+ //" --qd.usercode,\n" +
|
|
|
|
|
+ //" mstgoodstype.goodstypename,\n" +
|
|
|
|
|
+ " mstgoods.goodscode\n" +
|
|
|
|
|
+ " ) qdgroup\n";
|
|
|
|
|
+ DataTable data1 = conn.GetSqlResultToDt(sqlString1, parameters.ToArray());
|
|
|
|
|
+ if (data1 == null)
|
|
|
|
|
+ {
|
|
|
|
|
+ sre.Status = Constant.ServiceResultStatus.NoSearchResults;
|
|
|
|
|
+ return sre;
|
|
|
|
|
+ }
|
|
|
|
|
+ sre.Data.Tables.Add(data1);
|
|
|
|
|
+ return sre;
|
|
|
|
|
+ #endregion
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception ex)
|
|
|
|
|
+ {
|
|
|
|
|
+ throw ex;
|
|
|
|
|
+ }
|
|
|
|
|
+ finally
|
|
|
|
|
+ {
|
|
|
|
|
+ if (conn != null &&
|
|
|
|
|
+ conn.ConnState == ConnectionState.Open)
|
|
|
|
|
+ {
|
|
|
|
|
+ conn.Close();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /// <summary>
|
|
|
/// 取得RPT000001画面(半检数据统计表)的查询数据
|
|
/// 取得RPT000001画面(半检数据统计表)的查询数据
|
|
|
/// </summary>
|
|
/// </summary>
|
|
|
/// <param name="user">登录用户信息</param>
|
|
/// <param name="user">登录用户信息</param>
|