/******************************************************************************* * Copyright(c) 2014 DongkeSoft All rights reserved. / Confidential * 类的信息: * 1.程序名称:PMModuleLogic.cs * 2.功能描述:生产管理信息与数据库的交互类 * 编辑履历: * 作者 日期 版本 修改内容 * 庄天威 2014/09/17 1.00 新建 * 徐伟 2019/09/26 1.00 修改 *******************************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Text; using Dongke.IBOSS.PRD.Basics.BaseResources; using Dongke.IBOSS.PRD.Basics.DataAccess; using Dongke.IBOSS.PRD.Basics.Library; using Dongke.IBOSS.PRD.Service.CMNModuleService; using Dongke.IBOSS.PRD.Service.DataModels; using Dongke.IBOSS.PRD.Service.SAPHegiiDataService; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.DataModels.PMModule; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Oracle.ManagedDataAccess.Client; namespace Dongke.IBOSS.PRD.Service.PMModuleLogic { /// /// 生产管理信息与数据库的交互类 /// public partial class PMModuleLogic { #region 注浆日报表 /// /// 获得注浆日报表 /// /// 注浆日报实体 /// 用户基本信息 /// 数据源Dataset /// /// 庄天威 2014.09.10 新建 /// public static DataSet GetGroutingDaily(GroutingDailyEntity groutingDailyEntity, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("GroutingDailyID",OracleDbType.Int32, groutingDailyEntity.GroutingDailyID,ParameterDirection.Input), new OracleParameter("AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("GroutingLineCode",OracleDbType.NVarchar2, groutingDailyEntity.GroutingLineCode,ParameterDirection.Input), new OracleParameter("GroutingLineName",OracleDbType.NVarchar2, groutingDailyEntity.GroutingLineName,ParameterDirection.Input), new OracleParameter("GroutingDateStart",OracleDbType.Date, groutingDailyEntity.GroutingDate,ParameterDirection.Input), new OracleParameter("GroutingDateEnd",OracleDbType.Date, groutingDailyEntity.GroutingDateEnd,ParameterDirection.Input), new OracleParameter("GroutingMouldCode",OracleDbType.NVarchar2, groutingDailyEntity.GroutingMouldCode,ParameterDirection.Input), new OracleParameter("GoodsCode",OracleDbType.NVarchar2, groutingDailyEntity.GoodsCode,ParameterDirection.Input), new OracleParameter("GoodsName",OracleDbType.NVarchar2, groutingDailyEntity.GoodsName,ParameterDirection.Input), new OracleParameter("GroutingFlag",OracleDbType.Int32, groutingDailyEntity.GroutingFlag,ParameterDirection.Input), new OracleParameter("ScrapFlag",OracleDbType.Int32, groutingDailyEntity.ScrapFlag,ParameterDirection.Input), new OracleParameter("GMouldTypeID",OracleDbType.Int32, groutingDailyEntity.GMouldTypeID,ParameterDirection.Input), new OracleParameter("remarks",OracleDbType.NVarchar2, groutingDailyEntity.Remarks,ParameterDirection.Input), new OracleParameter("UserId",OracleDbType.Int32, user.UserID,ParameterDirection.Input), new OracleParameter("PurviewType",OracleDbType.Int32, groutingDailyEntity.Purview,ParameterDirection.Input), new OracleParameter("rs_result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGroutingDaily", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获得注浆日报表明细(根据注浆日报表ID) /// /// 注浆日报主ID /// 用户基本信息 /// Dataset数据源 /// /// 庄天威 2014.09.10 新建 /// public static DataSet GetGroutingDailyDetailByMainId(int DailyMainId, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("GroutingDailyID",OracleDbType.Int32, DailyMainId,ParameterDirection.Input), new OracleParameter("rs_result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGDailyDetailByMainId", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获得注浆产品(根据注浆日报明细ID) /// /// 注浆日报明细ID /// 用户基本信息 /// string条码字符串集合 /// /// 庄天威 2014.09.10 新建 /// public static string GetGroutingProductByDetailId(int DailyDetailId, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); StringBuilder sbSql = new StringBuilder(); sbSql.Append(" select Barcode from TP_PM_GroutingProduct where GroutingDailyDetailID=" + DailyDetailId); DataSet dsProduct = con.GetSqlResultToDs(sbSql.ToString(), null); StringBuilder sbBarCodeList = new StringBuilder(); if (dsProduct.Tables.Count != 0) { foreach (DataRow dr in dsProduct.Tables[0].Rows) { sbBarCodeList.Append(dr[0].ToString() + ","); } } if (sbBarCodeList.Length != 0) { return sbBarCodeList.ToString().Substring(0, sbBarCodeList.Length - 1); } else { return ""; } } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 查看某成型线今天是否注浆 /// /// 成型线ID /// 注浆时间 /// int /// /// 庄天威 2014.09.29 新建 /// public static int GetCanManyTimes(int GroutingLineID, DateTime GroutingDate) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); StringBuilder sbSql = new StringBuilder(); sbSql.Append("select GroutingdailyId from TP_PM_GroutingDaily"); sbSql.Append(" where Groutingdate = to_date('" + GroutingDate.ToString() + "','yyyy-MM-dd hh24:mi:ss')"); sbSql.Append(" and CanManyTimes = 0 and GroutingLineID = " + GroutingLineID); DataTable dtReturn = con.GetSqlResultToDt(sbSql.ToString(), null); if (dtReturn != null) { return dtReturn.Rows.Count; } else { return 0; } } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据成型线ID获取注浆明细信息(外联条码) /// /// 成型线ID集 /// 注浆时间起始 /// 注浆时间终止 /// 用户基本信息 /// DataSet /// /// 庄天威 2014.09.30 新建 /// public static DataSet GetGDailyDetailLeftBarCode(string GroutingLineIds, DateTime? GroutingDateStart, DateTime? GroutingDateEnd, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string GroutingDateStartStr = null; string GroutingDateEndStr = null; if (GroutingDateStart != null) { GroutingDateStartStr = GroutingDateStart.ToString(); } if (GroutingDateEnd != null) { GroutingDateEndStr = GroutingDateEnd.ToString(); } OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("GroutingLineID",OracleDbType.NVarchar2, GroutingLineIds,ParameterDirection.Input), new OracleParameter("GroutingDateStart",OracleDbType.NVarchar2, GroutingDateStartStr,ParameterDirection.Input), new OracleParameter("GroutingDateEnd",OracleDbType.NVarchar2, GroutingDateEndStr,ParameterDirection.Input), new OracleParameter("AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("rs_result",OracleDbType.RefCursor, ParameterDirection.Output) }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetGDailyDetailLBarCode", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 条码检索 /// /// 条码检索实体 /// 用户基本信息 /// 数据源Dataset /// /// 庄天威 2014.09.10 新建 /// public static DataSet GetBarCode(GetBarCodeEntity gbEntity, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("In_GroutingLineCode",OracleDbType.NVarchar2, gbEntity.GroutingLineCode,ParameterDirection.Input), new OracleParameter("In_GroutingLineDetailCode",OracleDbType.NVarchar2, gbEntity.GroutingLineDetailCode,ParameterDirection.Input), new OracleParameter("In_GroutingUserCode",OracleDbType.NVarchar2, gbEntity.GroutingUserCode,ParameterDirection.Input), new OracleParameter("In_GroutingDateS",OracleDbType.Date, gbEntity.GroutingDateS,ParameterDirection.Input), new OracleParameter("In_GroutingDateE",OracleDbType.Date, gbEntity.GroutingDateE,ParameterDirection.Input), new OracleParameter("In_AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("Out_Result",OracleDbType.RefCursor, ParameterDirection.Output) }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetBarCode", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 废弃产品 /// /// 根据条码获取该产品的在产信息以及生产数据 /// /// 产品条码 /// 装有两个DataTable的数据集,第一个是在产信息,第二个是生产数据 public static DataSet GetInProductionAndProductionData(string BarCode, SUserInfo sUserInfo) { DataSet dsList = new DataSet(); IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); StringBuilder sbSql = new StringBuilder(); ////sbSql.Append("Select inp.*,pt.ProcedureModelTypeID from TP_PM_InProduction inp "); ////sbSql.Append(" Inner join TP_PC_Procedure p"); //////sbSql.Append(" On inp.CompleteProcedureID = p.ProcedureID"); ////sbSql.Append(" On inp.FlowProcedureID = p.ProcedureID"); ////sbSql.Append(" Inner join TP_SYS_ProcedureModelType pt"); ////sbSql.Append(" On p.ModelType = pt.ProcedureModelTypeID"); ////sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1"); sbSql.Append("Select inp.*, p.ProcedureCode,p.ProcedureName, inp.ModelType as ProcedureModelTypeID,1 as endmode from TP_PM_InProduction inp "); sbSql.Append(" inner join tp_pc_Procedure p on p.ProcedureID = inp.ProcedureID "); sbSql.Append(" where inp.Barcode=:Barcode and inp.ValueFlag=1"); OracleParameter[] Paras = new OracleParameter[]{ new OracleParameter(":Barcode",OracleDbType.NVarchar2, BarCode,ParameterDirection.Input), }; DataTable dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras); if (dtProduction != null) { if (dtProduction.Rows.Count != 0) { dsList.Tables.Add(dtProduction); } else { //在产产品不存在的话,看看是不是变成了成品 sbSql.Clear(); sbSql.Append("Select fp.*,2 as endmode from TP_PM_FinishedProduct fp "); sbSql.Append(" where fp.Barcode=:Barcode and fp.ValueFlag=1"); dtProduction = con.GetSqlResultToDt(sbSql.ToString(), Paras); if (dtProduction != null) { dsList.Tables.Add(dtProduction); } } } else { return null; } DataSet sysSetting = CommonModuleLogic.CommonModuleLogic.GetSysSettingBySettingType("S_PM_015", sUserInfo); string spm015 = null; if (sysSetting != null && sysSetting.Tables.Count > 0 && sysSetting.Tables[0].Rows.Count > 0) { spm015 = sysSetting.Tables[0].Rows[0]["SettingValue"] + ""; } sbSql.Clear(); sbSql.Append("Select ProductionDataID,ProcedureID,ProcedureName,ProcedureCode from TP_PM_ProductionDataIn where Barcode=:Barcode and ValueFlag=1 "); // 报损不能选成型责任 if ("0" == spm015) { sbSql.Append(" and MODELTYPE <> 5"); } sbSql.Append(" order by ProductionDataid"); DataTable dtProductionData = con.GetSqlResultToDt(sbSql.ToString(), Paras); if (dtProductionData != null) { dsList.Tables.Add(dtProductionData); } else { return null; } return dsList; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据页面条件获取废弃产品一览 /// /// 废弃产品 /// 用户基本信息 /// DataSet public static DataSet GetScrapProduct(ScrapProductEntity selectProEntity, SUserInfo userInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_ProductionLineCode",OracleDbType.NVarchar2, selectProEntity.ProductionLineCode,ParameterDirection.Input), new OracleParameter("in_ProductionLineName",OracleDbType.NVarchar2, selectProEntity.ProductionLineName,ParameterDirection.Input), new OracleParameter("in_ResponProcedureCode",OracleDbType.NVarchar2, selectProEntity.ResponProcedureCode,ParameterDirection.Input), new OracleParameter("in_ResponProcedureName",OracleDbType.NVarchar2, selectProEntity.ResponProcedureName,ParameterDirection.Input), new OracleParameter("in_ScrapProductID",OracleDbType.Int32, selectProEntity.ScrapProductID,ParameterDirection.Input), new OracleParameter("in_BarCode",OracleDbType.NVarchar2, selectProEntity.BarCode,ParameterDirection.Input), //new OracleParameter("in_ResponUserID",OracleDbType.Int32, // selectProEntity.ResponUserID,ParameterDirection.Input), new OracleParameter("in_ResponUserCode",OracleDbType.Varchar2, selectProEntity.ResponUserCode,ParameterDirection.Input), new OracleParameter("in_GoodsCode",OracleDbType.NVarchar2, selectProEntity.GoodsCode,ParameterDirection.Input), new OracleParameter("in_GoodsName",OracleDbType.NVarchar2, selectProEntity.GoodsName,ParameterDirection.Input), new OracleParameter("in_Rreason",OracleDbType.NVarchar2, selectProEntity.Rreason,ParameterDirection.Input), new OracleParameter("in_Remarks",OracleDbType.NVarchar2, selectProEntity.Remarks,ParameterDirection.Input), new OracleParameter("in_ScrapDateStart",OracleDbType.Date, selectProEntity.ScrapDate,ParameterDirection.Input), new OracleParameter("in_ScrapDateEnd",OracleDbType.Date, selectProEntity.ScrapDateEnd,ParameterDirection.Input), new OracleParameter("in_AccountID",OracleDbType.Int32, userInfo.AccountID,ParameterDirection.Input), new OracleParameter("in_AuditStatus",OracleDbType.Int32, selectProEntity.AuditStatus,ParameterDirection.Input), new OracleParameter("in_GroutingUserCode",OracleDbType.Varchar2, selectProEntity.GroutingUserCode,ParameterDirection.Input), new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet dsReturn = con.ExecStoredProcedure("PRO_PM_GetScrapProduct", paras); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据责任工序ID获取责任人列表 /// /// 责任工序ID /// DataSet public static DataSet GetScrapResponsibleByResponProcedureID(int ResponProcedureId) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string strSql = "Select * from TP_PM_ScrapResponsible where ValueFlag=1 and ResponProcedureID=" + ResponProcedureId; DataSet dsReturn = con.GetSqlResultToDs(strSql); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据废弃产品ID获取责任人列表 /// /// 废弃产品ID /// DataSet public static DataSet GetScrapResponsibleBySPId(int SPId) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string strSql = @"Select sr.*,userinfo.userName from TP_PM_ScrapResponsible sr inner join TP_MST_User userinfo on sr.UserID = userinfo.UserID where ScrapProductID=" + SPId; DataSet dsReturn = con.GetSqlResultToDs(strSql); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据废弃产品ID获取责任工序 /// /// 废弃产品ID /// DataSet public static DataSet GetResponProcedureBySPId(int SPId) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string strSql = "Select * from TP_PM_ResponProcedure where ValueFlag=1 and ScrapProductID=" + SPId; DataSet dsReturn = con.GetSqlResultToDs(strSql); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 验证废弃产品唯一性 /// /// 产品条码 /// int public static string ScrapProductChack(string BarCode, SUserInfo sUserInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); // 当前工号是否有条码所在工序的操作权限 string sqlString = "SELECT inp.procedureid\n" + " ,p.procedurename\n" + " ,p.MODELTYPE\n" + " ,(SELECT 1\n" + " FROM tp_mst_userpurview t\n" + " WHERE t.purviewtype = 10\n" + " AND t.userid = :userid\n" + " AND (t.purviewid = -1 OR t.purviewid = inp.procedureid)\n" + " AND rownum = 1) userpurview\n" + " FROM tp_pm_inproduction inp\n" + " LEFT JOIN tp_pc_procedure p\n" + " ON p.procedureid = inp.procedureid\n" + " WHERE inp.barcode = :barcode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":userid",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":barcode",OracleDbType.Varchar2, BarCode,ParameterDirection.Input), }; DataTable dt = con.GetSqlResultToDt(sqlString, paras); if (dt == null || dt.Rows.Count == 0) { // 条码不在产。 return "2"; } object userpurview = dt.Rows[0]["userpurview"]; if (userpurview == null || userpurview == DBNull.Value) { return "3:" + dt.Rows[0]["procedurename"]; } int MODELTYPE = Convert.ToInt32(dt.Rows[0]["MODELTYPE"]); if (MODELTYPE == 1 || MODELTYPE == 2 || MODELTYPE == 3 || MODELTYPE == 6) { return "4:该产品处于无法报损的特殊工序中"; } #region 判断产品是否被挂起 sqlString = "SELECT 1 AS RES\n" + " FROM TP_PM_PRODUCTSUSPEND PS\n" + " INNER JOIN TP_PM_GROUTINGDAILYDETAIL GDD\n" + " ON GDD.GROUTINGDAILYDETAILID = PS.GROUTINGDAILYDETAILID\n" + " WHERE GDD.BARCODE = :Barcode"; OracleParameter[] pars = new OracleParameter[] { new OracleParameter(":Barcode",OracleDbType.NVarchar2, BarCode,ParameterDirection.Input), }; object objResult = con.GetSqlResultToObj(sqlString, pars); if (objResult != null) { return "4:该产品被挂起"; } #endregion /* string strSql = @"Select * from TP_PM_ScrapProduct where ValueFlag=1 and BarCode='" + BarCode + "' and (AuditStatus=0 or AuditStatus=1) " ; */ string strSql = "select GoodsLevelTypeID,AuditStatus from TP_PM_ScrapProduct " + " where BarCode='" + BarCode + "'and CreateTime=(select max(CreateTime) " + " from TP_PM_ScrapProduct " + " where BarCode='" + BarCode + "' and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0 )" + " and ValueFlag=1 and (AuditStatus = 0 or AuditStatus = 1) and recyclingflag=0"; DataSet dsReturn = con.GetSqlResultToDs(strSql); if (dsReturn.Tables[0].Rows.Count == 0) { return "1"; } else { if (dsReturn.Tables[0].Rows[0]["GOODSLEVELTYPEID"].ToString().Equals("9") && dsReturn.Tables[0].Rows[0]["AUDITSTATUS"].ToString().Equals("1")) { return "1"; } return "0"; } } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 温湿计信息 /// /// 获得温湿计信息 /// /// 温湿计信息实体 /// 用户基本信息 /// 数据源Dataset /// /// 庄天威 2014.09.10 新建 /// public static DataSet GetCelsiusRecord(CelsiusRecordEntity celsiusRecordEntity, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("In_RecordID",OracleDbType.Int32, celsiusRecordEntity.RecordID,ParameterDirection.Input), new OracleParameter("In_PurviewType",OracleDbType.Int32, celsiusRecordEntity.PurviewType,ParameterDirection.Input), new OracleParameter("In_AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("In_ThermometerID",OracleDbType.Int32, celsiusRecordEntity.ThermometerID,ParameterDirection.Input), new OracleParameter("In_ThermometerCode",OracleDbType.NVarchar2, celsiusRecordEntity.ThermometerCode,ParameterDirection.Input), new OracleParameter("In_RecorderID",OracleDbType.Int32, user.UserID,ParameterDirection.Input), new OracleParameter("In_RecordDateS",OracleDbType.Date, celsiusRecordEntity.RecordDate,ParameterDirection.Input), new OracleParameter("In_RecordDateE",OracleDbType.Date, celsiusRecordEntity.RecordDateEnd,ParameterDirection.Input), new OracleParameter("In_Remarks",OracleDbType.NVarchar2, celsiusRecordEntity.Remarks,ParameterDirection.Input), new OracleParameter("In_ManagerName",OracleDbType.NVarchar2, celsiusRecordEntity.ManagerName,ParameterDirection.Input), new OracleParameter("In_InsertTime",OracleDbType.Date, celsiusRecordEntity.InsertTime,ParameterDirection.Input), new OracleParameter("Out_Result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetCelsiusRecord", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获得温湿计信息(图表用,平均值) /// /// 温湿计信息实体 /// 用户基本信息 /// 数据源Dataset /// /// 庄天威 2014.09.10 新建 /// public static DataSet GetCelsiusRecordView(CelsiusRecordEntity celsiusRecordEntity, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("In_AccountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("In_LookerID",OracleDbType.Int32, user.UserID,ParameterDirection.Input), new OracleParameter("In_ThermometerCode",OracleDbType.NVarchar2, celsiusRecordEntity.ThermometerCode,ParameterDirection.Input), new OracleParameter("In_RecordDateS",OracleDbType.Date, celsiusRecordEntity.RecordDate,ParameterDirection.Input), new OracleParameter("In_RecordDateE",OracleDbType.Date, celsiusRecordEntity.RecordDateEnd,ParameterDirection.Input), new OracleParameter("In_Remarks",OracleDbType.NVarchar2, celsiusRecordEntity.Remarks,ParameterDirection.Input), new OracleParameter("In_Days",OracleDbType.NVarchar2, celsiusRecordEntity.Days,ParameterDirection.Input), new OracleParameter("Out_Result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_GetCelsiusRecordView", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 获取注浆次数(By工号) /// /// 获取注浆次数(By工号) /// /// 查询条件实体 /// 当前用户 /// 返回信息数据集 public static DataSet GetGroutingCountByUser(GroutingCountByUserEntity gcEntity, SUserInfo userInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("In_AccountID",OracleDbType.Int32, userInfo.AccountID,ParameterDirection.Input), new OracleParameter("In_GroutingDateS",OracleDbType.Date, gcEntity.GroutingDateS,ParameterDirection.Input), new OracleParameter("In_GroutingDateE",OracleDbType.Date, gcEntity.GroutingDateE,ParameterDirection.Input), new OracleParameter("In_GroutingLineCode",OracleDbType.NVarchar2, gcEntity.GroutingLineCode,ParameterDirection.Input), new OracleParameter("In_UserId",OracleDbType.Int32, gcEntity.UserId,ParameterDirection.Input), new OracleParameter("In_UserIds",OracleDbType.NVarchar2, gcEntity.UserIds,ParameterDirection.Input), new OracleParameter("In_UserCode",OracleDbType.NVarchar2, gcEntity.UserCode,ParameterDirection.Input), new OracleParameter("In_GoodsId",OracleDbType.Int32, gcEntity.GoodsId,ParameterDirection.Input), new OracleParameter("In_GoodsIds",OracleDbType.NVarchar2, gcEntity.GoodsIds,ParameterDirection.Input), new OracleParameter("In_GoodsTypeCode",OracleDbType.NVarchar2, gcEntity.GoodsTypeCode,ParameterDirection.Input), new OracleParameter("In_GoodsCode",OracleDbType.NVarchar2, gcEntity.GoodsCode,ParameterDirection.Input), new OracleParameter("Out_Result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_RPT_GetGroutingCountByUser", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 根据条码获得在产信息 /// /// 根据条码获得在产信息 /// /// 产品条码 /// DataSet public static DataSet GetInProductionByBarcode(string barcode) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = "select t.goodsid,t.goodsname,t.userid from tp_pm_InProduction t where t.barcode= " + barcode; DataSet ds = con.GetSqlResultToDs(sqlString); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 获取生产工序计件数据 /// /// 使用存储过程PRO_PM_SearchProductionData获取生产工序计件数据 /// /// 生产数据实体类 /// DataTable public static DataTable SearchProductionData(SearchProductionDataEntity searchEntity) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); string procsql = "PRO_PM_SearchProductionData"; try { IDataParameter[] paras = new OracleParameter[] { new OracleParameter("in_beginDate",OracleDbType.Date, searchEntity.BeginDate, ParameterDirection.Input), new OracleParameter("in_endDate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input), new OracleParameter("in_procedureID", OracleDbType.Int32,searchEntity.ProcedureID, ParameterDirection.Input), new OracleParameter("in_modeltype", OracleDbType.Int32,searchEntity.ProcedureModelId, ParameterDirection.Input), new OracleParameter("in_organizationid", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input), new OracleParameter("in_isreworked", OracleDbType.NVarchar2,searchEntity.IsRework, ParameterDirection.Input), new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output) }; oracleConn.Open(); DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras); if (returnDs != null && returnDs.Tables.Count > 0) { return returnDs.Tables[0]; } else { return null; } } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据 /// /// 生产数据实体类 /// 用户基本信息 /// DataTable public static DataTable GetProductionData(SearchProductionDataEntity searchEntity, SUserInfo user) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); //string procsql = "PRO_PM_GetProductionData"; //try //{ // IDataParameter[] paras = new OracleParameter[] // { // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input), // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input), // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input), // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input), // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input), // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input), // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input), // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input), // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input), // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input), // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input), // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input), // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input), // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input), // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input), // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input), // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output), // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input), // }; // oracleConn.Open(); // DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras); // if (returnDs != null && returnDs.Tables.Count > 0) // { // return returnDs.Tables[0]; // } // else // { // return null; // } //} //catch (Exception ex) //{ // throw ex; //} //finally //{ // if (oracleConn.ConnState == ConnectionState.Open) // { // oracleConn.Close(); // } //} string sqlString = ""; //IDataParameter[] paras = null; List parameters = new List(); try { sqlString = @"SELECT TP_PM_PRODUCTIONDATA.CREATETIME ,TP_PM_PRODUCTIONDATA.UPDATETIME ,TP_PM_PRODUCTIONDATA.PRODUCTIONDATAID ,TP_PM_PRODUCTIONDATA.PRODUCTIONLINECODE ,TP_PM_PRODUCTIONDATA.BARCODE ,TP_PM_PRODUCTIONDATA.GOODSCODE ,TP_PM_PRODUCTIONDATA.GOODSNAME ,TP_PM_PRODUCTIONDATA.USERCODE ,TP_PM_PRODUCTIONDATA.ISPUBLICBODY ,DECODE(TP_PM_PRODUCTIONDATA.PROCEDUREMODEL ,'1 ' ,'计数模型' ,'检验模型') AS PROCEDUREMODEL ,TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPENAME ,DECODE(TP_PM_PRODUCTIONDATA.PIECETYPE ,'1' ,'不计件' ,'同工种策略') AS PIECETYPE ,TP_PM_PRODUCTIONDATA.ISREWORKED ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSGRADE ,TP_MST_ORGANIZATION.ORGANIZATIONNAME ,TP_PM_PRODUCTIONDATA.REMARKS ,TP_PM_PRODUCTIONDATA.KILNID ,TP_PM_PRODUCTIONDATA.KILNCODE ,TP_PM_PRODUCTIONDATA.KILNNAME ,TP_PM_PRODUCTIONDATA.KILNCARID ,TP_PM_PRODUCTIONDATA.KILNCARCODE ,TP_PM_PRODUCTIONDATA.KILNCARNAME ,TP_PM_PRODUCTIONDATA.KILNCARPOSITION ,TP_PM_PRODUCTIONDATA.KILNCARBATCHNO ,TP_MST_DATADICTIONARY.DICTIONARYVALUE KILNCARPOSITIONNAME ,TP_MST_GOODSTYPE.GOODSTYPENAME ,TP_MST_USER.USERCODE AS BARUSERCODE ,TP_PM_PRODUCTIONDATA.GROUTINGUSERCODE ,TP_PM_PRODUCTIONDATA.GROUTINGMOULDCODE ,TP_PM_PRODUCTIONDATA.GROUTINGDATE ,TP_PM_PRODUCTIONDATA.GROUTINGNUM ,TP_MST_USER.USERNAME AS BARUSERNAME ,TP_MST_GOODSLEVEL.GOODSLEVELNAME AS GOODSLEVELTYPE ,REPLACE((TP_MST_LOGO.LOGONAME || '[' || TP_MST_LOGO.LOGOCODE || ']') ,'[]' ,'') AS LOGOCODENAME ,TP_PM_PRODUCTIONDATA.SPECIALREPAIRFLAG ,PCP.PROCEDURENAME INPROCEDURENAME FROM TP_PM_PRODUCTIONDATA LEFT JOIN TP_PM_INPRODUCTION INP ON INP.BARCODE = TP_PM_PRODUCTIONDATA.BARCODE LEFT JOIN TP_PC_PROCEDURE PCP ON PCP.PROCEDUREID = INP.PROCEDUREID LEFT JOIN TP_SYS_PROCEDUREMODELTYPE ON TP_PM_PRODUCTIONDATA.MODELTYPE = TP_SYS_PROCEDUREMODELTYPE.PROCEDUREMODELTYPEID LEFT JOIN TP_MST_ORGANIZATION ON TP_PM_PRODUCTIONDATA.ORGANIZATIONID = TP_MST_ORGANIZATION.ORGANIZATIONID LEFT JOIN TP_MST_DATADICTIONARY ON TP_PM_PRODUCTIONDATA.KILNCARPOSITION = TP_MST_DATADICTIONARY.DICTIONARYID LEFT JOIN TP_MST_GOODSLEVEL ON TP_PM_PRODUCTIONDATA.GOODSLEVELID = TP_MST_GOODSLEVEL.GOODSLEVELID LEFT JOIN TP_MST_GOODS ON TP_PM_PRODUCTIONDATA.GOODSID = TP_MST_GOODS.GOODSID LEFT JOIN TP_MST_GOODSTYPE ON TP_MST_GOODS.GOODSTYPEID = TP_MST_GOODSTYPE.GOODSTYPEID LEFT JOIN TP_MST_USER ON TP_PM_PRODUCTIONDATA.CREATEUSERID = TP_MST_USER.USERID LEFT JOIN TP_MST_LOGO ON TP_PM_PRODUCTIONDATA.LOGOID = TP_MST_LOGO.LOGOID WHERE TP_PM_PRODUCTIONDATA.VALUEFLAG = '1' AND TP_PM_PRODUCTIONDATA.PROCEDUREID = :ProcedureIDS AND (TP_PM_PRODUCTIONDATA.CREATETIME >= :begindate AND TP_PM_PRODUCTIONDATA.CREATETIME <= :enddate) "; parameters.Add(new OracleParameter(":ProcedureIDS", OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input)); parameters.Add(new OracleParameter(":begindate", OracleDbType.Date, searchEntity.BeginDate, ParameterDirection.Input)); parameters.Add(new OracleParameter(":enddate", OracleDbType.Date, searchEntity.EndDate, ParameterDirection.Input)); if (!string.IsNullOrEmpty(searchEntity.BarCode)) { sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.BARCODE = :barCode "; parameters.Add(new OracleParameter(":barCode", OracleDbType.Varchar2, searchEntity.BarCode, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.GoodsCode)) { sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSCODE, :goodsCode) > 0 "; parameters.Add(new OracleParameter(":goodsCode", OracleDbType.Varchar2, searchEntity.GoodsCode, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.GoodsName)) { sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.GOODSNAME, :goodsName) > 0 "; parameters.Add(new OracleParameter(":goodsName", OracleDbType.Varchar2, searchEntity.GoodsName, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.UserCode)) { sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.USERCODE, :userCode) > 0 "; parameters.Add(new OracleParameter(":userCode", OracleDbType.Varchar2, searchEntity.UserCode, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.OrganizationID + "")) { sqlString = sqlString + " AND ( :organizationID = 0 OR TP_PM_PRODUCTIONDATA.ORGANIZATIONID = :organizationID ) "; parameters.Add(new OracleParameter(":organizationID", OracleDbType.Int32, searchEntity.OrganizationID, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.Remarks)) { sqlString = sqlString + " AND INSTR(TP_PM_PRODUCTIONDATA.REMARKS, :remarks) > 0 "; parameters.Add(new OracleParameter(":remarks", OracleDbType.Varchar2, searchEntity.Remarks, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.IsRework)) { sqlString = sqlString + " AND INSTR( :isReworked, TP_PM_PRODUCTIONDATA.ISREWORKED) > 0 "; parameters.Add(new OracleParameter(":isReworked", OracleDbType.Varchar2, searchEntity.IsRework, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.KilnCode)) { sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCODE = :pKilnCode "; parameters.Add(new OracleParameter(":pKilnCode", OracleDbType.Varchar2, searchEntity.KilnCode, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.KilnCarCode)) { sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARCODE = :pKilnCarCode "; parameters.Add(new OracleParameter(":pKilnCarCode", OracleDbType.Varchar2, searchEntity.KilnCarCode, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + "")) { sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition "; parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.KilnCarPosition + "")) { sqlString = sqlString + " AND TP_PM_PRODUCTIONDATA.KILNCARPOSITION = :pKilnCarPosition "; parameters.Add(new OracleParameter(":pKilnCarPosition", OracleDbType.Int32, searchEntity.KilnCarPosition, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(user.UserID + "")) { sqlString = sqlString + @" AND ( TP_PM_PRODUCTIONDATA.CREATEUSERID = : userID OR EXISTS ( SELECT 1 FROM TP_MST_USERPURVIEW UP WHERE UP.PURVIEWTYPE = 4 AND ( UP.PURVIEWID = - 1 OR UP.PURVIEWID = TP_PM_PRODUCTIONDATA.CREATEUSERID ) AND UP.USERID = : userID ) ) "; parameters.Add(new OracleParameter(":userID", OracleDbType.Int32, user.UserID, ParameterDirection.Input)); } if (!string.IsNullOrEmpty(searchEntity.GoodsTypeCode)) { sqlString = sqlString + " AND INSTR(TP_MST_GOODSTYPE.GOODSTYPECODE, :goodstypecode) > 0 "; parameters.Add(new OracleParameter(":goodstypecode", OracleDbType.Varchar2, searchEntity.GoodsTypeCode, ParameterDirection.Input)); } oracleConn.Open(); DataSet ds = oracleConn.GetSqlResultToDs(sqlString, parameters.ToArray()); if (ds != null && ds.Tables.Count > 0) { return ds.Tables[0]; } else { return null; } } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 使用存储过程PRO_PM_GetProductionData获取生产工序计件数据 /// /// 生产数据实体类 /// 用户基本信息 /// DataTable public static DataTable GetProductionDataPDA(SearchProductionDataEntity searchEntity, SUserInfo user) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); string procsql = "";//PRO_PM_GetProductionDataPDA //xuwei modify 2019-12-13 修正读取当前工序 是编辑还是插入 procsql = @"SELECT TP_PM_ProductionDataIn.ProductionDataID FROM TP_PM_ProductionDataIn where valueflag=1 and 1=1 and ProcedureID=" + searchEntity.ProcedureID + " and barcode='" + searchEntity.BarCode + "' order by TP_PM_ProductionDataIn.ProductionDataid desc"; //procsql = $@" // SELECT // TP_PM_PRODUCTIONDATAIN.PRODUCTIONDATAID // FROM // TP_PM_PRODUCTIONDATAIN // WHERE // VALUEFLAG = 1 // AND 1 = 1 // AND PROCEDUREID = {searchEntity.ProcedureID} // AND BARCODE = '{searchEntity.BarCode}' // AND PRODUCTIONDATAID = ( SELECT MAX( PRODUCTIONDATAID ) FROM TP_PM_PRODUCTIONDATAIN WHERE BARCODE = '{searchEntity.BarCode}' ) // ORDER BY // TP_PM_PRODUCTIONDATAIN.PRODUCTIONDATAID DESC //"; try { //IDataParameter[] paras = new OracleParameter[] //{ // new OracleParameter("in_procedureID",OracleDbType.Int32, searchEntity.ProcedureID, ParameterDirection.Input), // new OracleParameter("in_barCode", OracleDbType.Varchar2,searchEntity.BarCode, ParameterDirection.Input), // new OracleParameter("in_goodsCode", OracleDbType.Varchar2,searchEntity.GoodsCode, ParameterDirection.Input), // new OracleParameter("in_goodsName", OracleDbType.Varchar2,searchEntity.GoodsName, ParameterDirection.Input), // new OracleParameter("in_userCode", OracleDbType.Varchar2,searchEntity.UserCode, ParameterDirection.Input), // new OracleParameter("in_organizationID", OracleDbType.Int32,searchEntity.OrganizationID, ParameterDirection.Input), // new OracleParameter("in_remarks", OracleDbType.Varchar2,searchEntity.Remarks, ParameterDirection.Input), // new OracleParameter("in_isReworked", OracleDbType.Varchar2,searchEntity.IsRework, ParameterDirection.Input), // new OracleParameter("in_begindate", OracleDbType.Date,searchEntity.BeginDate, ParameterDirection.Input), // new OracleParameter("in_enddate", OracleDbType.Date,searchEntity.EndDate, ParameterDirection.Input), // new OracleParameter("in_accountID", OracleDbType.Int32,user.AccountID, ParameterDirection.Input), // new OracleParameter("in_userID", OracleDbType.Int32,user.UserID, ParameterDirection.Input), // new OracleParameter("in_kilnCode", OracleDbType.Varchar2,searchEntity.KilnCode, ParameterDirection.Input), // new OracleParameter("in_kilnCarCode", OracleDbType.Varchar2,searchEntity.KilnCarCode, ParameterDirection.Input), // new OracleParameter("in_kilnCarPosition", OracleDbType.Int32,searchEntity.KilnCarPosition, ParameterDirection.Input), // new OracleParameter("in_currentUserID", OracleDbType.Int32,user.UserID, ParameterDirection.Input), // new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output), // new OracleParameter("in_goodsTypeCode", OracleDbType.Varchar2,searchEntity.GoodsTypeCode, ParameterDirection.Input), //}; oracleConn.Open(); DataSet returnDs = oracleConn.GetSqlResultToDs(procsql); if (returnDs != null && returnDs.Tables.Count > 0) { return returnDs.Tables[0]; } else { return null; } } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 获取次品产品条码允许编辑 /// /// 产品条码 /// Datase public static DataSet GetSubstandardInfo(string barcode) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { //获取窑炉管理数据 string sqlString = "Select barcode from TP_PM_InProductionTrash where barcode=:barcode"; Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[] { new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode) }; oracleConn.Open(); DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); oracleConn.Close(); return result; } catch (Exception ex) { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 获取生产工序实体 /// /// 获取生产工序实体 /// /// 工序ID /// 用户基本信息 /// ProcedureEntity实体类 public static ProcedureEntity GetProcedureDataEntityByID(int procedureID, SUserInfo userInfo) { ProcedureEntity procedureDataentity = new ProcedureEntity(); IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); string procsql = "pro_pm_searchProcedurbyID"; try { IDataParameter[] paras = new OracleParameter[] { new OracleParameter("in_procedureID", OracleDbType.Int32, procedureID, ParameterDirection.Input), new OracleParameter("out_result", OracleDbType.RefCursor, ParameterDirection.Output) }; oracleConn.Open(); DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras); if (returnDs != null && returnDs.Tables.Count > 0 && returnDs.Tables[0].Rows.Count > 0) { DataRow row = returnDs.Tables[0].Rows[0]; procedureDataentity = DataConvert.DataRowConvertToObject(row); return procedureDataentity; } else { return null; } } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 判断操作人员是否具有工序权限 /// /// 判断操作人员是否具有工序权限 /// /// 工序ID /// 工号ID /// DataSet public static DataSet DecideUserInProcedure(int procedureID, int userID) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); string procsql = "pro_pm_DecideUserInProcedure"; try { IDataParameter[] paras = new OracleParameter[] { new OracleParameter("in_procedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter("in_userID",OracleDbType.Int32,userID,ParameterDirection.Input), new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output) }; oracleConn.Open(); DataSet returnDs = oracleConn.ExecStoredProcedure(procsql, paras); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 检验条码 /// /// 检验条码(非首节点) /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckBarcode(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); // 2019-1016 if (!isInn) { //xuwei fix 2019-09-26 使用通用方法判定 //if (PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode) == 1) //{ // return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true); //} string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid"; string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + ""; // 89[3#一检半检] 特殊处理 if (NodeType == "1" || procedureID == 89) { int isNodeBegin = PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode); if (isNodeBegin == 1) { return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true); } } } DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); string sqlString = string.Empty; DataSet ds = null; #region 查出工序条码类型 wangx 2017-3-13 string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo); if (sqlBarcode == string.Empty) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码"; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } else { dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode; barcode = sqlBarcode; } #endregion OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output), new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output), new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output), }; oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"); //if (!string.IsNullOrEmpty(paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"))) //{ // AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo); //} int missFlag = 0; if (paras[7].Value != null && paras[7].Value.ToString() == "1") { missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo); } dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value; dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value; dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag; DataSet defectSet = new DataSet(); if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息 { sqlString = @"select tp_pm_inproduction.GoodsName, tp_pm_inproduction.GroutingUserID, tp_pm_inproduction.GroutingUserCode, tp_pm_inproduction.GroutingNum, tp_pm_inproduction.GroutingMouldCode as MouldCode, tp_pm_inproduction.ispublicbody, tp_pm_inproduction.Groutingdate, tp_pm_inproduction.SpecialRepairFlag, tp_pm_inproduction.logoid, g.goodsid,g.goodscode,g.PlateLimitNum,g.DeliverLimitCycle, --nvl(g.MaterialCode,g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致 nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) ||'#'|| to_char(g.GOODS_LINE_TYPE) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致 --gt.gt.goodstypecode,gt.goodstypename,a.workcode, tp_mst_logo.logocode, u.username as GroutingUserName, tp_mst_logo.logoname , case when pg.goodsid=g.goodsid then 1 else 0 end as refireflag from tp_pm_inproduction left join TP_PM_GroutingDailyDetail gdd on gdd.GroutingDailyDetailID = tp_pm_inproduction.GroutingDailyDetailID left join tp_mst_logo on tp_pm_inproduction.logoid=tp_mst_logo.logoid inner join tp_mst_user u on u.userid = gdd.userid LEFT JOIN TP_MST_GOODS G ON G.GoodsID = tp_pm_inproduction.goodsid LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = G.GOODSID AND PG.PROCEDUREID = 138 --left join tp_mst_goodstype gt on gt.goodstypeid = g.goodstypeid --left join tp_mst_account a on a.accountid = gdd.accountid where tp_pm_inproduction.BarCode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; //20221129 by qinqi 查询上一次缺陷 string sqlString1 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi where pi.Barcode= :barcode and pi.MODELTYPE IN (-1, -4, -5) and pi.ValueFlag = '1' order by pi.CREATETIME desc"; ds = oracleConn.GetSqlResultToDs(sqlString, paras); DataSet dataTable = oracleConn.GetSqlResultToDs(sqlString1, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0) { dr["DefectFlagID"] = Convert.ToInt32(dataTable.Tables[0].Rows[0]["goodsleveltypeid"]); } //dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; //dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; //dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); //dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["GOODSMODELforCheck"].ToString(); //// hegii 三水 特殊处理 大件高压可以和普通合并装板,小件高压不能和普通合并装板 //if (ds.Tables[0].Rows[0]["workcode"].ToString() == "5020" && // ds.Tables[0].Rows[0]["goodstypename"].ToString() == "小件") //{ // dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["goodscode"].ToString(); //} dr["PlateLimitNum"] = ds.Tables[0].Rows[0]["PlateLimitNum"]; dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString(); dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString(); } //获取上一次成品检验的缺陷 if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0) { sqlString1 = @"select TP_PM_Defect.DefectID ,replace( concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) , concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->' ) as DefectName, TP_PM_Defect.DefectCode, TP_PM_Defect.DefectPositionID, replace( concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) , concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->' ) as DefectPositionName, TP_PM_Defect.DefectPositionCode, TP_PM_Defect.DefectProcedureID, TP_PM_Defect.DefectProcedureCode, TP_PM_Defect.DefectProcedureName,TP_PM_Defect.DefectUserID ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName, TP_PM_Defect.DefectProductionDataID, TP_PM_Defect.Remarks AS DefectRemarks , TP_MST_Jobs.JobsID AS Jobs, TP_MST_Jobs.JobsName AS JobsText, TP_MST_DefectFine.DefectFineID, TP_MST_DefectFine.DefectFineCode AS DefectFineValue, TP_PM_Defect.MissedUserID, TP_PM_Defect.MissedUserCode, TP_PM_Defect.MissedUserName, TP_PM_Defect.DefectDeductionNum, TP_PM_Defect.SpecialDefect, TP_PM_Defect.CheckTime, (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid) FROM tp_pm_defectresponsible dp INNER JOIN tp_hr_staff s ON s.staffid = dp.staffid where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames , ROWNUM-1 as TempCount from TP_PM_Defect left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID where TP_PM_Defect.ProductionDataID = :ProductionDataID"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":ProductionDataID",Convert.ToInt32(dataTable.Tables[0].Rows[0]["ProductionDataID"])), }; defectSet = oracleConn.GetSqlResultToDs(sqlString1, paras1); } } dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); if (defectSet != null && defectSet.Tables.Count > 0 && defectSet.Tables[0].Rows.Count > 0) { defectSet.Tables[0].TableName = "DefectTable"; returnDs.Tables.Add(defectSet.Tables[0].Copy()); } return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #region 2017-3-13 /// /// 根据条码及工序判断是否漏扫 /// /// 产品条码 /// 校验工序ID /// 用户基本信息 /// DataSet public static string GetConvertBarCode(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo) { try { #region 查出工序条码类型 wangx 2017-3-13 string sqlString = "select BarCodeFlag from TP_PC_Procedure where ProcedureID=:ProcedureID"; OracleParameter[] paras2 = new OracleParameter[]{ new OracleParameter(":ProcedureID",produceid), }; DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras2); int BarCodeFlag = 0; string returnBarcode = string.Empty;//返回条码 if (ds != null && ds.Tables[0].Rows.Count > 0) { BarCodeFlag = Convert.ToInt32(ds.Tables[0].Rows[0]["BarCodeFlag"]); if (BarCodeFlag > 0) { //sqlString = @"select FUN_CMN_GetBarCode(:barcode,:procedureid,:accountid) From DUAL"; sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), //new OracleParameter(":procedureid",OracleDbType.Int32, produceid,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { returnBarcode = ds.Tables[0].Rows[0][0].ToString(); } return returnBarcode; } else { returnBarcode = barcode; } } #endregion return returnBarcode; } catch (Exception ex) { throw ex; } } #endregion /// /// 检验条码pda /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckBarcodePDA(int procedureID, string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); //2020-03-10 chenxy fix 中陶出现非必须首节点 提示 未进入生产流程,应在开始工序输入 string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid"; string NodeType1 = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + ""; if (NodeType1 == "1") { int isNodeBegin = PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode); if (isNodeBegin == 1) { return CheckBarcodeDeliverMud(procedureID, barcode, sUserInfo, true); } } //fix end DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataTable leakFlag4Table = new DataTable(); DataTable leakFlag5Table = new DataTable(); DataTable leakFlag6Table = new DataTable(); DataSet defectSet = new DataSet(); DataRow dr = dtBarCode.NewRow(); #region 查出工序条码类型 wangx 2017-3-13 string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo); if (sqlBarcode == string.Empty) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码"; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } else { dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode; barcode = sqlBarcode; } #endregion OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output), new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output), new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output), }; oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"); //if (!string.IsNullOrEmpty(paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"))) //{ // AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo); //} int missFlag = 0; if (paras[7].Value != null && paras[7].Value.ToString() == "1") { missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo); } dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value; dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value; dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag; if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息 { string sql = "select NodeType from tp_pc_procedure where procedureid=:procedureid"; paras = new OracleParameter[]{ new OracleParameter(":procedureid",procedureID), }; DataSet ds = oracleConn.GetSqlResultToDs(sql, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { string sqlString = ""; int NodeType = Convert.ToInt32(ds.Tables[0].Rows[0]["NodeType"]); //xuwei fix 2019-09-26 使用通用方法判定 // 2019-1016 //if (PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode) == 1) //{ // NodeType = (int)Constant.ProcedureNodeType.Begin; //} if (NodeType == (int)Constant.ProcedureNodeType.Begin) { int isNodeBegin = PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode); if (isNodeBegin == 0) { NodeType = (int)Constant.ProcedureNodeType.Middle; } } if (NodeType == (int)Constant.ProcedureNodeType.Begin) //开始节点 { sqlString = @"select TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode, tp_pm_groutingdailydetail.groutingcount as GroutingNum, tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode, 0 as ispublicbody, tp_pm_groutingdailydetail.Groutingdate, tp_pm_groutingdailydetail.SpecialRepairFlag, tp_mst_logo.logoid, tp_mst_logo.logocode, tp_mst_logo.logoname from tp_pm_groutingdailydetail left join tp_mst_logo on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid where tp_pm_groutingdailydetail.BarCode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); } } else { sqlString = @"select nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) MaterialCode, TP_PM_InProduction.GroutingUserCode, TP_PM_InProduction.GroutingNum, TP_PM_InProduction.GroutingMouldCode as MouldCode, TP_PM_InProduction.ispublicbody, (select tp_pm_inproductiontrash.ispublicbody from tp_pm_inproductiontrash where tp_pm_inproductiontrash.BarCode=:barcode) as ispublicbodyTrach, TPPD.REWORKPROCEDUREID REWORKPROCEDUREID, TP_PM_InProduction.Groutingdate, TP_PM_InProduction.SpecialRepairFlag, TP_PM_InProduction.IsReFire, TP_PM_InProduction.ISLENGBU, tp_mst_logo.logoid, g.goodsid,g.goodscode,g.PlateLimitNum, --nvl(g.MaterialCode,g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致 nvl(gdd.MaterialCode, nvl(g.MaterialCode,g.GoodsCode)) ||'#'|| to_char(g.GOODS_LINE_TYPE) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致 --nvl(gdd.MaterialCode, g.GoodsCode) as GOODSMODELforCheck, -- 用物料编码验证产品型号是否一致 tp_mst_logo.logocode, tp_mst_logo.logoname, glaze.DICTIONARYVALUE AS GLAZENAME, --xuwei add 2020-06-11 漏气 内漏 标识 gdd.LEAKFLAG1, gdd.LEAKFLAG2, gdd.LEAKFLAG3, gdd.LEAKFLAG4, gdd.LEAKFLAG5, gdd.LEAKFLAG7, decode(TP_PM_InProduction.SpecialRepairFlag,'1','是','0','否') as SpecialRepairflagName, decode(TP_PM_InProduction.IsReFire,'6','是','0','否') as IsReFireName, DECODE(TP_PM_INPRODUCTION.ISLENGBU, '1', '是', '0', '否') AS ISLENGBUNAME, decode(gdd.LEAKFLAG1,'1','合格','0','不合格','未检测') as LEAKFLAG1Name, decode(gdd.LEAKFLAG2,'1','合格','0','不合格','未检测') as LEAKFLAG2Name, decode(gdd.LEAKFLAG3,'1','合格','0','不合格','未检测') as LEAKFLAG3Name, decode(gdd.LEAKFLAG4,'1','合格','0','不合格','未检测') as LEAKFLAG4Name, decode(gdd.LEAKFLAG5,'1','合格','0','不合格','未检测') as LEAKFLAG5Name, decode(gdd.LEAKFLAG7,'1','合格','0','不合格','未检测') as LEAKFLAG7Name, gdd.InspectionLevel, gdd.PackingDefect, gdd.InspectionGoodsLevel, gdd.OFFLINEFLAG, gdd.RECYCLINGFLAG, G.WATERLABELCODE, G.GOODS_LINE_TYPE, case when pg.goodsid=g.goodsid then 1 else 0 end as refireflag from TP_PM_InProduction left join TP_PM_GroutingDailyDetail gdd on gdd.GroutingDailyDetailID = tp_pm_inproduction.GroutingDailyDetailID left join tp_mst_logo on gdd.logoid=tp_mst_logo.logoid LEFT JOIN TP_MST_GOODS G ON G.GoodsID = tp_pm_inproduction.goodsid LEFT JOIN TP_MST_DataDictionary glaze ON glaze.DICTIONARYID = gdd.GLAZETYPEID LEFT JOIN (SELECT T.REWORKPROCEDUREID,T.BARCODE FROM(SELECT REWORKPROCEDUREID,BARCODE FROM TP_PM_PRODUCTIONDATA WHERE BARCODE = :barcode ORDER BY CREATETIME DESC) T WHERE ROWNUM = 1) TPPD ON TPPD.BARCODE = TP_PM_InProduction.BARCODE LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = G.GOODSID AND PG.PROCEDUREID = 138 where TP_PM_InProduction.BarCode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); // 取最新的窑炉批次号 string sqlString2 = @" SELECT KILNCARBATCHNO FROM TP_PM_PRODUCTIONDATA WHERE KILNCARBATCHNO IS NOT NULL AND BARCODE = :barcode ORDER BY CREATETIME DESC"; object kilncarbatchno = oracleConn.GetSqlResultToObj(sqlString2, paras); // 取当前批次号下最新的检验类型的生产数据 sqlString2 = @" SELECT PI.* FROM TP_PM_PRODUCTIONDATA PI WHERE PI.MODELTYPE IN (-1, -4, -5) AND PI.VALUEFLAG = '1' AND PI.BARCODE = :BARCODE AND PI.KILNCARBATCHNO = :KILNCARBATCHNO ORDER BY PI.CREATETIME DESC "; paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), new OracleParameter(":KILNCARBATCHNO", kilncarbatchno), }; DataSet dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras); //二车间三检后回收再次三检时,会带出三检信息(次品等),此时产品为正品,不带出缺陷及等级信息 // 取回收标识 sqlString2 = @" SELECT gdd.RECYCLINGFLAG FROM TP_PM_GroutingDailyDetail gdd WHERE gdd.BARCODE = :BARCODE "; paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), }; DataTable recyclingdata = oracleConn.GetSqlResultToDt(sqlString2, paras); // 取重烧标识 sqlString2 = @" SELECT case when pg.goodsid=gdd.goodsid then 1 else 0 end as refireflag FROM TP_PM_GroutingDailyDetail gdd LEFT JOIN TP_PC_PROCEDUREGOODS PG ON PG.GOODSID = gdd.GOODSID AND PG.PROCEDUREID = 138 WHERE gdd.BARCODE = :BARCODE "; paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), }; DataTable refireflagdata = oracleConn.GetSqlResultToDt(sqlString2, paras); if (recyclingdata != null && recyclingdata.Rows.Count > 0) { //回收过,取回收后的检验数据 if (recyclingdata.Rows[0]["RECYCLINGFLAG"].ToString() == "1") { // 取当前批次号下最新的检验类型的生产数据 sqlString2 = @" SELECT PI.* FROM TP_PM_PRODUCTIONDATA PI WHERE PI.MODELTYPE IN (-1, -4, -5) AND PI.VALUEFLAG = '1' AND PI.BARCODE = :BARCODE AND PI.KILNCARBATCHNO = :KILNCARBATCHNO AND PI.CREATETIME > (SELECT max(PDI.createtime) FROM TP_PM_PRODUCTIONDATA PDI WHERE PDI.BARCODE = PI.BARCODE AND PDI.PROCEDUREID = 80) ORDER BY PI.CREATETIME DESC "; paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), new OracleParameter(":KILNCARBATCHNO", kilncarbatchno), }; dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras); } } //if (dtIsRefire.Rows.Count == 0) //{ // sqlString2 = @"SELECT pi.isrefire,pi.kilncarbatchno FROM TP_PM_SCRAPPRODUCT pi // where pi.Barcode= :barcode"; // dtIsRefire = oracleConn.GetSqlResultToDt(sqlString2, paras); //} //string isrefire = "0"; //if (dtIsRefire.Rows.Count > 0) // { // isrefire = dtIsRefire.Rows[0]["isrefire"] + ""; //} //DataSet dataTable = new DataSet(); //if (isrefire.Equals("0")) //{ // sqlString2 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi // where pi.Barcode= :barcode // and pi.MODELTYPE IN (-1, -4, -5) // and pi.ValueFlag = '1' // and pi.isrefire = '0' // order by pi.CREATETIME desc"; // paras = new OracleParameter[]{ // new OracleParameter(":barcode",barcode), // }; // dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras); //} //else //{ // string kilncarbatchno = dtIsRefire.Rows[0]["kilncarbatchno"] + ""; // sqlString2 = @"SELECT pi.* FROM TP_PM_ProductionDataIn pi // where pi.Barcode= :barcode // and pi.kilncarbatchno= :kilncarbatchno // and pi.MODELTYPE IN (-1, -4, -5) // and pi.ValueFlag = '1' // and pi.isrefire = '6' // order by pi.CREATETIME desc"; // paras = new OracleParameter[]{ // new OracleParameter(":barcode", barcode), // new OracleParameter(":kilncarbatchno", kilncarbatchno), // }; // dataTable = oracleConn.GetSqlResultToDs(sqlString2, paras); //} //缺陷 int pdid = 0; if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0) { dr["DefectFlagID"] = Convert.ToInt32(dataTable.Tables[0].Rows[0]["goodsleveltypeid"]); pdid = Convert.ToInt32(dataTable.Tables[0].Rows[0]["PRODUCTIONDATAID"]); // 判断当前条码在最近一次检验后,是否走过冷补或回收 string sqlCheckLengBu = @" SELECT 1 FROM TP_PM_PRODUCTIONDATA P WHERE P.PROCEDUREID IN (135, 80) AND P.BARCODE = :BARCODE AND p.createtime >= (select max(createtime) from TP_PM_PRODUCTIONDATA pd where pd.barcode=p.barcode and pd.MODELTYPE IN (-1, -4, -5) AND pd.VALUEFLAG = '1' AND pd.KILNCARBATCHNO = :KILNCARBATCHNO )"; //AND P.PRODUCTIONDATAID > :PID paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), new OracleParameter(":KILNCARBATCHNO", kilncarbatchno), new OracleParameter(":PID", pdid), }; object isExists = oracleConn.GetSqlResultToObj(sqlCheckLengBu, paras); if (isExists == null) { dr["pdid"] = pdid; } } if (ds != null && ds.Tables[0].Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = ds.Tables[0].Rows[0]["ispublicbodyTrach"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = ds.Tables[0].Rows[0]["IsReFire"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isLengBu.ToString()] = ds.Tables[0].Rows[0]["ISLENGBU"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_glazeName.ToString()] = ds.Tables[0].Rows[0]["glazename"].ToString(); dr[Constant.BarCodeResultTableColumns.out_MaterialCode.ToString()] = ds.Tables[0].Rows[0]["MaterialCode"].ToString(); //增加漏气标识内漏标识 xuwei add 2020-06-11 dr[Constant.BarCodeResultTableColumns.out_LeakFlag1.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG1"].ToString(); dr[Constant.BarCodeResultTableColumns.out_LeakFlag2.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG2"].ToString(); // 增加干补、重烧、内漏等相关字段名称 fubin add 2020-06-30 dr[Constant.BarCodeResultTableColumns.out_LeakFlag3.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG3"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlagName.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlagName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_lengBuName.ToString()] = ds.Tables[0].Rows[0]["ISLENGBUNAME"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFireName.ToString()] = ds.Tables[0].Rows[0]["IsReFireName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_LeakFlag1Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG1Name"].ToString(); dr[Constant.BarCodeResultTableColumns.out_LeakFlag2Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG2Name"].ToString(); dr[Constant.BarCodeResultTableColumns.out_LeakFlag3Name.ToString()] = ds.Tables[0].Rows[0]["LEAKFLAG3Name"].ToString(); //增加返工工序 dr["out_ReworkProcedureId"] = ds.Tables[0].Rows[0]["REWORKPROCEDUREID"].ToString(); dr["GOODSMODELforCheck"] = ds.Tables[0].Rows[0]["GOODSMODELforCheck"].ToString(); dr["PlateLimitNum"] = ds.Tables[0].Rows[0]["PlateLimitNum"]; dr["out_LeakFlag4"] = ds.Tables[0].Rows[0]["LEAKFLAG4"].ToString(); dr["out_LeakFlag5"] = ds.Tables[0].Rows[0]["LEAKFLAG5"].ToString(); dr["out_LeakFlag4Name"] = ds.Tables[0].Rows[0]["LEAKFLAG4Name"].ToString(); dr["out_LeakFlag5Name"] = ds.Tables[0].Rows[0]["LEAKFLAG5Name"].ToString(); dr["InspectionLevel"] = ds.Tables[0].Rows[0]["InspectionLevel"].ToString(); dr["PackingDefect"] = ds.Tables[0].Rows[0]["PackingDefect"].ToString(); dr["InspectionGoodsLevel"] = ds.Tables[0].Rows[0]["InspectionGoodsLevel"].ToString(); dr["offlineFlag"] = ds.Tables[0].Rows[0]["OFFLINEFLAG"].ToString(); dr["recyclingFlag"] = ds.Tables[0].Rows[0]["RECYCLINGFLAG"].ToString(); dr["waterLabelCode"] = ds.Tables[0].Rows[0]["WATERLABELCODE"].ToString(); dr["goodsLineType"] = ds.Tables[0].Rows[0]["GOODS_LINE_TYPE"].ToString(); //修磨 dr["out_LeakFlag7"] = ds.Tables[0].Rows[0]["LEAKFLAG7"].ToString(); dr["out_LeakFlag7Name"] = ds.Tables[0].Rows[0]["LEAKFLAG7Name"].ToString(); //if (string.IsNullOrWhiteSpace(ds.Tables[0].Rows[0]["refireflag"].ToString())) //{ // dr["refireflag"] = Convert.ToInt32(refireflagdata.Rows[0]["refireflag"]); //} dr["refireflag"] = Convert.ToInt32(ds.Tables[0].Rows[0]["refireflag"]); //养水不合格,查询养水不合格位置 if (ds.Tables[0].Rows[0]["LEAKFLAG4"].ToString() == "0") { string leakFlag4Positions = @"SELECT t.* FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 4"; paras = new OracleParameter[]{ new OracleParameter(":BARCODE",barcode),}; leakFlag4Table = oracleConn.GetSqlResultToDt(leakFlag4Positions, paras); } //试水不合格,查询试水不合格位置 if (ds.Tables[0].Rows[0]["LEAKFLAG5"].ToString() == "0") { string leakFlag5Positions = @"SELECT t.* FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 5"; paras = new OracleParameter[]{ new OracleParameter(":BARCODE",barcode),}; leakFlag5Table = oracleConn.GetSqlResultToDt(leakFlag5Positions, paras); } //补裂位置 string leakFlag6Positions = @"SELECT t.* FROM TP_PM_BARCODELEAKPOSITION t where t.barcode= :BARCODE and leaktype = 6"; OracleParameter[] paras6 = new OracleParameter[]{ new OracleParameter(":BARCODE",barcode),}; leakFlag6Table = oracleConn.GetSqlResultToDt(leakFlag6Positions, paras6); } else { dr["refireflag"] = Convert.ToInt32(refireflagdata.Rows[0]["refireflag"]); } //获取上一次成品检验的缺陷 if (dataTable != null && dataTable.Tables.Count > 0 && dataTable.Tables[0].Rows.Count > 0) { sqlString2 = @"select TP_PM_Defect.DefectID ,replace( concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) , concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->' ) as DefectName, TP_PM_Defect.DefectCode, TP_PM_Defect.DefectPositionID, replace( concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) , concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->' ) as DefectPositionName, TP_PM_Defect.DefectPositionCode, TP_PM_Defect.DefectProcedureID, TP_PM_Defect.DefectProcedureCode, TP_PM_Defect.DefectProcedureName,TP_PM_Defect.DefectUserID ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName, TP_PM_Defect.DefectProductionDataID, TP_PM_Defect.Remarks AS DefectRemarks , TP_MST_Jobs.JobsID AS Jobs, TP_MST_Jobs.JobsName AS JobsText, TP_MST_DefectFine.DefectFineID, TP_MST_DefectFine.DefectFineCode AS DefectFineValue, TP_PM_Defect.MissedUserID, TP_PM_Defect.MissedUserCode, TP_PM_Defect.MissedUserName, TP_PM_Defect.DefectDeductionNum, TP_PM_Defect.SpecialDefect, TP_PM_Defect.CheckTime, (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid) FROM tp_pm_defectresponsible dp INNER JOIN tp_hr_staff s ON s.staffid = dp.staffid where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames , ROWNUM-1 as TempCount from TP_PM_Defect left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID where TP_PM_Defect.ProductionDataID = :ProductionDataID"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":ProductionDataID",Convert.ToInt32(dataTable.Tables[0].Rows[0]["ProductionDataID"])), }; defectSet = oracleConn.GetSqlResultToDs(sqlString2, paras1); } // 取回收标识 sqlString2 = @" SELECT gdd.RECYCLINGFLAG FROM TP_PM_GroutingDailyDetail gdd WHERE gdd.BARCODE = :BARCODE "; paras = new OracleParameter[] { new OracleParameter(":BARCODE", barcode), }; DataSet recyclingSet = oracleConn.GetSqlResultToDs(sqlString2, paras); if (recyclingSet != null && recyclingSet.Tables.Count > 0) { dr["recyclingFlag"] = recyclingSet.Tables[0].Rows[0]["RECYCLINGFLAG"].ToString(); } } } } dtBarCode.Rows.Add(dr); // 获取plc重量 add by fubin 2020-7-20 if (!dtBarCode.Columns.Contains("PLCWeight")) { dtBarCode.Columns.Add("PLCWeight", typeof(decimal)); dtBarCode.Rows[0]["PLCWeight"] = 0; } // 成检交接(二检) 获取重量 if (procedureID == 104) { dtBarCode.Rows[0]["PLCWeight"] = Get3PLCWeight(sUserInfo); } returnDs.Tables.Add(dtBarCode); if (leakFlag4Table != null && leakFlag4Table.Rows.Count > 0) { leakFlag4Table.TableName = "leakFlag4Table"; returnDs.Tables.Add(leakFlag4Table); } if (leakFlag5Table != null && leakFlag5Table.Rows.Count > 0) { leakFlag5Table.TableName = "leakFlag5Table"; returnDs.Tables.Add(leakFlag5Table); } if (leakFlag6Table != null && leakFlag6Table.Rows.Count > 0) { leakFlag6Table.TableName = "leakFlag6Table"; returnDs.Tables.Add(leakFlag6Table); } //缺陷 if (defectSet != null && defectSet.Tables.Count > 0 && defectSet.Tables[0].Rows.Count > 0) { defectSet.Tables[0].TableName = "DefectTable"; returnDs.Tables.Add(defectSet.Tables[0].Copy()); } return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 获取plc重量 add by fubin 2020-7-20 /// /// /// public static decimal Get3PLCWeight(SUserInfo sUserInfo) { ServiceResultEntity sre = PLCModuleLogic.ReadPLCWeightByUser_HEGII_S3(sUserInfo); if (sre.Result != null && sre.Result is JArray && (sre.Result as JArray)[0]["weight"] != null) { return Convert.ToDecimal((sre.Result as JArray)[0]["weight"]); } return 0; } /// /// 根据条码及工序判断是否漏扫 /// /// 产品条码 /// 校验工序ID /// 用户基本信息 /// DataSet public static int AddBarCodeMissing(IDBConnection oracleTrConn, string barcode, int produceid, SUserInfo sUserInfo) { try { #region 查询产成品 string sqlString = @"select TP_PM_InProduction.FlowProcedureID,NVL(TP_PM_InProduction.ReworkProcedureID,0) as ReworkProcedureID, TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName, TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_MST_Goods.GoodsTypeID,TP_PM_InProduction.isrefire from TP_PM_InProduction left join TP_PC_Procedure on TP_PM_InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID left join TP_MST_Goods on TP_PM_InProduction.GoodsID=TP_MST_Goods.GoodsID where TP_PM_InProduction.BarCode =:barCode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), }; DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); #endregion int AddBarCodeMissingID = 0;//新增漏扫表的ID if (ds != null && ds.Tables[0].Rows.Count > 0) //只有是在产的,才可以去进行漏扫 { #region 获取此条码为在产产品 int CompleteProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["FlowProcedureID"]);//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName) string CompleteProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); string CompleteProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]); string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString(); int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]); int ReworkProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ReworkProcedureID"]);//返工工序 int isrefire = Convert.ToInt32(ds.Tables[0].Rows[0]["isrefire"]);//重烧标记 #endregion // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 begin // 漏扫序号大的可到达工序与检验工序不在一条路径上时,要验证下一个可到达工序。 // 即与检验工序在一条路径上的漏扫序号最大可到达工序为漏扫工序。 #region 获取漏扫工序信息 if (ReworkProcedureID == 0) { sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode) and TP_PC_ProcedureGoods.ProcedureID in( select pro.ProcedureID from TP_PC_ProcedureFlow flow inner join TP_PC_Procedure pro on flow.arriveprocedureid = pro.procedureid inner join TP_PC_ProductionLine line on pro.ProductionLineID = line.ProductionLineID where flow.ProcedureID =:procedureID and flow.FlowFlag = 2 and pro.valueflag = '1' -- 非必须工序,不记漏扫 and pro.MUSTFLAG = '1' ) " + //" and exists ( " + // "select 1 from " + // "(" + // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " + // "( " + // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " + // ") " + // //" start with procedureid=:missProcedureid" + // " start with procedureid=TP_PC_ProcedureGoods.ProcedureID" + // " connect by nocycle procedureid=prior arriveprocedureid" + // ") where arriveprocedureid=:judgeProcedureid " + // " ) " + //" order by ProcedureID"; " order by MissPriority DESC, displayno --ProcedureCode DESC"; paras = new OracleParameter[]{ new OracleParameter(":procedureID",OracleDbType.Int32,CompleteProcedureID,ParameterDirection.Input), new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), //new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input), //new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input), }; } else { sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID"; paras = new OracleParameter[]{ new OracleParameter(":procedureID",OracleDbType.Int32,ReworkProcedureID,ParameterDirection.Input), }; } ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { return AddBarCodeMissingID; } //int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); //string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); //string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); int missprocedureid = -1; string missprocedurecode = ""; string missprocedurename = ""; #endregion #region 增加判断校验工序必须是在漏扫工序的后面工序 //sqlString = "select * from " + // "(" + // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " + // "( " + // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " + // ")" + // " start with procedureid=:missProcedureid" + // " connect by nocycle procedureid=prior arriveprocedureid" + // ") where arriveprocedureid=:judgeProcedureid "; //paras = new OracleParameter[]{ // new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input), // new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input), // }; //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); //if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) //{ // return AddBarCodeMissingID; //} foreach (DataRow item in ds.Tables[0].Rows) { //sqlString = "select * from " + // "(" + // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " + // "( " + // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " + // ")" + // " start with procedureid=:missProcedureid" + // " connect by nocycle procedureid=prior arriveprocedureid" + // ") where arriveprocedureid=:judgeProcedureid "; sqlString = "SELECT procedureid\n" + " ,arriveprocedureid\n" + " ,ltrim(sys_connect_by_path(procedureid, '->') || '->' || arriveprocedureid) sybp\n" + " FROM (SELECT procedureid\n" + " ,arriveprocedureid\n" + " FROM (SELECT *\n" + " FROM tp_pc_procedureflow\n" + " WHERE arriveprocedureid <> :missProcedureid\n" + " AND flowflag = 2)\n" + " WHERE arriveprocedureid = :judgeProcedureid )\n" + " START WITH procedureid = :missProcedureid\n" + " CONNECT BY nocycle procedureid = PRIOR arriveprocedureid"; paras = new OracleParameter[]{ new OracleParameter(":missProcedureid",OracleDbType.Int32,Convert.ToInt32(item["ProcedureID"]),ParameterDirection.Input), new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { continue; } missprocedureid = Convert.ToInt32(item["ProcedureID"]); missprocedurecode = item["ProcedureCode"].ToString(); missprocedurename = item["ProcedureName"].ToString(); break; } if (missprocedureid == -1) { return AddBarCodeMissingID; } #endregion // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 end //sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID"; //paras = new OracleParameter[]{ // new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input), // }; //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); //int nodetype = Convert.ToInt32(ds.Tables[0].Rows[0]["NodeType"]);//获取当前工序的类型,为了判断如果成检设置重燃,未走重燃,直接包装,还有就是不记录以前工序的值 //if ((produceid > missprocedureid) || (ReworkProcedureID > 0 && nodetype == 3) || (isrefire == 6))//3 为结束节点,6为重烧 // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 begin //sqlString = "select 1 from TP_PM_ProductionDataIn where barcode=:barcode and ProcedureID=:ProcedureID and ValueFlag=1"; //paras = new OracleParameter[]{ // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), // }; //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); //// if (produceid > missprocedureid) //if (ds != null && ds.Tables[0].Rows.Count == 0) // 未走过该工序 // 前面已经判断过 校验工序在漏扫工序(应该是当前工序吧)后 by chenxy 2020-03-29 end { #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入 sqlString = @"select missid from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入 { int OrganizationID = 0; string OrganizationName = ""; string OrganizationCode = ""; string OrganizationFullName = ""; sqlString = @"select TP_MST_Organization.OrganizationID ,TP_MST_Organization.OrganizationName ,TP_MST_Organization.OrganizationCode ,TP_MST_Organization.OrganizationFullName from TP_PC_Procedure left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID where TP_PC_Procedure.ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称 OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码 OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称 // 获取校验工序信息 sqlString = @"select TP_PC_Procedure.ProcedureID ,TP_PC_Procedure.ProcedureCode ,TP_PC_Procedure.ProcedureName from TP_PC_Procedure where TP_PC_Procedure.ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); string ProcedureCode = ""; string ProcedureName = ""; if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入 { ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); } //漏扫表ID string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual"; AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql)); sqlString = @"insert into TP_PM_BarCodeMissing(MissID, BarCode, OrganizationID, OrganizationName, OrganizationCode, OrganizationFullName, CompleteProcedureID, CompleteProcedureCode, CompleteProcedureName, ProcedureID, ProcedureCode, ProcedureName, MissProcedureID, MissProcedureCode, MissProcedureName, GoodsID, GoodsCode, GoodsName, GoodsTypeID, CreateUserID, UpdateUserID, AccountID ) values ( :MissID, :BarCode, :OrganizationID, :OrganizationName, :OrganizationCode, :OrganizationFullName, :CompleteProcedureID, :CompleteProcedureCode, :CompleteProcedureName, :ProcedureID, :ProcedureCode, :ProcedureName, :MissProcedureID, :MissProcedureCode, :MissProcedureName, :GoodsID, :GoodsCode, :GoodsName, :GoodsTypeID, :CreateUserID, :UpdateUserID, :AccountID ) "; paras = new OracleParameter[]{ new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input), new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input), new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input), new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input), new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input), new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input), new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input), new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input), new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input), new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input), new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input), new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input), new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input), new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; oracleTrConn.GetSqlResultToStr(sqlString, paras); } #endregion } } else //不在产 { #region 是否存在注浆产品 sqlString = @"select TP_PM_GroutingDailyDetail.BarCode,TP_PM_GroutingDailyDetail.GoodsID,TP_PM_GroutingDailyDetail.GoodsCode, TP_PM_GroutingDailyDetail.GoodsName,TP_MST_Goods.GoodsTypeID from TP_PM_GroutingDailyDetail left join TP_MST_Goods on TP_PM_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID where TP_PM_GroutingDailyDetail.BarCode=:BarCode"; paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); #endregion if (ds != null && ds.Tables[0].Rows.Count > 0) { // 此条码为在产产品 //int? CompleteProcedureID = null;//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName) //string CompleteProcedureCode = ""; //string CompleteProcedureName = ""; int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]); string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString(); int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]); // #region 存在注浆产品,查看是否存在报损记录或者产成品记录 // sqlString = @"select BarCode from TP_PM_ScrapProduct where BarCode=:BarCode and ValueFlag=1 // union select BarCode from TP_PM_FinishedProduct where BarCode=:BarCode and ValueFlag=1"; // paras = new OracleParameter[]{ // new OracleParameter(":BarCode",OracleDbType.Varchar2,barcode,ParameterDirection.Input), // }; // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); // #endregion // if (ds != null && ds.Tables[0].Rows.Count == 0) //即不在报损 ,也不在产成,说明未走任何工序 // { #region 查出校验工序的据在生产线,从而查出此生产上的漏扫开始工序节点 int ProductionLineID = 0; //查出校验工序生产线ID,用于区分多生产线的首个开始节点 sqlString = @"select ProductionLineID from TP_PC_Procedure where ProcedureID=:procedureID"; paras = new OracleParameter[]{ new OracleParameter(":procedureID",OracleDbType.Int32,produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) // { ProductionLineID = Convert.ToInt32(ds.Tables[0].Rows[0]["ProductionLineID"]); } sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode) and TP_PC_ProcedureGoods.ProcedureID in( select ProcedureID from TP_PC_Procedure where ProductionLineID =:ProductionLineID and NodeType=1 and valueflag = '1') order by TP_PC_Procedure.misspriority desc, TP_PC_Procedure.displayno"; paras = new OracleParameter[]{ new OracleParameter(":ProductionLineID",OracleDbType.Int32,ProductionLineID,ParameterDirection.Input), new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); #endregion if (ds != null && ds.Tables[0].Rows.Count > 0) //即不在报损 ,也不在产成,说明未走任何工序 { int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入 sqlString = @"select 1 from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), new OracleParameter(":ProcedureID",OracleDbType.Int32,produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入 { int OrganizationID = 0; string OrganizationName = ""; string OrganizationCode = ""; string OrganizationFullName = ""; sqlString = @"select TP_MST_Organization.OrganizationID ,TP_MST_Organization.OrganizationName ,TP_MST_Organization.OrganizationCode ,TP_MST_Organization.OrganizationFullName from TP_PC_Procedure left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID where TP_PC_Procedure.ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称 OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码 OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称 // 获取校验工序信息 sqlString = @"select TP_PC_Procedure.ProcedureID ,TP_PC_Procedure.ProcedureCode ,TP_PC_Procedure.ProcedureName from TP_PC_Procedure where TP_PC_Procedure.ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); string ProcedureCode = ""; string ProcedureName = ""; if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入 { ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); } //漏扫表ID string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual"; AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql)); sqlString = @"insert into TP_PM_BarCodeMissing(MissID, BarCode, OrganizationID, OrganizationName, OrganizationCode, OrganizationFullName, ProcedureID, ProcedureCode, ProcedureName, MissProcedureID, MissProcedureCode, MissProcedureName, GoodsID, GoodsCode, GoodsName, GoodsTypeID, CreateUserID, UpdateUserID, AccountID ) values ( :MissID, :BarCode, :OrganizationID, :OrganizationName, :OrganizationCode, :OrganizationFullName, :ProcedureID, :ProcedureCode, :ProcedureName, :MissProcedureID, :MissProcedureCode, :MissProcedureName, :GoodsID, :GoodsCode, :GoodsName, :GoodsTypeID, :CreateUserID, :UpdateUserID, :AccountID ) "; paras = new OracleParameter[]{ new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input), new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input), new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input), new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input), new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input), //new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input), //new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input), //new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input), new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input), new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input), new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input), new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input), new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input), new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; oracleTrConn.GetSqlResultToStr(sqlString, paras); } #endregion } //} } } return AddBarCodeMissingID; } catch (Exception ex) { throw ex; } } #endregion #region 校验生产工号 /// /// 检验此用户是否允许生产工序 /// /// 工序ID /// 工号ID /// CheckProcedureUserResult实体类 public static CheckProcedureUserResult CheckProcedureUser(int procedureID, string UserCode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); string sqlString = @"SELECT TP_MST_USER.ispublicbody,TP_MST_USER.USERID,TP_MST_USER.UserCode,TP_MST_USER.UserName,nvl(TP_PC_ProcedureUser.Userid,0) as ProcedureUserid FROM TP_MST_USER left join (select TP_PC_ProcedureUser.Userid from TP_PC_ProcedureUser where TP_PC_ProcedureUser.ProcedureID=:ProcedureID) TP_PC_ProcedureUser on TP_PC_ProcedureUser.Userid=TP_MST_USER.UserID WHERE TP_MST_USER.UserCode=:UserCode and TP_MST_USER.ValueFlag = 1 and TP_MST_USER.IsWorker=1 and TP_MST_USER.AccountID=:accountID"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter(":UserCode",OracleDbType.Varchar2,UserCode,ParameterDirection.Input), new OracleParameter(":accountID",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; DataSet resultDs = oracleConn.GetSqlResultToDs(sqlString, paras); CheckProcedureUserResult checkProcedureUserResult = new CheckProcedureUserResult(); if (resultDs != null && resultDs.Tables.Count > Constant.INT_IS_ZERO && resultDs.Tables[0].Rows.Count > Constant.INT_IS_ZERO) { if (Convert.ToInt32(resultDs.Tables[0].Rows[0]["ProcedureUserid"]) == Constant.INT_IS_ZERO) { // 此工号不允许生产工序 checkProcedureUserResult.ErrMsg = string.Format(Messages.MSG_PM_W006, UserCode); } else { checkProcedureUserResult.UserID = Convert.ToInt32(resultDs.Tables[0].Rows[0]["UserID"]); checkProcedureUserResult.UserCode = resultDs.Tables[0].Rows[0]["UserCode"].ToString(); checkProcedureUserResult.UserName = resultDs.Tables[0].Rows[0]["UserName"].ToString(); checkProcedureUserResult.Ispublicbody = resultDs.Tables[0].Rows[0]["Ispublicbody"].ToString() == "1" ? 1 : 0; } } else { checkProcedureUserResult.ErrMsg = string.Format(Messages.MSG_CMN_W019, UserCode, "生产工号"); } #region 查询该工号下是否有试用或者转正的生产员工 if (string.IsNullOrEmpty(checkProcedureUserResult.ErrMsg)) { sqlString = @" select count(*) from tp_hr_staff where staffid in(select staffid from tp_mst_userstaff where userid=:userID) and valueflag=1 and (staffstatus=1 or staffstatus=2)"; paras = new OracleParameter[]{ new OracleParameter(":userID",OracleDbType.Int32,checkProcedureUserResult.UserID,ParameterDirection.Input), }; string count = oracleConn.GetSqlResultToStr(sqlString, paras); if (int.Parse(count) == Constant.INT_IS_ZERO) { checkProcedureUserResult.ErrMsg = string.Format(Messages.MSG_PM_W005, UserCode); } } #endregion return checkProcedureUserResult; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion /// /// 根据工序条码获得生产数据 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet GetProductionByBarcode(int procedureID, string barcode) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = "select t.ProductionDataID,t.Barcode,t.GoodsID,t.GoodsCode,t.GoodsName,t.UserID,t.UserCode,t.UserName,t.DefectFlag,t.ReworkProcedureID,t.Remarks from TP_PM_ProductionData t where t.barcode='" + barcode + "' and t.ProcedureID=" + procedureID; DataSet ds = con.GetSqlResultToDs(sqlString); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取生产返工工序 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet GetReworkProcedureByBarcode(int procedureID, string barcode) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = @"select t.ProcedureID as ReworkProcedureID, t.ProcedureCode as ReworkProcedureCode, t.ProcedureName as ReworkProcedureName from TP_PM_ProductionData t where t.ProcedureModel=1 and t.ModelType=0 and t.barcode='" + barcode + "' "; DataSet ds = con.GetSqlResultToDs(sqlString); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取重烧生产返工工序 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet GetReworkProcedureByProcedureID(int procedureID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = @"select ProcedureID as ReworkProcedureID ,ProcedureName as ReworkProcedureName from TP_PC_Procedure p where ProductionLineID in( select ProductionLineID from TP_PC_Procedure where ProcedureID=:ProcedureID ) and p.valueflag='1' and IsSpecialRework IN('1','2') order by ReworkProcedureID "; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, procedureID,ParameterDirection.Input), }; DataSet ds = con.GetSqlResultToDs(sqlString, paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据生产数据ID获取对应的缺陷信息 /// /// 生产数据ID /// DataSet public static DataSet GetProductionDefectByProductionDataID(int ProductionDataID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = @"select replace( concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectName) , concat(TP_PM_Defect.DefectCode||'->',TP_PM_Defect.DefectCode||'->'),TP_PM_Defect.DefectCode||'->' ) as DefectName, replace( concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionName) , concat(TP_PM_Defect.DefectPositionCode||'->',TP_PM_Defect.DefectPositionCode||'->'),TP_PM_Defect.DefectPositionCode||'->' ) as DefectPositionName, TP_PM_Defect.DefectProcedureName ,TP_PM_Defect.DefectUserCode,TP_PM_Defect.DefectUserName,TP_PM_Defect.Remarks,TP_MST_Jobs.JobsName,TP_MST_DefectFine.DefectFineCode as DefectFine, TP_PM_Defect.DefectDeductionNum, (SELECT listagg(to_char(s.staffname), ',') within GROUP(ORDER BY s.staffid) FROM tp_pm_defectresponsible dp INNER JOIN tp_hr_staff s ON s.staffid = dp.staffid where dp.productiondefectid = TP_PM_Defect.PRODUCTIONDEFECTID) DefectStaffNames from TP_PM_Defect left join TP_MST_Jobs on TP_PM_Defect.DefectJobs=TP_MST_Jobs.JobsID left join TP_MST_DefectFine on TP_PM_Defect.DefectFine=TP_MST_DefectFine.DefectFineID where TP_PM_Defect.ProductionDataID=" + ProductionDataID; DataSet ds = con.GetSqlResultToDs(sqlString); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 根据产品ID查出缺陷位置 /// /// 产品ID /// object public static object GetDefectPosition(string positionCode, SUserInfo sUserInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = @"select DEFECTPOSITIONID, DEFECTPOSITIONCODE, DEFECTPOSITIONNAME, concat(DEFECTPOSITIONCODE||'->',DEFECTPOSITIONNAME) as DEFECTPOSITIONCODEANDNAME from TP_MST_DEFECTPOSITION where AccountID=:accountID and DEFECTPOSITIONCODE=:defectpositioncode and ValueFlag=1"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":accountID",sUserInfo.AccountID), new OracleParameter(":defectpositioncode",positionCode), }; DataSet resultds = con.GetSqlResultToDs(sqlString, paras); if (resultds != null && resultds.Tables.Count > Constant.INT_IS_ZERO) { string errMsg = string.Empty; int defectPositionID = 0; string defectpositionname = string.Empty; if (resultds.Tables[0].Rows.Count == Constant.INT_IS_ZERO) { errMsg = "缺陷位置在系统中不存在"; } else { defectPositionID = int.Parse(resultds.Tables[0].Rows[0]["defectPositionID"].ToString()); defectpositionname = resultds.Tables[0].Rows[0]["defectpositionname"].ToString(); } return new { ErrMsg = errMsg, DefectPositionID = defectPositionID, DefectPositionName = defectpositionname }; } else { return null; } } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取半检相应的数据 /// /// 半检ID /// DataSet public static DataSet GetSemiTestByID(int semiTestID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); DataSet dsReturn = new DataSet(); string stringSql1 = @"select TP_MST_User.Userid, TP_MST_User.Usercode, TP_MST_User.Username, TP_PM_SemiTest.TestDate, TP_PM_SemiTest.Remarks, TP_PM_SemiTest.Optimestamp, TP_PM_SemiTest.AuditStatus, TP_PM_SemiTest.SemiTestType from TP_PM_SemiTest left join TP_MST_User on TP_PM_SemiTest.TestUserID= TP_MST_User.Userid where TP_PM_SemiTest.SemiTestID=:SemiTestID"; string stringSql2 = @"select TP_PM_SemiTestDetail.Semitestdetailid, TP_PM_SemiTestDetail.Groutinguserid, TP_PM_SemiTestDetail.Goodsid, TP_PM_SemiTestDetail.Goodscode, TP_PM_SemiTestDetail.Goodsname, TP_PM_SemiTestDetail.Testnum, TP_PM_SemiTestDetail.Scrapnum, TP_PM_SemiTestDetail.Scrapreason, TP_PM_SemiTestDetail.Feedback, TP_MST_Goods.Goodsspecification, TP_MST_Goods.Goodsmodel, TP_MST_GoodsType.GoodsTypeName from TP_PM_SemiTestDetail left join TP_MST_Goods on TP_PM_SemiTestDetail.Goodsid=TP_MST_Goods.Goodsid left join TP_MST_GoodsType on TP_MST_Goods.Goodstypeid=TP_MST_GoodsType.Goodstypeid where TP_PM_SemiTestDetail.Semitestid=:SemiTestID"; string stringSql3 = @"select TP_PM_SemiTestDefect.SemiTestDefectID, TP_PM_SemiTestDefect.SemiTestDetailID, TP_PM_SemiTestDefect.SemiTestID, TP_PM_SemiTestDefect.SemiTestDate, TP_PM_SemiTestDefect.Defectid, TP_PM_SemiTestDefect.Defectpositionid, TP_PM_SemiTestDefect.DefectNum from TP_PM_SemiTestDefect where TP_PM_SemiTestDefect.Semitestid=:SemiTestID "; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":SemiTestID",OracleDbType.Int32, semiTestID,ParameterDirection.Input), }; DataSet ds = con.GetSqlResultToDs(stringSql1, paras); ds.Tables[0].TableName = "TP_PM_SemiTest"; DataSet ds2 = con.GetSqlResultToDs(stringSql2, paras); ds2.Tables[0].TableName = "TP_PM_SemiTestDetail"; DataSet ds3 = con.GetSqlResultToDs(stringSql3, paras); ds3.Tables[0].TableName = "TP_PM_SemiTestDefect"; dsReturn.Tables.Add(ds.Tables[0].Copy()); dsReturn.Tables.Add(ds2.Tables[0].Copy()); dsReturn.Tables.Add(ds3.Tables[0].Copy()); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取审批半检数据结果集 /// /// 半检实体类 /// 用户基本信息 /// DataSet public static DataSet SearchSemiTestList(SemiTestEntity semiTestEntity, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_begindate",OracleDbType.Date, semiTestEntity.beginDate,ParameterDirection.Input), new OracleParameter("in_enddate",OracleDbType.Date, semiTestEntity.endDate,ParameterDirection.Input), new OracleParameter("in_accountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("in_testuserIDS",OracleDbType.NVarchar2, semiTestEntity.TestUserIDS,ParameterDirection.Input), new OracleParameter("in_currentUserID",OracleDbType.Int32, user.UserID,ParameterDirection.Input), new OracleParameter("in_remarks",OracleDbType.NVarchar2, semiTestEntity.Remarks,ParameterDirection.Input), new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output), new OracleParameter("in_semitesttype",OracleDbType.Int32, semiTestEntity.SemiTestType,ParameterDirection.Input), new OracleParameter("in_testuserid",OracleDbType.Int32, semiTestEntity.TestUserID,ParameterDirection.Input), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestList", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取半检数据详细数据源 /// /// 半检ID /// 用户基本信息 /// DataSet public static DataSet SearchSemiTestInfo(int semitestID, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_semitestID",OracleDbType.Int32, semitestID,ParameterDirection.Input), new OracleParameter("in_accountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestInfo", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取半检数据详细数据源 /// /// 半检明细ID /// 用户基本信息 /// DataSet public static DataSet SearchSemiTestDetailInfo(int semitestDetailID, SUserInfo user) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_semitestDetailID",OracleDbType.Int32, semitestDetailID,ParameterDirection.Input), new OracleParameter("in_accountID",OracleDbType.Int32, user.AccountID,ParameterDirection.Input), new OracleParameter("out_result",OracleDbType.RefCursor, ParameterDirection.Output), }; DataSet ds = con.ExecStoredProcedure("PRO_PM_SearchSemiTestDetail", paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取产品条码是否重烧 /// /// 产品条码 /// Datase public static DataSet GetReFine(string barcode) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { //获取窑炉管理数据 //string sqlString = "Select IsReFire from TP_PM_InProduction where barcode=:barcode"; string sqlString = "select IsReFire, IsLengBu from tp_PM_ProductionData where ProductionDataid=(select max(ProductionDataid) from tp_PM_ProductionData where barcode=:barcode)"; Oracle.ManagedDataAccess.Client.OracleParameter[] oracleParameter = new Oracle.ManagedDataAccess.Client.OracleParameter[] { new Oracle.ManagedDataAccess.Client.OracleParameter(":barcode",barcode) }; oracleConn.Open(); DataSet result = oracleConn.GetSqlResultToDs(sqlString, oracleParameter); oracleConn.Close(); return result; } catch (Exception ex) { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 检验干补条码 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckDryRepairBarcode(int procedureID, string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output), new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output), new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), }; oracleConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras); DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"); dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value; dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value; dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value; if (paras[2].Value.ToString() == "null") //只有正确的条码,读注浆信息 { string sqlString = @"select TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode, tp_pm_groutingdailydetail.groutingcount as GroutingNum, tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode, tp_pm_groutingdailydetail.ispublicbody, tp_pm_groutingdailydetail.Groutingdate, tp_pm_groutingdailydetail.SpecialRepairFlag, tp_mst_logo.logoid, tp_mst_logo.logocode, tp_mst_logo.logoname from tp_pm_groutingdailydetail left join tp_mst_logo on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid where tp_pm_groutingdailydetail.BarCode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); } } dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 报损工序查出工号根据生产数据ID /// /// /// public static DataSet GetScrapProductUserCodeByProductionDataID(int ProductionDataID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string sqlString = @"select UserID,UserCode,UserName from TP_PM_ProductionDataIn where ProductionDataID=:ProductionDataID"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":ProductionDataID",OracleDbType.Int32, ProductionDataID,ParameterDirection.Input), }; DataSet ds = con.GetSqlResultToDs(sqlString, paras); return ds; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 交坯验证条码(首节点) /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckBarcodeDeliverMud(int procedureID, string barcode, SUserInfo sUserInfo, bool isInn = false) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.IgnoreCase = false; oracleConn.Open(); // 2019-1016 if (!isInn) { //xuwei fix 2019-09-26 使用通用方法判定 //if (PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode) == 0) //{ // return CheckBarcode(procedureID, barcode, sUserInfo, true); //} string sql1 = "select NodeType from tp_pc_procedure where procedureid=:procedureid"; string NodeType = oracleConn.GetSqlResultToObj(sql1, new OracleParameter[] { new OracleParameter(":procedureid", procedureID) }) + ""; if (NodeType == "1") { int isNodeBegin = PMModuleLogicDAL.IsNodeBegin(oracleConn, barcode); if (isNodeBegin == 0) { return CheckBarcode(procedureID, barcode, sUserInfo, true); } } else { return CheckBarcode(procedureID, barcode, sUserInfo, true); } } string sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode='" + barcode + "'"; sql = "select barcodestatus,GroutingDailyDetailid from TP_PM_USEDBARCODE where BarCode=:barcode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sql, paras); DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode; if (ds != null && ds.Tables[0].Rows.Count == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]"; } else { //不等于空的时候 if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1") { sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + barcode + "'"; string newbarcode = oracleConn.GetSqlResultToStr(sql); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode; } else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损"; } else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" || ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4") { //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯"; dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产"; } else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = ""; string sqlString = @"select tp_pm_GroutingDailyDetail.GoodsID, tp_pm_GroutingDailyDetail.GoodsCode, tp_pm_GroutingDailyDetail.GoodsName, tp_pm_GroutingDailyDetail.UserID as GroutingUserID, tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode, tp_mst_user.username as GroutingUserName, tp_pm_GroutingDailyDetail.groutingcount as GroutingNum, tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode, tp_pm_GroutingDailyDetail.ispublicbody, tp_pm_GroutingDailyDetail.Groutingdate, tp_pm_GroutingDailyDetail.SpecialRepairFlag, tp_mst_logo.logoid, tp_mst_logo.logocode, tp_mst_logo.logoname, TP_MST_Goods.DeliverLimitCycle from tp_pm_GroutingDailyDetail left join tp_mst_logo on tp_pm_GroutingDailyDetail.logoid=tp_mst_logo.logoid left join tp_mst_user on tp_pm_GroutingDailyDetail.userid=tp_mst_user.userid left join TP_MST_Goods on tp_pm_GroutingDailyDetail.GoodsID=TP_MST_Goods.GoodsID where tp_pm_GroutingDailyDetail.groutingdailydetailid=" + ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString(); //paras = new OracleParameter[]{ // new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()), // }; ds = oracleConn.GetSqlResultToDs(sqlString, null); if (ds != null && ds.Tables[0].Rows.Count > 0) { string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()), new OracleParameter(":ProcedureID",procedureID), }; DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras); if (dsGoods.Tables[0].Rows[0][0].ToString() != "1") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置"; } else { dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dr[Constant.BarCodeResultTableColumns.out_groutingUserName.ToString()] = ds.Tables[0].Rows[0]["GroutingUserName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingUserID.ToString()] = ds.Tables[0].Rows[0]["GroutingUserID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logocode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoname"].ToString(); dr[Constant.BarCodeResultTableColumns.out_deliverLimitCycle.ToString()] = ds.Tables[0].Rows[0]["DeliverLimitCycle"].ToString(); // 首节点无需暂时字段 //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()); //barCodeResultTable.Columns.Add(Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()); } } } } dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 检验条码(除了交坯单点检验) /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckBarcodeSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); string sqlBarcode = GetConvertBarCode(oracleConn, barcode, procedureID, sUserInfo); if (sqlBarcode == string.Empty) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码"; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } else { dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = sqlBarcode; barcode = sqlBarcode; } OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("in_procedureid",OracleDbType.Int32,procedureID,ParameterDirection.Input), new OracleParameter("in_barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), new OracleParameter("out_errMsg",OracleDbType.NVarchar2,2000,null,ParameterDirection.Output), new OracleParameter("out_goodsID",OracleDbType.Int32,ParameterDirection.Output), new OracleParameter("out_goodsCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_goodsName",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_groutingUserCode",OracleDbType.NVarchar2,50,null,ParameterDirection.Output), new OracleParameter("out_errMsg_Status",OracleDbType.Varchar2,50,"",ParameterDirection.Output), }; oracleConn.ExecStoredProcedure("PRO_PM_CheckBarcode", paras); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"); int missFlag = 0; if (paras[7].Value != null && paras[7].Value.ToString() == "1") { missFlag = AddBarCodeMissing(oracleConn, barcode, procedureID, sUserInfo); } dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value; dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value; dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value; dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = missFlag; if (paras[7].Value.ToString() == "null") //只有正确的条码,读注浆信息 { // string sqlString = @"select // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode, // tp_pm_groutingdailydetail.groutingcount as GroutingNum, // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode, // tp_pm_groutingdailydetail.ispublicbody, // tp_pm_groutingdailydetail.Groutingdate, // tp_pm_groutingdailydetail.SpecialRepairFlag // from tp_pm_groutingdailydetail // where tp_pm_groutingdailydetail.GroutingDailyDetailID in (select GroutingDailyDetailID from TP_PM_UsedBarCode where barcode=:barcode)"; string sqlString = "SELECT PI.GROUTINGUSERCODE,\n" + " PI.GROUTINGNUM,\n" + " PI.GROUTINGMOULDCODE AS MOULDCODE,\n" + " PI.ISPUBLICBODY,\n" + " PI.GROUTINGDATE,\n" + " PI.SPECIALREPAIRFLAG,\n" + " L.LOGOID,\n" + " L.LOGOCODE,\n" + " L.LOGONAME,\n" + //" GOODS.WATERLABELCODE\n" + " nvl((select gls.WATERLABELCODE\n" + " from TP_MST_GOODSLOGOSAP gls\n" + " where gls.goodsid = PI.goodsid\n" + " and gls.logoid = PI.LOGOID)\n" + " ,GOODS.WATERLABELCODE) WATERLABELCODE\n" + " FROM TP_PM_INPRODUCTION PI\n" + " LEFT JOIN TP_MST_LOGO L\n" + " ON PI.LOGOID = L.LOGOID\n" + " LEFT JOIN TP_MST_GOODS GOODS\n" + " ON PI.GOODSID = GOODS.GOODSID\n" + " WHERE PI.BARCODE = :BARCODE"; paras = new OracleParameter[] { new OracleParameter(":BARCODE",barcode) }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GROUTINGUSERCODE"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GROUTINGNUM"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MOULDCODE"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ISPUBLICBODY"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["GROUTINGDATE"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SPECIALREPAIRFLAG"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["LOGOID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["LOGOCODE"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["LOGONAME"].ToString(); dr[Constant.BarCodeResultTableColumns.out_WaterLabelCode.ToString()] = ds.Tables[0].Rows[0]["WATERLABELCODE"].ToString(); // 获取编码检验标识 sqlString = "SELECT CODECHECKFLAG FROM TP_PC_PROCEDURE WHERE PROCEDUREID = :PROCEDUREID"; paras = new OracleParameter[] { new OracleParameter(":PROCEDUREID",procedureID) }; DataTable dt = oracleConn.GetSqlResultToDt(sqlString, paras); if (dt != null && dt.Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_CodeCheckFlag.ToString()] = dt.Rows[0]["CODECHECKFLAG"] + ""; } } } dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 交坯验证条码 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckBarcodeDeliverMudSinglePoint(int procedureID, string barcode, SUserInfo sUserInfo, ref int? GroutingDailyDetailID) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); string sql = "select barcodestatus,barcode,GroutingDailyDetailid from TP_PM_USEDBARCODE where barcode=:barcode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sql, paras); DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); dr[Constant.BarCodeResultTableColumns.out_barcode.ToString()] = barcode; if (ds != null && ds.Tables[0].Rows.Count == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]"; } else { //不等于空的时候 if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "-1") { sql = "select max(newbarcode) from TP_PM_BarCodeRecord where BarCode='" + ds.Tables[0].Rows[0]["barcode"].ToString() + "'"; string newbarcode = oracleConn.GetSqlResultToStr(sql); dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码已被替换,新条码为" + newbarcode; } else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "2") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已成型报损"; } // else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "3" || ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "4") { //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已交坯"; dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品已在产"; } else if (ds.Tables[0].Rows[0]["barcodestatus"].ToString() == "1") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = ""; // string sqlString = @"select // TP_PM_GroutingDailyDetail.GoodsID, // TP_PM_GroutingDailyDetail.GoodsCode, // TP_PM_GroutingDailyDetail.GoodsName, // TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode, // tp_pm_groutingdailydetail.groutingcount as GroutingNum, // tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode, // tp_pm_groutingdailydetail.ispublicbody, // tp_pm_groutingdailydetail.Groutingdate, // tp_pm_groutingdailydetail.SpecialRepairFlag // from TP_PM_USEDBARCODE // left join // tp_pm_groutingdailydetail // on TP_PM_USEDBARCODE.groutingdailydetailid=tp_pm_groutingdailydetail.groutingdailydetailid // where tp_pm_groutingdailydetail.BarCode=:barcode"; GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()); string sqlString = @"select tp_pm_GroutingDailyDetail.groutingdailydetailid, tp_pm_GroutingDailyDetail.GoodsID, tp_pm_GroutingDailyDetail.GoodsCode, tp_pm_GroutingDailyDetail.GoodsName, tp_pm_GroutingDailyDetail.UserCode as GroutingUserCode, tp_pm_GroutingDailyDetail.groutingcount as GroutingNum, tp_pm_GroutingDailyDetail.GroutingMouldCode as MouldCode, tp_pm_GroutingDailyDetail.ispublicbody, tp_pm_GroutingDailyDetail.Groutingdate, tp_pm_GroutingDailyDetail.SpecialRepairFlag, tp_mst_logo.logoid, tp_mst_logo.logocode, tp_mst_logo.logoname from tp_pm_GroutingDailyDetail left join tp_mst_logo on tp_mst_logo.logoid=tp_pm_GroutingDailyDetail.logoid where tp_pm_GroutingDailyDetail.groutingdailydetailid=:groutingdailydetailid"; //where tp_pm_GroutingDailyDetail.barcode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":groutingdailydetailid",ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()), //new OracleParameter("barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { GroutingDailyDetailID = Convert.ToInt32(ds.Tables[0].Rows[0]["GroutingDailyDetailid"].ToString()); string sqlExistGoods = "select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":GoodsID",ds.Tables[0].Rows[0]["GoodsID"].ToString()), new OracleParameter(":ProcedureID",procedureID), }; DataSet dsGoods = oracleConn.GetSqlResultToDs(sqlExistGoods, paras); if (dsGoods.Tables[0].Rows[0][0].ToString() != "1") { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + ds.Tables[0].Rows[0]["GoodsCode"].ToString() + "]没有在该工序中配置"; } else { dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = ds.Tables[0].Rows[0]["GoodsID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = ds.Tables[0].Rows[0]["GoodsName"].ToString(); dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoid"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); } } } } dr[Constant.BarCodeResultTableColumns.out_missFlag.ToString()] = 0; dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #region 半成品检验校验条码 /// /// 半检检验条码 /// /// 产品条码 /// DataSet public static ServiceResultEntity SemiCheckBarcode(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 1.判断产品是否在产 string sql = @"select InScrapFlag, KilnCarID, KilnCarName, IsReworkFlag, SemiCheckID from TP_PM_InProduction where BarCode=:BarCode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { //// 如果不合格,查询报损表里是否回收 //sql = "select recyclingflag from TP_PM_ScrapProduct " // + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) " // + " from TP_PM_ScrapProduct " // + " where BarCode=:BarCode and ValueFlag=1)" // + " and ValueFlag=1"; //paras = new OracleParameter[]{ // new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), // }; //DataSet dsResult2 = oracleConn.GetSqlResultToDs(sql, paras); //if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0) //{ // if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0) // { // resultEntity.Result = -4;// 已经回收不允许编辑 // resultEntity.Message = "此产品已经回收,不能改判"; // return resultEntity; // } //} if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1") { resultEntity.Result = -2; //报损待审批 resultEntity.Message = "条码[" + barcode + "]已经报损待审批"; return resultEntity; } if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString())) { resultEntity.Result = -3; //登窑车后不允许半成品检测 resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; return resultEntity; } // chenxy 2019-10-02 半检返修 IsReworkFlag=2 if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "2") { resultEntity.Result = -4; //半检返修 resultEntity.Message = "条码[" + barcode + "]已半检返修"; return resultEntity; } if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "1") { resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态 resultEntity.Message = "返工"; } else { resultEntity.Result = "0";//新建状态 } } else { // 同时查是否在在产回收表中 sql = @"select SemiCheckID from TP_PM_InProductionTrash where BarCode=:BarCode and GoodsLevelTypeID=13 and SemiCheckID is not null"; // 13代表产品不合格 dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]);//编辑状态 resultEntity.Message = "不合格"; } else { resultEntity.Result = -1;// 不在在产表中 resultEntity.Message = "条码[" + barcode + "]不在在产流程"; } } return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 半成品编辑数据 /// /// 根据半成品检验数据ID,显示半成品数据信息 /// /// 半成品数据ID /// DataSet public static DataSet GetSemiCheckByID(int semiCheckID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); DataSet dsReturn = new DataSet(); string sqlString = @"select TP_PM_SemiCheck.SemiCheckID, TP_PM_SemiCheck.Barcode as BarCode, TP_PM_SemiCheck.Goodsid as GoodsID, TP_PM_SemiCheck.Goodscode as GoodsCode, TP_MST_Goods.Goodsname as GoodsName, TP_PM_SemiCheck.GoodsLevelID as DefectFlagID, TP_PM_SemiCheck.ReworkProcedureID as ReworkProcedureID, TP_PM_SemiCheck.ReworkProcedureCode, TP_PM_SemiCheck.Remarks as Remarks, TP_PM_SemiCheck.SemiCheckUserID as UserID, TP_PM_SemiCheck.SemiCheckUserCode as UserCode, tp_mst_user.UserName as UserName, TP_PM_SemiCheck.Goodsleveltypeid as GoodsLevelTypeID, TP_PM_SemiCheck.SpecialRepairflag, TP_PM_SemiCheck.GroutingUserCode, TP_PM_SemiCheck.GroutingMouldCode as MouldCode, TP_PM_SemiCheck.GroutingNum, TP_PM_SemiCheck.GroutingDate, TP_PM_SemiCheck.IsPublicBody, TP_PM_SemiCheck.logoid, TP_MST_Logo.logocode, TP_MST_Logo.logoname, TP_PM_SemiCheck.SemiCheckType, TP_PM_SemiCheck.ReworkUserID, TP_PM_SemiCheck.ReworkUserCode, TP_PM_SemiCheck.ReSemiCheckUserCode, tp_pc_procedure.procedurename as ReworkProcedureName, TP_PM_SemiCheck.ReSemiCheckType, TP_PM_SemiCheck.CreateTime, TP_PM_SemiCheck.ReSemiCheckTime, TP_PM_SemiCheck.SemiCheckTime from TP_PM_SemiCheck left join TP_MST_Goods on TP_PM_SemiCheck.Goodsid=TP_MST_Goods.Goodsid left join tp_mst_user on TP_PM_SemiCheck.SemiCheckUserID=tp_mst_user.userid left join TP_MST_Logo on TP_PM_SemiCheck.Logoid=TP_MST_Logo.Logoid left join tp_pc_procedure on TP_PM_SemiCheck.ReworkProcedureID=tp_pc_procedure.procedureID where TP_PM_SemiCheck.SemiCheckID=:SemiCheckID "; string sqlString2 = @" select defect.semicheckdefectid, defect.semicheckid, defect.DefectID, defect.defectcode, defect.defectname, defect.defectpositionid, defect.defectpositioncode, defect.defectpositionname, defect.scrapresponflag, Procedure.Procedurename as DefectProcedureName, Procedure.Procedurecode as DefectProcedureCode, defect.defectuserid, defect.defectusercode, TP_mst_user.username as defectusername, defect.remarks, defect.DefectProcedureID, defect.DefectProductionDataID from TP_PM_SemiCheckDefect defect left join TP_PC_Procedure Procedure on defect.defectprocedureid=Procedure.Procedureid left join TP_mst_user on defect.DefectUserID=TP_mst_user.userid where defect.SemiCheckID =:SemiCheckID"; string sqlString3 = @"select TP_PM_SCDefectResponsible.SemiCheckDefectID, TP_PM_SCDefectResponsible.Staffid, TP_HR_Staff.Staffcode as StaffCode, TP_HR_Staff.Staffname as StaffName, TP_PM_SCDefectResponsible.Staffstatus as StaffStatus, TP_PM_SCDefectResponsible.UJobsID, TP_PM_SCDefectResponsible.SJobsID from TP_PM_SCDefectResponsible left join TP_HR_Staff on TP_PM_SCDefectResponsible.StaffID=TP_HR_Staff.Staffid" + //where TP_PM_SCDefectResponsible.SemiCheckDefectID in //( // select SemiCheckDefectID from TP_PM_SemiCheckDefect where TP_PM_SemiCheckDefect.SemiCheckID=:SemiCheckID //)"; " where TP_PM_SCDefectResponsible.SemiCheckID = :SemiCheckID"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":SemiCheckID",OracleDbType.Int32, semiCheckID,ParameterDirection.Input), }; DataTable ds = con.GetSqlResultToDt(sqlString, paras); ds.TableName = "TP_PM_SemiCheck"; DataTable ds2 = con.GetSqlResultToDt(sqlString2, paras); ds2.TableName = "TP_PM_SemiCheckDefect"; DataTable ds3 = con.GetSqlResultToDt(sqlString3, paras); ds3.TableName = "TP_PM_SCDefectResponsible"; dsReturn.Tables.Add(ds); dsReturn.Tables.Add(ds2); dsReturn.Tables.Add(ds3); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 获取条码所走过的工序 /// /// 根据条码获取经过的工序,用于绑定返工工序 /// /// 产品条码 /// DataSet public static DataSet GetSemiCheckPassProcedure(string barcode) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); // hg5020 半检只定成型和干补的责任 by chenxy 2020-03-30 // and(TP_PM_ProductionDataIn.modeltype = 8 or(TP_PM_ProductionDataIn.modeltype = 5 and(exists(select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID = TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG = '0')))) // and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0'))) string twcode = con.GetSqlResultToStr("select t.tagcode||t.workcode twcode from tp_mst_account t where t.accountid=1"); if (twcode == "HEGII5020") { // hg5020 半检只定成型和干补的责任 by chenxy 2020-03-30 // and(TP_PM_ProductionDataIn.modeltype = 8 or(TP_PM_ProductionDataIn.modeltype = 5 and(exists(select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID = TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG = '0')))) // and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0'))) string sqlString1 = @"select TP_PM_ProductionDataIn.Barcode as BarCode, TP_PM_ProductionDataIn.UserID, TP_PM_ProductionDataIn.UserCode, TP_PM_ProductionDataIn.UserName, TP_PM_ProductionDataIn.ProcedureID, TP_PM_ProductionDataIn.ProcedureCode, TP_PM_ProductionDataIn.ProcedureName, TP_PM_ProductionDataIn.ProductionDataID from TP_PM_ProductionDataIn --left join TP_PC_Procedure --on TP_PM_ProductionDataIn.ProcedureID=TP_PC_Procedure.ProcedureID where TP_PM_ProductionDataIn.BarCode=:BarCode and TP_PM_ProductionDataIn.valueflag = '1' --and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0'))) and (TP_PM_ProductionDataIn.modeltype=8 or (TP_PM_ProductionDataIn.modeltype = 5 and (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0')))) order by TP_PM_ProductionDataIn.ProductionDataID "; // 干补后 半检 不能选成型责任 OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input), }; return con.GetSqlResultToDs(sqlString1, paras1); } string sqlString = @"select TP_PM_ProductionDataIn.Barcode as BarCode, TP_PM_ProductionDataIn.UserID, TP_PM_ProductionDataIn.UserCode, TP_PM_ProductionDataIn.UserName, TP_PM_ProductionDataIn.ProcedureID, TP_PM_ProductionDataIn.ProcedureCode, TP_PM_ProductionDataIn.ProcedureName, TP_PM_ProductionDataIn.ProductionDataID from TP_PM_ProductionDataIn --left join TP_PC_Procedure --on TP_PM_ProductionDataIn.ProcedureID=TP_PC_Procedure.ProcedureID where TP_PM_ProductionDataIn.BarCode=:BarCode and TP_PM_ProductionDataIn.valueflag = '1' and (TP_PM_ProductionDataIn.modeltype <> 5 or (exists (select 1 from tp_pm_groutingdailydetail gdd where gdd.groutingdailydetailID=TP_PM_ProductionDataIn.groutingdailydetailID and gdd.SPECIALREPAIRFLAG='0'))) order by TP_PM_ProductionDataIn.ProductionDataID "; // 干补后 半检 不能选成型责任 OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2, barcode,ParameterDirection.Input), }; DataSet dsReturn = con.GetSqlResultToDs(sqlString, paras); return dsReturn; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 获取登陆帐户有无半检状态权限 /// /// 获取登陆帐户有无半检状态权限 /// /// 工号编码 /// public static int GetSemiCheckStatusFuntion(SUserInfo userInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); string strSql = ""; strSql = @"SELECT F.Functionlevel, F.FunctionCode, F.FunctionName, F.FullName, F.FunctionFlag, F.FunctionButtonFlag, F.FormName, F.ButtonName FROM TP_MST_UserRight R LEFT OUTER JOIN TP_SYS_Function F ON (R.FunctionCode = F.FunctionCode OR R.FunctionCode = '[ALL]') WHERE F.ValueFlag = 1 AND F.FunctionCode NOT LIKE '0101%' AND F.FunctionCode NOT LIKE '0102%' and F.FunctionCode='06200104'"; strSql = strSql + " AND R.UserID = " + userInfo.UserID; DataSet ds = con.GetSqlResultToDs(strSql); if (ds != null && ds.Tables[0].Rows.Count > 0) { return 1; } return 0; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 复检验校验条码 /// /// 复检验条码 /// /// 产品条码 /// DataSet public static ServiceResultEntity ReSemiCheckBarcode(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 1.判断产品是否在产 string sql = @"select InScrapFlag, KilnCarID, KilnCarName, IsReworkFlag, SemiCheckID from TP_PM_InProduction where BarCode=:BarCode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"] == DBNull.Value ? 0 : dsResult.Tables[0].Rows[0]["SemiCheckID"]); if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1") { resultEntity.Result = -2; //报损待审批 resultEntity.Message = "条码[" + barcode + "]已经报损待审批"; return resultEntity; } if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString())) { resultEntity.Result = -3; //登窑车后不允许半成品检测 resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; return resultEntity; } // chenxy 2019-10-02 半检返修 IsReworkFlag=2 //if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() == "0") if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "1") { resultEntity.Result = -4; resultEntity.Message = "条码[" + barcode + "]不是返工状态"; } } else { resultEntity.Result = -1;// 不在在产表中 resultEntity.Message = "条码[" + barcode + "]不在在产流程"; } return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 撤销复检验条码 /// /// 撤销复检验条码 /// /// 产品条码 /// DataSet public static ServiceResultEntity CancelSemiCheckBarcode(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 查出此条码是否存在复检,如果存在复检查出复检状态 string sql = @"select SemiCheckID,ReSemiCheckType,ProcedureID,productiondataid from TP_PM_SemiCheck where barcode=:barcode and ValueFlag='1' and accountid=:accountid order by SemiCheckID desc"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; //int? procedureID = null; //完成工序 int? productiondataid = null; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { //procedureID = Convert.ToInt32(dsResult.Tables[0].Rows[0]["ProcedureID"]); productiondataid = Convert.ToInt32(dsResult.Tables[0].Rows[0]["productiondataid"]); if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "1") { resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]); // 查出复检状态名称 sql = @"select ReSemiCheckTypeName from TP_SYS_ReSemiCheckType where ReSemiCheckTypeID=" + dsResult.Tables[0].Rows[0]["ReSemiCheckType"]; DataSet dss = oracleConn.GetSqlResultToDs(sql); if (dss != null && dss.Tables[0].Rows.Count > 0) { resultEntity.Message = dss.Tables[0].Rows[0]["ReSemiCheckTypeName"].ToString(); } else { resultEntity.Message = "合格(返)"; } // 合格(返) paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input), }; sql = @" select InScrapFlag, KilnCarID, KilnCarName, IsReworkFlag, SemiCheckID,ProcedureID,productiondataid from TP_PM_InProduction where barcode=:barcode "; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1") { resultEntity.Result = -3; resultEntity.Message = "条码[" + barcode + "]已经报损待审批"; } if (!string.IsNullOrEmpty(dsResult.Tables[0].Rows[0]["KilnCarID"].ToString())) { resultEntity.Result = -4; resultEntity.Message = "条码[" + barcode + "]已经在窑车[" + dsResult.Tables[0].Rows[0]["KilnCarName"].ToString() + "]"; ; } // chenxy 2019-10-02 半检返修 IsReworkFlag=2 if (dsResult.Tables[0].Rows[0]["IsReworkFlag"].ToString() != "0") { resultEntity.Result = -5; resultEntity.Message = "条码[" + barcode + "]不是返工状态"; } //if (Convert.ToInt32(dsResult.Tables[0].Rows[0]["ProcedureID"]) != procedureID) if (Convert.ToInt32(dsResult.Tables[0].Rows[0]["productiondataid"]) != productiondataid) { resultEntity.Result = -6; resultEntity.Message = "条码[" + barcode + "]已经经过半检时完成的工序,不允许撤销"; } } else { resultEntity.Result = -7; resultEntity.Message = "条码[" + barcode + "]不在在产流程"; } } else if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "2") { resultEntity.Result = Convert.ToInt32(dsResult.Tables[0].Rows[0]["SemiCheckID"]); // 查出复检状态名称 sql = @"select ReSemiCheckTypeName from TP_SYS_ReSemiCheckType where ReSemiCheckTypeID=" + dsResult.Tables[0].Rows[0]["ReSemiCheckType"]; DataSet dss = oracleConn.GetSqlResultToDs(sql); if (dss != null && dss.Tables[0].Rows.Count > 0) { resultEntity.Message = dss.Tables[0].Rows[0]["ReSemiCheckTypeName"].ToString(); } else { resultEntity.Message = "不合格(返)"; } // 如果不合格,查询报损表里是否回收 sql = "select recyclingflag from TP_PM_ScrapProduct " + " where BarCode=:BarCode and CreateTime=(select max(CreateTime) " + " from TP_PM_ScrapProduct " + " where BarCode=:BarCode and ValueFlag=1)" + " and ValueFlag=1"; paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), }; DataSet dsResult2 = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult2 != null && dsResult2.Tables[0].Rows.Count > 0) { if (Convert.ToInt32(dsResult2.Tables[0].Rows[0]["recyclingflag"]) > 0) { resultEntity.Result = -9;// 已经回收不允许撤销 resultEntity.Message = "此产品已经回收,不能撤销"; return resultEntity; } } // 不合格(返) sql = @" select 1 from TP_PM_InProductionTrash where barcode=:barcode and GoodsLevelTypeID=14 and SemiCheckID is not null "; paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2,barcode,ParameterDirection.Input), }; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count == 0) { resultEntity.Result = -8; resultEntity.Message = "条码[" + barcode + "]不在在产回收站中"; } } else if (dsResult.Tables[0].Rows[0]["ReSemiCheckType"].ToString() == "0") { // 未复检 resultEntity.Result = -2; resultEntity.Message = "条码[" + barcode + "]没有复检不允许撤销"; } } else { resultEntity.Result = -1;// 不在半成品检验 resultEntity.Message = "条码[" + barcode + "]没有半成品检验"; } // 查出此条码是否存在复检,如果存在复检查出复检状态 return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 校验是否允许进行撤销操作 /// /// 校验条码是否允许撤销,如果不允许提示错误消息 /// /// 原时间 /// 允许撤销天数 /// 设置code,用于返回不同错误消息 /// /// public static ServiceResultEntity BarcodeAllowCancel(DateTime orgTime, int days, string settingCode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { ServiceResultEntity resultEntity = new ServiceResultEntity(); orgTime = orgTime.Date; // 取日期部分 DateTime currentTime = DateTime.Now.Date; // 参数验证用服务端当前设置 string sqlString = "SELECT sst.settingvalue\n" + " FROM tp_mst_systemsetting sst\n" + " WHERE sst.accountid = " + sUserInfo.AccountID + "\n" + " AND sst.settingcode = '" + settingCode + "'"; string strValue = oracleConn.GetSqlResultToStr(sqlString); int pDays = 0; if (int.TryParse(strValue, out pDays)) { days = pDays; } if (days == 0) { // 表示可以撤销 resultEntity.Result = 1; return resultEntity; } if (orgTime > currentTime.AddDays(-days)) { // 表示可以撤销 resultEntity.Result = 1; } else { resultEntity.Result = -1; // 提示不同错误消息 if (settingCode.Equals(Constant.SettingType.S_PM_002.ToString())) { //交坯限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_002, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_003.ToString())) { //交坯撤销限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_003, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_004.ToString())) { //计件撤销限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_004, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_005.ToString())) { //成品撤销限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_005, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_006.ToString())) { //损坯撤销限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_006, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_007.ToString())) { //半检登记改判限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_007, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_008.ToString())) { //半检复检撤销限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_008, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } else if (settingCode.Equals(Constant.SettingType.S_PM_009.ToString())) { //成检登记改判限制天数 resultEntity.Message = string.Format(Messages.MSG_S_PM_009, orgTime.ToString("yyyy-MM-dd"), days.ToString(), orgTime.AddDays(days - 1).ToString("yyyy-MM-dd")); } } return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion #region 生产订单 wangx 2017-2-7 /// /// 获取生产订单一览列表 /// /// /// /// public static DataSet GetOrderList(OrderEntity order, SUserInfo sUserInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); List parameters = new List(); parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input)); string sqlString = @"select OrderID, OrderNo, OrderDate, VBELN, POSNR, SUMMARY, Remarks, ValueFlag, displayno, CreateTime, UpdateTime from TP_PM_Order t where AccountID=:AccountID "; // 订单ID 编辑信息用 if (order.OrderID > 0) { sqlString = sqlString + " AND OrderID=:OrderID"; parameters.Add(new OracleParameter(":OrderID", OracleDbType.Int32, order.OrderID, ParameterDirection.Input)); } // 订单号 if (!string.IsNullOrEmpty(order.OrderNo)) { sqlString = sqlString + " AND instr(OrderNo,:OrderNo)>0"; parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, order.OrderNo, ParameterDirection.Input)); } // 订单时间起始 if (order.OrderFromDate.HasValue) { sqlString = sqlString + " AND OrderDate >= :OrderFromDate "; parameters.Add(new OracleParameter(":OrderFromDate", OracleDbType.Date, order.OrderFromDate.Value, ParameterDirection.Input)); } // 订单时间结束 if (order.OrderToDate.HasValue) { sqlString = sqlString + " AND OrderDate <= :OrderToDate "; parameters.Add(new OracleParameter(":OrderToDate", OracleDbType.Date, order.OrderToDate.Value, ParameterDirection.Input)); } // 有效标识 if (!string.IsNullOrEmpty(order.ValueFlagList)) { sqlString = sqlString + " AND instr(','||:ValueFlag||',',','||ValueFlag||',')>0 "; parameters.Add(new OracleParameter(":ValueFlag", OracleDbType.NVarchar2, order.ValueFlagList, ParameterDirection.Input)); } // 备注 if (!string.IsNullOrEmpty(order.Remarks)) { sqlString = sqlString + " AND instr(Remarks,:Remarks)>0"; parameters.Add(new OracleParameter(":Remarks", OracleDbType.NVarchar2, order.Remarks, ParameterDirection.Input)); } sqlString = sqlString + " order by t.displayno, t.orderid"; DataSet ds = con.GetSqlResultToDs(sqlString, parameters.ToArray()); if (ds != null && ds.Tables[0].Rows.Count > 0) { ServiceResultEntity sre = GetOrderDetail(order.OrderID); DataTable dtOrderDetail = sre.Data.Tables[0]; dtOrderDetail.DataSet?.Tables.Clear(); dtOrderDetail.TableName = "OrderDetail"; ds.Tables.Add(dtOrderDetail); return ds; } return null; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } /// /// 获取生产订单明细表 /// /// /// /// public static ServiceResultEntity GetOrderDetail(int orderID) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); ServiceResultEntity sre = new ServiceResultEntity(); try { string sqlString = @" SELECT OD.MATERIALCODE, OD.MAKTX, OD.KWMENG, G.GOODSCODE, L.LOGONAME FROM TP_PM_ORDERDETAIL OD LEFT JOIN (SELECT PB.MATNR, PB.GOODSID, PB.LOGOID FROM TP_MST_PACKINGBOM PB WHERE PB.VALUEFLAG = '1' GROUP BY PB.MATNR, PB.GOODSID, PB.LOGOID) T ON T.MATNR = OD.MATERIALCODE LEFT JOIN TP_MST_GOODS G ON G.GOODSID = T.GOODSID LEFT JOIN TP_MST_LOGO L ON L.LOGOID = T.LOGOID WHERE OD.VALUEFLAG = '1' AND OD.ORDERID = :ORDERID "; OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":ORDERID", orderID), }; sre.Data = con.GetSqlResultToDs(sqlString, paras); return sre; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 产成品交接 2017-2-8 /// /// 获取产成品交接 /// /// /// /// public static DataSet GetFinishedHandover(SearchFinishedProductEntity entity, SUserInfo sUserInfo) { IDBConnection con = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { con.Open(); List parameters = new List(); parameters.Add(new OracleParameter(":AccountID", OracleDbType.Int32, sUserInfo.AccountID, ParameterDirection.Input)); string sqlString = @"select O.OrderNo, F.FHTime, F.FHUserCode, F.BarCode, F.GoodsCode, L.LogoName, F. GroutingUserCode, F.GroutingMouldCode, F.GroutingDate, G.DeliverTime, --(Goods.MaterialCode || L.tagcode || G.onlycode) as FinishedBarCode nvl(g.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = g.accountid) || L.tagcode || G.onlycode) as FinishedBarCode from TP_PM_FinishedProduct F left join TP_PM_Order O on F.FHOrderID=O.OrderID left join TP_MST_Logo L on F.LogoID=L.LogoID left join TP_PM_GroutingDailyDetail G on F.GroutingDailyDetailID=G.GroutingDailyDetailID left join TP_MST_Goods Goods on F.GoodsID=Goods.GoodsID left join TP_MST_GoodsType GoodsType on Goods.GoodsTypeID=GoodsType.GoodsTypeID where F.AccountID=:AccountID and F.FHTime is not null "; // 交接时间起始 if (entity.FHTimeStart.HasValue) { sqlString = sqlString + " AND F.FHTime >= :FHTimeStart "; parameters.Add(new OracleParameter(":FHTimeStart", OracleDbType.Date, entity.FHTimeStart.Value, ParameterDirection.Input)); } // 交接时间结束 if (entity.FHTimeEnd.HasValue) { sqlString = sqlString + " AND F.FHTime <= :FHTimeEnd "; parameters.Add(new OracleParameter(":FHTimeEnd", OracleDbType.Date, entity.FHTimeEnd.Value.AddSeconds(59), ParameterDirection.Input)); } // 订单号 if (!string.IsNullOrEmpty(entity.OrderNo)) { sqlString = sqlString + " AND instr(O.OrderNo,:OrderNo)>0"; parameters.Add(new OracleParameter(":OrderNo", OracleDbType.NVarchar2, entity.OrderNo, ParameterDirection.Input)); } // 产品类别编码 if (!string.IsNullOrEmpty(entity.GoodsTypeCode)) { sqlString = sqlString + " AND instr(GoodsType.GoodsTypeCode,:GoodsTypeCode)=1"; parameters.Add(new OracleParameter(":GoodsTypeCode", OracleDbType.NVarchar2, entity.GoodsTypeCode, ParameterDirection.Input)); } // 产品型号 if (!string.IsNullOrEmpty(entity.GoodsModel)) { //sqlString = sqlString + " AND instr(Goods.GoodsModel,:GoodsModel)>0"; sqlString = sqlString + " AND instr(Goods.GoodsCode,:GoodsCode)>0"; parameters.Add(new OracleParameter(":GoodsCode", OracleDbType.NVarchar2, entity.GoodsModel, ParameterDirection.Input)); } // 产品商标ID集 if (!string.IsNullOrEmpty(entity.LogoIDS)) { sqlString += " AND instr(','||:LogoIDS||',', ',' || L.logoid || ',') > 0"; parameters.Add(new OracleParameter(":LogoIDS", OracleDbType.Varchar2, entity.LogoIDS, ParameterDirection.Input)); } // 交接工号 if (!string.IsNullOrEmpty(entity.FHUserCode)) { sqlString = sqlString + " AND instr(F.FHUserCode,:FHUserCode)>0"; parameters.Add(new OracleParameter(":FHUserCode", OracleDbType.NVarchar2, entity.FHUserCode, ParameterDirection.Input)); } sqlString = sqlString + " order by F.FHTime desc"; DataSet ds = con.GetSqlResultToDs(sqlString, parameters.ToArray()); if (ds != null && ds.Tables[0].Rows.Count > 0) { return ds; } return null; } catch (Exception ex) { throw ex; } finally { if (con.ConnState == ConnectionState.Open) { con.Close(); } } } #endregion #region 产成品交接验证 /// /// 产成品交接条码验证 /// /// /// /// 0:未交接,1:已交接,2:不限 /// public static ServiceResultEntity FinishedHandoverBarcode(string barcode, SUserInfo sUserInfo, int handoverFlag = 0) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 如果是板码 string banMa = string.Empty; if (barcode.Length == 8) { if (handoverFlag == 1) { resultEntity.Result = -1; resultEntity.Message = "撤销交接不允许扫板码。"; return resultEntity; } banMa = barcode; string sqlBanMa = @" SELECT BARCODE, FINISHEDLOADBATCHNO FROM TP_PM_FINISHEDPRODUCT WHERE FHTIME IS NULL AND LCFHTIME IS NULL AND BANMA = :barcode "; OracleParameter[] parasBanMa = new OracleParameter[] { new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input) }; DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa); if (dtBanMa.Rows.Count == 0) { resultEntity.Result = -1; resultEntity.Message = "当前载具上无可交接的产品。"; return resultEntity; } DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" }); if (dtFinishedLoadBatchNo.Rows.Count > 1) { resultEntity.Result = -1; resultEntity.Message = "当前载具存在超过两版以上的产品。"; return resultEntity; } barcode = dtBanMa.Rows[0]["BARCODE"].ToString(); } string gbarcode = null; string FINISHEDLOADBATCHNO = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select f.FHUserID, f.FHUserCode, f.LCFHUSERCODE, f.GoodsID, f.GoodsCode, f.GoodsName, f.BarCode, f.FINISHEDLOADBATCHNO from TP_PM_FinishedProduct f where f.BarCode=:BarCode"; // where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; string currentBarcode = string.Empty; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString(); // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUSERCODE"].ToString(); if ( !string.IsNullOrEmpty(lcfhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】已完成裸瓷交接,不能进行该操作"; return resultEntity; } if (handoverFlag == 0 && !string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】已交接,不能进行该操作"; return resultEntity; } if (handoverFlag == 1 && string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作"; return resultEntity; } #endregion #region 是否是裸瓷交接 //查询最近一次是不是裸瓷保存 sql = "SELECT procedureid\n" + " FROM (SELECT procedureid\n" + " FROM tp_pm_productiondata\n" + " WHERE barcode = :BarCode\n" + " ORDER BY productiondataid DESC)\n" + " WHERE rownum = 1"; paras = new OracleParameter[]{ new OracleParameter(":Barcode",OracleDbType.Varchar2, gbarcode,ParameterDirection.Input), }; DataTable productionDataIDdt = oracleConn.GetSqlResultToDt(sql, paras); if (productionDataIDdt != null && productionDataIDdt.Rows.Count > 0 && productionDataIDdt.Rows[0]["procedureid"].ToString() == "159" ) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】属于裸瓷产品,不能进行该操作,请使用裸瓷交接"; return resultEntity; } #endregion } else { if (handoverFlag == 0) { // 不在产成品表中 #region 1 查询是否报损待审批与漏扫 sql = @"select I.InScrapFlag,P.procedureName,I.GoodsCode from TP_PM_InProduction I left join tp_pc_procedure P on I.flowprocedureid=P.procedureid where I.BarCode=:BarCode"; //where I.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { // 存在在产表中 if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1") { resultEntity.Result = -3; //产品已经待审批报损 resultEntity.Message = "此产品【" + barcode + "】己待审报废,不能进行该操作"; return resultEntity; } int missbarcode = AddBarCodeMissingFinishedHandover(oracleConn, gbarcode, sUserInfo); if (missbarcode > 0) { // 第一次记录漏扫 resultEntity.Result = -4; resultEntity.OtherStatus = missbarcode;// 需要弹窗 resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作"; return resultEntity; } else { resultEntity.Result = -5; resultEntity.OtherStatus = -1;// 不需要弹窗 resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作"; return resultEntity; } } #endregion } #region 2 条码在废弃产品表中且审批通过,提示:此产品【999999】已被废弃,不能进行该操作。 //sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = -6; //产品已经报损 resultEntity.Message = "此产品【" + barcode + "】已被废弃,不能进行该操作"; return resultEntity; } #endregion #region 3 未交坯 //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid) and DeliverTime is null"; sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode and DeliverTime is null"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = -7; //产品未交坏 resultEntity.Message = "此产品【" + barcode + "】还未交坯,不能进行该操作"; return resultEntity; } else { resultEntity.Result = -8; //无效条码 resultEntity.Message = "此条码【" + barcode + "】为无效条码,不能进行该操作"; return resultEntity; } #endregion } #region 校验包装箱编码于物料编码是否相同 // 如果输入的是产品条码,不检查 // if (barcode.Length != 11) // { // string Strsql = @"SELECT MATERIALCODE FROM TP_PM_GROUTINGDAILYDETAIL WHERE OUTLABELCODE = :barcode"; // OracleParameter[] paras2 = new OracleParameter[]{ // new OracleParameter(":barcode",OracleDbType.NVarchar2,barcode,ParameterDirection.Input), // //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), // }; // DataSet dst = oracleConn.GetSqlResultToDs(Strsql, paras2); // if (dst == null || dst.Tables[0].Rows.Count == 0) // { // resultEntity.Result = -1; // resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板"; // return resultEntity; // } // string barcodeSub = string.Empty; // if (barcode.Length >= 14) // { // barcodeSub = barcode.Substring(0, 14); // } // if (dst.Tables[0].Rows[0]["MATERIALCODE"].ToString() != barcodeSub) // { // resultEntity.Result = -1; // resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板"; // return resultEntity; // } //} #endregion #region 查询产品相关信息 /* sql = @"select gd.BarCode, l.logoid, l.logocode, l.logoname, gd.goodscode, gd.UserID, gd.UserCode as GroutingUserCode, gd.GroutingMouldCode as MouldCode, gd.GroutingDate, gd.DeliverTime, --Goods.GoodsCode as GoodsModel, --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致 nvl(gd.MaterialCode, nvl(Goods.MaterialCode,Goods.GoodsCode)) as GoodsModel, -- 用物料编码验证产品型号是否一致 Goods.PlateLimitNum, --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode , nvl(gd.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode, o.ORDERNO from TP_PM_GroutingDailyDetail gd inner join tp_mst_logo l on gd.logoid=l.logoid inner join TP_PM_FinishedProduct f on f.GROUTINGDAILYDETAILID=gd.GROUTINGDAILYDETAILID left join tp_pm_order o on o.orderid = f.FHORDERID inner join TP_MST_Goods Goods on gd.goodsid=Goods.goodsid"; //where gd.BarCode=:BarCode"; */ sql = "select gd.BarCode,\n" + " l.logoid,\n" + " l.logocode,\n" + " l.logoname,\n" + " gd.goodscode,\n" + " gd.UserID,\n" + " gd.UserCode as GroutingUserCode,\n" + " gd.GroutingMouldCode as MouldCode,\n" + " gd.GroutingDate,\n" + " gd.DeliverTime,\n" + //" --Goods.GoodsCode as GoodsModel,\n" + //" --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " Goods.PlateLimitNum,\n" + //" --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode ,\n" + " nvl(gd.outlabelcode,\n" + " Goods.MaterialCode ||\n" + " (select a.workcode\n" + " from tp_mst_account a\n" + " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" + " o.ORDERNO,\n" + " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" + " gd.MATERIALCODE,\n" + " gd.OUTLABELCODE as OUTLABELCODES,\n" + " f.BanMa\n" + " from TP_PM_GroutingDailyDetail gd\n" + " inner join tp_mst_logo l\n" + " on gd.logoid = l.logoid\n" + " inner join TP_PM_FinishedProduct f\n" + " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" + " left join tp_pm_order o\n" + " on o.orderid = f.FHORDERID\n" + " inner join TP_MST_Goods Goods\n" + " on gd.goodsid = Goods.goodsid \n"; if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO)) { //sql += " where gd.BarCode=:BarCode"; sql += " where gd.BarCode='"+ gbarcode+"'"; } else { //sql += " where gd.GROUTINGDAILYDETAILID in ( select GROUTINGDAILYDETAILID from TP_PM_FinishedProduct f where f.FINISHEDLOADBATCHNO = :BarCode)"; //sql += " where f.FINISHEDLOADBATCHNO = :BarCode "; sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'"; paras[0].Value = FINISHEDLOADBATCHNO; } //where gd.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; // 不用参数比用参数效率高 ??? edit by chenxy //dsResult = oracleConn.GetSqlResultToDs(sql, paras); dsResult = oracleConn.GetSqlResultToDs(sql); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { for(int i = 0; i< dsResult.Tables[0].Rows.Count; i++) { if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString()) { resultEntity.Result = -1; resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"]; return resultEntity; } } //增加校验 普通项目类别组为NORM才需要卡控,251202 string mtposmarasql = "SELECT SSS.MTPOSMARA FROM TP_PC_SAPBOMDETAIL SSS WHERE SSS.MATNR = '" + dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString() + "'"; DataTable mtposmaradata = oracleConn.GetSqlResultToDt(mtposmarasql, null); if (mtposmaradata != null && mtposmaradata.Rows.Count > 0 && mtposmaradata.Rows[0]["MTPOSMARA"].ToString() == "NORM") { //增加SAP接口校验产成品交接卡控数量->SAP根据物料判断STO单剩余可产出数量,小于不允许保存 //根据系统参数判断 是否开启卡控 //add by qq 20250918 #region 卡控产成品交接数量 //S_PC_002:计划卡控默认选项(产成品交接) string sqs = "SELECT sss.settingcode, sss.settingvalue\n" + " FROM tp_mst_systemsetting sss\n" + " WHERE sss.accountid = " + sUserInfo.AccountID + "\n" + " AND sss.settingcode = 'S_PC_002'"; DataTable data = oracleConn.GetSqlResultToDt(sqs, null); if (data != null && data.Rows.Count > 0) { string settingvalue = data.Rows[0]["settingvalue"].ToString(); string materialCode = dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString(); string ztype = ""; string message = ""; //开启校验 if (settingvalue == "1") { //查询接口数量 decimal stonum = 0; // 配置文件 string postString = "{\"IN_WERKS\":\"" + "5000" + "\",\"IN_TABLE\":{\"item\":{\"MATNR\":\"" + materialCode + "\"}}}"; INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); string url082 = ini.ReadIniData("SAP_NEW_INFO", "Url082"); //测试 //url082 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZMMFM082"; string result = string.Empty; //调用接口 try { result = SAPDataLogic.PostData(url082, postString, "POST"); } catch (Exception ex) { resultEntity.Result = -1; resultEntity.Message = "SAP-ZMMFM082接口调用失败," + ex.Message; return resultEntity; } //判断物料是否一致 if (JObject.Parse(result)["OUT_TABLE"] != null && JObject.Parse(result)["OUT_TABLE"].ToString().Length > 0) { ztype = JObject.Parse(result)["ZTYPE"].ToString(); message = JObject.Parse(result)["ZMSG"].ToString(); Dictionary obj = JsonConvert.DeserializeObject>(result); object OUT_TABLE; obj.TryGetValue("OUT_TABLE", out OUT_TABLE); obj = JsonConvert.DeserializeObject>(OUT_TABLE + ""); object item1; obj.TryGetValue("item", out item1); JObject jsonObject = JObject.Parse(item1.ToString()); if (ztype == "S") { //物料编码 string matnr = jsonObject["MATNR"].ToString(); //未清STO总数 decimal zwjsl = Convert.ToDecimal(jsonObject["ZWJSL"].ToString()); //未清SO数量 decimal zwjso = Convert.ToDecimal(jsonObject["ZWJSO"].ToString()); stonum = zwjsl + zwjso; if (materialCode == matnr) { //查询本地未同步SAP数量 string sqlstr = @"SELECT SUM(OUTPUTNUM) OUTPUTNUM FROM tsap_hegii_workdata_bg WB LEFT JOIN tsap_hegii_datalog_bg D ON WB.LOGID = D.LOGID WHERE D.datacode = '60' And D.DATASTUTS = 'F' AND WB.SAPCODE = '" + materialCode + "' GROUP BY WB.SAPCODE"; DataTable numdata = oracleConn.GetSqlResultToDt(sqlstr, null); //未同步数量 decimal unscynnum = 0; if (numdata != null && numdata.Rows.Count > 0) { unscynnum = Convert.ToDecimal(numdata.Rows[0]["OUTPUTNUM"]); } //此次交接一板数量 decimal bannum = Convert.ToDecimal(dsResult.Tables[0].Rows.Count); decimal allnum = unscynnum + bannum; //判断是否允许交接 if (stonum < allnum) { resultEntity.Result = 1; resultEntity.Message = "该板及未同步交接产品物料【"+matnr+"】数量【"+ allnum + "】超出SAP允许出单数量【" + stonum + "】, 是否暂存?(暂存后需扫码推送SAP数据)"; resultEntity.Data = dsResult; return resultEntity; } } else { resultEntity.Result = -1; resultEntity.Message = "物料不一致;SAP返回物料【"+ matnr + "】"; return resultEntity; } } else { resultEntity.Result = -1; resultEntity.Message = message; return resultEntity; } } } } #endregion } resultEntity.Result = 1;//成功 //resultEntity.Data = new DataSet(); //resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy()); resultEntity.Data = dsResult; } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 产成品交接条码验证(二次) /// /// /// /// 0:未交接,1:已交接,2:不限 /// public static ServiceResultEntity FinishedHandoverBarcodeAgain(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 如果是板码 string banMa = string.Empty; if (barcode.Length == 8) { banMa = barcode; string sqlBanMa = @" SELECT BARCODE, FINISHEDLOADBATCHNO FROM TP_PM_FINISHEDPRODUCT WHERE FHTIME IS NOT NULL AND TemporarilyFlag = 1 AND BANMA = :barcode "; OracleParameter[] parasBanMa = new OracleParameter[] { new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input) }; DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa); if (dtBanMa.Rows.Count == 0) { resultEntity.Result = -1; resultEntity.Message = "当前载具上无暂存可交接的产品。"; return resultEntity; } DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" }); if (dtFinishedLoadBatchNo.Rows.Count > 1) { resultEntity.Result = -1; resultEntity.Message = "当前载具存在超过两版以上的暂存产品。"; return resultEntity; } barcode = dtBanMa.Rows[0]["BARCODE"].ToString(); } string gbarcode = null; string FINISHEDLOADBATCHNO = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select f.FHUserID, f.FHUserCode, f.LCFHUSERCODE, f.GoodsID, f.GoodsCode, f.GoodsName, f.BarCode, f.FINISHEDLOADBATCHNO, f.TEMPORARILYFLAG from TP_PM_FinishedProduct f where f.BarCode=:BarCode"; string currentBarcode = string.Empty; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString(); // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); string temporarilyFlag = dsResult.Tables[0].Rows[0]["TEMPORARILYFLAG"].ToString(); if (string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】非暂存产品,不能进行该操作"; return resultEntity; } if (temporarilyFlag == "0") { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】非暂存产品,不能进行该操作"; return resultEntity; } #endregion } else { resultEntity.Result = -8; //无效条码 resultEntity.Message = "此条码【" + barcode + "】非暂存产品,不能进行该操作"; return resultEntity; } #region 查询产品相关信息 sql = "select gd.BarCode,\n" + " l.logoid,\n" + " l.logocode,\n" + " l.logoname,\n" + " gd.goodscode,\n" + " gd.UserID,\n" + " gd.UserCode as GroutingUserCode,\n" + " gd.GroutingMouldCode as MouldCode,\n" + " gd.GroutingDate,\n" + " gd.DeliverTime,\n" + " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " Goods.PlateLimitNum,\n" + " nvl(gd.outlabelcode,\n" + " Goods.MaterialCode ||\n" + " (select a.workcode\n" + " from tp_mst_account a\n" + " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" + " o.ORDERNO,\n" + " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" + " gd.MATERIALCODE,\n" + " gd.OUTLABELCODE as OUTLABELCODES,\n" + " f.BanMa\n" + " from TP_PM_GroutingDailyDetail gd\n" + " inner join tp_mst_logo l\n" + " on gd.logoid = l.logoid\n" + " inner join TP_PM_FinishedProduct f\n" + " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" + " left join tp_pm_order o\n" + " on o.orderid = f.FHORDERID\n" + " inner join TP_MST_Goods Goods\n" + " on gd.goodsid = Goods.goodsid \n"; if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO)) { sql += " where gd.BarCode='" + gbarcode + "'"; } else { sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'"; paras[0].Value = FINISHEDLOADBATCHNO; } dsResult = oracleConn.GetSqlResultToDs(sql); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++) { if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString()) { resultEntity.Result = -1; resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"]; return resultEntity; } } //增加校验 普通项目类别组为NORM才需要卡控,251202 string mtposmarasql = "SELECT SSS.MTPOSMARA FROM TP_PC_SAPBOMDETAIL SSS WHERE SSS.MATNR = '" + dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString() + "'"; DataTable mtposmaradata = oracleConn.GetSqlResultToDt(mtposmarasql, null); if (mtposmaradata != null && mtposmaradata.Rows.Count > 0 && mtposmaradata.Rows[0]["MTPOSMARA"].ToString() == "NORM") { //增加SAP接口校验产成品交接卡控数量->SAP根据物料判断STO单剩余可产出数量,小于不允许保存 //根据系统参数判断 是否开启卡控 //add by qq 20250918 #region 卡控产成品交接数量 //S_PC_002:计划卡控默认选项(产成品交接) string sqs = "SELECT sss.settingcode, sss.settingvalue\n" + " FROM tp_mst_systemsetting sss\n" + " WHERE sss.accountid = " + sUserInfo.AccountID + "\n" + " AND sss.settingcode = 'S_PC_002'"; DataTable data = oracleConn.GetSqlResultToDt(sqs, null); if (data != null && data.Rows.Count > 0) { string settingvalue = data.Rows[0]["settingvalue"].ToString(); string materialCode = dsResult.Tables[0].Rows[0]["MATERIALCODE"].ToString(); string ztype = ""; string message = ""; //开启校验 if (settingvalue == "1") { //查询接口数量 decimal stonum = 0; // 配置文件 string postString = "{\"IN_WERKS\":\"" + "5000" + "\",\"IN_TABLE\":{\"item\":{\"MATNR\":\"" + materialCode + "\"}}}"; INIUtility ini = INIUtility.Instance(INIUtility.IniFile.SAP_HEGII); string url082 = ini.ReadIniData("SAP_NEW_INFO", "Url082"); //测试 //url082 = "http://hgs4podev.hegii.com:50200/RESTAdapter/DKMES/ZMMFM082"; string result = string.Empty; //调用接口 try { result = SAPDataLogic.PostData(url082, postString, "POST"); } catch (Exception ex) { resultEntity.Result = -1; resultEntity.Message = "SAP-ZMMFM082接口调用失败," + ex.Message; return resultEntity; } //判断物料是否一致 if (JObject.Parse(result)["OUT_TABLE"] != null && JObject.Parse(result)["OUT_TABLE"].ToString().Length > 0) { ztype = JObject.Parse(result)["ZTYPE"].ToString(); message = JObject.Parse(result)["ZMSG"].ToString(); Dictionary obj = JsonConvert.DeserializeObject>(result); object OUT_TABLE; obj.TryGetValue("OUT_TABLE", out OUT_TABLE); obj = JsonConvert.DeserializeObject>(OUT_TABLE + ""); object item1; obj.TryGetValue("item", out item1); JObject jsonObject = JObject.Parse(item1.ToString()); if (ztype == "S") { //物料编码 string matnr = jsonObject["MATNR"].ToString(); //未清STO总数 decimal zwjsl = Convert.ToDecimal(jsonObject["ZWJSL"].ToString()); //未清SO数量 decimal zwjso = Convert.ToDecimal(jsonObject["ZWJSO"].ToString()); stonum = zwjsl + zwjso; if (materialCode == matnr) { //查询本地未同步SAP数量 string sqlstr = @"SELECT SUM(OUTPUTNUM) OUTPUTNUM FROM tsap_hegii_workdata_bg WB LEFT JOIN tsap_hegii_datalog_bg D ON WB.LOGID = D.LOGID WHERE D.datacode = '60' And D.DATASTUTS = 'F' AND WB.SAPCODE = '" + materialCode + "' GROUP BY WB.SAPCODE"; DataTable numdata = oracleConn.GetSqlResultToDt(sqlstr, null); //未同步数量 decimal unscynnum = 0; if (numdata != null && numdata.Rows.Count > 0) { unscynnum = Convert.ToDecimal(numdata.Rows[0]["OUTPUTNUM"]); } //此次交接一板数量 decimal bannum = Convert.ToDecimal(dsResult.Tables[0].Rows.Count); decimal allnum = unscynnum + bannum; //判断是否允许交接 if (stonum < allnum) { resultEntity.Result = 1; resultEntity.Message = "该板及未同步交接产品物料【" + matnr + "】数量【" + allnum + "】超出SAP允许出单数量【" + stonum + "】, 不允许二次交接;"; return resultEntity; } } else { resultEntity.Result = -1; resultEntity.Message = "物料不一致;SAP返回物料【" + matnr + "】"; return resultEntity; } } else { resultEntity.Result = -1; resultEntity.Message = message; return resultEntity; } } } } #endregion } resultEntity.Result = 1;//成功 resultEntity.Data = dsResult; } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 整版撤销产成品交接条码验证 /// /// /// /// public static ServiceResultEntity BackFinishedHandoverCheck(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); if (barcode.Length == 8) { resultEntity.Result = -1; resultEntity.Message = "撤销交接不允许扫板码。"; return resultEntity; } string gbarcode = null; string FINISHEDLOADBATCHNO = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select FHUserID, FHUserCode, GoodsID, GoodsCode, GoodsName, FINISHEDLOADBATCHNO from TP_PM_FinishedProduct where BarCode=:BarCode"; //where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString(); // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); if (string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //未交接,不能撤销 resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作"; return resultEntity; } #endregion } else { resultEntity.Result = -2; //不能产成品,不能撤销 //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作"; } else { resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作"; } return resultEntity; } #region 查询产品相关信息 sql = "select gd.BarCode,\n" + " l.logoid,\n" + " l.logocode,\n" + " l.logoname,\n" + " gd.goodscode,\n" + " gd.UserID,\n" + " gd.UserCode as GroutingUserCode,\n" + " gd.GroutingMouldCode as MouldCode,\n" + " gd.GroutingDate,\n" + " gd.DeliverTime,\n" + //" --Goods.GoodsCode as GoodsModel,\n" + //" --nvl(Goods.MaterialCode,Goods.GoodsCode) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " Goods.PlateLimitNum,\n" + //" --(Goods.MaterialCode || l.tagcode || gd.onlycode) as FinishedBarCode ,\n" + " nvl(gd.outlabelcode,\n" + " Goods.MaterialCode ||\n" + " (select a.workcode\n" + " from tp_mst_account a\n" + " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" + " o.ORDERNO,\n" + " f.BanMa,\n" + " f.TemporarilyFlag\n" + " from TP_PM_GroutingDailyDetail gd\n" + " inner join tp_mst_logo l\n" + " on gd.logoid = l.logoid\n" + " inner join TP_PM_FinishedProduct f\n" + " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" + " left join tp_pm_order o\n" + " on o.orderid = f.FHORDERID\n" + " inner join TP_MST_Goods Goods\n" + " on gd.goodsid = Goods.goodsid \n"; if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO)) { //sql += " where gd.BarCode=:BarCode"; sql += " where gd.BarCode='" + gbarcode + "'"; } else { //sql += " where gd.GROUTINGDAILYDETAILID in ( select GROUTINGDAILYDETAILID from TP_PM_FinishedProduct f where f.FINISHEDLOADBATCHNO = :BarCode)"; //sql += " where f.FINISHEDLOADBATCHNO = :BarCode "; sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'"; paras[0].Value = FINISHEDLOADBATCHNO; } //where gd.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; // 不用参数比用参数效率高 ??? edit by chenxy //dsResult = oracleConn.GetSqlResultToDs(sql, paras); dsResult = oracleConn.GetSqlResultToDs(sql); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = 1;//成功 //resultEntity.Data = new DataSet(); //resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy()); resultEntity.Data = dsResult; } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion /// /// 根据条码及工序判断是否漏扫 /// /// 产品条码 /// 校验工序ID /// 用户基本信息 /// DataSet public static int AddBarCodeMissingFinishedHandover(IDBConnection oracleTrConn, string barcode, SUserInfo sUserInfo) { try { #region 查询产成品 string sqlString = @"select TP_PM_InProduction.FlowProcedureID,NVL(TP_PM_InProduction.ReworkProcedureID,0) as ReworkProcedureID, TP_PM_InProduction.GoodsID,TP_PM_InProduction.GoodsCode,TP_PM_InProduction.GoodsName, TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_MST_Goods.GoodsTypeID,TP_PM_InProduction.isrefire from TP_PM_InProduction left join TP_PC_Procedure on TP_PM_InProduction.FlowProcedureID=TP_PC_Procedure.ProcedureID left join TP_MST_Goods on TP_PM_InProduction.GoodsID=TP_MST_Goods.GoodsID where TP_PM_InProduction.BarCode =:barCode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), }; DataSet ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); #endregion int AddBarCodeMissingID = 0;//新增漏扫表的ID if (ds != null && ds.Tables[0].Rows.Count > 0) //只有是在产的,才可以去进行漏扫 { #region 获取此条码为在产产品 int CompleteProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["FlowProcedureID"]);//WMSYS.WM_CONCAT(to_char(pro.ProcedureName)),max(line.ProductionLineName) string CompleteProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); string CompleteProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); int GoodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]); string GoodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); string GoodsName = ds.Tables[0].Rows[0]["GoodsName"].ToString(); int GoodsTypeID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsTypeID"]); int ReworkProcedureID = Convert.ToInt32(ds.Tables[0].Rows[0]["ReworkProcedureID"]);//返工工序 int isrefire = Convert.ToInt32(ds.Tables[0].Rows[0]["isrefire"]);//重烧标记 #endregion // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 begin // 漏扫序号大的可到达工序与检验工序不在一条路径上时,要验证下一个可到达工序。 // 即与检验工序在一条路径上的漏扫序号最大可到达工序为漏扫工序。 #region 获取漏扫工序信息 if (ReworkProcedureID == 0) { sqlString = @" select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_ProcedureGoods left join TP_PC_Procedure on TP_PC_ProcedureGoods.ProcedureID=TP_PC_Procedure.ProcedureID where TP_PC_ProcedureGoods.goodsid=( select Goodsid from TP_PM_GroutingDailyDetail where BarCode=:barCode) and TP_PC_ProcedureGoods.ProcedureID in( select pro.ProcedureID from TP_PC_ProcedureFlow flow inner join TP_PC_Procedure pro on flow.arriveprocedureid = pro.procedureid inner join TP_PC_ProductionLine line on pro.ProductionLineID = line.ProductionLineID where flow.ProcedureID =:procedureID and flow.FlowFlag = 2 and pro.valueflag = '1' -- 非必须工序,不记漏扫 and pro.MUSTFLAG = '1' ) " + //" and exists ( " + // "select 1 from " + // "(" + // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " + // "( " + // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " + // ") " + // //" start with procedureid=:missProcedureid" + // " start with procedureid=TP_PC_ProcedureGoods.ProcedureID" + // " connect by nocycle procedureid=prior arriveprocedureid" + // ") where arriveprocedureid=:judgeProcedureid " + // " ) " + //" order by ProcedureID"; " order by MissPriority DESC, displayno --ProcedureCode DESC"; paras = new OracleParameter[]{ new OracleParameter(":procedureID",OracleDbType.Int32,CompleteProcedureID,ParameterDirection.Input), new OracleParameter(":barCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), //new OracleParameter(":missProcedureid",OracleDbType.Int32,missprocedureid,ParameterDirection.Input), //new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input), }; } else { sqlString = "select TP_PC_Procedure.ProcedureID,TP_PC_Procedure.ProcedureCode,TP_PC_Procedure.ProcedureName,TP_PC_Procedure.NodeType from TP_PC_Procedure where ProcedureID=:procedureID"; paras = new OracleParameter[]{ new OracleParameter(":procedureID",OracleDbType.Int32,ReworkProcedureID,ParameterDirection.Input), }; } ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) { return AddBarCodeMissingID; } int missprocedureid = Convert.ToInt32(ds.Tables[0].Rows[0]["ProcedureID"]); string missprocedurecode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); string missprocedurename = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); //int missprocedureid = -1; //string missprocedurecode = ""; //string missprocedurename = ""; #endregion //#region 增加判断校验工序必须是在漏扫工序的后面工序 //foreach (DataRow item in ds.Tables[0].Rows) //{ // sqlString = "select * from " + // "(" + // "select procedureid, arriveprocedureid,ltrim(sys_connect_by_path(procedureid,'->')||'->'||arriveprocedureid) sybp from " + // "( " + // " select * from TP_PC_PROCEDUREFLOW where arriveprocedureid<>:missProcedureid and flowflag=2 " + // ")" + // " start with procedureid=:missProcedureid" + // " connect by nocycle procedureid=prior arriveprocedureid" + // ") where arriveprocedureid=:judgeProcedureid "; // paras = new OracleParameter[]{ // new OracleParameter(":missProcedureid",OracleDbType.Int32,Convert.ToInt32(item["ProcedureID"]),ParameterDirection.Input), // new OracleParameter(":judgeProcedureid",OracleDbType.Int32,produceid,ParameterDirection.Input), // }; // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); // if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0) // { // continue; // } // missprocedureid = Convert.ToInt32(item["ProcedureID"]); // missprocedurecode = item["ProcedureCode"].ToString(); // missprocedurename = item["ProcedureName"].ToString(); // break; //} //if (missprocedureid == -1) //{ // return AddBarCodeMissingID; //} //#endregion // 漏扫工序与检验工序不在一条路径上 modify by chenxy 2016-08-08 end //sqlString = "select 1 from TP_PM_ProductionDataIn where barcode=:barcode and ProcedureID=:ProcedureID and ValueFlag=1"; //paras = new OracleParameter[]{ // new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), // }; //ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); //// if (produceid > missprocedureid) //if (ds != null && ds.Tables[0].Rows.Count == 0) // 未走过该工序 //{ #region 插入漏扫表,如果漏扫表里有相应的条码,不允许重复插入 sqlString = @"select 1 from TP_PM_BarCodeMissing where barcode=:barcode and MissProcedureID=:MissProcedureID and ProcedureID is null"; paras = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), //new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count == 0) // 没有此条码的工序,即插入 { int OrganizationID = 0; string OrganizationName = ""; string OrganizationCode = ""; string OrganizationFullName = ""; sqlString = @"select TP_MST_Organization.OrganizationID ,TP_MST_Organization.OrganizationName ,TP_MST_Organization.OrganizationCode ,TP_MST_Organization.OrganizationFullName from TP_PC_Procedure left join TP_MST_Organization on TP_MST_Organization.OrganizationID=TP_PC_Procedure.OrganizationID where TP_PC_Procedure.ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":ProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), }; ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); OrganizationID = Convert.ToInt32(ds.Tables[0].Rows[0]["OrganizationID"]); //组织机构ID OrganizationName = ds.Tables[0].Rows[0]["OrganizationName"].ToString(); //组织机构名称 OrganizationCode = ds.Tables[0].Rows[0]["OrganizationCode"].ToString(); //组织机构编码 OrganizationFullName = ds.Tables[0].Rows[0]["OrganizationFullName"].ToString(); //组织机构全称 // // 获取校验工序信息 // sqlString = @"select TP_PC_Procedure.ProcedureID // ,TP_PC_Procedure.ProcedureCode // ,TP_PC_Procedure.ProcedureName // from TP_PC_Procedure // where TP_PC_Procedure.ProcedureID=:ProcedureID"; // paras = new OracleParameter[]{ // new OracleParameter(":ProcedureID",OracleDbType.Int32, produceid,ParameterDirection.Input), // }; // ds = oracleTrConn.GetSqlResultToDs(sqlString, paras); string ProcedureCode = ""; string ProcedureName = ""; //if (ds != null && ds.Tables[0].Rows.Count > 0) // 没有此条码的工序,即插入 //{ // ProcedureCode = ds.Tables[0].Rows[0]["ProcedureCode"].ToString(); // ProcedureName = ds.Tables[0].Rows[0]["ProcedureName"].ToString(); //} //漏扫表ID string sql = "select SEQ_PM_BarCodeMissing_MissID.nextval from dual"; AddBarCodeMissingID = Convert.ToInt32(oracleTrConn.GetSqlResultToStr(sql)); sqlString = @"insert into TP_PM_BarCodeMissing(MissID, BarCode, OrganizationID, OrganizationName, OrganizationCode, OrganizationFullName, CompleteProcedureID, CompleteProcedureCode, CompleteProcedureName, ProcedureID, ProcedureCode, ProcedureName, MissProcedureID, MissProcedureCode, MissProcedureName, GoodsID, GoodsCode, GoodsName, GoodsTypeID, CreateUserID, UpdateUserID, AccountID ) values ( :MissID, :BarCode, :OrganizationID, :OrganizationName, :OrganizationCode, :OrganizationFullName, :CompleteProcedureID, :CompleteProcedureCode, :CompleteProcedureName, :ProcedureID, :ProcedureCode, :ProcedureName, :MissProcedureID, :MissProcedureCode, :MissProcedureName, :GoodsID, :GoodsCode, :GoodsName, :GoodsTypeID, :CreateUserID, :UpdateUserID, :AccountID ) "; paras = new OracleParameter[]{ new OracleParameter(":MissID",OracleDbType.Int32, AddBarCodeMissingID,ParameterDirection.Input), new OracleParameter(":BarCode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":OrganizationID",OracleDbType.Int32, OrganizationID,ParameterDirection.Input), new OracleParameter(":OrganizationName",OracleDbType.Varchar2, OrganizationName,ParameterDirection.Input), new OracleParameter(":OrganizationCode",OracleDbType.Varchar2, OrganizationCode,ParameterDirection.Input), new OracleParameter(":OrganizationFullName",OracleDbType.Varchar2, OrganizationFullName,ParameterDirection.Input), new OracleParameter(":CompleteProcedureID",OracleDbType.Int32, CompleteProcedureID,ParameterDirection.Input), new OracleParameter(":CompleteProcedureCode",OracleDbType.Varchar2, CompleteProcedureCode,ParameterDirection.Input), new OracleParameter(":CompleteProcedureName",OracleDbType.Varchar2, CompleteProcedureName,ParameterDirection.Input), new OracleParameter(":ProcedureID",OracleDbType.Int32, null,ParameterDirection.Input), new OracleParameter(":ProcedureCode",OracleDbType.Varchar2, ProcedureCode,ParameterDirection.Input), new OracleParameter(":ProcedureName",OracleDbType.Varchar2, ProcedureName,ParameterDirection.Input), new OracleParameter(":MissProcedureID",OracleDbType.Int32, missprocedureid,ParameterDirection.Input), new OracleParameter(":MissProcedureCode",OracleDbType.Varchar2,missprocedurecode ,ParameterDirection.Input), new OracleParameter(":MissProcedureName",OracleDbType.Varchar2, missprocedurename,ParameterDirection.Input), new OracleParameter(":GoodsID",OracleDbType.Int32, GoodsID,ParameterDirection.Input), new OracleParameter(":GoodsCode",OracleDbType.Varchar2,GoodsCode ,ParameterDirection.Input), new OracleParameter(":GoodsName",OracleDbType.Varchar2, GoodsName,ParameterDirection.Input), new OracleParameter(":GoodsTypeID",OracleDbType.Int32, GoodsTypeID,ParameterDirection.Input), new OracleParameter(":CreateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":UpdateUserID",OracleDbType.Int32, sUserInfo.UserID,ParameterDirection.Input), new OracleParameter(":AccountID",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; oracleTrConn.GetSqlResultToStr(sqlString, paras); } #endregion //} } return AddBarCodeMissingID; } catch (Exception ex) { throw ex; } } /// /// 撤销产成品交接条码验证 /// /// /// /// public static ServiceResultEntity CancelFinishedHandoverBarcode(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); string gbarcode = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select FHUserID, FHUserCode, GoodsID, GoodsCode, GoodsName from TP_PM_FinishedProduct where BarCode=:BarCode"; //where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), //new OracleParameter(":Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); if (string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //未交接,不能撤销 resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作"; return resultEntity; } #endregion } else { resultEntity.Result = -2; //不能产成品,不能撤销 //sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作"; } else { resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作"; } return resultEntity; } #region 查询产品相关信息 sql = @"select O.OrderNo, F.FHOrderID, F.FHTime, F.FHUserCode, F.BarCode, F.GoodsCode, L.LogoName, F.GroutingUserCode, F.GroutingMouldCode, F.GroutingDate, G.DeliverTime, L.LogoID, --(Goods.MaterialCode || L.tagcode || G.onlycode) as FinishedBarCode nvl(g.outlabelcode, Goods.MaterialCode || (select a.workcode from tp_mst_account a where a.accountid = g.accountid) || L.tagcode || G.onlycode) as FinishedBarCode from TP_PM_FinishedProduct F left join TP_PM_Order O on F.FHOrderID=O.OrderID left join TP_MST_Logo L on F.LogoID=L.LogoID left join TP_PM_GroutingDailyDetail G on F.GroutingDailyDetailID=G.GroutingDailyDetailID left join TP_MST_Goods Goods on F.GoodsID=Goods.GoodsID left join TP_MST_GoodsType GoodsType on Goods.GoodsTypeID=GoodsType.GoodsTypeID where F.BarCode=:BarCode"; //where F.BarCode=FUN_CMN_GetBarCode(:BarCode,null,:Accountid)"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = 1;//成功 resultEntity.Data = new DataSet(); resultEntity.Data.Tables.Add(dsResult.Tables[0].Copy()); } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 检验回收条码 /// /// 工序ID /// 产品条码 /// DataSet public static DataSet CheckRecydingFlagBarcode(int procedureID, string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); string sqlString = @"select settingcode,settingvalue,settingdefaultvalues from tp_mst_systemsetting where Accountid=:Accountid and settingcode in ('S_PM_017','S_PM_018','S_PM_019','S_PM_020')"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter("Accountid",OracleDbType.Int32,sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras); #region 读出系统配置 17(损坯可否回收) 18(半检不合格可否回收) 19(复检不合格可否回收) 20(次品可否回收) int S_PM_017_Value = 0, S_PM_018_Value = 0, S_PM_019_Value = 0, S_PM_020_Value = 0; if (ds != null && ds.Tables[0].Rows.Count > 0) { foreach (DataRow r in ds.Tables[0].Rows) { if (r["settingcode"].ToString() == "S_PM_017") { S_PM_017_Value = Convert.ToInt32(r["settingvalue"]); } else if (r["settingcode"].ToString() == "S_PM_018") { S_PM_018_Value = Convert.ToInt32(r["settingvalue"]); } else if (r["settingcode"].ToString() == "S_PM_019") { S_PM_019_Value = Convert.ToInt32(r["settingvalue"]); } else if (r["settingcode"].ToString() == "S_PM_020") { S_PM_020_Value = Convert.ToInt32(r["settingvalue"]); } } } #endregion int goodsID = 0; string goodsCode = "", goodsName = "", groutingUserCode = ""; DataTable dtBarCode = PMModuleLogic.CreateBarCodeResultTable(); DataSet returnDs = new DataSet(); DataRow dr = dtBarCode.NewRow(); bool isError = false; #region 第1步 查当前工序在系统是否存在 sqlString = @"select NodeType,ModelType from tp_pc_procedure where procedureid=:procedureid and ValueFlag=1"; paras = new OracleParameter[]{ new OracleParameter(":procedureid",procedureID), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables[0].Rows.Count == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "当前工序在系统中不存在"; isError = true; } #endregion #region 第2步 查产品是否有效 if (!isError) { sqlString = @"select distinct GoodsID, GoodsCode,GoodsName,UserCode,DeliverFlag from TP_PM_GroutingDailyDetail where BarCode=:barCode and ValueFlag=1 "; paras = new OracleParameter[]{ new OracleParameter(":barCode",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables[0].Rows.Count == 0) { // 是否被替换 string sql = @"select count(barcode),max(newbarcode) from TP_PM_BarCodeRecord where BarCode=:barcode"; OracleParameter[] paras2 = new OracleParameter[]{ new OracleParameter(":barCode",barcode) }; DataSet ds2 = oracleConn.GetSqlResultToDs(sql, paras2); if (ds2 != null && Convert.ToInt32(ds2.Tables[0].Rows[0][0]) == 0) { // 无效条件 dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "无效条码[" + barcode + "]"; isError = true; } else { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码[" + barcode + "]已经被[" + ds2.Tables[0].Rows[0][1] + "]替换"; isError = true; } } else { if (Convert.ToInt32(ds.Tables[0].Rows[0]["DeliverFlag"]) != 1) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "条码[" + barcode + "]未交坯,不能回收"; isError = true; } else { goodsID = Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsID"]); goodsName = ds.Tables[0].Rows[0]["goodsName"].ToString(); goodsCode = ds.Tables[0].Rows[0]["GoodsCode"].ToString(); groutingUserCode = ds.Tables[0].Rows[0]["UserCode"].ToString(); } sqlString = @" SELECT GOODSCODE FROM TP_MST_GOODS WHERE GOODSID IN (SELECT GOODSID FROM TP_PM_GROUTINGDAILYDETAIL WHERE BARCODE=:BARCODE) AND CEASEFLAG = 0 "; paras = new OracleParameter[]{ new OracleParameter(":BARCODE",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 && !string.IsNullOrWhiteSpace(ds.Tables[0].Rows[0]["GOODSCODE"].ToString())) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "产品[" + ds.Tables[0].Rows[0]["GOODSCODE"].ToString() + "]已停产,不允许操作,请联系管理员!"; isError = true; } } } #endregion #region 第3步 查产品是否在当前工序配置 if (!isError) { sqlString = @"select count(GoodsID) from TP_PC_ProcedureGoods where GoodsID=:GoodsID and ProcedureID=:ProcedureID"; paras = new OracleParameter[]{ new OracleParameter(":GoodsID",goodsID), new OracleParameter(":ProcedureID",procedureID), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (Convert.ToInt32(ds.Tables[0].Rows[0][0]) != 1) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = @"条码[" + barcode + "]不可以经过该工序\n\r原因:条码对应的产品编码[" + goodsCode + "]没有在该工序中配置"; isError = true; } } #endregion if (!isError) { #region 第4步,校验在产产品不能回收 string sqlString2 = "select InScrapFlag,ISREWORKFLAG from tp_pm_inproduction where barcode=:barcode"; OracleParameter[] parasNew = new OracleParameter[]{ new OracleParameter(":barcode",barcode) }; DataSet dsNew = oracleConn.GetSqlResultToDs(sqlString2, parasNew); if (dsNew != null && dsNew.Tables[0].Rows.Count > 0) { if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["InScrapFlag"]) == 1) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "报损待审产品不能回收"; } // chenxy 2019-10-02 半检返修 IsReworkFlag=2 else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 1) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "半检返工中不能回收"; } else if (Convert.ToInt32(dsNew.Tables[0].Rows[0]["ISREWORKFLAG"]) == 2) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "半检返修中不能回收"; } else { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "在产产品不能回收"; } isError = true; } #endregion #region 第5步,校验报损表数据是否可以回收 if (!isError) { sqlString = @"select GoodsLevelID,GoodsLevelTypeID,ScrapType,SpecialRepairFlag,RecyclingFlag,AuditStatus,SpecialRepairUserID from TP_PM_ScrapProduct where barcode=:barcode and ValueFlag=1 and CreateTime= (select max(CreateTime) from TP_PM_ScrapProduct where barcode=:barcode and ValueFlag=1)"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds == null || ds.Tables[0].Rows.Count == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "不存在回收数据,不能回收"; isError = true; } else { if (Convert.ToInt32(ds.Tables[0].Rows[0]["AuditStatus"]) == 1 && Convert.ToInt32(ds.Tables[0].Rows[0]["GoodsLevelTypeID"]) != 9 && Convert.ToInt32(ds.Tables[0].Rows[0]["RecyclingFlag"]) == 0) { // 可回收 string sqlString3 = "select 1 from tp_pm_inproductiontrash where barcode=:barcode"; OracleParameter[] parasNewt = new OracleParameter[]{ new OracleParameter(":barcode",barcode) }; DataSet dsNewt = oracleConn.GetSqlResultToDs(sqlString3, parasNewt); if (dsNewt == null || dsNewt.Tables[0].Rows.Count == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "报损数据被清除,不能回收"; isError = true; } } else { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "不存在回收数据,不能回收"; isError = true; } if (!isError) { if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 0) { // 损坯 if (S_PM_017_Value == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-报损未启用"; isError = true; } } else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 1) { // 成检 if (S_PM_020_Value == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-次品未启用"; isError = true; } } else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 2) { // 半检 if (S_PM_018_Value == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-半检不合格未启用"; isError = true; } } else if (Convert.ToInt32(ds.Tables[0].Rows[0]["ScrapType"]) == 3) { // 复检 if (S_PM_019_Value == 0) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = "系统参数产品回收-复检不合格未启用"; isError = true; } } } } } #endregion #region 第6步,回收过一次不能再回收 sqlString = @"SELECT COUNT(*) count FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 80 AND BARCODE = :barCode AND VALUEFLAG = 1 GROUP BY BARCODE"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barCode",barcode), }; DataSet ds1 = oracleConn.GetSqlResultToDs(sqlString, paras1); string errorMessage1 = ""; if (ds1 != null && ds1.Tables[0].Rows.Count > 0) { if (Convert.ToInt16(ds1.Tables[0].Rows[0]["count"]) >= 2) { // 无效条件 errorMessage1 = "条码[" + barcode + "]:已回收过两次,不允许再次回收"; } } if (!string.IsNullOrEmpty(errorMessage1)) { dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] = errorMessage1; isError = true; } #endregion } dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = goodsID; dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = goodsCode; dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = goodsName; dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = groutingUserCode; //oracleConn.ExecStoredProcedure("pro_pm_checkdryrepairbarcode", paras); //dr[Constant.BarCodeResultTableColumns.out_errMsg.ToString()] // = paras[2].Value.ToString() == "null" ? "" : paras[2].Value.ToString().Replace("\\n\\r", "\n\r"); //dr[Constant.BarCodeResultTableColumns.out_goodsID.ToString()] = paras[3].Value.ToString() == "null" ? 0 : paras[3].Value; //dr[Constant.BarCodeResultTableColumns.out_goodsCode.ToString()] = paras[4].Value.ToString() == "null" ? "" : paras[4].Value; //dr[Constant.BarCodeResultTableColumns.out_goodsName.ToString()] = paras[5].Value.ToString() == "null" ? "" : paras[5].Value; //dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = paras[6].Value.ToString() == "null" ? 0 : paras[6].Value; //if (paras[2].Value.ToString() == "null") //只有正确的条码,读注浆信息 if (!isError) //只有正确的条码,读注浆信息 { sqlString = @"select TP_PM_GroutingDailyDetail.UserCode as GroutingUserCode, tp_pm_groutingdailydetail.groutingcount as GroutingNum, tp_pm_groutingdailydetail.GroutingMouldCode as MouldCode, tp_pm_groutingdailydetail.ispublicbody, tp_pm_groutingdailydetail.Groutingdate, tp_pm_groutingdailydetail.SpecialRepairFlag, tp_mst_logo.logoid, tp_mst_logo.logocode, tp_mst_logo.logoname from tp_pm_groutingdailydetail left join tp_mst_logo on tp_pm_groutingdailydetail.logoid=tp_mst_logo.logoid where tp_pm_groutingdailydetail.BarCode=:barcode"; paras = new OracleParameter[]{ new OracleParameter(":barcode",barcode), }; ds = oracleConn.GetSqlResultToDs(sqlString, paras); if (ds != null && ds.Tables[0].Rows.Count > 0) { dr[Constant.BarCodeResultTableColumns.out_groutingUserCode.ToString()] = ds.Tables[0].Rows[0]["GroutingUserCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_groutingNum.ToString()] = ds.Tables[0].Rows[0]["GroutingNum"].ToString(); dr[Constant.BarCodeResultTableColumns.out_mouldCode.ToString()] = ds.Tables[0].Rows[0]["MouldCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbody.ToString()] = ds.Tables[0].Rows[0]["ispublicbody"].ToString(); dr[Constant.BarCodeResultTableColumns.out_ispublicbodyTrach.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_groutingdate.ToString()] = ds.Tables[0].Rows[0]["Groutingdate"].ToString(); dr[Constant.BarCodeResultTableColumns.out_specialRepairFlag.ToString()] = ds.Tables[0].Rows[0]["SpecialRepairFlag"].ToString(); dr[Constant.BarCodeResultTableColumns.out_isReFire.ToString()] = "0"; dr[Constant.BarCodeResultTableColumns.out_logoID.ToString()] = ds.Tables[0].Rows[0]["logoID"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoCode.ToString()] = ds.Tables[0].Rows[0]["logoCode"].ToString(); dr[Constant.BarCodeResultTableColumns.out_logoName.ToString()] = ds.Tables[0].Rows[0]["logoName"].ToString(); } } dtBarCode.Rows.Add(dr); returnDs.Tables.Add(dtBarCode); return returnDs; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #region 裸瓷交接验证 /// /// 产成品交接条码验证 /// /// /// /// 0:未交接,1:已交接,2:不限 /// public static ServiceResultEntity LCFinishedHandoverBarcode(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); // 如果是板码 string banMa = string.Empty; if (barcode.Length == 8) { banMa = barcode; string sqlBanMa = @" SELECT BARCODE, FINISHEDLOADBATCHNO FROM TP_PM_FINISHEDPRODUCT WHERE FHTIME IS NULL AND LCFHTIME IS NULL AND BANMA = :barcode "; OracleParameter[] parasBanMa = new OracleParameter[] { new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input) }; DataTable dtBanMa = oracleConn.GetSqlResultToDt(sqlBanMa, parasBanMa); if (dtBanMa.Rows.Count == 0) { resultEntity.Result = -1; resultEntity.Message = "当前载具上无可交接的产品。"; return resultEntity; } DataTable dtFinishedLoadBatchNo = dtBanMa.DefaultView.ToTable(true, new string[] { "FINISHEDLOADBATCHNO" }); if (dtFinishedLoadBatchNo.Rows.Count > 1) { resultEntity.Result = -1; resultEntity.Message = "当前载具存在超过两版以上的产品。"; return resultEntity; } barcode = dtBanMa.Rows[0]["BARCODE"].ToString(); } string gbarcode = null; string FINISHEDLOADBATCHNO = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select f.FHUserID, f.FHUserCode, f.LCFHUserID, f.LCFHUserCode, f.GoodsID, f.GoodsCode, f.GoodsName, f.BarCode, f.FINISHEDLOADBATCHNO from TP_PM_FinishedProduct f where f.BarCode=:BarCode"; string currentBarcode = string.Empty; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString(); // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUserCode"].ToString(); if ( !string.IsNullOrEmpty(lcfhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】已进行裸瓷交接,不能进行该操作"; return resultEntity; } if ( !string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】已包装交接,不能进行该操作"; return resultEntity; } #endregion #region 是否是裸瓷交接 //查询最近一次是不是裸瓷保存 sql = "SELECT procedureid\n" + " FROM (SELECT procedureid\n" + " FROM tp_pm_productiondata\n" + " WHERE barcode = :BarCode\n" + " ORDER BY productiondataid DESC)\n" + " WHERE rownum = 1"; paras = new OracleParameter[]{ new OracleParameter(":Barcode",OracleDbType.Varchar2, gbarcode,ParameterDirection.Input), }; DataTable productionDataIDdt = oracleConn.GetSqlResultToDt(sql, paras); if (productionDataIDdt != null && productionDataIDdt.Rows.Count > 0 && productionDataIDdt.Rows[0]["procedureid"].ToString() != "159") { resultEntity.Result = -1; //已交接,不能再次进行交接 resultEntity.Message = "此产品【" + barcode + "】不能进行该操作,请使用产成品交接"; return resultEntity; } #endregion } else { // 不在产成品表中 #region 1 查询是否报损待审批与漏扫 sql = @"select I.InScrapFlag,P.procedureName,I.GoodsCode from TP_PM_InProduction I left join tp_pc_procedure P on I.flowprocedureid=P.procedureid where I.BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { // 存在在产表中 if (dsResult.Tables[0].Rows[0]["InScrapFlag"].ToString() == "1") { resultEntity.Result = -3; //产品已经待审批报损 resultEntity.Message = "此产品【" + barcode + "】己待审报废,不能进行该操作"; return resultEntity; } int missbarcode = AddBarCodeMissingFinishedHandover(oracleConn, gbarcode, sUserInfo); if (missbarcode > 0) { // 第一次记录漏扫 resultEntity.Result = -4; resultEntity.OtherStatus = missbarcode;// 需要弹窗 resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作"; return resultEntity; } else { resultEntity.Result = -5; resultEntity.OtherStatus = -1;// 不需要弹窗 resultEntity.Message = "此产品【" + barcode + "】当前工序为【" + dsResult.Tables[0].Rows[0]["procedureName"].ToString() + "】不是产成品,不能进行该操作"; return resultEntity; } } #endregion #region 2 条码在废弃产品表中且审批通过,提示:此产品【999999】已被废弃,不能进行该操作。 sql = @"select GoodsCode from tp_pm_inproductiontrash where BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = -6; //产品已经报损 resultEntity.Message = "此产品【" + barcode + "】已被废弃,不能进行该操作"; return resultEntity; } #endregion #region 3 未交坯 sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode and DeliverTime is null"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = -7; //产品未交坏 resultEntity.Message = "此产品【" + barcode + "】还未交坯,不能进行该操作"; return resultEntity; } else { resultEntity.Result = -8; //无效条码 resultEntity.Message = "此条码【" + barcode + "】为无效条码,不能进行该操作"; return resultEntity; } #endregion } #region 查询产品相关信息 sql = "select gd.BarCode,\n" + " l.logoid,\n" + " l.logocode,\n" + " l.logoname,\n" + " gd.goodscode,\n" + " gd.UserID,\n" + " gd.UserCode as GroutingUserCode,\n" + " gd.GroutingMouldCode as MouldCode,\n" + " gd.GroutingDate,\n" + " gd.DeliverTime,\n" + " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " Goods.PlateLimitNum,\n" + " nvl(gd.outlabelcode,\n" + " Goods.MaterialCode ||\n" + " (select a.workcode\n" + " from tp_mst_account a\n" + " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" + " o.ORDERNO,\n" + " SUBSTR( gd.OUTLABELCODE, 0, 14 ) OUTLABELCODE,\n" + " gd.MATERIALCODE,\n" + " gd.OUTLABELCODE as OUTLABELCODES,\n" + " f.BanMa\n" + " from TP_PM_GroutingDailyDetail gd\n" + " inner join tp_mst_logo l\n" + " on gd.logoid = l.logoid\n" + " inner join TP_PM_FinishedProduct f\n" + " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" + " left join tp_pm_order o\n" + " on o.orderid = f.FHORDERID\n" + " inner join TP_MST_Goods Goods\n" + " on gd.goodsid = Goods.goodsid \n"; if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO)) { sql += " where gd.BarCode='" + gbarcode + "'"; } else { sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'"; paras[0].Value = FINISHEDLOADBATCHNO; } dsResult = oracleConn.GetSqlResultToDs(sql); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { for (int i = 0; i < dsResult.Tables[0].Rows.Count; i++) { if (dsResult.Tables[0].Rows[i]["OUTLABELCODE"].ToString() != dsResult.Tables[0].Rows[i]["MATERIALCODE"].ToString()) { resultEntity.Result = -1; resultEntity.Message = "物料编码与外包装箱码不匹配,不允许装板。外包装箱码:" + dsResult.Tables[0].Rows[i]["OUTLABELCODES"]; return resultEntity; } } resultEntity.Result = 1;//成功 resultEntity.Data = dsResult; } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } /// /// 整版撤销产成品交接条码验证 /// /// /// /// public static ServiceResultEntity LCBackFinishedHandoverCheck(string barcode, SUserInfo sUserInfo) { IDBConnection oracleConn = ClsDbFactory.CreateDBConnection(DataBaseType.ORACLE, DataManager.ConnectionString); try { oracleConn.Open(); ServiceResultEntity resultEntity = new ServiceResultEntity(); if (barcode.Length == 8) { resultEntity.Result = -1; resultEntity.Message = "撤销交接不允许扫板码。"; return resultEntity; } string gbarcode = null; string FINISHEDLOADBATCHNO = null; string sqlString = @"select FUN_CMN_GetBarCode(:barcode,null,:accountid) From DUAL"; OracleParameter[] paras1 = new OracleParameter[]{ new OracleParameter(":barcode",OracleDbType.Varchar2, barcode,ParameterDirection.Input), new OracleParameter(":accountid",OracleDbType.Int32, sUserInfo.AccountID,ParameterDirection.Input), }; DataSet ds = oracleConn.GetSqlResultToDs(sqlString, paras1); if (ds != null && ds.Tables[0].Rows.Count > 0) { gbarcode = ds.Tables[0].Rows[0][0].ToString(); } // 1.判断产品是否在产成品表中 string sql = @"select FHUserID, FHUserCode, LCFHUserID, LCFHUserCode, GoodsID, GoodsCode, GoodsName, FINISHEDLOADBATCHNO from TP_PM_FinishedProduct where BarCode=:BarCode"; OracleParameter[] paras = new OracleParameter[]{ new OracleParameter(":BarCode",OracleDbType.NVarchar2,gbarcode,ParameterDirection.Input), }; DataSet dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { FINISHEDLOADBATCHNO = dsResult.Tables[0].Rows[0]["FINISHEDLOADBATCHNO"].ToString(); // 在产成品表中 #region 是否交接过 string fhUserCode = dsResult.Tables[0].Rows[0]["FHUserCode"].ToString(); string lcfhUserCode = dsResult.Tables[0].Rows[0]["LCFHUserCode"].ToString(); if (string.IsNullOrEmpty(lcfhUserCode)) { resultEntity.Result = -1; //未交接,不能撤销 resultEntity.Message = "此产品【" + barcode + "】未交接,不能进行该操作"; return resultEntity; } if (!string.IsNullOrEmpty(fhUserCode)) { resultEntity.Result = -1; //已交接,不能撤销 resultEntity.Message = "此产品【" + barcode + "】已包装交接,不能进行该操作"; return resultEntity; } #endregion } else { resultEntity.Result = -2; //不能产成品,不能撤销 sql = "select GoodsCode from TP_PM_GroutingDailyDetail where BarCode=:BarCode"; dsResult = oracleConn.GetSqlResultToDs(sql, paras); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Message = "此产品【" + barcode + "】不是产成品,不能进行该操作"; } else { resultEntity.Message = "此条码【" + barcode + "】无效,不能进行该操作"; } return resultEntity; } #region 查询产品相关信息 sql = "select gd.BarCode,\n" + " l.logoid,\n" + " l.logocode,\n" + " l.logoname,\n" + " gd.goodscode,\n" + " gd.UserID,\n" + " gd.UserCode as GroutingUserCode,\n" + " gd.GroutingMouldCode as MouldCode,\n" + " gd.GroutingDate,\n" + " gd.DeliverTime,\n" + " nvl(gd.MaterialCode, nvl(Goods.MaterialCode, Goods.GoodsCode)) ||'#'|| to_char(Goods.GOODS_LINE_TYPE) as GoodsModel, -- 用物料编码验证产品型号是否一致\n" + " Goods.PlateLimitNum,\n" + " nvl(gd.outlabelcode,\n" + " Goods.MaterialCode ||\n" + " (select a.workcode\n" + " from tp_mst_account a\n" + " where a.accountid = gd.accountid) || l.tagcode || gd.onlycode) as FinishedBarCode,\n" + " o.ORDERNO,\n" + " f.BanMa\n" + " from TP_PM_GroutingDailyDetail gd\n" + " inner join tp_mst_logo l\n" + " on gd.logoid = l.logoid\n" + " inner join TP_PM_FinishedProduct f\n" + " on f.GROUTINGDAILYDETAILID = gd.GROUTINGDAILYDETAILID\n" + " left join tp_pm_order o\n" + " on o.orderid = f.FHORDERID\n" + " inner join TP_MST_Goods Goods\n" + " on gd.goodsid = Goods.goodsid \n"; if (string.IsNullOrWhiteSpace(FINISHEDLOADBATCHNO)) { sql += " where gd.BarCode='" + gbarcode + "'"; } else { sql += " where f.FINISHEDLOADBATCHNO ='" + FINISHEDLOADBATCHNO + "'"; paras[0].Value = FINISHEDLOADBATCHNO; } dsResult = oracleConn.GetSqlResultToDs(sql); if (dsResult != null && dsResult.Tables[0].Rows.Count > 0) { resultEntity.Result = 1;//成功 resultEntity.Data = dsResult; } else { resultEntity.Result = -2;// 条码未注浆 resultEntity.Message = "条码【" + barcode + "】未注浆"; return resultEntity; } #endregion return resultEntity; } catch (Exception ex) { throw ex; } finally { if (oracleConn.ConnState == ConnectionState.Open) { oracleConn.Close(); } } } #endregion } }