Пример #1
0
        public void Start()
        {
            int    offsetX = 0, offsetY = 0;
            string PrintMachineName = ConfigurationManager.AppSettings["PrintMachineName"].ToString();

            int.TryParse(ConfigurationManager.AppSettings["Offset_X"].ToString(), out offsetX);
            int.TryParse(ConfigurationManager.AppSettings["Offset_Y"].ToString(), out offsetY);

            //默认打码机名称
            var defaultPrintName = string.Empty;

            if (string.IsNullOrEmpty(PrintMachineName))
            {
                foreach (string item in PrinterSettings.InstalledPrinters)
                {
                    if (item.ToLower().Contains("honeywell"))
                    {
                        defaultPrintName = item;
                        break;
                    }
                }
            }
            else
            {
                defaultPrintName = PrintMachineName;
            }

            try
            {
                var server = new WebSocketServer("ws://0.0.0.0:45000");
                server.Start(socket =>
                {
                    socket.OnOpen = () =>
                    {
                        socket.Send(JsonConvert.SerializeObject(new
                        {
                            code = "info",
                            msg  = "socket通讯已连接!"
                        }));
                    };
                    socket.OnClose = () =>
                    {
                        socket.Send(JsonConvert.SerializeObject(new
                        {
                            code = "info",
                            msg  = "socket通讯已关闭!"
                        }));
                        socket.Close();
                    };
                    socket.OnMessage = message =>
                    {
                        if (string.IsNullOrEmpty(defaultPrintName))
                        {
                            socket.Send(JsonConvert.SerializeObject(new
                            {
                                code = "error",
                                msg  = "未检测到打印机驱动!"
                            }));
                            return;
                        }

                        if (message.Contains("print_"))
                        {
                            string json = message.Replace("print_", "");

                            PrintInfoEntity printInfo = JsonConvert.DeserializeObject <PrintInfoEntity>(json);

                            if (printInfo.PrintType.Equals(PrintTypeEnum.PersonPrint))
                            {
                                List <PersonPrintInfoEntity> items = JsonConvert.DeserializeObject <List <PersonPrintInfoEntity> >(printInfo.Data.ToString());
                                items.ForEach(i =>
                                {
                                    CsBarCodePrint.PersonBarCodePrint(defaultPrintName, offsetX, offsetY, i.PersonName ?? "", i.PersonCode ?? "", i.DeptName ?? "", i.BarCode ?? "");
                                });
                            }
                            if (printInfo.PrintType.Equals(PrintTypeEnum.PartPrint))
                            {
                                List <PartPrintInfoEntity> items = JsonConvert.DeserializeObject <List <PartPrintInfoEntity> >(printInfo.Data.ToString());
                                items.ForEach(i =>
                                {
                                    CsBarCodePrint.PartBarCodePrint(defaultPrintName, offsetX, offsetY, i.ContractName ?? "", i.ProductName ?? "", i.PartFigureNo ?? "", i.PartName ?? "", i.MaterialName ?? "", i.BarCode ?? "");
                                });
                            }

                            socket.Send(JsonConvert.SerializeObject(new
                            {
                                code = "prompt",
                                msg  = "打印信息已推送!"
                            }));
                        }
                    };
                });
            }
            catch
            {
            }
        }
Пример #2
0
        //梦想CAD控件操作
        public void MxDrawOperate(object obj)
        {
            //https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.input.key?view=netframework-4.5

            switch (obj)
            {
            case Key.Enter:

                //弹出扫码界面
                //WindowMaterialScan windowA = new WindowMaterialScan();
                //windowA.ShowDialog();
                WindowHelper.MaterialScanWindow = new WindowMaterialScan();
                WindowHelper.MaterialScanWindow.ShowDialog();
                new SerialPortScanCode().Start();
                WindowHelper.IsOpenMaterialScanWindow = false;

                //重加载物料数据
                new MaterialInfoBLL().GetMaterialDetail();
                Maintains = ConvertCommon.ToObservable(GetMaintainData());
                if (Maintains.Count > 0)
                {
                    SelectMaintainIndex = 0;
                }

                if ((WindowHelper.MaterialScanWindow as WindowMaterialScan).OperateType.Equals(0))
                {
                    //不操作
                }
                else
                {
                    //弹出选择 完工/暂停/取消 窗口
                    WindowProceState windowB = new WindowProceState();
                    windowB.ShowDialog();

                    //完工
                    if (windowB.SelectState.Equals(0))
                    {
                        ResultModel resultA = ProduceProceInfoBLL.IsLastProcess();
                        if (resultA.Result)
                        {
                            //是最后一道工序
                            if (Convert.ToBoolean(resultA.Data))
                            {
                                //判断物料是否扫码完成
                                bool isComplete = true;
                                foreach (var item in Maintains)
                                {
                                    if (!item.PartQuantity.Equals(item.PartAlreadyScanQuantity))
                                    {
                                        isComplete = false;
                                        break;
                                    }
                                }

                                if (!isComplete)
                                {
                                    MessageBox.Show(@"物料未扫完,禁止完工!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                }
                                else
                                {
                                    //提示打码
                                    MessageBoxResult boxResult = MessageBox.Show("是否打码?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
                                    if (boxResult == MessageBoxResult.OK)
                                    {
                                        //获取条码
                                        ResultModel resultE = ProduceProceInfoBLL.GenerateBarCode(StoreInfoModel.MaterialInfo.GetProcessBom.InventoryCode);
                                        if (resultE.Result)
                                        {
                                            int PointX = -25;                                                                          //起始点X坐标
                                            int PointY = 0;                                                                            //起始点Y坐标
                                            //string PrintName = "Honeywell PC42t (203 dpi) - DP";//打印机名称
                                            string PrintName    = ConfigInfoModel.PrintMachineName;                                    //打印机名称
                                            string ContractName = StoreInfoModel.ProducePlanInfo.GetProjectProduceDetial.ContractCode; //合同
                                            string ProductName  = StoreInfoModel.ProducePlanInfo.GetProjectDetail.ProductName;         //产品
                                            string PartCode     = StoreInfoModel.MaterialInfo.GetProcessBom.PartFigureCode;            //零件图号
                                            string PartName     = StoreInfoModel.MaterialInfo.GetProcessBom.PartName;                  //零件名称
                                            string MaterialName = StoreInfoModel.MaterialInfo.GetProcessBom.MaterialCode;              //材质
                                            string BarCode      = resultE.Data.ToString();                                             //条码
                                            bool   isOK         = CsBarCodePrint.BarCodePrint(PrintName, PointX, PointY, ContractName, ProductName, PartCode, PartName, MaterialName, BarCode);

                                            if (isOK)
                                            {
                                                MessageBox.Show("打印成功!", "提示", MessageBoxButton.OK, MessageBoxImage.Asterisk);

                                                ResultModel resultD = ProduceProceInfoBLL.ProduceProceResult(0, windowB.SelectNum, ProduceProceInfoBLL.ProduceProceStateEnum.CompleteTask);
                                                if (resultD.Result)
                                                {
                                                    WindowHelper.ShowPageProducePlan();
                                                }
                                                else
                                                {
                                                    MessageBox.Show(resultD.Msg, "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                                }
                                            }
                                            else
                                            {
                                                MessageBox.Show("打印失败!", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show(resultE.Msg, "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                        }
                                    }
                                }
                            }
                            //不是最后一道工序
                            else
                            {
                                ResultModel resultB = ProduceProceInfoBLL.ProduceProceResult(0, windowB.SelectNum, ProduceProceInfoBLL.ProduceProceStateEnum.CompleteTask);
                                if (resultB.Result)
                                {
                                    WindowHelper.ShowPageProducePlan();
                                }
                                else
                                {
                                    MessageBox.Show(resultB.Msg, "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show(resultA.Msg, "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                        }
                    }
                    //暂停
                    else if (windowB.SelectState.Equals(1))
                    {
                        ResultModel resultC = ProduceProceInfoBLL.ProduceProceResult(windowB.PauseReson, 0, ProduceProceInfoBLL.ProduceProceStateEnum.PauseTask);
                        if (resultC.Result)
                        {
                            WindowHelper.ShowPageProducePlan();
                        }
                        else
                        {
                            MessageBox.Show(resultC.Msg, "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                        }
                    }
                    //取消
                    else
                    {
                    }
                }

                break;

            case Key.Up:
                pointY -= drawMoveOffset;
                axMxDrawX.ZoomCenter(pointX, pointY);
                break;

            case Key.Down:
                pointY += drawMoveOffset;
                axMxDrawX.ZoomCenter(pointX, pointY);
                break;

            case Key.Left:
                pointX += drawMoveOffset;
                axMxDrawX.ZoomCenter(pointX, pointY);
                break;

            case Key.Right:
                pointX -= drawMoveOffset;
                axMxDrawX.ZoomCenter(pointX, pointY);
                break;

            case Key.OemPlus:          //+
            case Key.Add:              //+
            case Key.OemCloseBrackets: //}
                MouseSimulateWheelEvent(150);
                break;

            case Key.OemMinus:        //-
            case Key.Subtract:        //-
            case Key.OemOpenBrackets: //{
                MouseSimulateWheelEvent(-120);
                break;

            default: break;
            }
        }