You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

381 lines
12 KiB
C#

9 months ago
using POSV.Component;
using POSV.Entity;
using POSV.MessageEvent;
using POSV.Proxy.GuoPan;
using POSV.Proxy.GuoPan.Entity;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace POSV.GuoPanOrder
{
public partial class GuoPanOrderForm : BusinessForm
{
public GuoPanOrderForm()
{
InitializeComponent();
this.pagerControlEx1.EventFormfeed += pager_Click;
}
private void pager_Click(object sender, EventArgs e)
{
var _data = _ThisData.Skip((pagerControlEx1.PageNumber - 1) * 5).Take(5).ToList();
this.Invoke((EventHandler)delegate
{
//zhangy 2020-03-01 Add 释放资源避免Error creating window handle
while (tlphandleorder.Controls.Count > 0)
{
if (tlphandleorder.Controls[0] != null)
{
var ctl = tlphandleorder.Controls[0];
ctl.Dispose();
}
}
tlphandleorder.Controls.Clear();
});
foreach (var item in _data)
{
this.Invoke((EventHandler)delegate
{
GuoPanOrderDetail detail = new GuoPanOrderDetail(item);
detail.IsShowConfirmBtn = !_guoPanProxy.IsConfirm(item.id).Item1;
detail.Clicks += Detail_Clicks;
if (!tlphandleorder.IsDisposed)
{
tlphandleorder.Controls.Add(detail);
}
});
}
}
GuoPanProxy _guoPanProxy = new GuoPanProxy();
List<DoOrder> _ThisData = new List<DoOrder>();
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
private void ShowData(string _date)
{
var _data = _guoPanProxy.SelectData(_date);
if (!_data.Item1)
{
this.ShowToastNotify(this, _data.Item2);
return;
}
if (!_data.Item3.status.Equals("1"))
{
this.ShowToastNotify(this, _data.Item3.info);
return;
}
pagerControlEx1.PageNumber = 0;
pagerControlEx1.PageSize = 5;
pagerControlEx1.PageCount = (int)Math.Ceiling(Convert.ToDouble(_data.Item3.list.Count() / 5.00));
Task.Factory.StartNew(() =>
{
try
{
_Qlock = true;
_ThisData = new List<DoOrder>();
this.Invoke((EventHandler)delegate
{
//zhangy 2020-03-01 Add 释放资源避免Error creating window handle
while (tlphandleorder.Controls.Count > 0)
{
if (tlphandleorder.Controls[0] != null)
{
var ctl = tlphandleorder.Controls[0];
ctl.Dispose();
}
}
tlphandleorder.Controls.Clear();
});
int _Size = pagerControlEx1.PageSize;
var _datas = _data.Item3.list.OrderByDescending(f => f.time);
foreach (var item in _datas)
{
var _di = _guoPanProxy.SelectOrder(item.id);
if (!_di.Item1)
{
this.ShowToastNotify(this, _di.Item2);
return;
}
if (!_di.Item3.status.Equals("1"))
{
this.ShowToastNotify(this, "无数据");
return;
}
_ThisData.Add(_di.Item3);
if (_Size == 0)
{
continue;
}
else
{
_Size--;
}
this.Invoke((EventHandler)delegate
{
GuoPanOrderDetail detail = new GuoPanOrderDetail(_di.Item3);
detail.IsShowConfirmBtn = !_guoPanProxy.IsConfirm(_di.Item3.id).Item1;
detail.Clicks += Detail_Clicks;
if (!tlphandleorder.IsDisposed)
{
tlphandleorder.Controls.Add(detail);
}
});
}
}
catch (Exception ex)
{
_Qlock = false;
LOGGER.Error(ex);
}finally { _Qlock = false; }
});
}
private void Detail_Clicks(object sender, Proxy.GuoPan.Entity.DoOrder _OrderData)
{
var _btn = sender as TouchButtonX;
if (_btn == null)
{
return;
}
switch (_btn.Text)
{
case "下单":
{
var _order = _guoPanProxy.ToOrderData(_OrderData);
if (!_order.Item1)
{
this.ShowToastNotify(this, "数据转换失败");
return;
}
var _data = _guoPanProxy.ReplacementOrder(_order.Item3);
if (!_data.Item1)
{
this.ShowToastNotify(this, "插入数据库失败");
return;
}
var _print = _guoPanProxy.Print(_order.Item3, false);
if (!_print.Item1)
{
this.ShowToastNotify(this, "打印失败");
return;
}
else
{
this.ShowToastNotify(this, "打印成功");
ShowData(DateTime.Now.ToString("yyyyMMdd"));
return;
}
}
break;
case "补打":
{
var _order = _guoPanProxy.ToOrderData(_OrderData);
if (!_order.Item1)
{
this.ShowToastNotify(this, "数据转换失败");
return;
}
var _print = _guoPanProxy.Print(_order.Item3, true);
if (!_print.Item1)
{
this.ShowToastNotify(this, "打印失败");
return;
}
else
{
this.ShowToastNotify(this, "打印成功");
return;
}
}
break;
default:
break;
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
//注册结算支付事件通知
MsgEvent.RemoveListener(Constant.GuoPan_WEIXIN_UI_UPDATA, this.OrderUIEventNotify);
MsgEvent.Receive(Constant.GuoPan_WEIXIN_UI_UPDATA, this.OrderUIEventNotify);
bool openConfirm = Global.Instance.GlobalConfigBoolValue(ConfigConstant.WEIXIN_CONFIRM_PARAMETER, true);
pictureBox4Open(openConfirm);
//IntPtr ParenthWnd = new IntPtr(0);
////查到窗体,得到整个窗体
//ParenthWnd = FindWindow(null, "GuoPanOrderForm");
//GuoPanProxy.ApiInit("45135", "0d678a5c69134af16da49bf32f462011043e16d2", ParenthWnd.ToInt32());
//ShowData(DateTime.Now.ToString("yyyyMMdd"));
}
private void OrderUIEventNotify(object sender, MsgEventArgs e)
{
if (this.InvokeRequired)
{
this.Invoke((EventHandler)delegate
{
if (this.IsDisposed)
{
return;
}
if (this.Visible)
{
ShowData(DateTime.Now.ToString("yyyyMMdd"));
}
});
}
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (this.Owner != null)
{
this.Owner.Close();
}
this.Close();
}
bool _Qlock = false;
private void Btn_Click(object sender, EventArgs e)
{
var _btn = sender as Component.TouchButtonX;
if (_btn == null)
{
return;
}
if (_Qlock)
{
this.ShowToastNotify(this, "正在查询");
return;
}
switch (_btn.Text)
{
case "今天":
ShowData(DateTime.Now.ToString("yyyyMMdd"));
break;
case "昨天":
ShowData(DateTime.Now.AddDays(-1).ToString("yyyyMMdd"));
break;
case "前天":
ShowData(DateTime.Now.AddDays(-2).ToString("yyyyMMdd"));
break;
}
}
private void pictureBox4_Click(object sender, EventArgs e)
{
bool _IsOpen = false;
if (this.pictureBox4.Tag.ToString().Equals("1"))
{
//关闭
_IsOpen = false;
}
else
{
//打开
_IsOpen = true;
}
var config = new Config();
config.Id = IdWorkerUtils.Instance.NextId();
config.Group = ConfigConstant.DEVICE_GROUP;
config.TenantId = Global.Instance.Authc.TenantId;
config.Keys = ConfigConstant.WEIXIN_CONFIRM_PARAMETER;
config.Values = string.Format("{0}", _IsOpen ? "1" : "0");
try
{
using (var db = Global.Instance.OpenDataBase)
{
using (var trans = db.GetTransaction())
{
db.Save(config);
trans.Complete();
}
}
Global.Instance.ReloadConfig(ConfigConstant.DEVICE_GROUP);
}
catch (Exception ex)
{
LOGGER.Info(ex);
}
pictureBox4Open(_IsOpen);
}
/// <summary>
/// 开启/关闭自动接单
/// </summary>
/// <param name="_IsOpen"></param>
private void pictureBox4Open(bool _IsOpen)
{
if (!_IsOpen)
{
this.pictureBox4.Tag = 0;
this.pictureBox4.Image = global::POSV.Properties.Resources.no_2x;
}
else
{
this.pictureBox4.Tag = 1;
this.pictureBox4.Image = global::POSV.Properties.Resources.yes_2x;
}
}
}
}