|
|
|
@ -0,0 +1,138 @@ |
|
|
|
using BWP.B3ClientService.BO; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2; |
|
|
|
using Forks.EnterpriseServices.DomainObjects2.DQuery; |
|
|
|
using Forks.EnterpriseServices.JsonRpc; |
|
|
|
using Forks.EnterpriseServices.SqlDoms; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Text; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using System.Web.Script.Serialization; |
|
|
|
using TSingSoft.WebPluginFramework; |
|
|
|
|
|
|
|
namespace BWP.B3ClientService.Rpcs.BillRpc |
|
|
|
{ |
|
|
|
[Rpc] |
|
|
|
public static class SecondOrderRpc |
|
|
|
{ |
|
|
|
static JavaScriptSerializer serializer = new JavaScriptSerializer(); |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static string SyncSecondOrder(DateTime date) |
|
|
|
{ |
|
|
|
var main = new JoinAlias(typeof(OrderDetail)); |
|
|
|
var detail = new JoinAlias(typeof(SecondOrder)); |
|
|
|
var query = new DQueryDom(main); |
|
|
|
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "OrderDetail_ID")); |
|
|
|
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("Date", date))); |
|
|
|
query.Where.Conditions.Add(DQCondition.Or(DQCondition.IsNull(DQExpression.Field(detail, "FinishGrade")), DQCondition.EQ(detail, "FinishGrade", false))); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID", main)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("ID", detail)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("Order", main)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("PlanNumber", main)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("HotFadeNumber", detail)); |
|
|
|
query.Columns.Add(DQSelectColumn.Field("IsOk", detail)); |
|
|
|
var list = new List<SecondOrder>(); |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
using (var reader = session.ExecuteReader(query)) |
|
|
|
{ |
|
|
|
while (reader.Read()) |
|
|
|
{ |
|
|
|
var item = new SecondOrder(); |
|
|
|
list.Add(item); |
|
|
|
item.OrderDetail_ID = (long)reader[0]; |
|
|
|
item.ID = (long?)reader[1] ?? 0; |
|
|
|
item.Order = (int)reader[2]; |
|
|
|
item.PlanNumber = (int)reader[3]; |
|
|
|
item.HotFadeNumber = (int?)reader[4] ?? 0; |
|
|
|
item.IsOk = (bool?)reader[5] ?? false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return serializer.Serialize(list); |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static long InsertDetail(string json, string mainJson) |
|
|
|
{ |
|
|
|
var detail = serializer.Deserialize<SecondOrder_Detail>(json); |
|
|
|
|
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
if (detail.SecondOrder_ID == 0) |
|
|
|
{ |
|
|
|
var entity = serializer.Deserialize<SecondOrder>(mainJson); |
|
|
|
entity.ModifyTime = DateTime.Now; |
|
|
|
session.Insert(entity); |
|
|
|
detail.SecondOrder_ID = entity.ID; |
|
|
|
} |
|
|
|
else |
|
|
|
UpdateMainNumber(session, detail.SecondOrder_ID, detail.Number); |
|
|
|
session.Insert(detail); |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return detail.SecondOrder_ID; |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static int DetailDetail(long id, long mainID, int number) |
|
|
|
{ |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
var delete = new DQDeleteDom(typeof(SecondOrder_Detail)); |
|
|
|
delete.Where.Conditions.Add(DQCondition.EQ("ID", id)); |
|
|
|
session.ExecuteNonQuery(delete); |
|
|
|
UpdateMainNumber(session, mainID, -number); |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
static void UpdateMainNumber(IDmoSession session, long id, int number) |
|
|
|
{ |
|
|
|
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("HotFadeNumber", DQExpression.Add(DQExpression.Field("HotFadeNumber"), DQExpression.Value(number)))); |
|
|
|
session.ExecuteNonQuery(update); |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
public static long SetOk(long id, string json) |
|
|
|
{ |
|
|
|
using (var session = Dmo.NewSession()) |
|
|
|
{ |
|
|
|
if (id == 0) |
|
|
|
{ |
|
|
|
var entity = serializer.Deserialize<SecondOrder>(json); |
|
|
|
entity.ModifyTime = DateTime.Now; |
|
|
|
entity.IsOk = true; |
|
|
|
session.Insert(entity); |
|
|
|
id = entity.ID; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
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("IsOk", true)); |
|
|
|
session.ExecuteNonQuery(update); |
|
|
|
} |
|
|
|
session.Commit(); |
|
|
|
} |
|
|
|
return id; |
|
|
|
} |
|
|
|
|
|
|
|
[Rpc] |
|
|
|
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()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |