| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Data; |
| | | using System.Data.Entity.Core.Metadata.Edm; |
| | | using System.Diagnostics; |
| | | using System.Drawing; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Net; |
| | | using System.ServiceModel; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | using XiGang.Core.Model; |
| | | using XiGang.Core.Model.ViewModels; |
| | | using static WZ.Useful.Commons.NativeMethods; |
| | | |
| | | |
| | | namespace iWareCC |
| | | { |
| | | public partial class FormCC : Form |
| | | { |
| | | /// <summary> |
| | | /// 全局-269位置最新扫描的板件数据(格式 包号|Upi|时间点) |
| | | /// </summary> |
| | | public static string Globle_269_LastPackageUpi = ""; |
| | | |
| | | /// <summary> |
| | | /// 全局-配置报警信息列表 |
| | | /// </summary> |
| | | public static DeviceWarningOutput configDeviceWarningList = DeviceWarningHandler.GetConfigWarningList(); |
| | | |
| | | /// <summary> |
| | | /// 全局—是否可以运行执行出库模式 |
| | |
| | | startModelTipsThread.Start(); |
| | | |
| | | #region 获取设备数据 |
| | | ParameterizedThreadStart parStart1 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread1 = new Thread(parStart1); |
| | | object o1 = (int)EDevice.一号堆垛机; |
| | | thread1.Start(o1); |
| | | |
| | | ParameterizedThreadStart parStart2 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread2 = new Thread(parStart2); |
| | | object o2 = (int)EDevice.二号堆垛机; |
| | | thread2.Start(o2); |
| | | |
| | | ParameterizedThreadStart parStart3 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread3 = new Thread(parStart3); |
| | | object o3 = (int)EDevice.三号堆垛机; |
| | | thread3.Start(o3); |
| | | |
| | | ParameterizedThreadStart parStart4 = new ParameterizedThreadStart(GetSrmInfo); |
| | | Thread thread4 = new Thread(parStart4); |
| | | object o4 = (int)EDevice.四号堆垛机; |
| | | thread4.Start(o4); |
| | | |
| | | |
| | | |
| | | |
| | | var tskGetStationInfo = new Thread(GetStationInfo); |
| | | tskGetStationInfo.Start(); |
| | | |
| | | var _GetStationWarningInfo = new Thread(GetStationWarningInfo); |
| | | _GetStationWarningInfo.Start(); |
| | | |
| | | |
| | | tskSetSrmLable = new Thread(SrmRead_Label); |
| | |
| | | |
| | | |
| | | |
| | | new Thread(DataProcess_RobotBuffer_ModeChange.Handler).Start(); |
| | | //new Thread(DataProcess_RobotBuffer_ModeChange.Handler).Start(); |
| | | |
| | | new Thread(DataProcess_RobotBuffer_IssueOutboundTask.Handler).Start(); |
| | | |
| | | |
| | | new Thread(DataProcess_RobotBuffer_AutoQiTaoOutbound.Handler).Start(); |
| | | //new Thread(DataProcess_RobotBuffer_AutoQiTaoOutbound.Handler).Start(); |
| | | new Thread(DataProcess_RobotBuffer_PesonOutbound.Handler).Start(); |
| | | |
| | | new Thread(DataProcess_RobotBuffer_FinishTaskForOutbound.Handler).Start(); |
| | | |
| | |
| | | new Thread(PushPackageCodeToMes.Handler).Start(); |
| | | new Thread(PushPaperCutToMes.Handler).Start(); |
| | | |
| | | new Thread(DataProcess_ValidateQiTao.Handler).Start(); |
| | | //new Thread(DataProcess_ValidateQiTao.Handler).Start(); |
| | | |
| | | //*/ |
| | | #endregion |
| | |
| | | } |
| | | private void FormCC_Load(object sender, EventArgs e) |
| | | { |
| | | dateTimePicker_Start.Value = DateTime.Now; |
| | | dateTimePicker_End.Value = DateTime.Now; |
| | | |
| | | |
| | | |
| | | /* |
| | |
| | | |
| | | |
| | | #region 对外发布WCF形式数据访问服务 |
| | | try |
| | | Task.Run(() => |
| | | { |
| | | #region 对外发布WCF形式数据访问服务 |
| | | var lineServiceHost = new ServiceHost(typeof(CCWcfService)); |
| | | lineServiceHost.Open(); |
| | | lbl_WCFMsg.Text = "发布WCF成功," + lineServiceHost.BaseAddresses[0].AbsoluteUri; |
| | | lbl_WCFMsg.ForeColor = Color.Green; |
| | | #endregion |
| | | try |
| | | { |
| | | #region 对外发布WCF形式数据访问服务 |
| | | var lineServiceHost = new ServiceHost(typeof(CCWcfService)); |
| | | lineServiceHost.Open(); |
| | | lbl_WCFMsg.Text = "发布WCF成功," + lineServiceHost.BaseAddresses[0].AbsoluteUri; |
| | | lbl_WCFMsg.ForeColor = Color.Green; |
| | | #endregion |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "发布WCF失败", ex); |
| | | lbl_WCFMsg.Text = "发布WCF失败:" + ex.Message; |
| | | lbl_WCFMsg.ForeColor = Color.Red; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.CCWCFService, "发布WCF失败", ex); |
| | | lbl_WCFMsg.Text = "发布WCF失败:" + ex.Message; |
| | | lbl_WCFMsg.ForeColor = Color.Red; |
| | | } |
| | | }); |
| | | |
| | | #endregion |
| | | |
| | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取堆垛机的实时信息 |
| | | /// </summary> |
| | | private void GetSrmInfo(object int_device) |
| | | { |
| | | while (true) |
| | | { |
| | | EDevice device = (EDevice)Enum.Parse(typeof(EDevice), int_device.ToString()); |
| | | Thread.Sleep(cycleDelay_Device); |
| | | try |
| | | { |
| | | using (var opcClinet = new SrmService.SrmServiceClient()) |
| | | { |
| | | srmViewDict[(int)device] = opcClinet.GetSrmInfo((int)device); |
| | | CastToDevice_SrmRealTime(srmViewDict[(int)device]); |
| | | List<String> warningAddressList = new List<string>(); |
| | | if (srmViewDict[(int)device].R_WarningDBList != null && srmViewDict[(int)device].R_WarningDBList.Length > 0) |
| | | { |
| | | var waringList = srmViewDict[(int)device].R_WarningDBList.ToList(); |
| | | if (waringList != null && waringList.Count > 0) |
| | | { |
| | | for (int i = 0; i < waringList.Count; i++) |
| | | { |
| | | DeviceWarningHandler.SaveWarning(device, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, |
| | | waringList[i].Code, waringList[i].Address, waringList[i].Context);//新增报警 |
| | | warningAddressList.Add(waringList[i].Address); |
| | | } |
| | | } |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(device, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, warningAddressList);//自动关闭报警 |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask, "获取" + device.ToString() + "的实时信息异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 转换为SRM的实时状态 |
| | | /// </summary> |
| | | /// <param name="view"></param> |
| | | private void CastToDevice_SrmRealTime(SrmView view) |
| | | { |
| | | List<Device_SrmRealTime> realTimeList = new List<Device_SrmRealTime>(); |
| | | Device_SrmRealTime obj = new Device_SrmRealTime(); |
| | | EDevice device = (EDevice)Enum.Parse(typeof(EDevice), view.R_SrmNo.ToString()); |
| | | obj = new Device_SrmRealTime() |
| | | { |
| | | SrmCode = view.R_SrmNo.ToString(), |
| | | SrmName = device.ToString(), |
| | | Mode = view.R_Mode.ToString(), |
| | | ModeName = view.ModeName, |
| | | State = view.R_State.ToString(), |
| | | StateName = view.StateName, |
| | | |
| | | TaskID = view.R_TaskNo.ToString(), |
| | | LiftFull = view.R_LiftFull == 1, |
| | | PosX = view.R_PosX, |
| | | PosY = view.R_PosY, |
| | | PosZ = view.R_PosZ, |
| | | PosZName = EnumberHelper.GetEnumName<ESrmForkPosition>(view.R_PosZ).ToString(), |
| | | // XCoordinate=view.r_xc |
| | | |
| | | SrmToPlace = view.SrmToPlace, |
| | | SrmSourcePlace = view.SrmSourcePlace, |
| | | ZCoordinate = view.R_PosZmm.ToString(), |
| | | XCoordinate = view.R_PosXmm.ToString(), |
| | | YCoordinate = view.R_PosYmm.ToString() |
| | | |
| | | }; |
| | | realTimeList.Add(obj); |
| | | |
| | | DeviceSrmRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.DataProcess_BZ39_IssueInboundTask); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | stationView = stationServiceClient.GetStationInfo((int)EDevice.Station); |
| | | |
| | | |
| | | this.lbl_Mode_FJ.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_FJ); |
| | | this.lbl_XinTiao_FJ.Text = "心跳:" + stationView.R_HandShake_FJ; |
| | | this.lbl_Warning_FJ.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FJ); |
| | | |
| | | this.lbl_Mode_MB.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_MB); |
| | | this.lbl_XinTiao_MB.Text = "心跳:" + stationView.R_HandShake_MB; |
| | | this.lbl_Warning_MB.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_MB); |
| | | |
| | | this.lbl_Mode_HB.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_HB); |
| | | this.lbl_XinTiao_HB.Text = "心跳:" + stationView.R_HandShake_HB; |
| | | this.lbl_Warning_HB.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_HB); |
| | | |
| | | this.lbl_Mode_FX.Text = "设备模式:" + PlcHelper.GetModeName(stationView.R_Mode_FX); |
| | | this.lbl_XinTiao_FX.Text = "心跳:" + stationView.R_HandShake_FX; |
| | | this.lbl_Warning_FX.Text = "报警类型:" + PlcHelper.GetWarningTypeName(stationView.R_Warning_FX); |
| | | |
| | | ////显示RGV任务完成和完成确认信号 |
| | | //this.lbl_R_RGV_Finish.Text = "RGV任务完成:" + rgvView.R_RGV_Finish; |
| | | //this.lbl_W_RGV_FinishACK.Text = "RGV任务完成确认:" + rgvView.W_RGV_FinishACK; |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取Station 报警信息 |
| | | /// </summary> |
| | | /// <param name="obj"></param> |
| | | private async void GetStationWarningInfo(object obj) |
| | | { |
| | | while (true) |
| | | { |
| | | Thread.Sleep(3000);//1秒钟读取一次 |
| | | try |
| | | { |
| | | if (stationServiceClient == null) |
| | | { |
| | | continue; |
| | | } |
| | | |
| | | Stopwatch main = new Stopwatch(); |
| | | main.Start(); |
| | | |
| | | iWareCC.StationService.DeviceWarningInfo[] waringList = await stationServiceClient.GetWaringInfoListAsync((int)EDevice.Station, configDeviceWarningList.wmsConfigDeviceWarnings.ToArray()); |
| | | |
| | | main.Stop(); |
| | | var milliseconds = main.ElapsedMilliseconds; //-- 操作时间(毫秒) |
| | | |
| | | //显示报警信息 |
| | | List<String> warningCodeList = new List<string>(); |
| | | if (waringList != null && waringList.Length > 0) |
| | | { |
| | | for (int i = 0; i < waringList.Length; i++) |
| | | { |
| | | var findObj = configDeviceWarningList.wms_config_device_warning_list.Where(x => x.WarningCode == waringList[i].Codek__BackingField).FirstOrDefault(); |
| | | DeviceWarningHandler.SaveWarning(EDevice.Station, iWareCommon.Utils.LogType.StationThreadService, |
| | | findObj.WarningCode, findObj.DeviceAreaCode, findObj.WarningContent, findObj.DeviceWarningType);//新增报警 |
| | | warningCodeList.Add(findObj.WarningCode); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(EDevice.Station, iWareCommon.Utils.LogType.StationThreadService, warningCodeList);//自动关闭报警 |
| | | |
| | | //*/ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | rgvView = null; |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取站点信息出现异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | if (SystemValue.isAllowRuning_DeleteData && SystemValue.isStartedModel) |
| | | { |
| | | ClearDataHandler.Delete_Base_SysExceptionInfo(7); |
| | | ClearDataHandler.Delete_Task_RequestLog(7); |
| | | ClearDataHandler.Delete_Task_Part(10); |
| | | ClearDataHandler.Delete_Device_Warning(30); |
| | | ClearDataHandler.Delete_HttpRequestRecord(14); |
| | | ClearDataHandler.Delete_wms_record_print(7); |
| | | ClearDataHandler.Delete_mes_push_papercut(7); |
| | | ClearDataHandler.Delete_mes_push_packagecode(10); |
| | | ClearDataHandler.Delete_wms_rbline_task(10); |
| | | |
| | | ClearDataHandler.Delete_MES_BTJReceiveReq(30); |
| | | ClearDataHandler.Delete_MES_OnLineReq(30); |
| | | //ClearDataHandler.Delete_Device_Warning(30); |
| | | //ClearDataHandler.Delete_HttpRequestRecord(14); |
| | | |
| | | //ClearDataHandler.Delete_MES_BTJReceiveReq(30); |
| | | //ClearDataHandler.Delete_MES_OnLineReq(30); |
| | | |
| | | LogTextHelper.BatchDeleteLog(); |
| | | |
| | |
| | | |
| | | |
| | | |
| | | private void button5_Click(object sender, EventArgs e) |
| | | { |
| | | if (SystemValue.isStartedModel) |
| | | { |
| | | WZ.Useful.Commons.MessageUtil.ShowError("手动库位维护,需要将模式关闭!"); |
| | | return; |
| | | } |
| | | //手动库位维护 |
| | | SrmStockForm frm = new SrmStockForm(); |
| | | frm.ShowDialog(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | private void btn_TongJi_Click(object sender, EventArgs e) |
| | | { |
| | | //统计 |
| | | |
| | | int store_FDJ = 0;//现有发动机数 |
| | | int store_EmptySalver = 0;//空托盘数量 |
| | | int store_EmptySalver_TS = 0;//空托盘托数 |
| | | |
| | | int count_In_FDJ = 0;//查询某天入库了多少发动机 |
| | | int count_In_EmptySalver = 0;//查询某天入库了多少 空托盘 |
| | | int count_In_EmptySalver_TS = 0;//查询某天入库了多少 空托盘托数 |
| | | |
| | | int count_Out_FDJ = 0;//查询某天出库了多少发动机 |
| | | int count_Out_EmptySalver = 0;//查询某天出库了多少 空托盘 |
| | | int count_Out_EmptySalver_TS = 0;//查询某天出库了多少 空托盘托数 |
| | | |
| | | int count_ZY_EmptySalver = 0;//查询某天转运了多少 空托盘 |
| | | int count_ZY_EmptySalver_TS = 0;//查询某天转运了多少 空托盘托数 |
| | | |
| | | //某段时间的统计 |
| | | var str_start = this.dateTimePicker_Start.Value.ToString("yyyy-MM-dd" + " " + "00:00:00"); |
| | | var str_end = this.dateTimePicker_End.Value.ToString("yyyy-MM-dd" + " " + "23:59:59"); |
| | | var start = Convert.ToDateTime(str_start); |
| | | var end = Convert.ToDateTime(str_end); |
| | | |
| | | int allPlacesCount = 0; |
| | | using (DbModel edm = new DbModel()) |
| | | { |
| | | |
| | | var queryMaterialType_一般物料 = (int)MaterialTypeEnum.一般物料; |
| | | var queryMaterialType_托盘 = (int)MaterialTypeEnum.托盘; |
| | | var queryInOutFlag_In = (int)MainInOutFlagEnum.入库; |
| | | var queryInOutFlag_Out = (int)MainInOutFlagEnum.出库; |
| | | var queryInOutFlag_ZY = (int)MainInOutFlagEnum.转运; |
| | | |
| | | var allPlaces = edm.Base_Station.Where(x => x.IsSrmStation == true).ToList(); |
| | | allPlaces = StationHandler.FindCommonFilter(allPlaces); |
| | | allPlacesCount = allPlaces.Count; |
| | | |
| | | store_FDJ = edm.V_Store.Where(x => x.MaterialType == queryMaterialType_一般物料).Count(); |
| | | |
| | | |
| | | store_EmptySalver_TS = edm.V_Store.Where(x => x.MaterialType == queryMaterialType_托盘).Count(); |
| | | store_EmptySalver = store_EmptySalver_TS == 0 ? 0 : edm.V_Store.Where(x => x.MaterialType == queryMaterialType_托盘).Sum(x => (int)x.Qty); |
| | | |
| | | |
| | | |
| | | //查询某天入库了多少发动机 |
| | | var taskState = (int)MainTaskStatusEnum.已完成; |
| | | count_In_FDJ = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_一般物料 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count(); |
| | | |
| | | //查询某天入库了多少托盘 |
| | | count_In_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count(); |
| | | count_In_EmptySalver = count_In_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_In && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Sum(x => (int)x.Qty); |
| | | |
| | | //查询某天出库了多少发动机 |
| | | count_Out_FDJ = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_一般物料 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count(); |
| | | |
| | | //查询某天入库了多少托盘 |
| | | count_Out_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Count(); |
| | | count_Out_EmptySalver = count_Out_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_Out && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end)).Sum(x => (int)x.Qty); |
| | | |
| | | //查询某天转运了多少托盘(注意:只查询去1014位置的) |
| | | count_ZY_EmptySalver_TS = edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_ZY && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end) && x.RealToPlace == "1014").Count(); |
| | | count_ZY_EmptySalver = count_ZY_EmptySalver_TS == 0 ? 0 : edm.Task_Main.Where(x => x.MaterialType == queryMaterialType_托盘 && x.InOutFlag == queryInOutFlag_ZY && x.TaskState == taskState && (x.FinishTime >= start && x.FinishTime <= end) && x.RealToPlace == "1014").Sum(x => (int)x.Qty); |
| | | |
| | | } |
| | | |
| | | //显示 |
| | | //var aa = "\r\n"; |
| | | var str = ""; |
| | | str += "时间范围: " + str_start + "至" + str_end + " \r\n"; |
| | | str += "==================【库存】========================= \r\n"; |
| | | str += "现有发动机数: " + store_FDJ + " \r\n"; |
| | | str += "现有空托盘数: " + store_EmptySalver + " \r\n"; |
| | | str += "现有空托盘托数: " + store_EmptySalver_TS + " \r\n"; |
| | | str += "总库位" + allPlacesCount + ",有发动机或托盘库位" + (store_FDJ + store_EmptySalver_TS) + ",库存占比: " + CSharpHelper.ExecPercent((store_FDJ + store_EmptySalver_TS), allPlacesCount) + " \r\n"; |
| | | str += "\r\n"; |
| | | |
| | | str += "==================【入库】========================= \r\n"; |
| | | str += "入库发动机数: " + count_In_FDJ + " \r\n"; |
| | | str += "入库空托盘数: " + count_In_EmptySalver + " \r\n"; |
| | | str += "入库空托盘托数: " + count_In_EmptySalver_TS + " \r\n"; |
| | | str += "\r\n"; |
| | | |
| | | str += "==================【出库】========================= \r\n"; |
| | | str += "出库发动机数: " + count_Out_FDJ + " \r\n"; |
| | | str += "出库空托盘数: " + count_Out_EmptySalver + " \r\n"; |
| | | str += "出库空托盘托数: " + count_Out_EmptySalver_TS + " \r\n"; |
| | | str += "\r\n"; |
| | | |
| | | str += "==================【转运托盘】========================= \r\n"; |
| | | str += "转运空托盘数: " + count_ZY_EmptySalver + " \r\n"; |
| | | str += "转运空托盘托数: " + count_ZY_EmptySalver_TS + " \r\n"; |
| | | str += "\r\n"; |
| | | |
| | | this.tb_TongJi.Text = str; |
| | | } |
| | | |
| | | private void checkBox_NowDay_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | if (this.checkBox_NowDay.Checked) |
| | | { |
| | | dateTimePicker_Start.Value = DateTime.Now; |
| | | dateTimePicker_End.Value = DateTime.Now; |
| | | } |
| | | } |
| | | |
| | | private void rBOnlyIn_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | SetModelCheckBoxToSystemValue(); |
| | | } |
| | | |
| | | private void btnSMQZYZTG1_Click(object sender, EventArgs e) |
| | | { |
| | | DobtnSMQZYZTG(EDevice.一号堆垛机); |
| | | } |
| | | |
| | | private void DobtnSMQZYZTG(EDevice device) |
| | | { |
| | | MessageBoxButtons messButton = MessageBoxButtons.OKCancel; |
| | | DialogResult dr = MessageBox.Show("注意:入库口扫码强制验证通过功能,仅适用于扫码器没有扫到码,但是实际托盘码和堆垛机要执行的任务托盘码一致的情况!如果堆垛机要执行的任务跟实际托盘码不符,请不要点击该按钮,及时联系管理员过来处理。您确定要操作吗?", "确认", messButton); |
| | | if (dr == DialogResult.OK)//如果点击“确定”按钮 |
| | | { |
| | | var stationCode = MyExtendHelper.GetRgvStationCodeBySrm(device); |
| | | var srm = FormCC.srmViewDict[(int)device]; |
| | | //只有当堆垛机有任务执行时,并且是入库任务的时候才判断 |
| | | var realSrmSourcePlace = (int)device + "-" + srm.SrmSourcePlace; |
| | | if (srm.R_TaskNo > 0 && (srm.R_State == (int)ESrmState.取货中 || srm.R_State == (int)ESrmState.取货定位中) |
| | | && SysGloble.Dict_SpecialPlace_IN.ContainsKey(realSrmSourcePlace)) |
| | | { |
| | | var result = MyExtendHelper.WriteScanValidateACK(false, "入库口扫码强制验证通过", stationCode, srm.R_TaskNo, true, "", ""); |
| | | if (result) |
| | | { |
| | | MyExtendHelper.SetSrm_IN_SMQZYZTG(device, true); |
| | | MessageBox.Show("入库口扫码强制验证通过 成功!"); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("入库口扫码强制验证通过 失败!"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show(device.ToString() + "任务号不是大于0,或者 状态不是 '取货中'或'取货定位中',不允许操作"); |
| | | } |
| | | } |
| | | else//如果点击“取消”按钮 |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | private void button22_Click(object sender, EventArgs e) |
| | | { |
| | | var cargNo = this.tb_wlm.Text.Trim(); |
| | | var ret = WmsRequestHelper.test_getEngineInfo(cargNo); |
| | | |
| | | |
| | | //转换后 |
| | | MesRetModel2<MesRetProductModel> retModel = JsonConvert.DeserializeObject<MesRetModel2<MesRetProductModel>>(ret); |
| | | |
| | | this.tb_TongJi.Text = "MES返回:" + ret + "\r\n" + |
| | | "转换后:" + "\r\n" + |
| | | JsonConvert.SerializeObject(retModel) |
| | | ; |
| | | } |
| | | |
| | | private void button23_Click(object sender, EventArgs e) |
| | | { |
| | | var cargNo = this.tb_wlm.Text.Trim(); |
| | | var ret = WmsRequestHelper.test_btjReceive(cargNo); |
| | | |
| | | |
| | | //转换后 |
| | | MessageModel<string> retModel = JsonConvert.DeserializeObject<MessageModel<string>>(ret); |
| | | |
| | | this.tb_TongJi.Text = "WMS返回:" + ret + "\r\n" + |
| | | "转换后:" + "\r\n" + |
| | | JsonConvert.SerializeObject(retModel); |
| | | } |
| | | |
| | | private void lbl_Alert_Place1014ClearStoreTask_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | } |
| | | |
| | | private void button24_Click(object sender, EventArgs e) |
| | | { |
| | | //强制该包号出库 |
| | | var packageCode = this.tb_PackageCode.Text.Trim(); |
| | | ////强制该包号出库 |
| | | //var packageCode = this.tb_PackageCode.Text.Trim(); |
| | | |
| | | var alertMsg = ""; |
| | | CC_DataProcess_RobotBuffer_ForceOutbound.Handler(packageCode, ref alertMsg); |
| | | if (!string.IsNullOrEmpty(alertMsg)) |
| | | { |
| | | MessageBox.Show("错误:" + alertMsg); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("已处理"); |
| | | } |
| | | //var alertMsg = ""; |
| | | //CC_DataProcess_RobotBuffer_ForceOutbound.Handler(packageCode, ref alertMsg); |
| | | //if (!string.IsNullOrEmpty(alertMsg)) |
| | | //{ |
| | | // MessageBox.Show("错误:" + alertMsg); |
| | | //} |
| | | //else |
| | | //{ |
| | | // MessageBox.Show("已处理"); |
| | | //} |
| | | } |
| | | |
| | | private void button25_Click(object sender, EventArgs e) |
| | |
| | | item.UpiStatus = (int)UpiStatusEnum.初始; |
| | | } |
| | | |
| | | //清空队列数据 |
| | | var list = db.mes_upi_linequeue.ToList(); |
| | | db.mes_upi_linequeue.RemoveRange(list); |
| | | |
| | | db.SaveChanges(); |
| | | } |
| | | if (!string.IsNullOrEmpty(alertMsg)) |
| | | { |
| | | MessageBox.Show("错误:" + alertMsg); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("已处理"); |
| | | } |
| | | } |
| | | |
| | | private void button1_Click(object sender, EventArgs e) |
| | | { |
| | | |
| | | |
| | | var alertMsg = ""; |
| | | using (WmsDBModel db = new WmsDBModel()) |
| | | { |
| | | //查询立体库中的upi列表 |
| | | var quanList = db.wms_stock_quan.ToList().Select(x => x.Upi).ToList(); |
| | | var upiList = db.mes_batchOrderUPI_new.Where(x => !quanList.Contains(x.UPI)).ToList(); |
| | | foreach (var item in upiList) |
| | | { |
| | | item.AreaCode = (int)AreaCodeEnum.无区域; |
| | | item.UpiStatus = (int)UpiStatusEnum.初始; |
| | | } |
| | | |
| | | var packageCodeList = upiList.Select(x => x.PackageCode).ToList(); |
| | | var pList = db.mes_package_gather.Where(x => packageCodeList.Contains(x.PackageCode)).ToList(); |
| | | foreach (var item in pList) |
| | | { |
| | | item.AreaCode = (int)AreaCodeEnum.无区域; |
| | | item.UpiStatus = (int)UpiStatusEnum.初始; |
| | | } |
| | | //清空队列数据 |
| | | var list = db.mes_upi_linequeue.ToList(); |
| | | db.mes_upi_linequeue.RemoveRange(list); |
| | | |
| | | db.SaveChanges(); |
| | | } |
| | | if (!string.IsNullOrEmpty(alertMsg)) |
| | | { |
| | | MessageBox.Show("错误:" + alertMsg); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("已处理"); |
| | | } |
| | | } |
| | | |
| | | private void btn1_Click(object sender, EventArgs e) |
| | | { |
| | | var taskNo = this.tb_taskNo.Text.Trim(); |
| | | |
| | | var alertMsg = ""; |
| | | using (WmsDBModel wmsDB = new WmsDBModel()) |
| | | { |
| | | var task = wmsDB.wms_rbline_task.Where(x => x.TaskNo == taskNo && x.RbTaskType == (int)RbTaskTypeEnum.入库任务 && x.TaskStatus == (int)TaskStatusEnum.已下发).FirstOrDefault(); |
| | | if (task == null) |
| | | { |
| | | MessageBox.Show("没找到任务"); |
| | | return; |
| | | } |
| | | |
| | | var upiCode = task.Upi; |
| | | var upiObj = wmsDB.mes_batchOrderUPI_new.Where(x => x.UPI == upiCode).FirstOrDefault(); |
| | | if (upiObj == null) |
| | | { |
| | | MessageBox.Show($"根据UPI:{upiCode}没有找到对象 "); |
| | | return; |
| | | } |
| | | //增加库存 |
| | | wms_stock_quan qun = new wms_stock_quan() |
| | | { |
| | | Id = Yitter.IdGenerator.YitIdHelper.NextId(), |
| | | Shelf = upiObj.Shelf, |
| | | Upi = upiCode, |
| | | PlanNo = task.PlanNo, |
| | | DetailName = upiObj.DetailName, |
| | | OrderId = task.OrderId, |
| | | CreateTime = DateTime.Now, |
| | | CreateUserName = SysGloble.WCSSystem, |
| | | InTime = DateTime.Now, |
| | | OperReason = "入库", |
| | | PackageCode = task.PackageCode, |
| | | Length = task.Length, |
| | | Width = task.Width, |
| | | Thk = task.Thk, |
| | | PlaceCode = task.PlaceCode, |
| | | StockStatus = (int)StockStatusEnum.在库, |
| | | StockStatusName = StockStatusEnum.在库.ToString(), |
| | | |
| | | }; |
| | | wmsDB.wms_stock_quan.Add(qun); |
| | | |
| | | task.TaskStatus = (int)TaskStatusEnum.已完成; |
| | | task.FinishedTime = DateTime.Now; |
| | | |
| | | |
| | | var place = StationHandler.GetPlaceByPlaceCode(task.PlaceCode, wmsDB); |
| | | place.PlaceStatus = (int)PlaceStatusEnum.正常; |
| | | |
| | | |
| | | WmsRecordUpiProcessHandler.SaveWmsRecordUpiProcess(wmsDB, upiObj, task.PlaceCode, "缓存入库完成:" + task.PlaceCode); |
| | | |
| | | wmsDB.SaveChanges(); |
| | | } |
| | | if (!string.IsNullOrEmpty(alertMsg)) |
| | | { |
| | | MessageBox.Show("错误:" + alertMsg); |
| | | } |
| | | else |
| | | { |
| | | MessageBox.Show("已处理"); |
| | | } |
| | | } |
| | | |
| | | private void button2_Click(object sender, EventArgs e) |
| | | { |
| | | //更新库存表中的次序字段 |
| | | var alertMsg = ""; |
| | | using (WmsDBModel db = new WmsDBModel()) |
| | | { |
| | | //查询立体库中的upi列表 |
| | | var quanList = db.wms_stock_quan.ToList(); |
| | | var query_quanList = quanList.Select(x => x.Upi).ToList(); |
| | | var upiList = db.mes_batchOrderUPI_new.Where(x => query_quanList.Contains(x.UPI)).ToList(); |
| | | foreach (var item in quanList) |
| | | { |
| | | var _shelf = upiList.Find(x => x.UPI == item.Upi); |
| | | item.Shelf = _shelf.Shelf; |
| | | } |
| | | |
| | | |
| | | db.SaveChanges(); |
| | | } |
| | | if (!string.IsNullOrEmpty(alertMsg)) |