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.

357 lines
12 KiB
C#

using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;
using DevComponents.DotNetBar.SuperGrid;
using POS.Language.Language;
using POSV.Bean;
using POSV.Card;
using POSV.Component;
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
namespace POSV.Member
{
public partial class CardPointChangeForm : BusinessForm
{
public string memberId = null;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (this.DesignMode) return;
this.Focus();
this.txtInput.Focus();
this.txtInput.SelectAll();
this.ActiveControl = this.txtInput;
this.startPicker.Value = DateTime.Now.Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
this.controlBox.Text = LangProxy.ToLang("积分变动查询");
this.controlBox.ShowApplicationVersion = false;
}
public CardPointChangeForm()
{
InitializeComponent();
}
private void OnQueryPageChangeWithObject(object obj)
{
//获得当前页
int cur = pagerControl1.CurrentPage;
//获得每页显示的记录数
int rows = pagerControl1.RowsPerPage;
PagerControl pager = obj as PagerControl;
if (pager != null)
{
CardPointChange(cur, rows);
}
}
private void OnCloseTouchClick(object sender, EventArgs e)
{
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void OnControlBoxKeyboardClick(object sender, EventArgs e)
{
try
{
KeyboardType keyboardType = KeyboardType.;
Type type = this.ActiveControl.GetType();
PropertyInfo pinfo = type.GetProperty("Keyboard");
if (pinfo != null)
{
keyboardType = (KeyboardType)pinfo.GetValue(this.ActiveControl, null);
}
var keyboard = Application.OpenForms["VirtualKeyboard"];
if (keyboard == null)
{
keyboard = new VirtualKeyboard(keyboardType);
}
((VirtualKeyboard)keyboard).ShowVirtualKeyboard(this, keyboardType);
}
catch (Exception ex)
{
LOGGER.Error(ex, "打开屏幕键盘异常");
}
}
/// <summary>
/// 输入是否验证通过
/// </summary>
private bool InputVerify()
{
if (string.IsNullOrEmpty(this.txtInput.Text.Trim()))
{
return false;
}
return true;
}
/// <summary>
/// 会员卡信息
/// </summary>
private bool CardInfoMessage(string property)
{
bool result = false;
try
{
var request = new MemberInfoQueryRequest();
request.Property = property;
request.Keyword = this.txtInput.Text.Trim();
request.ShopNo = Global.Instance.Authc.StoreNo;
request.PosNo = Global.Instance.Authc.PosNo;
request.WorkerNo = Global.Instance.Worker.No;
var response = CardUtils.MemberInfoQuery(request);
//成功
if (response.Item1)
{
result = true;
this.ShowToastNotify(this, response.Item2);
MemberInfoQueryResponse memberInfoQueryResponse = response.Item3;
memberId = memberInfoQueryResponse.Id;
//获得当前页
int cur = pagerControl1.CurrentPage;
//获得每页显示的记录数
int rows = pagerControl1.RowsPerPage;
CardPointChange(cur, rows);
}
else
{
result = false;
this.ShowToastNotify(this, response.Item2);
}
}
catch (Exception ex)
{
result = false;
this.ShowToastNotify(this, LangProxy.ToLang("会员卡信息查询异常"));
LOGGER.Error(ex, "会员卡信息查询异常");
}
return result;
}
private void btn_exit_Click(object sender, EventArgs e)
{
//先关闭父窗体
if (this.Owner != null)
{
this.Owner.Close();
}
//再关闭当前窗体
this.Close();
}
private void btn_time_Click(object sender, EventArgs e)
{
var obj = sender as ButtonX;
var date = obj.Tag as string;
switch (date)
{
case "today":
this.startPicker.Value = DateTime.Now.Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
break;
case "yesterday":
this.startPicker.Value = DateTime.Now.AddDays(-1).Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
break;
case "curWeek":
//本周
var dayOfWeek = (int)DateTime.Now.DayOfWeek - 1;
if (dayOfWeek == -1)
{
//周日
dayOfWeek = 6;
}
this.startPicker.Value = DateTime.Now.AddDays(-dayOfWeek).Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
break;
case "lastWeek":
//上周
dayOfWeek = (int)DateTime.Now.DayOfWeek - 1;
if (dayOfWeek == -1)
{
//周日
dayOfWeek = 6;
}
this.startPicker.Value = DateTime.Now.AddDays(-dayOfWeek - 7).Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.AddDays(-dayOfWeek - 1).ToString("yyyy-MM-dd 23:59:59"));
break;
case "curMonth":
//当月
var day = DateTime.Now.Day - 1;
this.startPicker.Value = DateTime.Now.AddDays(-day).Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd 23:59:59"));
break;
case "lastMonth":
//当月
day = DateTime.Now.Day - 1;
this.startPicker.Value = DateTime.Now.AddDays(-day).AddMonths(-1).Date;
this.endPicker.Value = DateTime.Parse(DateTime.Now.AddDays(-day - 1).ToString("yyyy-MM-dd 23:59:59"));
break;
case "lastDay":
//前一天
var txtDate = Convert.ToDateTime(this.startPicker.Value);
this.startPicker.Value = txtDate.AddDays(-1).Date;
this.endPicker.Value = DateTime.Parse(txtDate.AddDays(-1).ToString("yyyy-MM-dd 23:59:59"));
break;
}
DoQuery();
}
private void btn_query_Click(object sender, EventArgs e)
{
DoQuery();
}
public void CardPointChange(int PageNum, int pageSize)
{
try
{
var request = new CardPointChangeRequest();
request.StartTime = this.startPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");
request.EndTime = this.endPicker.Value.ToString("yyyy-MM-dd HH:mm:ss");
request.PageNum = PageNum;
request.pageSize = pageSize;
request.MemberId = this.memberId;
request.ShopNo = Global.Instance.Authc.StoreNo;
//request.PosNo = Global.Instance.Authc.PosNo;
//request.WorkerNo = Global.Instance.Worker.No;
request.PosNo = "";
request.WorkerNo = "";
var response = CardUtils.CardPointChange(request);
//成功
if (response.Item1)
{
this.ShowToastNotify(this, response.Item2);
List<CardPointChangeResponse> cardPointChangeResponse = response.Item7;
this.pagerControl1.TotalPage = response.Item4;
this.pagerControl1.CurrentPage = response.Item5;
this.pagerControl1.RecordCount = response.Item3;
this.pagerControl1.RowsPerPage = response.Item6;
historyListTable.PrimaryGrid.DataSource = cardPointChangeResponse;
}
else
{
List<CardPointChangeResponse> list = new List<CardPointChangeResponse>();
historyListTable.PrimaryGrid.DataSource = list;
this.ShowToastNotify(this, response.Item2);
}
}
catch (Exception ex)
{
this.ShowToastNotify(this, LangProxy.ToLang("消费历史查询异常"));
LOGGER.Error(ex, "消费历史查询异常");
}
}
private void OnReadCardClick(object sender, EventArgs e)
{
var result = CardOperateUtils.Instance.ReadCardNo();
if (result.Item1)
{
this.txtInput.Text = result.Item2;
//读卡成功,模拟回车事件
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
}
else
{
result = CardOperateUtilsOther.Instance.ReadCardNo();
if (result.Item1)
{
this.txtInput.Text = result.Item2;
//读卡成功,模拟回车事件
InputSimulatorUtils.SendKey(KeyCodes.Map["return"]);
}
else
{
this.ShowToastNotify(this, result.Item2);
}
}
}
private void OnFinishedClick(object sender, EnterEventArg e)
{
DoQuery();
}
public void DoQuery() {
var isVerify = InputVerify();
if (isVerify)
{
var voucherNo = this.txtInput.Text;
//智能识别刷卡方式
var way = CardUtils.JudgeCardWay(Global.Instance.Worker.TenantId, voucherNo);
if (way == MemberCardNoType.)
{
this.ShowToastNotify(this, LangProxy.ToLang("无法识别的卡号,请确认"));
return;
}
switch (way)
{
case MemberCardNoType.:
{
CardInfoMessage("mobile");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("scanCode");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("cardNo");
}
break;
case MemberCardNoType.:
{
CardInfoMessage("surfaceNo");
}
break;
}
}
else
{
memberId = null;
//获得当前页
int cur = pagerControl1.CurrentPage;
//获得每页显示的记录数
int rows = pagerControl1.RowsPerPage;
CardPointChange(cur, rows);
}
}
}
}