屠宰场客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
6.4 KiB

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using BO;
using BO.Utils;
using BWP.WinFormControl.WeightDataFormat;
using Forks.JsonRpc.Client;
using MaterialRequisition.Model;
using Newtonsoft.Json;
namespace MaterialRequisition
{
public partial class MaterialRequisitionForm : Form,IAfterLogin
{
public string RoleName { get { return "领料退料"; } }
public Form Generate()
{
return this;
}
private readonly string mDropDownSetsFileName = "MaterialRequisition_DropDownSets.xml";
private DropDownSets mDropDownSets;
#region weightNeed
SerialPort weightPort;
private IDataFormat _dataFormat;
private Thread _inQueryThread;
private bool _mainProcessIsRun;
readonly StringBuilder _dataStrBuilder = new StringBuilder();
#endregion
private readonly Thread _tdSyncLocalToMiddleDb;
private readonly Thread _tcCheckNetStatus;
private readonly Thread _tcCheckSyncStatus;
public MaterialRequisitionForm()
{
InitializeComponent();
dataGridViewUnSubmit.AutoGenerateColumns = false;
dataGridViewSubmited.AutoGenerateColumns = false;
weightPort = new SerialPort();
this.FormClosing += delegate
{
if (_inQueryThread != null && _inQueryThread.IsAlive)
{
//DisableWeight();
}
if (_tdSyncLocalToMiddleDb != null && _tdSyncLocalToMiddleDb.IsAlive)
{
_tdSyncLocalToMiddleDb.Abort();
}
if (_tcCheckNetStatus != null && _tcCheckNetStatus.IsAlive)
{
_tcCheckNetStatus.Abort();
}
if (_tcCheckSyncStatus != null && _tcCheckSyncStatus.IsAlive)
{
_tcCheckSyncStatus.Abort();
}
};
InitCombox();
_tdSyncLocalToMiddleDb = new Thread(SyncLocalToMiddleDb);
_tdSyncLocalToMiddleDb.Start();
_tcCheckNetStatus = new Thread(CheckNetStatus);
_tcCheckNetStatus.Start();
_tcCheckSyncStatus = new Thread(CheckSyncStatus);
_tcCheckSyncStatus.Start();
}
private void CheckSyncStatus()
{
while (true)
{
var syncSuccessed = MaterialRequisitionRecordRpc.GetInstance().IsSyncSucessed();
var png = "stop.png";
if (syncSuccessed)
png = "working.png";
var imgPath = Path.Combine(Application.StartupPath, "BWP.WinFormControl.dll");
var s = Assembly.LoadFile(imgPath).GetManifestResourceStream("BWP.WinFormControl.Images." + png);
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(() =>
{
picSyncStatus.Image = Image.FromStream(s);
picSyncStatus.Refresh();
}));
}
else
{
picSyncStatus.Image = Image.FromStream(s);
picSyncStatus.Refresh();
}
Thread.Sleep(1000);
}
}
private bool laseConnection = false;
private void CheckNetStatus()
{
while (true)
{
try
{
var newConnection = LoginRpcUtil.TestConnection(500);
if (newConnection && laseConnection)
{
Thread.Sleep(1000);
continue;
}
var png = "stop.png";
if (newConnection)
png = "working.png";
var imgPath = Path.Combine(Application.StartupPath, "BWP.WinFormControl.dll");
var s = Assembly.LoadFile(imgPath).GetManifestResourceStream("BWP.WinFormControl.Images." + png);
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(() =>
{
picNetStatus.Image = Image.FromStream(s);
picNetStatus.Refresh();
}));
}
else
{
picNetStatus.Image = Image.FromStream(s);
picNetStatus.Refresh();
}
laseConnection = newConnection;
}
catch (Exception e)
{
//LogUtil.Error(e.ToString());
}
Thread.Sleep(1000);
}
}
private void SyncLocalToMiddleDb()
{
while (true)
{
if (laseConnection)
{
this.BeginInvoke(new Action(() =>
{
MaterialRequisitionRecordRpc.GetInstance().SyncToServer();
}));
}
Thread.Sleep(1000);
}
}
private void InitCombox()
{
if (LoginRpcUtil.TestConnection(500))
{
mDropDownSets = GetmDropDownSets();
XmlUtil.SerializerObjToFile(mDropDownSets, mDropDownSetsFileName);
}
else
{
mDropDownSets = XmlUtil.DeserializeFromFile<DropDownSets>(mDropDownSetsFileName);
}
var shop = mDropDownSets.Details.FirstOrDefault(x => x.Name == DropDownSets.);
if (shop != null)
{
cbxWorkShop.DataSource = shop.Details;
cbxWorkShop.DisplayMember = "Name";
cbxWorkShop.ValueMember = "ID";
}
var unit = mDropDownSets.Details.FirstOrDefault(x => x.Name == DropDownSets.);
if (unit != null)
{
cbxWorkUnit.DataSource = unit.Details;
cbxWorkUnit.DisplayMember = "Name";
cbxWorkUnit.ValueMember = "Code";
}
}
private DropDownSets GetmDropDownSets()
{
var sets = new DropDownSets();
var wrokUnitSet = GetWrokUnitSet();
var wrokShopSet = GetWrokShopSet();
sets.Details.Add(wrokUnitSet);
sets.Details.Add(wrokShopSet);
return sets;
}
private DropDownSet GetWrokShopSet()
{
var json = RpcFacade.Call<string>("/MainSystem/B3ClientService/Rpcs/BaseInfoRpc/GetWorkShopList");
var set = new DropDownSet();
set.Name = DropDownSets.;
foreach (var detail in JsonConvert.DeserializeObject<List<DropDownSet_Detail>>(json))
{
set.Details.Add(detail);
}
return set;
}
private DropDownSet GetWrokUnitSet()
{
var json = RpcFacade.Call<string>("/MainSystem/B3ClientService/Rpcs/BaseInfoRpc/GetWorkUnitList");
var set = new DropDownSet();
set.Name = DropDownSets.;
foreach (var detail in JsonConvert.DeserializeObject<List<DropDownSet_Detail>>(json))
{
set.Details.Add(detail);
}
return set;
}
}
}