AppSession.cs 4.64 KB
using HHECS.Model;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace HHECS.Bll
{
    public static class AppSession
    {
        static AppSession()
        {
            //默认是支持sqlserver,这里更改为mysql
            Dapper.SimpleCRUD.SetDialect(Dapper.SimpleCRUD.Dialect.MySQL);
        }

        public static User User { get; set; }

        public static string ConnectionString { get; set; } = ConfigurationManager.AppSettings["MySql"];
        public static int WarehouseId { get; set; } = int.Parse(ConfigurationManager.AppSettings["WarehouseId"]);
        public static string WarehouseCode { get; set; } = ConfigurationManager.AppSettings["WarehouseCode"];

        public static string LogPath { get; set; }

        public static IBll Bll { get; set; } = new DefaultBll(ConnectionString);

        public static List<MenuOperation> MenuOperations { get; set; }

        public static String PrinterName = ConfigurationManager.AppSettings["printerName"];
        public static String Report = ConfigurationManager.AppSettings["printerReport"];

        public static LEDExcute LEDExcute { get; set; } = new LEDExcute();


        public static DateTime OverDate = Convert.ToDateTime(ConfigurationManager.AppSettings["OverDate"]);

        /// <summary>
        /// 时钟间隔
        /// </summary>
        public static double Interval { get; internal set; } = Convert.ToDouble(ConfigurationManager.AppSettings["interval"]);

        public static void CheckPermission(List<MenuOperation> menuOperations, UIElementCollection controls)
        {
            foreach (var item in controls)
            {
                if (item is Button)
                {
                    Button temp = item as Button;
                    if (temp.Tag is String)
                    {
                        string perms = (string)temp.Tag;
                        if (menuOperations.Count(t => t.Perms == perms) > 0)
                        {
                            temp.Visibility = Visibility.Visible;
                        }
                        else
                        {
                            temp.Visibility = Visibility.Hidden;
                        }
                    }
                    else
                    {
                        temp.Visibility = Visibility.Hidden;
                    }
                }
            }
        }

        public static HttpClient Client = InitHttpClient();

        public static HttpClient InitHttpClient()
        {
            Uri uri = new Uri(ConfigurationManager.AppSettings["ServerUrl"]);
            HttpClientHandler handler = new HttpClientHandler() { UseCookies = true };
            HttpClient client = new HttpClient(handler) { BaseAddress = uri };
            return client;
        }

        public static Dictionary<WMSUrls, string> Urls = new Dictionary<WMSUrls, string>()
        {
            {WMSUrls.TaskComplete,"wms/task/task/complete"},
            {WMSUrls.TaskExecute,"wms/task/task/execute" },
            {WMSUrls.Login,"wms/login" },
            {WMSUrls.Heartbeat,"wms/mobile/heartbeat" },
            {WMSUrls.HandleEmptyOut,"wms/task/task/handleEmptyOut" },
            {WMSUrls.GetLocation,"wms/task/task/setLocationCode" },
            //todo:完善取货错误处理接口路径
            {WMSUrls.HandleForkError,"wms/task/task/createTransfer" },
            {WMSUrls.ExecuteTaskRequest,"wms/task/task/Movelibrary" }
        };

        public static void SendLED(Equipment station, TaskEntity task)
        {
            switch (station.Code)
            {
                case "P1002":
                case "P1000":
                    // LEDExcute.LeftInfoQueue.Enqueue(AppSession.Bll.GetTaskDetailsForLED(task));
                    LEDExcute = new LEDExcute();
                    LEDExcute.LeftLED.SendLedInfo(AppSession.Bll.GetTaskDetailsForLED(task));
                    LEDExcute.LeftLED.setBrightness(1, 12, null);
                    break;
                case "P1012":
                case "P1014":
                    //   LEDExcute.RightInfoQueue.Enqueue(AppSession.Bll.GetTaskDetailsForLED(task));
                    LEDExcute = new LEDExcute();
                    LEDExcute.RightLED.SendLedInfo(AppSession.Bll.GetTaskDetailsForLED(task));
                    LEDExcute.RightLED.setBrightness(1, 12, null);
                    break;
                default:
                    break;
            }
            //LEDExcute.LeftInfoQueue.Enqueue(AppSession.Bll.GetTaskDetailsForLED(task));
        }
    }
}