schangxiang@126.com
2024-11-21 60735779c303c2dd10feea45d7fd761103b225e0
CC/iWareCC_ASRS/FormCC.cs
@@ -1,31 +1,27 @@
using iWareCC.BLL;
using iWareCC.Common.Helper;
using iWareCC.Common.Helper;
using iWareCC.DeviceThreadFactory;
using iWareCC.Forms;
using iWareCC.RgvService;
using iWareCC.SrmService;
using iWareCC.StationService;
using iWareCC.ThreadService;
using iWareCC.WCF;
using iWareCommon;
using iWareCommon.Common.Globle;
using iWareCommon.Utils;
using iWareModel;
using iWareModel.Entity.AGV;
using iWareSql.DataAccess;
using iWareSql.DBModel;
using iWareSql.Orm;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.ServiceModel;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using XiGang.Core.Model;
using XiGang.Core.Model.ViewModels;
@@ -121,6 +117,9 @@
        public static RgvView rgvView;//Rgv实体类
        public static RgvService.RgvServiceClient rgvServiceClient = null;
        public static StationView stationView;//站点实体类
        public static StationServiceClient stationServiceClient = null;
        public FormCC()
        {
            InitializeComponent();
@@ -182,6 +181,9 @@
            tskGetRgv1Info = new Thread(GetRgvInfo);
            tskGetRgv1Info.Start();
            var tskGetStationInfo = new Thread(GetStationInfo);
            tskGetStationInfo.Start();
            //堆垛机UI赋值
            SetSrmUI();
@@ -197,39 +199,35 @@
            #region 服务线程启动
            //堆垛机任务服务线程启动
            var srmService = DeviceThreadServiceFactory.GetHandle(EDeviceType.堆垛机);
            srmService.StartService();
            //var srmService = DeviceThreadServiceFactory.GetHandle(EDeviceType.堆垛机);
            //  srmService.StartService();
            //RGV任务服务线程启动
            var rgvService = DeviceThreadServiceFactory.GetHandle(EDeviceType.RGV);
            rgvService.StartService();
            //var rgvService = DeviceThreadServiceFactory.GetHandle(EDeviceType.RGV);
            // rgvService.StartService();
            //处理【下发中】的出库计划任务
            new Thread(OutPlanTaskDecompose.HandlerIssuingTask).Start();
            // new Thread(OutPlanTaskDecompose.HandlerIssuingTask).Start();
            //任务分解线程-出库
            new Thread(MainTaskDecompose.HandlerMainTaskDecompose).Start();
            // new Thread(MainTaskDecompose.HandlerMainTaskDecompose).Start();
            //任务分解线程-组盘入库
            new Thread(MainTaskDecompose_ZPRK.HandlerMainTaskDecompose_ZPRK).Start();
            // new Thread(MainTaskDecompose_ZPRK.HandlerMainTaskDecompose_ZPRK).Start();
            //空托盘转运任务
            new Thread(EmptySalverTransferTask.Handler).Start();
            new Thread(DataProcess_RobotBuffer_FinishTaskForOutbound.Handler).Start();
            //自动组盘任务
            new Thread(AutoSalverMaterialBindTask.Handler).Start();
            new Thread(DataProcess_RobotBuffer_FinishTask.Handler).Start();
            //自动组盘下发任务
            new Thread(AutoIssueInStoreTask.Handler).Start();
            new Thread(DataProcess_BZ01.Handler).Start();
            //重新获取发动机信息
            new Thread(AutoUpdateEngineInfoTask.Handler).Start();
            new Thread(DataProcess_269.Handler).Start();
            //1014库位转运到1020线程
            new Thread(Place1014To1020Task.Handler).Start();
            new Thread(DataProcess_BZ39.Handler).Start();
            ////1009库位增加库存线程
            //new Thread(Place1009AddStoreTask.Handler).Start();
            new Thread(DeleteData).Start();
@@ -240,12 +238,12 @@
            //*/
            #endregion
            new Thread(GetAgvVehicles).Start();//AGV车辆信息
            // new Thread(GetAgvVehicles).Start();//AGV车辆信息
            new Thread(OutTaskRetryToMes.Handler).Start();
            // new Thread(OutTaskRetryToMes.Handler).Start();
            //暂时不启用虚拟出入库功能
            new Thread(VirtualTaskNoOutPlanTaskHandler.Handler).Start();
            // new Thread(VirtualTaskNoOutPlanTaskHandler.Handler).Start();
        }
        private void FormCC_Load(object sender, EventArgs e)
        {
@@ -344,23 +342,23 @@
                    this.lbl_Alert_HandlerIssuingTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_HandlerIssuingTask;
                    this.lbl_Alert_VirtualTaskNoOutPlanTaskHandler.Text = showNowTime + SystemWarningMsg._lbl_Alert_VirtualTaskNoOutPlanTaskHandler;
                    this.lbl_Alert_DataProcess_RobotBuffer_FinishTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask;
                    this.lbl_MainTaskDecompose.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose;
                    this.lbl_MainTaskDecompose_ZPRK.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose_ZPRK;
                    this.lbl_Alert_LineInScan.Text = showNowTime + SystemWarningMsg._lbl_Alert_LineInScan;
                    this.lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound.Text = showNowTime + SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound;
                    this.lbl_Alert_DeleteData.Text = showNowTime + SystemWarningMsg._lbl_Alert_DeleteData;
                    this.lbl_Alert_EmptySalverTransfer.Text = showNowTime + SystemWarningMsg._lbl_Alert_EmptySalverTransfer;
                    this.lbl_alert_AutoSalverMaterialBindTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoSalverMaterialBindTask;
                    this.lbl_alert_DataProcess_BZ39.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_BZ39;
                    this.lbl_alert_AutoIssueInStoreTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoIssueInStoreTask;
                    this.lbl_alert_DataProcess_BZ01.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_BZ01;
                    this.lbl_alert_AutoUpdateEngineInfoTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask;
                    this.lbl_alert_DataProcess_269.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_269;
                    this.lbl_Alert_Place1014ClearStoreTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_Place1014To1020TaskTask;
@@ -727,7 +725,7 @@
                        {
                            for (int i = 0; i < waringList.Count; i++)
                            {
                                DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService,
                                DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.StationThreadService,
                                    waringList[i].Codek__BackingField, waringList[i].Addressk__BackingField, waringList[i].Contextk__BackingField);//新增报警
                                warningAddressList.Add(waringList[i].Addressk__BackingField);
                            }
@@ -737,12 +735,12 @@
                    {
                        tb_Rgv_Alter.Text = "";
                    }
                    DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, warningAddressList);//自动关闭报警
                    DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.StationThreadService, warningAddressList);//自动关闭报警
                }
                catch (Exception ex)
                {
                    rgvView = null;
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.RgvThreadService, "获取RGV信息出现异常:" + ex.Message, ex);
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取RGV信息出现异常:" + ex.Message, ex);
                    continue;
                }
            }
@@ -801,9 +799,163 @@
                };
                realTimeList.Add(obj);
            }
            DeviceRgvRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.RgvThreadService);
            DeviceRgvRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.StationThreadService);
        }
        #endregion
        #region 站点线程和UI处理
        /// <summary>
        /// 设置站点的UI显示
        /// </summary>
        /// <param name="obj"></param>
        private void SetStationLable(object obj)
        {
            while (true)
            {
                Thread.Sleep(cycleDelay_Device);
                try
                {
                    //lbRgv_Y.Text = "当前行走位置: " + rgv.R_RgvPosition;
                    //lbRgv_X.Text = "当前区域位置: " + rgv.R_RgvPosition;
                    //ERgvState _ERgvState = (ERgvState)Enum.Parse(typeof(ERgvState), rgv.R_State.ToString());
                    //lbRgvWorkState.Text = "工作状态: " + _ERgvState.ToString();
                    //lbRgvTaskId.Text = "任务号: " + rgv.R_TaskNo;
                    //lbRgvIsAuto.Text = "工作模式: " + (rgv.ModeName);
                    //lbRgvAlert.Text = rgv.R_AlarmCode.ToString();
                    //if (rgv.R_Alarm == false)
                    //{
                    //    //检测是否有心跳
                    //    using (var rgvService = new RgvService.RgvServiceClient())
                    //    {
                    //        //检测是否有心跳
                    //        var isRgvHandShare = RgvBLL.IsRgvHandShare(rgvService);
                    //        if (!isRgvHandShare)
                    //        {
                    //            lbRgvAlert.Text = "RGV没有心跳";
                    //        }
                    //    }
                    //}
                    //else
                    //{
                    //    lbRgvAlert.Text = rgv.R_AlarmCode.ToString();
                    //}
                    //// ERgvEvent _ERgvEvent = (ERgvEvent)Enum.Parse(typeof(ERgvEvent), rgv.r_ev.ToString());
                    ////lbRgvEvent.Text = "事  件:" + _ERgvEvent.ToString();
                    //lbRgvTaskFinish.Text = "任务完成:" + rgv.R_TaskFinish;
                }
                catch (Exception)
                {
                    continue;
                }
            }
        }
        /// <summary>
        /// 获取Station信息
        /// </summary>
        /// <param name="obj"></param>
        private void GetStationInfo(object obj)
        {
            while (true)
            {
                Thread.Sleep(1000);//1秒钟读取一次
                try
                {
                    if (stationServiceClient == null)
                    {
                        continue;
                    }
                    stationView = stationServiceClient.GetStationInfo((int)EDevice.Station);
                    _CommmonShowAgvStation();
                    ////显示RGV任务完成和完成确认信号
                    //this.lbl_R_RGV_Finish.Text = "RGV任务完成:" + rgvView.R_RGV_Finish;
                    //this.lbl_W_RGV_FinishACK.Text = "RGV任务完成确认:" + rgvView.W_RGV_FinishACK;
                    //this.lbl_RgvCoordinate.Text = "RGV实时坐标:" + rgvView.R_RGV_Coordinate;
                    /*
                    //解析RGV对象
                    foreach (var item in rgvView.R_RgvForReadCommList)
                    {
                        var control = ControlHelper.GetControlInstance(this.tPTransAsrs, "btn_" + item.StationCode);
                        if (item.R_AlarmCode > 0)
                        {//有报警
                            if (control != null)
                            {
                                var btn = control as Button;
                                btn.BackColor = Color.Red;
                            }
                        }
                        else
                        {
                            if (control != null)
                            {
                                var btn = control as Button;
                                if (item.StationCode == ((int)EDevice.RGV1040).ToString())
                                {
                                    btn.BackColor = Color.Gold;
                                }
                                else if (item.StationCode == ((int)EDevice.拆盘机1020).ToString())
                                {
                                    btn.BackColor = Color.DodgerBlue;
                                }
                                else if (item.StationCode == ((int)EDevice.提升机1030).ToString())
                                {
                                    btn.BackColor = Color.SteelBlue;
                                }
                                else
                                {
                                    btn.BackColor = Color.SeaGreen;
                                }
                            }
                        }
                    }
                    //显示RGV报警信息
                    List<String> warningAddressList = new List<string>();
                    if (rgvView.R_Rgv_WarningDBList != null && rgvView.R_Rgv_WarningDBList.Length > 0)
                    {
                        tb_Rgv_Alter.Text = String.Join(",", rgvView.R_Rgv_WarningDBList.Select(x => x.Contextk__BackingField).ToArray());
                        //保存报警
                        var waringList = rgvView.R_Rgv_WarningDBList.ToList();
                        if (waringList != null && waringList.Count > 0)
                        {
                            for (int i = 0; i < waringList.Count; i++)
                            {
                                DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService,
                                    waringList[i].Codek__BackingField, waringList[i].Addressk__BackingField, waringList[i].Contextk__BackingField);//新增报警
                                warningAddressList.Add(waringList[i].Addressk__BackingField);
                            }
                        }
                    }
                    else
                    {
                        tb_Rgv_Alter.Text = "";
                    }
                    DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, warningAddressList);//自动关闭报警
                    //*/
                }
                catch (Exception ex)
                {
                    rgvView = null;
                    Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取站点信息出现异常:" + ex.Message, ex);
                    continue;
                }
            }
        }
        #endregion
@@ -1422,13 +1574,13 @@
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_HandlerIssuingTask, ckHandlerIssuingTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_VirtualTaskNoOutPlanTaskHandler, ck_VirtualTaskNoOutPlanTaskHandler);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask, ck_DataProcess_RobotBuffer_FinishTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose, ckMainTaskDecompose);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose_ZPRK, ckMainTaskDecompose_ZPRK);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_LineInScan, checkBox_LineInScan);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound, checkBox_DataProcess_RobotBuffer_FinishTaskForOutbound);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DeleteData, ckDeleteData);
@@ -1437,11 +1589,11 @@
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_EmptySalverTransfer, ckEmptySalverTransfer);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoSalverMaterialBindTask, ck_AutoSalverMaterialBindTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_BZ39, ck_DataProcess_BZ39);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoIssueInStoreTask, ck_AutoIssueInStoreTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_BZ01, ck_AutoIssueInStoreTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoUpdateEngineInfoTask, ck_AutoUpdateEngineInfoTask);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_269, ck_DataProcess_269);
            DoCommonCheckedChanged(ref SystemValue.isAllowRuning_Place1014To1020Task, ckPlace1014ClearStoreTask);