using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading.Tasks; using POSV.Utils; using POSV.Entity; using DevComponents.DotNetBar.Controls; using POSV.Bean; using POSV.MessageEvent; using POS.Language.Language; namespace POSV.Component { [ToolboxItem(true)] public partial class CashierSettings : AbstractSettings { /// /// 修改前的数据 /// private Dictionary _oldValue = new Dictionary(); /// /// 修改后的数据 /// private Dictionary _newValue = new Dictionary(); private bool _inited = false; public CashierSettings() { InitializeComponent(); this.superTabControl.SelectedTabChanging += OnSelectedTabChanging; this.superTabControl.SelectedTabChanged += OnSelectedTabChanged; } public override void RefreshUi() { base.RefreshUi(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.DesignMode) return; this.BackColor = Color.Transparent; this.InitUi(); } /// /// 初始化界面 /// private void InitUi() { //界面加载开始 this._inited = false; Task.Factory.StartNew(() => { Dictionary data = null; //获取品类分组下的全部参数 using (var db = Global.Instance.OpenDataBase) { data = db.Dictionary(string.Format(SqlConstant.ConfigQueryByGroupToDictionary, ConfigConstant.CASHIER_GROUP)); } //将新增加或者变更的参数重新更新到数据库 var defaultValue = ConfigConstant.CashierGroupDefaultValue(); //数据库有配置参数 if (data != null) { var diff = defaultValue.Where(kvp => !data.ContainsKey(kvp.Key)).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); if (diff != null && diff.Keys.Count > 0) { var list = new List(); foreach (var v in diff) { var config = new Config(); config.Id = IdWorkerUtils.Instance.NextId(); config.Group = ConfigConstant.CASHIER_GROUP; config.TenantId = Global.Instance.Authc.TenantId; config.Keys = v.Key; config.Values = v.Value; list.Add(config); } //如果数据表中没有配置group相关的信息,更新差异 this.SaveChanged(list); //将差异合并到data,避免再次访问数据库 data = data.Concat(diff).ToDictionary(x => x.Key, x => x.Value); } } else { //加载系统默认参数 data = defaultValue; var list = new List(); foreach (var v in defaultValue) { var config = new Config(); config.Id = IdWorkerUtils.Instance.NextId(); config.Group = ConfigConstant.CASHIER_GROUP; config.TenantId = Global.Instance.Authc.TenantId; config.Keys = v.Key; config.Values = v.Value; list.Add(config); } //如果数据表中没有配置group相关的信息,保存 this.SaveChanged(list); } return data; }).ContinueWith(task => { if (task.IsFaulted) { LOGGER.Error(task.Exception.GetBaseException(), "加载收银参数设置异常"); } else { this.Invoke(new Action(() => { BindUi(task.Result); })); } }); } private void BindUi(Dictionary data) { //变更前的数据单独存储 _oldValue.Clear(); _oldValue = ObjectUtils.Copy>(data); //清理历史变更数据 _newValue.Clear(); //附加符号支持列表 this.cmbAdditional.DataSource = System.Enum.GetNames(typeof(AdditionalType)); //点餐界面排序列表 this.cmbProductOrder.DataSource = System.Enum.GetNames(typeof(ProductOrderType)); //金额尾数处理方式 if (data.ContainsKey(ConfigConstant.CASHIER_MANTISSA)) { string _value = data[ConfigConstant.CASHIER_MANTISSA].ToString(); switch (_value) { case "0"://实款实收(默认) this.checkBoxX60.Checked = true; break; case "1"://元以下的金额四舍五入 this.checkBoxX18.Checked = true; break; case "2"://角以下的金额四舍五入 this.checkBoxX19.Checked = true; break; case "3": //抹掉元以下的金额 this.checkBoxX3.Checked = true; break; case "4": //抹掉角以下的金额 this.checkBoxX6.Checked = true; break; default: this.checkBoxX60.Checked = true; break; } } else { this.checkBoxX60.Checked = true; } //界面价格显示小数位数 if (data.ContainsKey(ConfigConstant.CASHIER_PRICE_DIGIT)) { this.comboBoxEx1.SelectedIndex = this.comboBoxEx1.FindString(data[ConfigConstant.CASHIER_PRICE_DIGIT].ToString()); } else { this.comboBoxEx1.SelectedIndex = 2; } //界面数量显示小数位数 if (data.ContainsKey(ConfigConstant.CASHIER_QUANTITY_DIGIT)) { this.comboBoxEx2.SelectedIndex = this.comboBoxEx2.FindString(data[ConfigConstant.CASHIER_QUANTITY_DIGIT].ToString()); } else { this.comboBoxEx2.SelectedIndex = 2; } //界面小计显示小数位数 if (data.ContainsKey(ConfigConstant.CASHIER_SUBTOTAL_DIGIT)) { this.comboBoxEx3.SelectedIndex = this.comboBoxEx3.FindString(data[ConfigConstant.CASHIER_SUBTOTAL_DIGIT].ToString()); } else { this.comboBoxEx3.SelectedIndex = 2; } //POS号(厨显显示) if (data.ContainsKey(ConfigConstant.CASHIER_POSNO)) { this.posNoTextBox.Text = data[ConfigConstant.CASHIER_POSNO].ToString(); } else { this.posNoTextBox.Text = ""; } //CheckBoxX处理 foreach (Control control in tabPanel.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } } //银行卡支付启用MIS this.comboBoxEx4.DataSource = System.Enum.GetNames(typeof(BankOfMis)); //银行MIS选择 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_MISBANK)) { this.comboBoxEx4.SelectedIndex = this.comboBoxEx4.FindString(data[ConfigConstant.CONFIG_CASHIER_MISBANK].ToString()); } else { this.comboBoxEx4.SelectedIndex = 1; } //高级 - CheckBoxX foreach (Control control in tabPanelEx.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } } //会员 - CheckBoxX foreach (Control control in tabPanelMember.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } } //交班 - CheckBoxX foreach (Control control in tabPanelHand.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } else if (control is GroupPanel) { foreach (Control groupItem in control.Controls) { var item = groupItem as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } } } //库存 - CheckBoxX foreach (Control control in tabPanelStock.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } else if (control is GroupPanel) { foreach (Control groupItem in control.Controls) { var item = groupItem as CheckBoxX; var key = item.Tag.ToString(); if (data.ContainsKey(key)) { string _value = data[key].ToString(); item.Checked = _value.Equals("1"); } else { item.Checked = false; } } } } //会员卡规则 MemberCardItem cardItem = null; if (data.ContainsKey(ConfigConstant.CASHIER_MEMBER_CARD)) { cardItem = JsonUtils.Deserialize(data[ConfigConstant.CASHIER_MEMBER_CARD]); } else { cardItem = new MemberCardItem(); cardItem.Enable = true; cardItem.DefaultType = MemberCardReadType.手机号码; var list = new List(); list.Add(MemberCardReadType.磁条卡或IC卡); list.Add(MemberCardReadType.手机号码); list.Add(MemberCardReadType.电子卡); cardItem.ListReader = list; var types = new List(); types.Add(MemberCardType.Mifare); cardItem.ListType = types; cardItem.PaymentType = 1; } //会员身份识别方式 foreach (var t in cardItem.ListReader) { switch (t) { case MemberCardReadType.手机号码: this.checkBoxX14.Checked = true; break; case MemberCardReadType.电子卡: this.checkBoxX15.Checked = true; break; case MemberCardReadType.磁条卡或IC卡: this.checkBoxX13.Checked = true; break; default: break; } } //会员卡介质 foreach (var t in cardItem.ListType) { switch (t) { case MemberCardType.Magnetic: this.checkBoxX38.Checked = true; break; case MemberCardType.Mifare: this.checkBoxX39.Checked = true; break; default: break; } } //会员卡功能设置 foreach (var t in cardItem.Function) { switch (t) { case MemberCardFunctions.会员价优惠: this.checkBoxX27.Checked = true; break; case MemberCardFunctions.会员积分及兑换: this.checkBoxX30.Checked = true; break; case MemberCardFunctions.会员储值及消费: this.checkBoxX34.Checked = true; break; default: break; } } //会员卡支付认证 if (cardItem.PaymentType == 1) { this.checkBoxX28.Checked = true; } else { this.checkBoxX26.Checked = true; } //卡面号前缀 if (data.ContainsKey(ConfigConstant.CASHIER_CARDNO_PREFIX)) { this.cardNoPrefixTextBox.Text = data[ConfigConstant.CASHIER_CARDNO_PREFIX].ToString(); } else { this.cardNoPrefixTextBox.Text = ""; } //预设密码 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD)) { this.preinstallPwdPrefixTextBox.Text = data[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD].ToString(); } else { this.preinstallPwdPrefixTextBox.Text = ""; } //果盘参数 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANMSID)) { this.txtGuoPanMsid.Text = data[ConfigConstant.CONFIG_CASHIER_GUOPANMSID].ToString(); } else { this.txtGuoPanMsid.Text = string.Empty; } //果盘参数 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANKEY)) { this.txtGuoPanApiKey.Text = data[ConfigConstant.CONFIG_CASHIER_GUOPANKEY].ToString(); } else { this.txtGuoPanApiKey.Text = string.Empty; } //商品附加信息符号 if (data.ContainsKey(ConfigConstant.CASHIER_ADDITIONAL)) { this.cmbAdditional.SelectedIndex = this.cmbAdditional.FindString(data[ConfigConstant.CASHIER_ADDITIONAL].ToString()); } else { this.cmbAdditional.SelectedIndex = 1; } //商品附加信息符号 if (data.ContainsKey(ConfigConstant.CASHIER_PRODUCTORDER)) { this.cmbProductOrder.SelectedIndex = this.cmbProductOrder.FindString(data[ConfigConstant.CASHIER_PRODUCTORDER].ToString()); } else { this.cmbProductOrder.SelectedIndex = 1; } //最大金额提示 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY)) { this.formulatemoneyNoTextBox.Text = data[ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY].ToString(); } else { this.cmbProductOrder.Text = ""; } #region 外卖设置 //开启小程序点餐 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER)) { enableAppOrder.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER].ToString().Equals("1"); } //开启美团商家外卖 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN)) { ShopMeiTuan.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN].ToString().Equals("1"); } //禁止启用果盘 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER)) { EnableMeiTuanOrder.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER].ToString().Equals("1"); } //禁止果盘转本地单 if (data.ContainsKey(ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE)) { EnableMeiTuanOrderSave.Value = data[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE].ToString().Equals("1"); } #endregion //界面加载完成 this._inited = true; } public override List NewChanged() { var result = new List(); if (!this._inited) return result; var cashierMantissa = "0"; //实款实收(默认) if (checkBoxX60.Checked) { cashierMantissa = checkBoxX60.Tag.ToString(); } //元以下的金额四舍五入 if (checkBoxX18.Checked) { cashierMantissa = checkBoxX18.Tag.ToString(); } //角以下的金额四舍五入 if (checkBoxX19.Checked) { cashierMantissa = checkBoxX19.Tag.ToString(); } //抹掉元以下的金额 if (checkBoxX3.Checked) { cashierMantissa = checkBoxX3.Tag.ToString(); } //抹掉角以下的金额 if (checkBoxX6.Checked) { cashierMantissa = checkBoxX6.Tag.ToString(); } //判断金额尾数处理方式是否更改 bool isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_MANTISSA) && this._oldValue[ConfigConstant.CASHIER_MANTISSA].Equals(cashierMantissa)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_MANTISSA] = cashierMantissa; } var _value = "2"; //单价显示小数位数 _value = this.comboBoxEx1.SelectedItem.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_PRICE_DIGIT) && this._oldValue[ConfigConstant.CASHIER_PRICE_DIGIT].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_PRICE_DIGIT] = _value; } //数量显示小数位数 _value = this.comboBoxEx2.SelectedItem.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_QUANTITY_DIGIT) && this._oldValue[ConfigConstant.CASHIER_QUANTITY_DIGIT].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_QUANTITY_DIGIT] = _value; } //小计显示小数位数 _value = this.comboBoxEx3.SelectedItem.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_SUBTOTAL_DIGIT) && this._oldValue[ConfigConstant.CASHIER_SUBTOTAL_DIGIT].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_SUBTOTAL_DIGIT] = _value; } //POS号(厨显显示) var _value_posNoPrefix = ""; ; _value_posNoPrefix = this.posNoTextBox.Text; isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_POSNO) && this._oldValue[ConfigConstant.CASHIER_POSNO].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_POSNO] = _value_posNoPrefix; } var _whereadditemmoney = ""; _whereadditemmoney = this.formulatemoneyNoTextBox.Text; isChanged = (this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY)); if (isChanged) { this._newValue[ConfigConstant.CONFIG_CASHIER_MAXSALEMONEY] = _whereadditemmoney; } //CheckBoxX处理 foreach (Control control in tabPanel.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } } //CheckBoxX处理 foreach (Control control in tabPanelEx.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } } //会员设置 foreach (Control control in tabPanelMember.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } } //交班设置 foreach (Control control in tabPanelHand.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } else if (control is GroupPanel) { foreach (Control groupItem in control.Controls) { var item = groupItem as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } } } //库存设置 foreach (Control control in tabPanelStock.Controls) { if (control is CheckBoxX) { var item = control as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } else if (control is GroupPanel) { foreach (Control groupItem in control.Controls) { var item = groupItem as CheckBoxX; var key = item.Tag.ToString(); //忽略为空的 if (string.IsNullOrEmpty(key)) continue; var value = item.Checked ? "1" : "0"; //判断是否更改,如果过更改压入到 NewValue bool changed = !(this._oldValue.ContainsKey(key) && this._oldValue[key].Equals(value)); if (changed) { this._newValue[key] = value; } } } } //会员规则处理 var cardItem = new MemberCardItem(); cardItem.Enable = true; var list = new List(); if (checkBoxX13.Checked) { list.Add(MemberCardReadType.磁条卡或IC卡); } if (checkBoxX14.Checked) { list.Add(MemberCardReadType.手机号码); } if (checkBoxX15.Checked) { list.Add(MemberCardReadType.电子卡); } cardItem.ListReader = list; //卡面号前缀 var _value_cardNoPrefix = ""; _value_cardNoPrefix = this.cardNoPrefixTextBox.Text; isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_CARDNO_PREFIX) && this._oldValue[ConfigConstant.CASHIER_CARDNO_PREFIX].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_CARDNO_PREFIX] = _value_cardNoPrefix; } //卡面号前缀 var _value_preinstallpassword = ""; _value_preinstallpassword = this.preinstallPwdPrefixTextBox.Text; isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD) && this._oldValue[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CONFIG_CASHIER_PREINSTALLPASSWORD] = _value_preinstallpassword; } var _value_Msid = ""; _value_Msid = this.txtGuoPanMsid.Text; isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANMSID) && this._oldValue[ConfigConstant.CONFIG_CASHIER_GUOPANMSID].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CONFIG_CASHIER_GUOPANMSID] = _value_Msid; } var _value_Key = ""; _value_Key = this.txtGuoPanApiKey.Text; isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_GUOPANKEY) && this._oldValue[ConfigConstant.CONFIG_CASHIER_GUOPANKEY].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CONFIG_CASHIER_GUOPANKEY] = _value_Key; } //会员卡介质 var types = new List(); if (this.checkBoxX38.Checked) { types.Add(MemberCardType.Magnetic); } if (this.checkBoxX39.Checked) { types.Add(MemberCardType.Mifare); } cardItem.ListType = types; //会员卡功能设置 var funs = new List(); if (checkBoxX27.Checked) { funs.Add(MemberCardFunctions.会员价优惠); } if (checkBoxX30.Checked) { funs.Add(MemberCardFunctions.会员积分及兑换); } if (checkBoxX34.Checked) { funs.Add(MemberCardFunctions.会员储值及消费); } cardItem.Function = funs; //会员卡支付认证 if (checkBoxX28.Checked) { cardItem.PaymentType = 1; } else { cardItem.PaymentType = 0; } _value = JsonUtils.Serialize(cardItem); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_MEMBER_CARD) && this._oldValue[ConfigConstant.CASHIER_MEMBER_CARD].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_MEMBER_CARD] = _value; } //银行MIS处理 var bankOfMis = BankOfMis.建行MIS; if (this.comboBoxEx4.SelectedItem != null) { Enum.TryParse(this.comboBoxEx4.SelectedItem.ToString(), out bankOfMis); } _value = bankOfMis.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CONFIG_CASHIER_MISBANK) && this._oldValue[ConfigConstant.CONFIG_CASHIER_MISBANK].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CONFIG_CASHIER_MISBANK] = _value; } //商品附加信息符号 var additionalType = AdditionalType.方括号; Enum.TryParse(this.cmbAdditional.SelectedItem.ToString(), out additionalType); _value = additionalType.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_ADDITIONAL) && this._oldValue[ConfigConstant.CASHIER_ADDITIONAL].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_ADDITIONAL] = _value; } //商品排序方式 var productOrderType = ProductOrderType.不排序; Enum.TryParse(this.cmbProductOrder.SelectedItem.ToString(), out productOrderType); _value = productOrderType.ToString(); isChanged = !(this._oldValue.ContainsKey(ConfigConstant.CASHIER_PRODUCTORDER) && this._oldValue[ConfigConstant.CASHIER_PRODUCTORDER].Equals(_value)); if (isChanged) { this._newValue[ConfigConstant.CASHIER_PRODUCTORDER] = _value; } #region 外卖设置 this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEAPPLETORDER] = this.enableAppOrder.Value ? "1" : "0"; this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLESHOPMEITUAN] = this.ShopMeiTuan.Value ? "1" : "0"; this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDER] = this.EnableMeiTuanOrder.Value ? "1" : "0"; this._newValue[ConfigConstant.CONFIG_CASHIER_ENABLEMEITUANORDERSAVE] = this.EnableMeiTuanOrderSave.Value ? "1" : "0"; #endregion //转换为Config对象,便于存储 foreach (var v in this._newValue) { var config = new Config(); config.Id = IdWorkerUtils.Instance.NextId(); config.Group = ConfigConstant.CASHIER_GROUP; config.TenantId = Global.Instance.Authc.TenantId; config.Keys = v.Key; config.Values = v.Value; result.Add(config); } return result; } public override Tuple SaveChanged(List data) { bool isSuccess = true; string message = "参数更新成功"; try { lock (Global.Instance.SyncLock) { using (var db = Global.Instance.OpenDataBase) { using (var trans = db.GetTransaction()) { foreach (var config in data) { db.Save(config); } trans.Complete(); } } } } catch (Exception ex) { isSuccess = false; message = "参数更新异常"; LOGGER.Error(ex, message); } finally { if (isSuccess) { //新修改后的参数应用后,重置OldValue,避免用户在没有切换Tab情况下,直接修改当前Tab内容 foreach (var config in data) { string key = config.Keys; string value = config.Values; this._oldValue[key] = value; } this._newValue.Clear(); //更新控件UI UpdateCashierUi(); } } return new Tuple(isSuccess, message); } private void UpdateCashierUi() { Global.Instance.ReloadConfig(ConfigConstant.CASHIER_GROUP); } private void OnSelectedTabChanged(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangedEventArgs e) { } private void OnSelectedTabChanging(object sender, DevComponents.DotNetBar.SuperTabStripSelectedTabChangingEventArgs e) { if (e.OldValue == null) { return; } } private void OnButtonOKClick(object sender, EventArgs e) { var data = NewChanged(); if (data != null && data.Count > 0) { var result = this.SaveChanged(data); if (result.Item1) { string message = "[" + LangProxy.ToLang(this.Tag.ToString()) + LangProxy.ToLang("]的参数修改成功"); DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新成功"), message, MessageBoxIcon.Information, MessageBoxButtons.OK); dialog.ShowDialog(); } else { string message = "[" + LangProxy.ToLang(this.Tag.ToString()) + LangProxy.ToLang("]的参数修改失败"); DialogForm dialog = new DialogForm(LangProxy.ToLang("参数更新失败"), message, MessageBoxIcon.Error, MessageBoxButtons.OK); dialog.ShowDialog(); } if (data.Exists(x => x.Keys == ConfigConstant.CONFIG_CASHIER_ENABLESTUDYMODE)) { //变动中包含练习模式,发送通知 MsgEvent.Send(Constant.STUDYMODE_CHANGED_NOTIFY, null); } } } private void OnCardEnableChecked(object sender, EventArgs e) { } private void OnButtonCloseClick(object sender, EventArgs e) { var parent = this.FindForm(); if (parent != null && parent is SettingsForm) { var settings = parent as SettingsForm; settings.FormClose(); } } private void OnBtnCustomClick(object sender, EventArgs e) { var item = sender as NumericTextBox; NumericKeyboard.ShowKeyboard(this, item); } private void groupPanel1_Click(object sender, EventArgs e) { } } }