using BBWY.Client.Models; using BBWY.Common.Models; using GalaSoft.MvvmLight.Command; using Microsoft.Win32; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Windows; using System.Windows.Input; namespace BBWY.Client.ViewModels { public class BillCorrectionViewModel : BaseVM, IDenpendency { public GlobalContext GlobalContext { get; set; } public DateTime StartDate { get; set; } public DateTime EndDate { get; set; } /// /// 销售运费快递账单文件列表 /// public ObservableCollection SaleFreightBillFileList { get; set; } /// /// 销售运费账单列表 /// public List SaleFreightBillList { get; set; } /// /// 导入快递账单 /// public ICommand ImportSaleFreightBillCommand { get; set; } public BillCorrectionViewModel() { SaleFreightBillFileList = new ObservableCollection(); SaleFreightBillList = new List(); StartDate = DateTime.Now.Date.AddDays((DateTime.Now.Day - 1) * -1).AddMonths(-1); EndDate = StartDate.AddMonths(1).AddDays(-1); ImportSaleFreightBillCommand = new RelayCommand(ImportSaleFreightBill); } private void ImportSaleFreightBill(string expressName) { var ofd = new OpenFileDialog() { Filter = "excel文件|*.xlsx;*.xls" }; if (ofd.ShowDialog() != true) return; var fileName = ofd.FileName.Substring(ofd.FileName.LastIndexOf("\\") + 1); var filePath = ofd.FileName; if (SaleFreightBillFileList.Contains(fileName)) { MessageBox.Show("请勿重复导入快递账单", "导入快递账单"); return; } IWorkbook xbook = null; try { using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { if (filePath.EndsWith(".xls")) xbook = new HSSFWorkbook(fs); else if (filePath.EndsWith(".xlsx")) xbook = new XSSFWorkbook(fs); } using (xbook) { IList billModelList = null; if (expressName == "YT") { billModelList = LoadYTSaleBillFile(xbook); } else if (expressName == "YZ") { billModelList = LoadYZSaleBillFile(xbook); } else if (expressName == "JD") { billModelList = LoadJDSaleBillFile(xbook); } if (billModelList != null && billModelList.Count() > 0) { SaleFreightBillList.AddRange(billModelList); SaleFreightBillFileList.Add(fileName); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "导入账单失败提示"); return; } } private IList LoadYTSaleBillFile(IWorkbook xbook) { return null; } /// /// 读取邮政运费账单 /// 验证邮件号和总邮资 /// /// /// private IList LoadYZSaleBillFile(IWorkbook xbook) { var sheet = xbook.GetSheetAt(0); var waybillNoCellTitle = sheet.GetRow(0).GetCell(2); if (waybillNoCellTitle == null || waybillNoCellTitle.StringCellValue != "邮件号") throw new Exception("验证邮政快递账单失败-未读取到邮件号"); var saleExpressFreight = sheet.GetRow(0).GetCell(8); if (saleExpressFreight == null || saleExpressFreight.StringCellValue != "总邮资") throw new Exception("验证邮政快递账单失败-未读取到总邮资"); var rowCount = sheet.LastRowNum; for (var i = 1; i < rowCount; i++) { } return null; } private IList LoadJDSaleBillFile(IWorkbook xbook) { return null; } } }