You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.7 KiB
138 lines
4.7 KiB
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; }
|
|
|
|
/// <summary>
|
|
/// 销售运费快递账单文件列表
|
|
/// </summary>
|
|
public ObservableCollection<string> SaleFreightBillFileList { get; set; }
|
|
|
|
/// <summary>
|
|
/// 销售运费账单列表
|
|
/// </summary>
|
|
public List<BillModel> SaleFreightBillList { get; set; }
|
|
|
|
/// <summary>
|
|
/// 导入快递账单
|
|
/// </summary>
|
|
public ICommand ImportSaleFreightBillCommand { get; set; }
|
|
|
|
public BillCorrectionViewModel()
|
|
{
|
|
SaleFreightBillFileList = new ObservableCollection<string>();
|
|
SaleFreightBillList = new List<BillModel>();
|
|
StartDate = DateTime.Now.Date.AddDays((DateTime.Now.Day - 1) * -1).AddMonths(-1);
|
|
EndDate = StartDate.AddMonths(1).AddDays(-1);
|
|
|
|
ImportSaleFreightBillCommand = new RelayCommand<string>(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<BillModel> 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<BillModel> LoadYTSaleBillFile(IWorkbook xbook)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 读取邮政运费账单
|
|
/// <para>验证邮件号和总邮资</para>
|
|
/// </summary>
|
|
/// <param name="xbook"></param>
|
|
/// <returns></returns>
|
|
private IList<BillModel> 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<BillModel> LoadJDSaleBillFile(IWorkbook xbook)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
|