You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

305 lines
12 KiB
C#

2 months ago
using NetLibrary.OnlineTrade;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TradeData;
using TradeModel;
namespace TradeManage.SysManage
{
public partial class CDiscountImport : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
List<OrderModel> ListModel = new List<OrderModel>();
protected void ImportOrders_Click(object sender, EventArgs e)
{
Pages.Login(this.Session);
int CompanyID = Convert.ToInt32(Session["CompanyId"]);
int UserId = Convert.ToInt32(Session["UserId"]);
try
{
bool bk = BaseService.SyncLock(Convert.ToInt32(grouplist.SelectedItem.Value), 1, UserId, DateTime.Now);
if (bk == false)
{
Page.ClientScript.RegisterClientScriptBlock(Page.ClientScript.GetType(), "myscripts", "<script>alert('当前有其他人正在导入订单,请稍候再尝试此操作!')</script>");
return;
}
//判断是否存在对应的文件
if (FileUploadImport.PostedFile.ContentLength != 0)
{
//产生随机文件名避免文件上载过程中重复
System.Guid ro = Guid.NewGuid();
var filename = ro + FileUploadImport.FileName;
//保存文件到 Pictures 目录下
FileUploadImport.PostedFile.SaveAs(Server.MapPath("~\\csv\\") + filename);
//处理上载的文件
ImportOrderts(Server.MapPath("~\\csv\\"), filename);
File.Delete(filename);
}
else
{
Page.ClientScript.RegisterClientScriptBlock(Page.ClientScript.GetType(), "myscripts", "<script>alert('文件名不正确!')</script>");
}
List<int> ListOrder = API_OrderInfoService.GetListForShop2(Convert.ToInt32(grouplist.SelectedItem.Value));
foreach (int OrderID in ListOrder)
{
BaseService.OrderAddForTM(CompanyID, OrderID, UserId);
}
BaseService.UnSyncLock(Convert.ToInt32(grouplist.SelectedItem.Value), 1, DateTime.Now);
}
catch
{
BaseService.UnSyncLock(Convert.ToInt32(grouplist.SelectedItem.Value), 1, DateTime.Now);
}
}
string successresult = "";
int successnum = 0;
bool ordertypeflage = false;
public void ImportOrderts(string serverpath, string filename)
{
TILabel.Text = "需要注意运输方式的订单:</br>";
string result = "";
DataTable dt;
try
{
//读取对应的csv文件
var readscv = new ICSVWriterReader.CSVHelper(serverpath + filename);
readscv.Read(out result, out dt, "Amazon");
//OrdersAdd(dt);
string ordernos = "";//用来保存导入的订单编号
int i = 0;
foreach (DataRow dr in dt.Rows)
{
if (dr["SKU Cdiscount"].ToString() != "INTERETBCA")
{
i++;
try
{
insertToSql(dr);
ordernos = ordernos + " 订单编号:" + dr["Référence commande"].ToString() + "<br/>";
}
catch (Exception ex)
{
EndLabel.Text = ex + "导入失败!第" + i.ToString() + "行!";
}
}
}
API_OrderInfoService aois = new API_OrderInfoService();
aois.ImportCD(ListModel, grouplist.SelectedItem.Text, Convert.ToInt32(grouplist.SelectedItem.Value));
EndLabel.Text = "<table><tr><td>导入订单数:" + successnum.ToString() + "</td></tr>";
EndLabel.Text = EndLabel.Text + successresult.ToString();
}
catch (Exception ex)
{
throw ex;
}
finally
{
EndLabel.Text = EndLabel.Text + result;
}
}
public void insertToSql(DataRow dr)
{
OrderModel om = new OrderModel();
string Country = "";
var q = ListModel.Where(o => o.PlatOrderCode == dr["Référence commande"].ToString());
//判断订单是否在neworders中已存在。存在则合并分配信息||新增一笔对应的订单
if (q.Count() > 0)
{
//处理是否添加对应订单的分配型号,保留是否分配成功的标记ordertypeflage
string sku = "";
Int32 buynums = Convert.ToInt32(dr["Quantité"].ToString());
int PurchaseNum = Convert.ToInt32(dr["Quantité"].ToString());//购买数量
sku = dr["Référence vendeur"].ToString();
string pricestr = dr["Rémunération vendeur"].ToString().Replace("€", "").Replace("-", "").Trim();
Decimal PaidPrice = 0;
if (pricestr != "")
PaidPrice = Convert.ToDecimal(pricestr);
q.First().TotalPrice += PaidPrice;
var checkData = q.First().ListModel.Where(o => o.GoodsSKU == sku);
if (checkData.Count() == 0)
{
//List<OrderDetailModel> odmlist = new List<OrderDetailModel>();
OrderDetailModel odm = new OrderDetailModel();
string[] goodlist = sku.Split('-');
odm.GoodsSKU = sku;
odm.MoneyCode = "EUR";
odm.GoodsPrice = PaidPrice;
odm.GoodsNum = Convert.ToInt32(dr["Quantité"].ToString());
odm.GoodsName = goodlist[0];
//odmlist.Add(odm);
//om.ListModel = odmlist;
q.First().ListModel.Add(odm);
}
else
{
checkData.First().GoodsNum += buynums; //xyb 130302
}
}
else
{
//下单时间
string timetemp = dr["Date de commande"].ToString().Replace("T", " ");
string[] timelist = timetemp.Split(' ');
string[] ttt = timelist[0].Split('/');
string timestr = ttt[2] + "-" + ttt[1] + "-" + ttt[0] + " " + timelist[1];
string[] custmlist = dr["Nom et Adresse de livraison"].ToString().Split('-');
//客户地址
string postcode = dr["Code postal de livraison"].ToString(); //邮编
Country = "France";
//币种
string bz = "EUR";
string adress = custmlist[1].Trim() + " ,";
for (int i = 2; i < custmlist.Length; i++)
{
adress = adress + custmlist[i].Trim() + " ,";
}
string sku = "";
Int32 buynums = Convert.ToInt32(dr["Quantité"].ToString());
sku = dr["Référence vendeur"].ToString();
string pricestr = dr["Rémunération vendeur"].ToString().Replace("€", "").Replace("-", "").Trim();
om.OrderCode = dr["Référence commande"].ToString(); ;
om.PlatOrderCode = dr["Référence commande"].ToString(); ;
om.BuyerName = custmlist[0].Trim(); ;
om.BuyerPhone = dr["Téléphone livraison 2"].ToString();
om.BuyerMobile = dr["Téléphone livraison 1"].ToString();
om.BuyerAddr = adress ;
string City = " ";
if (dr["Ville de livraison"] != null)
{
if (dr["Ville de livraison"].ToString() != "")
City = dr["Ville de livraison"].ToString();
}
om.BuyerCity = City;
string Region = " ";
om.BuyerProvince = Region;
om.BuyerZip = postcode;
om.PostInfo = dr["Mode d'expédition"].ToString();
om.BuyerCountry = Country;
om.OrderDate = DateTime.Now;
om.PayDate = Convert.ToDateTime(timestr);
Decimal PaidPrice = 0;
if (pricestr != "")
PaidPrice = Convert.ToDecimal(pricestr);
List<OrderDetailModel> odmlist = new List<OrderDetailModel>();
OrderDetailModel odm = new OrderDetailModel();
string[] goodlist = sku.Split('-');
odm.GoodsSKU = sku;
odm.MoneyCode = bz;
odm.GoodsPrice = PaidPrice;
odm.GoodsNum = Convert.ToInt32(dr["Quantité"].ToString());
odm.GoodsName = goodlist[0];
odmlist.Add(odm);
om.ListModel = odmlist;
om.TotalPrice = PaidPrice;
om.MoneyCode = bz;
ListModel.Add(om);
//记录成功导入的订单号和数量
successnum++;
successresult = successresult + "<tr><td>" + om.OrderCode + "</td></tr>";
}
}
protected void APIImport_Click(object sender, EventArgs e)
{
FileInfo fi = new FileInfo(Server.MapPath("GetOrderList_Call_heegrand.xml"));
StreamReader sr = fi.OpenText();
string str = sr.ReadToEnd();
CDiscountAPI cda = new CDiscountAPI();
string errormess = "";
JC_Shop ShopModel = JC_ShopService.GetModel(Convert.ToInt32(grouplist.SelectedItem.Value));
ListModel = cda.GetOrders(ShopModel.Appkey, ShopModel.DeveKey, str, out errormess);
API_OrderInfoService aois = new API_OrderInfoService();
aois.ImportCD(ListModel, grouplist.SelectedItem.Text, Convert.ToInt32(grouplist.SelectedItem.Value));
EndLabel.Text = "<table><tr><td>采集订单数:" + ListModel.Count().ToString() + "</td></tr>";
List<int> ListOrder = API_OrderInfoService.GetListForShop(1, grouplist.SelectedItem.Value);
foreach (int OrderID in ListOrder)
{
BaseService.OrderAddForTM(1, OrderID, 1);
}
//EndLabel.Text = EndLabel.Text + successresult.ToString();
}
protected void test_Click(object sender, EventArgs e)
{
FileInfo fi = new FileInfo(Server.MapPath("ValidateOrderList.xml"));
StreamReader sr = fi.OpenText();
string str = sr.ReadToEnd();
CDiscountAPI cda = new CDiscountAPI();
string errormess = "";
JC_Shop ShopModel = JC_ShopService.GetModel(Convert.ToInt32(grouplist.SelectedItem.Value));
EndLabel.Text = cda.SendTrack(ShopModel.Appkey, ShopModel.DeveKey, str);
}
}
}