/// <summary>
        /// 获取盘点计划的触发器
        /// </summary>
        /// <returns></returns>
        public static ITrigger GetInventoryPlanTrigger()
        {
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load($"{ApplicationState.GetProjectRootPath()}/MyProject.xml");
            XmlNode root   = xmlDoc.SelectSingleNode("config");          //指向根节点
            XmlNode quartz = root.SelectSingleNode("quartz");            //指向quartz节点

            return(TriggerBuilder.Create()
                   .WithIdentity($"{GroupName.GetInventoryPlan.ToString()}Trigger", GroupName.GetInventoryPlan.ToString())
                   .WithCronSchedule(quartz.SelectSingleNode("inventory_task_cron").InnerText)
                   .Build());
        }
Exemplo n.º 2
0
        protected override void OnStartup(StartupEventArgs e)
        {
            ProgramStarted = new EventWaitHandle(false, EventResetMode.AutoReset, "乘法云链", out bool createNew);

            if (!createNew)
            {
                MessageBox.Show("已有一个程序实例运行");
                Current.Shutdown();
                Environment.Exit(0);
            }

            base.OnStartup(e);

            //控制台信息展示
            ConsoleManager.Show();

            Console.ReadKey();

            // 注册Application_Error(全局捕捉异常)
            DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);

            //初始化日志
            LogUtils.InitLog4Net();

            //隐藏工具类
            Taskbar.HideTask(true);

            //开启启动
            BootUpHelper.GetInstance().SetMeAutoStart();

            //加载系统配置文件
            //Console.ReadKey();
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load($"{ApplicationState.GetProjectRootPath()}/MyProject.xml");
            XmlNode root   = xmlDoc.SelectSingleNode("config");          //指向根节点
            XmlNode device = root.SelectSingleNode("device");            //指向设备节点

            ApplicationState.SetUserInfo(new User());
            //设置初始化goodsInfo
            ApplicationState.SetInitGoodsInfo(new HashSet <CommodityEps>());

            ApplicationState.SetEquipName(device.SelectSingleNode("equip_name").InnerText);
            ApplicationState.SetEquipId(device.SelectSingleNode("equip_id").InnerText);

            ApplicationState.SetHouseName(device.SelectSingleNode("house_name").InnerText);
            ApplicationState.SetHouseId(device.SelectSingleNode("house_id").InnerText);

            ApplicationState.SetMCabName(device.SelectSingleNode("mcab_name").InnerText);
            ApplicationState.SetMCabId(device.SelectSingleNode("mcab_id").InnerText);
#if DUALCAB
            ApplicationState.SetSCabName(device.SelectSingleNode("scab_name").InnerText);
            ApplicationState.SetSCabId(device.SelectSingleNode("scab_id").InnerText);
#endif
            ApplicationState.SetMLockerCOM(device.SelectSingleNode("mlocker_com").InnerText);         //"COM2"
            ApplicationState.SetSLockerCOM(device.SelectSingleNode("slocker_com").InnerText);         //"COM5"

            ApplicationState.SetMRfidCOM(device.SelectSingleNode("mrfid_com").InnerText);             //"COM1"
            ApplicationState.SetSRfidCOM(device.SelectSingleNode("srfid_com").InnerText);             //"COM4"

            ApplicationState.SetMVeinCOM(device.SelectSingleNode("mvein_com").InnerText);             //"COM9"

            LogUtils.Debug("App config initial...");

            #region 处理开机(即应用启动时)需要对比库存变化上传的逻辑

            //获取当前机柜所有商品数据
            HashSet <CommodityEps> currentCommodityEps = RfidHelper.GetEpcDataJson(out bool isGetSuccess);

            //判断是否是初次使用本地库存上次,如果是则不上传
            bool isInitLocalCommodityEpsInfo = CommodityCodeBll.GetInstance().isInitLocalCommodityEpsInfo();

            if (isGetSuccess && !isInitLocalCommodityEpsInfo)
            {
                //获取数据库记录的以前所有商品数据
                HashSet <CommodityEps> lastCommodityEps = CommodityCodeBll.GetInstance().GetLastLocalCommodityEpsInfo();

                //比对
                List <CommodityCode> commodityCodeList = CommodityCodeBll.GetInstance().GetCompareSimpleCommodity(lastCommodityEps, currentCommodityEps);

                //有不同的情况,则需要处理上传逻辑
                if (commodityCodeList != null && commodityCodeList.Count > 0)
                {
                    //根据商品码集合获取完整商品属性集合(已对比后结果)
                    var bdCommodityCodeList = CommodityCodeBll.GetInstance().GetCommodityCode(commodityCodeList);

                    var checkbdCommodityCodeList = HttpHelper.GetInstance().ResultCheck(bdCommodityCodeList, out bool isSuccess);

                    if (isSuccess)
                    {
                        //按照类似无单一般领用的方式(故障领用)
                        var bdBasePostData = ConsumingBll.GetInstance().SubmitConsumingChangeWithoutOrder(bdCommodityCodeList, ConsumingOrderType.故障领用);

                        //校验是否含有数据
                        HttpHelper.GetInstance().ResultCheck(bdBasePostData, out bool isSuccess1);
                        if (!isSuccess1)
                        {
                            LogUtils.Error("提交故障领用结果失败!" + bdBasePostData.message);
                        }
                        else
                        {
                            LogUtils.Info("提交故障领用结果成功!" + bdBasePostData.message);
                        }
                    }
                    else
                    {
                        LogUtils.Info("提交故障领用结果成功!");
                    }
                }
            }

            #endregion
        }
        private void onSave(object sender, RoutedEventArgs e)
        {
            ApplicationState.SetEquipName(tbEquipName.Text.ToString());
            ApplicationState.SetHouseName(tbHouseName.Text.ToString());

            ApplicationState.SetMCabName(tbMCabName.Text.ToString());
#if DUALCAB
            ApplicationState.SetSCabName(tbSCabName.Text.ToString());
#endif

            ApplicationState.SetMLockerCOM(MLockerCB.SelectedItem.ToString());
#if DUALCAB
            ApplicationState.SetSLockerCOM(SLockerCB.SelectedItem.ToString());
#endif

            ApplicationState.SetMRfidCOM(MrfidCB.SelectedItem.ToString());
#if DUALCAB
            ApplicationState.SetSRfidCOM(SrfidCB.SelectedItem.ToString());
#endif

            ApplicationState.SetMVeinCOM(MVeinCB.SelectedItem.ToString());

            //xml文件回写
            XmlDocument xmlDoc  = new XmlDocument();
            string      xmlPath = $"{ApplicationState.GetProjectRootPath()}/MyProject.xml";
            xmlDoc.Load(xmlPath);
            XmlNode root   = xmlDoc.SelectSingleNode("config");          //指向根节点
            XmlNode device = root.SelectSingleNode("device");            //指向设备节点

            device.SelectSingleNode("equip_name").InnerText = tbEquipName.Text.ToString();
            device.SelectSingleNode("house_name").InnerText = tbHouseName.Text.ToString();
            device.SelectSingleNode("mcab_name").InnerText  = tbMCabName.Text.ToString();
#if DUALCAB
            device.SelectSingleNode("scab_name").InnerText = tbSCabName.Text.ToString();
#endif
            device.SelectSingleNode("mlocker_com").InnerText = MLockerCB.SelectedItem.ToString();
#if DUALCAB
            device.SelectSingleNode("slocker_com").InnerText = SLockerCB.SelectedItem.ToString();
#endif
            device.SelectSingleNode("mrfid_com").InnerText = MrfidCB.SelectedItem.ToString();
#if DUALCAB
            device.SelectSingleNode("srfid_com").InnerText = SrfidCB.SelectedItem.ToString();
#endif
            device.SelectSingleNode("mvein_com").InnerText = MVeinCB.SelectedItem.ToString();

            //获取线上id
            BaseData <string> bdEquip = ConsumingBll.GetInstance().GetIdByName <Equipment>(tbEquipName.Text.ToString());
            BaseData <string> bdHouse = ConsumingBll.GetInstance().GetIdByStoreHouseCode <StoreHouse>(tbHouseName.Text.ToString());
            BaseData <string> bdMCab  = ConsumingBll.GetInstance().GetIdByName <GoodsLocation>(tbMCabName.Text.ToString());
#if DUALCAB
            BaseData <string> bdSCab = ConsumingBll.GetInstance().GetIdByName <Equipment>(tbSCabName.Text.ToString());
#endif

            string err = "无法获取";


            if (bdEquip.code == 0)
            {
                ApplicationState.SetEquipId(bdEquip.body.objects[0]);
                device.SelectSingleNode("equip_id").InnerText = bdEquip.body.objects[0];
            }
            else
            {
                err += "设备ID、" + bdEquip.message;
            }

            if (bdHouse.code == 0)
            {
                ApplicationState.SetHouseId(bdHouse.body.objects[0]);
                device.SelectSingleNode("house_id").InnerText = bdHouse.body.objects[0];
            }
            else
            {
                err += "库房ID、" + bdHouse.message;
            }

            if (bdMCab.code == 0)
            {
                ApplicationState.SetMCabId(bdMCab.body.objects[0]);
                device.SelectSingleNode("mcab_id").InnerText = bdMCab.body.objects[0];
            }
            else
            {
                err += "主货架ID、" + bdMCab.message;
            }

#if DUALCAB
            if (bdSCab.code == 0)
            {
                ApplicationState.SetSCabId(bdSCab.body.objects[0]);
                device.SelectSingleNode("scab_id").InnerText = bdSCab.body.objects[0];
            }
            else
            {
                err += "副货架ID、" + bdSCab.message;
            }
#endif
            if (err != "无法获取")
            {
                MessageBox.Show(err.Remove(err.Length - 1) + "!", "温馨提示", MessageBoxButton.OK);
            }
            else
            {
                MessageBox.Show("保存成功!", "温馨提示", MessageBoxButton.OK);
            }

            //节点修改值保存
            xmlDoc.Save(xmlPath);
        }