BaoKai_202508_Wms_Jingwang_.../WMS.FrmBaseData/FrmLogisticsRange.cs
2025-08-24 21:52:42 +08:00

741 lines
26 KiB
C#

using System;
using System.Collections.Generic;
using WMS.Frm.Base;
using WMS.Common;
using System.Windows.Forms;
using WMS.Model.Base;
using System.Data;
using WMS.Base.WebService;
using System.Collections;
using System.Threading;
namespace WMS.FrmBaseData
{
/// <summary>
/// 窗体:快递公司配送范围
/// </summary>
public partial class FrmLogisticsRange : FormBase
{
#region
public static FrmLogisticsRange frmLogisticsRange;
private LogisticsRangeModel LogisticsRangeModel = new LogisticsRangeModel();
private List<LogisticsRangeModel> listLogisticsRangeModel = new List<LogisticsRangeModel>();
private int flag = -1;//0:新增;1:修改
private string logComID = string.Empty;//用于查询绑定GridView的logComID
private bool importing = false;
public string LogComID
{
get { return logComID; }
set { logComID = value; }
}
#endregion
#region
/// <summary>
/// 无参构造
/// </summary>
public FrmLogisticsRange()
{
InitializeComponent();
lueLogCom.LoadData();
lueTown.LoadData();
lueCity.LoadData();
luePro.LoadData();
}
public static FrmLogisticsRange getInstance()
{
if (frmLogisticsRange == null || frmLogisticsRange.IsDisposed)
{
frmLogisticsRange = new FrmLogisticsRange();
}
return frmLogisticsRange;
}
/// <summary>
/// 本窗体加载的时候
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void FrmLogisticsRange_Load(object sender, EventArgs e)
{
bindGrid(logComID);
FrmSelectModle = new LogisticsRangeModel();
if (frmButtonItem.ContainsKey("Save"))
{
frmButtonItem["Save"].Enabled = false;
}
}
#endregion
#region
/// <summary>
/// 整体绑定数据
/// </summary>
private void bindGrid(string logComID)
{
if (!importing)
{
string errText = string.Empty;
//整体绑定数据
LogisticsRangeModel queryLogisticsRange = new LogisticsRangeModel();
if (!string.IsNullOrEmpty(logComID))
{
queryLogisticsRange.LOG_COM_ID = logComID;
}
string strParameter = Newtonsoft.Json.JsonConvert.SerializeObject(queryLogisticsRange);
string strDataSet = string.Empty;
new Thread(delegate()
{
try
{
//调用Web服务读取快递公司配送范围信息
strDataSet = WebLockConfig.Instance.WebLogisticsRange.GetLogisticsRangeListStr(strParameter, ref errText);
if (errText == string.Empty)
{
listLogisticsRangeModel = Newtonsoft.Json.JsonConvert.DeserializeObject<List<LogisticsRangeModel>>(strDataSet);
}
else
{
SystemCommon.ShowInfoMessageBox(errText);
}
}
catch (Exception)
{
SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
this.Invoke(new MethodInvoker(delegate()
{
if (errText == string.Empty)
{
if (errText == string.Empty)
{
if (listLogisticsRangeModel.Count > 0)
{
//GridView绑定数据
bsLogisticsRange.DataSource = listLogisticsRangeModel;
gridViewLogisticsRange.RefreshData();
//gridViewLogisticsRange.FocusedRowHandle = 0;//选中行变为第一行
gridViewLogisticsRange.FocusedRowHandle = listLogisticsRangeModel.FindIndex(p => p.LOGISTICS_RANGE_ID == LogisticsRangeModel.LOGISTICS_RANGE_ID);//选中行变为刚编辑的数据行
//编辑区域绑定数据
if (string.IsNullOrEmpty(LogisticsRangeModel.LOGISTICS_RANGE_ID) && gridViewLogisticsRange.FocusedRowHandle > -1)
{
LogisticsRangeModel = listLogisticsRangeModel[gridViewLogisticsRange.FocusedRowHandle];
}
bsLogisticsRangeEdit.DataSource = LogisticsRangeModel;
}
else
{
//SystemCommon.ShowInfoMessageBox("该快递公司下没有可配送的范围");
}
}
}
}));
}).Start();
if (frmButtonItem.ContainsKey("Add"))
{
frmButtonItem["Add"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Edit"))
{
frmButtonItem["Edit"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Del"))
{
frmButtonItem["Del"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Save"))
{
frmButtonItem["Save"].Enabled = false;
}
if (frmButtonItem.ContainsKey("SaveImport")) { frmButtonItem["SaveImport"].Enabled = false; }
Confirm();
}
else {
bsLogisticsRange.DataSource = listLogisticsRangeModel;
gridViewLogisticsRange.RefreshData();
if (LogisticsRangeModel.LOGISTICS_RANGE_ID != null) {
gridViewLogisticsRange.FocusedRowHandle = listLogisticsRangeModel.FindIndex(p => p.LOGISTICS_RANGE_ID == LogisticsRangeModel.LOGISTICS_RANGE_ID);//选中行变为刚编辑的数据行
//编辑区域绑定数据
if (string.IsNullOrEmpty(LogisticsRangeModel.LOGISTICS_RANGE_ID) && gridViewLogisticsRange.FocusedRowHandle > -1)
{
LogisticsRangeModel = listLogisticsRangeModel[gridViewLogisticsRange.FocusedRowHandle];
}
bsLogisticsRangeEdit.DataSource = LogisticsRangeModel;
}
}
}
/// <summary>
/// 通用查询
/// </summary>
/// <param name="table"></param>
public override void LoadListData(DataTable table)
{
listLogisticsRangeModel = ConvertHelper<LogisticsRangeModel>.ConvertToList(table);
bsLogisticsRange.DataSource = listLogisticsRangeModel;
gridViewLogisticsRange.RefreshData();
}
/// <summary>
/// GridView选中行改变
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridViewLogisticsRange_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
//编辑区域数据绑定
LogisticsRangeModel = new LogisticsRangeModel();
LogisticsRangeModel = gridViewLogisticsRange.GetFocusedRow() as LogisticsRangeModel;
bsLogisticsRangeEdit.DataSource = LogisticsRangeModel;
frmButtonItem["Edit"].Enabled = true;
frmButtonItem["Del"].Enabled = true;
frmButtonItem["Save"].Enabled = false;
Confirm();
if (!importing) {
if (frmButtonItem.ContainsKey("Add"))
{
frmButtonItem["Add"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Edit"))
{
frmButtonItem["Edit"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Del"))
{
frmButtonItem["Del"].Enabled = true;
}
if (frmButtonItem.ContainsKey("Save"))
{
frmButtonItem["Save"].Enabled = false;
}
}
}
#region
/// <summary>
/// 改变省份后 城市只显示该省份的所有城市
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void luePro_EditValueChanged(object sender, EventArgs e)
{
//if (!string.IsNullOrEmpty(luePro.Properties.ValueMember) && luePro.EditValue != null && !string.IsNullOrEmpty(luePro.EditValue.ToString()))
//{
// //绑定城市数据
// string errText = string.Empty;
// AddressAreaModel addressAreaModel = new AddressAreaModel();
// addressAreaModel.Add_pid = luePro.EditValue.ToString();
// string strParameter = Newtonsoft.Json.JsonConvert.SerializeObject(addressAreaModel);
// string strResult = string.Empty;
// try
// {
// strResult = WebLockConfig.Instance.WebAddressArea.GetAddressArea(strParameter);
// }
// catch (Exception)
// {
// SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
// }
// //如果查询城市数据成功
// if (errText == string.Empty)
// {
// lueCity.Properties.DataSource = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(strResult);
// }
// else
// {
// SystemCommon.ShowInfoMessageBox(errText);
// }
//}
}
#endregion
#region
/// <summary>
/// 改变城市后 区县只显示该城市的所有区县
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lueCity_EditValueChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(lueCity.Properties.ValueMember))
{
//绑定区县数据
string errText = string.Empty;
AddressAreaModel addressAreaModel = new AddressAreaModel();
addressAreaModel.Add_pid = lueCity.EditValue.ToString();
string strParameter = Newtonsoft.Json.JsonConvert.SerializeObject(addressAreaModel);
string strResult = string.Empty;
try
{
strResult = WebLockConfig.Instance.WebAddressArea.GetAddressArea(strParameter);
}
catch (Exception)
{
SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
//如果查询区县数据成功
if (errText == string.Empty)
{
lueTown.Properties.DataSource = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(strResult);
}
else
{
SystemCommon.ShowInfoMessageBox(errText);
}
}
}
#endregion
#endregion
#region
/// <summary>
/// 清空按钮
/// </summary>
public override void Clear()
{
//为bsLogisticsRangeEdit绑定新的Model
LogisticsRangeModel = new LogisticsRangeModel();
bsLogisticsRangeEdit.DataSource = LogisticsRangeModel;
}
/// <summary>
/// 新增按钮
/// </summary>
public override void Add()
{
lueLogCom.Enabled = true;
txtExcArrDate.Enabled = true;
luePro.Enabled = true;
lueCity.Enabled = true;
lueTown.Enabled = true;
txtAddress.Enabled = true;
txtRemark.Enabled = true;
LogisticsRangeModel = new LogisticsRangeModel();
bsLogisticsRangeEdit.DataSource = LogisticsRangeModel;
lueCity.Properties.DataSource = new DataTable();
lueTown.Properties.DataSource = new DataTable();
flag = 0;
if (frmButtonItem.ContainsKey("Add"))
{
frmButtonItem["Add"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Edit"))
{
frmButtonItem["Edit"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Del"))
{
frmButtonItem["Del"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Save"))
{
frmButtonItem["Save"].Enabled = true;
}
}
/// <summary>
/// 保存按钮
/// </summary>
public override void Save() {
gridControlLogisticsRange.Focus();
//非空验证
if (string.IsNullOrEmpty(lueLogCom.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("快递公司不能为空");
lueLogCom.Focus();
return;
}
if (string.IsNullOrEmpty(txtExcArrDate.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("预计到货天数不能为空");
txtExcArrDate.Focus();
return;
}
if (string.IsNullOrEmpty(luePro.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("省份不能为空");
luePro.Focus();
return;
}
if (string.IsNullOrEmpty(lueCity.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("城市不能为空");
lueCity.Focus();
return;
}
if (string.IsNullOrEmpty(lueTown.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("县/市/区不能为空");
lueTown.Focus();
return;
}
if (string.IsNullOrEmpty(txtAddress.Text.Trim()))
{
SystemCommon.ShowInfoMessageBox("送货区域不能为空");
txtAddress.Focus();
return;
}
LogisticsRangeModel model = LogisticsRangeModel;
model.OPERATORID = userData.USER_ID;//操作人
if (importing)
{
}
else if (flag == 1)//修改
{
string strLogisticsRangeModel = Newtonsoft.Json.JsonConvert.SerializeObject(model);
string errText = string.Empty;
try
{
errText = WebLockConfig.Instance.WebLogisticsRange.InsOrUpdLogisticsRange(strLogisticsRangeModel, 1);
}
catch (Exception)
{
SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
if (string.IsNullOrEmpty(errText))
{
SystemCommon.ShowInfoMessageBox("修改成功");
bindGrid(logComID);
}
else {
SystemCommon.ShowInfoMessageBox("修改失败" + errText);
}
flag = -1;//标识为非新增非修改
}
else if (flag == 0)//新增
{
string strLogisticsRangeModel = Newtonsoft.Json.JsonConvert.SerializeObject(model);
string errText = string.Empty;
try
{
errText = WebLockConfig.Instance.WebLogisticsRange.InsOrUpdLogisticsRange(strLogisticsRangeModel, 0);
}
catch (Exception)
{
SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
if (string.IsNullOrEmpty(errText))
{
SystemCommon.ShowInfoMessageBox("新增成功");
bindGrid(logComID);
}
else
{
SystemCommon.ShowInfoMessageBox("新增失败" + errText);
flag = -1;//标识为非新增非修改
}
}
else
{
SystemCommon.ShowInfoMessageBox("未选择新增或修改");
}
//Clear();//保存后clear编辑区域
}
/// <summary>
/// 编辑按钮
/// </summary>
public override void Edit()
{
if (!frmButtonItem.ContainsKey("Edit"))
{
return;
}
else if (frmButtonItem["Edit"].Enabled == false)
{
return;
}
lueLogCom.Enabled = true;
txtExcArrDate.Enabled = true;
luePro.Enabled = true;
lueCity.Enabled = true;
lueTown.Enabled = true;
txtAddress.Enabled = true;
txtRemark.Enabled = true;
flag = 1;
if (frmButtonItem.ContainsKey("Add"))
{
frmButtonItem["Add"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Edit"))
{
frmButtonItem["Edit"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Del"))
{
frmButtonItem["Del"].Enabled = false;
}
if (frmButtonItem.ContainsKey("Save"))
{
frmButtonItem["Save"].Enabled = true;
}
}
/// <summary>
/// 刷新按钮
/// </summary>
public override void Refresh()
{
if (frmButtonItem.ContainsKey("Save") && frmButtonItem["Save"].Enabled == true && DialogResult.Yes != SystemCommon.ShowMessageBoxResult("确定放弃正在编辑的数据?"))
{
return;
}
importing = false;
bindGrid(logComID);
//Clear();
}
/// <summary>
/// 删除按钮
/// </summary>
public override void Del()
{
string errText = string.Empty;
if (DialogResult.Yes == SystemCommon.ShowMessageBoxResult("确定删除"))
{
if (!importing)
{
string str = LogisticsRangeModel.LOGISTICS_RANGE_ID;
if (!string.IsNullOrEmpty(str))
{
errText = string.Empty;
try
{
errText = WebLockConfig.Instance.WebLogisticsRange.DeleteLogisticsRange(str);
}
catch (Exception)
{
SystemCommon.ShowInfoMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
if (string.IsNullOrEmpty(errText))
{
SystemCommon.ShowInfoMessageBox("删除成功");
bindGrid(logComID);
}
else
{
SystemCommon.ShowInfoMessageBox("删除失败" + errText);
}
}
else
{
SystemCommon.ShowInfoMessageBox("请选择一条记录");
}
}
else
{
listLogisticsRangeModel.RemoveAll(p=>p.LOGISTICS_RANGE_ID == LogisticsRangeModel.LOGISTICS_RANGE_ID && p.LOG_COM_ID == LogisticsRangeModel.LOG_COM_ID && p.LOG_COM_NAME == LogisticsRangeModel.LOG_COM_NAME);//.RemoveAt(gridViewLogisticsRange.GetFocusedDataSourceRowIndex());
bindGrid(logComID);
}
}
}
/// <summary>
/// 确定按钮
/// </summary>
public void Confirm()
{
lueLogCom.Enabled = false;
txtExcArrDate.Enabled = false;
luePro.Enabled = false;
lueCity.Enabled = false;
lueTown.Enabled = false;
txtAddress.Enabled = false;
txtRemark.Enabled = false;
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, EventArgs e)
{
Save();
}
/// <summary>
/// 双击Grid 编辑
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridViewLogisticsRange_DoubleClick(object sender, EventArgs e)
{
Edit();
}
#endregion
/// <summary>
/// 导入
/// </summary>
public void Import()
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Title = "导入商品资料";
fileDialog.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx";
DialogResult dialogResult = fileDialog.ShowDialog(this);
if (dialogResult == DialogResult.OK)
{
Hashtable ht = new Hashtable();
//ht.Add("LOG_COM_ID", "商品代码");
//ht.Add("LOG_COM_NAME", "商品名称");
List<LogisticsRangeModel> tempList = NPOIHelper<LogisticsRangeModel>.Import(fileDialog, ht);
if (tempList == null)
{
bindGrid(logComID);
return;
}
if (importing)
{
listLogisticsRangeModel.AddRange(tempList);
}
else
{
listLogisticsRangeModel = tempList;
}
if (listLogisticsRangeModel == null)
{
bindGrid(logComID);
return;
}
if (frmButtonItem.ContainsKey("Add")) { frmButtonItem["Add"].Enabled = false; }
if (frmButtonItem.ContainsKey("SaveImport")) { frmButtonItem["SaveImport"].Enabled = true; }
importing = true;
bindGrid(logComID);
}
}
/// <summary>
/// 保存
/// </summary>
public void SaveImport()
{
//将list存入数据库
if (listLogisticsRangeModel != null && listLogisticsRangeModel.Count > 0)
{
string errText = string.Empty;
string strList = Newtonsoft.Json.JsonConvert.SerializeObject(listLogisticsRangeModel);
List<int> errorIndex = new List<int>();
int hadNum = 0;
int lengthNum = 0;
string error = string.Empty;
try
{
errorIndex = Newtonsoft.Json.JsonConvert.DeserializeObject<List<int>>(WebLockConfig.Instance.WebLogisticsRange.InsLogisticsRangeList(strList, ref errText, ref hadNum, ref lengthNum, ref error));
}
catch (Exception)
{
SystemCommon.ShowErrorMessageBox("未知错误,请检查网络连接!如仍无法解决问题请联系我们!");
}
if (errorIndex.Count == 0)
{
SystemCommon.ShowInfoMessageBox("所有记录已保存成功");
Refresh();
}
else
{
List<LogisticsRangeModel> tempList = new List<LogisticsRangeModel>();
for (int i = errorIndex.Count - 1; i >= 0; i--)
{
tempList.Add(listLogisticsRangeModel[i]);
}
listLogisticsRangeModel = tempList;
bindGrid(logComID);
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);
}
}
}
/// <summary>
/// 导出
/// </summary>
public void Export()
{
gridControlLogisticsRange.ShowExportDialog();
}
}
}