|
|
@@ -247,7 +247,7 @@ namespace Business.SystemJobManagement
|
|
|
{
|
|
|
SyncCustMaster();
|
|
|
SyncSuppMaster();
|
|
|
- SyncSalesOrdMaster();
|
|
|
+ //SyncSalesOrdMaster();
|
|
|
//SyncSalesOrdMasterEntry();
|
|
|
SyncItemMaster();
|
|
|
SyncBom();
|
|
|
@@ -484,14 +484,14 @@ namespace Business.SystemJobManagement
|
|
|
}
|
|
|
|
|
|
//同步销售订单
|
|
|
- public void SyncSalesOrdMaster()
|
|
|
+ public string SyncSalesOrdMaster()
|
|
|
{
|
|
|
IConfiguration configuration = new ConfigurationBuilder().AddJsonFile("appsettings.json", optional: true, reloadOnChange: true).Build();
|
|
|
string domain = configuration.GetConnectionString("Factory_id");
|
|
|
string companyid = configuration.GetConnectionString("Company_id");
|
|
|
if (string.IsNullOrEmpty(domain) || string.IsNullOrEmpty(companyid))
|
|
|
{
|
|
|
- return;
|
|
|
+ return "未配置组织编号";
|
|
|
}
|
|
|
var daystr = DateTime.Now.Year.ToString() + "-01-01";
|
|
|
var seorderList = _mysql_crm_seorder.GetListAsync(m => m.create_time >= DateTime.Parse(daystr)).Result;
|
|
|
@@ -507,89 +507,97 @@ namespace Business.SystemJobManagement
|
|
|
|
|
|
List<SalesOrdDetail> seAdd = new List<SalesOrdDetail>();
|
|
|
List<SalesOrdDetail> seUpdate = new List<SalesOrdDetail>();
|
|
|
- if (seorderList.Any())
|
|
|
+ try
|
|
|
{
|
|
|
- foreach (var sale in seorderList)
|
|
|
+ if (seorderList.Any())
|
|
|
{
|
|
|
- var so = salesOrdList.Find(x => x.SalesOrd == sale.bill_no);
|
|
|
- if (so == null)
|
|
|
+ foreach (var sale in seorderList)
|
|
|
{
|
|
|
- so = new SalesOrdMaster();
|
|
|
- so.SalesOrd = sale.bill_no;
|
|
|
- so.SOType = "SO";
|
|
|
- so.ShipTo = sale.custom_no;
|
|
|
- so.OrdDate = sale.rdate;
|
|
|
- so.Domain = domain;
|
|
|
- so.CreateTime = DateTime.Now;
|
|
|
- so.CreateUser = "sync";
|
|
|
- so.IsActive = true;
|
|
|
- so.IsConfirm = true;
|
|
|
- ItemsAdd.Add(so);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- so.SOType = "SO";
|
|
|
- so.ShipTo = sale.custom_no;
|
|
|
- so.OrdDate = sale.rdate;
|
|
|
- so.Domain = domain;
|
|
|
- so.UpdateTime = DateTime.Now;
|
|
|
- so.UpdateUser = "sync";
|
|
|
- ItemsUpdate.Add(so);
|
|
|
- }
|
|
|
-
|
|
|
- var saleDtl = seorderentryList.Where(x => x.seorder_id == sale.Id).ToList();
|
|
|
- foreach (var dtl in saleDtl)
|
|
|
- {
|
|
|
- var se = salesDtlList.Find(x => x.SalesOrd == so.SalesOrd && x.Line == dtl.entry_seq);
|
|
|
- var item = itemList.Find(x => x.ItemNum == dtl.item_number);
|
|
|
- if (item == null)
|
|
|
+ var so = salesOrdList.Find(x => x.SalesOrd == sale.bill_no);
|
|
|
+ if (so == null)
|
|
|
{
|
|
|
- continue;
|
|
|
+ so = new SalesOrdMaster();
|
|
|
+ so.SalesOrd = sale.bill_no;
|
|
|
+ so.SOType = "SO";
|
|
|
+ so.ShipTo = sale.custom_no;
|
|
|
+ so.OrdDate = sale.rdate;
|
|
|
+ so.Domain = domain;
|
|
|
+ so.CreateTime = DateTime.Now;
|
|
|
+ so.CreateUser = "sync";
|
|
|
+ so.IsActive = true;
|
|
|
+ so.IsConfirm = true;
|
|
|
+ ItemsAdd.Add(so);
|
|
|
}
|
|
|
- if (se == null)
|
|
|
+ else
|
|
|
{
|
|
|
- se = new SalesOrdDetail();
|
|
|
- se.SalesOrdRecID = so.RecID;
|
|
|
- se.ItemNum = item.ItemNum;
|
|
|
- se.UM = item.UM;
|
|
|
- se.SalesOrd = sale.bill_no;
|
|
|
- se.SOType = "SO";
|
|
|
- se.QtyOrded = dtl.qty.GetValueOrDefault();
|
|
|
- se.Descr = item.Descr;
|
|
|
- se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
|
|
|
- se.Remark = dtl.remark;
|
|
|
- se.CreateUser = dtl.create_by_name;
|
|
|
- se.CreateTime = dtl.create_time;
|
|
|
- se.UpdateUser = dtl.update_by_name;
|
|
|
- se.UpdateTime = dtl.update_time;
|
|
|
- se.Domain = so.Domain;
|
|
|
- se.Line = dtl.entry_seq.GetValueOrDefault();
|
|
|
- se.IsConfirm = true;
|
|
|
- se.IsActive = true;
|
|
|
- seAdd.Add(se);
|
|
|
+ so.SOType = "SO";
|
|
|
+ so.ShipTo = sale.custom_no;
|
|
|
+ so.OrdDate = sale.rdate;
|
|
|
+ so.Domain = domain;
|
|
|
+ so.UpdateTime = DateTime.Now;
|
|
|
+ so.UpdateUser = "sync";
|
|
|
+ ItemsUpdate.Add(so);
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ var saleDtl = seorderentryList.Where(x => x.seorder_id == sale.Id).ToList();
|
|
|
+ foreach (var dtl in saleDtl)
|
|
|
{
|
|
|
- se.SalesOrdRecID = so.RecID;
|
|
|
- se.ItemNum = item.ItemNum;
|
|
|
- se.Descr = item.Descr;
|
|
|
- se.UM = item.UM;
|
|
|
- se.QtyOrded = dtl.qty.GetValueOrDefault();
|
|
|
- se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
|
|
|
- se.Remark = dtl.remark;
|
|
|
- se.UpdateUser = dtl.update_by_name;
|
|
|
- se.UpdateTime = dtl.update_time;
|
|
|
- se.Domain = so.Domain;
|
|
|
- se.Line = dtl.entry_seq.GetValueOrDefault();
|
|
|
- seUpdate.Add(se);
|
|
|
+ var se = salesDtlList.Find(x => x.SalesOrd == so.SalesOrd && x.Line == dtl.entry_seq);
|
|
|
+ var item = itemList.Find(x => x.ItemNum == dtl.item_number);
|
|
|
+ if (item == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (se == null)
|
|
|
+ {
|
|
|
+ se = new SalesOrdDetail();
|
|
|
+ se.SalesOrdRecID = so.RecID;
|
|
|
+ se.ItemNum = item.ItemNum;
|
|
|
+ se.UM = item.UM;
|
|
|
+ se.SalesOrd = sale.bill_no;
|
|
|
+ se.SOType = "SO";
|
|
|
+ se.QtyOrded = dtl.qty.GetValueOrDefault();
|
|
|
+ se.Descr = item.Descr;
|
|
|
+ se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
|
|
|
+ se.Remark = dtl.remark;
|
|
|
+ se.CreateUser = dtl.create_by_name;
|
|
|
+ se.CreateTime = dtl.create_time;
|
|
|
+ se.UpdateUser = dtl.update_by_name;
|
|
|
+ se.UpdateTime = dtl.update_time;
|
|
|
+ se.Domain = so.Domain;
|
|
|
+ se.Line = dtl.entry_seq.GetValueOrDefault();
|
|
|
+ se.IsConfirm = true;
|
|
|
+ se.IsActive = true;
|
|
|
+ seAdd.Add(se);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ se.SalesOrdRecID = so.RecID;
|
|
|
+ se.ItemNum = item.ItemNum;
|
|
|
+ se.Descr = item.Descr;
|
|
|
+ se.UM = item.UM;
|
|
|
+ se.QtyOrded = dtl.qty.GetValueOrDefault();
|
|
|
+ se.DueDate = dtl.plan_date != null ? dtl.plan_date : DateTime.Now;
|
|
|
+ se.Remark = dtl.remark;
|
|
|
+ se.UpdateUser = dtl.update_by_name;
|
|
|
+ se.UpdateTime = dtl.update_time;
|
|
|
+ se.Domain = so.Domain;
|
|
|
+ se.Line = dtl.entry_seq.GetValueOrDefault();
|
|
|
+ seUpdate.Add(se);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ _businessDbContext.BulkInsert(ItemsAdd);
|
|
|
+ _businessDbContext.BulkUpdate(ItemsUpdate);
|
|
|
+ _businessDbContext.BulkInsert(seAdd);
|
|
|
+ _businessDbContext.BulkUpdate(seUpdate);
|
|
|
}
|
|
|
- _businessDbContext.BulkInsert(ItemsAdd);
|
|
|
- _businessDbContext.BulkUpdate(ItemsUpdate);
|
|
|
- _businessDbContext.BulkInsert(seAdd);
|
|
|
- _businessDbContext.BulkUpdate(seUpdate);
|
|
|
}
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return ex.Message;
|
|
|
+ }
|
|
|
+ return "任务执行成功";
|
|
|
}
|
|
|
|
|
|
public string SyncASNBOLShipperMaster()
|
|
|
@@ -604,11 +612,11 @@ namespace Business.SystemJobManagement
|
|
|
var daystr = DateTime.Now.Year.ToString() + "-01-01";
|
|
|
//发货
|
|
|
var asblDList = _ASNBOLShipperDetail.Select(x => x.CreateTime >= DateTime.Parse(daystr));
|
|
|
- var asblList = asblDList.GroupBy(s=>s.OrdNbr).Select(list => new ASNBOLShipperDetail //也可以写成new GroupList<Student> 实体见下面
|
|
|
+ var asblList = asblDList.GroupBy(s => s.OrdNbr).Select(list => new ASNBOLShipperDetail //也可以写成new GroupList<Student> 实体见下面
|
|
|
{
|
|
|
OrdNbr = list.Key.ToString(),
|
|
|
RealQty = list.Sum(x => x.RealQty),
|
|
|
- CreateTime = list.Max(x=>x.CreateTime) //查此组Ident字段最大值
|
|
|
+ CreateTime = list.Max(x => x.CreateTime) //查此组Ident字段最大值
|
|
|
});
|
|
|
//销售明细
|
|
|
var seorderentryList = _mysql_crm_seorderentry.GetListAsync(m => asblList.Select(s => s.OrdNbr).ToList().Contains(m.bill_no)).Result;
|