using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using WMS.Frm.Base; using WMS.Model.Base; using WMS.Common; using System.Collections; using System.IO; using DevExpress.XtraEditors.Repository; using DevExpress.XtraReports.UI; using System.Threading; using WMS.Ctrl; using WMS.Business; using WMS.Business.Base; using WMS.Frm; namespace WMS.FrmBaseData { public partial class FrmGoodsInfo : FormBase { /// /// 商品编号 /// static string strGoodsId = string.Empty; private List list = new List(); private bool importing = false; #region 构造方法 public FrmGoodsInfo() { InitializeComponent(); } #endregion #region 窗体加载 private void FrmGoodsInfo_Load(object sender, EventArgs e) { FrmSelectModle = new JWGoodsInfoModel(); //获取商品信息 GetGoodsList("", "", "", ""); if (frmButtonItem.ContainsKey("SaveImport")) { frmButtonItem["SaveImport"].Enabled = false; } } #endregion #region 获取商品信息 /// /// 获取商品信息 /// /// 商品编号 /// 商品名称 /// 助记码 /// 供应商 private void GetGoodsList(string strGoodsID, string strGoodsName, string strPyName, string strProviderName) { WMS.Ctrl.LoadForm load = new WMS.Ctrl.LoadForm(); DevExpress.XtraSplashScreen.SplashScreenManager.ShowForm(load, load.GetType(), false, true, false, 70); DevExpress.XtraSplashScreen.SplashScreenManager.Default.SetWaitFormDescription("数据加载中..."); new Thread(delegate () { try { if (!importing) { //获取商品信息 list = IBussFactory.Instance().GetGoodsList(strGoodsID, strGoodsName, strPyName, strProviderName); } this.Invoke(new MethodInvoker(delegate () { JWGoodsInfoBindingSource.DataSource = list; GvGoods.RefreshData(); // if( DevExpress.XtraSplashScreen.SplashScreenManager.ActivateParentOnSplashFormClosing) DevExpress.XtraSplashScreen.SplashScreenManager.CloseForm(); })); } catch (Exception ex) { SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!"); } }).Start(); //GvGoods.FocusedRowHandle = list.FindIndex(p => p.INVENTORY_ITEM_ID == strGoodsId); } #endregion #region 获取商品单位 /// /// 获取商品单位 /// private void GetGoodsMeasure(string strGoodsID) { //获取商品单位 List listMeasure = IBussFactory.Instance().GetGoodsMeasureDataTable(strGoodsID); goodsMeasureModelBindingSource.DataSource = listMeasure; gdvMeasure.RefreshData(); } #endregion #region 获取商品供应商 /// /// 获取商品供应商 /// private void GetGoodsPrivider(string strGoodsID) { //获取商品供应商 List listGoodsProvider = IBussFactory.Instance().GetGoodsPrividerDataTale(strGoodsID); goodsProviderModelBindingSource.DataSource = listGoodsProvider; } #endregion #region 按钮事件 /// /// 增加 /// public override void Add() { FrmGoodsInfoDet.IFlag = 0; DialogResult dia = FrmGoodsInfoDet.GetInstance().ShowDialog(); if (dia == System.Windows.Forms.DialogResult.OK) { GetGoodsList("", "", "", ""); } } /// /// 编辑 /// public override void Edit() { if (!frmButtonItem.ContainsKey("Edit")) { return; } else if (frmButtonItem["Edit"].Enabled == false) { return; } if (strGoodsId == "") { SystemCommon.ShowErrorMessageBox("请选择一条商品信息!"); return; } if (!importing) { FrmGoodsInfoDet.IFlag = 1; FrmGoodsInfoDet.goodsModel = GvGoods.GetFocusedRow() as JWGoodsInfoModel; //FrmGoodsInfoDet.StrGoodsID = strGoodsId; } else { FrmGoodsInfoDet.IFlag = 3; FrmGoodsInfoDet.goodsModel = GvGoods.GetFocusedRow() as JWGoodsInfoModel; } DialogResult dia = FrmGoodsInfoDet.GetInstance().ShowDialog(); if (dia == System.Windows.Forms.DialogResult.OK) { GetGoodsList("", "", "", ""); // goodsInfoModelBindingSource.DataSource = list; GvGoods.RefreshData(); GetGoodsMeasure(strGoodsId); GetGoodsPrivider(strGoodsId); } } /// /// 删除 /// public override void Del() { if (strGoodsId == "") { SystemCommon.ShowErrorMessageBox("请选择一条商品信息!"); return; } if (DevExpress.XtraEditors.XtraMessageBox.Show("是否删除此信息?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (!importing) { strGoodsId = GvGoods.GetRowCellValue(GvGoods.FocusedRowHandle, "INVENTORY_ITEM_ID").ToString(); string errText = IBussFactory.Instance().DeleteGoodsInfo(strGoodsId); if (!string.IsNullOrEmpty(errText)) { SystemCommon.ShowErrorMessageBox("删除失败:"+errText); } else { SystemCommon.ShowInfoMessageBox("删除成功!"); GetGoodsList("", "", "", ""); GetGoodsMeasure(strGoodsId); GetGoodsPrivider(strGoodsId); } } else { JWGoodsInfoModel goods = new JWGoodsInfoModel(); goods = GvGoods.GetFocusedRow() as JWGoodsInfoModel; list.RemoveAll(p => p.INVENTORY_ITEM_ID == goods.INVENTORY_ITEM_ID && p.ITEM_DESCRIPTION == goods.ITEM_DESCRIPTION);//.RemoveAt(GvGoods.GetFocusedDataSourceRowIndex()); GetGoodsList("", "", "", ""); } } } /// /// 刷新 /// public override void Refresh() { importing = false; GetGoodsList("", "", "", ""); if (frmButtonItem.ContainsKey("Add")) { frmButtonItem["Add"].Enabled = true; } if (frmButtonItem.ContainsKey("UpdateImport")) { frmButtonItem["UpdateImport"].Enabled = true; } if (frmButtonItem.ContainsKey("SaveImport")) { frmButtonItem["SaveImport"].Enabled = false; } } /// /// 查询 /// public override void Search() { FrmSelect frm = new FrmSelect(this.FrmSelectModle); if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.LoadListData(frm.SelectData); } } #endregion #region Grid行事件 private void GvGoods_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { if (e.FocusedRowHandle < 1) return; strGoodsId = GvGoods.GetRowCellValue(e.FocusedRowHandle, "INVENTORY_ITEM_ID").ToString(); GetGoodsMeasure(strGoodsId); GetGoodsPrivider(strGoodsId); } #endregion #region /// /// 双击进编辑 /// /// /// private void GvGoods_DoubleClick(object sender, EventArgs e) { Edit(); } #endregion /// /// 通用查询 /// /// public override void LoadListData(DataTable table) { list = ConvertHelper.ConvertToList(table); goodsInfoModelBindingSource.DataSource = list; GvGoods.RefreshData(); } private bool fuGaiSave = false; /// /// 保存导入 /// public void SaveImport() { //将list存入数据库 if (list != null && list.Count > 0) { string errText = string.Empty; List errorIndex = new List(); int hadNum = 0; int lengthNum = 0; string error = string.Empty; try { LoadForm load = new LoadForm(); DevExpress.XtraSplashScreen.SplashScreenManager.ShowForm(load, load.GetType(), false, true, false, 0); DevExpress.XtraSplashScreen.SplashScreenManager.Default.SetWaitFormDescription("正在保存商品请稍候...."); errorIndex =IBussFactory.Instance().AddGoodsInfoList(list, ref hadNum, ref lengthNum, ref error, fuGaiSave); DevExpress.XtraSplashScreen.SplashScreenManager.CloseForm(); } catch (Exception) { SystemCommon.ShowErrorMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!"); fuGaiSave = false; return; } fuGaiSave = false; if (errorIndex.Count == 0) { SystemCommon.ShowInfoMessageBox("所有记录已保存成功"); Refresh(); } else { List goods = new List(); for (int i = errorIndex.Count - 1; i >= 0; i--) { goods.Add(list[i]); } list = goods; goodsInfoModelBindingSource.DataSource = list; GvGoods.RefreshData(); string fileName = @"D:\WMS\保存导入商品错误日志" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"; SystemCommon.WriteFile(fileName, error);///写文件 /*错误提示*/ string info = string.Empty; if (errorIndex.Count > (hadNum + lengthNum)) { info += ((errorIndex.Count - hadNum - lengthNum) + "个商品导入时遇到未知错误,"); } if (hadNum > 0) { info += (hadNum + "个商品编号已存在,"); } if (lengthNum > 0) { info += (lengthNum + "条商品记录数据长度过长,"); } info += "日志已写入" + fileName + ",未出错记录已写入数据库并从窗体中移除。"; SystemCommon.ShowErrorMessageBox(info); } } else { SystemCommon.ShowErrorMessageBox("没有等待保存的导入数据,请刷新页面"); } } /// /// 导出 /// public void Export() { gridControlCustom1.ShowExportDialog(); } //#region 点击GridView显示图片 //int x = 0; //int y = 0; //private void GvGoods_MouseUp(object sender, MouseEventArgs e) //{ // x = 0; // y = 0; // //获取GridView // DevExpress.XtraGrid.Views.Grid.GridView gv = ((DevExpress.XtraGrid.Views.Grid.GridView)(sender)); // if (gv.FocusedRowHandle < 0) // return; // x = e.X; // y = e.Y; // //获取GridView当前行的JWGoodsInfoModel // JWGoodsInfoModel model = gv.GetRow(gv.FocusedRowHandle) as JWGoodsInfoModel; // if (model.IMG != null) // { // //二进制图片转换 // MemoryStream ms = new System.IO.MemoryStream(model.IMG); // pictureBox1.Image = System.Drawing.Image.FromStream(ms); // } // else // { // return; // } // panelControl1.Location = new System.Drawing.Point(x, y); // panelControl1.Visible = true; //} //private void GvGoods_MouseMove(object sender, MouseEventArgs e) //{ // //鼠标移动出范围后 隐藏panel // if (e.Location.Y >= y + 9) // { // panelControl1.Visible = false; // } // if (e.Location.Y <= y - 9) // { // panelControl1.Visible = false; // } //} //#endregion //批量打印选中的商品的条码 public void PrintBarCode() { if (DialogResult.No == SystemCommon.ShowMessageBoxResult("是否打印选中的商品条码")) { return; } List listLoc = new List(); foreach (int handle in GvGoods.GetSelectedRows()) { JWGoodsInfoModel loc = new JWGoodsInfoModel(); loc = GvGoods.GetRow(handle) as JWGoodsInfoModel; listLoc.Add(loc); } //listLoc.RemoveAll(p=>p.LOCATION_ID == null||p.LOCATION_ID == string.Empty); if (listLoc.Count == 0) { SystemCommon.ShowInfoMessageBox("请选择商品"); return; } int count = 0; LoadForm load = new LoadForm(); DevExpress.XtraSplashScreen.SplashScreenManager.ShowForm(load, load.GetType(), false, true, false, 0); DevExpress.XtraSplashScreen.SplashScreenManager.Default.SetWaitFormDescription("正在打印商品条码请稍候...."); foreach (var item in listLoc) { //if (!string.IsNullOrEmpty(item.BARCODE)) //{ // //DialogResult printResult = // //BarCodeReport.GetInstance(item.BARCODE, 6).Print(); // //if (printResult == DialogResult.OK) // //{ // count++; // //} //} } DevExpress.XtraSplashScreen.SplashScreenManager.CloseForm(); SystemCommon.ShowInfoMessageBox("您选择了" + listLoc.Count + "条商品," + count + "条打印成功"); } private void FrmGoodsInfo_FormClosed(object sender, FormClosedEventArgs e) { DialogResult = DialogResult.Cancel; } } }