|
|
|
@ -0,0 +1,72 @@ |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using BWP.B3ClientService.Utils; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Text; |
|
|
|
using TSingSoft.WebPluginFramework.TimerTasks; |
|
|
|
using TSingSoft.WebPluginFramework; |
|
|
|
|
|
|
|
namespace BWP.B3ClientService.Tasks |
|
|
|
{ |
|
|
|
public class SyncCarcassInStoreToTrackBack : ITimerTask |
|
|
|
{ |
|
|
|
public void Execute() |
|
|
|
{ |
|
|
|
var url = ServerHost.GetTraceServerUrl(); |
|
|
|
if (string.IsNullOrEmpty(url)) |
|
|
|
return; |
|
|
|
url = url + "InsertInStore"; |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
var list = GetUnSyncdInfo(session); |
|
|
|
if (!list.Any()) |
|
|
|
return; |
|
|
|
var splitList = TraceBackInfoUtil.SplitList(list, 1000); |
|
|
|
foreach (var infos in splitList) |
|
|
|
{ |
|
|
|
var arr = JsonConvert.SerializeObject(infos); |
|
|
|
TraceBackInfoUtil.Insert(url, arr); |
|
|
|
} |
|
|
|
DeleteSyncd(session, list.Min(x => x.ID), list.Max(x => x.ID)); |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
List<TraceBackInStoreInfo> GetUnSyncdInfo(IDmoSession session) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(SyncCarcassInStoreLog))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Code")); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Date")); |
|
|
|
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID")); |
|
|
|
var list = query.EExecuteList<long, string, string>(session); |
|
|
|
return list.Select(x => new TraceBackInStoreInfo { ID = x.Item1, Code = x.Item2, InStoreDate = x.Item3 }).ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
void DeleteSyncd(IDmoSession session, long min, long max) |
|
|
|
{ |
|
|
|
var delete = new DQDeleteDom(typeof(SyncCarcassInStoreLog)); |
|
|
|
delete.Where.Conditions.Add(DQCondition.Between("ID", min, max)); |
|
|
|
session.ExecuteNonQuery(delete); |
|
|
|
} |
|
|
|
|
|
|
|
public string Name |
|
|
|
{ |
|
|
|
get { return "抽取白条入库信息到追溯服务器"; } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
class TraceBackInStoreInfo |
|
|
|
{ |
|
|
|
[JsonIgnore] |
|
|
|
public long ID { get; set; } |
|
|
|
//[LogicName("条码")]
|
|
|
|
public string Code { get; set; } |
|
|
|
|
|
|
|
public string InStoreDate { get; set; } |
|
|
|
} |
|
|
|
} |