using DevComponents.DotNetBar.SuperGrid; using POSV.Card; using POSV.Entity.Stock; 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.Stock { public partial class AskgoodsTemplateForm : BusinessForm { private List selectMaterialList = new List(); private List askgoodsDetailResponse = new List(); public AskgoodsTemplateForm(List ids) { InitializeComponent(); this.controlBox1.Text = "要货单模板"; this.controlBox1.ShowApplicationVersion = false; selectMaterialList = ids ?? new List(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.DesignMode) return; this.Focus(); this.noTextBox.Focus(); this.noTextBox.SelectAll(); this.ActiveControl = this.noTextBox; //获得当前页 int cur = pagerControl1.CurrentPage; //获得每页显示的记录数 int rows = pagerControl1.RowsPerPage; AskgoodsTemplateQuery(cur, rows); } public void AskgoodsTemplateQuery(int PageNum, int pageSize) { try { var request = new AskgoodsTemplateRequest(); request.StoreId = Global.Instance.Authc.StoreId; request.No = this.noTextBox.Text; request.PageNumber = PageNum; request.PageSize = pageSize; var response = StockUtils.AskgoodsTemplate(request); //成功 if (response.Item1) { this.ShowToastNotify(this, response.Item2); List askgoodsTemplateResponse = response.Item7; this.pagerControl1.TotalPage = response.Item4; this.pagerControl1.CurrentPage = response.Item5; this.pagerControl1.RecordCount = response.Item3; this.pagerControl1.RowsPerPage = response.Item6; ticketListTable.PrimaryGrid.DataSource = askgoodsTemplateResponse; } else { List list = new List(); ticketListTable.PrimaryGrid.DataSource = list; this.ShowToastNotify(this, response.Item2); } } catch (Exception ex) { this.ShowToastNotify(this, "要货模板查询异常"); LOGGER.Error(ex, "要货模板查询异常"); } } private void exitClick(object sender, EventArgs e) { //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } 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, "打开屏幕键盘异常"); } } private void OnTicketRowActivated(object sender, DevComponents.DotNetBar.SuperGrid.GridRowActivatedEventArgs e) { GridPanel grid = e.GridPanel; if (e.NewActiveRow != null) { detailListTable.PrimaryGrid.Rows.Clear(); //先清除其他表数据 GridRow row = e.NewActiveRow as GridRow; grid.SetSelected(e.NewActiveRow, false); grid.SetActiveRow(e.NewActiveRow); var ticketId = StringUtils.GetString(row.Cells["id"].Value); AskgoodsTemplateDetail(ticketId, 1, 1000); } else { detailListTable.PrimaryGrid.Rows.Clear(); } } public void AskgoodsTemplateDetail(string ticketId, int PageNum, int pageSize) { try { var request = new AskgoodsTemplateDetailRequest(); request.StoreId = Global.Instance.Authc.StoreId; request.TicketId = ticketId; request.PageNumber = PageNum; request.PageSize = pageSize; var response = StockUtils.AskgoodsTemplateDetail(request); //成功 if (response.Item1) { this.ShowToastNotify(this, response.Item2); askgoodsDetailResponse = response.Item7; detailListTable.PrimaryGrid.DataSource = askgoodsDetailResponse; } else { askgoodsDetailResponse = new List(); detailListTable.PrimaryGrid.DataSource = askgoodsDetailResponse; this.ShowToastNotify(this, response.Item2); } } catch (Exception ex) { this.ShowToastNotify(this, "要货模板明细查询异常"); LOGGER.Error(ex, "要货模板明细查询异常"); } } private void btn_ok(object sender, EventArgs e) { foreach (AskgoodsTemplateDetailResponse response in askgoodsDetailResponse) { FoodMaterialDetailEntity detail = GetMaterialDetail(response.ProductId, response.SpecId); if (detail!=null) { //加入选中项 if (!selectMaterialList.Contains(detail.SpecId)) { selectMaterialList.Add(detail.SpecId); } OnMaterialDetailClick?.Invoke(sender, new MaterialDetailEventArgs(detail)); } } //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } private FoodMaterialDetailEntity GetMaterialDetail(string productId, string specId) { List detailList = new List(); StringBuilder sqlBuld = new StringBuilder(); sqlBuld.Append(" select a.tenantId, a.id as productId,b.id as specId,a.name as productName,a.no as productNo, "); sqlBuld.Append(" b.name as specName,d.dispatchUnitId,c.name as dispatchUnitName,a.spell,a.memo,d.packUnitId,e.name as packUnitName "); sqlBuld.Append(" from pos_product a "); sqlBuld.Append(" LEFT JOIN pos_product_spec b on b.productId = a.id "); sqlBuld.Append(" LEFT JOIN pos_product_ratio d on d.productId = a.id "); sqlBuld.Append(" LEFT JOIN pos_product_unit c on c.id = d.dispatchUnitId "); sqlBuld.Append(" LEFT JOIN pos_product_unit e on e.id = d.packUnitId "); sqlBuld.Append(" where a.id={0} and b.id={1} "); using (var db = Global.Instance.OpenDataBase) { string sql = string.Format(sqlBuld.ToString(), productId, specId); detailList = db.Query(sql).ToList(); if (detailList == null) { detailList = new List(); } } if (detailList.Count>0) { return detailList[0]; } return null; } public delegate void EventHandler(object sender, MaterialDetailEventArgs e); public event EventHandler OnMaterialDetailClick; } public class MaterialDetailEventArgs : EventArgs { private readonly FoodMaterialDetailEntity _detail; public MaterialDetailEventArgs(FoodMaterialDetailEntity detail) { this._detail = detail; } public FoodMaterialDetailEntity Detail { get { return _detail; } } } }