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 { /// /// 窗体:快递公司配送范围 /// public partial class FrmLogisticsRange : FormBase { #region 变量 public static FrmLogisticsRange frmLogisticsRange; private LogisticsRangeModel LogisticsRangeModel = new LogisticsRangeModel(); private List listLogisticsRangeModel = new List(); 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 初始化 /// /// 无参构造 /// 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; } /// /// 本窗体加载的时候 /// /// /// public void FrmLogisticsRange_Load(object sender, EventArgs e) { bindGrid(logComID); FrmSelectModle = new LogisticsRangeModel(); if (frmButtonItem.ContainsKey("Save")) { frmButtonItem["Save"].Enabled = false; } } #endregion #region 绑定数据 /// /// 整体绑定数据 /// 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>(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; } } } /// /// 通用查询 /// /// public override void LoadListData(DataTable table) { listLogisticsRangeModel = ConvertHelper.ConvertToList(table); bsLogisticsRange.DataSource = listLogisticsRangeModel; gridViewLogisticsRange.RefreshData(); } /// /// GridView选中行改变 /// /// /// 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 改变省份后 城市只显示该省份的所有城市 /// /// 改变省份后 城市只显示该省份的所有城市 /// /// /// 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(strResult); // } // else // { // SystemCommon.ShowInfoMessageBox(errText); // } //} } #endregion #region 改变城市后 区县只显示该城市的所有区县 /// /// 改变城市后 区县只显示该城市的所有区县 /// /// /// 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(strResult); } else { SystemCommon.ShowInfoMessageBox(errText); } } } #endregion #endregion #region 按钮事件 /// /// 清空按钮 /// public override void Clear() { //为bsLogisticsRangeEdit绑定新的Model LogisticsRangeModel = new LogisticsRangeModel(); bsLogisticsRangeEdit.DataSource = LogisticsRangeModel; } /// /// 新增按钮 /// 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; } } /// /// 保存按钮 /// 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编辑区域 } /// /// 编辑按钮 /// 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; } } /// /// 刷新按钮 /// public override void Refresh() { if (frmButtonItem.ContainsKey("Save") && frmButtonItem["Save"].Enabled == true && DialogResult.Yes != SystemCommon.ShowMessageBoxResult("确定放弃正在编辑的数据?")) { return; } importing = false; bindGrid(logComID); //Clear(); } /// /// 删除按钮 /// 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); } } } /// /// 确定按钮 /// public void Confirm() { lueLogCom.Enabled = false; txtExcArrDate.Enabled = false; luePro.Enabled = false; lueCity.Enabled = false; lueTown.Enabled = false; txtAddress.Enabled = false; txtRemark.Enabled = false; } /// /// 保存 /// /// /// private void btnSave_Click(object sender, EventArgs e) { Save(); } /// /// 双击Grid 编辑 /// /// /// private void gridViewLogisticsRange_DoubleClick(object sender, EventArgs e) { Edit(); } #endregion /// /// 导入 /// 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 tempList = NPOIHelper.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); } } /// /// 保存 /// public void SaveImport() { //将list存入数据库 if (listLogisticsRangeModel != null && listLogisticsRangeModel.Count > 0) { string errText = string.Empty; string strList = Newtonsoft.Json.JsonConvert.SerializeObject(listLogisticsRangeModel); List errorIndex = new List(); int hadNum = 0; int lengthNum = 0; string error = string.Empty; try { errorIndex = Newtonsoft.Json.JsonConvert.DeserializeObject>(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 tempList = new List(); 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); } } } /// /// 导出 /// public void Export() { gridControlLogisticsRange.ShowExportDialog(); } } }