BaoKai_202508-Wms-Jingwang..../WMS.FrmBaseData/FrmGoodsInfo.cs

470 lines
16 KiB
C#
Raw Permalink Normal View History

2025-08-24 09:35:55 +08:00
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
{
/// <summary>
/// 商品编号
/// </summary>
static string strGoodsId = string.Empty;
private List<JWGoodsInfoModel> list = new List<JWGoodsInfoModel>();
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
/// <summary>
/// 获取商品信息
/// </summary>
/// <param name="strGoodsID">商品编号</param>
/// <param name="strGoodsName">商品名称</param>
/// <param name="strPyName">助记码</param>
/// <param name="strProviderName">供应商</param>
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<BussGoods>.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
/// <summary>
/// 获取商品单位
/// </summary>
private void GetGoodsMeasure(string strGoodsID)
{
//获取商品单位
List<GoodsMeasureModel> listMeasure = IBussFactory<BussGoods>.Instance().GetGoodsMeasureDataTable(strGoodsID);
goodsMeasureModelBindingSource.DataSource = listMeasure;
gdvMeasure.RefreshData();
}
#endregion
#region
/// <summary>
/// 获取商品供应商
/// </summary>
private void GetGoodsPrivider(string strGoodsID)
{
//获取商品供应商
List<GoodsProviderModel> listGoodsProvider = IBussFactory<BussGoods>.Instance().GetGoodsPrividerDataTale(strGoodsID);
goodsProviderModelBindingSource.DataSource = listGoodsProvider;
}
#endregion
#region
/// <summary>
/// 增加
/// </summary>
public override void Add()
{
FrmGoodsInfoDet.IFlag = 0;
DialogResult dia = FrmGoodsInfoDet.GetInstance().ShowDialog();
if (dia == System.Windows.Forms.DialogResult.OK)
{
GetGoodsList("", "", "", "");
}
}
/// <summary>
/// 编辑
/// </summary>
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);
}
}
/// <summary>
/// 删除
/// </summary>
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<BussGoods>.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("", "", "", "");
}
}
}
/// <summary>
/// 刷新
/// </summary>
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; }
}
/// <summary>
/// 查询
/// </summary>
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
/// <summary>
/// 双击进编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void GvGoods_DoubleClick(object sender, EventArgs e)
{
Edit();
}
#endregion
/// <summary>
/// 通用查询
/// </summary>
/// <param name="table"></param>
public override void LoadListData(DataTable table)
{
list = ConvertHelper<JWGoodsInfoModel>.ConvertToList(table);
goodsInfoModelBindingSource.DataSource = list;
GvGoods.RefreshData();
}
private bool fuGaiSave = false;
/// <summary>
/// 保存导入
/// </summary>
public void SaveImport()
{
//将list存入数据库
if (list != null && list.Count > 0)
{
string errText = string.Empty;
List<int> errorIndex = new List<int>();
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<BussGoods>.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<JWGoodsInfoModel> goods = new List<JWGoodsInfoModel>();
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("没有等待保存的导入数据,请刷新页面");
}
}
/// <summary>
/// 导出
/// </summary>
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<JWGoodsInfoModel> listLoc = new List<JWGoodsInfoModel>();
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;
}
}
}