1306 lines
76 KiB
C#
1306 lines
76 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using System.Windows.Data;
|
||
using System.Windows.Documents;
|
||
using System.Windows.Input;
|
||
using System.Windows.Media;
|
||
using System.Windows.Media.Imaging;
|
||
using System.Windows.Navigation;
|
||
using System.Windows.Shapes;
|
||
|
||
namespace PosDataTest
|
||
{
|
||
/// <summary>
|
||
/// MainWindow.xaml 的交互逻辑
|
||
/// </summary>
|
||
public partial class MainWindow : Window
|
||
{
|
||
#region 属性
|
||
/// <summary>
|
||
/// 账期唯一标识编码
|
||
/// </summary>
|
||
public string EndAccountCode { get; set; }
|
||
/// <summary>
|
||
/// 账期开始时间
|
||
/// </summary>
|
||
public DateTime EndAccountStartDate { get; set; }
|
||
/// <summary>
|
||
/// 商品信息清单
|
||
/// </summary>
|
||
List<Model.CommodityModel> CommodityModelList { get; set; }
|
||
/// <summary>
|
||
/// 数据下载线程
|
||
/// </summary>
|
||
System.Threading.Thread PosDataDownloadThread { get; set; }
|
||
/// <summary>
|
||
/// 模拟交易数据添加线程
|
||
/// </summary>
|
||
System.Threading.Thread AddDataThread { get; set; }
|
||
/// <summary>
|
||
/// Socket客户端批量执行线程
|
||
/// </summary>
|
||
System.Threading.Thread SocketThread { get; set; }
|
||
/// <summary>
|
||
/// 数据下载实例
|
||
/// </summary>
|
||
ESSupport.Transfer.PosDataDownload DataDownload { get; set; }
|
||
ESSupport.Transfer.PosDataUpload DataUpload { get; set; }
|
||
/// <summary>
|
||
/// Socket客户端列表
|
||
/// </summary>
|
||
System.Collections.Concurrent.ConcurrentDictionary<string, ESSupport.Transfer.PosSuperSocketClient> PosSocketList { get; set; }
|
||
/// <summary>
|
||
/// 界面日志记录
|
||
/// </summary>
|
||
System.Collections.ObjectModel.ObservableCollection<ResultMessage> TransResultTable { get; set; }
|
||
#endregion
|
||
|
||
/// <summary>
|
||
/// Socket客户端模拟连接身份标识信息
|
||
/// </summary>
|
||
private class SocketConnectInfo
|
||
{
|
||
public string ServerpartCode { get; set; }
|
||
public string ShopCode { get; set; }
|
||
public string MachineCode { get; set; }
|
||
}
|
||
public MainWindow()
|
||
{
|
||
InitializeComponent();
|
||
if (string.IsNullOrWhiteSpace(EndAccountCode))
|
||
{
|
||
Sales.IsEnabled = false;
|
||
EndAccount.IsEnabled = false;
|
||
}
|
||
}
|
||
|
||
#region 模拟收银机登录及初始化
|
||
/// <summary>
|
||
/// 登录及初始化
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Login_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
QualityHelper.GetConfiguration();
|
||
ESSupport.Lib.LogHelper.WriteServiceLog("正在通过云端接口获取服务区门店对应业主参数配置。");
|
||
//通过云端接口获取当前服务区门店对应的业主参数配置(软件名称、扫码上传数据地址、业主单位名称、业主单位ID标识)
|
||
//ESSupport.Pos.ThreadHelper.ConfigurationByCloud($"http://{QualityHelper.dbip}:{QualityHelper.serviceport}/Service.asmx");
|
||
//数据上传实例化
|
||
DataUpload = new ESSupport.Transfer.PosDataUpload(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, "10.103.1.8", "8001");
|
||
DataUpload.NotifyEvent += DataUpload_NotifyEvent;
|
||
//数据下发实例化
|
||
DataDownload = new ESSupport.Transfer.PosDataDownload(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode, "pos.eshangtech.com", "8900");
|
||
DataDownload.NotifyEvent += DataDownload_NotifyEvent;
|
||
QualityHelper.sellworkercode = "0001";
|
||
int int_Result = PersonLogin("0001", out string sellWorkerCode);
|
||
if (int_Result == 0)
|
||
{
|
||
Sales.IsEnabled = true;
|
||
EndAccount.IsEnabled = true;
|
||
dp_Start.IsEnabled = false;
|
||
((Button)sender).Content = "登录成功";
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show($"登录失败,原因:{int_Result}");
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 批量模拟机器Socket通讯
|
||
/// <summary>
|
||
/// 消息通知服务控制
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Socket_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (PosSocketList == null)
|
||
{
|
||
//初始化Socket客户端列表
|
||
PosSocketList = new System.Collections.Concurrent.ConcurrentDictionary<string, ESSupport.Transfer.PosSuperSocketClient>();
|
||
}
|
||
|
||
#region Socket客户端机器列表
|
||
List<SocketConnectInfo> list_SocketConnect = new List<SocketConnectInfo>();
|
||
list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "888888", ShopCode = "042002", MachineCode = "9999" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620022", ShopCode = "032001", MachineCode = "3515" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620016", ShopCode = "012001", MachineCode = "3507" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620016", ShopCode = "032001", MachineCode = "3518" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620036", ShopCode = "012002", MachineCode = "3602" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620046", ShopCode = "032001", MachineCode = "4037" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620018", ShopCode = "012101", MachineCode = "4537" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "213011", MachineCode = "3517" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620523", ShopCode = "012001", MachineCode = "3524" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620049", ShopCode = "012001", MachineCode = "3599" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620042", ShopCode = "032001", MachineCode = "3589" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "213001", MachineCode = "3513" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "621002", ShopCode = "012001", MachineCode = "3568" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620029", ShopCode = "012001", MachineCode = "3561" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620033", ShopCode = "032001", MachineCode = "3550" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620029", ShopCode = "032001", MachineCode = "3514" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "233021", MachineCode = "3578" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620049", ShopCode = "032001", MachineCode = "3577" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620050", ShopCode = "012001", MachineCode = "3570" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620042", ShopCode = "032001", MachineCode = "3589" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "233011", MachineCode = "3571" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620922", ShopCode = "032001", MachineCode = "3552" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620017", ShopCode = "012001", MachineCode = "3538" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "621002", ShopCode = "032001", MachineCode = "3557" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "032001", MachineCode = "3565" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620018", ShopCode = "113004", MachineCode = "4539" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620025", ShopCode = "032001", MachineCode = "3508" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620048", ShopCode = "032001", MachineCode = "3585" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "621202", ShopCode = "032001", MachineCode = "3543" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620021", ShopCode = "012001", MachineCode = "3504" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620011", ShopCode = "032001", MachineCode = "3595" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620046", ShopCode = "033004", MachineCode = "3548" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620018", ShopCode = "131002", MachineCode = "4540" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620802", ShopCode = "012001", MachineCode = "3598" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620018", ShopCode = "032101", MachineCode = "4536" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "012001", MachineCode = "3586" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620026", ShopCode = "032001", MachineCode = "4741" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620048", ShopCode = "012001", MachineCode = "3510" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620026", ShopCode = "012001", MachineCode = "3506" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620040", ShopCode = "012001", MachineCode = "3582" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620040", ShopCode = "032001", MachineCode = "3549" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620043", ShopCode = "012001", MachineCode = "3536" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620027", ShopCode = "012001", MachineCode = "3502" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620013", ShopCode = "012001", MachineCode = "3600" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620027", ShopCode = "032001", MachineCode = "3532" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620031", ShopCode = "213021", MachineCode = "3579" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620020", ShopCode = "032001", MachineCode = "3542" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620501", ShopCode = "032001", MachineCode = "4737" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620038", ShopCode = "032001", MachineCode = "3551" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620500", ShopCode = "012001", MachineCode = "3591" });
|
||
//list_SocketConnect.Add(new SocketConnectInfo() { ServerpartCode = "620050", ShopCode = "032001", MachineCode = "3530" });
|
||
#endregion
|
||
|
||
#region 初始化Socket客户端
|
||
for (int i = 0; i < list_SocketConnect.Count; i++)
|
||
{
|
||
//
|
||
if (!PosSocketList.ContainsKey(list_SocketConnect[i].ServerpartCode + list_SocketConnect[i].ShopCode + list_SocketConnect[i].MachineCode))
|
||
{
|
||
ESSupport.Transfer.PosSuperSocketClient _SocketClient = new ESSupport.Transfer.PosSuperSocketClient(
|
||
$"ws://10.103.1.8:7199/?ServerpartCode={list_SocketConnect[i].ServerpartCode}&ShopCode={list_SocketConnect[i].ShopCode}&MachineCode={list_SocketConnect[i].MachineCode}",
|
||
list_SocketConnect[i].ServerpartCode, list_SocketConnect[i].ShopCode, list_SocketConnect[i].MachineCode, "10.103.1.8", "8001");
|
||
_SocketClient.NotifyEvent += PosSocket_NotifyEvent;
|
||
PosSocketList.TryAdd(list_SocketConnect[i].ServerpartCode + list_SocketConnect[i].ShopCode + list_SocketConnect[i].MachineCode, _SocketClient);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region Socket客户端连接启动线程
|
||
new System.Threading.Thread(() =>
|
||
{
|
||
foreach (KeyValuePair<string, ESSupport.Transfer.PosSuperSocketClient> item in PosSocketList)
|
||
{
|
||
if (!item.Value.ClientRuning)
|
||
{
|
||
item.Value.Start();
|
||
}
|
||
}
|
||
})
|
||
{ IsBackground = true }.Start();
|
||
#endregion
|
||
|
||
#region 界面在线数量显示统计线程
|
||
if (SocketThread == null || !SocketThread.IsAlive)
|
||
{
|
||
SocketThread = new System.Threading.Thread(() =>
|
||
{
|
||
do
|
||
{
|
||
int int_Online = 0;
|
||
if (PosSocketList.Count > 0)
|
||
{
|
||
int_Online = PosSocketList.Values.Where(p => p.SocketState == 1).Count();
|
||
}
|
||
Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (System.Threading.ThreadStart)delegate
|
||
{
|
||
//要执行的代码
|
||
txtSocketMessage.Text = $"收银机总数:{PosSocketList.Count};当前在线数:{int_Online}";
|
||
});
|
||
System.Threading.Thread.Sleep(5 * 1000);
|
||
} while (true);
|
||
})
|
||
{ IsBackground = true };
|
||
SocketThread.Start();
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
#endregion
|
||
|
||
#region 模拟添加流水数据
|
||
/// <summary>
|
||
/// 添加交易流水
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Sales_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (AddDataThread == null || !AddDataThread.IsAlive)
|
||
{
|
||
AddDataThread = new System.Threading.Thread(() =>
|
||
{
|
||
int int_AddCount = new Random(Guid.NewGuid().GetHashCode()).Next(1, 20);
|
||
for (int i = 0; i < int_AddCount; i++)
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"正在添加第{i + 1}条数据,共{int_AddCount}条。");
|
||
DateTime time_MasterTime = ESSupport.Method.DateTimeExtend.GetRandomTime(dp_Start.DateTime, dp_End.DateTime);
|
||
AddSellData(time_MasterTime);
|
||
AddException(new Random(Guid.NewGuid().GetHashCode()).Next(1, 100), time_MasterTime);
|
||
}
|
||
})
|
||
{ IsBackground = true };
|
||
AddDataThread.Start();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 模拟上传压缩文件
|
||
private void DataFileUpload_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
foreach (KeyValuePair<string, ESSupport.Transfer.PosSuperSocketClient> item in PosSocketList)
|
||
{
|
||
if (!item.Value.ClientRuning)
|
||
{
|
||
item.Value.Start();
|
||
System.Threading.Thread.Sleep(1000);
|
||
}
|
||
item.Value.SendSocketMsg(ESSupport.Transfer.TransferDataDictionary.TableDataType.UploadZipFile);
|
||
}
|
||
//DataFileUp();
|
||
}
|
||
#endregion
|
||
|
||
#region 模拟日结交班
|
||
/// <summary>
|
||
/// 模拟日结交班
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void EndAccount_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
if (dp_End.DateTime < dp_Start.DateTime)
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"结账失败,原因:账期结束时间小于账期开始时间。");
|
||
return;
|
||
}
|
||
int int_AddCount = new Random(Guid.NewGuid().GetHashCode()).Next(1, 10000);
|
||
CreateNaturalDay(dp_End.DateTime);
|
||
if (Prints.CheckOutData(int_AddCount, "9001", dp_End.DateTime))
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"结账成功。缴款金额:{int_AddCount}");
|
||
//MessageBox.Show($"结账成功。缴款金额:{int_AddCount}");
|
||
Login.Content = "登录系统";
|
||
EndAccountCode = "";
|
||
Sales.IsEnabled = false;
|
||
EndAccount.IsEnabled = false;
|
||
dp_Start.IsEnabled = true;
|
||
}
|
||
else
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"结账失败,原因:请查阅Log文件。缴款金额:{int_AddCount}");
|
||
//MessageBox.Show($"结账失败,原因:请查阅Log文件。缴款金额:{int_AddCount}");
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 模拟数据初始化下载
|
||
/// <summary>
|
||
/// 模拟数据初始化下载
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Shop_Click(object sender, RoutedEventArgs e)
|
||
{
|
||
|
||
try
|
||
{
|
||
string str_SQL = $@"SELECT B.COMMODITYSALE_ID AS COMMODITYSALE_ID,
|
||
A.STARTDATE,A.ENDDATE,A.SERVERPARTCODE,A.SHOPCODE,
|
||
A.MACHINECODE,B.COMMODITY_TYPE,B.COMMODITY_CODE,
|
||
B.COMMODITY_BARCODE,B.COMMODITY_NAME,
|
||
B.TICKTE_COUNT AS TICKETCOUNT,B.TOTAL_COUNT AS TOTALCOUNT,
|
||
B.TOTAL_AMOUNT AS TOTALSELLAMOUNT,
|
||
B.TOTAL_OFFAMOUNT AS TOTALOFFAMOUNT
|
||
FROM T_ENDACCOUNT_NEW A,T_COMMODITYSALE_NEW B
|
||
WHERE A.ENDACCOUNT_CODE = B.ENDACCOUNT_CODE AND
|
||
A.ENDACCOUNT_CODE = '510406112001468320210912163420088239'";
|
||
str_SQL = "";
|
||
//str_SQL = $@"UPDATE T_DATAFILEUPLOAD SET DATAFILEUPLOAD_STATE = 0
|
||
// WHERE DATAFILEUPLOAD_NAME = '450001133403404620210910.zip'"; // "SELECT * FROM 'GeneralServiceURL'";
|
||
//str_SQL = "SELECT * FROM T_DATAFILEUPLOAD";
|
||
string str_Serverpart = "340310233211";
|
||
str_Serverpart = "515320131201,515320012201,515320032201,515320111201,515320013002,515320033002";
|
||
|
||
//str_Serverpart = "513210033006,513210032201,513210013006,513210011002,513210012201,513210031002";
|
||
//List<string> list_TableName = new List<string>() { "1", "2", "3", "4", "5", "6", "8", "20", "21", "10" };
|
||
//for (int i = 0; i < list_TableName.Count; i++)
|
||
//{
|
||
// ESSupport.Lib.HttpHelper.HttpPost("{\"ServerpartShopCodeS\":\"" + str_Serverpart + "\",\"TableName\":\"" + list_TableName[i] + "\",\"OperateTime\":\"" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "\",\"SocketContent\":\"" + str_SQL + "\"}",
|
||
// "http://pos.eshangtech.com:8900/webApi_publish/WebSocket/sendSocketMsg", "application/json;charset=UTF-8");
|
||
//}
|
||
|
||
|
||
//区服PB系统数据上传指令内容示例:"{\"ServerpartShopCodeS\":\"510500000000\",\"TableName\":\"20\",\"OperateTime\":\"2021/09/24 19:00:00\",\"SocketContent\":\"510500|013002|003|20210919183627|20210920172808\"}"
|
||
List<string> list = new List<string>();
|
||
list.Add("510400|011002|1041|20210926214940|20210927212520");
|
||
list.Add("510400|011002|1041|20210927212533|20210928212746");
|
||
list.Add("510400|011002|1041|20210928212829|20210929213052");
|
||
list.Add("510400|011002|1041|20210929213830|20210930234847");
|
||
list.Add("510400|011002|1041|20210930234906|20211001172815");
|
||
list.Add("510400|011002|1041|20211001172843|20211002172006");
|
||
list.Add("510400|011002|1041|20211002172635|20211003170939");
|
||
list.Add("510400|011002|1041|20211003171016|20211004170919");
|
||
list.Add("510400|012201|1031|20210926235624|20210927235527");
|
||
list.Add("510400|012201|1031|20210927235544|20210928235415");
|
||
list.Add("510400|012201|1031|20210928235434|20210929151504");
|
||
list.Add("510400|012201|1031|20210929151519|20210930235633");
|
||
list.Add("510400|012201|1031|20210930235650|20211001173526");
|
||
list.Add("510400|012201|1031|20211001173546|20211002175315");
|
||
list.Add("510400|012201|1031|20211002175329|20211003172734");
|
||
list.Add("510400|012201|1031|20211003172811|20211004171535");
|
||
list.Add("510400|013002|2997|20210926111138|20210927121336");
|
||
list.Add("510400|013002|2997|20210927121348|20210928120445");
|
||
list.Add("510400|013002|2997|20210928120457|20210929111939");
|
||
list.Add("510400|013002|2997|20210929112013|20210930114000");
|
||
list.Add("510400|013002|2997|20210930114018|20211001163723");
|
||
list.Add("510400|013002|2997|20211001163755|20211002151815");
|
||
list.Add("510400|013002|2997|20211002151836|20211003150958");
|
||
list.Add("510400|013002|2997|20211003151019|20211004151925");
|
||
list.Add("510400|031002|1042|20210926205841|20210927213240");
|
||
list.Add("510400|031002|1042|20210927213259|20210928210216");
|
||
list.Add("510400|031002|1042|20210928210229|20210929215047");
|
||
list.Add("510400|031002|1042|20210929215102|20210930233911");
|
||
list.Add("510400|031002|1042|20210930233929|20211001173314");
|
||
list.Add("510400|031002|1042|20211001173332|20211002180508");
|
||
list.Add("510400|031002|1042|20211002180529|20211003173354");
|
||
list.Add("510400|031002|1042|20211003173419|20211004173008");
|
||
list.Add("510400|032201|1012|20210926235932|20210927235755");
|
||
list.Add("510400|032201|1012|20210927235901|20210928235830");
|
||
list.Add("510400|032201|1012|20210928235849|20210929121717");
|
||
list.Add("510400|032201|1012|20210929121823|20210930235744");
|
||
list.Add("510400|032201|1012|20210930235807|20211001173602");
|
||
list.Add("510400|032201|1012|20211001173729|20211002173923");
|
||
list.Add("510400|032201|1012|20211002173957|20211003173924");
|
||
list.Add("510400|032201|1012|20211003174028|20211004173655");
|
||
list.Add("510400|033002|1051|20210926105707|20210927111651");
|
||
list.Add("510400|033002|1051|20210927111812|20210928111757");
|
||
list.Add("510400|033002|1051|20210928111815|20210929113422");
|
||
list.Add("510400|033002|1051|20210929113455|20210930124214");
|
||
list.Add("510400|033002|1051|20210930124226|20211001171906");
|
||
list.Add("510400|033002|1051|20211001171920|20211002173733");
|
||
list.Add("510400|033002|1051|20211002173757|20211003172147");
|
||
list.Add("510400|033002|1051|20211003172207|20211004171307");
|
||
|
||
str_Serverpart = "510400000000";
|
||
for (int i = 0; i < list.Count; i++)
|
||
{
|
||
ESSupport.Lib.HttpHelper.HttpPost("{\"ServerpartShopCodeS\":\"" + str_Serverpart + "\",\"TableName\":\"20\",\"OperateTime\":\"" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "\",\"SocketContent\":\"" + list[i] + "\"}",
|
||
"http://pos.eshangtech.com:8900/webApi_publish/WebSocket/sendSocketMsg", "application/json;charset=UTF-8");
|
||
System.Threading.Thread.Sleep(3000);
|
||
}
|
||
}
|
||
catch (System.Net.WebException wex)
|
||
{
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
return;
|
||
if (PosDataDownloadThread == null || !PosDataDownloadThread.IsAlive)
|
||
{
|
||
PosDataDownloadThread = new System.Threading.Thread(() =>
|
||
{
|
||
//直连云端获取门店信息(获取门店ID、门店名称、业态编码、业态名称、门店状态、是否统一定价门店、是否上传营收数据、是否上传稽核数据、销售金额上限、销售数量上限、是否记录优惠折扣、所属业主单位ID、所属业主单位名称)
|
||
bool b_DownLoad = DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueShopInfoToMachine, DateTime.MinValue);
|
||
//直连云端获取商品信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueCommodityInfoToMachine, DateTime.MinValue);
|
||
//直连云端获取商品类别信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueCommodityTypeToMachine, DateTime.MinValue);
|
||
//直连云端获取商品自定义类别信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueCommodityUserTypeToMachine, DateTime.MinValue);
|
||
//直连云端获取收银员工号信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueSellWorkerInfoToMachine, DateTime.MinValue);
|
||
//直连云端获取智能稽核任务信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueAuditTaskInfoToMachine, DateTime.MinValue);
|
||
//直连云端获取促销活动信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssuePromotionToMachine, DateTime.MinValue);
|
||
//直连云端获取收银参数配置信息
|
||
DataDownload.DataDownload(ESSupport.Transfer.TransferDataDictionary.TableDataType.IssueConfigurationToMachine, DateTime.MinValue);
|
||
DataUpload.DataUpload(ESSupport.Transfer.TransferDataDictionary.TableDataType.UploadMachineInfo, DateTime.Now);
|
||
})
|
||
{
|
||
IsBackground = true
|
||
};
|
||
PosDataDownloadThread.Start();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 模拟上传压缩文件
|
||
/// <summary>
|
||
/// 压缩文件上传
|
||
/// </summary>
|
||
private void DataFileUp()
|
||
{
|
||
new System.Threading.Thread(() =>
|
||
{
|
||
//上传数据前先立即上报心跳数据,解决定时心跳因关机导致本地数据版本未更新到服务器的问题
|
||
//ESSupport.Pos.ThreadHelper.StateFeedbackUpload($"http://{QualityHelper.dbip}:{QualityHelper.DataServicePort}/DataServices/Service.asmx");
|
||
//初始化压缩包上传实例
|
||
ESSupport.Transfer.ZipFileUpload zipFileUpload = new ESSupport.Transfer.ZipFileUpload();
|
||
zipFileUpload.NotifyEvent += ZipFileUpload_NotifyEvent;
|
||
TransResultBeginInvoke(DateTime.Now, $"开始上传压缩文件");
|
||
//上传全部压缩包文件至服务器
|
||
zipFileUpload.UploadDataZipFile($"http://{"10.103.1.8"}:{"7081"}/PosDataUpload");
|
||
})
|
||
{
|
||
IsBackground = true
|
||
}.Start();
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 ->模拟生成流水数据
|
||
/// <summary>
|
||
/// 模拟生成流水数据
|
||
/// </summary>
|
||
/// <param name="masterTime"></param>
|
||
private void AddSellData(DateTime masterTime)
|
||
{
|
||
try
|
||
{
|
||
#region 首次执行,缓存商品数据
|
||
if (CommodityModelList == null)
|
||
{
|
||
CommodityModelList = new List<Model.CommodityModel>();
|
||
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
|
||
$@"SELECT ROW_NUMBER() OVER (ORDER BY D.COMMODITYMULTI_CODE DESC,
|
||
CONVERT(INT,ISNULL(A.CONTAINER_CODE,'999999999')),A.COMMODITYEX_ID DESC) AS COLUMSLIST,
|
||
A.COMMODITY_BARCODE,A.COMMODITY_CODE,A.COMMODITY_TYPE,
|
||
A.COMMODITY_SYMBOL,A.COMMODITY_NAME,A.COMMODITY_RETAILPRICE,
|
||
A.COMMODITY_UNIT,A.COMMODITY_RULE,A.COMMODITY_MEMBERPRICE,
|
||
ISNULL(C.KITCHENCONFIG_INDEX,1000) AS KITCHENCONFIG_INDEX,
|
||
ISNULL(A.METERINGMETHOD,1) AS METERINGMETHOD,
|
||
ISNULL(D.COMMODITYMULTI_CODE,A.COMMODITY_CODE) AS COMMODITYMULTI_CODE,
|
||
ISNULL(D.COMMODITYMULTI_NAME,A.COMMODITY_NAME) AS COMMODITYMULTI_NAME
|
||
FROM T_COMMODITYEX A
|
||
LEFT JOIN T_COMMODITYMULTI D ON A.COMMODITY_CODE = D.COMMODITY_CODE AND
|
||
A.BUSINESSTYPE = D.BUSINESSTYPE AND A.SERVERPARTCODE = D.SERVERPARTCODE
|
||
LEFT JOIN T_KITCHENCONFIG C ON A.COMMODITY_TYPE = C.COMMODITYTYPE
|
||
WHERE A.SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
|
||
A.SERVERPARTSHOP_ID = '{ESSupport.DataStorage.DataFunction.QueryShopID(QualityHelper.serverpartcode, QualityHelper.shopcode)}' AND
|
||
A.ISVALID = 1
|
||
ORDER BY D.COMMODITYMULTI_CODE DESC,
|
||
CONVERT(INT,ISNULL(A.CONTAINER_CODE,'999999999')),
|
||
A.COMMODITYEX_ID DESC").Tables[0];
|
||
foreach (DataRow _DataRow in _DataTable.Rows)
|
||
{
|
||
CommodityModelList.Add(new Model.CommodityModel
|
||
{
|
||
CommodityBarCode = _DataRow["COMMODITY_BARCODE"].ToString(),
|
||
CommodityCode = _DataRow["COMMODITY_CODE"].ToString(),
|
||
CommodityName = _DataRow["COMMODITY_NAME"].ToString(),
|
||
CommodityRule = _DataRow["COMMODITY_RULE"].ToString(),
|
||
CommodityUnit = _DataRow["COMMODITY_UNIT"].ToString(),
|
||
CommoditySymbol = _DataRow["COMMODITY_SYMBOL"].ToString(),
|
||
CommodityType = _DataRow["COMMODITY_TYPE"].ToString(),
|
||
PrintGoodsName = _DataRow["COMMODITY_NAME"].ToString(),
|
||
KitchenIndex = decimal.Parse(_DataRow["KITCHENCONFIG_INDEX"].ToString()),
|
||
MemberPrice = decimal.Parse(_DataRow["COMMODITY_MEMBERPRICE"].ToString()),
|
||
MeteringMethod = decimal.Parse(_DataRow["METERINGMETHOD"].ToString()),
|
||
MultiCode = _DataRow["COMMODITYMULTI_CODE"].ToString(),
|
||
MultiName = _DataRow["COMMODITYMULTI_NAME"].ToString(),
|
||
MultiPrice = decimal.Parse(_DataRow["COMMODITY_RETAILPRICE"].ToString()),
|
||
RetailPrice = decimal.Parse(_DataRow["COMMODITY_RETAILPRICE"].ToString())
|
||
});
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
DataTable table_Goods = GoodsTableHelper.GetCommodityTableStructure();
|
||
int int_AddCount = new Random(Guid.NewGuid().GetHashCode()).Next(1, 100);
|
||
for (int i = 0; i < int_AddCount; i++)
|
||
{
|
||
int int_GoodIndex = new Random(Guid.NewGuid().GetHashCode()).Next(0, CommodityModelList.Count);
|
||
DataRow _goodsRow = GoodsAddHelper.IsVague(CommodityModelList[int_GoodIndex].CommodityBarCode, table_Goods, QualityHelper.WeighSign, out bool _bOverly);
|
||
if (_goodsRow != null)
|
||
{
|
||
GoodsTableHelper.TouchInputSale(_goodsRow, table_Goods, _bOverly, decimal.Parse(_goodsRow["count"].ToString()), false);
|
||
}
|
||
}
|
||
Model.PayAmountModel pay_PayAmountModel = new Model.PayAmountModel();
|
||
decimal sellcount = (decimal)table_Goods.Compute("SUM(COUNT)", "");
|
||
decimal _offprice = (decimal)table_Goods.Compute("SUM(DISCOUNT_RATE)", "");
|
||
decimal countprice = (decimal)table_Goods.Compute("SUM(PRICE)", "");
|
||
int int_InternalPay = new Random(Guid.NewGuid().GetHashCode()).Next(1, (int)countprice);
|
||
GoodsTableHelper.CouponAdd(table_Goods, countprice - int_InternalPay);
|
||
sellcount = (decimal)table_Goods.Compute("SUM(COUNT)", "");
|
||
_offprice = (decimal)table_Goods.Compute("SUM(DISCOUNT_RATE)", "");
|
||
countprice = (decimal)table_Goods.Compute("SUM(PRICE)", "");
|
||
|
||
pay_PayAmountModel.Wechat = new Random(Guid.NewGuid().GetHashCode()).Next(1, (int)countprice);
|
||
pay_PayAmountModel.CashPay = countprice - pay_PayAmountModel.Wechat;
|
||
pay_PayAmountModel.SellMasterCode = ESSupport.DataStorage.DataFunction.CreateUniqueCode(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
|
||
pay_PayAmountModel.CouponName = "企业会员优惠";
|
||
|
||
if (GetCashierData(table_Goods, GetTicketCode(), countprice, pay_PayAmountModel, countprice, masterTime, "", "",
|
||
_offprice, sellcount, pay_PayAmountModel.SellMasterCode, "", ""))
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran($@"INSERT INTO T_CUSTOMERINFO (CUSTOMERINFO_ID,SELLMASTER_CODE,
|
||
ACQUISITION_TIME,SERVERPARTCODE,SHOPCODE,MACHINECODE,SELLMASTER_AMOUNT,CUSTOMER_AGE,CUSTOMER_GENDER)
|
||
VALUES ({ESSupport.DataStorage.DataFunction.CreateNextSequence("T_CUSTOMERINFO", "CUSTOMERINFO_ID")},
|
||
'{pay_PayAmountModel.SellMasterCode}',DATETIME('{masterTime}'),'888888','042002','9999',{countprice},29,1)");
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran($@"INSERT INTO T_MOBILE_PAY (MOBILE_PAY_ID,
|
||
SERVERPARTCODE,SHOPCODE,MACHINECODE,WORKERCODE,MOBILEPAY_DATE,
|
||
MOBILEPAY_TYPE,TICKET_CODE,TICKET_AMOUNT,MOBILEPAY_RESULT,
|
||
MOBILEPAY_FEEDBACK,MOBILEPAY_STATE,MOBILEPAY_OPERATORS)
|
||
VALUES ({ESSupport.DataStorage.DataFunction.CreateNextSequence("T_MOBILE_PAY", "MOBILE_PAY_ID")},
|
||
'888888','042002','9999','0001',DATETIME('{masterTime}'),'ALIPAY',
|
||
'{$"8888880420029999{masterTime.ToString("yyyyMMddHHmmss")}"}',
|
||
{pay_PayAmountModel.Wechat},5,'',1,1005)");
|
||
TransResultBeginInvoke(DateTime.Now, $"交易流水添加成功。共{sellcount}件商品,销售金额:{countprice}元;\r\n" +
|
||
$"现金:{pay_PayAmountModel.CashPay}元;移动支付:{pay_PayAmountModel.Wechat}元;交易时间:{masterTime}");
|
||
//MessageBox.Show($"交易流水生成成功。共{sellcount}件商品,销售金额:{countprice}元");
|
||
}
|
||
else
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"交易流水保存失败,原因:请查阅Log文件。共{sellcount}件商品,销售金额:{countprice}元;交易时间:{masterTime}");
|
||
//MessageBox.Show($"交易流水保存失败,原因:请查阅Log文件。共{sellcount}件商品,销售金额:{countprice}元");
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, $"交易流水保存失败。原因:{ex.Message}");
|
||
// MessageBox.Show($"交易流水保存失败。原因[{ex.TargetSite}]:{ex.Message}");
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 模拟生成自然日数据
|
||
/// <summary>
|
||
/// 自然日数据
|
||
/// </summary>
|
||
/// <param name="endDate"></param>
|
||
private void CreateNaturalDay(DateTime endDate)
|
||
{
|
||
//实例化压缩文件处理传输类
|
||
ESSupport.ZipFile.PosDataZipFile zip_PosDataZipFile = new ESSupport.ZipFile.PosDataZipFile(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
|
||
zip_PosDataZipFile.NotifyEvent += Zip_PosDataZipFile_NotifyEvent;
|
||
int int_Days = endDate.Subtract(endDate.Date.AddDays(-7)).Days;
|
||
//补齐上一次自然日数据生成时间至当前时间的自然日结账数据
|
||
for (int i = int_Days; i > 0; i--)
|
||
{
|
||
if (ESSupport.Lib.SyBaseHelper.QueryOdbc(
|
||
$@"SELECT 1 FROM T_ENDACCOUNT_NEW
|
||
WHERE SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
|
||
SHOPCODE = '{QualityHelper.shopcode}' AND MACHINECODE = '{QualityHelper.machinecode}' AND
|
||
STARTDATE = DATETIME('{endDate.Date.AddDays(-1 * i).ToString("yyyy/MM/dd HH:mm:ss")}') AND
|
||
ENDACCOUNT_TYPE = {(int)Common.PosDictionary.EndaccountType.NaturalDayAccount}").Tables[0].Rows.Count == 0)
|
||
{
|
||
//生成自然日结账数据
|
||
PosReportHelper.CreateEndaccount(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode,
|
||
QualityHelper.sellworkercode, QualityHelper.sellworkercode, QualityHelper.sellworkername, 0, endDate.Date.AddDays(-1 * i),
|
||
endDate.Date.AddDays(-1 * (i - 1)).AddSeconds(-1), Common.PosDictionary.EndaccountType.NaturalDayAccount, false);
|
||
//生成自然日流水压缩文件
|
||
zip_PosDataZipFile.CreateDataZipFile(endDate.Date.AddDays(-1 * i), endDate.Date.AddDays(-1 * (i - 1)).AddSeconds(-1), ESSupport.ZipFile.PosDataZipFile.DateType.NaturalDay);
|
||
TransResultBeginInvoke(DateTime.Now, $"自然日流水文件生成成功。数据日期:{endDate.Date.AddDays(-1 * i)}");
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 模拟生成异常稽核数据
|
||
private void AddException(int exCount, DateTime operateDate)
|
||
{
|
||
List<string> str_SQL = new List<string>();
|
||
List<ESSupport.Lib.EnumEntity> list_AbnormalType = ESSupport.Lib.EnumHelper.EnumToList<Common.PosDictionary.AbnormalType>();
|
||
int int_max = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_ABNORMALITY", "ABNORMALITY_ID");
|
||
int int_maxd = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_ABNORMALITYDETAIL", "ABNORMALITYDETIL_ID");
|
||
|
||
int int_AbnormalType = new Random(Guid.NewGuid().GetHashCode()).Next(0, list_AbnormalType.Count);
|
||
string str_UniqueCode = ESSupport.DataStorage.DataFunction.CreateUniqueCode("888888", "042002", "9999");
|
||
decimal dec_Amount = 0;
|
||
for (int i = 0; i < exCount; i++)
|
||
{
|
||
int int_GoodIndex = new Random(Guid.NewGuid().GetHashCode()).Next(0, CommodityModelList.Count);
|
||
str_SQL.Add($@"INSERT INTO T_ABNORMALITYDETAIL (ABNORMALITYDETIL_ID,ABNORMALITY_CODE,
|
||
COMMODITY_CODE,COMMODITY_BARCODE,COMMODITY_TYPE,COMMODITY_NAME,
|
||
COMMODITY_COUNT,COMMODITY_PRICE,TOTALDISCOUNT,TOTALAMOUNT,LINENUM,OPERATEDATE,
|
||
ABNORMALITY_STATE,ABNORMALITYDETILS_DESC,TRANSFER_STATE,ABNORMALITYDETIL_CODE)
|
||
VALUES({int_maxd + i},'{str_UniqueCode}','{CommodityModelList[int_GoodIndex].CommodityCode}',
|
||
'{CommodityModelList[int_GoodIndex].CommodityBarCode}','{CommodityModelList[int_GoodIndex].CommodityType}',
|
||
'{CommodityModelList[int_GoodIndex].CommodityName}',3,{CommodityModelList[int_GoodIndex].RetailPrice},0,
|
||
{CommodityModelList[int_GoodIndex].RetailPrice * 3},1,DATETIME('{operateDate}'),1,NULL,1,
|
||
'{ESSupport.DataStorage.DataFunction.CreateUniqueCode("888888", "042002", "9999")}')");
|
||
dec_Amount += (CommodityModelList[int_GoodIndex].RetailPrice * 3);
|
||
}
|
||
str_SQL.Add($@"INSERT INTO T_ABNORMALITY (ABNORMALITY_ID,ABNORMALITY_CODE,ABNORMALITY_PCODE,
|
||
PROVINCE_ID,PROVINCE_CODE,PROVINCE_NAME,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,BUSINESSTYPE,
|
||
BUSINESS_NAME,SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME,MACHINECODE,MANAGER_CODE,SELLWORK_CODE,
|
||
ABNORMALITY_TIME,ABNORMALITY_TYPE,SERIAL_CODE,COMMODITY_ROWCOUNT,COMMOTITY_COUNT,TOTALAMOUNT,
|
||
ACTUALAMOUNT,ABNORMALITY_DESC,TRANSFER_STATE,ABNORMALITY_START)
|
||
VALUES({int_max},'{str_UniqueCode}',NULL,NULL,
|
||
'620000',NULL,NULL,'888888','驿商服务区','1000',NULL,7503,'042002','驿商门店商品测试','9999','','0001',DATETIME('{operateDate}'),
|
||
{list_AbnormalType[int_AbnormalType].EnumValue},'',{exCount},{exCount * 3},{dec_Amount},{dec_Amount},'',0,DATETIME('{operateDate}'))");
|
||
if (str_SQL.Count > 0)
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(str_SQL);
|
||
TransResultBeginInvoke(DateTime.Now, $"异常数据添加成功。数量:{str_SQL.Count}");
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 登录账期班期数据验证
|
||
/// <summary>
|
||
/// 登录账期班期数据验证
|
||
/// </summary>
|
||
/// <param name="userWorkerCode">收银员工号</param>
|
||
/// <returns></returns>
|
||
public int PersonLogin(string userWorkerCode, out string sellWorkerCode)
|
||
{
|
||
sellWorkerCode = userWorkerCode;
|
||
string _EndaccountCode;
|
||
try
|
||
{
|
||
//不带收银员进行查询
|
||
DataTable _EndaccountTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
|
||
$@"SELECT ENDACCOUNT_ID,ENDACCOUNT_CODE,STARTDATE
|
||
FROM T_ENDACCOUNT_NEW
|
||
WHERE ENDDATE IS NULL AND ENDACCOUNT_TYPE = 1 AND
|
||
SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
|
||
SHOPCODE='{QualityHelper.shopcode}' AND
|
||
MACHINECODE = '{QualityHelper.machinecode}'
|
||
ORDER BY ENDACCOUNT_ID DESC").Tables[0];
|
||
#region 已结账
|
||
if (_EndaccountTable.Rows.Count == 0)
|
||
{
|
||
DateTime _StartDate = dp_Start.DateTime;
|
||
int _MaxID = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_ENDACCOUNT_NEW", "ENDACCOUNT_ID");
|
||
_EndaccountCode = ESSupport.DataStorage.DataFunction.CreateUniqueCode(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
|
||
|
||
try
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
|
||
$@"INSERT INTO T_ENDACCOUNT_NEW (ENDACCOUNT_ID,SERVERPARTCODE,SHOPCODE,
|
||
MACHINECODE,STARTDATE,ENDACCOUNT_CODE,ENDACCOUNT_TYPE,TRANSFER_STATE)
|
||
VALUES ({_MaxID},'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}',
|
||
'{QualityHelper.machinecode}',DATETIME('{_StartDate}'),'{_EndaccountCode}',1,0)");
|
||
EndAccountStartDate = _StartDate;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"账期插入失败[{ex.TargetSite}]:{ex.Message}");
|
||
return -1;
|
||
}
|
||
|
||
//插入交班记录
|
||
int _MaxPid = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_PERSONSELL_NEW", "PERSONSELL_ID");
|
||
try
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
|
||
$@"INSERT INTO T_PERSONSELL_NEW (PERSONSELL_ID,SERVERPARTCODE,SHOPCODE,
|
||
MACHINECODE,STARTDATE,SELLWORKER_CODE,ENDACCOUNT_CODE,WOKER_NUMBER,TRANSFER_STATE)
|
||
VALUES({_MaxPid},'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}','{QualityHelper.machinecode}',
|
||
DATETIME('{_StartDate}'),'{userWorkerCode}','{_EndaccountCode}',1,0)");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"账期工班插入失败[{ex.TargetSite}]:{ex.Message}");
|
||
return -2;
|
||
}
|
||
}
|
||
#endregion
|
||
#region 未结账
|
||
else
|
||
{
|
||
_EndaccountCode = _EndaccountTable.Select("ENDACCOUNT_ID = MAX(ENDACCOUNT_ID)", "")[0]["ENDACCOUNT_CODE"].ToString();
|
||
DateTime.TryParse(_EndaccountTable.Select("ENDACCOUNT_ID = MAX(ENDACCOUNT_ID)", "")[0]["STARTDATE"].ToString(), out DateTime _STARTDATE);
|
||
EndAccountStartDate = _STARTDATE;
|
||
dp_Start.DateTime = _STARTDATE;
|
||
if (dp_End.DateTime < dp_Start.DateTime)
|
||
{
|
||
dp_End.DateTime = dp_Start.DateTime;
|
||
}
|
||
if (_STARTDATE > dp_Start.DateTime)
|
||
{
|
||
return -5;
|
||
}
|
||
//检测是否已经交班
|
||
try
|
||
{
|
||
DateTime _PersonStartDate = dp_Start.DateTime;
|
||
DataTable _PersonTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(
|
||
$@"SELECT PERSONSELL_ID,SELLWORKER_CODE
|
||
FROM T_PERSONSELL_NEW
|
||
WHERE ENDDATE IS NULL AND STARTDATE IS NOT NULL AND
|
||
SERVERPARTCODE = '{QualityHelper.serverpartcode}' AND
|
||
SHOPCODE='{QualityHelper.shopcode}' AND
|
||
MACHINECODE = '{QualityHelper.machinecode}' AND
|
||
ENDACCOUNT_CODE = '{_EndaccountCode}'
|
||
ORDER BY PERSONSELL_ID DESC").Tables[0];
|
||
if (_PersonTable.Rows.Count == 0)
|
||
{
|
||
int _MaxID = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_PERSONSELL_NEW", "PERSONSELL_ID");
|
||
int woker_number = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_PERSONSELL_NEW", "WOKER_NUMBER", $"ENDACCOUNT_CODE='{_EndaccountCode}'");
|
||
|
||
try
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(
|
||
$@"INSERT INTO T_PERSONSELL_NEW (PERSONSELL_ID,SERVERPARTCODE,SHOPCODE,MACHINECODE,
|
||
STARTDATE,SELLWORKER_CODE,ENDACCOUNT_CODE,WOKER_NUMBER,TRANSFER_STATE)
|
||
VALUES({_MaxID},'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}','{QualityHelper.machinecode}',
|
||
DATETIME('{_PersonStartDate}'),'{userWorkerCode}','{_EndaccountCode}',{woker_number},0)");
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"账期工班插入失败[{ex.TargetSite}]:{ex.Message}");
|
||
return -2;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
string _SellWokerCode = _PersonTable.Select("PERSONSELL_ID = MAX(PERSONSELL_ID)", "")[0]["SELLWORKER_CODE"].ToString().ToUpper();
|
||
if (_SellWokerCode != userWorkerCode)
|
||
{
|
||
sellWorkerCode = _SellWokerCode;
|
||
return -3;
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return -4;
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
TransResultBeginInvoke(DateTime.Now, "账期查询失败:" + ex.Message);
|
||
ESSupport.Lib.LogHelper.WriteServiceLog("账期查询失败:" + ex.Message);
|
||
return -1;
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(_EndaccountCode))
|
||
{
|
||
EndAccountCode = _EndaccountCode;
|
||
}
|
||
return 0;
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 插入支付流水
|
||
/// <summary>
|
||
/// 插入流水
|
||
/// </summary>
|
||
/// <param name="commodityTable">商品列表</param>
|
||
/// <param name="ticketCode">流水号</param>
|
||
/// <param name="masterAmount">总金额</param>
|
||
/// <param name="payModel">支付集合</param>
|
||
/// <param name="payAmount">找零金额</param>
|
||
/// <param name="masterTime">付款时间</param>
|
||
/// <param name="MemberCard">会员卡号</param>
|
||
/// <param name="MemberId">会员ID</param>
|
||
/// <param name="masterOffPrice">优惠金额</param>
|
||
/// <param name="sellCount">总数量</param>
|
||
/// <param name="sellMasterCode">销售流水编号</param>
|
||
/// <param name="mobilePayCode">移动支付订单号</param>
|
||
/// <param name="merchantOrder">移动支付退款单号</param>
|
||
/// <param name="sellDesc">备注</param>
|
||
/// <returns></returns>
|
||
public bool GetCashierData(DataTable commodityTable, string ticketCode, decimal masterAmount,
|
||
Model.PayAmountModel payModel, decimal payAmount, DateTime masterTime, string MemberCard,
|
||
string MemberId, decimal masterOffPrice, decimal sellCount, string sellMasterCode = "",
|
||
string mobilePayCode = "", string merchantOrder = "", string sellDesc = "")
|
||
{
|
||
try
|
||
{
|
||
#region 新版流水插入
|
||
decimal COUPONPAY = 0;
|
||
decimal MOBILEPAY = 0;
|
||
string PAYMENT_TYPE = "";
|
||
string COUPON_TYPE = "";
|
||
string SELLMASTER_DESC = sellDesc;
|
||
//优惠流水类型标识,用于判断本次交易是否需要记录优惠流水
|
||
PosReportHelper.DiscountSellMasterType dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.无;
|
||
DataRow[] _Rows = commodityTable.Select("TICKETPREFIX IS NOT NULL");
|
||
if (_Rows.Length > 0 && payModel.AliPay == 0 && payModel.Wechat == 0 && payModel.UnionPay == 0)
|
||
{
|
||
ticketCode = "(" + _Rows[0]["TICKETPREFIX"] + ")" + ticketCode;
|
||
}
|
||
if (payModel.AliPay != 0)
|
||
{
|
||
MOBILEPAY += payModel.AliPay;
|
||
ticketCode = (_Rows.Length > 0 ? ("(支-" + _Rows[0]["TICKETPREFIX"] + ")") : "(支)") + ticketCode;
|
||
PAYMENT_TYPE = "ALIPAY";
|
||
}
|
||
if (payModel.Wechat != 0)
|
||
{
|
||
MOBILEPAY += payModel.Wechat;
|
||
ticketCode = (_Rows.Length > 0 ? ("(微-" + _Rows[0]["TICKETPREFIX"] + ")") : "(微)") + ticketCode;
|
||
PAYMENT_TYPE = "WECHATPAY";
|
||
}
|
||
if (payModel.UnionPay != 0)
|
||
{
|
||
MOBILEPAY += payModel.UnionPay;
|
||
ticketCode = (_Rows.Length > 0 ? ("(银-" + _Rows[0]["TICKETPREFIX"] + ")") : "(银)") + ticketCode;
|
||
PAYMENT_TYPE = "UNIONPAY";
|
||
}
|
||
if (payModel.BusCoupon != 0)
|
||
{
|
||
COUPONPAY += payModel.BusCoupon;
|
||
COUPON_TYPE = "BusCoupons";
|
||
}
|
||
if (payModel.GroupPay != 0)
|
||
{
|
||
COUPONPAY += payModel.GroupPay;
|
||
COUPON_TYPE = "GroupPay";
|
||
}
|
||
//消费券
|
||
if (payModel.Coupon != 0)
|
||
{
|
||
COUPONPAY += payModel.Coupon;
|
||
//COUPON_TYPE = "GroupPay";
|
||
if (!String.IsNullOrWhiteSpace(payModel.CouponNum))
|
||
{
|
||
SELLMASTER_DESC = payModel.CouponNum;
|
||
}
|
||
COUPON_TYPE = "MealVoucher";
|
||
}
|
||
//会员电子券
|
||
if (payModel.VipCoupon != 0)
|
||
{
|
||
COUPONPAY += payModel.VipCoupon;
|
||
if (!String.IsNullOrWhiteSpace(payModel.CouponNum))
|
||
{
|
||
SELLMASTER_DESC = payModel.CouponNum;
|
||
}
|
||
COUPON_TYPE = "VipCoupon";
|
||
}
|
||
//在线订单支付
|
||
if (payModel.OnlinePay != 0)
|
||
{
|
||
COUPON_TYPE = "OnlinePay";
|
||
}
|
||
if (sellCount == 0)
|
||
{
|
||
sellCount = (decimal)commodityTable.Compute("SUM(COUNT)", "");
|
||
}
|
||
int _MaxCode = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_SELLMASTER", "SELLMASTER_ID");
|
||
int _MaxConsumId = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_CONSUMPTIONRECORD", "CONSUMPTIONRECORD_ID");
|
||
|
||
if (string.IsNullOrWhiteSpace(sellMasterCode))
|
||
{
|
||
sellMasterCode = ESSupport.DataStorage.DataFunction.CreateUniqueCode(QualityHelper.serverpartcode, QualityHelper.shopcode, QualityHelper.machinecode);
|
||
payModel.SellMasterCode = sellMasterCode;
|
||
}
|
||
|
||
List<string> _InsertList = new List<string>();
|
||
|
||
string _InsertSql =
|
||
@"INSERT INTO T_SELLMASTER (SELLMASTER_ID,SELLMASTER_CODE,SERVERPARTCODE,
|
||
SERVERPART_NAME,SHOPCODE,SHOPNAME,MACHINECODE,SELLWORKER_CODE,
|
||
SELLWORKER_NAME,SELLMASTER_DATE,TICKET_CODE,SELLMASTER_COUNT,SELLMASTER_OFFPRICE,
|
||
SELLMASTER_AMOUNT,CASHPAY,BANKPAY,MEMBERPAY,COUPONPAY,MOBILEPAY,INTERNALPAY,
|
||
OTHERPAY,PAYMENT_TYPE,MOBILEPAY_CODE,MERCHANT_ORDER,SELLMASTER_DESC,TRANSFER_STATE,
|
||
COUPON_TYPE,PAY_AMOUNT) VALUES(" + _MaxCode + ",'" + sellMasterCode + "','" + QualityHelper.serverpartcode +
|
||
"','" + QualityHelper.serverpartname + "','" + QualityHelper.shopcode + "','" + QualityHelper.shopname +
|
||
"','" + QualityHelper.machinecode + "','" + QualityHelper.sellworkercode + "','" + QualityHelper.sellworkername +
|
||
"',DATETIME('" + masterTime + "'),'" + ticketCode + "'," + sellCount + "," + masterOffPrice + "," + masterAmount +
|
||
"," + payModel.CashPay + "," + payModel.BankPay + "," + payModel.MemberPay + "," + COUPONPAY +
|
||
"," + MOBILEPAY + "," + payModel.InternalPay + "," + payModel.OtherPay + ",'" + PAYMENT_TYPE +
|
||
"','" + mobilePayCode + "','" + merchantOrder + "','" + SELLMASTER_DESC + "',0,'" + COUPON_TYPE + "'," + payAmount + ")";
|
||
//备份数据流水主表
|
||
string _strDataSellMaster = _MaxCode + "|" + sellMasterCode + "|" + QualityHelper.serverpartcode +
|
||
"|" + QualityHelper.serverpartname + "|" + QualityHelper.shopcode + "|" + QualityHelper.shopname +
|
||
"|" + QualityHelper.machinecode + "|" + QualityHelper.sellworkercode + "|" + QualityHelper.sellworkername +
|
||
"|" + masterTime.ToString("yyyy/MM/dd HH:mm:ss") + "|" + ticketCode + "|" + sellCount.ToString("F3") +
|
||
"|" + masterOffPrice.ToString("F3") + "|" + masterAmount.ToString("F3") + "|" + payModel.CashPay.ToString("F3") +
|
||
"|" + payModel.BankPay.ToString("F3") + "|" + payModel.MemberPay.ToString("F3") + "|" + COUPONPAY.ToString("F3") +
|
||
"|" + MOBILEPAY.ToString("F3") + "|" + payModel.InternalPay.ToString("F3") + "|" + payModel.OtherPay.ToString("F3") +
|
||
"|" + PAYMENT_TYPE + "|" + mobilePayCode + "|" + merchantOrder + "|" + SELLMASTER_DESC + "|" + 0 +
|
||
"|" + COUPON_TYPE + "|" + payAmount.ToString("F3");
|
||
int _MaxID = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_SELLDETAILS", "SELLDETAILS_ID");
|
||
string _InsertSql2 =
|
||
@"INSERT INTO T_SELLDETAILS (SELLDETAILS_ID,SELLMASTER_CODE,COMMODITY_CODE,
|
||
COMMODITY_BARCODE,COMMODITY_NAME,SELLDETAILS_COUNT,SELLDETAILS_PRICE,
|
||
SELLDETAILS_OFFPRICE,SELLDETAILS_AMOUNT,LINENUM,PAYMENT_TYPE,SELLDETAILS_DESC,
|
||
TRANSFER_STATE,CREATE_DATE,COMMODITY_TYPE,COMMODITY_SYMBOL) VALUES";
|
||
bool bCount = false;
|
||
bool bAmount = false;
|
||
List<string> _DataSellDetailsList = new List<string>();
|
||
//会员价交易记录
|
||
List<string> _VIPSellDetailList = new List<string>();
|
||
//获取会员交易流水ID
|
||
int _VIPSellMaxID = ESSupport.DataStorage.DataFunction.CreateNextSequence("T_SELLDATA_VIP", "SELLDATA_ID");
|
||
for (int i = 0; i < commodityTable.Rows.Count; i++)
|
||
{
|
||
_InsertSql2 += "(" + (_MaxID + i) + ",'" + sellMasterCode +
|
||
"','" + commodityTable.Rows[i]["commodity_code"].ToString() +
|
||
"','" + commodityTable.Rows[i]["commodity_barcode"].ToString() +
|
||
"','" + commodityTable.Rows[i]["commodity_name"].ToString() +
|
||
"'," + commodityTable.Rows[i]["count"] +
|
||
"," + commodityTable.Rows[i]["commodity_retailprice"] +
|
||
"," + commodityTable.Rows[i]["discount_rate"] +
|
||
"," + commodityTable.Rows[i]["price"] + "," + (i + 1) +
|
||
",'" + PAYMENT_TYPE + "',NULL,0,DATETIME('" + masterTime + "'),'" + commodityTable.Rows[i]["commodity_type"] +
|
||
"','" + commodityTable.Rows[i]["commodity_symbol"] + "'),";
|
||
//备份数据流水详情列表
|
||
_DataSellDetailsList.Add((_MaxID + i).ToString() + "|" + sellMasterCode +
|
||
"|" + commodityTable.Rows[i]["commodity_code"].ToString() +
|
||
"|" + commodityTable.Rows[i]["commodity_barcode"].ToString() +
|
||
"|" + commodityTable.Rows[i]["commodity_name"].ToString() +
|
||
"|" + commodityTable.Rows[i]["count"].ToString() +
|
||
"|" + commodityTable.Rows[i]["commodity_retailprice"].ToString() +
|
||
"|" + commodityTable.Rows[i]["discount_rate"].ToString() +
|
||
"|" + commodityTable.Rows[i]["price"].ToString() + "|" + (i + 1).ToString() +
|
||
"|" + PAYMENT_TYPE + "|" + masterTime.ToString("yyyy/MM/dd HH:mm:ss") +
|
||
"||" + 0 + "|" + commodityTable.Rows[i]["commodity_type"].ToString() +
|
||
"|" + commodityTable.Rows[i]["commodity_symbol"].ToString());
|
||
try
|
||
{
|
||
if ((decimal)commodityTable.Rows[i]["count"] > decimal.Parse(QualityHelper.sellcount) &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "00000000" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999996" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999997" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999998" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999999")
|
||
{
|
||
bCount = true;
|
||
}
|
||
}
|
||
catch { }
|
||
try
|
||
{
|
||
if ((decimal)commodityTable.Rows[i]["price"] > decimal.Parse(QualityHelper.factamount) &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "00000000" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999996" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999997" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999998" &&
|
||
commodityTable.Rows[i]["commodity_code"].ToString() != "99999999")
|
||
{
|
||
bAmount = true;
|
||
}
|
||
}
|
||
catch { }
|
||
#region 刷卡促销插入单独流水
|
||
if (payModel.MemberPay > 0 || !string.IsNullOrWhiteSpace(MemberId) || commodityTable.Rows[i]["promotionid"].ToString() != "")
|
||
{
|
||
string _strInsertSql = string.Format(
|
||
@"INSERT INTO T_CONSUMPTIONRECORD (CONSUMPTIONRECORD_ID,
|
||
PROMOTION_ID,MEMBERSHIP_ID,MEMBERSHIP_CARD,
|
||
CONSUMPTIONRECORD_DATE,SERVERPART_CODE,SERVERPART_NAME,
|
||
SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME,MACHINECODE,
|
||
TICKET_CODE,COMMODITY_CODE,COMMODITY_BARCODE,COMMODITY_NAME,
|
||
CONSUME_COUNT,AVERAGE_PRICE,CONSUME_PRICE,LINE_NUMBER)
|
||
VALUES ({0},{1},{2},{3},DATETIME('{4}'),'{5}','{6}',{7},'{8}','{9}','{10}','{11}','{12}','{13}','{14}',{15},{16},{17},{18})",
|
||
_MaxConsumId, commodityTable.Rows[i]["promotionid"].ToString() == "" ? "0" :
|
||
commodityTable.Rows[i]["promotionid"], string.IsNullOrWhiteSpace(MemberId) ? "NULL" : MemberId,
|
||
string.IsNullOrWhiteSpace(MemberCard) ? "NULL" : ("'" + MemberCard + "'"), masterTime,
|
||
QualityHelper.serverpartcode, QualityHelper.serverpartname, QualityHelper.serverpartshop_id,
|
||
QualityHelper.shopcode, QualityHelper.shopname, QualityHelper.machinecode, ticketCode,
|
||
commodityTable.Rows[i]["commodity_code"], commodityTable.Rows[i]["commodity_barcode"],
|
||
commodityTable.Rows[i]["commodity_name"], commodityTable.Rows[i]["count"],
|
||
commodityTable.Rows[i]["commodity_retailprice"], commodityTable.Rows[i]["price"], i + 1);
|
||
_InsertList.Add(_strInsertSql);
|
||
_MaxConsumId += 1;
|
||
}
|
||
#endregion
|
||
|
||
#region 会员价消费记录独立流水
|
||
if (!string.IsNullOrWhiteSpace(Common.PosControl.MemberCode))
|
||
{
|
||
_VIPSellDetailList.Add($@"INSERT INTO T_SELLDATA_VIP
|
||
(SELLDATA_ID,SELLDATA_DATE,SERVERPARTCODE,SHOPCODE,
|
||
MACHINECODE,TICKETCODE,WORKERCODE,COMMODITY_CODE,
|
||
SELLCOUNT,SELLPRICE,OFFPRICE,FACTAMOUNT,LINENUM,FLAG)
|
||
VALUES ({_VIPSellMaxID},DATETIME('{masterTime.ToString("yyyy/MM/dd HH:mm:ss")}'),
|
||
'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}',
|
||
'{QualityHelper.machinecode}','{ticketCode}','{QualityHelper.sellworkercode}',
|
||
'{commodityTable.Rows[i]["commodity_code"]}',{commodityTable.Rows[i]["count"]},
|
||
{commodityTable.Rows[i]["commodity_retailprice"]},{commodityTable.Rows[i]["discount_rate"]},
|
||
{commodityTable.Rows[i]["price"]},{i + 1},7 )");
|
||
_VIPSellMaxID += 1;
|
||
}
|
||
//优惠券消费记录独立流水
|
||
if (!string.IsNullOrWhiteSpace(payModel.CouponName))
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(payModel.CouponNum))
|
||
{
|
||
_VIPSellDetailList.Add($@"INSERT INTO T_SELLDATA_VIP
|
||
(SELLDATA_ID,SELLDATA_DATE,SERVERPARTCODE,SHOPCODE,
|
||
MACHINECODE,TICKETCODE,WORKERCODE,COMMODITY_CODE,
|
||
SELLCOUNT,SELLPRICE,OFFPRICE,FACTAMOUNT,LINENUM,FLAG)
|
||
VALUES ({_VIPSellMaxID},DATETIME('{masterTime.ToString("yyyy/MM/dd HH:mm:ss")}'),
|
||
'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}',
|
||
'{QualityHelper.machinecode}','{ticketCode}','{QualityHelper.sellworkercode}',
|
||
'{commodityTable.Rows[i]["commodity_code"]}',{commodityTable.Rows[i]["count"]},
|
||
{commodityTable.Rows[i]["commodity_retailprice"]},{commodityTable.Rows[i]["discount_rate"]},
|
||
{commodityTable.Rows[i]["price"]},{i + 1},5 )");
|
||
_VIPSellMaxID += 1;
|
||
}
|
||
else
|
||
{
|
||
string str_Flag;
|
||
switch (payModel.CouponName)
|
||
{
|
||
case "企业会员优惠":
|
||
str_Flag = "4";
|
||
break;
|
||
case "大巴券优惠":
|
||
str_Flag = "2";
|
||
break;
|
||
case "团购餐优惠":
|
||
str_Flag = "2";
|
||
break;
|
||
default://其他优惠,如:电子券(无固定名称)
|
||
str_Flag = "5";
|
||
break;
|
||
}
|
||
_VIPSellDetailList.Add($@"INSERT INTO T_SELLDATA_VIP
|
||
(SELLDATA_ID,SELLDATA_DATE,SERVERPARTCODE,SHOPCODE,
|
||
MACHINECODE,TICKETCODE,WORKERCODE,COMMODITY_CODE,
|
||
SELLCOUNT,SELLPRICE,OFFPRICE,FACTAMOUNT,LINENUM,FLAG)
|
||
VALUES ({_VIPSellMaxID},DATETIME('{masterTime.ToString("yyyy/MM/dd HH:mm:ss")}'),
|
||
'{QualityHelper.serverpartcode}','{QualityHelper.shopcode}',
|
||
'{QualityHelper.machinecode}','{ticketCode}','{QualityHelper.sellworkercode}',
|
||
'{commodityTable.Rows[i]["commodity_code"]}',{commodityTable.Rows[i]["count"]},
|
||
{commodityTable.Rows[i]["commodity_retailprice"]},{commodityTable.Rows[i]["discount_rate"]},
|
||
{commodityTable.Rows[i]["price"]},{i + 1},{str_Flag} )");
|
||
_VIPSellMaxID += 1;
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
if (!string.IsNullOrWhiteSpace(Common.PosControl.MemberCode))
|
||
{
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.会员价消费;
|
||
}
|
||
|
||
//保存促销交易记录到优惠流水表
|
||
if (commodityTable.Select("promotionid is not null").Length > 0)
|
||
{
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.促销活动;
|
||
}
|
||
//优惠券交易记录独立流水
|
||
if (!string.IsNullOrWhiteSpace(payModel.CouponName))
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(payModel.CouponNum))
|
||
{
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.电子优惠券;
|
||
}
|
||
else
|
||
{
|
||
switch (payModel.CouponName)
|
||
{
|
||
case "企业会员优惠":
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.企业会员;
|
||
break;
|
||
case "大巴券优惠":
|
||
case "团购餐优惠":
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.大巴券;
|
||
break;
|
||
default://其他优惠,如:电子券(无固定名称)
|
||
dsmt_SellMasterType = PosReportHelper.DiscountSellMasterType.电子优惠券;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
//保存会员价交易记录到数据库
|
||
try
|
||
{
|
||
if (_VIPSellDetailList.Count > 0)
|
||
{
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(_VIPSellDetailList);
|
||
}
|
||
}
|
||
catch { }
|
||
if (_InsertSql2.Length > 2)
|
||
{
|
||
_InsertSql2 = _InsertSql2.Substring(0, _InsertSql2.Length - 1);
|
||
}
|
||
_InsertList.Add(_InsertSql);
|
||
_InsertList.Add(_InsertSql2);
|
||
ESSupport.Lib.SyBaseHelper.ExecuteSqlTran(_InsertList);
|
||
#endregion
|
||
if (dsmt_SellMasterType != PosReportHelper.DiscountSellMasterType.无)
|
||
{
|
||
//保存优惠流水
|
||
PosReportHelper.SaveDiscountSelldata(QualityHelper.serverpartcode, QualityHelper.serverpartname,
|
||
QualityHelper.shopcode, QualityHelper.machinecode, QualityHelper.sellworkercode,
|
||
QualityHelper.sellworkername, ticketCode, masterTime, commodityTable, payModel, dsmt_SellMasterType);
|
||
}
|
||
//List<AbnormalModel> abnormalModels = new List<AbnormalModel>();
|
||
if (bCount && bAmount)
|
||
{
|
||
AbnormalRecord.GetSell(AbnormalRecord.GetAbnormalList(
|
||
(int)Common.PosDictionary.AbnormalType.数量及金额超限,
|
||
commodityTable, masterTime), ticketCode, masterTime);
|
||
}
|
||
else
|
||
{
|
||
if (bCount)
|
||
{
|
||
AbnormalRecord.GetSellCount(AbnormalRecord.GetAbnormalList(
|
||
(int)Common.PosDictionary.AbnormalType.单品数量超限,
|
||
commodityTable, masterTime), ticketCode, masterTime);
|
||
}
|
||
if (bAmount)
|
||
{
|
||
AbnormalRecord.GetSellPrice(AbnormalRecord.GetAbnormalList(
|
||
(int)Common.PosDictionary.AbnormalType.单笔金额超限,
|
||
commodityTable, masterTime), ticketCode, masterTime);
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
ESSupport.Lib.LogHelper.WriteServiceLog($"交易流水保存失败。原因:{ex.Message}");
|
||
return false;
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 获取流水号
|
||
/// <summary>
|
||
/// 获取流水号
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public string GetTicketCode()
|
||
{
|
||
try
|
||
{
|
||
string _strSelectSql = String.Format("SELECT ISNULL(MAX(RIGHT(TICKET_CODE,5)),'00000') FROM T_SELLMASTER " +
|
||
"WHERE SELLMASTER_DATE>DATETIME('{0}') AND MACHINECODE='{1}' AND UPPER(SELLWORKER_CODE)=UPPER('{2}')",
|
||
DateTime.Today, QualityHelper.machinecode, QualityHelper.sellworkercode);
|
||
DataTable _DataTable = ESSupport.Lib.SyBaseHelper.QueryOdbc(_strSelectSql).Tables[0];
|
||
if (_DataTable.Rows.Count > 0)
|
||
{
|
||
if (int.TryParse(_DataTable.Rows[0][0].ToString(), out int TicketCode))
|
||
{
|
||
return (TicketCode + 1).ToString().PadLeft(5, '0');
|
||
}
|
||
}
|
||
}
|
||
catch { }
|
||
return "00001";
|
||
}
|
||
#endregion
|
||
|
||
#region 委托事件 -> 通知服务消息回调事件
|
||
/// <summary>
|
||
/// 上传消息回调
|
||
/// </summary>
|
||
/// <param name="triggerTime"></param>
|
||
/// <param name="notifyMessage"></param>
|
||
private void DataUpload_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
TransResultBeginInvoke(e.NotifyLoggerTime, e.NotifyLoggerMessage);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 下载消息回调
|
||
/// </summary>
|
||
/// <param name="triggerTime"></param>
|
||
/// <param name="notifyMessage"></param>
|
||
private void DataDownload_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
TransResultBeginInvoke(e.NotifyLoggerTime, e.NotifyLoggerMessage);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 消息通知服务信息回调
|
||
/// </summary>
|
||
/// <param name="triggerTime"></param>
|
||
/// <param name="notifyMessage"></param>
|
||
private void PosSocket_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
TransResultBeginInvoke(e.NotifyLoggerTime, e.NotifyLoggerMessage);
|
||
}
|
||
|
||
|
||
private void ZipFileUpload_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
TransResultBeginInvoke(e.NotifyLoggerTime, e.NotifyLoggerMessage);
|
||
}
|
||
|
||
private void Zip_PosDataZipFile_NotifyEvent(object sender, ESSupport.Model.Common.NotifyEventArgs e)
|
||
{
|
||
TransResultBeginInvoke(e.NotifyLoggerTime, e.NotifyLoggerMessage);
|
||
}
|
||
#endregion
|
||
|
||
#region 委托 -> 运行日志委托处理事件
|
||
|
||
private delegate void DelegateTransResult(DateTime triggerTime, string resultMessage);
|
||
private void TransResultBeginInvoke(DateTime triggerTime, string resultMessage)
|
||
{
|
||
Dispatcher.BeginInvoke(new DelegateTransResult(TransResult), new object[] { triggerTime, resultMessage });
|
||
}
|
||
|
||
/// <summary>
|
||
/// 运行日志呈现
|
||
/// </summary>
|
||
/// <param name="triggerTime">日志时间</param>
|
||
/// <param name="resultMessage">日志内容</param>
|
||
private void TransResult(DateTime triggerTime, string resultMessage)
|
||
{
|
||
if (TransResultTable == null)
|
||
{
|
||
TransResultTable = new System.Collections.ObjectModel.ObservableCollection<ResultMessage>();
|
||
}
|
||
ResultMessage ResultMessage = new ResultMessage()
|
||
{
|
||
TransDate = triggerTime,
|
||
TransResult = resultMessage
|
||
};
|
||
TransResultTable.Insert(0, ResultMessage);
|
||
//界面只保留最近5分钟的日志信息
|
||
foreach (ResultMessage _RowTemp in TransResultTable.ToList().FindAll(p => p.TransDate < DateTime.Now.AddMinutes(-5)))
|
||
{
|
||
TransResultTable.Remove(_RowTemp);
|
||
}
|
||
|
||
DataTransResult.AutoGenerateColumns = false;
|
||
DataTransResult.SelectionMode = DataGridSelectionMode.Single;
|
||
DataTransResult.ItemsSource = TransResultTable;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 运行日志记录表结构
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private class ResultMessage : CNotifyPropertyChange
|
||
{
|
||
public DateTime TransDate { get; set; }
|
||
public string TransResult { get; set; }
|
||
}
|
||
|
||
public class CNotifyPropertyChange : INotifyPropertyChanged
|
||
{
|
||
public event PropertyChangedEventHandler PropertyChanged;
|
||
public void NotifyPropertyChange(string propertyName)
|
||
{
|
||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||
}
|
||
}
|
||
#endregion
|
||
}
|
||
}
|