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;
}
}
}