|
|
|
@ -1,9 +1,11 @@ |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using BWP.B3Frameworks.BO; |
|
|
|
using BWP.B3Frameworks.Utils; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery; |
|
|
|
using Forks.EnterpriseServices.JsonRpc; |
|
|
|
using Forks.EnterpriseServices.SqlDoms; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
@ -17,9 +19,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
[Rpc] |
|
|
|
public static class SecondOrderRpc |
|
|
|
{ |
|
|
|
static JavaScriptSerializer serializer = new JavaScriptSerializer(); |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
[Rpc(RpcFlags.SkipAuth)] |
|
|
|
public static string SyncSecondOrder(DateTime date) |
|
|
|
{ |
|
|
|
var main = new JoinAlias(typeof(OrderDetail)); |
|
|
|
@ -55,36 +55,46 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return serializer.Serialize(list); |
|
|
|
return JsonConvert.SerializeObject(list); |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
[Rpc(RpcFlags.SkipAuth)] |
|
|
|
public static long InsertDetail(string json, string mainJson, long orderDetailID) |
|
|
|
{ |
|
|
|
json = json.ESerializeDateTime(); |
|
|
|
var detail = serializer.Deserialize<SecondOrder_Detail>(json); |
|
|
|
|
|
|
|
var detail = JsonConvert.DeserializeObject<SecondOrder_Detail>(json); |
|
|
|
detail.Time = DateTime.Now; |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
CheckOrderDelete(session, orderDetailID); |
|
|
|
if (detail.SecondOrder_ID == 0) |
|
|
|
{ |
|
|
|
mainJson = mainJson.ESerializeDateTime(); |
|
|
|
var entity = serializer.Deserialize<SecondOrder>(mainJson); |
|
|
|
var entity = JsonConvert.DeserializeObject<SecondOrder>(mainJson); |
|
|
|
entity.ModifyTime = DateTime.Now; |
|
|
|
entity.HotFadeNumber = detail.Number; |
|
|
|
entity.IsOk = true; |
|
|
|
session.Insert(entity); |
|
|
|
detail.SecondOrder_ID = entity.ID; |
|
|
|
UpdateOrInsert(session, detail); |
|
|
|
UpdateOrderDetailHasSecondarySplit(session, entity.OrderDetail_ID); |
|
|
|
} |
|
|
|
else |
|
|
|
UpdateMainNumber(session, detail.SecondOrder_ID, detail.Number); |
|
|
|
session.Insert(detail); |
|
|
|
{ |
|
|
|
UpdateOrInsert(session, detail); |
|
|
|
UpdateMainNumber(session, detail.SecondOrder_ID); |
|
|
|
} |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return detail.SecondOrder_ID; |
|
|
|
} |
|
|
|
|
|
|
|
static void UpdateOrInsert<T>(IDmoSession session, T entity) where T : Base |
|
|
|
{ |
|
|
|
if (entity.ID == 0) |
|
|
|
session.Insert(entity); |
|
|
|
else |
|
|
|
session.Update(entity); |
|
|
|
} |
|
|
|
|
|
|
|
static void UpdateOrderDetailHasSecondarySplit(IDmoSession session, long id) |
|
|
|
{ |
|
|
|
var update = new DQUpdateDom(typeof(OrderDetail)); |
|
|
|
@ -93,7 +103,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
session.ExecuteNonQuery(update); |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
[Rpc(RpcFlags.SkipAuth)] |
|
|
|
public static int DeleteDetail(long id, long mainID, int number) |
|
|
|
{ |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
@ -101,24 +111,34 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
var delete = new DQDeleteDom(typeof(SecondOrder_Detail)); |
|
|
|
delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); |
|
|
|
session.ExecuteNonQuery(delete); |
|
|
|
UpdateMainNumber(session, mainID, -number); |
|
|
|
UpdateMainNumber(session, mainID); |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
static void UpdateMainNumber(IDmoSession session, long id, int number) |
|
|
|
static void UpdateMainNumber(IDmoSession session, long id) |
|
|
|
{ |
|
|
|
var number = GetHotFadeNumber(session, id); |
|
|
|
|
|
|
|
var update = new DQUpdateDom(typeof(SecondOrder)); |
|
|
|
update.Where.Conditions.Add(DQCondition.EQ("ID", id)); |
|
|
|
update.Columns.Add(new DQUpdateColumn("Sync", false)); |
|
|
|
update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); |
|
|
|
update.Columns.Add(new DQUpdateColumn("RowVersion", DQExpression.Add(DQExpression.Field("RowVersion"), DQExpression.Value(1)))); |
|
|
|
update.Columns.Add(new DQUpdateColumn("HotFadeNumber", DQExpression.Add(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); |
|
|
|
update.Columns.Add(new DQUpdateColumn("HotFadeNumber", number)); |
|
|
|
session.ExecuteNonQuery(update); |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
static int GetHotFadeNumber(IDmoSession session,long secondOrderID) |
|
|
|
{ |
|
|
|
var query = new DQueryDom(new JoinAlias(typeof(SecondOrder_Detail))); |
|
|
|
query.Columns.Add(DQSelectColumn.Sum("Number")); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("SecondOrder_ID", secondOrderID)); |
|
|
|
return query.EExecuteScalar<int?>(session) ?? 0; |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc(RpcFlags.SkipAuth)] |
|
|
|
public static long SetFinish(long id, long orderDetailID, string json) |
|
|
|
{ |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
@ -126,7 +146,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
CheckOrderDelete(session, orderDetailID); |
|
|
|
if (id == 0) |
|
|
|
{ |
|
|
|
var entity = serializer.Deserialize<SecondOrder>(json); |
|
|
|
var entity = JsonConvert.DeserializeObject<SecondOrder>(json); |
|
|
|
entity.ModifyTime = DateTime.Now; |
|
|
|
entity.IsOk = true; |
|
|
|
entity.Finish = true; |
|
|
|
@ -148,14 +168,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return id; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
[Rpc(RpcFlags.SkipAuth)] |
|
|
|
public static string GetSecondOrderDetails(long id) |
|
|
|
{ |
|
|
|
var query = new DmoQuery(typeof(SecondOrder_Detail)); |
|
|
|
query.Where.Conditions.Add(DQCondition.EQ("SecondOrder_ID", id)); |
|
|
|
return serializer.Serialize(query.EExecuteList().Cast<SecondOrder_Detail>().ToList()); |
|
|
|
return JsonConvert.SerializeObject(query.EExecuteList().Cast<SecondOrder_Detail>().ToList()); |
|
|
|
} |
|
|
|
|
|
|
|
static void CheckOrderDelete(IDmoSession session, long id) |
|
|
|
|