Exemple #1
0
        private void gridViewinvDet_DoubleClick(object sender, EventArgs e)
        {
            if (this.gridViewinvDet.IsValidRowHandle(this.gridViewinvDet.FocusedRowHandle) & this.gridViewinvDet.State == GridState.Normal & !this.gridViewinvDet.IsFilterRow(this.gridViewinvDet.FocusedRowHandle))
            {
                FormDialog _formDialog = new FormDialog();
                _formDialog.AcceptButton = null;
                _formDialog.Text         = "»зменить строку";

                MDataSet.InvoiceDetailRow sourceRow = ((this.invoiceDetailBindingSource.CurrencyManager.Current as DataRowView).Row as MDataSet.InvoiceDetailRow);

                if ((sourceRow != null))
                {
                    MDataSet.ProductRow productRow = (this.productBindingSource.DataSource as MDataSet.ProductDataTable).FindByID(sourceRow.ProductRef);

                    if (productRow == null)
                    {
                        MessageBox.Show("ќшибка поиска товара");
                        return;
                    }

                    InvoiceDetailRowAdd _invoiceDetailRowAdd = new InvoiceDetailRowAdd(sourceRow, sourceRow.RemainsRow, productRow);
                    _formDialog.panel.Controls.Add(_invoiceDetailRowAdd);

                    if (DialogResult.OK == _formDialog.ShowDialog(this))
                    {
                        this.invoiceDetailBindingSource.EndEdit();
                    }

                    else
                    {
                        this.invoiceDetailBindingSource.CancelEdit();
                    }
                }
            }
        }
Exemple #2
0
        private void gridViewInvRem_DoubleClick(object sender, EventArgs e)
        {
            MDataSet.RemainsRow _rem = this.gridViewInvRem.GetDataRow(this.gridViewInvRem.FocusedRowHandle) as MDataSet.RemainsRow;

            if (_rem != null)
            {
                MDataSet.InvoiceDetailRow _newRow = (this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow;

                InvoiceDetailAdd _invoceDetailAdd = new InvoiceDetailAdd(_newRow, _rem, _mainForm);

                FormDialog formDialog = new FormDialog();
                formDialog.Text         = "Добавить строку";
                formDialog.AcceptButton = null;

                formDialog.panel.Controls.Add(_invoceDetailAdd);

                if (DialogResult.OK == formDialog.ShowDialog(this))
                {
                    this.invoiceDetailBindingSource.EndEdit();

                    this.SaleInvoiceDetail(_newRow);
                }
                else
                {
                    this.invoiceDetailBindingSource.CancelEdit();
                    this.mDataSet.ReceiptRemains.RejectChanges();
                }
            }
        }
Exemple #3
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null)
            {
                return;
            }

            BLL.BLLBase bll     = new BLL.BLLBase();
            string      Request = obj.ToString();

            if (Request.Equals("True") || Request.Equals("1"))
            {
                try
                {
                    string taskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(WriteToService(stateItem.Name, "Barcode")));
                    if (taskNo.Trim().Length > 0)
                    {
                        string Barcode = taskNo.PadRight(20, ' ').Substring(10, 10).Trim();

                        DataTable dt = bll.FillDataTable("WCS.SelectReadTaskByPallet", new DataParameter[] { new DataParameter("@PalletCode", Barcode) });
                        if (dt.Rows.Count > 0)
                        {
                            string TaskType = dt.Rows[0]["TaskType"].ToString();
                            string TaskNo   = dt.Rows[0]["TaskNo"].ToString();
                            if (TaskType == "12" || TaskType == "15" || TaskType == "14") //出库,托盘出库,盘点
                            {
                                DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo) };
                                bll.ExecNonQueryTran("WCS.Sp_TaskProcess", param);
                                Logger.Info("出库任务完成,任务号:" + TaskNo + " 条码号:" + Barcode);


                                string   strValue = "";
                                string[] str      = new string[3];
                                if (TaskType == "12" || TaskType == "14")//显示拣货信息.
                                {
                                    str[0] = "1";
                                    if (TaskType == "14")
                                    {
                                        str[0] = "2";
                                    }

                                    while ((strValue = FormDialog.ShowDialog(str, dt)) != "")
                                    {
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("到达出库口,错误讯息:" + ex.Message);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 盘点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCheckScan_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_195"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string strTaskNo = obj.ToString().PadLeft(4, '0');

            if (int.Parse(obj.ToString()) >= 9800 && int.Parse(obj.ToString()) < 9999)  //盘点
            {
                string[] str = new string[3];

                str[0] = "6";


                str[1] = "";
                str[2] = "";
                TaskDal   dal           = new TaskDal(); //更具任务号,获取TaskID及BILL_NO
                string[]  strInfo       = dal.GetTaskInfo(strTaskNo);
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                string strValue = "";
                while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    string writeItem = "01_2_195_";

                    DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));

                    DataRow       dr        = dtTask.Rows[0];
                    SysStationDal sysdal    = new SysStationDal();
                    DataTable     dtstation = sysdal.GetSationInfo(dr["CELL_CODE"].ToString(), "11", "3");

                    if (strValue != "1")
                    {
                        CellDal celldal = new CellDal();
                        celldal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "条码扫描不一致");
                    }


                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(strInfo[1]);                                 //任务号
                    ServiceW[1] = int.Parse(dtstation.Rows[0]["STATION_NO"].ToString()); //目的地址
                    ServiceW[2] = 1;

                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                                                                                         //PLC写入任务
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "3", 1);                                                                                                                                //PLC写入任务

                    dal.UpdateTaskDetailStation("195", dtstation.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=3", strInfo[0]));                                                              //更新货位到达入库站台,
                    dal.UpdateTaskDetailCrane(dtstation.Rows[0]["STATION_NO"].ToString(), dr["CELL_CODE"].ToString(), "0", dtstation.Rows[0]["CRANE_NO"].ToString(), string.Format("TASK_ID='{0}' AND ITEM_NO=4", strInfo[0])); //更新调度堆垛机的其实位置及目标地址。
                    break;
                }
            }
        }
Exemple #5
0
        private void btAddOrders_Click(object sender, EventArgs e)
        {
            int Ref;

            this.ordersBindingSource.EndEdit();

            MDataSet.OrdersRow ordrow = (this.ordersBindingSource.Current as DataRowView).Row as MDataSet.OrdersRow;

            if (ordrow != null)
            {
                Ref = ordrow.TradePupletRef;
            }
            else
            {
                Ref = 1;
            }



            this.btSave_Click(sender, e);



            this.grid.EmbeddedNavigator.Buttons.Append.DoClick();



            MDataSet.OrdersRow row = (this.ordersBindingSource.Current as DataRowView).Row as MDataSet.OrdersRow;

            row.TradePupletRef = Ref;
            row.Reserved       = 0;

            FormDialog formDialog = new FormDialog();

            formDialog.Text         = "Добавить новый заказ ";
            formDialog.AcceptButton = null;

            OrderAdd orderAdd = new OrderAdd(row, this.ParentForm as MainForm);

            formDialog.panel.Controls.Add(orderAdd);

            if (formDialog.ShowDialog(this) == DialogResult.OK)
            {
                this.grid.EmbeddedNavigator.Buttons.EndEdit.DoClick();

                this.ordersBindingSource.EndEdit();

                this.btSave_Click(sender, e);
            }
            else
            {
                this.ordersBindingSource.CancelEdit();
                this.mDataSet.Orders.RejectChanges();
            }

            this.grid.Refresh();
        }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             * 一楼入库烟包处理
             */

            try
            {
                object obj = ObjectUtil.GetObject(stateItem.State);
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }


                string strBadFlag = "";
                //其他情况电控报警处理
                switch (obj.ToString())
                {
                case "1":
                    strBadFlag = "左边条码无法读取";
                    break;

                case "2":
                    strBadFlag = "右边条码无法读取";
                    break;

                case "3":
                    strBadFlag = "两边条码无法读取";
                    break;

                case "4":
                    strBadFlag = "两边条码不一致";
                    break;
                }
                string   strBarCode;
                string[] strMessage = new string[3];
                strMessage[0] = "3";
                strMessage[1] = strBadFlag;

                while ((strBarCode = FormDialog.ShowDialog(strMessage, null)) != "")
                {
                    byte[] b = Common.ConvertStringChar.stringToByte(strBarCode, 80);
                    WriteToService("StockPLC_01", "01_2_124_1", b); //写入条码
                    WriteToService("StockPLC_01", "01_2_124_2", 1); //写入标识。

                    break;
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_01.NotReadBarcodeProcess:" + e.Message);
            }
        }
Exemple #7
0
        public string RunTests(ref int failCount, ref int testCount)
        {
            //RichTextBox control = new RichTextBox();
            //form.Control = control;
            form.Text = "Test single form";
            DialogResult res = form.ShowDialog();

            Console.WriteLine("" + res);
            form.Show();
            res = form.DialogResult;
            Console.WriteLine("" + res);
            return("done");
        }
Exemple #8
0
        private void gridControl1_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                int focused = this.gridViewInvRem.FocusedRowHandle;

                MDataSet.RemainsRow _rem = this.gridViewInvRem.GetDataRow(this.gridViewInvRem.FocusedRowHandle) as MDataSet.RemainsRow;

                _mainForm.RefreshData(_rem);

                if (_rem != null)
                {
                    MDataSet.InvoiceDetailRow _newRow = (this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow;

                    InvoiceDetailAdd _invoceDetailAdd = new InvoiceDetailAdd(_newRow, _rem, _mainForm);

                    FormDialog formDialog = new FormDialog();
                    formDialog.Text = "Добавить строку";
                    formDialog.panel.Controls.Add(_invoceDetailAdd);

                    if (DialogResult.OK == formDialog.ShowDialog(this))
                    {
                        this.invoiceDetailBindingSource.EndEdit();

                        this.SaleInvoiceDetail(_newRow);

                        _mainForm.RefreshData(_newRow);
                    }
                    else
                    {
                        this.gridViewInvRem.BeginDataUpdate();
                        this.invoiceDetailBindingSource.CancelEdit();
                        _rem.RejectChanges();
                        this.gridViewInvRem.EndDataUpdate();

                        this.gridRem.Focus();
                        this.gridViewInvRem.FocusedRowHandle = focused;
                        return;
                    }

                    _invoceDetailAdd.Dispose();

                    GC.Collect();
                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                MainForm.Log("gridControl1_DoubleClick " + err.Message);
            }
        }
Exemple #9
0
        private void btSetExtr_Click(object sender, EventArgs e)
        {
            this.invoiceDetailBindingSource.EndEdit();
            this.invoiceMasterBindingSource.EndEdit();

            //      if (this._curentMasterRow.GetInvoiceDetailRows().Length == 0) return;

            FormDialog _FormDialog = new FormDialog();

            _FormDialog.Text = "Установить наценку ";

            _FormDialog.btCancel.Visible = false;

            NumericUpDown _num = new NumericUpDown();
            Label         _lab = new Label();

            _lab.Text      = "Процент (%): ";
            _num.Value     = 30;
            _num.Increment = 5;

            _FormDialog.panel.Controls.Add(_lab);
            _FormDialog.panel.Controls.Add(_num);

            _lab.Dock = DockStyle.Bottom;

            if (_FormDialog.ShowDialog(this.ParentForm) == DialogResult.OK)
            {
                try
                {
                    int ext = Convert.ToInt16(_num.Value);

                    this.invoiceMasterTableAdapter.InvoiceMasterSetExtrById(ext, _curentMasterRow.ID);

                    (this.ParentForm as MainForm).RefreshData(_curentMasterRow, true);
                }
                catch (Exception err)

                {
                    MessageBox.Show(err.Message);
                }

                /*    foreach (DataRow _Row in _curentMasterRow.GetInvoiceDetailRows())
                 *  {
                 *      MDataSet.InvoiceDetailRow _DetailRow = _Row as MDataSet.InvoiceDetailRow;
                 *
                 *      _DetailRow.PriceRetailNDS = Decimal.Round(_DetailRow.PricePurchase * (1 + _num.Value / 100),2);
                 *
                 *  }
                 */
            }
        }
Exemple #10
0
        private static List <Tuple <string, int, int> > execDialog(Tuple <string, int, int> wrong, Form parent)
        {
            FormDialog   dlg    = new FormDialog(wrong.Item1 + " " + wrong.Item2 + " " + wrong.Item3, false);
            DialogResult result = dlg.ShowDialog(parent);
            List <Tuple <string, int, int> > list = new List <Tuple <string, int, int> >();

            if (dlg.radioButton1.Checked)
            {
                if (result == DialogResult.OK)
                {
                    list.Add(new Tuple <string, int, int>(dlg.GetGoodName(), dlg.GetGoodType(), dlg.GetGoodDesc()));
                    return(list);
                }
                else if (result == DialogResult.Cancel)
                {
                    throw new Exception("Przerwano przez użytkownika.");
                }
                else
                {
                    return(null);
                }
            }
            else if (dlg.radioButton2.Checked)
            {
                if (result == DialogResult.OK)
                {
                    string   s    = dlg.getGoodString();
                    string[] sarr = s.Split(';');
                    foreach (string elem in sarr)
                    {
                        string[] elemArr = elem.Split(':');
                        list.Add(new Tuple <string, int, int>(elemArr[0], int.Parse(elemArr[2]), int.Parse(elemArr[1])));
                    }
                    return(list);
                }
                else if (result == DialogResult.Cancel)
                {
                    throw new Exception("Przerwano przez użytkownika.");
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Exemple #11
0
        private void btReturnDoc_Click(object sender, EventArgs e)
        {
            _mainForm.RefreshData(_invmasterRow);

            if (_invmasterRow.GetInvoiceDetailRows().Length == 0)
            {
                return;
            }



            FormDialog _fdlg = new FormDialog();
            TextBox    _tb   = new TextBox();

            _fdlg.Text = "Закрытие чека: ";


            _tb.Text = "Возврат : ...";


            _tb.Width = _fdlg.panel.Width;
            // _tb.Dock = DockStyle.Fill;
            _tb.SelectAll();

            _fdlg.panel.Controls.Add(_tb);

            if (DialogResult.OK == _fdlg.ShowDialog(this))
            {
                _invmasterRow.Note = _tb.Text;

                if (!_mainForm.SaveToBase(_invmasterRow))
                {
                    MessageBox.Show("Ошибка обновления!");
                    return;
                }
                this._mainForm.MakeToReturn(_invmasterRow);

                _invmasterRow.SetModified();

                if (!_mainForm.SaveToBase(_invmasterRow))
                {
                    MessageBox.Show("Ошибка обновления!");
                    return;
                }


                this.Close();
            }
        }
Exemple #12
0
        /// <summary>
        /// 条码故障
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnBarcodeScan_Click(object sender, EventArgs e)
        {
            try
            {
                object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_124"));
                if (obj == null || obj.ToString() == "0")
                {
                    return;
                }

                string strBadFlag = "";

                switch (obj.ToString())
                {
                case "1":
                    strBadFlag = "左边条码无法读取";
                    break;

                case "2":
                    strBadFlag = "右边条码无法读取";
                    break;

                case "3":
                    strBadFlag = "两边条码无法读取";
                    break;

                case "4":
                    strBadFlag = "两边条码不一致";
                    break;
                }
                string   strBarCode;
                string[] strMessage = new string[3];
                strMessage[0] = "3";
                strMessage[1] = strBadFlag;
                while ((strBarCode = FormDialog.ShowDialog(strMessage, null)) != "")
                {
                    byte[] b = THOK.XC.Process.Common.ConvertStringChar.stringToByte(strBarCode, 40);
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_2_124_1", b); //写入条码
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_2_124_2", 1); //写入标识。
                    Context.Processes["NotReadBarcodeProcess"].Resume();
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.NotReadBarcodeProcess:" + ex.Message);
            }
        }
Exemple #13
0
        private void InvoiceDetailDatecs_FormClosing(object sender, FormClosingEventArgs e)
        {
            _mainForm.RefreshData(_invmasterRow);

            //проверить если выход по ошибке


            if ((_invmasterRow.NumCheck == 0) & (_invmasterRow.GetInvoiceDetailRows().Length > 0))
            {
                FormDialog _fdlg = new FormDialog();
                TextBox    _tb   = new TextBox();
                _fdlg.Text = "Аннуляция чека: ";


                if (this.causeError == null)
                {
                    _tb.Text = "Ошибочный чек ...";
                }
                else
                {
                    _tb.Text = this.causeError;
                }


                _tb.Width = _fdlg.panel.Width;
                // _tb.Dock = DockStyle.Fill;
                _tb.SelectAll();

                _fdlg.panel.Controls.Add(_tb);

                if (DialogResult.OK == _fdlg.ShowDialog(this))
                {
                    _invmasterRow.Note = _tb.Text;

                    if (!_mainForm.SaveToBase(_invmasterRow))
                    {
                        MessageBox.Show("Ошибка обновления!");
                        return;
                    }

                    _printer.CancelCheck("ОТМЕНА:" + _tb.Text);
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
Exemple #14
0
        /*  处理事项:
         *  倒库烟包 122
         */
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                object sta = ObjectUtil.GetObject(stateItem.State);
                if (sta == null || sta.ToString() == "0")
                {
                    return;
                }
                string[] str = new string[3];
                str[0] = "4";
                str[1] = "";
                str[2] = "";

                TaskDal   dal           = new TaskDal(); //更具任务号,获取TaskID及BILL_NO
                string[]  strInfo       = dal.GetTaskInfo(sta.ToString().PadLeft(4, '0'));
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                while (FormDialog.ShowDialog(str, dtProductInfo) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    dal.UpdateTaskState(strInfo[0], "2");

                    BillDal billdal = new BillDal();
                    billdal.UpdateInBillMasterFinished(strInfo[1], "1");

                    string writeItem = "01_2_122_";

                    int[] ServiceW = new int[3];
                    ServiceW[0] = int.Parse(strInfo[1]); //任务号
                    ServiceW[1] = 131;                   //目的地址
                    ServiceW[2] = 4;

                    WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务

                    WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                    break;
                }
                ;//线程继续。
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.MoveOutToStationProcess:" + ex.Message);
            }
        }
Exemple #15
0
        /// <summary>
        /// 抽检,补料托盘入库;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSpotCheck_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_195"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string strTaskNo = obj.ToString().PadLeft(4, '0');

            string[] str = new string[3];
            if (int.Parse(strTaskNo) >= 9000 && int.Parse(strTaskNo) <= 9299) //补料
            {
                str[0] = "1";
            }
            else if (int.Parse(strTaskNo) >= 9300 && int.Parse(strTaskNo) <= 9499)//抽检
            {
                str[0] = "2";
            }

            str[1] = "";
            str[2] = "";
            TaskDal dal = new TaskDal(); //更具任务号,获取TaskID及BILL_NO

            string[]  strInfo       = dal.GetTaskInfo(strTaskNo);
            DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
            DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
            //线程停止
            string strValue = "";

            while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
            {
                dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                string writeItem = "01_2_195_";
                if (str[0] == "1" || str[0] == "2")  //抽检,补料
                {
                    dal.UpdateTaskState(strInfo[0], "2");

                    BillDal billdal = new BillDal();
                    billdal.UpdateInBillMasterFinished(strInfo[1], "1");
                    Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", 1); //PLC写入任务
                }
                break;
            }
        }
 public void ShowDialog()
 {
     using (var dialogForm = new   FormDialog())
     {
         if (dialogForm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
         {
             if (DialogConfirmed != null)
             {
                 DialogConfirmed(this, new EventArgs());
             }
         }
         else
         {
             if (DialogCanceled != null)
             {
                 DialogCanceled(this, new EventArgs());
             }
         }
     }
 }
Exemple #17
0
        /// <summary>
        /// 倒库出库
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMoveOut_Click(object sender, EventArgs e)
        {
            object obj = ObjectUtil.GetObject(Context.ProcessDispatcher.WriteToService("StockPLC_01", "01_1_122"));

            if (obj == null || obj.ToString() == "0")
            {
                return;
            }
            string[] str = new string[3];
            str[0] = "4";
            str[1] = "";
            str[2] = "";

            TaskDal dal = new TaskDal(); //更具任务号,获取TaskID及BILL_NO

            string[]  strInfo       = dal.GetTaskInfo(obj.ToString().PadLeft(4, '0'));
            DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
            DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);

            ; //线程停止
            while (FormDialog.ShowDialog(str, dtProductInfo) != "")
            {
                dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                dal.UpdateTaskState(strInfo[0], "2");

                BillDal billdal = new BillDal();
                billdal.UpdateInBillMasterFinished(strInfo[1], "1");

                string writeItem = "01_2_122_";

                int[] ServiceW = new int[3];
                ServiceW[0] = int.Parse(strInfo[1]); //任务号
                ServiceW[1] = 131;                   //目的地址
                ServiceW[2] = 4;

                Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务

                Context.ProcessDispatcher.WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                break;
            }
        }
Exemple #18
0
        private void btAdd_Click(object sender, EventArgs e)
        {
            /*создать новую строку, указатель на нее в  дл¤ редактировани¤*/
            MDataSet.RemainsRow _rems = this.gridViewRemainsInvDetEdt.GetDataRow(this.gridViewRemainsInvDetEdt.FocusedRowHandle) as MDataSet.RemainsRow;
            if (_rems == null)
            {
                return;
            }



            FormDialog _formDialog = new FormDialog();

            _formDialog.AcceptButton = _formDialog.btOk;
            _formDialog.Text         = "ƒобавить строку";

            MDataSet.InvoiceDetailRow sourceRow = ((this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow);

            MDataSet.RemainsRow remainsRow = ((this.RemainsBindingSource.CurrencyManager.Current as DataRowView).Row as  MDataSet.RemainsRow);

            MDataSet.ProductRow _productRow = (this.productBindingSource.DataSource as MDataSet.ProductDataTable).FindByID(remainsRow.ProductRef);


            if ((sourceRow != null) & (remainsRow != null))
            {
                InvoiceDetailRowAdd _invoiceDetailRowAdd = new InvoiceDetailRowAdd(sourceRow, remainsRow, _productRow);
                _formDialog.panel.Controls.Add(_invoiceDetailRowAdd);

                if (DialogResult.OK == _formDialog.ShowDialog(this))
                {
                    remainsRow.AcceptChanges();
                    this.invoiceDetailBindingSource.EndEdit();
                }
                else
                {
                    this.invoiceDetailBindingSource.CancelEdit();
                    remainsRow.RejectChanges();
                }
            }
        }
Exemple #19
0
        private void btEdit_Click(object sender, EventArgs e)
        {
            this.invoiceMasterBindingSource.EndEdit();
            this.Save();



            this.mainDataset.InvoiceDetail.Merge(this.mDataSet.InvoiceDetail);

            if (this.ValidateChildren())
            {
                FormDialog _formDialog = new FormDialog();
                _formDialog.Text = this.Tag.ToString();

                //   _formDialog.WindowState = FormWindowState.Maximized;


                _formDialog.AcceptButton = null;
                InvoiceDetailEdit _invoiceDetail = new InvoiceDetailEdit(_curentMasterRow, this.mainDataset.Product, (this.ParentForm as MainForm));

                //  _invoiceDetail.Dock = DockStyle.Fill;

                _formDialog.panel.Controls.Add(_invoiceDetail);

                if (DialogResult.OK == _formDialog.ShowDialog(this))
                {
                    this.invoiceMasterBindingSource.EndEdit();

                    btRefresh_Click(sender, e);

                    this.mDataSet.Remains.Merge(this.mainDataset.Remains);
                }
                else
                {
                    this.invoiceMasterBindingSource.CurrencyManager.CancelCurrentEdit();
                    btRefresh_Click(sender, e);
                }
            }
        }
Exemple #20
0
        private void btAdd_Click(object sender, EventArgs e)
        {
            /*создать новую строку, указатель на нее в  дл¤ редактировани¤*/
            MDataSet.RemainsRow _rems = this.gridViewRemainsInvDetEdt.GetDataRow(this.gridViewRemainsInvDetEdt.FocusedRowHandle) as MDataSet.RemainsRow;
            if (_rems == null) return;

            

                    FormDialog _formDialog = new FormDialog();
                    _formDialog.AcceptButton = _formDialog.btOk;
                    _formDialog.Text = "ƒобавить строку";

                    MDataSet.InvoiceDetailRow sourceRow = ((this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow);
                 
                    MDataSet.RemainsRow remainsRow = ((this.RemainsBindingSource.CurrencyManager.Current as DataRowView).Row as  MDataSet.RemainsRow);

                    MDataSet.ProductRow _productRow = (this.productBindingSource.DataSource as MDataSet.ProductDataTable).FindByID(remainsRow.ProductRef);


                    if ((sourceRow != null) & (remainsRow != null))
                    {
                        InvoiceDetailRowAdd _invoiceDetailRowAdd = new InvoiceDetailRowAdd(sourceRow, remainsRow,_productRow);
                        _formDialog.panel.Controls.Add(_invoiceDetailRowAdd);

                        if (DialogResult.OK == _formDialog.ShowDialog(this))
                        {  
                            remainsRow.AcceptChanges();
                            this.invoiceDetailBindingSource.EndEdit();
                          
                        }
                        else
                        {
                            this.invoiceDetailBindingSource.CancelEdit();
                            remainsRow.RejectChanges();
                        }
                    }
       }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            /*  处理事项:
             *
             *  stateItem.ItemName :
             *  Init - 初始化。
             *      FirstBatch - 生成第一批入库请求任务。
             *      StockInRequest - 根据请求,生成入库任务。
             *
             *  stateItem.State :参数 - 请求的卷烟编码。
             */
            //烟包托盘到达出库站台,根据返回的任务号,判断是否正常烟包:
            // 1、正常烟包,更新原有CranProcess的datatable将状态更改为3,并更改数据库状态。调用WriteToProcess(穿梭车Process).
            // 2、错误烟包,写入移库单,产生任务,调用调用WriteToProcess(穿梭车Process)。写入出库单,产生任务,并下达出库任务。
            object[] obj = ObjectUtil.GetObjects(stateItem.State);
            if (obj[0] == null || obj[0].ToString() == "0")
            {
                return;
            }

            try
            {
                string ToStation   = "";
                string FromStation = "";
                string ReadItem2   = "";
                switch (stateItem.ItemName)
                {
                case "02_1_304_1":
                    FromStation = "303";
                    ToStation   = "304";
                    ReadItem2   = "02_1_304_2";
                    break;

                case "02_1_308_1":
                    FromStation = "307";
                    ToStation   = "308";
                    ReadItem2   = "02_1_308_2";
                    break;

                case "02_1_312_1":
                    FromStation = "311";
                    ToStation   = "313";
                    ReadItem2   = "02_1_312_2";
                    break;

                case "02_1_316_1":
                    FromStation = "315";
                    ToStation   = "316";
                    ReadItem2   = "02_1_316_2";
                    break;

                case "02_1_320_1":
                    FromStation = "319";
                    ToStation   = "320";
                    ReadItem2   = "02_1_320_2";
                    break;

                case "02_1_322_1":
                    FromStation = "321";
                    ToStation   = "322";
                    ReadItem2   = "02_1_322_2";
                    break;
                }

                string StationState = "";

                TaskDal  dal     = new TaskDal();
                string[] strTask = dal.GetTaskInfo(obj[0].ToString().PadLeft(4, '0'));

                if (!string.IsNullOrEmpty(strTask[0]))
                {
                    //更新
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strTask[0]), "2");

                    DataTable dtTask   = dal.TaskInfo(string.Format("TASK_ID='{0}'", strTask[0]));
                    string    CellCode = dtTask.Rows[0]["CELL_CODE"].ToString();
                    CellDal   Celldal  = new CellDal();

                    //TaskID
                    StationState = strTask[0];

                    //校验正确烟包
                    if (obj[1].ToString() == "1")
                    {
                        WriteToProcess("CraneProcess", "StockOutToCarStation", StationState);

                        //解除货位锁定
                        Celldal.UpdateCellOutFinishUnLock(CellCode);
                        ProductStateDal psdal = new ProductStateDal();
                        psdal.UpdateOutBillNo(strTask[0]); //更新出库单
                        //获取任务记录
                        DataTable dt = dal.TaskCarDetail(string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=3 AND DETAIL.STATE=0 ", strTask[0]));
                        //调度小车;
                        WriteToProcess("CarProcess", "CarOutRequest", dt);
                    }
                    else //校验错误烟包
                    {
                        //返回读取到的RFID
                        string NewPalletCode = Common.ConvertStringChar.BytesToString((object[])ObjectUtil.GetObjects(WriteToService("StockPLC_02", ReadItem2)));

                        DataTable dtProductInfo = dal.GetProductInfoByTaskID(strTask[0]);

                        string   strBillNo  = "";
                        string[] strMessage = new string[3];
                        //strMessage[0] 弹出窗口类别,5是校验窗口
                        strMessage[0] = "5";
                        strMessage[1] = strTask[0];
                        strMessage[2] = NewPalletCode;

                        //弹出校验不合格窗口,人工选择处理方式
                        //strBillNo返回1 继续出库,否则返回替代的入库批次
                        while ((strBillNo = FormDialog.ShowDialog(strMessage, dtProductInfo)) != "")
                        {
                            string strNewBillNo = strBillNo;
                            if (string.IsNullOrEmpty(strNewBillNo))
                            {
                                if (strNewBillNo == "1")
                                {
                                    WriteToProcess("CraneProcess", "StockOutToCarStation", StationState);                                                       //更新堆垛机任务明细为完成状态。
                                    Celldal.UpdateCellOutFinishUnLock(CellCode);                                                                                //解除货位锁定
                                    ProductStateDal psdal = new ProductStateDal();
                                    psdal.UpdateOutBillNo(strTask[0]);                                                                                          //更新出库单

                                    DataTable dtCar = dal.TaskCarDetail(string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=3 AND DETAIL.STATE=0 ", strTask[0])); //获取任务ID
                                    WriteToProcess("CarProcess", "CarOutRequest", dtCar);                                                                       //调度小车;
                                }
                                else
                                {
                                    //生成二楼退库单
                                    BillDal bdal = new BillDal();
                                    //产生WMS退库单以及WCS任务,并生成TaskDetail。
                                    string CancelTaskID = bdal.CreateCancelBillInTask(strTask[0], strTask[1]);
                                    //更新货位错误标志。
                                    Celldal.UpdateCellNewPalletCode(CellCode, NewPalletCode);
                                    //更新退库申请货位完成。
                                    dal.UpdateTaskDetailStation(FromStation, ToStation, "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CancelTaskID));
                                    //更新出库任务完成
                                    dal.UpdateTaskState(strTask[0], "2");

                                    string    strWhere = string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=2 AND DETAIL.STATE=0 ", CancelTaskID);
                                    DataTable dt       = dal.TaskCarDetail(strWhere);
                                    //写入调小车的源地址目标地址
                                    if (dt.Rows.Count > 0)
                                    {
                                        SysStationDal sysdal       = new SysStationDal();
                                        DataTable     dtCarStation = sysdal.GetCarSationInfo(CellCode, "22");
                                        dt.Rows[0].BeginEdit();
                                        dt.Rows[0]["IN_STATION_ADDRESS"] = dtCarStation.Rows[0]["IN_STATION_ADDRESS"];
                                        dt.Rows[0]["IN_STATION"]         = dtCarStation.Rows[0]["IN_STATION"];
                                        dt.Rows[0].EndEdit();
                                    }
                                    //调度穿梭车入库。
                                    WriteToProcess("CarProcess", "CarInRequest", dt);
                                    //创建替代入库批次的WMS单据,WCS出库任务
                                    string    strOutTaskID = bdal.CreateCancelBillOutTask(strTask[0], strTask[1], strNewBillNo);
                                    DataTable dtOutTask    = dal.CraneTaskOut(string.Format("TASK_ID='{0}'", strOutTaskID));
                                    //调度穿梭车出库
                                    WriteToProcess("CraneProcess", "CraneInRequest", dtOutTask);

                                    //延迟
                                    int i = 0;
                                    while (i < 100)
                                    {
                                        i++;
                                    }

                                    //StationState:原任务TASKID,更新堆垛机Process 状态为2.
                                    WriteToProcess("CraneProcess", "StockOutToCarStation", StationState);
                                    //插入替换批次记录
                                    DataTable dtNewProductInfo = dal.GetProductInfoByTaskID(strOutTaskID);
                                    dal.InsertChangeProduct(dtProductInfo.Rows[0]["PRODUCT_BARCODE"].ToString(), dtProductInfo.Rows[0]["PRODUCT_CODE"].ToString(), dtNewProductInfo.Rows[0]["PRODUCT_BARCODE"].ToString(), dtNewProductInfo.Rows[0]["PRODUCT_CODE"].ToString());
                                }
                            }
                            break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error("THOK.XC.Process.Process_02.StockOutToCarStationProcess:" + e.Message);
            }
        }
Exemple #22
0
        private void gridViewInvRem_DoubleClick(object sender, EventArgs e)
        {
            MDataSet.RemainsRow _rem = this.gridViewInvRem.GetDataRow(this.gridViewInvRem.FocusedRowHandle) as MDataSet.RemainsRow;

            if (_rem != null)
            {
                MDataSet.InvoiceDetailRow _newRow = (this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow;

                InvoiceDetailAdd _invoceDetailAdd = new InvoiceDetailAdd(_newRow, _rem,_mainForm);

                FormDialog formDialog = new FormDialog();
                formDialog.Text = "Добавить строку";
                formDialog.AcceptButton = null;

                formDialog.panel.Controls.Add(_invoceDetailAdd);

                if (DialogResult.OK == formDialog.ShowDialog(this))
                {
                    this.invoiceDetailBindingSource.EndEdit();

                    this.SaleInvoiceDetail(_newRow);
                }
                else
                {
                    this.invoiceDetailBindingSource.CancelEdit();
                    this.mDataSet.ReceiptRemains.RejectChanges();
                }


            }
        }
Exemple #23
0
        private void btReturnDoc_Click(object sender, EventArgs e)
        {

            _mainForm.RefreshData(_invmasterRow);

           if (_invmasterRow.GetInvoiceDetailRows().Length==0)
               return;


            
            FormDialog _fdlg = new FormDialog();
            TextBox _tb = new TextBox();
                    _fdlg.Text = "Закрытие чека: ";
    

                        _tb.Text = "Возврат : ...";
                    

                    _tb.Width = _fdlg.panel.Width;
                    // _tb.Dock = DockStyle.Fill;
                    _tb.SelectAll();

                    _fdlg.panel.Controls.Add(_tb);

                    if (DialogResult.OK == _fdlg.ShowDialog(this))
                    {

                        _invmasterRow.Note = _tb.Text;

                        if (!_mainForm.SaveToBase(_invmasterRow))
                        {
                            MessageBox.Show("Ошибка обновления!");
                            return;

                        } 
                        this._mainForm.MakeToReturn(_invmasterRow);

                        _invmasterRow.SetModified();

                        if (!_mainForm.SaveToBase(_invmasterRow))
                        {
                            MessageBox.Show("Ошибка обновления!");
                            return;

                        } 
                        

                        this.Close();
                    }
        }
Exemple #24
0
        private void InvoiceDetailDatecs_FormClosing(object sender, FormClosingEventArgs e)
        {



            _mainForm.RefreshData(_invmasterRow);

            //проверить если выход по ошибке


            if ((_invmasterRow.NumCheck == 0) & (_invmasterRow.GetInvoiceDetailRows().Length > 0))
            {


                FormDialog _fdlg = new FormDialog();
                TextBox _tb = new TextBox();
                _fdlg.Text = "Аннуляция чека: ";


                if (this.causeError == null)

                    _tb.Text = "Ошибочный чек ...";
                else

                    _tb.Text = this.causeError;


                _tb.Width = _fdlg.panel.Width;
                // _tb.Dock = DockStyle.Fill;
                _tb.SelectAll();

                _fdlg.panel.Controls.Add(_tb);

                if (DialogResult.OK == _fdlg.ShowDialog(this))
                {

                    _invmasterRow.Note = _tb.Text;

                    if (!_mainForm.SaveToBase(_invmasterRow))
                    {
                        MessageBox.Show("Ошибка обновления!");
                        return;

                    }

                    _printer.CancelCheck("ОТМЕНА:" + _tb.Text);
                }
                else
                    e.Cancel = true;
            }
        }
Exemple #25
0
        private void btEdit_Click(object sender, EventArgs e)
        {
            this.invoiceMasterBindingSource.EndEdit();
            this.Save();

            

            this.mainDataset.InvoiceDetail.Merge(this.mDataSet.InvoiceDetail);

            if (this.ValidateChildren())
            {
                FormDialog _formDialog = new FormDialog();
                _formDialog.Text = this.Tag.ToString();

            //   _formDialog.WindowState = FormWindowState.Maximized;


                _formDialog.AcceptButton = null;
                InvoiceDetailEdit _invoiceDetail = new InvoiceDetailEdit(_curentMasterRow, this.mainDataset.Product,(this.ParentForm as MainForm));

              //  _invoiceDetail.Dock = DockStyle.Fill;

                _formDialog.panel.Controls.Add(_invoiceDetail);

                if (DialogResult.OK == _formDialog.ShowDialog(this))
                {
                    this.invoiceMasterBindingSource.EndEdit();

                    btRefresh_Click(sender, e);

                    this.mDataSet.Remains.Merge(this.mainDataset.Remains);

                }
                else
                {
                    this.invoiceMasterBindingSource.CurrencyManager.CancelCurrentEdit();
                    btRefresh_Click(sender, e);
                }
            }
        }
        /*  处理事项:
         *  抽检,补料,盘点  烟包到达,195
         */
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            try
            {
                object sta = ObjectUtil.GetObject(stateItem.State);

                if (sta == null || sta.ToString() == "0")
                {
                    return;
                }
                string[] str = new string[3];
                if (((short)sta) >= 9000 && ((short)sta) <= 9299) //补料
                {
                    str[0] = "1";
                }
                else if (((short)sta) >= 9300 && ((short)sta) <= 9499)//抽检
                {
                    str[0] = "2";
                }
                else if (((short)sta) >= 9800 && ((short)sta) < 9999) //盘点
                {
                    str[0] = "6";
                }
                str[1] = "";
                str[2] = "";

                //根据任务号,获取TaskID及BILL_NO
                TaskDal   dal           = new TaskDal();
                string[]  strInfo       = dal.GetTaskInfo(sta.ToString().PadLeft(4, '0'));
                DataTable dt            = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));
                DataTable dtProductInfo = dal.GetProductInfoByTaskID(strInfo[0]);
                //线程停止
                string strValue = "";
                while ((strValue = FormDialog.ShowDialog(str, dtProductInfo)) != "")
                {
                    dal.UpdateTaskDetailState(string.Format("TASK_ID='{0}' AND ITEM_NO=2", strInfo[0]), "2");
                    string writeItem = "01_2_195_";
                    if (str[0] == "1" || str[0] == "2")  //抽检,补料
                    {
                        dal.UpdateTaskState(strInfo[0], "2");

                        BillDal billdal = new BillDal();
                        billdal.UpdateInBillMasterFinished(strInfo[1], "1");

                        int[] ServiceW = new int[3];
                        ServiceW[0] = int.Parse(strInfo[1]); //任务号
                        ServiceW[1] = 131;                   //目的地址
                        ServiceW[2] = 4;

                        WriteToService("StockPLC_01", writeItem + "1", ServiceW); //PLC写入任务

                        WriteToService("StockPLC_01", writeItem + "2", 1);        //PLC写入任务
                    }
                    else  //盘点
                    {
                        DataTable dtTask = dal.TaskInfo(string.Format("TASK_ID='{0}'", strInfo[0]));

                        DataRow       dr        = dtTask.Rows[0];
                        SysStationDal sysdal    = new SysStationDal();
                        DataTable     dtstation = sysdal.GetSationInfo(dr["CELL_CODE"].ToString(), "11", "3");

                        if (strValue != "1")
                        {
                            CellDal celldal = new CellDal();
                            celldal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "条码扫描不一致");
                        }


                        int[] ServiceW = new int[3];
                        ServiceW[0] = int.Parse(strInfo[1]);                                 //任务号
                        ServiceW[1] = int.Parse(dtstation.Rows[0]["STATION_NO"].ToString()); //目的地址
                        ServiceW[2] = 1;

                        WriteToService("StockPLC_01", writeItem + "1", ServiceW);                                                                                      //PLC写入任务
                        WriteToService("StockPLC_01", writeItem + "2", 1);                                                                                             //PLC写入任务

                        dal.UpdateTaskDetailStation("195", dtstation.Rows[0]["STATION_NO"].ToString(), "1", string.Format("TASK_ID='{0}' AND ITEM_NO=3", strInfo[0])); //更新货位到达入库站台,
                    }


                    //线程继续。
                    break;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("THOK.XC.Process.Process_01.CheckOutToStationProcess:" + ex.Message);
            }
        }
Exemple #27
0
        private void gridControl1_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                int focused = this.gridViewInvRem.FocusedRowHandle;

                MDataSet.RemainsRow _rem = this.gridViewInvRem.GetDataRow(this.gridViewInvRem.FocusedRowHandle) as MDataSet.RemainsRow;

                _mainForm.RefreshData(_rem);

                if (_rem != null)
                {
                    MDataSet.InvoiceDetailRow _newRow = (this.invoiceDetailBindingSource.AddNew() as DataRowView).Row as MDataSet.InvoiceDetailRow;

                    InvoiceDetailAdd _invoceDetailAdd = new InvoiceDetailAdd(_newRow, _rem, _mainForm);

                    FormDialog formDialog = new FormDialog();
                    formDialog.Text = "Добавить строку";
                    formDialog.panel.Controls.Add(_invoceDetailAdd);

                    if (DialogResult.OK == formDialog.ShowDialog(this))
                    {

                        this.invoiceDetailBindingSource.EndEdit();

                        this.SaleInvoiceDetail(_newRow);

                        _mainForm.RefreshData(_newRow);



                    }
                    else
                    {
                        this.gridViewInvRem.BeginDataUpdate();
                        this.invoiceDetailBindingSource.CancelEdit();
                        _rem.RejectChanges();
                        this.gridViewInvRem.EndDataUpdate();

                        this.gridRem.Focus();
                        this.gridViewInvRem.FocusedRowHandle = focused;
                        return;


                    }

                    _invoceDetailAdd.Dispose();

                    GC.Collect();

                }
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                MainForm.Log("gridControl1_DoubleClick " + err.Message);
            }

        }
Exemple #28
0
        /// <summary>
        /// 堆垛机状态。
        /// </summary>
        /// <param name="state"></param>
        private void CSR(object state)
        {
            Dictionary <string, string> msg = (Dictionary <string, string>)state;

            if (!dCraneState.ContainsKey(msg["CraneNo"]))
            {
                dCraneState.Add(msg["CraneNo"], "");
            }
            if (msg["ReturnCode"] == "000")
            {
                lock (dCraneState)
                {
                    if (msg["AssignmenID"] == "00000000" && msg["CraneMode"] == "1")
                    {
                        dCraneState[msg["CraneNo"]] = "0";

                        if (dCraneWait[msg["CraneNo"]] != null)
                        {
                            SendTelegram(msg["CraneNo"], dCraneWait[msg["CraneNo"]]);
                        }
                        else
                        {
                            SendTelegram(msg["CraneNo"], null);
                        }
                    }
                    else
                    {
                        dCraneState[msg["CraneNo"]] = "1";
                    }
                }
            }
            else
            {
                lock (dCraneState)
                {
                    dCraneState[msg["CraneNo"]] = "1";
                }
                Logger.Error(string.Format("堆垛机{0}返回错误代码{1}{2}", msg["CraneNo"], msg["ReturnCode"], ""));

                #region 堆垛机错误而停止,重新选择出库批次
                if (msg["ReturnCode"] == "000")
                {
                    DataRow dr  = null;
                    TaskDal dal = new TaskDal();
                    if (dtCrane != null)
                    {
                        DataRow[] drs = dtCrane.Select(string.Format("SQUENCE_NO='{0}'", msg["SequenceNo"]));
                        if (drs.Length > 0)
                        {
                            dr = drs[0];
                        }
                    }
                    if (dr == null)
                    {
                        //根据流水号,获取资料
                        DataTable dt = dal.CraneTaskIn(string.Format("DETAIL.SQUENCE_NO='{0}' AND DETAIL.CRANE_NO IS NOT NULL", msg["SequenceNo"]));
                        if (dt.Rows.Count > 0)
                        {
                            dr = dt.Rows[0];
                        }
                    }
                    if (dr != null)
                    {
                        string    ErrMsg = "";
                        DataRow[] drMsgs = dtErrMesage.Select(string.Format("CODE='{0}'", dr["ERR_CODE"].ToString()));
                        if (drMsgs.Length > 0)
                        {
                            ErrMsg = drMsgs[0]["DESCRIPTION"].ToString();
                        }

                        string   strBillNo  = "";
                        string[] strMessage = new string[4];
                        strMessage[0] = "9";
                        strMessage[1] = dr["TASK_ID"].ToString();
                        strMessage[2] = "错误代码:" + dr["ERR_CODE"] + ",错误内容:" + ErrMsg;
                        strMessage[3] = msg["CraneNo"];

                        DataTable dtProductInfo = dal.GetProductInfoByTaskID(dr["TASK_ID"].ToString());

                        while ((strBillNo = FormDialog.ShowDialog(strMessage, dtProductInfo)) != "")
                        {
                            if (strBillNo != "1")
                            {
                                BillDal bdal         = new BillDal();
                                string  strNewBillNo = strBillNo;
                                //产生新的出库单
                                string    strOutTaskID = bdal.CreateCancelBillOutTask(dr["TASK_ID"].ToString(), dr["BILL_NO"].ToString(), strNewBillNo, msg["CraneNo"]);
                                DataTable dtOutTask    = dal.CraneTaskOut(string.Format("TASK_ID='{0}'", strOutTaskID));
                                WriteToProcess("CraneProcess", "CraneInRequest", dtOutTask);

                                //取消当前单据的出货记录
                                CellDal cdal = new CellDal();
                                cdal.UpdateCellUnLock(dr["CELL_CODE"].ToString());
                                dal.UpdateTaskState(dr["TASK_ID"].ToString(), "3");
                                break;
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    if (msg["AssignmenID"] == "00000000")
                    {
                        lock (dCraneState)
                        {
                            dCraneState[msg["CraneNo"]] = "0";
                        }
                    }
                }
                #endregion
            }
            SendACK(msg);
            CraneErrWriteToPLC(msg["CraneNo"], int.Parse(msg["ReturnCode"]));
        }
Exemple #29
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            //object obj = ObjectUtil.GetObject(stateItem.State);
            //if (obj == null)
            //    return;

            switch (stateItem.ItemName)
            {
            case "CraneTaskFinished":
                try
                {
                    object obj        = ObjectUtil.GetObject(stateItem.State);
                    string TaskFinish = obj.ToString();
                    if (TaskFinish.Equals("True") || TaskFinish.Equals("1"))
                    {
                        string TaskNo = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "CraneTaskNo")));

                        if (TaskNo.Length <= 0)
                        {
                            return;
                        }
                        sbyte[]  taskNo = new sbyte[10];
                        object[] objRow = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService("CranePLC1", "CraneAlarmCode"));
                        int      Column = int.Parse(objRow[2].ToString());
                        int      Height = int.Parse(objRow[3].ToString());
                        int      Row    = int.Parse(objRow[4].ToString());

                        //更新任务状态
                        DataParameter[] param = new DataParameter[] { new DataParameter("@TaskNo", TaskNo) };
                        //bll.ExecNonQueryTran("WCS.Sp_TaskProcess", param);
                        DataTable dtXml = bll.FillDataTable("WCS.Sp_TaskProcess", param);

                        //判断任务号是什么类型,如果是盘点另外处理
                        param = new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskNo='{0}'", TaskNo)) };
                        DataTable dt = bll.FillDataTable("WCS.SelectTask", param);

                        string Flag     = "BatchInStock";
                        string TaskType = "";
                        string CellCode = "";
                        string strState = "";
                        if (dt.Rows.Count > 0)
                        {
                            TaskType = dt.Rows[0]["TaskType"].ToString();
                            CellCode = dt.Rows[0]["CellCode"].ToString();
                            strState = dt.Rows[0]["State"].ToString();
                            if (TaskType == "12")
                            {
                                Flag = "BatchOutStock";
                            }
                            else if (TaskType == "14")
                            {
                                Flag = "BatchCheckStock";
                            }
                        }
                        if (dtXml.Rows.Count > 0)
                        {
                            string BillNo = dtXml.Rows[0][0].ToString();
                            if (BillNo.Trim().Length > 0)
                            {
                                string xml = Util.ConvertObj.ConvertDataTableToXmlOperation(dtXml, Flag);
                                WriteToService("ERP", "ACK", xml);
                                Logger.Info("单号" + dtXml.Rows[0][0].ToString() + "已完成,开始上报ERP系统");
                            }
                        }

                        string[] str = new string[3];
                        str[0] = "6";
                        string strValue = "";
                        if (TaskType == "14" && strState == "4")
                        {
                            while ((strValue = FormDialog.ShowDialog(str, dt)) != "")
                            {
                                if (strValue != "1")
                                {
                                    //更新货位信息
                                    bll.ExecNonQuery("WCS.UpdateErrCell", new DataParameter[] { new DataParameter("@CellCode", CellCode) });
                                }
                                bll.ExecNonQuery("WCS.UpdateTaskStateByTaskNo", new DataParameter[] { new DataParameter("@State", 5), new DataParameter("@TaskNo", TaskNo) });

                                //线程继续。
                                break;
                            }
                        }
                        //清除堆垛机任务号

                        if (Column == 1 && Height == 1)
                        {
                            int[] cellAddr = new int[9];
                            cellAddr[0] = 0;
                            cellAddr[1] = 0;
                            cellAddr[2] = 0;

                            cellAddr[3] = 1;
                            cellAddr[4] = 1;
                            cellAddr[5] = Row * 2 - 1;
                            cellAddr[6] = 1;
                            cellAddr[7] = 2;
                            cellAddr[8] = Row * 2 - 1;
                            Util.ConvertStringChar.stringToBytes("", 10).CopyTo(taskNo, 0);
                            Context.ProcessDispatcher.WriteToService("CranePLC1", "TaskAddress", cellAddr);
                            Context.ProcessDispatcher.WriteToService("CranePLC1", "TaskNo", taskNo);
                            Context.ProcessDispatcher.WriteToService("CranePLC1", "WriteFinished", 2);
                            Logger.Info(stateItem.ItemName + "完成标志,任务号:" + TaskNo);
                            return;
                        }
                        else
                        {
                            Util.ConvertStringChar.stringToBytes("", 10).CopyTo(taskNo, 0);
                            WriteToService(stateItem.Name, "TaskNo", taskNo);
                            Logger.Info(stateItem.ItemName + "完成标志,任务号:" + TaskNo);
                        }
                    }
                }
                catch (Exception ex1)
                {
                    Logger.Info("CraneProcess中CraneTaskFinished出错:" + ex1.Message);
                }
                break;

            case "Run":
                blRun = (int)stateItem.State == 1;
                if (blRun)
                {
                    tmWorkTimer.Start();
                    Logger.Info("堆垛机联机");
                }
                else
                {
                    tmWorkTimer.Stop();
                    Logger.Info("堆垛机脱机");
                }
                break;

            default:
                break;
            }


            return;
        }
Exemple #30
0
        /// <summary>
        /// 校验处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnVerficate_Click(object sender, EventArgs e)
        {
            string ServiceName = "StockPLC_02";

            string[] ItemName = new string[6];
            ItemName[0] = "02_1_304_1";
            ItemName[1] = "02_1_308_1";
            ItemName[2] = "02_1_312_1";
            ItemName[3] = "02_1_316_1";
            ItemName[4] = "02_1_320_1";
            ItemName[5] = "02_1_322_1";
            for (int i = 0; i < ItemName.Length; i++)
            {
                object[] obj = ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(ServiceName, ItemName[i]));
                if (obj[0] == null || obj[0].ToString() == "0")
                {
                    continue;
                }
                if (obj[1].ToString() == "1")
                {
                    continue;
                }

                string ToStation   = "";
                string FromStation = "";
                string ReadItem2   = "";

                switch (ItemName[i])
                {
                case "02_1_304_1":
                    FromStation = "303";
                    ToStation   = "304";
                    ReadItem2   = "02_1_304_2";
                    break;

                case "02_1_308_1":
                    FromStation = "307";
                    ToStation   = "308";
                    ReadItem2   = "02_1_308_2";
                    break;

                case "02_1_312_1":
                    FromStation = "311";
                    ToStation   = "313";
                    ReadItem2   = "02_1_312_2";
                    break;

                case "02_1_316_1":
                    FromStation = "315";
                    ToStation   = "316";
                    ReadItem2   = "02_1_316_2";
                    break;

                case "02_1_320_1":
                    FromStation = "319";
                    ToStation   = "320";
                    ReadItem2   = "02_1_320_2";
                    break;

                case "02_1_322_1":
                    FromStation = "321";
                    ToStation   = "322";
                    ReadItem2   = "02_1_322_2";
                    break;
                }

                TaskDal  dal     = new TaskDal();
                string[] strTask = dal.GetTaskInfo(obj[0].ToString().PadLeft(4, '0'));
                if (!string.IsNullOrEmpty(strTask[0]))
                {
                    string    NewPalletCode = THOK.XC.Process.Common.ConvertStringChar.BytesToString((object[])ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService("StockPLC_02", ReadItem2)));
                    string[]  StationState  = new string[2];
                    CellDal   Celldal       = new CellDal(); //更新货位,新托盘RFID,错误标志。
                    DataTable dtProductInfo = dal.GetProductInfoByTaskID(strTask[0]);
                    DataTable dtTask        = dal.TaskInfo(string.Format("TASK_ID='{0}'", strTask[0]));
                    string    CellCode      = dtTask.Rows[0]["CELL_CODE"].ToString();
                    string    strBillNo     = "";
                    string[]  strMessage    = new string[3];
                    strMessage[0] = "5";
                    strMessage[1] = strTask[0];
                    strMessage[2] = NewPalletCode;
                    ProductStateDal psdal = new ProductStateDal();
                    if (psdal.ExistsPalletCode(dtTask.Rows[0]["PALLET_CODE"].ToString())) //已经产生替代单号
                    {
                        continue;
                    }
                    while ((strBillNo = FormDialog.ShowDialog(strMessage, dtProductInfo)) != "")
                    {
                        string strNewBillNo = strBillNo;
                        if (string.IsNullOrEmpty(strNewBillNo))
                        {
                            if (strNewBillNo == "1")
                            {
                                StationState[0] = obj[0].ToString();//任务号;
                                StationState[1] = "3";

                                //this.Context.Processes["CraneProcess"].Start();
                                Context.ProcessDispatcher.WriteToProcess("CraneProcess", "StockOutToCarStation", StationState);                             //更新堆垛机Process 状态为3.

                                Celldal.UpdateCellOutFinishUnLock(CellCode);                                                                                //解除货位锁定

                                psdal.UpdateOutBillNo(strTask[0]);                                                                                          //更新出库单

                                DataTable dtCar = dal.TaskCarDetail(string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=3 AND DETAIL.STATE=0 ", strTask[0])); //获取任务ID
                                Context.ProcessDispatcher.WriteToProcess("CarProcess", "CarOutRequest", dtCar);                                             //调度小车;
                            }
                            else
                            {
                                //生成二楼退库单
                                BillDal bdal         = new BillDal();
                                string  CancelTaskID = bdal.CreateCancelBillInTask(strTask[0], strTask[1]);                                           //产生退库单,并生成明细。
                                Celldal.UpdateCellNewPalletCode(CellCode, NewPalletCode);                                                             //更新货位错误标志。

                                dal.UpdateTaskDetailStation(FromStation, ToStation, "2", string.Format("TASK_ID='{0}' AND ITEM_NO=1", CancelTaskID)); //更新申请货位完成。
                                dal.UpdateTaskState(strTask[0], "2");                                                                                 //更新出库任务完成

                                string    strWhere = string.Format("WCS_TASK.TASK_ID='{0}' AND ITEM_NO=2 AND DETAIL.STATE=0 ", CancelTaskID);
                                DataTable dt       = dal.TaskCarDetail(strWhere);
                                Context.ProcessDispatcher.WriteToProcess("CarProcess", "CarInRequest", dt);//调度穿梭车入库。

                                string    strOutTaskID = bdal.CreateCancelBillOutTask(strTask[0], strTask[1], strNewBillNo);
                                DataTable dtOutTask    = dal.CraneTaskOut(string.Format("TASK_ID='{0}'", strOutTaskID));

                                Context.ProcessDispatcher.WriteToProcess("CraneProcess", "CraneInRequest", dtOutTask);
                                int jj = 0;
                                while (jj < 100)  //延迟
                                {
                                    jj++;
                                }
                                StationState[0] = strTask[0];                                                                   //TaskID;
                                StationState[1] = "4";
                                Context.ProcessDispatcher.WriteToProcess("CraneProcess", "StockOutToCarStation", StationState); //更新堆垛机Process 状态为4.
                                DataTable dtNewProductInfo = dal.GetProductInfoByTaskID(strOutTaskID);
                                dal.InsertChangeProduct(dtProductInfo.Rows[0]["PRODUCT_BARCODE"].ToString(), dtProductInfo.Rows[0]["PRODUCT_CODE"].ToString(), dtNewProductInfo.Rows[0]["PRODUCT_BARCODE"].ToString(), dtNewProductInfo.Rows[0]["PRODUCT_CODE"].ToString());
                            }
                        }

                        break;
                    }
                }
            }
        }
Exemple #31
0
        private void gridViewinvDet_DoubleClick(object sender, EventArgs e)
        {

            if (this.gridViewinvDet.IsValidRowHandle(this.gridViewinvDet.FocusedRowHandle) & this.gridViewinvDet.State == GridState.Normal & !this.gridViewinvDet.IsFilterRow(this.gridViewinvDet.FocusedRowHandle))
            {
                FormDialog _formDialog = new FormDialog();
                _formDialog.AcceptButton = null;
                _formDialog.Text = "»зменить строку";

                MDataSet.InvoiceDetailRow sourceRow = ((this.invoiceDetailBindingSource.CurrencyManager.Current as DataRowView).Row as MDataSet.InvoiceDetailRow);
               
                if ((sourceRow != null) )
                {
                    MDataSet.ProductRow productRow = (this.productBindingSource.DataSource as MDataSet.ProductDataTable).FindByID(sourceRow.ProductRef);

                    if (productRow == null)
                    {
                        MessageBox.Show("ќшибка поиска товара");
                        return;
                    }

                    InvoiceDetailRowAdd _invoiceDetailRowAdd = new InvoiceDetailRowAdd(sourceRow, sourceRow.RemainsRow,productRow);
                    _formDialog.panel.Controls.Add(_invoiceDetailRowAdd);

                    if (DialogResult.OK == _formDialog.ShowDialog(this))

                        this.invoiceDetailBindingSource.EndEdit();

                    else

                        this.invoiceDetailBindingSource.CancelEdit();

                }
            }
        }
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            object[] obj = ObjectUtil.GetObjects(stateItem.State);
            if (obj == null)
            {
                return;
            }
            string TaskNo = obj[0].ToString() + obj[1].ToString().PadLeft(4, '0') + obj[2].ToString().PadLeft(4, '0');

            if (TaskNo.Length > 0)
            {
                try
                {
                    DataTable dt = bll.FillDataTable("WCS.SelectTask", new DataParameter[] { new DataParameter("{0}", string.Format("WCS.TaskNo='{0}'", TaskNo)) });
                    if (dt.Rows.Count > 0)
                    {
                        string TaskType      = dt.Rows[0]["TaskType"].ToString();
                        string PalletBarcode = dt.Rows[0]["PalletCode"].ToString();
                        string StationNo     = stateItem.ItemName.Substring(0, 3);
                        string NextState     = "10";
                        if (TaskType == "15")
                        {
                            NextState = "7";
                        }
                        if (TaskType == "14")
                        {
                            NextState = "8";
                        }
                        DataParameter[] param = new DataParameter[] { new DataParameter("{0}", string.Format("State='{0}',Covey_FinishDate=getdate()", NextState)), new DataParameter("{1}", string.Format("TaskNo='{0}'", TaskNo)) };
                        bll.ExecNonQueryTran("WCS.UpdateTaskState", param);
                        Logger.Info("任务号:" + TaskNo + " 料箱号:" + PalletBarcode + " 到达出库口:" + StationNo);
                        if (TaskType == "14")
                        {
                            string   strValue = "";
                            string[] str      = new string[1];
                            str[0] = "2";

                            while ((strValue = FormDialog.ShowDialog(str, dt)) != "")
                            {
                                //写入盘点入库
                                //DataParameter[] parameter = new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskNo='{0}'", TaskNo)) };
                                //DataTable dtTask = bll.FillDataTable("WCS.SelectTask", parameter);
                                //if (dt.Rows.Count > 0)
                                //{
                                //    string ConveyServer = "";
                                //    string ConveyID = dtTask.Rows[0]["ConveyFromStation"].ToString();
                                //    string PalletCode = dtTask.Rows[0]["PalletCode"].ToString();
                                //    string Destination = dtTask.Rows[0]["ConveyToStation"].ToString();
                                //    sbyte[] sTaskNo = new sbyte[20];
                                //    Util.ConvertStringChar.stringToBytes(TaskNo, 20).CopyTo(sTaskNo, 0);

                                //    WriteToService(ConveyServer, ConveyID + "_WTaskNo", sTaskNo);
                                //    WriteToService(ConveyServer, ConveyID + "_WPalletCode", PalletCode);
                                //    WriteToService(ConveyServer, ConveyID + "_Destination", Destination); //目的地
                                //    if (WriteToService(ConveyServer, ConveyID + "_WriteFinished", 1))
                                //    {
                                //        bll.ExecNonQuery("WCS.UpdateTaskState", new DataParameter[] { new DataParameter("{0}", "State=1,Convey_StartDate=getdate()"), new DataParameter("{1}", string.Format("TaskNo='{0}'", TaskNo)) });
                                //        Logger.Info("任务号:" + TaskNo + " 料箱号:" + PalletCode + " 已下输送线:" + ConveyID + " 目的地址:" + Destination);
                                //    }
                                //}
                                break;
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("OutStockFinishProcess出错,原因:" + ex.Message);
                }
            }
        }
Exemple #33
0
        private void buttonEneter_Click(object sender, EventArgs e)
        {
            try
            {
                bool dataread = false;
                foreach (workload_of_teachersDataSet.SpecialnostRow specialnost in workload_of_teachersDataSet.Specialnost)
                {
                    if (DataRowState.Added == specialnost.RowState)
                    {
                        specialnostTableAdapter.Insert(specialnost.Nazvanie, specialnost.NazvaniePolnoe, specialnost.Code);
                        dataread = true;
                    }
                    if (DataRowState.Modified == specialnost.RowState)
                    {
                        specialnostTableAdapter.Update(specialnost.Nazvanie, specialnost.NazvaniePolnoe, specialnost.Code,
                                                       (int)specialnost["IdSpecialnost", DataRowVersion.Original], (string)specialnost["Nazvanie", DataRowVersion.Original], (string)specialnost["NazvaniePolnoe", DataRowVersion.Original], (string)specialnost["Code", DataRowVersion.Original]);
                        dataread = true;
                    }
                    if (DataRowState.Deleted == specialnost.RowState)
                    {
                        //=================== [ Каскадное удаление ] =================
                        int    idspecialnost       = (int)specialnost["IdSpecialnost", DataRowVersion.Original];
                        string specialnostnazvanie = (string)specialnost["Nazvanie", DataRowVersion.Original];
                        //Predmet
                        workload_of_teachersDataSetTableAdapters.PredmetTableAdapter          predmettableadapter          = new workload_of_teachersDataSetTableAdapters.PredmetTableAdapter();
                        workload_of_teachersDataSetTableAdapters.Predmet_CourseTableAdapter   predmet_coursetableadapter   = new workload_of_teachersDataSetTableAdapters.Predmet_CourseTableAdapter();
                        workload_of_teachersDataSetTableAdapters.Predmet_SemesterTableAdapter predmet_semestertableadapter = new workload_of_teachersDataSetTableAdapters.Predmet_SemesterTableAdapter();
                        predmettableadapter.FillByCascading(workload_of_teachersDataSet.Predmet, idspecialnost, -1);

                        foreach (workload_of_teachersDataSet.PredmetRow predmet in workload_of_teachersDataSet.Predmet)
                        {
                            workload_of_teachersDataSet workload_Of_TeachersDataSetTemp = new workload_of_teachersDataSet();
                            predmet_coursetableadapter.FillByIDPredmet(workload_Of_TeachersDataSetTemp.Predmet_Course, predmet.IdPredmet);
                            workload_of_teachersDataSet.Predmet_Course.Merge(workload_Of_TeachersDataSetTemp.Predmet_Course);
                        }
                        //Practice
                        workload_of_teachersDataSetTableAdapters.PracticeTableAdapter          practicetableadapter          = new workload_of_teachersDataSetTableAdapters.PracticeTableAdapter();
                        workload_of_teachersDataSetTableAdapters.Practice_SemesterTableAdapter practice_semestertableadapter = new workload_of_teachersDataSetTableAdapters.Practice_SemesterTableAdapter();
                        practicetableadapter.FillByCascading(workload_of_teachersDataSet.Practice, idspecialnost, -1, -1, -1);

                        //Gryppa
                        workload_of_teachersDataSetTableAdapters.GryppaTableAdapter gryppatableadapter = new workload_of_teachersDataSetTableAdapters.GryppaTableAdapter();
                        gryppatableadapter.FillByCascading(workload_of_teachersDataSet.Gryppa, idspecialnost, -1, -1, -1);

                        if (workload_of_teachersDataSet.Predmet.Count > 0 || workload_of_teachersDataSet.Practice.Count > 0 || workload_of_teachersDataSet.Gryppa.Count > 0)
                        {
                            workload_of_teachersDataSetTableAdapters.Load_PrepodTableAdapter load_prepodtableadapter = new workload_of_teachersDataSetTableAdapters.Load_PrepodTableAdapter();
                            foreach (workload_of_teachersDataSet.Predmet_CourseRow predmet_course in workload_of_teachersDataSet.Predmet_Course)
                            {
                                workload_of_teachersDataSet workload_Of_TeachersDataSetTemp = new workload_of_teachersDataSet();
                                load_prepodtableadapter.FillByCascading(workload_Of_TeachersDataSetTemp.Load_Prepod, -1, predmet_course.IdPredmet_Course, -1);
                                workload_of_teachersDataSet.Load_Prepod.Merge(workload_Of_TeachersDataSetTemp.Load_Prepod);
                            }
                            foreach (workload_of_teachersDataSet.PracticeRow practice in workload_of_teachersDataSet.Practice)
                            {
                                workload_of_teachersDataSet workload_Of_TeachersDataSetTemp = new workload_of_teachersDataSet();
                                load_prepodtableadapter.FillByCascading(workload_Of_TeachersDataSetTemp.Load_Prepod, -1, -1, practice.IdPractice);
                                workload_of_teachersDataSet.Load_Prepod.Merge(workload_Of_TeachersDataSetTemp.Load_Prepod);
                            }
                            foreach (workload_of_teachersDataSet.GryppaRow gryppa in workload_of_teachersDataSet.Gryppa)
                            {
                                workload_of_teachersDataSet workload_Of_TeachersDataSetTemp = new workload_of_teachersDataSet();
                                load_prepodtableadapter.FillByCascading(workload_Of_TeachersDataSetTemp.Load_Prepod, gryppa.IdGryppa, -1, -1);
                                workload_of_teachersDataSet.Load_Prepod.Merge(workload_Of_TeachersDataSetTemp.Load_Prepod);
                            }
                            FormDialog form = new FormDialog("Каскадное удаление специальности", String.Format("Удаление специальности {0} приведёт к удалению {1} предметов(а), {2} практик(и) и {3} групп(ы) принадлежащей этой специальности. Также будут удалены {4} педагогических(ая) нагрузок(а) преподавателей(я).",
                                                                                                               specialnostnazvanie, workload_of_teachersDataSet.Predmet.Count, workload_of_teachersDataSet.Practice.Count, workload_of_teachersDataSet.Gryppa.Count, workload_of_teachersDataSet.Load_Prepod.Count), 5);
                            if (form.ShowDialog() == DialogResult.OK)
                            {
                                //Load_Prepod Delete
                                foreach (workload_of_teachersDataSet.Load_PrepodRow load_prepod in workload_of_teachersDataSet.Load_Prepod)
                                {
                                    load_prepodtableadapter.DeleteQuery(load_prepod.IdLoad_Prepod);
                                }
                                //Predmet Delete
                                foreach (workload_of_teachersDataSet.PredmetRow predmet in workload_of_teachersDataSet.Predmet)
                                {
                                    predmet_semestertableadapter.DeleteQueryPredmet(predmet.IdPredmet);
                                    predmet_coursetableadapter.DeleteQueryPredmet(predmet.IdPredmet);
                                    predmettableadapter.DeleteQuery(predmet.IdPredmet);
                                }
                                //Practice Delete
                                foreach (workload_of_teachersDataSet.PracticeRow practice in workload_of_teachersDataSet.Practice)
                                {
                                    practice_semestertableadapter.DeleteQueryPractice(practice.IdPractice);
                                    practicetableadapter.DeleteQuery(practice.IdPractice);
                                }
                                //Gryppa Delete
                                foreach (workload_of_teachersDataSet.GryppaRow gryppa in workload_of_teachersDataSet.Gryppa)
                                {
                                    gryppatableadapter.DeleteQuery(gryppa.IdGryppa);
                                }
                                specialnostTableAdapter.Delete((int)specialnost["IdSpecialnost", DataRowVersion.Original], (string)specialnost["Nazvanie", DataRowVersion.Original], (string)specialnost["NazvaniePolnoe", DataRowVersion.Original], (string)specialnost["Code", DataRowVersion.Original]);
                                dataread = true;
                            }
                        }
                        else
                        {
                            specialnostTableAdapter.Delete((int)specialnost["IdSpecialnost", DataRowVersion.Original], (string)specialnost["Nazvanie", DataRowVersion.Original], (string)specialnost["NazvaniePolnoe", DataRowVersion.Original], (string)specialnost["Code", DataRowVersion.Original]);
                            dataread = true;
                        }
                    }
                }
                if (dataread == true)
                {
                    this.DialogResult = DialogResult.OK;                  //Есть изменения
                }
                else
                {
                    this.DialogResult = DialogResult.Ignore; //Нету изменений
                }
                this.Close();
                //specialnostTableAdapter.Update(this.workload_of_teachersDataSet.Specialnost);
            }
            catch (Exception error)
            {
                MessageBox.Show("Сообщение об ошибке: " + error.Message + "\nПроверьте корректность вводимых данных, а также наличие соединения с базой данных. Если ошибка продолжает появляться обратитесь к системному администратору или к разработчику данной программы.", "Ошибка при сохранении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #34
0
        /// <summary>
        ///接收删除指令返回值
        /// </summary>
        /// <param name="state"></param>
        private void DEC(object state)
        {
            Dictionary <string, string> msg = (Dictionary <string, string>)state;

            if (msg["ReturnCode"] == "000") //序列号出错,重新发送报文
            {
                TaskDal   dal = new TaskDal();
                DataTable dt  = dal.CraneTaskIn(string.Format("DETAIL.CRANE_NO='{0}' AND ASSIGNMENT_ID='{1}'", msg["CraneNo"], msg["AssignmenID"]));
                DataRow   dr  = null;
                if (dt.Rows.Count > 0)
                {
                    dr = dt.Rows[0];
                }
                if (dr != null)
                {
                    #region 错误处理

                    if (dr["ERR_CODE"].ToString() == "111") //入库,货位有货,重新分配货位
                    {
                        CellDal cdal = new CellDal();
                        cdal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "货位有货,系统无记录");

                        string[]        strValue = dal.AssignNewCell(string.Format("TASK_ID='{0}'", dr["TASK_ID"].ToString()), dr["CRANE_NO"].ToString()); //货位申请
                        ProductStateDal StateDal = new ProductStateDal();
                        StateDal.UpdateProductCellCode(strValue[0], strValue[1]);                                                                          //更新Product_State 货位

                        SysStationDal sysdal    = new SysStationDal();
                        DataTable     dtstation = sysdal.GetSationInfo(strValue[1], dr["TASK_TYPE"].ToString(), dr["ITEM_NO"].ToString());
                        dal.UpdateTaskDetailCrane(dtstation.Rows[0]["STATION_NO"].ToString(), strValue[1], "1", dtstation.Rows[0]["CRANE_NO"].ToString(), string.Format("TASK_ID='{0}' AND ITEM_NO={1}", strValue[0], dr["ITEM_NO"].ToString()));//更新调度堆垛机的其实位置及目标地址。

                        dr.BeginEdit();
                        dr["CELLSTATION"] = "30" + strValue[1] + "01";
                        dr.EndEdit();
                        SendTelegramARQ(dr, false);
                        //if (dtCrane != null)
                        //{
                        //    DataRow[] drs = dtCrane.Select(string.Format("ASSIGNMENT_ID='{0}'", msg["AssignmenID"]));
                        //    if (drs.Length > 0)
                        //        dtCrane.Rows.Remove(drs[0]);
                        //}
                    }
                    else if (dr["ERR_CODE"].ToString() == "113")//出库,货位无货,
                    {
                        string    ErrMsg = "";
                        DataRow[] drMsgs = dtErrMesage.Select(string.Format("CODE='{0}'", dr["ERR_CODE"].ToString()));
                        if (drMsgs.Length > 0)
                        {
                            ErrMsg = drMsgs[0]["DESCRIPTION"].ToString();
                        }

                        string   strBillNo  = "";
                        string[] strMessage = new string[3];
                        strMessage[0] = "8";
                        strMessage[1] = dr["TASK_ID"].ToString();
                        strMessage[2] = "错误代码:" + dr["ERR_CODE"] + ",错误内容:" + ErrMsg;

                        DataTable dtProductInfo = dal.GetProductInfoByTaskID(dr["TASK_ID"].ToString());

                        while ((strBillNo = FormDialog.ShowDialog(strMessage, dtProductInfo)) != "")
                        {
                            BillDal bdal         = new BillDal();
                            string  strNewBillNo = strBillNo;

                            string strOutTaskID = bdal.CreateCancelBillOutTask(dr["TASK_ID"].ToString(), dr["BILL_NO"].ToString(), strNewBillNo);

                            DataTable dtOutTask = dal.CraneTaskOut(string.Format("TASK_ID='{0}'", strOutTaskID));

                            WriteToProcess("CraneProcess", "CraneInRequest", dtOutTask);
                            CellDal cdal = new CellDal();
                            cdal.UpdateCellErrFlag(dr["CELL_CODE"].ToString(), "货位无货,系统有记录");
                            break;
                        }
                    }
                }

                #endregion
            }
        }
Exemple #35
0
        private void btAddOrders_Click(object sender, EventArgs e)
        {
            int Ref;

            this.ordersBindingSource.EndEdit();

            MDataSet.OrdersRow ordrow =(this.ordersBindingSource.Current as DataRowView).Row as MDataSet.OrdersRow;

            if (ordrow != null) Ref = ordrow.TradePupletRef;
            else Ref = 1;


            
            this.btSave_Click(sender, e);



            this.grid.EmbeddedNavigator.Buttons.Append.DoClick();



            MDataSet.OrdersRow row = (this.ordersBindingSource.Current as DataRowView).Row as MDataSet.OrdersRow;
                               
            row.TradePupletRef = Ref;
            row.Reserved = 0;

            FormDialog formDialog = new FormDialog();
            formDialog.Text = "Добавить новый заказ ";
            formDialog.AcceptButton = null;

            OrderAdd orderAdd = new OrderAdd(row, this.ParentForm as MainForm);
            formDialog.panel.Controls.Add(orderAdd);

            if (formDialog.ShowDialog(this) == DialogResult.OK)
            {
                this.grid.EmbeddedNavigator.Buttons.EndEdit.DoClick();

                this.ordersBindingSource.EndEdit();
                
                this.btSave_Click(sender, e);
            }
            else
            {
                this.ordersBindingSource.CancelEdit();
                this.mDataSet.Orders.RejectChanges();
            }

            this.grid.Refresh();

        }
Exemple #36
0
        protected override void StateChanged(StateItem stateItem, IProcessDispatcher dispatcher)
        {
            object obj = ObjectUtil.GetObject(stateItem.State);

            if (obj == null)
            {
                return;
            }

            switch (stateItem.ItemName)
            {
            case "ReadFinished":
                try
                {
                    object o          = ObjectUtil.GetObject(stateItem.State);
                    string TaskFinish = o.ToString();
                    if (TaskFinish.Equals("True") || TaskFinish.Equals("1"))
                    {
                        string BarCode = Util.ConvertStringChar.BytesToString(ObjectUtil.GetObjects(Context.ProcessDispatcher.WriteToService(stateItem.Name, "BarCode")));

                        if (BarCode.Length <= 0 || BarCode == "?")
                        {
                            return;
                        }
                        bool blnInnver     = false;
                        bool blnHasOutTask = false;
                        int  Count         = bll.GetRowCount("WCS_TASK", string.Format("TaskType='11' and State in (0,3) and PalletCode!='{0}'", BarCode));
                        if (Count > 0)
                        {
                            WriteToService(stateItem.Name, "WriteFinished", 2);
                            Logger.Error("还有其他入库任务未完成,不能入库!");
                            return;
                        }
                        Count = bll.GetRowCount("WCS_TASK", string.Format("TaskType='11' and State in (0,3) and PalletCode='{0}'", BarCode));
                        if (Count == 0)
                        {
                            Count = bll.GetRowCount("WCS_TASK", "TaskType='12' and State=0");
                            if (Count > 0)
                            {
                                blnHasOutTask = true;
                            }
                            else
                            {
                                if (bll.GetRowCount("WCS_TASK", string.Format("TaskType='14' and State<7 and PalletCode='{0}'", BarCode)) > 0)
                                {
                                    blnInnver = true;
                                }
                            }
                        }
                        if (blnHasOutTask)
                        {
                            WriteToService(stateItem.Name, "WriteFinished", 2);
                            Logger.Error("堆垛机正在执行出库任务,不能入库!");
                            return;
                        }


                        //判断货位表中是否含有该条码的货位.
                        int i = bll.GetRowCount("CMD_CELL", string.Format("CellName='{0}' and IsTurnover=0", BarCode));
                        if (i == 0 && !blnInnver)
                        {
                            WriteToService(stateItem.Name, "WriteFinished", 4);
                            Logger.Error("条码不正确,不存在货位名称为 " + BarCode + " 的货位!");
                            return;
                        }
                        if (i > 0)
                        {
                            //判断该货位是否含有货,托盘条码是否重复
                            int k = bll.GetRowCount("CMD_CELL", string.Format("CellName='{0}' and PalletCode='{1}' and InDate is not Null ", BarCode, BarCode));
                            if (k == 1 && !blnInnver)
                            {
                                WriteToService(stateItem.Name, "WriteFinished", 3);
                                Logger.Error("条码重复,货位名称为 " + BarCode + " 的货位已经入库!");
                                return;
                            }
                        }
                        bll.ExecNonQuery("WCS.SpCreateInTaskByPallet", new DataParameter[] { new DataParameter("@PalletCode", BarCode) });
                        string strValue = "";
                        //入库时输入冲程数
                        DataTable dtTask = bll.FillDataTable("WCS.SelectTask", new DataParameter[] { new DataParameter("{0}", string.Format("WCS_Task.TaskType='11' and WCS_Task.State in (0,3) and WCS_Task.PalletCode='{0}'", BarCode)) });
                        if (dtTask.Rows.Count > 0)
                        {
                            string[] str = new string[3];
                            str[0] = "1";
                            while ((strValue = FormDialog.ShowDialog(str, dtTask)) != "")
                            {
                                break;
                            }
                        }

                        WriteToService(stateItem.Name, "WriteFinished", 1);
                        Logger.Info("托盘条码为 " + BarCode + " 开始入库!");
                    }
                }
                catch (Exception ex1)
                {
                    Logger.Info("CarProcess中ReadFinished出错:" + ex1.Message);
                }
                break;

            case "AlarmCode":
                object o1 = ObjectUtil.GetObject(stateItem.State);
                if (o1.ToString() != "0")
                {
                    Logger.Error(dicCarErr[int.Parse(o1.ToString())]);
                }
                break;

            default:
                break;
            }
        }
        private void buttonEneter_Click(object sender, EventArgs e)
        {
            try
            {
                bool dataread = false;
                foreach (workload_of_teachersDataSet.VidPracticeRow vidpractice in workload_of_teachersDataSet.VidPractice)
                {
                    if (DataRowState.Added == vidpractice.RowState)
                    {
                        vidPracticeTableAdapter.Insert(vidpractice.Nazvanie, vidpractice.NazvaniePolnoe, vidpractice.Type);
                        dataread = true;
                    }
                    if (DataRowState.Modified == vidpractice.RowState)
                    {
                        vidPracticeTableAdapter.Update(vidpractice.Nazvanie, vidpractice.NazvaniePolnoe, vidpractice.Type,
                                                       (int)vidpractice["IdVidPractice", DataRowVersion.Original], (string)vidpractice["Nazvanie", DataRowVersion.Original], (string)vidpractice["NazvaniePolnoe", DataRowVersion.Original], (bool)vidpractice["Type", DataRowVersion.Original]);
                        dataread = true;
                    }
                    if (DataRowState.Deleted == vidpractice.RowState)
                    {
                        //=================== [ Каскадное удаление ] =================
                        int    idvidpractice       = (int)vidpractice["IdVidPractice", DataRowVersion.Original];
                        string vidpracticenazvanie = (string)vidpractice["Nazvanie", DataRowVersion.Original];

                        //Practice
                        workload_of_teachersDataSetTableAdapters.PracticeTableAdapter          practicetableadapter          = new workload_of_teachersDataSetTableAdapters.PracticeTableAdapter();
                        workload_of_teachersDataSetTableAdapters.Practice_SemesterTableAdapter practice_semestertableadapter = new workload_of_teachersDataSetTableAdapters.Practice_SemesterTableAdapter();
                        practicetableadapter.FillByCascading(workload_of_teachersDataSet.Practice, -1, -1, -1, idvidpractice);

                        if (workload_of_teachersDataSet.Practice.Count > 0)
                        {
                            workload_of_teachersDataSetTableAdapters.Load_PrepodTableAdapter load_prepodtableadapter = new workload_of_teachersDataSetTableAdapters.Load_PrepodTableAdapter();
                            foreach (workload_of_teachersDataSet.PracticeRow practice in workload_of_teachersDataSet.Practice)
                            {
                                workload_of_teachersDataSet workload_Of_TeachersDataSetTemp = new workload_of_teachersDataSet();
                                load_prepodtableadapter.FillByCascading(workload_Of_TeachersDataSetTemp.Load_Prepod, -1, -1, practice.IdPractice);
                                workload_of_teachersDataSet.Load_Prepod.Merge(workload_Of_TeachersDataSetTemp.Load_Prepod);
                            }
                            FormDialog form = new FormDialog("Каскадное удаление вида практики", String.Format("Удаление вида практики {0} приведёт к удалению {1} практик(и) принадлежащей этому виду практик. Также будут удалены {2} педагогических(ая) нагрузок(а) преподавателей(я).",
                                                                                                               vidpracticenazvanie, workload_of_teachersDataSet.Practice.Count, workload_of_teachersDataSet.Load_Prepod.Count), 5);
                            if (form.ShowDialog() == DialogResult.OK)
                            {
                                //Load_Prepod Delete
                                foreach (workload_of_teachersDataSet.Load_PrepodRow load_prepod in workload_of_teachersDataSet.Load_Prepod)
                                {
                                    load_prepodtableadapter.DeleteQuery(load_prepod.IdLoad_Prepod);
                                }
                                //Practice Delete
                                foreach (workload_of_teachersDataSet.PracticeRow practice in workload_of_teachersDataSet.Practice)
                                {
                                    practice_semestertableadapter.DeleteQueryPractice(practice.IdPractice);
                                    practicetableadapter.DeleteQuery(practice.IdPractice);
                                }
                                vidPracticeTableAdapter.Delete((int)vidpractice["IdVidPractice", DataRowVersion.Original], (string)vidpractice["Nazvanie", DataRowVersion.Original], (string)vidpractice["NazvaniePolnoe", DataRowVersion.Original], (bool)vidpractice["Type", DataRowVersion.Original]);
                                dataread = true;
                            }
                        }
                        else
                        {
                            vidPracticeTableAdapter.Delete((int)vidpractice["IdVidPractice", DataRowVersion.Original], (string)vidpractice["Nazvanie", DataRowVersion.Original], (string)vidpractice["NazvaniePolnoe", DataRowVersion.Original], (bool)vidpractice["Type", DataRowVersion.Original]);
                            dataread = true;
                        }
                    }
                }
                if (dataread == true)
                {
                    this.DialogResult = DialogResult.OK;                  //Есть изменения
                }
                else
                {
                    this.DialogResult = DialogResult.Ignore; //Нету изменений
                }
                this.Close();
                //vidPracticeTableAdapter.Update(this.workload_of_teachersDataSet.VidPractice);
            }
            catch (Exception error)
            {
                MessageBox.Show("Сообщение об ошибке: " + error.Message + "\nПроверьте корректность вводимых данных, а также наличие соединения с базой данных. Если ошибка продолжает появляться обратитесь к системному администратору или к разработчику данной программы.", "Ошибка при сохранении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #38
0
        private void btCloseByOrganization_Click(object sender, EventArgs e)
        {
            //***/



            this.invoiceMasterBindingSource.EndEdit();


            if (!this.Save()) return;

            if (_curentMasterRow.Sum == 0) return;

            foreach (DataRow detrow in this._curentMasterRow.GetInvoiceDetailRows())
            {
                if ((detrow as MDataSet.InvoiceDetailRow).PriceRetailNDS == 0)
                {
                    MessageBox.Show("Есть не установленные цены!!!");
                    return;
                }
            }

            SelectTradePutlet _selectTradePutlet = new SelectTradePutlet();


            _selectTradePutlet.organizationBindingSource.DataSource = this.mainDataset.Organization;

            _selectTradePutlet.organizationBindingSource.ResetBindings(false);


            _selectTradePutlet.lookUpEdit.Properties.DataSource = _selectTradePutlet.organizationBindingSource;


            FormDialog _formDialog = new FormDialog();
            _formDialog.panel.Controls.Add(_selectTradePutlet);

           try
            {  int _OrganizationRef ;

            if (_formDialog.ShowDialog(this) == DialogResult.OK)
            {
                if (Convert.ToInt32(_selectTradePutlet.lookUpEdit.EditValue) == 0)
                    return;

                _OrganizationRef = Convert.ToInt32(_selectTradePutlet.lookUpEdit.EditValue);

         





           
                (this.ParentForm as MainForm).invoiceMasterTableAdapter.InvoiceMasterMoveToOrg(_curentMasterRow.ID, _OrganizationRef);

                (this.ParentForm as MainForm).RefreshData(_curentMasterRow, false);
   }

            }
            catch
            { MessageBox.Show("Ошибка внутреннего перемещения!"); }

            finally
            {
                this.btClose.PerformClick();
            }









          


        }
Exemple #39
0
        private void btCloseByOrganization_Click(object sender, EventArgs e)
        {
            //***/



            this.invoiceMasterBindingSource.EndEdit();


            if (!this.Save())
            {
                return;
            }

            if (_curentMasterRow.Sum == 0)
            {
                return;
            }

            foreach (DataRow detrow in this._curentMasterRow.GetInvoiceDetailRows())
            {
                if ((detrow as MDataSet.InvoiceDetailRow).PriceRetailNDS == 0)
                {
                    MessageBox.Show("Есть не установленные цены!!!");
                    return;
                }
            }

            SelectTradePutlet _selectTradePutlet = new SelectTradePutlet();


            _selectTradePutlet.organizationBindingSource.DataSource = this.mainDataset.Organization;

            _selectTradePutlet.organizationBindingSource.ResetBindings(false);


            _selectTradePutlet.lookUpEdit.Properties.DataSource = _selectTradePutlet.organizationBindingSource;


            FormDialog _formDialog = new FormDialog();

            _formDialog.panel.Controls.Add(_selectTradePutlet);

            try
            { int _OrganizationRef;

              if (_formDialog.ShowDialog(this) == DialogResult.OK)
              {
                  if (Convert.ToInt32(_selectTradePutlet.lookUpEdit.EditValue) == 0)
                  {
                      return;
                  }

                  _OrganizationRef = Convert.ToInt32(_selectTradePutlet.lookUpEdit.EditValue);



                  (this.ParentForm as MainForm).invoiceMasterTableAdapter.InvoiceMasterMoveToOrg(_curentMasterRow.ID, _OrganizationRef);

                  (this.ParentForm as MainForm).RefreshData(_curentMasterRow, false);
              }
            }
            catch
            { MessageBox.Show("Ошибка внутреннего перемещения!"); }

            finally
            {
                this.btClose.PerformClick();
            }
        }
Exemple #40
0
        private void btSetExtr_Click(object sender, EventArgs e)
        {

            this.invoiceDetailBindingSource.EndEdit();
            this.invoiceMasterBindingSource.EndEdit();

      //      if (this._curentMasterRow.GetInvoiceDetailRows().Length == 0) return;

            FormDialog _FormDialog = new FormDialog();
            _FormDialog.Text = "Установить наценку ";

            _FormDialog.btCancel.Visible = false;

            NumericUpDown _num = new NumericUpDown ();
            Label _lab = new Label();
            _lab.Text = "Процент (%): ";
            _num.Value = 30;
            _num.Increment = 5;

            _FormDialog.panel.Controls.Add(_lab);
            _FormDialog.panel.Controls.Add(_num);
 
            _lab.Dock = DockStyle.Bottom;
            
            if (_FormDialog.ShowDialog(this.ParentForm) == DialogResult.OK)
            {
                try
                {
                    int ext = Convert.ToInt16(_num.Value); 

                    this.invoiceMasterTableAdapter.InvoiceMasterSetExtrById(ext,_curentMasterRow.ID);

                    (this.ParentForm as MainForm).RefreshData(_curentMasterRow,true);

                }
                catch (Exception err)

                {
                    MessageBox.Show(err.Message);
                }
            /*    foreach (DataRow _Row in _curentMasterRow.GetInvoiceDetailRows())
                {
                    MDataSet.InvoiceDetailRow _DetailRow = _Row as MDataSet.InvoiceDetailRow; 

                    _DetailRow.PriceRetailNDS = Decimal.Round(_DetailRow.PricePurchase * (1 + _num.Value / 100),2);
                
                }
            */
            }

        }