Browse Source

修改。

master
yibo 8 years ago
parent
commit
4ca8e8269b
7 changed files with 328 additions and 5 deletions
  1. +3
    -0
      B3ClientService/B3ClientService.csproj
  2. +9
    -4
      B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs
  3. +2
    -0
      B3ClientService/BO/Bill/WeightBill/WeightBill.cs
  4. +42
    -0
      B3ClientService/CTuple.cs
  5. +25
    -0
      B3ClientService/RpcBO/Bill/OrderDetail/NeedOrderEntity.cs
  6. +239
    -0
      B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs
  7. +8
    -1
      B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs

+ 3
- 0
B3ClientService/B3ClientService.csproj View File

@ -89,6 +89,8 @@
<Compile Include="BO\SyncBO\MinEmployee.cs" /> <Compile Include="BO\SyncBO\MinEmployee.cs" />
<Compile Include="BO\SyncBO\MinWPF_User.cs" /> <Compile Include="BO\SyncBO\MinWPF_User.cs" />
<Compile Include="BO\ServerHost.cs" /> <Compile Include="BO\ServerHost.cs" />
<Compile Include="CTuple.cs" />
<Compile Include="RpcBO\Bill\OrderDetail\NeedOrderEntity.cs" />
<Compile Include="RpcBO\Bill\WeightBill\RpcWeightBill.cs" /> <Compile Include="RpcBO\Bill\WeightBill\RpcWeightBill.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="RpcBO\Bill\WeightBill\SWeightBill_Detail.cs" /> <Compile Include="RpcBO\Bill\WeightBill\SWeightBill_Detail.cs" />
@ -97,6 +99,7 @@
<Compile Include="RpcBO\Bill\WeightBill\SWeightBill_SanctionDetail.cs" /> <Compile Include="RpcBO\Bill\WeightBill\SWeightBill_SanctionDetail.cs" />
<Compile Include="Rpcs\BackRpcObj.cs" /> <Compile Include="Rpcs\BackRpcObj.cs" />
<Compile Include="Rpcs\BaseInfoRpc.cs" /> <Compile Include="Rpcs\BaseInfoRpc.cs" />
<Compile Include="Rpcs\BillRpc\OrderDetailRpc.cs" />
<Compile Include="Rpcs\BillRpc\WeightBillRpc.cs" /> <Compile Include="Rpcs\BillRpc\WeightBillRpc.cs" />
<Compile Include="Rpcs\ButcherOrderRpc.cs" /> <Compile Include="Rpcs\ButcherOrderRpc.cs" />
<Compile Include="Rpcs\UserInfoRpc.cs" /> <Compile Include="Rpcs\UserInfoRpc.cs" />


+ 9
- 4
B3ClientService/BO/Bill/OrderDetail/OrderDetail.cs View File

@ -1,4 +1,5 @@
using System;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -15,15 +16,19 @@ namespace BWP.B3ClientService.BO
public long? B3MainID { get; set; } 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 Order { get; set; }
public int PlanNumber { 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; } public string LiveColonyHouse_Name { get; set; }


+ 2
- 0
B3ClientService/BO/Bill/WeightBill/WeightBill.cs View File

@ -98,5 +98,7 @@ namespace BWP.B3ClientService.BO
[OneToMany(typeof(WeightBill_SanctionDetail), "ID")] [OneToMany(typeof(WeightBill_SanctionDetail), "ID")]
[Join("ID", "WeightBill_ID")] [Join("ID", "WeightBill_ID")]
public WeightBill_SanctionDetailCollection SanctionDetails { get { return mSanctionDetails; } } public WeightBill_SanctionDetailCollection SanctionDetails { get { return mSanctionDetails; } }
public string HouseNames { get; set; }
} }
} }

+ 42
- 0
B3ClientService/CTuple.cs View File

@ -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<T1, T2>
{
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<T1, T2, T3>
{
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;
}
}
}

+ 25
- 0
B3ClientService/RpcBO/Bill/OrderDetail/NeedOrderEntity.cs View File

@ -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; }
}
}

+ 239
- 0
B3ClientService/Rpcs/BillRpc/OrderDetailRpc.cs View File

@ -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<NeedOrderEntity>();
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<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);
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<OrderDetail>();
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<int?>() ?? 1;
}
[Rpc]
public static long Insert(string update, string insert)
{
var list = serializer.Deserialize<List<CTuple<long, int>>>(update);
var entity = serializer.Deserialize<OrderDetail>(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<List<CTuple<long, int>>>(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;
}
}
}

+ 8
- 1
B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs View File

@ -64,12 +64,13 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
static void FillServerUpdateFields(IDmoSession session, WeightBill dmo) static void FillServerUpdateFields(IDmoSession session, WeightBill dmo)
{ {
var min = InnerBLUtil.GetSingleDmo<WeightBill>(session, "ID", dmo.ID, "B3ID", "DeleteState", "AlreadyHouse", "Inspector_ID", "Inspector_Name");
var min = InnerBLUtil.GetSingleDmo<WeightBill>(session, "ID", dmo.ID, "B3ID", "DeleteState", "AlreadyHouse", "Inspector_ID", "Inspector_Name", "HouseNames");
dmo.B3ID = min.B3ID; dmo.B3ID = min.B3ID;
dmo.DeleteState = min.DeleteState; dmo.DeleteState = min.DeleteState;
dmo.AlreadyHouse = min.AlreadyHouse; dmo.AlreadyHouse = min.AlreadyHouse;
dmo.Inspector_ID = min.Inspector_ID; dmo.Inspector_ID = min.Inspector_ID;
dmo.Inspector_Name = min.Inspector_Name; dmo.Inspector_Name = min.Inspector_Name;
dmo.HouseNames = min.HouseNames;
dmo.Sync = false; dmo.Sync = false;
dmo.ModifyTime = DateTime.Now; dmo.ModifyTime = DateTime.Now;
} }
@ -204,6 +205,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{ {
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
//因为传过来的明细是不带ID的。
var houseDetail = GetList<WeightBill_HouseDetail>(new Tuple<string, object>("WeightBill_ID", bo.ID), new Tuple<string, object>("DeleteState", false)); var houseDetail = GetList<WeightBill_HouseDetail>(new Tuple<string, object>("WeightBill_ID", bo.ID), new Tuple<string, object>("DeleteState", false));
foreach (var item in bo.HouseDetails) foreach (var item in bo.HouseDetails)
@ -215,10 +217,14 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
first.Index = item.Index; first.Index = item.Index;
} }
var delete = new List<long>(); var delete = new List<long>();
var houseNames = new List<string>();
foreach (var item in houseDetail) foreach (var item in houseDetail)
{ {
if (bo.HouseDetails.Any(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID)) if (bo.HouseDetails.Any(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID))
{
UpdateOrInsertHouseDetail(session, item); UpdateOrInsertHouseDetail(session, item);
houseNames.Add(item.LiveColonyHouse_Name);
}
else else
delete.Add(item.LiveColonyHouse_ID ?? 0); 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("HogGrade_Name", bo.HogGrade_Name));
update.Columns.Add(new DQUpdateColumn("Inspector_ID", bo.Inspector_ID)); 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("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("AlreadyHouse", true));
update.Columns.Add(new DQUpdateColumn("Sync", false)); update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now)); update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now));


Loading…
Cancel
Save