/// <summary> /// 扫码任务(包装线) /// </summary> /// <param name="frt"></param> /// <param name="code"></param> public bool ScanCodeTask_P(string frt, string code) { try { // 获取Task资讯 String sql = String.Format(@"select * from wcs_task_info where TASK_TYPE = '{1}' and BARCODE = '{0}'", code, TaskType.AGV搬运); DataTable dt = DataControl._mMySql.SelectAll(sql); if (!DataControl._mStools.IsNoData(dt)) { // 存在Task资讯则略过 return(false); } // 无Task资讯则新增 // 呼叫WMS 请求入库资讯---区域 WmsModel wms = DataControl._mHttp.DoBarcodeScanTask(DataControl._mTaskTools.GetArea(frt), code); wms.Task_type = WmsStatus.Empty; // 写入数据库 return(WriteTaskToWCS(wms, out string result)); } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("ScanCodeTask_P()", "扫码任务(包装线)[扫码位置,码数]", frt, code, ex.Message); return(false); } }
/// <summary> /// 获取WMS资讯写入WCS数据库 /// </summary> /// <param name="wms"></param> public bool WriteTaskToWCS(WmsModel wms, out string result) { try { string loc_to = wms.W_D_Loc; // WMS 出库目的固定辊台区域 [C01],改为当前库存区域 [B01] if (wms.Task_type.GetHashCode().ToString() == TaskType.出库) { loc_to = wms.W_S_Loc.Split('-')[0]; } String sql = String.Format(@"insert into wcs_task_info(TASK_UID, TASK_TYPE, BARCODE, W_S_LOC, W_D_LOC) values('{0}','{1}','{2}','{3}','{4}')", wms.Task_UID, wms.Task_type.GetHashCode(), wms.Barcode, wms.W_S_Loc, loc_to); DataControl._mMySql.ExcuteSql(sql); result = ""; return(true); } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("WriteTaskToWCS()", "WMS请求作业[任务ID,作业类型]", wms.Task_UID, wms.Task_type.ToString(), ex.Message); result = ex.Message; return(false); } }
/// <summary> /// WMS分配库区 /// </summary> /// <returns></returns> public static bool AssignInArea(string area, string code) { try { bool res = false; WmsModel wms = null; if (!string.IsNullOrEmpty(area) && !string.IsNullOrEmpty(code)) { // 请求WMS任务 wms = mHttp.DoBarcodeScanTask(area, code); if (wms != null && !string.IsNullOrEmpty(wms.Task_UID)) { // 写入数据库 CommonSQL.InsertTaskInfo(wms.Task_UID, (int)wms.Task_type, wms.Barcode, wms.W_S_Loc, wms.W_D_Loc, ""); res = true; } } return(res); } catch (Exception ex) { throw ex; } }
/// <summary> /// AGV 卸货=>任务完成=>分配库位 /// </summary> /// <param name="taskuid"></param> /// <param name="frt"></param> public void GetLocationByWMS(string taskuid, string frt) { try { // 辊台对应区域 String area = DataControl._mTaskTools.GetArea(frt); // 获取Task资讯(第1次扫码) String sql = String.Format(@"select * from wcs_task_info where TASK_UID = '{0}'", taskuid); DataTable dt = DataControl._mMySql.SelectAll(sql); if (DataControl._mStools.IsNoData(dt)) { // 无数据则异常 LOG DataControl._mTaskTools.RecordTaskErrLog("GetLocationByWMS()", "AGV卸货完成分配库位[扫码位置,任务号]", frt, taskuid, "不存在WMS入库任务ID!"); return; } // 呼叫WMS 请求入库资讯---库位 WmsModel wms = DataControl._mHttp.DoReachStockinPosTask(DataControl._mTaskTools.GetArea(frt), taskuid); // 更新任务资讯 sql = String.Format(@"update WCS_TASK_INFO set UPDATE_TIME = NOW(), TASK_TYPE = '{0}', W_S_LOC = '{1}', W_D_LOC = '{2}' where TASK_UID = '{3}'", TaskType.入库, wms.W_S_Loc, wms.W_D_Loc, taskuid); DataControl._mMySql.ExcuteSql(sql); // 对应 WCS 清单 DataControl._mTaskTools.CreateCommandIn(taskuid, frt); return; } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("GetLocationByWMS()", "AGV卸货完成分配库位[扫码位置,任务号]", frt, taskuid, ex.Message); } }
/// <summary> /// 货位出库 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnOUT_Click(object sender, RoutedEventArgs e) { // 无用资讯 CBfrt_P.Text = ""; TBcode.Text = ""; string frtD = CBfrt_D.Text.Trim(); if (string.IsNullOrEmpty(frtD)) { Notice.Show("卸货点不能为空!", "错误", 3, MessageBoxIcon.Error); return; } if (string.IsNullOrEmpty(TBlocX.Text.Trim()) && string.IsNullOrEmpty(TBlocY.Text.Trim()) && string.IsNullOrEmpty(TBlocZ.Text.Trim())) { Notice.Show("货位不能为空!", "错误", 3, MessageBoxIcon.Error); return; } // 货位 string LOC = "C" + TBlocX.Text.Trim().PadLeft(3, '0') + "-" + TBlocY.Text.Trim().PadLeft(2, '0') + "-" + TBlocZ.Text.Trim().PadLeft(2, '0'); if ((bool)CheckWMS.IsChecked) { // 获取Task资讯 String sql = String.Format(@"select * from wcs_task_info where SITE <> '{1}' and TASK_TYPE = '{2}' and W_S_LOC = '{0}'", LOC, TaskSite.完成, TaskType.出库); DataTable dt = DataControl._mMySql.SelectAll(sql); if (!DataControl._mStools.IsNoData(dt)) { Notice.Show("该货位已存在出库任务!", "错误", 3, MessageBoxIcon.Error); return; } // 无Task资讯则新增 // 呼叫WMS 请求入库资讯---区域 WmsModel wms = new WmsModel() { Task_UID = "NW" + System.DateTime.Now.ToString("yyMMddHHmmss"), Task_type = WmsStatus.StockOutTask, Barcode = "", W_S_Loc = LOC, W_D_Loc = frtD }; // 写入数据库 if (new ForWMSControl().WriteTaskToWCS(wms, out string result)) { Notice.Show("完成!", "成功", 3, MessageBoxIcon.Success); } else { MessageBox.Show("失败!" + result); Notice.Show("失败!" + result, "错误", 3, MessageBoxIcon.Error); } } else { Notice.Show("无法请求WMS出库!", "错误", 3, MessageBoxIcon.Error); } }
/// <summary> /// 获取WMS资讯写入WCS数据库 /// </summary> /// <param name="wms"></param> public bool WriteTaskToWCS(WmsModel wms) { try { MySQL mySQL = new MySQL(); String sql = String.Format(@"insert into wcs_task_info(TASK_UID, TASK_TYPE, BARCODE, W_S_LOC, W_D_LOC) values('{0}','{1}','{2}','{3}','{4}')", wms.Task_UID.ToString(), wms.Task_type.ToString(), wms.Barcode.ToString(), wms.W_S_Loc.ToString(), wms.W_D_Loc.ToString()); mySQL.ExcuteSql(sql); return(true); } catch (Exception) { return(false); } }
private void GetWmsInfo_Click(object sender, RoutedEventArgs e) { try { WmsModel result = DataControl._mHttp.DoBarcodeScanTask("A01", "BARCODE"); if (result != null) { Notice.Show(result.ToString(), "信息", 15, MessageBoxIcon.Info); } } catch (Exception ex) { Notice.Show(ex.Message, "错误", 3, MessageBoxIcon.Error); } }
/// <summary> /// 获取WMS资讯写入WCS数据库 /// </summary> /// <param name="wms"></param> public bool WriteTaskToWCS(WmsModel wms, out string result) { try { String sql = String.Format(@"insert into wcs_task_info(TASK_UID, TASK_TYPE, BARCODE, W_S_LOC, W_D_LOC) values('{0}','{1}','{2}','{3}','{4}')", wms.Task_UID, wms.Task_type.GetHashCode(), wms.Barcode, wms.W_S_Loc, wms.W_D_Loc); DataControl._mMySql.ExcuteSql(sql); result = ""; return(true); } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("WriteTaskToWCS()", "WMS请求作业[任务ID,作业类型]", wms.Task_UID, wms.Task_type.ToString(), ex.ToString()); result = ex.ToString(); return(false); } }
/// <summary> /// 单托库位 /// </summary> /// <param name="cmd"></param> /// <returns></returns> public bool DoInTask_One(WCS_COMMAND_V cmd) { try { // 呼叫WMS 请求入库资讯---单托库位 WmsModel wms = DataControl._mHttp.DoReachStockinPosTask(cmd.LOC_FROM_1, cmd.TASK_UID_1); // 更新任务资讯 String sql = String.Format(@"update wcs_task_info set UPDATE_TIME = NOW(), W_D_LOC = '{0}' where TASK_UID = '{1}'", wms.W_D_Loc, cmd.TASK_UID_1); DataControl._mMySql.ExcuteSql(sql); return(true); } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("DoInTask_One()", "请求WMS分配库位[WCS入库清单号]", cmd.WCS_NO, "", ex.Message); return(false); } }
private void TEST_Click(object sender, RoutedEventArgs e) { try { // 请求WMS入库任务 //WmsModel wms = ADS.mHttp.DoBarcodeScanTask("A01", ADS.GetGoodsCode(DateTime.Now.ToString("yyMMdd"))); WmsModel wms = ADS.mHttp.DoBarcodeScanTask("A01", "@20200906001|Afpz|B10*22|Dw|Ea1|F001|G2440*0600"); if (wms != null && !string.IsNullOrEmpty(wms.Task_UID)) { CommonSQL.InsertTaskInfo(wms.Task_UID, (int)wms.Task_type, wms.Barcode, wms.W_S_Loc, wms.W_D_Loc, ""); CommonSQL.UpdateWms(wms.Task_UID, (int)WmsTaskStatus.待分配); } Refresh_Click(sender, e); } catch (Exception ex) { Notice.Show(ex.Message, "错误", 3, MessageBoxIcon.Error); } }
/// <summary> /// WMS分配库位 /// </summary> /// <returns></returns> public static bool AssignInSite(string area, string tid) { try { bool res = false; WmsModel wms = null; if (!string.IsNullOrEmpty(area) && !string.IsNullOrEmpty(tid)) { // 请求WMS任务 wms = mHttp.DoReachStockinPosTask(area, tid); if (wms != null && !string.IsNullOrEmpty(wms.Task_UID)) { CommonSQL.UpdateWms(wms.Task_UID, (int)WmsTaskStatus.待执行, wms.W_S_Loc, wms.W_D_Loc); res = true; } } return(res); } catch (Exception ex) { throw ex; } }
/// <summary> /// 扫码任务--分配库位 /// </summary> /// <param name="frt"></param> /// <param name="code"></param> public bool ScanCodeTask_Loc(string frt, string code) { try { // 获取Task资讯 String sql = String.Format(@"select TASK_UID from wcs_task_info where TASK_TYPE = '{1}' and BARCODE = '{0}'", code, TaskType.AGV搬运); DataTable dt = DataControl._mMySql.SelectAll(sql); if (DataControl._mStools.IsNoData(dt)) { string errmes = string.Format(@"固定辊台[{0}]承载货物编号[{1}]:不存在WMS入库任务ID!", frt, code); // LOG DataControl._mTaskTools.RecordTaskErrLog("ScanCodeTask()", "扫码任务-分配库位[扫码位置,码数]", frt, code, errmes.ToString()); return(false); } // 获取对应任务ID string taskuid = dt.Rows[0]["TASK_UID"].ToString(); // 呼叫WMS 请求入库资讯---库位 WmsModel wms = DataControl._mHttp.DoReachStockinPosTask(DataControl._mTaskTools.GetArea(frt), taskuid); // 更新任务资讯 sql = String.Format(@"update WCS_TASK_INFO set UPDATE_TIME = NOW(), TASK_TYPE = '{0}', W_S_LOC = '{1}', W_D_LOC = '{2}' where TASK_UID = '{3}'", TaskType.入库, wms.W_S_Loc, wms.W_D_Loc, taskuid); DataControl._mMySql.ExcuteSql(sql); // 对应 WCS 清单 DataControl._mTaskTools.CreateCommandIn(taskuid, frt); return(true); } catch (Exception ex) { // LOG DataControl._mTaskTools.RecordTaskErrLog("ScanCodeTask()", "扫码任务-分配库位[扫码位置,码数]", frt, code, ex.Message); return(false); } }
/// <summary> /// 获取最新初始化入库任务目的区域 /// </summary> /// <returns></returns> public static string GetInAreaWMS(string from, string code, out string taskid) { try { string area = CommonSQL.GetToArea(code, out taskid); if (string.IsNullOrEmpty(area)) { // 请求WMS任务 WmsModel wms = mHttp.DoBarcodeScanTask(from, code); if (wms != null && !string.IsNullOrEmpty(wms.Task_UID)) { // 写入数据库 CommonSQL.InsertTaskInfo(wms.Task_UID, (int)wms.Task_type, wms.Barcode, wms.W_S_Loc, wms.W_D_Loc, ""); area = wms.W_D_Loc; } } return(area); } catch (Exception ex) { throw ex; } }
/// <summary> /// 分配卸货 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnFRT_Click(object sender, RoutedEventArgs e) { try { string frtP = CBfrt_P.Text.Trim(); string code = TBcode.Text.Trim(); string frtD = CBfrt_D.Text.Trim(); if (string.IsNullOrEmpty(frtP) || string.IsNullOrEmpty(code)) { Notice.Show("包装线辊台设备号 / 货物条码 不能为空!", "错误", 3, MessageBoxIcon.Error); return; } if (!WindowCommon.ConfirmAction("是否进行[获取入库区域任务]!!")) { return; } if ((bool)CheckWMS.IsChecked) { if (string.IsNullOrEmpty(frtD)) { Notice.Show("卸货点不能为空!", "错误", 3, MessageBoxIcon.Error); return; } // 获取Task资讯 String sql = String.Format(@"select * from wcs_task_info where SITE <> '{1}' and BARCODE = '{0}'", code, TaskSite.完成); DataTable dt = DataControl._mMySql.SelectAll(sql); if (!DataControl._mStools.IsNoData(dt)) { Notice.Show("货物条码已存在任务!", "提示", 3, MessageBoxIcon.Info); return; } // 无Task资讯则新增 // 呼叫WMS 请求入库资讯---区域 WmsModel wms = new WmsModel() { Task_UID = "NW" + System.DateTime.Now.ToString("yyMMddHHmmss"), Task_type = WmsStatus.StockInTask, Barcode = code, W_S_Loc = DataControl._mTaskTools.GetArea(frtP), W_D_Loc = DataControl._mTaskTools.GetArea(frtD) }; // 写入数据库 if (new ForWMSControl().WriteTaskToWCS(wms, out string result)) { Notice.Show("完成!", "成功", 3, MessageBoxIcon.Success); } else { Notice.Show("失败:" + result, "错误", 3, MessageBoxIcon.Error); } } else { if (new ForWMSControl().ScanCodeTask_P(frtP, code)) { Notice.Show("完成!", "成功", 3, MessageBoxIcon.Success); } else { Notice.Show("失败!", "错误", 3, MessageBoxIcon.Error); } } } catch (Exception ex) { Notice.Show(ex.Message, "错误", 3, MessageBoxIcon.Error); } }