Пример #1
0
        private void TaskList_Load(object sender, EventArgs e)
        {
            DataGridViewTranslation.LoadMainColHeader(dgviewnone);
            DataGridViewTranslation.LoadDetailColHeader(dgviewnonedetail);

            dgviewnonedetail.DataSource = null;


            SortingLineTaskList sortingLineTaskList1 = SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("3", true, AppUtil._SortingLineId, "desc"));

            dgviewnone.DataSource = sortingLineTaskList1;
        }
Пример #2
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            SearchArgs searchArgs = new SearchArgs();

            searchArgs.OrderDate     = dateTimeInput1.Value.ToString("yyyy-MM-dd");
            searchArgs.Batch         = cobbatch.SelectedValue as string;
            searchArgs.LineCode      = cobSortingLine.SelectedValue as string;
            searchArgs.Customer      = txtCustomer.Text.Trim();
            searchArgs.OutPort       = comboBoxEx1.SelectedValue.ToString();
            m_nonSortingLineTaskList = SortingLineTaskList.GetSortingLineTaskHistoryList(searchArgs);
            dgviewnone.DataSource    = m_nonSortingLineTaskList;
            footSumLabel1.Sumdata();
        }
Пример #3
0
 private void btnDownload_Click(object sender, EventArgs e)
 {
     if (FJMainForm.Instance.cSortingTask.taskStatus != TaskStatus.Stop)
     {
         MessageBox.Show("下达任务未停止无法下载新的任务!");
         return;
     }
     btnDownload.Enabled = false;
     btnExport.Enabled   = false;
     thread = new Thread(new ParameterizedThreadStart(DownloadData.Start));
     if (thread != null && IsSelectSortingLine())
     {
         if (SortingLineTaskList.IsSortingFinish())
         {
             StartDownloads();
         }
         else
         {
             if (SortingLineTaskList.IsSortingStart())
             {
                 if (MessageBox.Show("分拣已开始,重新下载新清除数据是否继续?", "警告", MessageBoxButtons.YesNo) == DialogResult.Yes)
                 {
                     StartDownloads();
                 }
             }
             else
             {
                 if (MessageBox.Show("当前订单还未开始分拣,重新下载新清除数据是否继续?", "警告", MessageBoxButtons.YesNo) == DialogResult.Yes)
                 {
                     StartDownloads();
                 }
             }
         }
     }
     else
     {
         MessageBox.Show("任务条件未选择");
         btnDownload.Enabled = true;
         btnExport.Enabled   = true;
     }
 }
Пример #4
0
        public void LoadOrder()
        {
            if (chkisall.Checked)
            {
                dgviewnonedetail.DataSource = null;
                dgvIssueddetail.DataSource  = null;
                dgviewfindetail.DataSource  = null;

                dgviewnone.DataSource = m_nonSortingLineTaskList = SortingLineTaskList.GetNonSortingLineTaskList(true);

                dgviewfin.DataSource         =
                    m_finSortingLineTaskList =
                        SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("2", true, AppUtil._SortingLineId, "desc"));

                dgvIssued.DataSource            =
                    m_issuedSortingLineTaskList =
                        SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("1", true, AppUtil._SortingLineId, "desc"));
            }
            else
            {
                dgviewnonedetail.DataSource = null;
                dgvIssueddetail.DataSource  = null;
                dgviewfindetail.DataSource  = null;

                dgviewnone.DataSource = m_nonSortingLineTaskList = SortingLineTaskList.GetNonSortingLineTaskList(false);

                dgviewfin.DataSource         =
                    m_finSortingLineTaskList =
                        SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("2", false, AppUtil._SortingLineId, "desc"));

                dgvIssued.DataSource            =
                    m_issuedSortingLineTaskList =
                        SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("1", false, AppUtil._SortingLineId, "desc"));
            }
            footSumLabel1.Sumdata();
            footSumLabel2.Sumdata();
            footSumLabel3.Sumdata();
        }
Пример #5
0
        /// <summary>
        /// 分拣任务下达流程
        /// </summary>
        private void ScanTask()
        {
            SortingLineTask sortingLineTask = null;

            while (taskStatus == TaskStatus.Run)
            {
                try
                {
                    //是否有未完成的订单
                    if (!SortingLineTaskList.IsSortingFinish())
                    {
                        //判断标识是否可以下达任务,表示上一次任务是否已经完成
                        SortingTaskIssued sortingTaskIssued = SortingTaskIssued.GetSortingTaskIssued("0");
                        if (sortingTaskIssued.PLCFLAG == 0)
                        {
                            //PLC信息小车是否走到位,或者已扫描到分户盒
                            //分拣工可能先放分户盒,但程序必须判断上次任务是否完成
                            //if (operateOpcAndSoft.GetCubeReady())
                            //{
                            // if(operateOpcAndSoft.GetCubeIndexno > FJMainForm.Instance.CSortingMain.c_Cubes.Last().labindexno)
                            //    int a = operateOpcAndSoft.GetCubeReady() -
                            //            FJMainForm.Instance.CSortingMain.c_Cubes.Last().labindexno;
                            //}
                            if (operateOpcAndSoft.GetCubeReady())
                            {
                                SortingLineTaskQueue.GetInstance().Move();

                                //重新加载一次任务队列
                                SortingLineTaskQueue.GetInstance().LoadSortingLineTasks();

                                //获取最小排序号的订单
                                sortingLineTask = SortingLineTask.GetMinSortingLineTask();

                                //将最小订单放入队列中进行分拣
                                SortingLineTaskQueue.GetInstance().Enqueue(sortingLineTask);
                                SortingLineTaskQueue.GetInstance().CreateCubesModel();


                                //发送卷烟数量到数码管
                                ATOPTagSdk.instance.SetOrderNixielight(SortingLineTaskQueue.GetInstance().SortingLineTasks);

                                //通知前台界面显示数码管数量
                                if (OnUpdateCSortingMainNumEvent != null)
                                {
                                    OnUpdateCSortingMainNumEvent.Invoke(null,
                                                                        new UpdateCSortingMainNumEventArgs(ATOPTagSdk.Tags));
                                }


                                //如果不是用用来补足的空任务
                                if (sortingLineTask.INDEXNO > 0)
                                {
                                    //保存任务状态为已下达
                                    sortingLineTask.Status = 1;
                                    sortingLineTask.SaveSortingTaskProcess(sortingLineTask.ID);
                                }

                                //将下达任务标志位设置成已下达
                                sortingTaskIssued.PLCFLAG     = 1;
                                sortingTaskIssued.PLCTASKNO   = sortingLineTask.INDEXNO.ToString();
                                sortingTaskIssued.ORDERNUMBER = sortingLineTask.SumOrderNumber();
                                sortingTaskIssued.Save();

                                //写日志
                                monitorLog             = MonitorLog.NewMonitorLog();
                                monitorLog.LOGNAME     = "任务下达";
                                monitorLog.LOGINFO     = "  任务号:" + sortingLineTask.INDEXNO.ToString().PadRight(10);
                                monitorLog.LOGLOCATION = "数据库";
                                monitorLog.LOGTYPE     = 0;
                                monitorLog.Save();
                                this.BeginInvoke(new MethodInvoker(LoadOrder));
                                //FJMainForm.Instance.CSortingMain.UpdateLineboxCapacity();
                            }
                        }
                    }
                    else
                    {
                        //写日志
                        MonitorLog monitorLog = MonitorLog.NewMonitorLog();
                        monitorLog.LOGNAME     = "任务下达";
                        monitorLog.LOGINFO     = "分拣任务全部完成";
                        monitorLog.LOGLOCATION = "数据库";
                        monitorLog.LOGTYPE     = 0;
                        monitorLog.Save();

                        //发送分拣完成到上位机
                        //FJMainForm.Instance.SortingFinish();
                        SortingLineTaskQueue.GetInstance().CubesModel.Clear();
                        Array.Clear(SortingLineTaskQueue.GetInstance().SortingLineTasks, 0, SortingLineTaskQueue.GetInstance().QueueMaxCount);
                        SortingLineTaskQueue.GetInstance().InvokeOnUpdateCubeEvent();

                        SoundPlayer player = new SoundPlayer();
                        player.SoundLocation = Application.StartupPath + "\\Sound\\分拣结束.wav";
                        player.Load();
                        player.Play();

                        break;//跳出下达循环
                    }
                    Thread.Sleep(500);
                }
                catch (Exception e)
                {
                    //写日志
                    monitorLog = MonitorLog.NewMonitorLog();
                    if (sortingLineTask != null)
                    {
                        monitorLog.LOGNAME = "任务号" + sortingLineTask.INDEXNO + " 分拣任务下达异常";
                    }
                    else
                    {
                        monitorLog.LOGNAME = "任务号未知" + " 分拣任务下达异常";
                    }
                    monitorLog.LOGINFO     = e.Message;
                    monitorLog.LOGLOCATION = "数据库";
                    monitorLog.LOGTYPE     = 0;
                    monitorLog.Save();
                }
            }
        }
Пример #6
0
        private void SetFinDynamicBox()
        {
            try
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new Action(SetFinDynamicBox));
                }



                int indexno    = 0;
                int rowindexno = 0;

                //获取混合仓中已分拣完成的卷烟列表
                SortingLineTaskList sortingLineTaskList = SortingLineTaskList.GetFinSortingLineTaskList(new QueryCondition("2", true, AppUtility.AppUtil._SortingLineId, "desc"));


                //得到最新完成的流水号
                if (sortingLineTaskList.Count > 0)
                {
                    indexno = sortingLineTaskList[0].INDEXNO;
                }

                //重置列表
                foreach (DataGridViewRow row in dgvybDynamicBox.Rows)
                {
                    row.DefaultCellStyle.BackColor = Color.White;
                    row.Cells["outputnum"].Value   = "";
                }

                //将混仓显示列表中的已完成卷烟背景色显示为灰色
                for (int i = dgvybDynamicBox.Rows.Count - 1; i >= 0; i--)
                {
                    if (Convert.ToInt16(dgvybDynamicBox.Rows[i].Cells[0].Value) <= indexno)
                    {
                        dgvybDynamicBox.Rows[i].DefaultCellStyle.BackColor = Color.DarkGray;
                        //row.Cells["outputnum"].Value = "";
                    }
                    else
                    {
                        //控制滚动条的显示位置
                        if (dgvybDynamicBox.Rows[i].Index - 10 >= 0)
                        {
                            dgvybDynamicBox.FirstDisplayedScrollingRowIndex = dgvybDynamicBox.Rows[i].Index - 10;
                        }
                        else
                        {
                            dgvybDynamicBox.FirstDisplayedScrollingRowIndex = 0;
                        }
                        //获取表格中已分拣完成混仓烟位置
                        rowindexno = dgvybDynamicBox.Rows[i].Index;
                        break;
                    }
                }


                //将混仓显示列表中的已完成卷烟背景色显示为灰色
                //foreach (DataGridViewRow row in dgvybDynamicBox.Rows)
                //{
                //    if (Convert.ToInt16(row.Cells[0].Value) <= indexno)
                //    {
                //        row.DefaultCellStyle.BackColor = Color.DarkGray;
                //        //row.Cells["outputnum"].Value = "";
                //    }
                //    else
                //    {
                //        //控制滚动条的显示位置
                //        if (row.Index >= 6)
                //        {
                //            dgvybDynamicBox.FirstDisplayedScrollingRowIndex = row.Index - 6 ;
                //        }
                //        else
                //        {
                //            dgvybDynamicBox.FirstDisplayedScrollingRowIndex = row.Index - row.Index;
                //        }
                //        //获取表格中已分拣完成混仓烟位置
                //        rowindexno = row.Index;
                //        break;
                //    }
                //}

                //在皮带上的混仓卷烟数量
                sortingtaskarrive = SortingTaskArrive.GetSortingTaskArrive("0");
                int outputnum = Convert.ToInt32(sortingtaskarrive.Value);

                //数量大于0表示皮带上有混仓烟
                if (outputnum > 0)
                {
                    if (rowindexno - 1 > 0)
                    {
                        //对列表上的卷烟进行已分拣出的标记
                        for (int i = rowindexno; i > 0; i--)
                        {
                            if (outputnum > 0)
                            {
                                //当前行的数量小于皮带上的数量,在已打出显示当前数量
                                if (Convert.ToInt32(dgvybDynamicBox.Rows[i].Cells["InQty"].Value) <= outputnum)
                                {
                                    //将已打出的混仓烟标记为蓝色背景
                                    dgvybDynamicBox.Rows[i].DefaultCellStyle.BackColor = Color.Blue;
                                    dgvybDynamicBox.Rows[i].Cells["outputnum"].Value   = dgvybDynamicBox.Rows[i].Cells["InQty"].Value;
                                }
                                else
                                {
                                    //将已打出的混仓烟标记为蓝色背景
                                    dgvybDynamicBox.Rows[i].DefaultCellStyle.BackColor = Color.Blue;
                                    //当前行的数量大于皮带上的剩余数量,显示剩余数量
                                    dgvybDynamicBox.Rows[i].Cells["outputnum"].Value = outputnum;
                                    break;
                                }
                                //减去当前行的数量,得到剩余数量进行下一次循环
                                outputnum = outputnum - Convert.ToInt32(dgvybDynamicBox.Rows[i].Cells["InQty"].Value);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }