<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      設(shè)備模塊更換APP開發(fā)文檔

      設(shè)備模塊更換APP開發(fā)文檔
      一、開發(fā)背景:
      根據(jù)公司指示,有一批設(shè)備要進(jìn)行內(nèi)置模塊安裝,同時(shí)設(shè)備信息要和新裝的模塊信息進(jìn)行綁定,即在現(xiàn)場換裝的過程中,要記錄模塊的信息(資產(chǎn)編碼)與設(shè)備的信息(資產(chǎn)編碼),通過信息上傳后,到達(dá)主站,由后臺(tái)人員進(jìn)行信息綁定。
      前期,此項(xiàng)工作都是由施工人員對(duì)現(xiàn)場的條碼進(jìn)行抄寫、拍照上傳,但由于工作過程中容易出現(xiàn)失誤,或者施工人員書寫不規(guī)范,遺漏等等問題,造成設(shè)備綁定時(shí)頻頻出現(xiàn)錯(cuò)誤情況,因此,特開發(fā)此App,目的是減輕施工人員的工作量,同時(shí),避免因施工人員誤操作或者手寫錯(cuò)誤,造成不必要的麻煩。
      二、系統(tǒng)框架:

      系統(tǒng)搭設(shè):
      本系統(tǒng)手機(jī)端搭設(shè)APP軟件一套,用于信息采集,數(shù)據(jù)臨時(shí)儲(chǔ)存、數(shù)據(jù)上傳、數(shù)據(jù)查詢、參數(shù)設(shè)置以及人員注冊(cè)、登陸等內(nèi)容。當(dāng)數(shù)據(jù)采集完畢后,會(huì)在本地手機(jī)中進(jìn)行存儲(chǔ),等網(wǎng)絡(luò)暢通或者工作完成后,由施工人員進(jìn)行上傳操作,此時(shí),數(shù)據(jù)會(huì)按照一定的格式進(jìn)行編碼,通過WebService提供的接口上傳到服務(wù)器中。
      服務(wù)器端采用WebService來進(jìn)行數(shù)據(jù)的接收和處理,將現(xiàn)場的數(shù)據(jù)信息按照一定的編碼格式進(jìn)行解碼,然后儲(chǔ)存到數(shù)據(jù)庫中;同時(shí),也能夠滿足后臺(tái)管理端的數(shù)據(jù)請(qǐng)求,按照一定的編碼將請(qǐng)求的數(shù)據(jù)進(jìn)行編碼,提供給后臺(tái)人員進(jìn)行查閱和下載。
      后臺(tái)管理端負(fù)責(zé)將請(qǐng)求的數(shù)據(jù)進(jìn)行解碼,完成數(shù)據(jù)查閱和下載,同時(shí),也需要完成部分系統(tǒng)設(shè)置,參數(shù)、人員、權(quán)限等的管理行為。
      三、詳細(xì)說明:
      1.結(jié)構(gòu)說明:
      本系統(tǒng)采用C#編程語言,數(shù)據(jù)庫為SQLServer數(shù)據(jù)庫,手機(jī)本地?cái)?shù)據(jù)庫采用Sqlite數(shù)據(jù)庫。
      手機(jī)端采用Xamarin.Forms+MVVM形式進(jìn)行開發(fā),主要包含條形碼掃描、數(shù)據(jù)信息錄入、信息查詢、數(shù)據(jù)編碼、解碼等功能。數(shù)據(jù)本地存儲(chǔ)采用Sqlite數(shù)據(jù)庫進(jìn)行本地?cái)?shù)據(jù)暫存,數(shù)據(jù)采集完畢后需要對(duì)數(shù)據(jù)進(jìn)行暫存,必要時(shí)對(duì)數(shù)據(jù)進(jìn)行提取,并執(zhí)行上傳操作。
      客戶機(jī)端采用WPF+MVVM的形式進(jìn)行開發(fā),同時(shí)設(shè)計(jì)C#—Excel的數(shù)據(jù)操作功能,包括信息讀取和寫入,數(shù)據(jù)保存、編碼及解碼等功能。
      服務(wù)器端使用騰訊云服務(wù)器,通過IIS服務(wù)搭建Web服務(wù),對(duì)手機(jī)端及客戶機(jī)端的數(shù)據(jù)請(qǐng)求和數(shù)據(jù)傳輸進(jìn)行接收和信息發(fā)送,來完成數(shù)據(jù)的轉(zhuǎn)存和讀取,并響應(yīng)數(shù)據(jù)讀取的相關(guān)請(qǐng)求。
      2.系統(tǒng)特點(diǎn):
      2.1.本套系統(tǒng)主要采用MVVM模式,實(shí)現(xiàn)代碼與界面的分離;
      2.2.系統(tǒng)手機(jī)端采用版本更新的模式,實(shí)現(xiàn)版本的自主更新下載,避免版本錯(cuò)亂問題;
      2.3.整個(gè)系統(tǒng)架構(gòu)采用MVVM+三層架構(gòu)的主要模式,后期易于代碼的二次開發(fā)和漏洞修改;
      2.4.系統(tǒng)開發(fā)語言采用C#語言,開發(fā)簡單,易于維護(hù);
      2.5.遠(yuǎn)程數(shù)據(jù)庫采用SqlServer數(shù)據(jù)庫,可存儲(chǔ)大容量的數(shù)據(jù)記錄;
      2.6.數(shù)據(jù)庫部分全部采用存儲(chǔ)過程,軟件開發(fā)過程中未使用一條SQL語句;
      2.7.手機(jī)端本地?cái)?shù)據(jù)庫采用Sqlite進(jìn)行臨時(shí)性存儲(chǔ),通過增刪改查完成數(shù)據(jù)的基本操作;

      3.軟件效果:
      3.1.手機(jī)端效果:
      界面效果

      3.2.客戶端效果:

      3.3.服務(wù)端效果:
      WebService效果

      3.4.服務(wù)端效果:

      4.部分代碼:
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using System.Threading.Tasks;
      using CommandService;
      using System.Collections.ObjectModel;
      using Xamarin.Forms;
      using StringService;
      using System.Xml.Linq;
      using System.IO;
      using Xamarin.Essentials;
      using System.Threading;
      //using SocketService;
      using System.Net.Sockets;
      using DataBaseService.SqliteHelper;
      using PropertyChangeService;
      using ModuleInstall.Services;
      using AppTools_WS;
      using Models;
      namespace ModuleInstall.ViewModels
      {
      public class MainPageViewModel : PropertyChangedHelper
      {
      private Taiqu _tq = new Taiqu();
      private Meter _meter = new Meter();
      private User _User = new User();

          private Recorder _recorder = new Recorder();
          private MainCommand _meterScanCmd, _moduleScanCmd, _saveCmd, _uploadCmd;
          private Action<string> _callBack;
          //private Dal_Module _dalModule = new Dal_Module();
          /// <summary>
          /// 用于計(jì)數(shù)功能,記錄設(shè)備列表增加的行數(shù);
          /// </summary>
          public int Count { set; get; } = 0;
          public int Index { set; get; } = 0;
          public bool IsEnabled { set; get; }
          public string TqName { set { _tq.Name = value; PropertyChange(nameof(TqName)); } get { return _tq.Name; } }
          public string MeterNum { set { _meter.MeterNum = value; PropertyChange(nameof(MeterNum)); } get { return _meter.MeterNum; } }
          public string ModuleNum { set { _meter.ModuleNum = value; PropertyChange(nameof(ModuleNum)); } get { return _meter.ModuleNum; } }
          public string Account { set { _User.Account = value; PropertyChange(nameof(Account)); } get { return _User.Account; } }
          public string Address { set { _recorder.Address = value; PropertyChange(nameof(Address)); } get { return _recorder.Address; } }
          public MainCommand MeterScanCmd { get { return _meterScanCmd; } }
          public MainCommand ModuleScanCmd { get { return _moduleScanCmd; } }
          public MainCommand SaveCmd { get { return _saveCmd; } }
          public MainCommand UploadCmd { get { return _uploadCmd; } }
          public int ScrollIndex { set; get; }
          public ObservableCollection<Meter> Meters { set; get; } = new ObservableCollection<Meter>();
          private SqliteHelper Helper;
          public MainPageViewModel()
          {
          }
          public MainPageViewModel(Action<string> action)
          {
              InitDatabase();//初始化數(shù)據(jù)庫;
              _callBack = action;//回調(diào)函數(shù)進(jìn)入;
              _meterScanCmd = new MainCommand(MeterScan);
              _moduleScanCmd = new MainCommand(ModuleScan);
              _saveCmd = new MainCommand(Save);
              _uploadCmd = new MainCommand(Upload2);
              if (!File.Exists(SystemSettingPageViewModel.filePath) || new FileInfo(SystemSettingPageViewModel.filePath).Length == 0)
              {
                  _callBack("更換臺(tái)區(qū)、人員操作前,請(qǐng)先進(jìn)行系統(tǒng)設(shè)置!");
              }
          }
          /// <summary>
          /// Json數(shù)據(jù)讀取;從字符串讀取到Object(必須為Object)對(duì)象;
          /// </summary>
          /// <param name="filePath"></param>
          /// <returns></returns>
          public SettingModel JsonRead(string filePath)
          {
              string jsonStr;
              try
              {
                  using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                  {
                      using (StreamReader sr = new StreamReader(fs))
                      {
                          jsonStr = sr.ReadToEnd();
                      }
                  }
                  return new JsonConvertHelper<SettingModel>().ToObject(jsonStr); //JsonConvert.DeserializeObject<SettingModel>(jsonStr);
              }
              catch (Exception ex)
              {
                  throw ex;
              }
          }
          public void InitDatabase()
          {
              Helper= new SqliteHelper();
          }
          /// <summary>
          /// 獲取指定電能表資產(chǎn)的Id號(hào)
          /// </summary>
          /// <param name="meterNum"></param>
          /// <returns></returns>
          int GetMeterId(string meterNum)
          {
              int flag;
              try
              {
                  flag = Helper.GetMeterId(meterNum);
      
              }
              catch (Exception ex)
              {
                  throw ex;
              }
              return flag;
          }
          /// <summary>
          /// 獲取指定臺(tái)區(qū)名稱的臺(tái)區(qū)Id號(hào);
          /// </summary>
          /// <param name="tqName"></param>
          /// <returns></returns>
          int GetTqId(string tqName)
          {
              return Helper.GetTqId(tqName);
          }
          /// <summary>
          /// 獲取從本地配置信息中讀取的
          /// </summary>
          /// <returns></returns>
          int GetUserId(string Account)
          {
              ///從本地配置文件中獲取姓名;
              return Helper.GetUserId(Account);
          }
          /// <summary>
          /// 電能表掃碼方法,掃碼后,將碼加入到Meters集合列表;
          /// </summary>
          /// 定義電表數(shù)量,模塊數(shù)量
          public int MeterCount = 0, ModuleCount = 0;
          async void MeterScan()
          {
              try
              {
                  bool flag = false;//判斷掃碼重復(fù)的標(biāo)志;
                  string num = await new ScanToString().BoxScan();
                  if (num.Length > 15)
                  {
                      for (int i = 0; i < Meters.Count; i++)
                      {
                          if (Meters[i].MeterNum == num)
                          {
                              flag = true;//如果,Meters集合中,存在此模塊條碼信息,則資產(chǎn)重復(fù),標(biāo)志為true;
                          }
                      }
                      if (!flag)
                      {
                          //var meter = Meters.Where(m => m.ModuleNum == "").First();
                          if (MeterCount>=ModuleCount)
                          {
                              Meters.Insert(0,new Meter() { MeterNum = num });
                              MeterCount++;
                          }
                          else
                          {
                              Meters[ModuleCount-MeterCount-1].MeterNum = num;//當(dāng)前序號(hào)處的模塊條碼由空修改為當(dāng)前掃描的條碼;
                              MeterCount++;               //Count++;//計(jì)數(shù)指針位增加,后期刪除時(shí),指針不能小于0;
                                                          //Meters.OrderBy<Meter,int>(Meter => Meter.Id).Min();
                          }
                          _callBack(null);//回調(diào)函數(shù),更新ListView
                                          //num = await new ScanToString().BoxScan();
                      }
                  }
              }
              catch
              {
                  throw;
              }
          }
          async void ModuleScan()
          {
              try
              {
                      bool flag = false;//判斷掃碼重復(fù)的標(biāo)志;
                      string num = await new ScanToString().BoxScan();
                      if (num.Length > 15)
                      {
                          for (int i = 0; i < Meters.Count; i++)
                          {
                              if (Meters[i].ModuleNum == num)
                              {
                                  flag = true;//如果,Meters集合中,存在此模塊條碼信息,則資產(chǎn)重復(fù),標(biāo)志為true;
                              }
                          }
                          if (!flag)
                          {
                              //var meter = Meters.Where(m => m.ModuleNum == "").First();
                              if(MeterCount<=ModuleCount)
                               {
                              Meters.Insert(0,new Meter() { ModuleNum = num });
                              ModuleCount++;
                          }
                              else
                                  {
                             
                                  Meters[MeterCount-ModuleCount-1].ModuleNum = num;//當(dāng)前序號(hào)處的模塊條碼由空修改為當(dāng)前掃描的條碼;
                              ModuleCount++;    //Count++;//計(jì)數(shù)指針位增加,后期刪除時(shí),指針不能小于0;
                                                //Meters.OrderBy<Meter,int>(Meter => Meter.Id).Min();
                                   }
                          _callBack(null);//回調(diào)函數(shù),更新ListView 
                                          //num = await new ScanToString().BoxScan();
                      }
                  }
              }
              catch
              {
                  throw;
              }
          }
          /// <summary>
          /// 刪除本地?cái)?shù)據(jù)庫中的表與模塊信息(同時(shí)刪除);如果不刪除,加表,保存,或者在刪除,中間回出現(xiàn)問題;
          /// </summary>
          /// <param name="meter"></param>
          public void MeterDelete(string meter)
          {
              int meterid = Helper.GetMeterId(meter);
              int recorderId = Helper.GetRecorderId(meterid);
              if(meterid >0)
                  Helper.Delete<Meter>(meterid);
              if(recorderId>0)
              Helper.Delete<Recorder>(recorderId);
          }
          /// <summary>
          /// 保存到本地
          /// </summary>
          void Save()
          {
              bool isSave = false;
              try
              {
                  if (Meters.Count > 0)
                  {
                      SettingModel setModel =null;
                      try
                      {
                           setModel = JsonRead(SystemSettingPageViewModel.filePath);
                      }
                      catch
                      {
                          _callBack("更換臺(tái)區(qū)、人員操作前,請(qǐng)先進(jìn)行系統(tǒng)設(shè)置!");//回調(diào)函數(shù),顯示提示信息;
                      }
                      Account = setModel.Account;
                      TqName = setModel.TqName;
                      Address = setModel.Address;
                      int tqid = GetTqId(TqName);
                      foreach (var meter in Meters)
                      {
                          if (meter.ModuleNum != null)
                          {
                              meter.TqId = tqid;
                              //判斷是否在數(shù)據(jù)庫中存在此表資產(chǎn),如果不存在,返回結(jié)果為0,則添加資產(chǎn)
                              if (GetMeterId(meter.MeterNum) == 0)
                              {
                                  Helper.Insert<Meter>(meter);
                                  Helper.Insert<Recorder>(
                                      new Recorder()
                                      {
                                          MeterId = GetMeterId(meter.MeterNum),
                                          UserId = GetUserId(Account),
                                          IsUpload = false,//上傳標(biāo)志為false,上傳以后更改為true;
                                          SaveTime = DateTime.Now,
                                          Address = Address
                                      });
                              }
                          }
                          else
                          {
                              _callBack("數(shù)據(jù)結(jié)構(gòu)不完整,請(qǐng)補(bǔ)充完整后保存!");
                              break;
                          }
                          isSave = true;
                      }
                      ///-------------還需要確認(rèn),兩種資產(chǎn)不能夠進(jìn)入
                      //Console.WriteLine("--------------------------------------------保存成功!--------------------------------------");
                      if(isSave)
                      {
                          _callBack("數(shù)據(jù)保存成功!");
                      }
                  }
                  else
                  {
                      _callBack("數(shù)據(jù)不能為空,請(qǐng)重試操作!");
                  }
              }
              catch (NullReferenceException)
              {
                  _callBack("更換臺(tái)區(qū)、人員操作前,請(qǐng)先進(jìn)行系統(tǒng)設(shè)置!");
              }
              catch (Exception ex)
              {
                  _callBack($"{ex.ToString()}");
              }
          }
          /// <summary>
          ///第一版: 上傳數(shù)據(jù)到遠(yuǎn)程服務(wù)器,需要從本地?cái)?shù)據(jù)庫中讀取,直接操作遠(yuǎn)程數(shù)據(jù)庫插入數(shù)據(jù)
          /// </summary>
          void Upload1()
          {
              ////讀取本地?cái)?shù)據(jù)庫中的為上傳信息,IsUpload==false,轉(zhuǎn)換成Json字符串;
              ////string meterStr=null,recorderStr = null;
              //ObservableCollection<Recorder> recorders = Helper.GetRecorders(false);
              //if (recorders.Count > 0)
              //{
              //    foreach (var recorder in recorders)
              //    {
              //        _meter = Helper.GetMeter(recorder.MeterId);
              //        ModuleNum = _meter.ModuleNum;
              //        MeterNum = _meter.MeterNum;
              //        _dalModule.ModuleAdd(ModuleNum, MeterNum, TqName, Account, recorder.SaveTime, Address);
              //        //----------------此處需要在本地保存一下,更改一下上傳狀態(tài);-------------------
              //        recorder.IsUpload = true;
              //        Helper.Update(recorder);//更新一下上傳狀態(tài);
              //         //recorderStr += new JsonConvertHelper<Recorder>().ToString(recorder);
              //        //meterStr += new JsonConvertHelper<Meter>().ToString(new SqliteHelper().GetMeter(recorder.MeterId));
              //        //Console.WriteLine($"保存時(shí)間:{recorder.SaveTime},電能表號(hào):{MeterNum},模塊號(hào):{ModuleNum}");
              //    }
              //    _callBack("數(shù)據(jù)上傳成功!");
              //}
              //else
              //    _callBack("數(shù)據(jù)為空,請(qǐng)核實(shí)后上傳!");
          }
          /// <summary>
          /// 通過Socketk客戶端進(jìn)行數(shù)據(jù)上傳//第三版--服務(wù)器內(nèi)存不足,socket無法使用;
          /// </summary>
          //void Upload3()
          //{
      
          //    //讀取本地?cái)?shù)據(jù)庫中的為上傳信息,IsUpload==false,轉(zhuǎn)換成Json字符串;
          //    //string meterStr=null,recorderStr = null;
          //    bool isSave=false;
          //    SocketClient client = null;
          //    ObservableCollection<Recorder> recorders = Helper.GetRecorders(false);
          //    ObservableCollection<History> histories = new ObservableCollection<History>();
          //    JsonConvertHelper<ObservableCollection<History>> jh = new JsonConvertHelper<ObservableCollection<History>>();
          //    string Msg =string.Empty;
          //    try
          //    {
          //        if (recorders.Count > 0)
          //        {
          //            //首先要判斷是否有數(shù)據(jù),才能進(jìn)行下一步的鏈接;
          //            client = new SocketClient();
          //            foreach (var recorder in recorders)
          //            {
          //                _meter = Helper.GetMeter(recorder.MeterId);
          //                ModuleNum = _meter.ModuleNum;
          //                MeterNum = _meter.MeterNum;
          //                //_dalModule.ModuleAdd(ModuleNum, MeterNum, TqName, Account, recorder.SaveTime, Address);
          //                History history = new History()
          //                {
          //                    ModuleNum = this.ModuleNum,
          //                    MeterNum = this.MeterNum,
          //                    TqName = this.TqName,
          //                    Account = this.Account,
          //                    SaveTime = recorder.SaveTime,
          //                    Address = this.Address
          //                };// SaveTime = recorder.SaveTime,
      
          //                //----------------此處需要在本地保存一下,更改一下上傳狀態(tài);-------------------
          //                recorder.IsUpload = true;
          //                Helper.Update(recorder);//更新一下上傳狀態(tài);
          //                                        //recorderStr += new JsonConvertHelper<Recorder>().ToString(recorder);
          //                                        //meterStr += new JsonConvertHelper<Meter>().ToString(new SqliteHelper().GetMeter(recorder.MeterId));
          //                                        //Console.WriteLine($"保存時(shí)間:{recorder.SaveTime},電能表號(hào):{MeterNum},模塊號(hào):{ModuleNum}");
          //                histories.Add(history);
          //                isSave = true;
          //            }
          //            ///將歷史數(shù)據(jù)的對(duì)象集合進(jìn)行序列化;然后將字符串傳輸?shù)椒?wù)器;
          //            Msg = jh.ToString(histories);
          //            if (client.SendMsg(Msg))
          //                _callBack("數(shù)據(jù)上傳成功!");
          //            else _callBack("數(shù)據(jù)上傳失敗!");//回調(diào)函數(shù),顯示上傳結(jié)果;
          //            client.Client.Close();
          //        }
          //        else
          //            _callBack("數(shù)據(jù)為空,請(qǐng)核實(shí)后上傳!");
          //    }
          //    catch(SocketException)
          //    {
          //        _callBack("上傳服務(wù)器未開啟,請(qǐng)開啟后再上傳數(shù)據(jù)!");
          //    }
             
          //}
          /// <summary>
          /// 第二版:通過WebService上傳,服務(wù)器端已架設(shè)Webservice成功;
          /// </summary>
           void Upload2()
          {
              //讀取本地?cái)?shù)據(jù)庫中的為上傳信息,IsUpload==false,轉(zhuǎn)換成Json字符串;
              //string meterStr=null,recorderStr = null;
              ObservableCollection<Recorder> recorders = Helper.GetRecorders(false);
              ObservableCollection<History> histories = new ObservableCollection<History>();
              JsonConvertHelper<ObservableCollection<History>> jh = new JsonConvertHelper<ObservableCollection<History>>();
              string Msg = string.Empty;
              try
              {
                  if (recorders.Count > 0)
                  {
                      //首先要判斷是否有數(shù)據(jù),才能進(jìn)行下一步的鏈接;
                      foreach (var recorder in recorders)
                      {
                          _meter = Helper.GetMeter(recorder.MeterId);
                          ModuleNum = _meter.ModuleNum;
                          MeterNum = _meter.MeterNum;
                          History history = new History()
                          {
                              ModuleNum = this.ModuleNum,
                              MeterNum = this.MeterNum,
                              TqName = this.TqName,
                              Account = this.Account,
                              SaveTime = recorder.SaveTime,
                              Address = this.Address
                          };// SaveTime = recorder.SaveTime,
                          histories.Add(history);
                      }
                      ///將歷史數(shù)據(jù)的對(duì)象集合進(jìn)行序列化;然后將字符串傳輸?shù)椒?wù)器;
                      Msg = jh.ToString(histories);
                      AppToolsSoapClient msc = new AppToolsSoapClient(AppToolsSoapClient.EndpointConfiguration.AppToolsSoap12);
                      var rtnValue =  msc.DataUpLoad(Msg);
                      if(rtnValue==true)
                      {
                          new Thread(
                              () =>
                              {
                                  foreach (var recorder in recorders)
                                  {
                                      //----------------此處需要在本地保存一下,更改一下上傳狀態(tài);-------------------
                                      recorder.IsUpload = true;
                                      Helper.Update(recorder);//更新一下上傳狀態(tài);
                                                              //recorderStr += new JsonConvertHelper<Recorder>().ToString(recorder);
                                                              //meterStr += new JsonConvertHelper<Meter>().ToString(new SqliteHelper().GetMeter(recorder.MeterId));
                                                              //Console.WriteLine($"保存時(shí)間:{recorder.SaveTime},電能表號(hào):{MeterNum},模塊號(hào):{ModuleNum}");
                                  }
                              }).Start();
                          _callBack("數(shù)據(jù)上傳成功!");
                      }
                      else _callBack("數(shù)據(jù)上傳失敗!");
                  }
                  else
                      _callBack("數(shù)據(jù)為空,請(qǐng)核實(shí)后上傳!");
              }
              catch (Exception ex)
              {
                  _callBack(ex.ToString ());
              }
          }
      }
      

      }

      using System;
      using System.Collections.Generic;
      using System.IO;
      using System.Runtime.CompilerServices;
      using System.Security.Cryptography.X509Certificates;
      using System.Text;
      using CommandService;
      using System.Collections.ObjectModel;
      using DataBaseService.SqliteHelper;
      using StringService;
      using AppTools_WS;
      using System.Linq;
      using System.Threading.Tasks;
      using Models;
      namespace ModuleInstall.ViewModels
      {
      public class SystemSettingPageViewModel:PropertyChangeService.PropertyChangedHelper
      {
      private AppToolsSoapClient _client;
      private Company _company=new Company ();
      private const string fileName = "Config.txt";
      private MainCommand _writeSettingCmd;// readCmd;
      private Action CallBack;
      private SettingModel _settingModel=new SettingModel();
      private SqliteHelper sqliteHelper;
      private ObservableCollection _companyCollection = new ObservableCollection ();
      private ObservableCollection _gongdsCollection = new ObservableCollection();
      private ObservableCollection _taiquCollection = new ObservableCollection();
      private ObservableCollection _groupCollection = new ObservableCollection();
      public ObservableCollection CompanyCollection { set { _companyCollection = value; PropertyChange(nameof(CompanyCollection)); } get { return _companyCollection; } }
      public ObservableCollection GongdsCollection { set { _gongdsCollection = value; PropertyChange(nameof(GongdsCollection)); } get { return GongdsCollection; } }
      public ObservableCollection TaiQuCollection { set { _taiquCollection = value; PropertyChange(nameof(TaiQuCollection)); } get { return _taiquCollection; } }
      public ObservableCollection GroupCollection { set { _groupCollection = value; PropertyChange(nameof(GroupCollection)); } get { return _groupCollection; } }
      public Company Comy { get { return _company; } set { _company = value; } }
      public ObservableCollection Companies=new ObservableCollection();
      public MainCommand WriteSettingCmd { get { return _writeSettingCmd; } }
      public SettingModel SetModel { set { _settingModel = value; } get { return _settingModel; } }
      public static readonly string filePath=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), fileName);
      public SystemSettingPageViewModel(Action callBack)
      {
      if (_client == null)
      _client = new AppToolsSoapClient(AppToolsSoapClient.EndpointConfiguration.AppToolsSoap12);
      GetCompanies();
      GetGroupes();
      if (!File.Exists(filePath))
      {
      File.Create(filePath);
      }
      _writeSettingCmd = new MainCommand(JsonWrite);
      CallBack = callBack;
      //readCmd = new MainCommand(Read);
      }
      ///


      /// 通過供電公司名稱,獲取下屬單位供電所的所有內(nèi)容;
      ///

      ///
      ///
      public ObservableCollection GetGongdses(string companyName)
      {
      ObservableCollection gds = new ObservableCollection();
      ArrayOfString strings = _client.GetGdses(companyName);
      foreach (string str in strings)
      {
      gds.Add(str);
      }
      return gds;
      }
      public void GetGroupes()
      {
      try
      {
      ArrayOfString strings = _client.GetGroups();
      foreach (string str in strings)
      {
      GroupCollection.Add(str);
      }

                  //GroupCollection=new  Dal_Group().GroupList();
              }
             catch (Exception ex)
              {
                  throw ex;
              }
             
          }
          /// <summary>
          /// 通過供電所名稱,獲取下屬單位供電臺(tái)區(qū)的所有內(nèi)容;
          /// </summary>
          /// <param name="companyName"></param>
          /// <returns></returns>
          public ObservableCollection<string> GetTaiQues(string gdsName)
          {
              try
              {
                  ObservableCollection<string> taiqus = new ObservableCollection<string>();
                  ArrayOfString strings = _client.GetTaiQues(gdsName);
                  foreach (string str in strings)
                  {
                      taiqus.Add(str);
                  }
                  return taiqus;
              }catch(Exception ex)
              { throw ex; }
          }
          /// <summary>
          /// 獲取所有供電公司的信息;
          /// </summary>
          /// <param name="companyName"></param>
          /// <returns></returns>
          void GetCompanies()
          {
              try
              {
                  ArrayOfString strings = _client.GetCompanies();
                  foreach (string str in strings)
                  {
                      CompanyCollection.Add(str);
                  }
              }
              catch
              {
                  throw;
              }
          }
      
          public ObservableCollection<string> GetUsers(string groupName)
          {
              ObservableCollection<string> os= new ObservableCollection<string>();
              ArrayOfString Users = _client.GetUsers(groupName);
              foreach (string o in Users)
              {
                  os.Add(o.ToString());
              }
              return os;
          }
          /// <summary>
          /// 將系統(tǒng)設(shè)置的信息對(duì)象序列化為Json字符串;
          /// </summary>
          public void JsonWrite()
          {
              try
              {
                  if(File.Exists(filePath))
                  {
                      File.Delete (filePath);
                      using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Write))
                      {
                          using (StreamWriter sw = new StreamWriter(fs))
                          {//向配置文件寫入配置信息;
                              string jsonStr = new JsonConvertHelper<SettingModel>().ToString(SetModel);
                              //JsonConvert.SerializeObject(SetModel);
                              sw.Write(jsonStr);
                              sw.Flush();
                              sw.Close();
                              fs.Close();
                          }
                      }
                  }
                  sqliteHelper = new SqliteHelper();
                  sqliteHelper.InitData(SetModel.CompanyName, SetModel.GdsName, SetModel.TqName, SetModel.Account);
                  CallBack("保存成功!");
              }
               catch(Exception ex)
              {
                  CallBack($"保存失敗!{ex.ToString()}");
              }
          }
      }
      

      }

      using System;
      using System.Collections.Generic;
      using System.Text;
      using Models;
      using StringService;
      using System.Collections.ObjectModel;
      using AppTools_WS;
      using System.Security.Cryptography.X509Certificates;
      using System.IO;
      using CommandService;
      using DataBaseService.SqliteHelper;
      namespace ModuleInstall.ViewModels
      {
      public class DataSearchViewModel
      {
      private AppToolsSoapClient _client;
      //private Dal_History _dalHistory =new Dal_History ();
      private Action _action;
      ///


      /// 未上傳數(shù)量
      ///

      public int UnUploadCount { set; get; }
      ///
      /// 今日已上傳數(shù)量
      ///

      public int TodayUploadCount { set; get; }
      ///
      /// 歷史上傳數(shù)量
      ///

      public int UploadHistoryCount { set; get; }

          public SettingModel SetModel { set; get; }
          public ObservableCollection<History> UploadHistoryList {  get; set; }
          public DataSearchViewModel(Action<string> action)
          {
           
              try
              {
                  _action = action;
                  if (_client == null)
                      _client = new AppToolsSoapClient (AppToolsSoapClient.EndpointConfiguration.AppToolsSoap12);
                  SetModel = JsonRead(SystemSettingPageViewModel.filePath);//讀取配置文件;
                  UnUploadCount = new SqliteHelper().GetUnUploadCount();//從本地獲取未上傳信息數(shù)量;
                  UploadHistoryCount = _client.GetUploadedHistoryCount(SetModel.Account);//獲取上傳歷史記錄數(shù)量;
                  TodayUploadCount = _client.GetTodayUploadedCount(SetModel.Account);//獲取今天上傳數(shù)量(指定操作人員);
              }
              catch {
                  _action("應(yīng)用使用前,請(qǐng)先進(jìn)行系統(tǒng)設(shè)置!");
              }
          }
          /// <summary>
          /// Json數(shù)據(jù)讀取;從字符串讀取到Object(必須為Object)對(duì)象;
          /// </summary>
          /// <param name="filePath"></param>
          /// <returns></returns>
          public SettingModel JsonRead(string filePath)
          {
              StreamReader sr = null;
              try
              {
                  sr = new StreamReader(filePath);
                  string jsonStr = sr.ReadToEnd();
      
                  return  new JsonConvertHelper<SettingModel>().ToObject(jsonStr); //JsonConvert.DeserializeObject<SettingModel>(jsonStr);
              }
              catch (Exception ex)
              {
                  throw ex;
              }
              finally {
                  sr.Close();
              }
          }
       
      }
      

      }

      開發(fā)人:QQ-1009714648

      posted @ 2024-11-13 09:54  長毛的土豆兒  閱讀(21)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 精品久久久久久亚洲综合网| 最新精品国偷自产在线美女足| 成人精品色一区二区三区| 日日碰狠狠添天天爽五月婷| а天堂中文最新一区二区三区| 色成人精品免费视频| 四虎永久免费高清视频| 久久亚洲精精品中文字幕| 东方av四虎在线观看| 长沙县| 欧美亚洲另类制服卡通动漫| 成人特黄A级毛片免费视频| 亚洲精品成人福利网站| 伊人久久大香线蕉综合观| 中文字幕在线亚洲日韩6页| 最近中文字幕国产精选| 亚洲高清WWW色好看美女| 国产熟睡乱子伦视频在线播放| 精品少妇后入一区二区三区| 蜜芽久久人人超碰爱香蕉 | 激情亚洲专区一区二区三区| 亚洲人成人日韩中文字幕| 视频一区视频二区在线视频| 亚洲全网成人资源在线观看| 久久精品青青大伊人av| 日本肉体xxxx裸交| 国内不卡一区二区三区| 芦山县| 亚洲国产午夜精品理论片| 亚洲AV蜜桃永久无码精品| 国产高清在线不卡一区| 亚洲精品国产综合麻豆久久99| 91精品国产福利尤物免费| 日韩黄色av一区二区三区| 不卡一区二区三区视频播放| 91精品国产综合蜜臀蜜臀| 人人澡人摸人人添| 克山县| 日本美女性亚洲精品黄色| 中文无码妇乱子伦视频| 玩弄漂亮少妇高潮白浆|