コード例 #1
0
ファイル: Server.cs プロジェクト: baoyigang/ZKSA
        /// <summary>
        /// 中間數據庫插入WCS數據庫,并轉入WCS_Task
        /// </summary>
        /// <param name="dt"></param>
        internal static void InsertTaskToWcs(DataTable dt, bool blnUpdateAck)
        {
            lock (Locker1)
            {
                try
                {
                    BLL.BLLBase bllStock  = new BLLBase("StockDB");
                    bool        blnCheck  = true;
                    string      SubTaskID = "";
                    //判斷中間表貨位是否正常
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        DataRow dr = dt.Rows[i];
                        if (dr["from_location_id"].ToString().Trim().Length == 6)
                        {
                            if (bllStock.GetRowCount("CMD_CEll", string.Format("AreaCode='{0}' and CellName='{1}'", dr["equipment"].ToString(), dr["from_location_id"].ToString())) == 0)
                            {
                                MCP.Logger.Error("WMS明細ID:" + dr["subtask_id"].ToString() + "分配貨位出錯!庫區" + dr["equipment"].ToString() + "不存在貨位:" + dr["from_location_id"].ToString());
                                blnCheck = false;
                                break;
                            }
                        }
                        if (dr["to_location_id"].ToString().Trim().Length == 6)
                        {
                            if (bllStock.GetRowCount("CMD_CEll", string.Format("AreaCode='{0}' and CellName='{1}'", dr["equipment"].ToString(), dr["to_location_id"].ToString())) == 0)
                            {
                                MCP.Logger.Error("WMS明細ID:" + dr["subtask_id"].ToString() + "分配貨位出錯!庫區" + dr["equipment"].ToString() + "不存在貨位:" + dr["to_location_id"].ToString());
                                blnCheck = false;
                                break;
                            }
                        }
                        SubTaskID = dr["subtask_id"].ToString() + ",";
                    }
                    if (!blnCheck)
                    {
                        return;
                    }


                    //删除现有数据,避免重复
                    bllStock.ExecNonQuery("WCS.DeleteAsrsTaskTMP", new DataParameter[] { new DataParameter("{0}", SubTaskID.TrimEnd(',')) });

                    //插入中間表
                    bllStock.BatchInsertTable(dt, "AsrsTask_TMP");

                    DataTable dtTaskID = dt.DefaultView.ToTable(true, "task_id");

                    List <string>          MiddleComds = new List <string>();
                    List <DataParameter[]> Middleparas = new List <DataParameter[]>();

                    List <string>          StockComds = new List <string>();
                    List <DataParameter[]> Stockparas = new List <DataParameter[]>();
                    for (int i = 0; i < dtTaskID.Rows.Count; i++)
                    {
                        DataRow[] drsTask = dt.Select(string.Format("task_id='{0}'", dtTaskID.Rows[i]["task_id"].ToString()));
                        //更新中間表状态
                        string taskID    = drsTask[0]["task_id"].ToString();
                        string SubtaskID = drsTask[0]["subtask_id"].ToString();

                        MiddleComds.Add("Middle.UpdateAsrsTaskAck");
                        MiddleComds.Add("Middle.UpdateAsrsSubTaskAck");
                        string strWhere = string.Format("subtask_id='{0}'", SubtaskID);
                        if (drsTask.Length > 1)
                        {
                            strWhere = "1=1";
                        }
                        Middleparas.Add(new DataParameter[] { new DataParameter("@TaskID", taskID) });
                        Middleparas.Add(new DataParameter[] { new DataParameter("@TaskID", taskID), new DataParameter("{0}", strWhere) });
                        for (int j = 0; j < drsTask.Length; j++)
                        {
                            SubtaskID = drsTask[j]["subtask_id"].ToString();
                            StockComds.Add("WCS.InsertWCSTask");
                            Stockparas.Add(new DataParameter[] { new DataParameter("@subtaskid", SubtaskID) });
                        }
                    }

                    bllStock.ExecTran(StockComds.ToArray(), Stockparas);

                    BLL.BLLBase bllMiddle = new BLLBase("MiddleDB");
                    if (blnUpdateAck)
                    {
                        bllMiddle.ExecTran(MiddleComds.ToArray(), Middleparas);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }