diff --git a/B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs b/B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs index 0d0a30c..2ef5062 100644 --- a/B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs +++ b/B3QingDaoWanFu/Tasks/SyncSaleOutStoreInfoToMES.cs @@ -16,6 +16,7 @@ using Forks.JsonRpc.Client; using Newtonsoft.Json; using BWP.B3Frameworks.BO.NamedValueTemplate; using BWP.B3ButcherManage.Utils; +using BWP.B3ButcherManage.BO; namespace BWP.B3QingDaoWanFu.Tasks { @@ -38,9 +39,42 @@ namespace BWP.B3QingDaoWanFu.Tasks } } + static bool inited = false; + bool InitRpcFacade() + { + if (!inited) + { + + var url = GetMesUrl(); + if (string.IsNullOrEmpty(url)) + return false; + try + { + RpcFacade.Init(url, "B3ClientService"); + inited = true; + } + catch (Exception ex) + { + if (ex.Message == "Can only start once") + inited = true; + else + throw; + } + } + return inited; + } + + string GetMesUrl() + { + var query = new DQueryDom(new JoinAlias(typeof(ClientConfig))); + query.Columns.Add(DQSelectColumn.Field("MesUrl")); + return query.EExecuteScalar(); + } + private void DoExecute() { - if (!ClientServerFacedRpcFacadeUtil.InitRpcFacade()) + // http://172.28.1.194:7799/B2/Rest.aspx + if (!InitRpcFacade()) return; var main = new JoinAlias(typeof(SaleOutStore)); var relate = new JoinAlias(typeof(SaleOutStoreBarCodeToMESLog)); @@ -58,13 +92,16 @@ namespace BWP.B3QingDaoWanFu.Tasks query.Columns.Add(DQSelectColumn.Field("CheckTime", main)); query.Columns.Add(DQSelectColumn.Field("Goods_Code", scan)); query.Columns.Add(DQSelectColumn.Field("Number", scan)); + query.Columns.Add(DQSelectColumn.Field("Flag", scan)); query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThanOrEqual("BillState", 单据状态.已审核), DQCondition.IsNull(DQExpression.Field(relate, "SaleOutStore_ID")), DQCondition.IsNotNull(DQExpression.Field(scan, "ID")))); query.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan(scan, "Weight", 0), DQCondition.GreaterThan(scan, "Number", 0))); + query.Where.Conditions.Add(DQCondition.InEQ(scan, "Flag", 2)); query.OrderBy.Expressions.Add(DQOrderByExpression.Create(main, "ID")); using (var session = Dmo.NewSession()) { - var list = new List(); + var carcassList = new List(); + var segmentList = new List(); var ids = new List(); using (var reader = session.ExecuteReader(query)) { @@ -73,21 +110,31 @@ namespace BWP.B3QingDaoWanFu.Tasks var id = (long)reader[0]; if (!ids.Contains(id)) ids.Add(id); - var entity = new CarcassSaleOutStoreObj(); - entity.BarCode = (string)reader[1]; - entity.Weight = (decimal?)reader[2]; - entity.ProductBatch_ID = (long?)reader[3]; - entity.Time = (DateTime?)reader[4]; - entity.SaleGoods_Code = (string)reader[5]; - entity.Number = (decimal?)reader[6]; - list.Add(entity); + var flag = (int)reader[7]; + if (flag == 0) + { + var entity = new CarcassSaleOutStoreObj(); + entity.BarCode = (string)reader[1]; + entity.Weight = (decimal?)reader[2]; + entity.ProductBatch_ID = (long?)reader[3]; + entity.Time = (DateTime?)reader[4]; + entity.SaleGoods_Code = (string)reader[5]; + entity.Number = (decimal?)reader[6]; + carcassList.Add(entity); + } + else { + var entity = new SegmentSaleOutStoreObj(); + entity.BarCode = (string)reader[1]; + entity.Time = (DateTime?)reader[4]; + segmentList.Add(entity); + } } } if (ids.Count == 0) return; - if (list.Any()) + if (carcassList.Any()) { - var slist = TraceBackInfoUtil.SplitList(list, 1000); + var slist = TraceBackInfoUtil.SplitList(carcassList, 1000); foreach (var items in slist) { var par = JsonConvert.SerializeObject(items); @@ -95,6 +142,16 @@ namespace BWP.B3QingDaoWanFu.Tasks } } + if (segmentList.Any()) + { + var slist = TraceBackInfoUtil.SplitList(segmentList, 1000); + foreach (var items in slist) + { + var par = JsonConvert.SerializeObject(items); + var json = RpcFacade.Call("/MainSystem/B3ClientService/Rpcs/SegmentSaleOutStoreRpc/UploadSegmentInfo", par); + } + } + foreach (var item in ids) session.Insert(new SaleOutStoreBarCodeToMESLog { SaleOutStore_ID = item }); @@ -117,4 +174,10 @@ namespace BWP.B3QingDaoWanFu.Tasks public long? ProductBatch_ID { get; set; } public decimal? Number { get; set; } } + + class SegmentSaleOutStoreObj + { + public string BarCode { get; set; } + public DateTime? Time { get; set; } + } } diff --git a/B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs b/B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs index 0fa6668..3daa0cc 100644 --- a/B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs +++ b/B3QingDaoWanFu/TypeIOCs/SaleOutStoreBLTypeIoc.cs @@ -126,22 +126,35 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs } } + string GetTraceBackUrl() + { + var query = new DQueryDom(new JoinAlias(typeof(ClientConfig))); + query.Columns.Add(DQSelectColumn.Field("TraceBackUrl")); + return query.EExecuteScalar(); + } + public override void Execute(QueueTaskContext context) { using (var scope = new SpecialDomainUserBLScope(DomainUser_ID)) { - var config = new B3ButcherManageOnlineConfiguration(); - if (string.IsNullOrEmpty(config.TraceBackServerUrl)) + var traceBackUrl = GetTraceBackUrl(); + if (string.IsNullOrEmpty(traceBackUrl)) return; - var url = config.TraceBackServerUrl + "InsertSaleOutStore"; + //http://172.28.1.99:7766/api/TraceBackInfo/ + //InsertSaleOutStore + //SegmentInsertSaleOutStore using (var session = Dmo.NewSession()) { var infos = GetTraceBackInfos(session, BillID); var list = TraceBackInfoUtil.SplitList(infos, 1000); foreach (var letList in list) { - var arr = JsonConvert.SerializeObject(letList); - TraceBackInfoUtil.Insert(url, arr); + foreach (var gr in letList.GroupBy(x => x.Flag)) + { + var url = traceBackUrl + (gr.Key == 0 ? "InsertSaleOutStore" : "SegmentInsertSaleOutStore"); + var arr = JsonConvert.SerializeObject(gr); + TraceBackInfoUtil.Insert(url, arr); + } } } } @@ -159,6 +172,7 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs query.Columns.Add(DQSelectColumn.Field("Car_Name", bill)); query.Columns.Add(DQSelectColumn.Field("LoadTime", bill)); query.Columns.Add(DQSelectColumn.Field("BarCode", scan)); + query.Columns.Add(DQSelectColumn.Field("Flag", scan)); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "SaleOutStore_ID", id), DQCondition.IsNotNull(DQExpression.Field(scan, "ID")))); query.Where.Conditions.Add(DQCondition.InEQ(scan, "BarCode", "")); @@ -172,6 +186,7 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs entity.CarNo = (string)reader[1]; entity.SendDate = ((DateTime)reader[2]).ToString("yyyyMMdd"); entity.Code = (string)reader[3]; + entity.Flag = (int)reader[4]; list.Add(entity); } } @@ -194,5 +209,8 @@ namespace BWP.B3QingDaoWanFu.TypeIOCs public string CarNo { get; set; } public string SendDate { get; set; } + + [JsonIgnore] + public int Flag { get; set; } } }