示例#1
0
        private void BtnDeletnPc(object sender, RoutedEventArgs e)
        {
            if (this.ListProgramLocal.Items.Count <= 0)
            {
                WPFMessageBox.ShowError("路径中无文件!", "删除程序");
                return;
            }

            if (this.ListProgramLocal.SelectedIndex == -1)
            {
                WPFMessageBox.ShowError("请选中要删除的文件!", "程序");
                return;
            }
            string str = (string)ListProgramLocal.SelectedItem;

            string path = System.Environment.CurrentDirectory + "//NC_Programe//" + str;


            if (WPFMessageBox.ShowConfirm("确定该删除选中的文件吗?", "程序删除") != WPFMessageBoxResult.OK)
            {
                return;
            }

            if (File.Exists(path))
            {
                File.Delete(path);  //删除
            }
        }
示例#2
0
        private void btnOK_Click(object sender, RoutedEventArgs e)
        {
            FmsActionFormulaMain main = gbInfo.DataContext as FmsActionFormulaMain;

            if (main == null)
            {
                return;
            }

            #region  检验

            if (string.IsNullOrEmpty(main.FORMULA_CODE))
            {
                WPFMessageBox.ShowError("请输入动作配方编码", "保存");
                return;
            }

            var check = ws.UseService(s =>
                                      s.GetFmsActionFormulaMains(
                                          $"USE_FLAG = 1 AND FORMULA_CODE = '{main.FORMULA_CODE}' AND PKNO <> '{main.PKNO}'"));
            if (check.Any())
            {
                WPFMessageBox.ShowError($"输入动作配方编码已经存在不能{(string.IsNullOrEmpty(main.PKNO) ? "新增" : "修改")}该编码,请核实", "保存");
                return;
            }

            #endregion

            if (string.IsNullOrEmpty(main.PKNO))  //新增
            {
                main.PKNO             = CBaseData.NewGuid();
                main.CREATION_DATE    = DateTime.Now;
                main.CREATED_BY       = CBaseData.LoginName;
                main.LAST_UPDATE_DATE = DateTime.Now;  //最后修改日期
                ws.UseService(s => s.AddFmsActionFormulaMain(main));
            }
            else
            {
                main.UPDATED_BY       = CBaseData.LoginName;
                main.LAST_UPDATE_DATE = DateTime.Now;
                ws.UseService(s => s.UpdateFmsActionFormulaMain(main));
            }

            if (!string.IsNullOrEmpty(formulaCode))
            {
                string sql =
                    $"UPDATE FMS_ACTION_FORMULA_DETAIL SET FORMULA_CODE = '{main.FORMULA_CODE}' WHERE FORMULA_CODE = '{formulaCode}'";
                WcfClient <ISQLService> wsSQL = new WcfClient <ISQLService>();

                wsSQL.UseService(s => s.ExecuteSql(sql));
            }

            Close();
        }
示例#3
0
        //完成当前
        private void bFinishThis_click(object sender, RoutedEventArgs e)
        {
            MesJobOrder mesJobOrder = gridorder.GetFocusedRow() as MesJobOrder;

            if (mesJobOrder == null)
            {
                return;
            }

            if (WPFMessageBox.ShowConfirm("确定要完成当前工序吗?", "完成当前工序") != WPFMessageBoxResult.OK)
            {
                return;
            }

            List <MesProcessCtrol> processCtrols = ws.UseService(s => s.GetMesProcessCtrols($"PROCESS_STATE < 10 "))
                                                   .OrderBy(c => c.PROCESS_INDEX).ThenBy(c => c.CREATION_DATE).ToList(); //执行的动作

            MesProcessCtrol processCtrol = processCtrols.FirstOrDefault(c => c.JOB_ORDER_PKNO == mesJobOrder.PKNO);

            if (processCtrol == null)
            {
                return;
            }

            var result = DeviceProcessControl.FinishCurBusiness(processCtrol);

            if (result != "OK")
            {
                WPFMessageBox.ShowError("当前工序的业务层完成错误,请核实。\r\n错误为:" + result, "完成当前工序");
                return;
            }
            processCtrol.PROCESS_STATE = 10;    //执行完成
            ws.UseService(s => s.UpdateMesProcessCtrol(processCtrol));


            if (processCtrol == processCtrols.LastOrDefault())
            {
                mesJobOrder.PROCESS_INFO    = "手动完成当前过程"; //生产执行信息
                mesJobOrder.ACT_FINISH_TIME = DateTime.Now;
                mesJobOrder.RUN_STATE       = 101;        //手动完成
                mesJobOrder.ONCE_QTY        = 1;          //默认订单为1
                mesJobOrder.COMPLETE_QTY    = 1;
            }
            else
            {
                mesJobOrder.PROCESS_INFO = "手动完成当前订单";  //生产执行信息
            }

            ws.UseService(s => s.UpdateMesJobOrder(mesJobOrder));

            gridItem.ItemsSource = ws.UseService(s =>
                                                 s.GetMesProcessCtrols($"JOB_ORDER_PKNO = '{mesJobOrder.PKNO}' "))
                                   .OrderBy(c => c.PROCESS_INDEX).ThenBy(c => c.CREATION_DATE).ToList();
        }
示例#4
0
 //设置Name值
 private void bNameByDB_ItemClick(object sender, ItemClickEventArgs e)
 {
     if (cvMain.CurSelectedDragThumb != null)
     {
         try
         {
             SelectTag select = new SelectTag();
             select.SelectName = viewModel.SelectName;
             select.ShowDialog();
             cvMain.CurSelectedDragThumb.CtrlName = select.SelectName;
         }
         catch (Exception exception)
         {
             WPFMessageBox.ShowError("获取系统Tag失败,请手动设置Tag点", "设置Tag点");
         }
     }
 }
示例#5
0
        private void BtnSave_Click(object sender, RoutedEventArgs e)
        {
            //保存
            AmAssetMasterN   asset         = cmbAssetInfo.SelectedItem as AmAssetMasterN;
            FmsActionControl actionControl = gbItem.DataContext as FmsActionControl;

            if (actionControl == null)
            {
                return;
            }

            #region

            //TODO: 校验;保存
            if (asset == null)
            {
                WPFMessageBox.ShowError("请选择设备!", "保存");
                return;
            }
            if (string.IsNullOrEmpty(actionControl.ACTION_NAME))
            {
                WPFMessageBox.ShowError("请输入指令动作名称!", "保存");
                return;
            }

            if (actionControl.PKNO == "")
            {
                actionControl.PKNO = CBaseData.NewGuid();
                _fmsClient.UseService(s => s.AddFmsActionControl(actionControl));
            }
            else
            {
                _fmsClient.UseService(s => s.UpdateFmsActionControl(actionControl));
            }
            WPFMessageBox.ShowTips("指令动作配置信息已保存。", "保存");

            #endregion

            GetPage();  //重新刷新数据,根据需求是否进行刷新数据

            //保存成功
            gbItem.IsCollapsed = true;
            gbItem.Visibility  = Visibility.Collapsed;
            BindHelper.SetDictDataBindingGridItem(gbItem, gridItem);
        }
示例#6
0
        private void ImageButtonWithIcon_Click_1(object sender, RoutedEventArgs e)
        {
            #region 检验

            if (this.ListProgramLocal.Items.Count <= 0)
            {
                WPFMessageBox.ShowError("当前路径中无文件!", "提醒");
                return;
            }

            if (this.ListProgramLocal.SelectedIndex == -1)
            {
                WPFMessageBox.ShowError("未选中文件!", "提醒");
                return;
            }

            #endregion

            string pathrestorefile = System.Environment.CurrentDirectory + "//NC_Back//";
            if (!Directory.Exists(pathrestorefile))
            {
                Directory.CreateDirectory(pathrestorefile);
            }
            string fileName = pathrestorefile + this.ListProgramLocal.SelectedItem.ToString();
            if (File.Exists(fileName))
            {
                if (WPFMessageBox.ShowConfirm($"确定要删除备份文件[{fileName}]吗?", "删除文件") != WPFMessageBoxResult.OK)
                {
                    return;
                }

                try
                {
                    File.Delete(fileName);

                    GetPcProgram();
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception);
                }
            }
        }
示例#7
0
        //程序启动
        protected override void OnStartup(StartupEventArgs e)
        {
            #region 检测进程是否存在

            string sName  = Assembly.GetExecutingAssembly().FullName;
            bool   runone = true;

            System.Threading.Mutex run = new System.Threading.Mutex(true, sName, out runone);

            if (!runone)
            {
                MessageBox.Show("系统已经在运行中,请查看任务管理器并退出系统【BFM.WPF.MainUI.exe】.", "系统启动",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                System.Environment.Exit(0);
                return;
            }

            run.ReleaseMutex();  //必须需要

            #endregion

            NewMainForm mainForm;

#if !DEBUG
            NetLog.Write("============系统启动=========");
            mainForm = new NewMainForm();
#endif

            System.Threading.ThreadPool.SetMaxThreads(2000, 800);

            #region 获取用户

            try
            {
                WcfClient <ISDMService> _SDMService = new WcfClient <ISDMService>();
                List <SysUser>          mSysUsers   = _SDMService.UseService(s => s.GetSysUsers("USE_FLAG = 1")).ToList();
            }
            catch (Exception ex)
            {
                MessageBox.Show("数据库访问失败,请核实系统配置是否正确。\r\n错误为:" + ex.Message, "系统启动", MessageBoxButton.OK, MessageBoxImage.Error);
                System.Environment.Exit(0);
                return;
            }

            #endregion

            try
            {
                #region 自动升级程序

                //1.检验版本并提示升级
                //VersionManage.UpdateAppVersion(true);  //检验版本
                //2.开启后台检查版本
                //VersionManage.AutoUpdateVersion(); //自动升级版本

                #endregion

#if DEBUG
                NetLog.Write("系统为DEBUG,请使用Release...");
                mainForm = new NewMainForm();
#endif

                mainForm.ShowDialog();
            }
            catch (Exception ex)
            {
                NetLog.Error("系统错误,", ex);

                WPFMessageBox.ShowError(
                    $"系统错误,请核实。" + Environment.NewLine +
                    $"错误为:" + ex.Message, "系统错误");
            }
        }
示例#8
0
        /// <summary>
        /// 后台自动升级程序
        /// <param name="bFisrtCheck">是否首次检测</param>
        /// </summary>
        public static void UpdateAppVersion(bool bFisrtCheck)
        {
            try
            {
                if (File.Exists(UpgradeBatFile))
                {
                    File.Delete(UpgradeBatFile);
                } //删除升级文件

                string updateCmd    = "";
                int    iUpdateIndex = 0;   //升级文件的序号

                bool bForceUpdate = false; //强制升级
                foreach (SysAppInfo appInfo in AllModels)
                {
                    string        error;
                    List <string> value = VersionProcess.GetDBVersionNO(appInfo.MODEL_CODE, out error); //获取服务器的新版本

                    if (!string.IsNullOrEmpty(error))                                                   //错误
                    {
                        if (bFisrtCheck)                                                                //第一次检验失败
                        {
                            WPFMessageBox.ShowError(error + "请检查连接!", "系统启动失败");

                            App.AppExit(5); //系统退出
                        }
                        continue;
                    }

                    int    dbVersion  = -1;
                    string newAppPKNO = "";
                    if (value.Count >= 2)
                    {
                        newAppPKNO = value[0];
                        dbVersion  = SafeConverter.SafeToInt(value[1]);
                    }

                    if (dbVersion < appInfo.MODEL_INNER_VERSION) //服务器版本 < 当前版本 => 上传
                    {
                        string filename = Environment.CurrentDirectory + "\\" +
                                          (String.IsNullOrEmpty(appInfo.APP_RELATIVE_PATH)
                                              ? ""
                                              : appInfo.APP_RELATIVE_PATH + "\\") +
                                          appInfo.APP_NAME;

                        if (!File.Exists(filename))
                        {
                            continue;
                        }

                        #region   版本

                        SysAppInfo newApp = new SysAppInfo()
                        {
                            PKNO                = CBaseData.NewGuid(),
                            MODEL_CODE          = appInfo.MODEL_CODE,
                            MODEL_NAME          = appInfo.MODEL_NAME,
                            MODEL_INNER_VERSION = appInfo.MODEL_INNER_VERSION,
                            MODEL_VERSION       = appInfo.MODEL_VERSION,
                            APP_NAME            = appInfo.APP_NAME,
                            APP_RELATIVE_PATH   = appInfo.APP_RELATIVE_PATH,
                            VERSION_INTROD      = appInfo.VERSION_INTROD,
                            MODEL_CONTENT       = FileHelper.FileToBytes(filename), //上传文档
                            CREATED_BY          = CBaseData.LoginName,
                            CREATION_DATE       = DateTime.Now,
                            VERSION_TYPE        = appInfo.VERSION_TYPE,
                            REMARK              = appInfo.REMARK,
                        };

                        bool ret = VersionProcess.UploadApp(newApp); //上传到数据库

                        if (ret)
                        {
                            EventLogger.Log($"上传最新版本 {newApp.MODEL_VERSION} 的程序【{newApp.MODEL_NAME}】到服务器。");
                        }
                        #endregion
                    }
                    else if (dbVersion > appInfo.MODEL_INNER_VERSION) //服务器版本 > 当前版本 => 升级
                    {
                        #region  载最新版本

                        SysAppInfo newApp = VersionProcess.GetNewApp(newAppPKNO); //下载

                        #endregion

                        if (string.IsNullOrEmpty(newApp?.PKNO)) //下载失败
                        {
                            continue;
                        }

                        bool updateResult = false; //强制升级

                        #region 保存到本地,并升级

                        string newfilename = Environment.CurrentDirectory + "\\Temp\\" +
                                             (String.IsNullOrEmpty(newApp.APP_RELATIVE_PATH)
                                                 ? ""
                                                 : newApp.APP_RELATIVE_PATH + "\\") +
                                             newApp.APP_NAME;

                        string directory = Path.GetDirectoryName(newfilename);
                        if (!Directory.Exists(directory))
                        {
                            Directory.CreateDirectory(directory);
                        }

                        FileHelper.BytesToFile(newApp.MODEL_CONTENT, newfilename);

                        string oldfilename = Environment.CurrentDirectory + "\\" +
                                             (String.IsNullOrEmpty(newApp.APP_RELATIVE_PATH)
                                                 ? ""
                                                 : newApp.APP_RELATIVE_PATH + "\\") +
                                             newApp.APP_NAME;

                        string filename = (String.IsNullOrEmpty(newApp.APP_RELATIVE_PATH)
                            ? ""
                            : newApp.APP_RELATIVE_PATH + "\\") +
                                          newApp.APP_NAME;
                        try
                        {
                            File.Copy(newfilename, oldfilename);
                            updateResult = true; //升级成功
                            EventLogger.Log($"【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 完成自动升级。");
                        }
                        catch (Exception)   //升级失败
                        {
                            iUpdateIndex++; //索引号

                            #region 形成升级Bat

                            updateCmd +=
                                $"echo {iUpdateIndex}. 正在升级 【{appInfo.MODEL_NAME}】 到 {appInfo.MODEL_VERSION} ..." +
                                Environment.NewLine;                                                    //显示提示信息
                            updateCmd += "ping 127.0.0.1 -n 2 > nul " + Environment.NewLine;            //暂停2s

                            updateCmd += "if not exist Temp\\" + filename + " (" + Environment.NewLine; //检验是否已经下载了文件
                            updateCmd += $"  echo 【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} ... 尚未下载,升级失败!" +
                                         Environment.NewLine;                                           //
                            updateCmd += $")" + Environment.NewLine;                                    //

                            updateCmd += "copy /y " + "Temp\\" + filename + " " + filename + Environment.NewLine;
                            //复制 => 升级文件

                            updateCmd += "if %ERRORLEVEL% == 0 (" + Environment.NewLine; //复制成功
                            updateCmd += $"  echo 【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 升级成功。" +
                                         Environment.NewLine;                            //
                            updateCmd +=
                                $"  echo %DATE% %TIME% 完成【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 的升级 >>log\\AutoUpdate.txt" +
                                Environment.NewLine;                                                                                                        //

                            updateCmd += ") else (" + Environment.NewLine;                                                                                  //复制失败

                            updateCmd += "  copy /y " + "Temp\\" + filename + " " + filename + Environment.NewLine;                                         //二次复制 => 升级文件

                            updateCmd += "  if %ERRORLEVEL% == 0 (" + Environment.NewLine;                                                                  //复制成功
                            updateCmd += $"    echo 【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 升级成功。" + Environment.NewLine;                            //
                            updateCmd +=
                                $"    echo %DATE% %TIME% 完成【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 的升级 >>log\\AutoUpdate.txt" + Environment.NewLine; //
                            updateCmd += "  ) else (" + Environment.NewLine;
                            updateCmd +=
                                $"    echo 【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 升级失败,请退出系统后,运行【{UpgradeBatFile}】。" +
                                Environment.NewLine; //
                            updateCmd +=
                                $"   echo %DATE% %TIME% 【{appInfo.MODEL_NAME}】 {appInfo.MODEL_VERSION} 升级失败,错误代码为 %ERRORLEVEL% >>log\\AutoUpdate.txt" +
                                Environment.NewLine; //
                            updateCmd += "    pause" + Environment.NewLine;
                            updateCmd += "    exit" + Environment.NewLine;
                            updateCmd += "  )" + Environment.NewLine;
                            updateCmd += ")" + Environment.NewLine;

                            #endregion

                            updateResult = false;
                        }

                        #endregion

                        if ((!updateResult) && (!bForceUpdate)) //升级失败,检验是否强制升级
                        {
                            if (bFisrtCheck)
                            {
                                bForceUpdate = true; //强制升级
                            }
                            else  //不是第一次检测,则需要检测是否强制升级
                            {
                                int updateType = VersionProcess.CheckUpdateVersion(appInfo.MODEL_CODE,
                                                                                   appInfo.MODEL_INNER_VERSION.Value); //获取版本升级信息,是否强制升级

                                #region 强制升级

                                if (updateType == 2)     //强制升级
                                {
                                    bForceUpdate = true; //强制升级
                                }

                                #endregion
                            }
                        }
                    }
                } //end foreach

                if (!string.IsNullOrEmpty(updateCmd)) //有升级
                {
                    if (!Directory.Exists("log"))
                    {
                        Directory.CreateDirectory("log");
                    }
                    updateCmd = "@echo off " + Environment.NewLine +
                                " color fc " + Environment.NewLine +
                                " title ******** 客户端自动升级程序 ******* " + Environment.NewLine +
                                " echo *****************客户端自动升级程序(共" + iUpdateIndex + "个) ************* " +
                                Environment.NewLine + updateCmd;
                    updateCmd += "echo 系统升级成功!" + (bFisrtCheck ? "请重新打开程序。": "") + Environment.NewLine; //升级成功
                    updateCmd += "del /f /q " + UpgradeBatFile + Environment.NewLine;                   //删除本身
                    FileHelper.SaveStrToFile(updateCmd, UpgradeBatFile, true);                          //保存升级文件
                }

                if (bForceUpdate) //强制升级
                {
                    Application.Current.Dispatcher.Invoke(new Action(() =>
                    {
                        WPFMessageBox.ShowWarring(
                            $"检测到系统有强制升级的新版本,系统自动升级失败,需要强制升级。" + Environment.NewLine +
                            "***!系统将退出!***", "自动升级程序");
                    }));

                    App.AppExit(5);
                }
            }
            catch (Exception ex)
            {
                NetLog.Error("自动升级程序失败,", ex);
                Console.WriteLine("自动升级程序失败,错误为:" + ex.Message);
            }
        }
示例#9
0
        //测试
        private void BtnTest_Click(object sender, RoutedEventArgs e)
        {
            TbTestResult.Text = "";
            RefreshCalculationText();

            Type dynamicCode = null;                                                       //获取编译后代码,调用该类用
            Dictionary <string, Dictionary <string, string> >
            FuncAndParamTagPKNO = new Dictionary <string, Dictionary <string, string> >(); //函数和对应参数的Tag的PKNO

            string className = "C" + Guid.NewGuid().ToString("N");

            try
            {
                Cursor = Cursors.Wait;

                #region 形成执行的代码

                string execCode = "using System; \r\n" +
                                  "using System.Text; \r\n" +
                                  "using System.Collections.Generic; \r\n" +
                                  "using BFM.Common.Base; \r\n\r\n";

                execCode += "public class " + className + "\r\n" +
                            "{ \r\n";

                string basicFuc = "AutoCalculation";

                int index = 1;
                FuncAndParamTagPKNO.Clear();

                string exp = CalculationText;                                             //表达式

                string funcname = basicFuc + index.ToString();                            //函数名称
                Dictionary <string, string> paramTas = new Dictionary <string, string>(); //参数对应的标签的PKNO, param名称

                List <string> funcParam = new List <string>();                            //带类型的参数

                string code = "";

                foreach (var line in exp.Split(new string[] { "\r\n" }, StringSplitOptions.None))
                {
                    string ret = line;

                    #region 替换标签值,将标签替换成参数名

                    string[] expTags = line.Split('{');

                    for (int i = 0; i < expTags.Length; i++)
                    {
                        string str    = expTags[i];
                        int    length = str.IndexOf('}');

                        if (length < 0) //没有找到  }
                        {
                            continue;
                        }

                        string tagPKNO = str.Substring(0, length); //{ } 内为PKNO

                        string param = "{" + tagPKNO + "}";

                        if (paramTas.ContainsKey(tagPKNO))  //已经添加了该参数
                        {
                            param = paramTas[tagPKNO];
                        }
                        else
                        {
                            FmsAssetTagSetting tag = DeviceTags.FirstOrDefault(s => s.PKNO == tagPKNO);
                            if (tag == null)
                            {
                                continue;
                            }

                            param = "param" + paramTas.Count;
                            paramTas.Add(tagPKNO, param);
                            string paramType = "string";
                            //string paramType = ((CalculationType == 2) || (tag.VALUE_TYPE > 0 && tag.VALUE_TYPE < 20))
                            //    ? "double"
                            //    : "string";
                            funcParam.Add(paramType + " " + param);
                        }

                        ret = ret.Replace("{" + tagPKNO + "}", param);
                    }

                    #endregion

                    if (string.IsNullOrEmpty(code))
                    {
                        code = "    " + ret;
                    }
                    else
                    {
                        code += Environment.NewLine + "    " + ret;
                    }
                }

                //C#脚本
                //支持C#语法,最后返回值(Double/String)
                string resultType = "string";

                //确定返回结果类型,将code语句转换成C#的语句
                if (CalculationType == 1) //逻辑运算
                {
                    //(结果为1,0):({标签1}==1)&&({标签2}==1)&&({标签3}==0||{标签4}==0)&&({标签5}==1)
                    code       = code.Replace("AND", "&&").Replace("and", "&&").Replace("OR", "||").Replace("or", "||");
                    resultType = "bool";
                }
                else if (CalculationType == 2) //数值运算
                {
                    //{标签1}+3+{标签2}+4
                    resultType = "double";
                }
                else if (CalculationType == 3) //字符运算
                {
                    //{标签1}+"123"
                }
                else if (CalculationType == 12) //条件数值运算
                {
                    //{标签1}==3:{标签2}+1;{标签1}==4:{标签2}+2;{标签1}==5:{标签2}+3
                    resultType = "double";
                    List <string> exps = code.Split(';').ToList();
                    string        temp = "";
                    foreach (var exp1 in exps)
                    {
                        if (exp1.Split(':').Length < 2)
                        {
                            continue;
                        }
                        temp += "        if (" + exp1.Split(':')[0] + ") { return (" + exp1.Split(':')[1] + "); } \r\n";
                    }

                    temp += "        return 0; \r\n";

                    code = temp;
                }
                else if (CalculationType == 13) //条件字符运算
                {
                    //{标签1}==3:{标签1}+"123";{标签1}==4:{标签1}+"123"
                    List <string> exps = code.Split(';').ToList();
                    string        temp = "";
                    foreach (var exp1 in exps)
                    {
                        if (exp1.Split(':').Length < 2)
                        {
                            continue;
                        }
                        temp += "        if (" + exp1.Split(':')[0] + ") { return (" + exp1.Split(':')[1] + ").ToString(); } \r\n";
                    }

                    temp += "        return \"\"; \r\n";

                    code = temp;
                }
                else if (CalculationType == 21)
                {
                    resultType = "string";//{标签1};3
                    List <string> exps = code.Split(';').ToList();
                    string        temp = "";
                    if (exps.Count >= 2)
                    {
                        int arrayIndex = SafeConverter.SafeToInt(exps[1].Trim(), 0);
                        temp += "            if ( " + exps[0].Trim() + ".Split('|').Length > " + arrayIndex + ") { return " + exps[0].Trim() + ".Split('|')[" + arrayIndex + "]; } \r\n";
                    }

                    temp += "        return \"\"; \r\n";

                    code = temp;
                }
                else if (CalculationType == 100) //C#脚本
                {
                    //支持C#语法,最后返回值(Double/String)
                    resultType = "string";
                }
                else  //不支持的类型
                {
                    code = $"        return \"计算类型[{CalculationType}],不支持的类型。\"; \r\n";
                }

                execCode += DynamicCode.BuildExecFunc(funcname, resultType, code, funcParam);

                FuncAndParamTagPKNO.Add(funcname, paramTas); //添加

                execCode += "}\r\n";

                #endregion

                #region 编译代码

                CodeDomProvider    compiler = new CSharpCodeProvider();
                CompilerParameters cp       = new CompilerParameters()
                {
                    GenerateExecutable = false, GenerateInMemory = true,
                };
                cp.ReferencedAssemblies.Add("BFM.Common.Base.dll");
                CompilerResults cr = compiler.CompileAssemblyFromSource(cp, execCode);
                if (cr.Errors.HasErrors)
                {
                    WPFMessageBox.ShowError("测试失败,语法错误.\r\n" + execCode, "测试");
                    return;
                }

                dynamicCode = cr.CompiledAssembly.GetType(className); //获取

                #endregion

                #region 获取值

                index = 0;
                string        funcName    = FuncAndParamTagPKNO.Keys.ToList()[index];
                var           tagParms    = FuncAndParamTagPKNO.Values.ToList()[index];
                List <object> paramValues = new List <object>(); //参数值

                foreach (var tagpkno in tagParms)                //参数
                {
                    object             value;
                    FmsAssetTagSetting tagParam = DeviceTags.FirstOrDefault(s => s.PKNO == tagpkno.Key);

                    if (tagParam != null)
                    {
                        value = SafeConverter.SafeToStr(tagParam.CUR_VALUE);
                        //if ((CalculationType == 2) || (tagParam.VALUE_TYPE > 0 && tagParam.VALUE_TYPE < 20))
                        //{
                        //    value = SafeConverter.SafeToDouble(tagParam.CUR_VALUE);
                        //}
                        //else
                        //{
                        //    value = SafeConverter.SafeToStr(tagParam.CUR_VALUE);
                        //}
                    }
                    else
                    {
                        value = "";
                    }

                    paramValues.Add(value);
                }

                object obj = dynamicCode.InvokeMember(funcName,
                                                      BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod,
                                                      System.Type.DefaultBinder, null, paramValues.ToArray());

                string newValue = "";     //新的计算结果

                if (CalculationType == 1) //逻辑运算
                {
                    newValue = SafeConverter.SafeToBool(obj) ? "1" : "0";
                }
                else
                {
                    newValue = SafeConverter.SafeToStr(obj);
                }

                Console.WriteLine("测试结果:" + newValue);

                TbTestResult.Text = newValue;

                #endregion

                WPFMessageBox.ShowInfo("测试成功. \r\n测试结果为:" + newValue, "测试");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                WPFMessageBox.ShowError("测试失败,错误为:" + ex.Message, "测试");
            }
            finally
            {
                Cursor = Cursors.Arrow;
            }
        }
示例#10
0
        private void Btn_Start2Click(object sender, RoutedEventArgs e)
        {
            WcfClient <IPLMService> ws2     = new WcfClient <IPLMService>();
            string             LineCode     = CBaseData.CurLinePKNO;//加工单元
            List <MesJobOrder> mesJobOrders =
                ws2.UseService(s =>
                               s.GetMesJobOrders(
                                   $"USE_FLAG = 1 AND RUN_STATE < 100 AND LINE_PKNO = '{LineCode}'"))
                .OrderBy(c => c.CREATION_DATE).ToList();

            if (mesJobOrders.Count > 20)
            {
                WaitLoading.SetDefault(this);
                WPFMessageBox.ShowError("当前订单过多,请等待加工完成", "加工工单");
                return;
            }

            if (WPFMessageBox.ShowConfirm("确定下达加工工单么吗?\r\n" +
                                          "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n",
                                          "加工工单") != WPFMessageBoxResult.OK)
            {
                return;
            }

            //后台执行添加
            new Thread(delegate()
            {
                WaitLoading.SetWait(this);
                Thread.Sleep(1000);

                DateTime jobOrderTime = DateTime.Now.AddSeconds(-10);
                int iJobOrderIndex    = 0;

                List <MesJobOrder> jobOrders             = new List <MesJobOrder>();       //所有订单
                List <MesProcessCtrol> processCtrols     = new List <MesProcessCtrol>();   //控制流程
                List <WmsAllocationInfo> allocationInfos = new List <WmsAllocationInfo>(); //需要修改的货位

                Dictionary <string, string> ParamValues = new Dictionary <string, string>();
                MesJobOrder job     = null;
                string sFormulaCode = "";
                List <FmsActionFormulaDetail> formulaDetails;
                List <RsItemMaster> items = wsRsm.UseService(s => s.GetRsItemMasters("USE_FLAG = 1"));

                RsItemMaster gyroscope = items.FirstOrDefault(c => c.ITEM_NAME == "指尖陀螺"); //产品信息


                #region 2.车床上料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text);

                #endregion

                sFormulaCode = "车床上料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 3.加工中心上料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text);

                #endregion

                sFormulaCode = "加工中心上料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.1.AGV充电



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text);

                #endregion

                sFormulaCode = "AGV充电";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.2 加工中心先下料再上料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "加工中心先下料再上料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.3.AGV充电



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "AGV充电";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.4 加工中心先下料再上料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "加工中心先下料再上料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion


                #region 4.3.AGV充电



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "AGV充电";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.4 加工中心先下料再上料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "加工中心先下料再上料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 4.3.AGV充电



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                //ParamValues.Add("{加工数量}", this.txt_Qty2.Text); //生产设备

                #endregion

                sFormulaCode = "AGV充电";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 5.加工中心下料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text);

                #endregion

                sFormulaCode = "加工中心下料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion

                #region 6.车床下料



                job = BuildNewJobOrder(gyroscope.PKNO, 2, "陀螺生产", jobOrderTime.AddSeconds(iJobOrderIndex++)); //--形成订单--
                jobOrders.Add(job);

                #region --设定参数--

                ParamValues.Clear();
                ParamValues.Add("{图片名称}", LaserPicName); //定制图片
                                                         //ParamValues.Add("{加工数量}", this.txt_Qty2.Text);

                #endregion

                sFormulaCode = "车床下料";

                #region 形成过程控制

                formulaDetails = wsFms.UseService(s =>
                                                  s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                 .OrderBy(c => c.PROCESS_INDEX)
                                 .ToList();

                foreach (var detail in formulaDetails) //配方
                {
                    MesProcessCtrol process = BuildNewProcess(job, detail, ParamValues);

                    processCtrols.Add(process);
                }

                #endregion

                #endregion



                DeviceProcessControl.PauseByLine(CBaseData.CurLinePKNO); //暂停,防止任务直接执行

                #region 保存数据

                foreach (var allocationInfo in allocationInfos)
                {
                    ws.UseService(s => s.UpdateWmsAllocationInfo(allocationInfo));
                    Thread.Sleep(100);
                }

                foreach (var ctrol in processCtrols)
                {
                    wsPlm.UseService(s => s.AddMesProcessCtrol(ctrol));
                    Thread.Sleep(100);
                }

                foreach (var jobOrder in jobOrders) //订单
                {
                    wsPlm.UseService(s => s.AddMesJobOrder(jobOrder));
                    Thread.Sleep(100);
                }

                #endregion

                DeviceProcessControl.RunByLine(CBaseData.CurLinePKNO); //启动动作流程

                WaitLoading.SetDefault(this);

                WPFMessageBox.ShowInfo("FCS订单已下达", "指尖陀螺加工");
            }).Start();
        }
示例#11
0
 private void bTestMessageBoxError_Click(object sender, RoutedEventArgs e)
 {
     WPFMessageBox.ShowError((sender as Button).Content.ToString(), "测试");
 }
示例#12
0
        private void BtnAutoChange_Click(object sender, RoutedEventArgs e)
        {
            TmsToolsMaster    mToolsMasterUp     = GridControlInvTool.SelectedItem as TmsToolsMaster;       //库存
            TmsDeviceToolsPos mTmsDeviceToolsPos = GridControlDeviceTool.SelectedItem as TmsDeviceToolsPos; //机床刀位信息

            if (mToolsMasterUp == null)
            {
                return;
            }

            if (mTmsDeviceToolsPos == null)
            {
                return;
            }

            AmAssetMasterN asset = ComAsset.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                WPFMessageBox.ShowError("请选择机床信息!", "自动换刀管理");
                return;
            }

            TmsToolsMaster mToolsMasterDown =
                ws.UseService(s => s.GetTmsToolsMasterById(mTmsDeviceToolsPos.TOOLS_PKNO));

            if (mToolsMasterDown == null)
            {
                WPFMessageBox.ShowError("选中的需要换下的机床刀具信息不存在,请核实!", "自动换刀管理");
                return;
            }

            MesJobOrder            jobOrder      = null;
            WmsInventory           inv           = null;
            List <MesProcessCtrol> processCtrols = new List <MesProcessCtrol>();

            #region 形成工单

            jobOrder = new MesJobOrder()
            {
                PKNO                = CBaseData.NewGuid(),
                COMPANY_CODE        = CBaseData.BelongCompPKNO,
                LINE_PKNO           = CBaseData.CurLinePKNO,
                LINE_TASK_PKNO      = "", //产线任务PKNO
                ITEM_PKNO           = "", // TODO:暂无
                JOB_ORDER_NO        = TableNOHelper.GetNewNO("MES_JOB_ORDER.JOB_ORDER_NO", "J"),
                BATCH_NO            = "自动换刀",
                ROUTING_DETAIL_PKNO = "",
                JOB_ORDER_TYPE      = 2, //工单类型 1:原料入库;2:加工;3:成品出库;4:转换
                TASK_QTY            = 1,
                COMPLETE_QTY        = 0,
                ONLINE_QTY          = 0,
                ONCE_QTY            = 0,
                RUN_STATE           = 10, //直接生产
                CREATION_DATE       = DateTime.Now,
                CREATED_BY          = CBaseData.LoginNO,
                LAST_UPDATE_DATE    = DateTime.Now, //最后修改日期
                USE_FLAG            = 1,
                REMARK              = "",
            };

            #endregion

            #region 增加参数

            Dictionary <string, string> ParamValues = new Dictionary <string, string>();

            ParamValues.Add("{机床刀号}", mTmsDeviceToolsPos.TOOLS_POS_NO);                                       //机床刀号
            ParamValues.Add("{卸下刀具编号}", mToolsMasterDown.TOOLS_CODE.PadRight(25));                            //卸下刀具编号
            ParamValues.Add("{装上刀具编号}", mToolsMasterUp.TOOLS_CODE.PadRight(25));                              //装上刀具编号
            ParamValues.Add("{装上刀具PKNO}", mToolsMasterUp.PKNO);                                               //装上刀具PKNO
            ParamValues.Add("{卸下刀具PKNO}", mToolsMasterDown.PKNO);                                             //卸下刀具PKNO
            ParamValues.Add("{长度形状补偿}", SafeConverter.SafeToStr(mToolsMasterUp.COMPENSATION_SHAPE_LENGTH));   //长度形状补偿 - 装上
            ParamValues.Add("{半径形状补偿}", SafeConverter.SafeToStr(mToolsMasterUp.COMPENSATION_SHAPE_DIAMETER)); //半径形状补偿 - 装上

            ParamValues.Add("{卸下刀位PKNO}", mTmsDeviceToolsPos.PKNO);                                           //卸下刀位PKNO
            ParamValues.Add("{装上刀位PKNO}", mTmsDeviceToolsPos.PKNO);                                           //装上刀位PKNO

            ParamValues.Add("{装刀机床PKNO}", asset?.PKNO);                                                       //装刀机床PKNO

            #endregion

            string sFormulaCode = "换刀-" + asset.ASSET_CODE;

            List <FmsActionFormulaDetail> formulaDetails = wsFms.UseService(s =>
                                                                            s.GetFmsActionFormulaDetails($"FORMULA_CODE = '{sFormulaCode}' AND USE_FLAG= 1"))
                                                           .OrderBy(c => c.PROCESS_INDEX)
                                                           .ToList();

            foreach (var detail in formulaDetails)  //配方
            {
                MesProcessCtrol process = new MesProcessCtrol()
                {
                    #region 标准信息

                    PKNO                = CBaseData.NewGuid(),
                    COMPANY_CODE        = CBaseData.BelongCompPKNO,
                    ITEM_PKNO           = "", //成品PKNO TODO:暂无
                    JOB_ORDER_PKNO      = jobOrder.PKNO,
                    JOB_ORDER           = jobOrder.JOB_ORDER_NO,
                    SUB_JOB_ORDER_NO    = "",
                    ROUTING_DETAIL_PKNO = "",  //

                    #endregion

                    PROCESS_CTROL_NAME      = detail.FORMULA_DETAIL_NAME,                                                       //名称
                    PROCESS_DEVICE_PKNO     = ProcessParamReplace.Replace(detail.PROCESS_DEVICE_PKNO, ParamValues),             //生产设备
                    PROCESS_PROGRAM_NO      = ProcessParamReplace.Replace(detail.PROCESS_PROGRAM_NO, ParamValues),              //加工程序号
                    PROCESS_PROGRAM_CONTENT = detail.PROCESS_PROGRAM_CONTENT,                                                   //加工程序内容
                    PROCESS_INDEX           = detail.PROCESS_INDEX,                                                             //工序顺序

                    BEGIN_ITEM_PKNO  = ProcessParamReplace.Replace(detail.BEGIN_ITEM_PKNO, ParamValues),                        //生产前项目PKNO
                    FINISH_ITEM_PKNO = ProcessParamReplace.Replace(detail.FINISH_ITEM_PKNO, ParamValues),                       //生产后项目PKNO
                    BEGIN_POSITION   = ProcessParamReplace.Replace(detail.BEGIN_POSITION, ParamValues),                         //生产前位置
                    FINISH_POSITION  = ProcessParamReplace.Replace(detail.FINISH_POSITION, ParamValues),                        //生产后位置

                    PALLET_NO           = detail.PALLET_NO,                                                                     //托盘号
                    PROCESS_ACTION_TYPE = detail.PROCESS_ACTION_TYPE,                                                           //工序动作类型
                    PROCESS_ACTION_PKNO = detail.PROCESS_ACTION_PKNO,                                                           //工序动作控制PKNO

                    PROCESS_ACTION_PARAM1_VALUE = ProcessParamReplace.Replace(detail.PROCESS_ACTION_PARAM1_VALUE, ParamValues), //工序动作参数1
                    PROCESS_ACTION_PARAM2_VALUE = ProcessParamReplace.Replace(detail.PROCESS_ACTION_PARAM2_VALUE, ParamValues), //工序动作参数2

                    CUR_PRODUCT_CODE_PKNO = "",                                                                                 //当前生产加工的产品编码PKNO
                    PROCESS_QTY           = 1,                                                                                  //加工数量(上线数量)
                    COMPLETE_QTY          = 0,                                                                                  //完成数量
                    QUALIFIED_QTY         = 0,                                                                                  //合格数量
                    PROCESS_STATE         = 1,                                                                                  //准备完成

                    CREATION_DATE    = DateTime.Now,                                                                            //创建日期
                    CREATED_BY       = CBaseData.LoginNO,                                                                       //创建人
                    LAST_UPDATE_DATE = DateTime.Now,                                                                            //最后修改日期
                    USE_FLAG         = detail.USE_FLAG,                                                                         //启用标识
                    REMARK           = "",                                                                                      //备注
                };

                processCtrols.Add(process);
            }

            Cursor = Cursors.Wait;

            wsPLM.UseService(s => s.AddMesJobOrder(jobOrder));

            foreach (MesProcessCtrol processCtrol in processCtrols)
            {
                wsPLM.UseService(s => s.AddMesProcessCtrol(processCtrol));
            }

            Cursor = Cursors.Arrow;

            MessageBox.Show("换刀下单成功.");
            GridControlInvTool.ItemsSource = ws.UseService(s => s.GetTmsToolsMasters("USE_FLAG > 0 AND TOOLS_POSITION = 1")).OrderBy(n => n.CREATION_DATE).ToList();;
        }
示例#13
0
        //获取刀具补偿,需要读取zoller对刀仪数据--共享文件夹
        private void BtnGetToolCompensation_Click(object sender, RoutedEventArgs e)
        {
            TmsToolsMaster m_TmsToolsMaster = gridItem.SelectedItem as TmsToolsMaster;

            if (m_TmsToolsMaster == null)
            {
                return;
            }

            string path = @"C:\\ZOLLER\\";

            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (Exception exception)
                {
                    Console.WriteLine(exception);
                    return;
                }
            }

            try
            {
                bool          isHave = false;
                DirectoryInfo folder = new DirectoryInfo(path);

                foreach (FileInfo fileitem in folder.GetFiles("*.txt"))
                {
                    Console.WriteLine(fileitem.FullName);
                    if (fileitem.FullName.Contains(m_TmsToolsMaster.TOOLS_CODE))
                    {
                        isHave = true;
                        byte[]     byData   = new byte[10000];
                        char[]     charData = new char[10000];
                        FileStream file     = new FileStream(path + m_TmsToolsMaster.TOOLS_CODE + ".TXT", FileMode.Open);

                        file.Seek(0, SeekOrigin.Begin);
                        file.Read(byData, 0, 1000); //byData传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.

                        Decoder d = Encoding.UTF8.GetDecoder();
                        d.GetChars(byData, 0, byData.Length, charData, 0);
                        Console.WriteLine(charData);
                        string z = ""; bool flagz = false;
                        string x = ""; bool flagx = false;
                        int    ncount = 0;
                        foreach (char item in charData)
                        {
                            if (item == '\n')
                            {
                                ncount++;
                                if (ncount > 1)
                                {
                                    if (z == "")
                                    {
                                        flagz = true;
                                    }
                                    else
                                    {
                                        flagz = false;
                                        flagx = true;
                                    }
                                }
                            }
                            if (flagz)
                            {
                                z += item;
                            }
                            if (flagx)
                            {
                                x += item;
                            }
                        }

                        file.Close();
                        z = z.Split('\t')[10];
                        x = x.Split('\t')[10];

                        m_TmsToolsMaster.COMPENSATION_SHAPE_DIAMETER = decimal.Parse(x);
                        m_TmsToolsMaster.COMPENSATION_SHAPE_LENGTH   = decimal.Parse(z);
                        text_X.Text = x;
                        text_Z.Text = z;
                        fileitem.Delete();
                        BFM.WPF.Base.Helper.BindHelper.SetDictDataBindingGridItem(dictInfo, gridItem);
                    }
                }

                if (isHave == false)
                {
                    WPFMessageBox.ShowError("未获取到刀补,请在对刀仪上生成刀补数据", "获取刀补");
                }
            }
            catch (Exception exception)
            {
                WPFMessageBox.ShowError("未获取到刀补,请在对刀仪上生成刀补数据", "获取刀补");
                Console.WriteLine("未获取到刀补,请在对刀仪上生成刀补数据");
            }
        }