Example #1
0
        private void BtnChange_Click(object sender, RoutedEventArgs e)
        {
            TmsToolsMaster    mToolsMaster       = GridControlInvTool.SelectedItem as TmsToolsMaster;
            TmsDeviceToolsPos mTmsDeviceToolsPos = GridControlDeviceTool.SelectedItem as TmsDeviceToolsPos;

            if (mToolsMaster != null)
            {
                if (mTmsDeviceToolsPos != null)
                {
                    TmsToolsMaster mToolsMasterold = ws.UseService(s => s.GetTmsToolsMasterById(mTmsDeviceToolsPos.TOOLS_PKNO));
                    if (mToolsMasterold != null)
                    {
                        mToolsMasterold.TOOLS_POSITION      = 0;
                        mToolsMasterold.TOOLS_POSITION_PKNO = "";
                        ws.UseService(s => s.UpdateTmsToolsMaster(mToolsMasterold));
                    }
                    mTmsDeviceToolsPos.TOOLS_PKNO  = mToolsMaster.PKNO;
                    mTmsDeviceToolsPos.TOOLS_STATE = 1;
                    mTmsDeviceToolsPos.UPDATED_BY  = CBaseData.LoginName;
                    ws.UseService(s => s.UpdateTmsDeviceToolsPos(mTmsDeviceToolsPos));
                }

                mToolsMaster.TOOLS_POSITION      = 2;
                mToolsMaster.TOOLS_POSITION_PKNO = mTmsDeviceToolsPos.DEVICE_PKNO;
                ws.UseService(s => s.UpdateTmsToolsMaster(mToolsMaster));
                GridControlInvTool.ItemsSource = ws.UseService(s => s.GetTmsToolsMasters("USE_FLAG > 0"));
            }
        }
Example #2
0
        //装刀
        private void bChangeUp_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            TmsDeviceToolsPos toolsPos = gridChangeTools.SelectedItem as TmsDeviceToolsPos;

            if (toolsPos == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(mainToolsNO))  //主轴刀号为空
            {
                MessageBox.Show($"未获取到主轴上刀号信息,请先获取主轴刀号信息。", "装刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (mainToolsNO != toolsPos.TOOLS_POS_NO) //选中的刀号信息
            {
                MessageBox.Show($"主轴上刀号为【{mainToolsNO}】,当前选中的需要装刀为【{toolsPos.TOOLS_POS_NO}】,不能装上该刀。", "装刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (toolsPos.TOOLS_STATE == 2) //等待装刀
            {
                if (MessageBox.Show($"刀位[{toolsPos.TOOLS_POS_NO}]已经是等待装刀状态,确定要!装刀!吗?", "装刀",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                toolsPos.TOOLS_STATE    = 1;                       //空位置
                toolsPos.TOOLS_PKNO     = toolsPos.NEW_TOOLS_PKNO; //将新刀装上
                toolsPos.NEW_TOOLS_PKNO = "";                      //清除新刀信息
            }
            else                                                   //其他
            {
                MessageBox.Show($"刀位[{toolsPos.TOOLS_POS_NO}]的状态不正确,不能进行装刀处理!", "装刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #region 刀具台账出库到机床

            TmsToolsMaster toolsMaster = wsTMS.UseService(s => s.GetTmsToolsMasterById(toolsPos.TOOLS_PKNO));
            if (toolsMaster != null)
            {
                toolsMaster.TOOLS_POSITION      = 2;                        //出库到机床
                toolsMaster.TOOLS_POSITION_PKNO = toolsPos.DEVICE_PKNO;     //机床
                wsTMS.UseService(s => s.UpdateTmsToolsMaster(toolsMaster)); //修改库存
            }

            #endregion

            //TODO:与CNC通讯,装刀处理
            //TODO:修改刀补
            wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(toolsPos));  //完成换刀

            GetPage();
        }
Example #3
0
 /// <summary>
 /// 根据关键字段的值获取记录
 /// </summary>
 /// <param name="Id">关键字段的值</param>
 /// <returns>符合查询条件的记录</returns>
 //[WebMethod(Description = "按Id查找TmsDeviceToolsPos")]
 public TmsDeviceToolsPos GetTmsDeviceToolsPosById(string Id)
 {
     using (ITmsDeviceToolsPosBLL TmsDeviceToolsPosBLL = BLLContainer.Resolve <ITmsDeviceToolsPosBLL>())
     {
         TmsDeviceToolsPos model = TmsDeviceToolsPosBLL.GetFirstOrDefault(Id);
         return(model);
     }
 }
Example #4
0
        /// <summary>
        /// 获取主轴刀号信息
        /// </summary>
        private void GetMainToolsInfo()
        {
            TmsDeviceToolsPos toolsPos = gridChangeTools.SelectedItem as TmsDeviceToolsPos;

            if (toolsPos == null)
            {
                return;
            }
            //获取主轴刀号
            FmsAssetTagSetting tagSetting =
                wsFMS.UseService(
                    s =>
                    s.GetFmsAssetTagSettings(
                        $"USE_FLAG = 1 AND ASSET_CODE = '{toolsPos.DEVICE_PKNO}' AND TAG_NAME = '主轴刀号'"))
                .FirstOrDefault();

            if (tagSetting == null)
            {
                tbMainToolsNO.Text = "【主轴刀号】的Tag地址未设置!";
                return;
            }
            FmsAssetCommParam device =
                wsFMS.UseService(s => s.GetFmsAssetCommParams($"USE_FLAG = 1 AND ASSET_CODE = '{toolsPos.DEVICE_PKNO}'"))
                .FirstOrDefault();

            if (device == null)
            {
                tbMainToolsNO.Text = "设备未设置通讯信息!";
                return;
            }
            string commAddress = device.COMM_ADDRESS;
            DeviceCommInterface interfaceType = EnumHelper.ParserEnumByValue(device.INTERFACE_TYPE, DeviceCommInterface.CNC_Fanuc);
            int period = Convert.ToInt32(device.SAMPLING_PERIOD);  //采样周期

            DeviceManager deviceCommunication = new DeviceManager(device.PKNO, interfaceType, commAddress, period * 1000);

            List <DeviceTagParam> deviceTags = new List <DeviceTagParam>();
            DeviceTagParam        deviceTag  = new DeviceTagParam(tagSetting.PKNO, tagSetting.TAG_CODE,
                                                                  tagSetting.TAG_NAME, tagSetting.TAG_ADDRESS,
                                                                  EnumHelper.ParserEnumByValue(tagSetting.VALUE_TYPE, TagDataType.Default),
                                                                  EnumHelper.ParserEnumByValue(tagSetting.SAMPLING_MODE, DataSimplingMode.AutoReadDevice),
                                                                  deviceCommunication); //通讯参数

            deviceTags.Add(deviceTag);                                                  //添加

            deviceCommunication.InitialDevice(deviceTags, null);

            string error   = "";
            string sResult = deviceCommunication.SyncReadData(tagSetting.TAG_ADDRESS, out error);

            if (error != "")
            {
                mainToolsNO = sResult;
            }

            tbMainToolsNO.Text = (error == "") ? "主轴刀号:T" + sResult : "读取主轴刀号错误,代码 " + error;
        }
Example #5
0
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="mTmsDeviceToolsPos">模型</param>
 /// <returns>是否成功</returns>
 //[WebMethod(Description = "新建TmsDeviceToolsPos")]
 public bool AddTmsDeviceToolsPos(TmsDeviceToolsPos mTmsDeviceToolsPos)
 {
     if (mTmsDeviceToolsPos == null)
     {
         return(false);
     }
     using (ITmsDeviceToolsPosBLL TmsDeviceToolsPosBLL = BLLContainer.Resolve <ITmsDeviceToolsPosBLL>())
     {
         return(TmsDeviceToolsPosBLL.Add(mTmsDeviceToolsPos));
     }
 }
Example #6
0
 /// <summary>
 /// 按照关键字段删除
 /// </summary>
 /// <param name="Id">关键字段</param>
 /// <returns>是否成功</returns>
 //[WebMethod(Description = "删除TmsDeviceToolsPos")]
 public bool DelTmsDeviceToolsPos(string Id)
 {
     using (ITmsDeviceToolsPosBLL TmsDeviceToolsPosBLL = BLLContainer.Resolve <ITmsDeviceToolsPosBLL>())
     {
         try
         {
             TmsDeviceToolsPos item = TmsDeviceToolsPosBLL.GetFirstOrDefault(Id);
             return(TmsDeviceToolsPosBLL.Delete(item));
         }
         catch { return(false); }
     }
 }
Example #7
0
        /// <summary>
        /// 装刀动作
        /// </summary>
        /// <param name="newToolPkno">库存出库刀具</param>
        /// <param name="oldToolPkno">机床上需要更换刀具</param>
        /// <param name="startingpos">起始位置</param>
        /// <param name="endpos">终点位置</param>
        private static void InstallToolAction(string newToolPkno, string oldToolPkno,
                                              string startingpos, string endpos)
        {
            TmsToolsMaster mToolsMaster = ws.UseService(s => s.GetTmsToolsMasterById(newToolPkno));

            mToolsMaster.TOOLS_POSITION = 2;//设备上
            ws.UseService(s => s.UpdateTmsToolsMaster(mToolsMaster));
            //刀位逻辑 todo:尚未完成先卸刀再装刀逻辑
            TmsDeviceToolsPos mDeviceToolsPos = ws.UseService(s => s.GetTmsDeviceToolsPoss("TOOLS_PKNO = " + oldToolPkno + " ")).FirstOrDefault();

            if (mDeviceToolsPos != null)
            {
                mDeviceToolsPos.TOOLS_PKNO = newToolPkno;
            }
        }
Example #8
0
 /// <summary>
 /// 按照关键字段删除
 /// </summary>
 /// <param name="Ids">关键字段数组</param>
 /// <returns>是否成功</returns>
 //[WebMethod(Description = "删除(多个)TmsDeviceToolsPos")]
 public bool DelTmsDeviceToolsPoss(string[] Ids)
 {
     using (ITmsDeviceToolsPosBLL TmsDeviceToolsPosBLL = BLLContainer.Resolve <ITmsDeviceToolsPosBLL>())
     {
         try
         {
             List <TmsDeviceToolsPos> entitys = new List <TmsDeviceToolsPos>();
             foreach (string id in Ids)
             {
                 TmsDeviceToolsPos item = TmsDeviceToolsPosBLL.GetFirstOrDefault(id);
                 entitys.Add(item);
             }
             return(TmsDeviceToolsPosBLL.Delete(entitys));
         }
         catch { return(false); }
     }
 }
Example #9
0
        private void bToolsChange_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            //换刀 向CNC发送换刀动作
            TmsDeviceToolsPos toolsPos = gridChangeTools.SelectedItem as TmsDeviceToolsPos;

            if (toolsPos == null)
            {
                return;
            }
            //获取主轴刀号
            FmsAssetTagSetting tagSetting =
                wsFMS.UseService(
                    s =>
                    s.GetFmsAssetTagSettings(
                        $"USE_FLAG = 1 AND ASSET_CODE = '{toolsPos.DEVICE_PKNO}' AND TAG_NAME = '机床换刀'"))
                .FirstOrDefault();

            if (tagSetting == null)
            {
                tbMainToolsNO.Text = "【机床换刀】的Tag地址未设置!";
                return;
            }
            FmsAssetCommParam device =
                wsFMS.UseService(s => s.GetFmsAssetCommParams($"USE_FLAG = 1 AND ASSET_CODE = '{toolsPos.DEVICE_PKNO}'"))
                .FirstOrDefault();

            if (device == null)
            {
                tbMainToolsNO.Text = "设备未设置通讯信息!";
                return;
            }
            string commAddress   = device.COMM_ADDRESS;
            int    interfaceType = device.INTERFACE_TYPE;
            int    period        = Convert.ToInt32(device.SAMPLING_PERIOD); //采样周期

            OperateResult ret = DeviceHelper.WriteDataByAddress(device.ASSET_CODE, interfaceType, commAddress,
                                                                tagSetting.PKNO, tagSetting.TAG_ADDRESS, toolsPos.TOOLS_POS_NO);

            tbMainToolsNO.Text = (ret.IsSuccess) ? "机床换刀准备 " + toolsPos.TOOLS_POS_NO : "发送换刀指令错误,代码 " + ret.Message;

            if (ret.IsSuccess)
            {
                mainToolsNO = "";                 //开始换刀
            }
        }
Example #10
0
        /// <summary>
        /// 换刀动作
        /// </summary>
        /// <param name="newToolPkno">库存出库刀具</param>
        /// <param name="oldToolPkno">机床上需要更换刀具</param>
        /// <param name="startingpos">起始位置</param>
        /// <param name="endpos">终点位置</param>
        private static void ToolChangeAction(string newToolPkno, string oldToolPkno,
                                             string startingpos, string endpos)
        {
            //台账逻辑
            TmsToolsMaster mToolsMasterNew = ws.UseService(s => s.GetTmsToolsMasterById(newToolPkno));

            mToolsMasterNew.TOOLS_POSITION = 2;//设备上
            ws.UseService(s => s.UpdateTmsToolsMaster(mToolsMasterNew));
            TmsToolsMaster mToolsMasterOld = ws.UseService(s => s.GetTmsToolsMasterById(oldToolPkno));

            mToolsMasterOld.TOOLS_POSITION = 1;//回库中
            ws.UseService(s => s.UpdateTmsToolsMaster(mToolsMasterOld));
            //刀位逻辑
            TmsDeviceToolsPos mDeviceToolsPos = ws.UseService(s => s.GetTmsDeviceToolsPoss("TOOLS_PKNO = " + oldToolPkno + " ")).FirstOrDefault();

            if (mDeviceToolsPos != null)
            {
                mDeviceToolsPos.TOOLS_PKNO = newToolPkno;
            }
        }
Example #11
0
        private void BtnMod_Click(object sender, RoutedEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            TmsDeviceToolsPos m_TmsDeviceToolsPos = gridItem.SelectedItem as TmsDeviceToolsPos;

            if (m_TmsDeviceToolsPos == null)
            {
                return;
            }
            //修改
            gbItem.IsCollapsed  = false;
            dictInfo.Header     = "设备刀位信息  【修改】";
            dictInfo.Visibility = Visibility.Visible;

            dictInfo.DataContext = m_TmsDeviceToolsPos;
        }
Example #12
0
        private void gridItem_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            TmsDeviceToolsPos m_TmsDeviceToolsPos = gridItem.SelectedItem as TmsDeviceToolsPos;

            if (m_TmsDeviceToolsPos == null)
            {
                return;
            }
            //修改
            gbItem.IsCollapsed  = false;
            dictInfo.Header     = "设备刀位信息  【修改】";
            dictInfo.Visibility = Visibility.Visible;

            dictInfo.DataContext = m_TmsDeviceToolsPos;
        }
Example #13
0
        private void BtnAdd_Click(object sender, RoutedEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            gbItem.IsCollapsed = false;
            //新增
            dictInfo.Header     = "设备刀位信息  【新增】";
            dictInfo.Visibility = Visibility.Visible;

            TmsDeviceToolsPos m_TmsDeviceToolsPos = new TmsDeviceToolsPos()
            {
                DEVICE_PKNO = asset.PKNO,
                TOOLS_PKNO  = "",
                TOOLS_STATE = 0,  //空
                USE_FLAG    = 1,
            };

            dictInfo.DataContext = m_TmsDeviceToolsPos;
        }
Example #14
0
        private void BtnDel_Click(object sender, RoutedEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            //删除
            TmsDeviceToolsPos m_TmsDeviceToolsPos = gridItem.SelectedItem as TmsDeviceToolsPos;

            if (m_TmsDeviceToolsPos == null)
            {
                return;
            }
            if (WPFMessageBox.ShowConfirm($"确定删除设备刀位【{m_TmsDeviceToolsPos.TOOLS_POS_NO}】的信息吗?", @"删除信息") == WPFMessageBoxResult.OK)
            {
                m_TmsDeviceToolsPos.USE_FLAG = -1;
                ws.UseService(s => s.UpdateTmsDeviceToolsPos(m_TmsDeviceToolsPos));

                //删除成功.
                GetPage();  //重新加载
            }
        }
Example #15
0
        //排刀
        private void bToolsBindDevice_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            //排刀
            string detailPKNO = SafeConverter.SafeToStr(ClassHelper.GetPropertyValue(gridToolsFinal.SelectedItem, "PKNO"));

            TmsDeviceToolsPos deviceToolsPos = wsTMS.UseService(s => s.GetTmsDeviceToolsPosById(detailPKNO));

            if (deviceToolsPos == null)
            {
                return;
            }
            TmsToolsMaster toolsMaster = gridToolsInv.SelectedItem as TmsToolsMaster;

            if (toolsMaster == null)
            {
                MessageBox.Show($"请选择相应的库存刀具!", "排入刀具", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            TmsDeviceToolsPos check =
                wsTMS
                .UseService(s => s.GetTmsDeviceToolsPoss($"USE_FLAG = 1 AND DEVICE_PKNO = '{deviceToolsPos.DEVICE_PKNO}'"))
                .FirstOrDefault(c => c.TOOLS_PKNO == toolsMaster.PKNO || c.NEW_TOOLS_PKNO == toolsMaster.PKNO);

            #region 排刀

            if (deviceToolsPos.TOOLS_STATE == 0) //空刀位
            {
                if (check != null)
                {
                    MessageBox.Show($"该刀具[{toolsMaster.TOOLS_CODE}]已经是{(check.TOOLS_STATE == 1 ? "在位" : "已排入")}状态,不能再排入!", "排入刀具",
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                deviceToolsPos.TOOLS_STATE = 2; //已排入
                //deviceToolsPos.TOOLS_PKNO = toolsMaster.PKNO;
                deviceToolsPos.NEW_TOOLS_PKNO   = toolsMaster.PKNO;
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】排入刀具. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 1) //刀具在位
            {
                MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]不为空,不能再排入刀。", "排入刀具", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }
            else if (deviceToolsPos.TOOLS_STATE == 2) //已排入
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已经是排入状态,确定要!取消排入!吗?", "排入刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                deviceToolsPos.TOOLS_STATE = 0; //=>空
                //deviceToolsPos.TOOLS_PKNO = "";
                deviceToolsPos.NEW_TOOLS_PKNO   = "";
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消排入. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 2) //已经移除 => 更换
            {
                if (check != null)
                {
                    MessageBox.Show($"该刀具[{toolsMaster.TOOLS_CODE}]已经是{(check.TOOLS_STATE == 1 ? "在位" : "已排入")}状态,不能再排入!", "排入刀具",
                                    MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                deviceToolsPos.TOOLS_STATE      = 10;               //=>更换
                deviceToolsPos.NEW_TOOLS_PKNO   = toolsMaster.PKNO; //刀具PKNO
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消更换. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 10)
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已经是更换刀具,确定要!取消更换!吗?", "排入刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                deviceToolsPos.TOOLS_STATE      = 1;  //刀具在位
                deviceToolsPos.NEW_TOOLS_PKNO   = ""; //清空刀号
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消更换刀具. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }

            #endregion

            GetPage();
        }
Example #16
0
        private const int ReWriteCount = 3;  //数据重写次数

        //下发刀补
        private void btnWriteToolsSet_Click(object sender, RoutedEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            TmsDeviceToolsPos mTmsDeviceToolsPos = gridItem.SelectedItem as TmsDeviceToolsPos;

            if (mTmsDeviceToolsPos == null)
            {
                return;
            }
            TmsToolsMaster tools = ws.UseService(s => s.GetTmsToolsMasterById(mTmsDeviceToolsPos.TOOLS_PKNO));

            if (tools == null)
            {
                return;
            }

            if (WPFMessageBox.ShowConfirm($"确定要将机床【{asset.ASSET_NAME}】上刀号【{mTmsDeviceToolsPos.TOOLS_POS_NO}】的补偿值覆盖吗?",
                                          "下发刀补") != WPFMessageBoxResult.OK)
            {
                return;
            }

            Cursor = Cursors.Wait;

            string tagName = "写入刀补";

            FmsAssetTagSetting tag = DeviceMonitor.GetTagSettings($"ASSET_CODE = '{asset.ASSET_CODE}' AND TAG_NAME = '{tagName}'").FirstOrDefault();

            if (tag == null)
            {
                Cursor = Cursors.Arrow;
                return;
            }

            //0:长度(形状);1:长度(磨损);2:半径(形状);3:半径(磨损)
            List <string> values = new List <string>();

            values.Add(mTmsDeviceToolsPos.TOOLS_POS_NO);              //机床刀号
            values.Add(tools.COMPENSATION_SHAPE_LENGTH.ToString());   //长度(形状)
            //values.Add(tools.COMPENSATION_ABRASION_LENGTH.ToString()); //长度(磨损)
            values.Add(tools.COMPENSATION_SHAPE_DIAMETER.ToString()); //半径(形状)
            //values.Add(tools.COMPENSATION_ABRASION_DIAMETER.ToString());  //半径(磨损)

            string offSetValue = string.Join("|", values.ToArray());

            #region  发刀补

            int    iWrite = 0;
            int    ret    = 0;
            string error  = "";

            while (iWrite < ReWriteCount)
            {
                ret = DeviceMonitor.WriteTagToDevice(tag.PKNO, offSetValue, out error);
                if (ret == 0)
                {
                    break;
                }
                iWrite++;
                Thread.Sleep(100);
            }

            #endregion

            Cursor = Cursors.Arrow;

            if (ret == 0)
            {
                WPFMessageBox.ShowTips("刀补值下发成功!", "下发刀补");
            }
        }
Example #17
0
        private void BtnSave_Click(object sender, RoutedEventArgs e)
        {
            AmAssetMasterN asset = cmbDeviceInfo.SelectedItem as AmAssetMasterN;

            if (asset == null)
            {
                return;
            }
            //保存
            TmsDeviceToolsPos m_TmsDeviceToolsPos = dictInfo.DataContext as TmsDeviceToolsPos;

            if (m_TmsDeviceToolsPos == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(m_TmsDeviceToolsPos.TOOLS_POS_NO))
            {
                WPFMessageBox.ShowWarring("请输入刀号!", "保存");
                return;
            }

            if (string.IsNullOrEmpty(m_TmsDeviceToolsPos.PKNO)) //新增
            {
                TmsDeviceToolsPos check =
                    ws.UseService(s => s.GetTmsDeviceToolsPoss($"TOOLS_POS_NO = '{m_TmsDeviceToolsPos.TOOLS_POS_NO}' AND DEVICE_PKNO = '{asset.PKNO}' AND USE_FLAG > 0 "))
                    .FirstOrDefault();
                if (check != null)
                {
                    WPFMessageBox.ShowWarring("该设备的刀位号已经存在,不能新增相同的刀位号!", "保存");
                    return;
                }

                m_TmsDeviceToolsPos.PKNO             = Guid.NewGuid().ToString("N");
                m_TmsDeviceToolsPos.CREATION_DATE    = DateTime.Now;
                m_TmsDeviceToolsPos.CREATED_BY       = CBaseData.LoginName;
                m_TmsDeviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;

                ws.UseService(s => s.AddTmsDeviceToolsPos(m_TmsDeviceToolsPos));
            }
            else  //修改
            {
                TmsDeviceToolsPos check =
                    ws.UseService(
                        s =>
                        s.GetTmsDeviceToolsPoss(
                            $"TOOLS_POS_NO = '{m_TmsDeviceToolsPos.TOOLS_POS_NO}' AND PKNO <> '{m_TmsDeviceToolsPos.PKNO}' AND DEVICE_PKNO = '{asset.PKNO}' AND USE_FLAG > 0 "))
                    .FirstOrDefault();
                if (check != null)
                {
                    WPFMessageBox.ShowWarring("该设备的刀位号已经存在,不能修改为该刀位号!", "保存");
                    return;
                }
                m_TmsDeviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                m_TmsDeviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                ws.UseService(s => s.UpdateTmsDeviceToolsPos(m_TmsDeviceToolsPos));
            }

            GetPage();  //重新加载

            gbItem.IsCollapsed = true;

            dictInfo.Visibility = Visibility.Collapsed;
        }
Example #18
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();;
        }
Example #19
0
        //卸刀
        private void bChangeDown_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            TmsDeviceToolsPos toolsPos = gridChangeTools.SelectedItem as TmsDeviceToolsPos;

            if (toolsPos == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(mainToolsNO))  //主轴刀号为空
            {
                MessageBox.Show($"未获取到主轴上刀号信息,请先获取主轴刀号信息。", "卸刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (mainToolsNO != toolsPos.TOOLS_POS_NO) //选中的刀号信息
            {
                MessageBox.Show($"主轴上刀号为【{mainToolsNO}】,当前选中的需要卸刀为【{toolsPos.TOOLS_POS_NO}】,不能卸下该刀。", "卸刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }


            if (toolsPos.TOOLS_STATE == 3) //等待卸刀
            {
                if (MessageBox.Show($"刀位[{toolsPos.TOOLS_POS_NO}]已经是等待卸刀状态,卸刀完成后不需要装刀,确定要!卸刀!吗?", "卸刀",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                toolsPos.TOOLS_STATE = 0;        //空位置
            }
            else if (toolsPos.TOOLS_STATE == 10) //等待更换
            {
                if (MessageBox.Show($"刀位[{toolsPos.TOOLS_POS_NO}]已经是换刀状态,卸刀完成还需要进行装刀处理,确定要!卸刀!吗?", "卸刀",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                toolsPos.TOOLS_STATE = 2; //更换完成,等待装刀
            }
            else                          //其他
            {
                MessageBox.Show($"刀位[{toolsPos.TOOLS_POS_NO}]的状态不正确,不能进行卸刀处理!", "卸刀",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            #region 刀具台账出库非机床

            TmsToolsMaster toolsMaster = wsTMS.UseService(s => s.GetTmsToolsMasterById(toolsPos.TOOLS_PKNO));
            if (toolsMaster != null)
            {
                toolsMaster.TOOLS_POSITION      = 10;                       //出库,非机床
                toolsMaster.TOOLS_POSITION_PKNO = "";                       //已出库
                wsTMS.UseService(s => s.UpdateTmsToolsMaster(toolsMaster)); //修改库存
            }

            #endregion

            toolsPos.TOOLS_PKNO = "";  //将旧刀卸下
            //TODO:与CNC通讯,卸刀处理
            //TODO:修改刀补
            wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(toolsPos));


            GetPage();
        }
Example #20
0
        private void BtnAutoChange_Click(object sender, RoutedEventArgs e)
        {
            TmsToolsMaster         mToolsMaster       = GridControlInvTool.SelectedItem as TmsToolsMaster;
            TmsDeviceToolsPos      mTmsDeviceToolsPos = GridControlDeviceTool.SelectedItem as TmsDeviceToolsPos;
            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>();

            #endregion

            string sFormulaCode = "换刀";

            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     = Replace(detail.PROCESS_DEVICE_PKNO, ParamValues),             //生产设备
                    PROCESS_PROGRAM_NO      = Replace(detail.PROCESS_PROGRAM_NO, ParamValues),              //加工程序号
                    PROCESS_PROGRAM_CONTENT = detail.PROCESS_PROGRAM_CONTENT,                               //加工程序内容
                    PROCESS_INDEX           = detail.PROCESS_INDEX,                                         //工序顺序
                    BEGIN_ITEM_PKNO         = Replace(detail.BEGIN_ITEM_PKNO, ParamValues),                 //生产前项目PKNO
                    FINISH_ITEM_PKNO        = Replace(detail.FINISH_ITEM_PKNO, ParamValues),                //生产后项目PKNO
                    BEGIN_POSITION          = Replace(detail.BEGIN_POSITION, ParamValues),                  //生产前位置
                    FINISH_POSITION         = 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 = Replace(detail.PROCESS_ACTION_PARAM1_VALUE, ParamValues), //工序动作参数1
                    PROCESS_ACTION_PARAM2_VALUE = 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")).OrderBy(n => n.CREATION_DATE).ToList();;
        }
Example #21
0
        //移除
        private void btnToolsUnBindDevice_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            //移除刀
            string detailPKNO = SafeConverter.SafeToStr(ClassHelper.GetPropertyValue(gridToolsFinal.SelectedItem, "PKNO"));

            TmsDeviceToolsPos deviceToolsPos = wsTMS.UseService(s => s.GetTmsDeviceToolsPosById(detailPKNO));

            if (deviceToolsPos == null)
            {
                return;
            }

            #region 移除刀

            if (deviceToolsPos.TOOLS_STATE == 0)
            {
                MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]为空,不能移除", "移除刀具", MessageBoxButtons.OK,
                                MessageBoxIcon.Warning);
                return;
            }
            else if (deviceToolsPos.TOOLS_STATE == 1)
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已在刀位,确定要移除吗?", "移除刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                deviceToolsPos.TOOLS_STATE      = 3; //刀具一处
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】刀具移除. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 3) //已经移除
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已经是移除状态,确定要!取消移除!吗?", "移除刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }

                deviceToolsPos.TOOLS_STATE      = 1; //刀具在位
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消移除. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 2) //已排入
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已排入等待装刀,确定要!取消排入!吗?", "移除刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }
                deviceToolsPos.TOOLS_STATE    = 0;  //刀具为空
                deviceToolsPos.NEW_TOOLS_PKNO = ""; //刀具PKNO

                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消排入. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }
            else if (deviceToolsPos.TOOLS_STATE == 10)
            {
                if (MessageBox.Show($"刀位[{deviceToolsPos.TOOLS_POS_NO}]已经是更换刀具,确定要!取消更换!吗?", "移除刀具",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
                {
                    return;
                }
                deviceToolsPos.TOOLS_STATE      = 1;  //刀具在位
                deviceToolsPos.NEW_TOOLS_PKNO   = ""; //清空刀号
                deviceToolsPos.UPDATED_BY       = CBaseData.LoginName;
                deviceToolsPos.LAST_UPDATE_DATE = DateTime.Now;
                deviceToolsPos.UPDATED_INTROD  += "【" + DateTime.Now + "】取消更换刀具. ";
                wsTMS.UseService(s => s.UpdateTmsDeviceToolsPos(deviceToolsPos));
            }

            #endregion

            GetPage();
        }