using DevComponents.DotNetBar.SuperGrid; using POSV.Card; using POSV.Component; using POSV.Entity.Stock; using POSV.Template; 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 StoreStockCheckTemplateForm : BusinessForm { private List selectMaterialList = new List(); List detailList; private string storageId; public StoreStockCheckTemplateForm(string storageId, List ids) { InitializeComponent(); this.controlBox1.Text = "门店盘点模板"; this.controlBox1.ShowApplicationVersion = false; selectMaterialList = ids ?? new List(); this.storageId = storageId; } 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; QueryTicket(cur, rows); } public void QueryTicket(int PageNum, int pageSize) { try { var request = new StockCheckTemplateListRequest(); request.StoreId = Global.Instance.Authc.StoreId; request.PageNumber = PageNum; request.PageSize = pageSize; request.Keyword = this.noTextBox.Text; var response = StockUtils.StockCheckTemplateList(request); //成功 if (response.Item1) { this.pagerControl1.TotalPage = response.Item3.PageCount; this.pagerControl1.CurrentPage = response.Item3.PageNumber; this.pagerControl1.RecordCount = response.Item3.TotalCount; this.pagerControl1.RowsPerPage = response.Item3.PageSize; ticketListTable.PrimaryGrid.DataSource = response.Item3.List; } 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 OnCloseTouchClick(object sender, EventArgs e) { //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } /// /// 取消按钮 /// /// /// private void BtnCancelClick(object sender, EventArgs e) { //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } private void OnTxtMemoCustomClick(object sender, EventArgs e) { var obj = sender as NormalTextBox; var txtForm = new TxtKeyboardForm(StringUtils.GetString(obj.Text)); txtForm.NotifyChanged += (o, args) => { obj.Text = args.Data.ToString(); }; var trans = new TransparentForm(this, .5, txtForm); trans.Show(this); } /// /// 查询盘点模板 /// /// /// private void BntQuery(object sender, EventArgs e) { //获得当前页 int cur = pagerControl1.CurrentPage; //获得每页显示的记录数 int rows = pagerControl1.RowsPerPage; QueryTicket(cur, rows); } 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); AskgoodsTicketDetail(ticketId); } else { detailListTable.PrimaryGrid.Rows.Clear(); } } public void AskgoodsTicketDetail(string ticketId) { try { var request = new StockCheckTemplateDetailRequest(); request.StoreId = Global.Instance.Authc.StoreId; request.TicketId = ticketId; var response = StockUtils.StockCheckTemplateDetail(request); //成功 if (response.Item1) { List stockCheckTemplateDetailList = response.Item3.List; detailListTable.PrimaryGrid.DataSource = stockCheckTemplateDetailList; detailList = stockCheckTemplateDetailList; } else { List list = new List(); detailListTable.PrimaryGrid.DataSource = list; detailList = list; this.ShowToastNotify(this, response.Item2); } } catch (Exception ex) { this.ShowToastNotify(this, "盘点模板明细查询异常"); LOGGER.Error(ex, "盘点模板明细查询异常"); } } /// /// 选中模板 /// /// /// private void BtnSelect(object sender, EventArgs e) { string SpecIds = ""; foreach (StockCheckTemplateDetailResponse response in detailList) { FoodMaterialDetailEntity detail = GetMaterialDetail(response.ProductId, response.SpecId); if (detail != null) { //加入选中项 if (!selectMaterialList.Contains(String.Format("{0}-{1}", storageId, response.SpecId))) { selectMaterialList.Add(String.Format("{0}-{1}", storageId, response.SpecId)); SpecIds = SpecIds + response.SpecId + ","; } // OnMaterialDetailClick?.Invoke(sender, new MaterialDetailEventArgs(detail)); } } //门店支付的原料走服务器查看未盘点的商品信息 if (!"".Equals(SpecIds)) { SpecIds = SpecIds.Substring(0, SpecIds.Length-1); } try { StockCheckProductValidRequest request = new StockCheckProductValidRequest(); request.StoreId = Global.Instance.BusinessPlanLog.StoreId; request.StorageId = this.storageId; request.SpecIds = SpecIds; var response = StockUtils.StockCheckProductValid(request); //成功 if (response.Item1) { foreach (StockCheckProductValidResponse stockCheckProductValidResponse in response.Item3.List) { //遍历获取可添加的盘点明细列表 StockCheckTemplateDetailResponse stockCheckTemplateDetailResponse = detailList.Find(x => x.SpecId.Equals(stockCheckProductValidResponse.SpecId)); if (stockCheckTemplateDetailResponse != null ) { FoodMaterialDetailEntity product = new FoodMaterialDetailEntity(); product.ProductId = stockCheckTemplateDetailResponse.ProductId; product.ProductNo = stockCheckTemplateDetailResponse.ProductNo; product.ProductName = stockCheckTemplateDetailResponse.ProductName; product.SpecId = stockCheckTemplateDetailResponse.SpecId; product.SpecName = stockCheckTemplateDetailResponse.SpecName; product.PackUnitId = stockCheckTemplateDetailResponse.StockUnitId; product.PackUnitName = stockCheckTemplateDetailResponse.StockUnitName; OnProductClick?.Invoke(sender, new MaterialDetailEventArgs(product)); } } } } catch (Exception ex) { this.ShowToastNotify(this, "获取可盘点商品信息失败"); LOGGER.Error(ex, "获取可盘点商品信息失败"); } //先关闭父窗体 if (this.Owner != null) { this.Owner.Close(); } //再关闭当前窗体 this.Close(); } public delegate void EventHandler(object sender, MaterialDetailEventArgs e); public event EventHandler OnProductClick; /// /// 获取门店自身支持的原料数据 /// /// /// /// 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; } } }