コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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
        }
コード例 #3
0
        /// <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("获取批次信息失败。");
            }
        }