Browse Source

修改。

master
yibo 8 years ago
parent
commit
9883f3fbcd
3 changed files with 59 additions and 118 deletions
  1. +8
    -49
      B3ClientService/Rpcs/BillRpc/HouseAndSanctionRpc.cs
  2. +42
    -68
      B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs
  3. +9
    -1
      B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs

+ 8
- 49
B3ClientService/Rpcs/BillRpc/HouseAndSanctionRpc.cs View File

@ -20,31 +20,20 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{ {
static JavaScriptSerializer serializer = new JavaScriptSerializer(); static JavaScriptSerializer serializer = new JavaScriptSerializer();
/*
* //原型
SELECT w2.id, w1.* FROM B3ClientService_WeightBill w1, (  
SELECT TOP 100 row_number() OVER (order by (case when Remark is null or Remark='' then 0 else 1 end),ID) n, ID FROM B3ClientService_WeightBill ) w2 WHERE w1.ID = w2.ID AND w2.n > 90 ORDER BY w2.n ASC
*/
[Rpc] [Rpc]
public static string GetHouseAndSanctionList(DateTime date, int pageSize, int pageNumber)
public static string GetHouseAndSanctionList(DateTime date)
{ {
var temp = new JoinAlias(typeof(OrderTemp));
var query = new DQueryDom(temp);
OrderTemp.Register(query, date, pageSize * pageNumber);
var main = new JoinAlias(typeof(WeightBill)); var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_Detail)); var detail = new JoinAlias(typeof(WeightBill_Detail));
query.From.AddJoin(JoinType.Left, new DQDmoSource(main), DQCondition.EQ(temp, "ID", main, "ID"));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ(main, "ID", detail, "WeightBill_ID"))); query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ(main, "ID", detail, "WeightBill_ID")));
query.Columns.Add(DQSelectColumn.Field("ID", main));
query.Columns.Add(DQSelectColumn.Field("B3ID", main));
query.Columns.Add(DQSelectColumn.Field("Employee_Name", main));
query.Columns.Add(DQSelectColumn.Field("Supplier_Name", main));
query.Columns.Add(DQSelectColumn.Field("HouseNames", main));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("B3ID"));
query.Columns.Add(DQSelectColumn.Field("Employee_Name"));
query.Columns.Add(DQSelectColumn.Field("Supplier_Name"));
query.Columns.Add(DQSelectColumn.Field("HouseNames"));
query.Columns.Add(DQSelectColumn.Field("Number", detail)); query.Columns.Add(DQSelectColumn.Field("Number", detail));
query.Where.Conditions.Add(DQCondition.GreaterThan(temp, "RowNumber", pageSize * (pageNumber - 1)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
var list = new List<HouseAndSanctionList>(); var list = new List<HouseAndSanctionList>();
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
@ -66,36 +55,6 @@ SELECT TOP 100 row_number() OVER (order by (case when Remark is null or Remark='
return serializer.Serialize(list); return serializer.Serialize(list);
} }
class OrderTemp
{
public int RowNumber { get; set; }
public long ID { get; set; }
public static void Register(DQueryDom root, DateTime date, int total)
{
var query = new DQueryDom(new JoinAlias("_pageTemp", typeof(WeightBill)));
query.Range = SelectRange.Top(total);
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("row_number() OVER (order by (case when [_pageTemp].[HouseNames] is null or [_pageTemp].[HouseNames]='' then 0 else 1 end),[_pageTemp].[ID])"), "RowNumber"));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
root.RegisterQueryTable(typeof(OrderTemp), new string[] { "RowNumber", "ID" }, query);
}
}
[Rpc]
public static int GetMaxPageNumber(DateTime date, int pageSize)
{
var query = new DQueryDom(new JoinAlias(typeof(WeightBill)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
query.Columns.Add(DQSelectColumn.Count());
var total = Convert.ToInt32(query.EExecuteScalar());
var maxPageSize = total / pageSize;
if (total % pageSize != 0)
maxPageSize += 1;
return maxPageSize;
}
[Rpc] [Rpc]
public static int GetDetailTotalNumber(DateTime date) public static int GetDetailTotalNumber(DateTime date)
{ {


+ 42
- 68
B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs View File

@ -1,5 +1,6 @@
using BWP.B3ClientService.BO; using BWP.B3ClientService.BO;
using BWP.B3ClientService.RpcBO; using BWP.B3ClientService.RpcBO;
using BWP.B3Frameworks.Utils;
using Forks.EnterpriseServices.DomainObjects2; using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery; using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc; using Forks.EnterpriseServices.JsonRpc;
@ -111,23 +112,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
} }
[Rpc] [Rpc]
public static string GetBackWeightBillInfo(long weightID, long backId)
public static int GetLastNumber(long weightID, long backId)
{ {
var query = new DQueryDom(new JoinAlias(typeof(WeightBill)));
query.Columns.Add(DQSelectColumn.Field("Supplier_Name"));
query.Columns.Add(DQSelectColumn.Field("HouseNames"));
query.Columns.Add(DQSelectColumn.Field("WeighTime"));
query.Where.Conditions.Add(DQCondition.EQ("ID", weightID));
var result = query.EExecuteScalar<string, string, DateTime>();
var entity = new NeedOrderEntity();
entity.WeightBill_ID = weightID;
entity.Supplier_Name = result.Item1;
entity.HouseNames = result.Item2;
entity.WeighTime = result.Item3;
entity.Number = GetWeightNumber(weightID);
entity.AlreadyNumber = GetAlreadyNumberWithoutBack(weightID, backId);
var totalNumber = GetWeightNumber(weightID);
var alreadyNumber = GetAlreadyNumberWithoutBack(weightID, backId);
return serializer.Serialize(entity);
return totalNumber - alreadyNumber;
} }
static int GetWeightNumber(long wid) static int GetWeightNumber(long wid)
@ -141,10 +131,10 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
return 0; return 0;
} }
static int GetAlreadyNumberWithoutBack(long wid, long bid)
static int GetAlreadyNumberWithoutBack(long wid, long oid)
{ {
var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); var query = new DQueryDom(new JoinAlias(typeof(OrderDetail)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", wid), DQCondition.InEQ("ID", bid)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", wid), DQCondition.InEQ("ID", oid)));
query.Columns.Add(DQSelectColumn.Sum("PlanNumber")); query.Columns.Add(DQSelectColumn.Sum("PlanNumber"));
var rst = query.EExecuteScalar(); var rst = query.EExecuteScalar();
if (rst != null) if (rst != null)
@ -153,21 +143,19 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
} }
[Rpc] [Rpc]
public static string GetOrderDetail(DateTime date, int pageSize, int pageNumber)
public static string GetOrderDetail(DateTime date, int? minOrder)
{ {
var temp = new JoinAlias(typeof(OrderTemp));
var query = new DQueryDom(temp);
OrderTemp.Register(query, date, pageSize * pageNumber);
var alias = new JoinAlias(typeof(OrderDetail));
query.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(temp, "ID", alias, "ID"));
query.Columns.Add(DQSelectColumn.Field("ID", alias));
query.Columns.Add(DQSelectColumn.Field("WeightBill_ID", alias));
query.Columns.Add(DQSelectColumn.Field("Order", alias));
query.Columns.Add(DQSelectColumn.Field("PlanNumber", alias));
query.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name", alias));
query.Columns.Add(DQSelectColumn.Field("IsHurryButcher", alias));
query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID", alias));
query.Where.Conditions.Add(DQCondition.GreaterThan(temp, "RowNumber", pageSize * (pageNumber - 1)));
var query = new DQueryDom(new JoinAlias(typeof(OrderDetail)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
query.Columns.Add(DQSelectColumn.Field("Order"));
query.Columns.Add(DQSelectColumn.Field("PlanNumber"));
query.Columns.Add(DQSelectColumn.Field("LiveColonyHouse_Name"));
query.Columns.Add(DQSelectColumn.Field("IsHurryButcher"));
query.Columns.Add(DQSelectColumn.Field("B3WeighBill_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false)));
if (minOrder.HasValue)
query.Where.Conditions.Add(DQCondition.GreaterThanOrEqual("Order", minOrder));
var list = new List<OrderDetail>(); var list = new List<OrderDetail>();
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
@ -190,56 +178,33 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
return serializer.Serialize(list); return serializer.Serialize(list);
} }
class OrderTemp
{
public int RowNumber { get; set; }
public long ID { get; set; }
public static void Register(DQueryDom root, DateTime date, int total)
{
var query = new DQueryDom(new JoinAlias("_pageTemp", typeof(OrderDetail)));
query.Range = SelectRange.Top(total);
query.Columns.Add(DQSelectColumn.Create(DQExpression.Snippet("row_number() OVER (order by [_pageTemp].[Order] desc)"), "RowNumber"));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false)));
root.RegisterQueryTable(typeof(OrderTemp), new string[] { "RowNumber", "ID" }, query);
}
}
[Rpc] [Rpc]
public static int GetMaxPageNumber(DateTime date, int pageSize)
public static int GetMaxOrder(DateTime date)
{ {
var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); var query = new DQueryDom(new JoinAlias(typeof(OrderDetail)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false)));
query.Columns.Add(DQSelectColumn.Count());
var total = Convert.ToInt32(query.EExecuteScalar());
var maxPageSize = total / pageSize;
if (total % pageSize != 0)
maxPageSize += 1;
return maxPageSize;
query.Columns.Add(DQSelectColumn.Max("Order"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("Date", date.Date, date.Date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
return query.EExecuteScalar<int?>() ?? 0;
} }
[Rpc] [Rpc]
public static int GetMaxOrder(DateTime date)
public static int GetCurrentOrder(long id)
{ {
var query = new DQueryDom(new JoinAlias(typeof(OrderDetail))); var query = new DQueryDom(new JoinAlias(typeof(OrderDetail)));
query.Columns.Add(DQSelectColumn.Max("Order"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("Date", date.Date, date.Date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
return query.EExecuteScalar<int?>() ?? 0;
query.Columns.Add(DQSelectColumn.Field("Order"));
query.Where.Conditions.Add(DQCondition.EQ("ID", id));
return query.EExecuteScalar<int>();
} }
[Rpc] [Rpc]
public static long Insert(string update, string insert)
public static long Insert(string insert)
{ {
var list = serializer.Deserialize<List<CTuple<long, int>>>(update);
insert = insert.ESerializeDateTime(); insert = insert.ESerializeDateTime();
var entity = serializer.Deserialize<OrderDetail>(insert); var entity = serializer.Deserialize<OrderDetail>(insert);
entity.ModifyTime = DateTime.Now; entity.ModifyTime = DateTime.Now;
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
foreach (var item in list)
UpdateOrderDetailPartial(session, item.Item1, "Order", item.Item2);
UpdateOrder(session, entity.Order - 1, 1, entity.Date);
session.Insert(entity); session.Insert(entity);
session.Commit(); session.Commit();
} }
@ -268,13 +233,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
} }
[Rpc] [Rpc]
public static int Delete(string update, long id)
public static int Delete(long id)
{ {
var list = serializer.Deserialize<List<CTuple<long, int>>>(update);
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
foreach (var item in list)
UpdateOrderDetailPartial(session, item.Item1, "Order", item.Item2);
var entity = InnerBLUtil.GetSingleDmo<OrderDetail>(session, "ID", id, "Order", "Date");
UpdateOrder(session, entity.Order, -1, entity.Date);
UpdateOrderDetailPartial(session, id, "DeleteState", true); UpdateOrderDetailPartial(session, id, "DeleteState", true);
session.Commit(); session.Commit();
} }
@ -294,5 +258,15 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
} }
return 1; return 1;
} }
static void UpdateOrder(IDmoSession session, int greaterThanOrder, int offset, DateTime? date)
{
var update = new DQUpdateDom(typeof(OrderDetail));
update.Columns.Add(new DQUpdateColumn("Order", DQExpression.Add(DQExpression.Field("Order"), DQExpression.Value(offset))));
update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now));
update.Where.Conditions.Add(DQCondition.And(DQCondition.GreaterThan("Order", greaterThanOrder), DQCondition.EQ("Date", date), DQCondition.EQ("DeleteState", false), DQCondition.EQ("SecondarySplit", false)));
session.ExecuteNonQuery(update);
}
} }
} }

+ 9
- 1
B3ClientService/Tasks/UpdateLoad/UploadOrderDetail.cs View File

@ -68,6 +68,7 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad
{ {
Update(item, context.Session); Update(item, context.Session);
} }
SetAllItemAsSync(context.Session, group.Select(x => DQExpression.Value(x.ID)));
#endregion #endregion
context.Commit(); context.Commit();
@ -104,9 +105,16 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad
var update = new DQUpdateDom(typeof(OrderDetail)); var update = new DQUpdateDom(typeof(OrderDetail));
update.Columns.Add(new DQUpdateColumn("B3ID", item.Item2)); update.Columns.Add(new DQUpdateColumn("B3ID", item.Item2));
update.Columns.Add(new DQUpdateColumn("B3MainID", item.Item3)); update.Columns.Add(new DQUpdateColumn("B3MainID", item.Item3));
update.Columns.Add(new DQUpdateColumn("Sync", true));
update.Where.Conditions.Add(DQCondition.EQ("ID", item.Item1)); update.Where.Conditions.Add(DQCondition.EQ("ID", item.Item1));
session.ExecuteNonQuery(update); session.ExecuteNonQuery(update);
} }
static void SetAllItemAsSync(IDmoSession session, IEnumerable<IDQExpression> ids)
{
var update = new DQUpdateDom(typeof(OrderDetail));
update.Columns.Add(new DQUpdateColumn("Sync", true));
update.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("ID"), ids.ToArray()));
session.ExecuteNonQuery(update);
}
} }
} }

Loading…
Cancel
Save