示例#1
0
 /// <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);
     }
 }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        /// <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;
            }
        }
示例#4
0
        /// <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);
            }
        }
示例#5
0
        /// <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);
            }
        }
示例#6
0
 /// <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);
     }
 }
示例#7
0
 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);
     }
 }
示例#8
0
 /// <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);
     }
 }
示例#9
0
        /// <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);
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
 /// <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;
     }
 }
示例#12
0
        /// <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);
            }
        }
示例#13
0
        /// <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;
            }
        }
示例#14
0
        /// <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);
            }
        }