/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:ReportModuleLogic.cs * 2.功能描述:生产线报表分析 * 编辑履历: * 作者 日期 版本 修改内容 * 宋扬 2014/11/08 1.00 新建 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using Curtain.DataAccess; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Service.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels; namespace Dongke.IBOSS.PRD.Service.ReportModuleLogic { /// /// 明细报表 /// public class ReportDetailedLogic { /// /// 取得RPT080109(半成检缺陷对照表)的查询数据 /// /// 登录用户信息 /// 查询条件 /// 查询结果 public static ServiceResultEntity GetRPT080109DData(SUserInfo user, RPT030106_SE se) { IDataAccess dataAccess = null; try { dataAccess = DataAccess.Create(DataBaseType.Oracle, Basics.DataAccess.DataManager.ConnectionStringReport); List parameters = new List(); DataTable data = dataAccess.ExecuteDatatable(ReportDetailedLogic.GetRPT080109DSQL(user, se, ref parameters), parameters.ToArray()); ServiceResultEntity sre = new ServiceResultEntity(); if (data == null || data.Rows.Count == 0) { sre.Status = Constant.ServiceResultStatus.NoSearchResults; return sre; } sre.Data = new DataSet(); sre.Data.Tables.Add(data); return sre; } catch (Exception ex) { throw ex; } finally { dataAccess?.Close(); } } /// /// 获取RPT080109画面(半成检缺陷对照表)的信息查询sql /// /// sql private static string GetRPT080109DSQL(SUserInfo user, RPT030106_SE se, ref List parameters) { // 质量登记改判时,缺陷的登记时间是当前时间,不是交接或前次登记时间。 // 追加交接时间,改判标识。 string selSql = "SELECT pmd.productionlinename\n" + " ,pmd.procedurename\n" + " ,pmd.DefectProcedureCode\n" + " ,pmd.DefectProcedureName\n" + " ,pmd.DefectUserCode\n" + " ,pmd.defectusername\n" + " ,jobs.jobsname defectjobsname\n" + " ,dt.DefectTypeName\n" + " ,mstd.Remarks DefectRemarks\n" + " ,pd.Remarks barcodeRemarks\n" + " ,pmd.defectcode\n" + " ,d.alldefectcode\n" + " ,pmd.defectname\n" + " ,pmd.UserCode\n" + " ,pmd.username\n" + " ,gt.Goodstypename\n" + " ,pmd.goodscode\n" + " ,pmd.barcode\n" + " ,pd.groutingdate\n" + " ,pd.groutingnum\n" + " ,pd.groutingMouldCode\n" + " ,pd.GroutingLineCode\n" + " ,pd.KilnCarCode\n" + " ,pd.Procedureid\n" + " ,gl.goodslevelname Goodsleveltype\n" + " ,pmd.DefectPositionCode\n" + " ,pmd.DefectPositionName\n" + " ,pd.GroutingUserCode\n" + " , CASE\n" + " WHEN logo.logoid IS NULL THEN\n" + " NULL\n" + " ELSE\n" + " logo.Logoname || '[' || logo.Logocode || ']'\n" + " END AS LogoCodeName\n" + //" ,pmd.CreateTime\n" + " ,pd.CheckTime pdchecktime\n" + " ,pmd.CheckTime\n" + " ,mstdf.DefectFineCode\n" + " ,pmd.DefectDeductionNum\n" + //" ,to_char(pmd.DefectDeductionNum, '990.00') DefectDeductionNum\n" + " ,hopd.createtime handovertime\n" + " ,(SELECT listagg(to_char(pduc.UserCode), ',') within GROUP(ORDER BY pduc.ProductionDataID) AS WorkUserCodes\n" + " FROM tp_pm_ProductionData pduc\n" + " WHERE pduc.barcode = pmd.barcode\n" + " AND pduc.valueflag = '1') AS WorkUserCodes\n" + " ,(SELECT listagg(to_char(u.UserCode), ',') within GROUP(ORDER BY pdcu.ProductionDataID) AS CreateUserCodes\n" + " FROM tp_pm_ProductionData pdcu\n" + " Left join tp_mst_user u on u.userid = pdcu.createuserid\n" + " WHERE pdcu.barcode = pmd.barcode\n" + " AND pdcu.valueflag = '1') AS CreateUserCodes\n" + " ,(SELECT listagg(to_char(s.StaffName), ',') within GROUP(ORDER BY s.Staffid) AS DefectStaffNames\n" + " FROM TP_PM_DefectResponsible dr\n" + " Left join TP_HR_Staff s on s.Staffid = dr.Staffid\n" + " WHERE dr.ProductionDefectID = pmd.ProductionDefectID --dr pdcu.valueflag = '1'\n" + " ) AS DefectStaffNames\n" + " , CASE\n" + " WHEN pd.isrefire <> '0' THEN\n" + " (select listagg(to_char(d.defectname || '[' || d.defectpositionname || ']')\n" + " ,',') within group(order by d.productiondefectid) bsqx\n" + " from tp_pm_productiondata p\n" + " inner join tp_pm_defect d\n" + " on d.productiondataid = p.productiondataid\n" + " where p.valueflag = '1'\n" + " and d.valueflag = '1'\n" + " and p.barcode = pd.barcode\n" + " and p.modeltype = -1\n" + " and p.isrefire = '0')\n" + " ELSE\n" + " null\n" + " END AS bsqx\n" + " , CASE\n" + " WHEN EXISTS (SELECT 1\n" + " FROM tp_pm_ProductionData pdud\n" + " WHERE pdud.barcode = pmd.barcode\n" + " AND pdud.modeltype = -1\n" + " AND pdud.procedureid = pd.procedureid\n" + " AND pdud.kilncarbatchno = pd.kilncarbatchno\n" + " AND pdud.valueflag = '0') THEN\n" + " 1\n" + " ELSE\n" + " 0\n" + " END AS undoflag\n" + " ,semid.DEFECTNAME AS 半检缺陷\n" + //" ,'[' || semid.DEFECTPOSITIONCODE || ']' ||semid.DEFECTPOSITIONNAME AS 半检位置\n" + " ,semid.DEFECTPOSITIONCODE AS 位置编码\n" + " ,semid.DEFECTPOSITIONNAME AS 半检位置\n" + " ,semi.SEMIREWORKUSERCODE AS 半检工号\n" + " FROM tp_pm_defect pmd\n" + " LEFT JOIN TP_PC_Procedure p\n" + " ON p.procedureid = pmd.procedureid\n" + " LEFT JOIN TP_PC_Procedure pdd\n" + " ON pdd.procedureid = pmd.defectprocedureid\n" + " LEFT JOIN TP_MST_Goods g\n" + " ON pmd.Goodsid = g.Goodsid\n" + " LEFT JOIN TP_MST_GoodsType gt\n" + " ON g.GoodsTypeID = gt.GoodsTypeID\n" + " LEFT JOIN TP_MST_Defect mstd\n" + " ON pmd.DefectID = mstd.DefectID\n" + " LEFT JOIN TP_MST_Jobs jobs\n" + " ON jobs.jobsid = pmd.Defectjobs\n" + " LEFT JOIN TP_MST_DefectType dt\n" + " ON mstd.DefectTypeID = dt.DefectTypeID\n" + " INNER JOIN tp_pm_productiondata pd\n" + " ON pmd.ProductionDataID = pd.ProductionDataID\n" + " LEFT JOIN tp_mst_goodslevel gl\n" + " ON pd.goodslevelid = gl.goodslevelid\n" + //"-- 交接工序\n" + //" INNER JOIN tp_pm_productiondata hopd\n" + //" ON hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = :HandOverProcedureID) \n" + //" AND hopd.valueflag = '1'\n" + //" AND hopd.barcode = pd.barcode\n" + //" AND hopd.kilncarbatchno = pd.kilncarbatchno\n" + " INNER JOIN tp_pm_productiondata hopd\n" + " ON hopd.kilncarbatchno = pd.kilncarbatchno\n " + " AND hopd.barcode = pd.barcode\n" + " AND hopd.valueflag = '1'\n" + " AND hopd.procedureid = (select procedureid from tp_mst_rptsprocedure t where t.rptprocedureid = @HandOverProcedureID@) \n" + " LEFT JOIN TP_MST_DefectFine mstdf\n" + " ON pmd.DefectFine = mstdf.DefectFineID\n" + " LEFT JOIN tp_mst_logo logo\n" + " ON pd.logoid = logo.logoid\n" + " LEFT JOIN (SELECT def.barcode, wmsys.wm_concat( to_char(def.defectcode)) alldefectcode\n" + " FROM tp_pm_defect def\n" + " WHERE def.valueflag = '1'\n" + //def.createtime " group by def.barcode ) d\n" + " ON d.barcode = pmd.barcode\n" + " INNER JOIN TP_PM_SEMIREWORK semi ON semi.GROUTINGDAILYDETAILID = hopd.GROUTINGDAILYDETAILID AND semi.VALUEFLAG = '1' AND semi.BACKOUTFLAG = '0' \n" + " INNER JOIN TP_PM_SEMIREWORKDEFECT semid ON semi.SEMIREWORKID = semid.SEMIREWORKDEFECTID AND semid.VALUEFLAG = '1' \n" + " WHERE pmd.valueflag = '1' \n" + " AND pd.ModelType = -1\n" + " AND pmd.AccountID = @AccountID@\n"; parameters.Add(new CDAParameter("@AccountID@", user.AccountID)); parameters.Add(new CDAParameter("@HandOverProcedureID@", se.HandOverProcedureID)); //selSql = selSql + // " Where TP_PM_Defect.valueflag='1' and tp_pm_productiondata.ModelType=-1" + // " and TP_PM_Defect.AccountID=:AccountID "; if (!string.IsNullOrEmpty(se.GoodsTypeCode)) { selSql = selSql + " AND instr(gt.GOODSTYPECode,@GoodsTypeCode@)=1 "; parameters.Add(new CDAParameter("@GoodsTypeCode@", se.GoodsTypeCode)); } if (!string.IsNullOrEmpty(se.LineIDS)) { selSql = selSql + " AND instr(','||@ProductionLineIDS@||',',','||pmd.ProductionLineId||',')>0 "; parameters.Add(new CDAParameter("@ProductionLineIDS@", se.LineIDS)); } if (!string.IsNullOrEmpty(se.DefectProcedureIDS)) { //selSql = selSql + " AND (instr(','||:DefectProcedureIDS||',',','||TP_PM_Defect.DefectProcedureID||',')>0 or TP_PM_Defect.DefectProcedureID is null ) "; selSql = selSql + " AND (instr(','||@DefectProcedureIDS@||',',','||pmd.DefectProcedureID||',')>0 ) "; parameters.Add(new CDAParameter("@DefectProcedureIDS@", se.DefectProcedureIDS)); } else { // modify by chenxy :没有选择时,应全查询出来。 //selSql = selSql + " AND TP_PM_Defect.DefectProcedureID is null ";//因为有无责任工序 } if (!string.IsNullOrEmpty(se.CheckProcedureIDS)) { selSql = selSql + " AND instr(','||@ProcedureIDS@||',',','||pmd.ProcedureID||',')>0 "; parameters.Add(new CDAParameter("@ProcedureIDS@", se.CheckProcedureIDS)); } if (!string.IsNullOrEmpty(se.KilnCode)) { selSql = selSql + " AND instr(pd.KilnCode,@KilnCode@) >0 "; parameters.Add(new CDAParameter("@KilnCode@", se.KilnCode)); } if (!string.IsNullOrEmpty(se.GoodsIDS)) { selSql = selSql + " AND instr(','||@GoodsIDS@||',',','||pmd.Goodsid||',')>0 "; parameters.Add(new CDAParameter("@GoodsIDS@", se.GoodsIDS)); } if (!string.IsNullOrEmpty(se.GoodsCode)) { selSql = selSql + " AND instr(pmd.goodsCode,@GoodsCode@) >0 "; parameters.Add(new CDAParameter("@GoodsCode@", se.GoodsCode)); } if (!string.IsNullOrEmpty(se.GoodsCodeS2D)) { selSql = selSql + " AND pmd.goodsCode = @GoodsCodeS2D@ "; parameters.Add(new CDAParameter("@GoodsCodeS2D@", se.GoodsCodeS2D)); } if (!string.IsNullOrEmpty(se.DefectUserCode)) { selSql = selSql + " AND instr(pmd.DefectUserCode,@DefectUserCode@) >0 "; parameters.Add(new CDAParameter("@DefectUserCode@", se.DefectUserCode)); } if (!string.IsNullOrEmpty(se.DefectTypeIDS)) { selSql = selSql + " AND instr(','||@DefectTypeIDS@||',',','||dt.DefectTypeID||',')>0 "; parameters.Add(new CDAParameter("@DefectTypeIDS@", se.DefectTypeIDS)); } if (!string.IsNullOrEmpty(se.DefectCode)) { selSql = selSql + " AND instr(pmd.DefectCode,@DefectCode@) >0 "; parameters.Add(new CDAParameter("@DefectCode@", se.DefectCode)); } if (!string.IsNullOrEmpty(se.DefectCodeS2D)) { selSql = selSql + " AND pmd.DefectCode = @DefectCodeS2D@ "; parameters.Add(new CDAParameter("@DefectCodeS2D@", se.DefectCodeS2D)); } if (!string.IsNullOrEmpty(se.DefectName)) { selSql = selSql + " AND instr(pmd.DefectName,@DefectName@) >0 "; parameters.Add(new CDAParameter("@DefectName@", se.DefectName)); } if (!string.IsNullOrEmpty(se.CheckUserCode)) { selSql = selSql + " AND instr(pmd.UserCode,@UserCode@) >0"; parameters.Add(new CDAParameter("@UserCode@", se.CheckUserCode)); } if (!string.IsNullOrEmpty(se.CheckUserCodeS2D)) { selSql = selSql + " AND pmd.UserCode = @CheckUserCodeS2D@ "; parameters.Add(new CDAParameter("@CheckUserCodeS2D@", se.CheckUserCodeS2D)); } // 成检登记时间 if (se.CreateTimeStart.HasValue) { selSql = selSql + " AND pd.checktime>= @CreateTimeStart@ "; parameters.Add(new CDAParameter("@CreateTimeStart@", se.CreateTimeStart.Value)); } if (se.CreateTimeEnd.HasValue) { selSql = selSql + " AND pd.checktime<= @CreateTimeEnd@ "; parameters.Add(new CDAParameter("@CreateTimeEnd@", se.CreateTimeEnd.Value)); } // 缺陷登记时间 if (se.CheckTimeStart.HasValue) { selSql = selSql + " AND pmd.checktime>= @CheckTimeStart@ "; parameters.Add(new CDAParameter("@CheckTimeStart@", se.CheckTimeStart.Value)); } if (se.CheckTimeEnd.HasValue) { selSql = selSql + " AND pmd.checktime<= @CheckTimeEnd@ "; parameters.Add(new CDAParameter("@CheckTimeEnd@", se.CheckTimeEnd.Value)); } // 交接时间 if (se.HandOverTimeStart.HasValue) { selSql = selSql + " AND hopd.CreateTime>= @HandOverTimeStart@ "; parameters.Add(new CDAParameter("@HandOverTimeStart@", se.HandOverTimeStart.Value)); } if (se.HandOverTimeEnd.HasValue) { selSql = selSql + " AND hopd.CreateTime<= @HandOverTimeEnd@ "; parameters.Add(new CDAParameter("@HandOverTimeEnd@", se.HandOverTimeEnd.Value)); } //selSql = selSql + " order by pmd.productionlinename,pmd.procedurename,pmd.defectprocedurename,pmd.defectusercode "; selSql = selSql + " order by pmd.productionlinename,p.DISPLAYNO,pdd.DISPLAYNO,dt.DISPLAYNO,mstd.DISPLAYNO,pmd.defectusercode,pmd.barcode "; return selSql; } } }