diff --git a/B3ClientService/B3ClientService.csproj b/B3ClientService/B3ClientService.csproj
index f4c5952..694674c 100644
--- a/B3ClientService/B3ClientService.csproj
+++ b/B3ClientService/B3ClientService.csproj
@@ -89,6 +89,8 @@
+
+
@@ -97,6 +99,7 @@
+
diff --git a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs
index c55ba3f..425185e 100644
--- a/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs
+++ b/B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs
@@ -1,4 +1,5 @@
-using System;
+using Forks.EnterpriseServices.DomainObjects2;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -15,15 +16,19 @@ namespace BWP.B3ClientService.BO
public long? B3MainID { get; set; }
- public long WeighBill_ID { get; set; }
+ public long WeightBill_ID { get; set; }
+
+ [ReferenceTo(typeof(WeightBill), "B3ID")]
+ [Join("WeighBill_ID", "ID")]
+ public long? B3WeighBill_ID { get; set; }
public int Order { get; set; }
public int PlanNumber { get; set; }
- public int? HotFadeNumber { get; set; }
+ //public int? HotFadeNumber { get; set; }
- public int? PeelingNumber { get; set; }
+ //public int? PeelingNumber { get; set; }
public string LiveColonyHouse_Name { get; set; }
diff --git a/B3ClientService/BO/Bill/WeightBill/WeightBill.cs b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs
index 8c685bb..8bbda6e 100644
--- a/B3ClientService/BO/Bill/WeightBill/WeightBill.cs
+++ b/B3ClientService/BO/Bill/WeightBill/WeightBill.cs
@@ -98,5 +98,7 @@ namespace BWP.B3ClientService.BO
[OneToMany(typeof(WeightBill_SanctionDetail), "ID")]
[Join("ID", "WeightBill_ID")]
public WeightBill_SanctionDetailCollection SanctionDetails { get { return mSanctionDetails; } }
+
+ public string HouseNames { get; set; }
}
}
diff --git a/B3ClientService/CTuple.cs b/B3ClientService/CTuple.cs
new file mode 100644
index 0000000..be1ce1a
--- /dev/null
+++ b/B3ClientService/CTuple.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BWP.B3ClientService
+{
+ public class CTuple
+ {
+ public T1 Item1 { get; set; }
+
+ public T2 Item2 { get; set; }
+
+ public CTuple()
+ { }
+
+ public CTuple(T1 t1, T2 t2)
+ {
+ Item1 = t1;
+ Item2 = t2;
+ }
+ }
+
+ public class CTuple
+ {
+ public T1 Item1 { get; set; }
+
+ public T2 Item2 { get; set; }
+
+ public T3 Item3 { get; set; }
+ public CTuple()
+ { }
+
+ public CTuple(T1 t1, T2 t2, T3 t3)
+ {
+ Item1 = t1;
+ Item2 = t2;
+ Item3 = t3;
+ }
+ }
+}
diff --git a/B3ClientService/RpcBO/Bill/OrderDetail/NeedOrderEntity.cs b/B3ClientService/RpcBO/Bill/OrderDetail/NeedOrderEntity.cs
new file mode 100644
index 0000000..8d3c3ef
--- /dev/null
+++ b/B3ClientService/RpcBO/Bill/OrderDetail/NeedOrderEntity.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BWP.B3ClientService.RpcBO
+{
+ public class NeedOrderEntity
+ {
+ public long? B3ID { get; set; }
+
+ public long WeightBill_ID { get; set; }
+
+ public string Supplier_Name { get; set; }
+
+ public string HouseNames { get; set; }
+
+ public int Number { get; set; }
+
+ public int AlreadyNumber { get; set; }
+
+ public DateTime WeighTime { get; set; }
+ }
+}
diff --git a/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs
new file mode 100644
index 0000000..a8a532f
--- /dev/null
+++ b/B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs
@@ -0,0 +1,239 @@
+using BWP.B3ClientService.BO;
+using BWP.B3ClientService.RpcBO;
+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 OrderDetailRpc
+ {
+ static JavaScriptSerializer serializer = new JavaScriptSerializer();
+
+ [Rpc]
+ public static string GetNeedOrderWeightBill(DateTime date)
+ {
+ var main = new JoinAlias(typeof(WeightBill));
+ var query = new DQueryDom(main);
+ var detail = WeightDetailTemp.Register(query, main);
+ var already = OrderDetailTemp.Register(query, main);
+ query.Columns.Add(DQSelectColumn.Field("ID"));
+ 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", already));
+ query.Columns.Add(DQSelectColumn.Field("WeighTime"));
+ query.Columns.Add(DQSelectColumn.Field("B3ID"));
+ query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29)), DQCondition.InEQ("HouseNames", "")));
+ query.Where.Conditions.Add(DQCondition.InEQ(DQExpression.IfNull(DQExpression.Field(detail, "Number"), DQExpression.Value(0)), DQExpression.IfNull(DQExpression.Field(already, "Number"), DQExpression.Value(0))));
+ var result = new List();
+ using (var session = Dmo.NewSession())
+ {
+ using (var reader = session.ExecuteReader(query))
+ {
+ while (reader.Read())
+ {
+ var item = new NeedOrderEntity();
+ item.WeightBill_ID = (long)reader[0];
+ item.Supplier_Name = (string)reader[1];
+ item.HouseNames = (string)reader[2];
+ var v = reader[3];
+ if (v != null)
+ item.Number = Convert.ToInt32(v);
+ v = reader[4];
+ if (v != null)
+ item.AlreadyNumber = Convert.ToInt32(v);
+ item.WeighTime = (DateTime)reader[5];
+ item.B3ID = (long?)reader[6];
+ result.Add(item);
+ }
+ }
+ }
+ return serializer.Serialize(result);
+ }
+
+ class WeightDetailTemp
+ {
+ public long WeightBill_ID { get; set; }
+
+ public int? Number { get; set; }
+
+ public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias)
+ {
+ var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail)));
+ query.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
+ query.Columns.Add(DQSelectColumn.Sum("Number"));
+ query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID"));
+ query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false));
+ rootQuery.RegisterQueryTable(typeof(WeightDetailTemp), new string[] { "WeightBill_ID", "Number" }, query);
+
+ var alias = new JoinAlias(typeof(WeightDetailTemp));
+ rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID"));
+ return alias;
+ }
+ }
+
+ class OrderDetailTemp
+ {
+ public long WeightBill_ID { get; set; }
+
+ public int? Number { get; set; }
+
+ public static JoinAlias Register(DQueryDom rootQuery, JoinAlias rootAlias)
+ {
+ var query = new DQueryDom(new JoinAlias(typeof(OrderDetail)));
+ query.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
+ query.Columns.Add(DQSelectColumn.Sum("PlanNumber"));
+ query.GroupBy.Expressions.Add(DQExpression.Field("WeightBill_ID"));
+ query.Where.Conditions.Add(DQCondition.EQ("DeleteState", false));
+ rootQuery.RegisterQueryTable(typeof(OrderDetailTemp), new string[] { "WeightBill_ID", "Number" }, query);
+ var alias = new JoinAlias(typeof(OrderDetailTemp));
+ rootQuery.From.AddJoin(JoinType.Left, new DQDmoSource(alias), DQCondition.EQ(rootAlias, "ID", alias, "WeightBill_ID"));
+ return alias;
+ }
+ }
+
+ [Rpc]
+ public static string GetBackWeightBillInfo(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();
+ 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);
+
+ return serializer.Serialize(entity);
+ }
+
+ static int GetWeightNumber(long wid)
+ {
+ var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail)));
+ query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", wid)));
+ query.Columns.Add(DQSelectColumn.Sum("Number"));
+ var rst = query.EExecuteScalar();
+ if (rst != null)
+ return Convert.ToInt32(rst);
+ return 0;
+ }
+
+ static int GetAlreadyNumberWithoutBack(long wid, long bid)
+ {
+ 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.Columns.Add(DQSelectColumn.Sum("PlanNumber"));
+ var rst = query.EExecuteScalar();
+ if (rst != null)
+ return Convert.ToInt32(rst);
+ return 0;
+ }
+
+ [Rpc]
+ public static string GetOrderDetail(DateTime date)
+ {
+ 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)));
+ var list = new List();
+ using (var session = Dmo.NewSession())
+ {
+ using (var reader = session.ExecuteReader(query))
+ {
+ while (reader.Read())
+ {
+ var entity = new OrderDetail();
+ entity.ID = (long)reader[0];
+ entity.WeightBill_ID = (long)reader[1];
+ entity.Order = (int)reader[2];
+ entity.PlanNumber = (int)reader[3];
+ entity.LiveColonyHouse_Name = (string)reader[4];
+ entity.IsHurryButcher = (bool)reader[5];
+ entity.B3WeighBill_ID = (long?)reader[6];
+ list.Add(entity);
+ }
+ }
+ }
+ return serializer.Serialize(list);
+ }
+
+ [Rpc]
+ public static int GetMaxOrder(DateTime date)
+ {
+ 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() ?? 1;
+ }
+
+ [Rpc]
+ public static long Insert(string update, string insert)
+ {
+ var list = serializer.Deserialize>>(update);
+ var entity = serializer.Deserialize(insert);
+ entity.ModifyTime = DateTime.Now;
+ using (var session = Dmo.NewSession())
+ {
+ foreach (var item in list)
+ UpdateOrderDetailPartial(session, item.Item1, "Order", item.Item2);
+ session.Insert(entity);
+ session.Commit();
+ }
+ return entity.ID;
+ }
+
+ static void UpdateOrderDetailPartial(IDmoSession session, long id, string property, object value)
+ {
+ var update = new DQUpdateDom(typeof(OrderDetail));
+ update.Columns.Add(new DQUpdateColumn(property, value));
+ update.Where.Conditions.Add(DQCondition.EQ("ID", id));
+ session.ExecuteNonQuery(update);
+ }
+
+ [Rpc]
+ public static int UpdateOrderProperty(long id, string property, object value)
+ {
+ using (var session = Dmo.NewSession())
+ {
+ UpdateOrderDetailPartial(session, id, property, value);
+ session.Commit();
+ }
+ return 1;
+ }
+
+ [Rpc]
+ public static int Delete(string update, long id)
+ {
+ var list = serializer.Deserialize>>(update);
+ using (var session = Dmo.NewSession())
+ {
+ foreach (var item in list)
+ UpdateOrderDetailPartial(session, item.Item1, "Order", item.Item2);
+ UpdateOrderDetailPartial(session, id, "DeleteState", true);
+ session.Commit();
+ }
+ return 1;
+ }
+ }
+}
diff --git a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs
index 1c9a50f..14c2859 100644
--- a/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs
+++ b/B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs
@@ -64,12 +64,13 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
static void FillServerUpdateFields(IDmoSession session, WeightBill dmo)
{
- var min = InnerBLUtil.GetSingleDmo(session, "ID", dmo.ID, "B3ID", "DeleteState", "AlreadyHouse", "Inspector_ID", "Inspector_Name");
+ var min = InnerBLUtil.GetSingleDmo(session, "ID", dmo.ID, "B3ID", "DeleteState", "AlreadyHouse", "Inspector_ID", "Inspector_Name", "HouseNames");
dmo.B3ID = min.B3ID;
dmo.DeleteState = min.DeleteState;
dmo.AlreadyHouse = min.AlreadyHouse;
dmo.Inspector_ID = min.Inspector_ID;
dmo.Inspector_Name = min.Inspector_Name;
+ dmo.HouseNames = min.HouseNames;
dmo.Sync = false;
dmo.ModifyTime = DateTime.Now;
}
@@ -204,6 +205,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{
using (var session = Dmo.NewSession())
{
+ //因为传过来的明细是不带ID的。
var houseDetail = GetList(new Tuple("WeightBill_ID", bo.ID), new Tuple("DeleteState", false));
foreach (var item in bo.HouseDetails)
@@ -215,10 +217,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
first.Index = item.Index;
}
var delete = new List();
+ var houseNames = new List();
foreach (var item in houseDetail)
{
if (bo.HouseDetails.Any(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID))
+ {
UpdateOrInsertHouseDetail(session, item);
+ houseNames.Add(item.LiveColonyHouse_Name);
+ }
else
delete.Add(item.LiveColonyHouse_ID ?? 0);
}
@@ -278,6 +284,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
update.Columns.Add(new DQUpdateColumn("HogGrade_Name", bo.HogGrade_Name));
update.Columns.Add(new DQUpdateColumn("Inspector_ID", bo.Inspector_ID));
update.Columns.Add(new DQUpdateColumn("Inspector_Name", bo.Inspector_Name));
+ update.Columns.Add(new DQUpdateColumn("HouseNames", string.Join(",", houseNames)));
update.Columns.Add(new DQUpdateColumn("AlreadyHouse", true));
update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now));