/// <summary> /// 保存数据采集实例数据。 /// </summary> /// <param name="db">数据库对象。</param> /// <param name="dbtran">数据库事务对象。</param> /// <param name="dataset">包含数据采集实例数据的数据集。</param> internal static void SaveEDCMainIns(Database db, DbTransaction dbtran, DataSet dsParams) { EDC_MAIN_INS_FIELDS edcMainIns = new EDC_MAIN_INS_FIELDS(); DataTable dtParams = dsParams.Tables[EDC_MAIN_INS_FIELDS.DATABASE_TABLE_NAME]; Hashtable htParams = FanHai.Hemera.Share.Common.CommonUtils.ConvertToHashtable(dtParams); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_COL_START_TIME, null); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_COL_END_TIME, null); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_CREATE_TIME, null); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_EDIT_TIME, null); string sql = DatabaseTable.BuildInsertSqlStatement(edcMainIns, htParams, null); db.ExecuteNonQuery(dbtran, CommandType.Text, sql); }
/// <summary> /// 保存数据采集实例数据。 /// </summary> /// <param name="dbTrans">事务操作对象。</param> /// <param name="lotKey">批次主键。</param> /// <param name="edcPointKey">抽检点设置主键。</param> /// <param name="editor">编辑人。</param> /// <param name="equipmentKey">设备主键。</param> /// <param name="oprLine">操作线别名称。</param> /// <param name="shiftKey">班别主键。</param> internal static void SaveEdcMainInfo(Database db, DbTransaction dbTrans, string lotKey, string edcPointKey, string editor, string equipmentKey, string oprLine, string shiftKey) { string activityType = string.Empty; string transactionState = string.Empty; string sql = string.Empty; List <string> sqlCommandList = new List <string>(); DataTable lotTable = GetLotsInfo(db, dbTrans, lotKey).Tables[0]; string lotNumber = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_LOT_NUMBER].ToString(); string enterpriseKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_ROUTE_ENTERPRISE_VER_KEY].ToString(); string routeKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_CUR_ROUTE_VER_KEY].ToString(); string stepKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY].ToString(); string workOrderKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_WORK_ORDER_KEY].ToString(); string partKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_PART_VER_KEY].ToString(); string stateFlag = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_STATE_FLAG].ToString(); string edcName = lotTable.Rows[0][EDC_MAIN_FIELDS.FIELD_EDC_NAME].ToString(); string stepName = lotTable.Rows[0][POR_ROUTE_STEP_FIELDS.FIELD_ROUTE_STEP_NAME].ToString(); string partNo = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_PART_NUMBER].ToString(); string locationKey = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_FACTORYROOM_KEY].ToString(); string matrialLot = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_MATERIAL_LOT].ToString(); string supplier = Convert.ToString(lotTable.Rows[0][POR_LOT_FIELDS.FIELD_SUPPLIER_NAME]); //string partType = lotTable.Rows[0][POR_LOT_FIELDS.FIELD_TYPE].ToString(); string shiftName = Convert.ToString(lotTable.Rows[0][POR_LOT_FIELDS.FIELD_SHIFT_NAME]); string reworkFlag = Convert.ToString(lotTable.Rows[0][POR_LOT_FIELDS.FIELD_IS_REWORKED]); string userName = Convert.ToString(lotTable.Rows[0][POR_LOT_FIELDS.FIELD_OPERATOR]); string computeName = Convert.ToString(lotTable.Rows[0][POR_LOT_FIELDS.FIELD_OPR_COMPUTER]); //插入数据采集记录 #region 创建生成EDC_MAIN_INS记录的INSERT SQL sql = @"SELECT EDC_KEY,SP_KEY FROM EDC_POINT WHERE ROW_KEY='" + edcPointKey.PreventSQLInjection() + "'"; DataTable pointTable = db.ExecuteDataSet(CommandType.Text, sql).Tables[0]; string edcInsKey = UtilHelper.GenerateNewKey(0); Hashtable mainTable = new Hashtable(); EDC_MAIN_INS_FIELDS edcMainField = new EDC_MAIN_INS_FIELDS(); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDC_INS_KEY, edcInsKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDC_KEY, pointTable.Rows[0][EDC_POINT_FIELDS.FIELD_EDC_KEY].ToString()); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDC_SP_KEY, pointTable.Rows[0][EDC_POINT_FIELDS.FIELD_SP_KEY].ToString()); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_ENTERPRISE_KEY, enterpriseKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_ROUTE_KEY, routeKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_STEP_KEY, stepKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_WORK_ORDER_KEY, workOrderKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_LOT_KEY, lotKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_LOT_NUMBER, lotNumber); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_PART_KEY, partKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDC_POINT_KEY, edcPointKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EQUIPMENT_KEY, equipmentKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_COL_START_TIME, null); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_SUPPLIER, supplier); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_STEP_NAME, stepName); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_PART_NO, partNo); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_MATERIAL_LOT, matrialLot); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_LOCATION_KEY, locationKey); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDC_NAME, edcName); //mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_PART_TYPE, partType); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDITOR, editor); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_CREATOR, editor); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_CREATE_TIME, null); mainTable.Add(EDC_MAIN_INS_FIELDS.FIELD_EDIT_TIME, null); sql = DatabaseTable.BuildInsertSqlStatement(edcMainField, mainTable, null); sqlCommandList.Add(sql); #endregion if (sqlCommandList.Count > 0) { foreach (string sqlCommand in sqlCommandList) { db.ExecuteNonQuery(dbTrans, CommandType.Text, sqlCommand); } } //更新批次状态。 if (Convert.ToInt32(stateFlag) == 0)//等待进站数据采集。 { transactionState = "1"; activityType = ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_INEDC; //更新为进站数据采集。 sql = string.Format(@"UPDATE POR_LOT SET STATE_FLAG=1,EDITOR='{0}',EDIT_TIME=GETDATE(),EDC_INS_KEY='{1}' WHERE LOT_KEY='{2}'", editor.PreventSQLInjection(), edcInsKey.PreventSQLInjection(), lotKey.PreventSQLInjection()); } else if (Convert.ToInt32(stateFlag) == 4)//等待出站数据收集 { activityType = ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_OUTEDC; transactionState = "5"; //更新为数据采集。 sql = string.Format(@"UPDATE POR_LOT SET STATE_FLAG=5,EDITOR='{0}',EDIT_TIME=GETDATE(),EDC_INS_KEY='{1}' WHERE LOT_KEY='{2}'", editor.PreventSQLInjection(), edcInsKey.PreventSQLInjection(), lotKey.PreventSQLInjection()); } db.ExecuteNonQuery(dbTrans, CommandType.Text, sql); #region 插入操作历史记录 WIP_TRANSACTION_FIELDS wipFields = new WIP_TRANSACTION_FIELDS(); Hashtable hashTable = new Hashtable(); string strTransactionKey = UtilHelper.GenerateNewKey(0); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_TRANSACTION_KEY, strTransactionKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_PIECE_TYPE, "0"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_PIECE_KEY, lotKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY, activityType); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_IN, lotTable.Rows[0][POR_LOT_FIELDS.FIELD_QUANTITY].ToString()); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_OUT, lotTable.Rows[0][POR_LOT_FIELDS.FIELD_QUANTITY].ToString()); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY_COMMENT, "EDC"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_OPR_LINE, oprLine); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDITOR, editor); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIMEZONE_KEY, "CN-ZH"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIME, null); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_STATE_FLAG, transactionState); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_LINE_KEY, lotTable.Rows[0][POR_LOT_FIELDS.FIELD_CUR_PRODUCTION_LINE_KEY].ToString()); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_STEP_KEY, stepKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ROUTE_KEY, routeKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ENTERPRISE_KEY, enterpriseKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_WORK_ORDER_KEY, workOrderKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDC_INS_KEY, edcInsKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EQUIPMENT_KEY, equipmentKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_SHIFT_NAME, shiftName); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_SHIFT_KEY, shiftKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_REWORK_FLAG, reworkFlag); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_OPERATOR, userName); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_OPR_COMPUTER, computeName); sql = DatabaseTable.BuildInsertSqlStatement(wipFields, hashTable, null); db.ExecuteNonQuery(dbTrans, CommandType.Text, sql); #endregion }
/// <summary> /// 保存数据采集实例数据。 /// </summary> /// <remarks> /// 新增数据采集实例数据并根据生产批次状态以完成生产批次的数据采集。 /// </remarks> /// <param name="db">数据库对象。</param> /// <param name="dbtran">数据库事务对象。</param> /// <param name="dataset">包含数据采集实例数据的数据集。</param> internal static void SaveEDCMainIn(Database db, DbTransaction dbtran, DataSet dsParams) { string sql = ""; string activityType = string.Empty; string editor = "", lineKey = "", workOrderKey = "", quantity = "", stepKey = ""; //新增数据采集实例数据 EDC_MAIN_INS_FIELDS edcMainIns = new EDC_MAIN_INS_FIELDS(); DataTable dtParams = dsParams.Tables[EDC_MAIN_INS_FIELDS.DATABASE_TABLE_NAME]; Hashtable htParams = FanHai.Hemera.Share.Common.CommonUtils.ConvertToHashtable(dtParams); string lotKey = Convert.ToString(htParams[EDC_MAIN_INS_FIELDS.FIELD_LOT_KEY]); string edcInsKey = Convert.ToString(htParams[EDC_MAIN_INS_FIELDS.FIELD_EDC_INS_KEY]); string transactionState = string.Empty; editor = Convert.ToString(htParams[COMMON_FIELDS.FIELD_COMMON_EDITOR]); htParams.Remove(COMMON_FIELDS.FIELD_COMMON_EDITOR); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_COL_START_TIME, null); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_COL_END_TIME, null); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_CREATOR, editor); htParams.Add(EDC_MAIN_INS_FIELDS.FIELD_EDITOR, editor); sql = DatabaseTable.BuildInsertSqlStatement(edcMainIns, htParams, null); db.ExecuteNonQuery(dbtran, CommandType.Text, sql); //获取生产批次状态。 int state = -1; sql = @"SELECT STATE_FLAG FROM POR_LOT WHERE LOT_KEY='" + lotKey + "'"; state = Convert.ToInt32(db.ExecuteScalar(CommandType.Text, sql)); //更新生产批次状态。 if (state == 0) { transactionState = "1"; activityType = ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_INEDC; sql = @"UPDATE POR_LOT SET STATE_FLAG=1, EDITOR='" + editor.PreventSQLInjection() + "'," + "EDIT_TIME=GETDATE()," + "EDC_INS_KEY='" + edcInsKey.PreventSQLInjection() + "' " + "WHERE LOT_KEY='" + lotKey.PreventSQLInjection() + "'"; } else if (state == 4) { activityType = ACTIVITY_FIELD_VALUES.FIELD_ACTIVITY_OUTEDC; transactionState = "5"; sql = @"UPDATE POR_LOT SET STATE_FLAG=5, EDITOR='" + editor.PreventSQLInjection() + "'," + "EDIT_TIME=GETDATE()," + "EDC_INS_KEY='" + edcInsKey.PreventSQLInjection() + "' " + "WHERE LOT_KEY='" + lotKey.PreventSQLInjection() + "'"; } db.ExecuteNonQuery(dbtran, CommandType.Text, sql); //获取批次信息。 DataSet dsLot = GetLotsInfo(db, dbtran, lotKey); if (null != dsLot && dsLot.Tables.Count > 0 && dsLot.Tables[0].Rows.Count > 0) { lineKey = Convert.ToString(dsLot.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_PRODUCTION_LINE_KEY]); quantity = Convert.ToString(dsLot.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_QUANTITY]); workOrderKey = Convert.ToString(dsLot.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_WORK_ORDER_KEY]); stepKey = Convert.ToString(dsLot.Tables[0].Rows[0][POR_LOT_FIELDS.FIELD_CUR_STEP_VER_KEY]); #region 新增交易记录 WIP_TRANSACTION_FIELDS wipFields = new WIP_TRANSACTION_FIELDS(); Hashtable hashTable = new Hashtable(); string strTransactionKey = UtilHelper.GenerateNewKey(0); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_TRANSACTION_KEY, strTransactionKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_PIECE_TYPE, "0"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_PIECE_KEY, lotKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY, activityType); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_IN, quantity); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_QUANTITY_OUT, quantity); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_ACTIVITY_COMMENT, "EDC"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDITOR, editor); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIMEZONE_KEY, "CN-ZH"); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDIT_TIME, null); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_STATE_FLAG, transactionState); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_LINE_KEY, lineKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_STEP_KEY, stepKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_WORK_ORDER_KEY, workOrderKey); hashTable.Add(WIP_TRANSACTION_FIELDS.FIELD_EDC_INS_KEY, edcInsKey); sql = DatabaseTable.BuildInsertSqlStatement(wipFields, hashTable, null); db.ExecuteNonQuery(dbtran, CommandType.Text, sql); #endregion } else { throw new Exception("获取批次信息失败。"); } }