예제 #1
0
        /// <summary>
        /// 将加工单保存为图片新版本
        /// </summary>
        /// <param name="processTask"></param>
        /// <returns></returns>
        public virtual async Task SaveTaskSheetToImage2(ProcessTask processTask)
        {
            var    htmlUrl     = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}/sheets/{processTask.TenantId}/ProcessSheet/{processTask.Part?.ProjectId ?? 0}/{processTask.ProcessSN}.html";
            string upload_path = $"{Directory.GetCurrentDirectory()}\\wwwroot\\sheets\\{processTask.TenantId}\\ProcessSheet\\{processTask.Part?.ProjectId ?? 0}\\";

            if (!System.IO.Directory.Exists(upload_path))
            {
                System.IO.Directory.CreateDirectory(upload_path);
            }
            var imagename = upload_path + "\\" + processTask.ProcessSN + ".png";

            //若文件已存在则不生成
            //if (System.IO.File.Exists(imagename))
            //{
            //    return;
            //}
            try
            {
                //Common.Fun.Html2Pdf(htmlUrl, filename, "Powerd By 模来模往");
                Common.Fun.Html2Image(htmlUrl, imagename);
            }catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                throw new UserFriendlyException(L("生成图片失败"));
            }

            //string exeFilePath = Directory.GetCurrentDirectory() + @"\wkhtmltopdf.exe";
            ////MoveFolderTo(fileName, Application.StartupPath + @"\PDFLIB\");
            ////生成ProcessStartInfo
            //ProcessStartInfo pinfo = new ProcessStartInfo(exeFilePath);
            ////设置参数
            //StringBuilder sb = new StringBuilder();
            //sb.Append("--footer-line ");
            //sb.Append("--footer-center \"powered by 模来模往(https://master.imould.me)\" ");
            //sb.Append("\"" +htmlUrl +"\"");

            //sb.Append(" \"" + filename + "\"");

            //pinfo.Arguments = sb.ToString();
            ////隐藏窗口
            //pinfo.WindowStyle = ProcessWindowStyle.Hidden;
            ////启动程序

            //Process p = Process.Start(pinfo);
            //p.WaitForExit();
            ////DeleteFiles(Application.StartupPath + @"\PDFLIB\");
            //if (p.ExitCode == 0)
            //{

            //}
            //else
            //{
            //    Logger.Error("PDF生成失败:" + sb.ToString());
            //    throw new UserFriendlyException(L("生成PDF文件失败"));
            //}
        }
예제 #2
0
        /// <summary>
        /// 获取任务的加工单图片路径
        /// </summary>
        /// <param name="taskId"></param>
        /// <returns></returns>
        public virtual async Task <string> GetTaskSheetImagePath(int taskId)
        {
            var task = await GetAll().Include(o => o.Part).ThenInclude(o => o.Project).Where(o => o.Id == taskId).SingleOrDefaultAsync();

            if (task == null)
            {
                throw new UserFriendlyException(L("未找到加工任务"));
            }
            var projectId = task.Part?.Project?.Id;
            var host      = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}";

            return($"/sheets/{task.TenantId}/ProcessSheet/{projectId??0}/{task.ProcessSN}.png");
        }
예제 #3
0
        public override void Execute(SendWeiXinMessageJobArgs args)
        {
            var processQuote = ProcessQuoteManager.GetAll()
                               .Include(o => o.Tenant)
                               .Where(o => o.Id == args.DataId).SingleOrDefault();

            if (processQuote != null)
            {
                var config  = HostingEnvironment.GetAppConfiguration();
                var baseurl = config["base:url"];
                var url     = baseurl + "/MES/ProcessQuoteProcessor#/msg/" + processQuote.Id;

                var templateId = "jd3mdo68Y2mmObCZafu5C8Tq5zFu3f9hdZg6rllGB2A";//模来模往
                //var templateId = "Hm3BL2i0zPKLzfAIl0Po71cnVRVTf8rYvA_qaezHZk8";//云报工
                if (!string.IsNullOrEmpty(config["TemplateId:SendProcessQuote"]))
                {
                    templateId = config["TemplateId:SendProcessQuote"];
                }
                var message = new
                {
                    first    = new TemplateDataItem($"收到{processQuote.Tenant.TenancyName}询价信息"),
                    keyword1 = new TemplateDataItem(processQuote.QuoteSN),
                    keyword2 = new TemplateDataItem(processQuote.QuoteName),
                    keyword3 = new TemplateDataItem(processQuote.ExpireDate.ToString("yyyy-MM-dd HH:mm:ss")),
                    remark   = new TemplateDataItem("请及时处理")
                };
                SendTemplateMessageResult sendResult;
                try
                {
                    sendResult = WeiXin.WeiXinHelper.SendTemplateMessage(args.OpenId, templateId, url, message);
                }
                catch (Exception ex)
                {
                    sendResult = new SendTemplateMessageResult()
                    {
                        errcode = Senparc.Weixin.ReturnCode.系统繁忙此时请开发者稍候再试,
                        errmsg  = ex.Message
                    };
                }
                //更新提醒记录状态
                var remindLog = RemindLogManager.GetAll().IgnoreQueryFilters().Where(o => o.Id == args.RemindLogId).SingleOrDefault();
                if (remindLog != null)
                {
                    remindLog.Success = sendResult.ErrorCodeValue == 0;
                    remindLog.SetPropertyValue("errCode", sendResult.errcode);
                    remindLog.SetPropertyValue("errMsg", sendResult.errmsg);
                    RemindLogManager.UpdateAsync(remindLog).GetAwaiter().GetResult();
                }
            }
        }
예제 #4
0
        public override void Execute(SendWeiXinMessageJobArgs args)
        {
            var processQuote = ProcessQuoteManager.GetAll()
                               .Include(o => o.Tenant)
                               .Where(o => o.Id == args.DataId).SingleOrDefault();

            if (processQuote != null)
            {
                var config  = HostingEnvironment.GetAppConfiguration();
                var baseurl = config["base:url"];
                var url     = baseurl + "/MES/ProcessQuoteProcessor#/msg/" + processQuote.Id;

                var templateId = "nNYnBiwnwqvstTqeNfZ1JByKBNqJIPVIi4g8Wj3Bhog";//模来模往
                //var templateId = "XS1LGGjeKHMsyoiKJLDz94wpgwndY4ilOY6y21aoJ_k";//云报工
                if (!string.IsNullOrEmpty(config["TemplateId:SendProcessQuoteChoose"]))
                {
                    templateId = config["TemplateId:SendProcessQuoteChoose"];
                }
                var message = new
                {
                    first    = new TemplateDataItem($"您已成功中标{processQuote.Tenant.TenancyName}询价信息"),
                    keyword1 = new TemplateDataItem(processQuote.QuoteSN),
                    keyword2 = new TemplateDataItem(processQuote.QuoteName),
                    remark   = new TemplateDataItem("")
                };
                SendTemplateMessageResult sendResult;
                try
                {
                    sendResult = WeiXin.WeiXinHelper.SendTemplateMessage(args.OpenId, templateId, url, message);
                }
                catch (Exception ex)
                {
                    sendResult = new SendTemplateMessageResult()
                    {
                        errcode = Senparc.Weixin.ReturnCode.系统繁忙此时请开发者稍候再试,
                        errmsg  = ex.Message
                    };
                }
                //更新提醒记录状态
                var remindLog = RemindLogManager.GetAll().IgnoreQueryFilters().Where(o => o.Id == args.RemindLogId).SingleOrDefault();
                if (remindLog != null)
                {
                    remindLog.Success = sendResult.ErrorCodeValue == 0;
                    remindLog.SetPropertyValue("errCode", sendResult.errcode);
                    remindLog.SetPropertyValue("errMsg", sendResult.errmsg);
                    RemindLogManager.UpdateAsync(remindLog).GetAwaiter().GetResult();
                }
            }
        }
예제 #5
0
        /// <summary>
        /// 将加工单生成为图片
        /// </summary>
        /// <param name="processTask"></param>
        public virtual async Task SaveTaskSheetToImage(ProcessTask processTask)
        {
            if (string.IsNullOrEmpty(processTask.ProcessSN))
            {
                throw new UserFriendlyException(L("未开单任务无法生成图片"));
            }
            var    projectId   = processTask.Part?.Project?.Id;
            var    targetUrl   = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}/Home/Show?name=../MES/SheetView&taskid={processTask.Id}";
            string upload_path = $"{Directory.GetCurrentDirectory()}\\wwwroot\\sheets\\{processTask.TenantId}\\ProcessSheet\\{projectId ?? 0}\\";

            if (!System.IO.Directory.Exists(upload_path))
            {
                System.IO.Directory.CreateDirectory(upload_path);
            }
            var filename = upload_path + "\\" + processTask.ProcessSN + ".png";

            //若文件已存在则不生成
            if (System.IO.File.Exists(filename))
            {
                return;
            }
            //var arg = new Html2ImageJobArgs()
            //{
            //    Url=targetUrl,
            //    FilePath=filename,
            //    WaitForId="app"
            //};
            ////产生图片的后台任务
            //await BackgroundJobManager.EnqueueAsync<Html2ImageJob, Html2ImageJobArgs>(arg);
            ChromeOptions op = new ChromeOptions();

            op.BinaryLocation = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
            op.AddArguments("--headless");   //开启无gui模式
            op.AddArguments("--no-sandbox"); //停用沙箱以在Linux中正常运行
            ChromeDriver driver = new ChromeDriver(Environment.CurrentDirectory, op, TimeSpan.FromSeconds(180));

            driver.Navigate().GoToUrl(targetUrl);
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

            wait.Until(o => o.FindElement(By.Id("app")).Displayed);
            //System.Threading.Thread.Sleep(3000);
            //截图保存
            Screenshot screenshot = driver.GetScreenshot();

            screenshot.SaveAsFile(filename, ScreenshotImageFormat.Png);
            //退出
            driver.Quit();
        }
        public override void Execute(SendWeiXinMessageJobArgs args)
        {
            var notice = NoticeManager.GetAll()
                         .IgnoreQueryFilters()
                         .Include(o => o.Tenant)
                         .Where(o => o.Id == args.DataId)
                         .SingleOrDefault();

            if (notice != null)
            {
                var baseurl = HostingEnvironment.GetAppConfiguration()["base:url"];
                var url     = baseurl + "/MES/TenantNoticeView?id=" + args.DataId;

                var templateId = "r5azOIRD5TP2heIi-6TTF29h_0TvyM4gruh4wy4YXMQ";//模来模往
                //var templateId = "MPrQIbyjLaa-grTkEihsEPEWtCUvvguDk6mtmMO0hnc";//云报工
                var message = new
                {
                    first    = new TemplateDataItem($"收到{notice.Tenant.TenancyName}公告消息"),
                    keyword1 = new TemplateDataItem(notice.Tenant.TenancyName),
                    keyword2 = new TemplateDataItem(notice.NoticeTitle),
                    //keyword3 = new TemplateDataItem(processQuote.PublishDate?.ToString("yyyy-MM-dd")),
                    remark = new TemplateDataItem("请及时查看")
                };
                SendTemplateMessageResult sendResult;
                try
                {
                    sendResult = WeiXin.WeiXinHelper.SendTemplateMessage(args.OpenId, templateId, url, message);
                }
                catch (Exception ex)
                {
                    sendResult = new SendTemplateMessageResult()
                    {
                        errcode = Senparc.Weixin.ReturnCode.系统繁忙此时请开发者稍候再试,
                        errmsg  = ex.Message
                    };
                }
                //更新提醒记录状态
                var remindLog = RemindLogManager.GetAll().IgnoreQueryFilters().Where(o => o.Id == args.RemindLogId).SingleOrDefault();
                if (remindLog != null)
                {
                    remindLog.Success = sendResult.ErrorCodeValue == 0;
                    remindLog.SetPropertyValue("errCode", sendResult.errcode);
                    remindLog.SetPropertyValue("errMsg", sendResult.errmsg);
                    RemindLogManager.UpdateAsync(remindLog).GetAwaiter().GetResult();
                }
            }
        }
예제 #7
0
        public virtual async Task <string> SaveAccountingSheetToImage(string taskIds, string currentTenantId, string tenantId)
        {
            Logger.Error("\r\n\r\nScreenshotstart");
            var    targetUrl   = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}/Home/Show?name=../MES/ProcessCost_Duii&modulekey=ProcessTask&data={taskIds}";
            string upload_path = $"{Directory.GetCurrentDirectory()}\\wwwroot\\sheets\\{currentTenantId}\\CountingPic\\{tenantId}\\{DateTime.Today.ToString("yyyyMMdd")}";

            if (!System.IO.Directory.Exists(upload_path))
            {
                System.IO.Directory.CreateDirectory(upload_path);
            }
            var time     = System.DateTime.Now.ToString("yyyyMMddHHmmss");
            var filename = upload_path + "\\" + time + ".png";

            //若文件已存在则不生成
            if (System.IO.File.Exists(filename))
            {
                System.IO.File.Delete(filename);
            }
            //try
            //{

            //    Common.Fun.Html2Image(targetUrl, filename);
            //}
            //catch (Exception ex)
            //{
            //    Logger.Error(ex.Message, ex);
            //    throw new UserFriendlyException(L("生成图片失败"));
            //}

            ChromeOptions op = new ChromeOptions();

            op.BinaryLocation = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
            op.AddArguments("--headless");   //开启无gui模式
            op.AddArguments("--no-sandbox"); //停用沙箱以在Linux中正常运行
            ChromeDriver driver = new ChromeDriver(Environment.CurrentDirectory, op, TimeSpan.FromSeconds(180));

            //targetUrl = $"http://demo.imould.me/";
            Logger.Error("\r\n" + filename + "\r\n" + targetUrl);
            driver.Navigate().GoToUrl(targetUrl);

            //driver.Manage().Timeouts().ImplicitWait(10, TimeUnit.SECONDS);      //识别元素时的超时时间
            //driver.Manage().Timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
            //driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(10);  //异步脚本的超时时间
            //driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
            //driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(10);
            //Logger.Error("\r\n" + driver.PageSource + "\r\n\r\n\r\n\r\n\r\n\r\n" );
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

            //wait.Until(o => o.FindElement(By.Id("app")).Displayed);
            //wait.Until(o => o.FindElement(By.Name("accounting")).Displayed);
            //wait.Until(o => o.FindElement(By.Id("searchTable")).Displayed);
            System.Threading.Thread.Sleep(5000);
            //Logger.Error("\r\n\r\nScreenshotstep");
            ////截图保存
            Screenshot screenshot = driver.GetScreenshot();

            screenshot.SaveAsFile(filename, ScreenshotImageFormat.Png);
            //var tasks = taskIds.Split(',');
            //var taskFilename = "";
            //foreach(var taskId in tasks)
            //{
            //    taskFilename = filename.Replace(".png", taskId + ".png");
            //    //// targetUrl = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}/Home/Show?name=../MES/ShowTask&data={taskId}";
            //    targetUrl = $"{HostingEnvironment.GetAppConfiguration()["base:url"]}/Home/Show?name=../MES/SheetView&taskid={taskId}";
            //    //try
            //    //{

            //    //    Common.Fun.Html2Image(targetUrl, taskFilename);
            //    //}
            //    //catch (Exception ex)
            //    //{
            //    //    Logger.Error(ex.Message, ex);
            //    //    throw new UserFriendlyException(L("生成图片失败"));
            //    //}

            //    driver.Navigate().GoToUrl(targetUrl);
            //    //wait.Until(o => o.FindElement(By.Id("app")).);
            //    System.Threading.Thread.Sleep(3000);
            //    screenshot = driver.GetScreenshot();
            //    screenshot.SaveAsFile(taskFilename, ScreenshotImageFormat.Png);
            //}


            //退出
            driver.Quit();



            return(DateTime.Today.ToString("yyyyMMdd") + "/" + time);
        }