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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}
}
}