Browse Source

修改。

master
yibo 8 years ago
parent
commit
867d87f103
20 changed files with 731 additions and 625 deletions
  1. +4
    -0
      B3ClientService/B3ClientService.csproj
  2. +1
    -6
      B3ClientService/BO/Bill/GradeAndWeight/GradeAndWeight_Detail.cs
  3. +8
    -1
      B3ClientService/BO/Bill/GradeAndWeight/OrderGradeFinishRelate.cs
  4. +26
    -44
      B3ClientService/BO/Bill/WeightBill/WeightBill.cs
  5. +0
    -4
      B3ClientService/BO/Bill/WeightBill/WeightBill_Detail.cs
  6. +0
    -4
      B3ClientService/BO/Bill/WeightBill/WeightBill_FarmerDetail.cs
  7. +0
    -5
      B3ClientService/BO/Bill/WeightBill/WeightBill_HouseDetail.cs
  8. +0
    -4
      B3ClientService/BO/Bill/WeightBill/WeightBill_SanctionDetail.cs
  9. +0
    -5
      B3ClientService/BO/SyncBase.cs
  10. +5
    -0
      B3ClientService/BO/SyncBill.cs
  11. +32
    -0
      B3ClientService/ClientSerializerBo/WeightBill/HouseAndSanctionEdit.cs
  12. +22
    -0
      B3ClientService/ClientSerializerBo/WeightBill/HouseAndSanctionList.cs
  13. +34
    -0
      B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs
  14. +2
    -2
      B3ClientService/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs
  15. +1
    -2
      B3ClientService/Rpcs/BackRpcObj.cs
  16. +69
    -39
      B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs
  17. +227
    -0
      B3ClientService/Rpcs/BillRpc/HouseAndSanctionRpc.cs
  18. +141
    -350
      B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs
  19. +158
    -158
      B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs
  20. +1
    -1
      B3ClientService/Tasks/UpdateLoad/UploadTest.cs

+ 4
- 0
B3ClientService/B3ClientService.csproj View File

@ -94,6 +94,9 @@
<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="ClientSerializerBo\WeightBill\HouseAndSanctionEdit.cs" />
<Compile Include="ClientSerializerBo\WeightBill\HouseAndSanctionList.cs" />
<Compile Include="ClientSerializerBo\WeightBill\WeightBillList.cs" />
<Compile Include="ConvertUtil.cs" /> <Compile Include="ConvertUtil.cs" />
<Compile Include="CTuple.cs" /> <Compile Include="CTuple.cs" />
<Compile Include="RpcBO\Bill\GradeAndWeight\GradeAndWeight.cs" /> <Compile Include="RpcBO\Bill\GradeAndWeight\GradeAndWeight.cs" />
@ -108,6 +111,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\HouseAndSanctionRpc.cs" />
<Compile Include="Rpcs\BillRpc\OrderDetailRpc.cs" /> <Compile Include="Rpcs\BillRpc\OrderDetailRpc.cs" />
<Compile Include="Rpcs\BillRpc\SecondOrderRpc.cs" /> <Compile Include="Rpcs\BillRpc\SecondOrderRpc.cs" />
<Compile Include="Rpcs\BillRpc\GradeAndWeightRpc.cs" /> <Compile Include="Rpcs\BillRpc\GradeAndWeightRpc.cs" />


+ 1
- 6
B3ClientService/BO/Bill/GradeAndWeight/GradeAndWeight_Detail.cs View File

@ -11,14 +11,9 @@ namespace BWP.B3ClientService.BO
{ {
public int Index { get; set; } public int Index { get; set; }
[NonDmoProperty]
public long OrderDetail_ID { get; set; } public long OrderDetail_ID { get; set; }
[ReferenceTo(typeof(OrderDetail), "Order")]
[Join("OrderDetail_ID", "ID")]
public int? Order { get; set; }
[ReferenceTo(typeof(OrderDetail), "Date")]
[Join("OrderDetail_ID", "ID")]
public DateTime? Date { get; set; } public DateTime? Date { get; set; }
public short Technics { get; set; } public short Technics { get; set; }


+ 8
- 1
B3ClientService/BO/Bill/GradeAndWeight/OrderGradeFinishRelate.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;
@ -8,11 +9,17 @@ namespace BWP.B3ClientService.BO
{ {
[BOClass] [BOClass]
[Serializable] [Serializable]
[KeyField("OrderDetail_ID", KeyGenType.assigned)]
[KeyField("Technics", KeyGenType.assigned)]
public class OrderGradeFinishRelate public class OrderGradeFinishRelate
{ {
public long OrderDetail_ID { get; set; } public long OrderDetail_ID { get; set; }
public short Technics { get; set; } public short Technics { get; set; }
public bool Finish { get; set; }
public int Already { get; set; }
} }
} }

+ 26
- 44
B3ClientService/BO/Bill/WeightBill/WeightBill.cs View File

@ -11,6 +11,7 @@ namespace BWP.B3ClientService.BO
[Serializable] [Serializable]
public class WeightBill : SyncBill public class WeightBill : SyncBill
{ {
#region BasicFile
public long? AccountingUnit_ID { get; set; } public long? AccountingUnit_ID { get; set; }
public long? Department_ID { get; set; } public long? Department_ID { get; set; }
@ -37,30 +38,10 @@ namespace BWP.B3ClientService.BO
public string Car_Name { get; set; } public string Car_Name { get; set; }
public long? LiveVarieties_ID { get; set; }
public string LiveVarieties_Name { get; set; }
public long? HogGrade_ID { get; set; }
public string HogGrade_Name { get; set; }
public decimal? ShackWeight { get; set; } public decimal? ShackWeight { get; set; }
public decimal? ShackPrice { get; set; } public decimal? ShackPrice { get; set; }
[NonDmoProperty]
public decimal? ShackMoney
{
get
{
var v = ShackPrice * ShackWeight;
if (v.HasValue)
return decimal.Round(v.Value, 2);
return null;
}
}
public decimal? JingJianFee { get; set; } public decimal? JingJianFee { get; set; }
public decimal? DiscontMoney { get; set; } public decimal? DiscontMoney { get; set; }
@ -71,38 +52,39 @@ namespace BWP.B3ClientService.BO
public string AnimalTestMan { get; set; } public string AnimalTestMan { get; set; }
public long? Inspector_ID { get; set; }
public string Remark { get; set; }
#endregion
public string Inspector_Name { get; set; }
#region Special
//品种 打算默认 B3 过磅明细上用 其他地方不维护
public long? LiveVarieties_ID { get; set; }
public string Remark { get; set; }
public string LiveVarieties_Name { get; set; }
[DbColumn(DefaultValue = 0)]
public bool AlreadyHouse { get; set; }
//毛猪等级 验质员会填写。 B3过磅单明细上用
public long? HogGrade_ID { get; set; }
public string HogGrade_Name { get; set; }
#endregion
//[NonDmoProperty]
public int? FirstWeightNumber { get; set; }
#region 无需自身维护 便于查看
public string HouseNames { get; set; }
private WeightBill_DetailCollection mDetails = new WeightBill_DetailCollection();
[OneToMany(typeof(WeightBill_Detail), "ID")]
[Join("ID", "WeightBill_ID")]
public WeightBill_DetailCollection Details { get { return mDetails; } set { mDetails = value; } }
public int? SanctionNumber { get; set; }
private WeightBill_FarmerDetailCollection mFarmerDetails = new WeightBill_FarmerDetailCollection();
[OneToMany(typeof(WeightBill_FarmerDetail), "ID")]
[Join("ID", "WeightBill_ID")]
public WeightBill_FarmerDetailCollection FarmerDetails { get { return mFarmerDetails; } set { mFarmerDetails = value; } }
public long? Inspector_ID { get; set; }
private readonly WeightBill_HouseDetailCollection mHouseDetails = new WeightBill_HouseDetailCollection();
[OneToMany(typeof(WeightBill_HouseDetail), "ID")]
[Join("ID", "WeightBill_ID")]
public WeightBill_HouseDetailCollection HouseDetails { get { return mHouseDetails; } }
public string Inspector_Name { get; set; }
#endregion
private readonly WeightBill_SanctionDetailCollection mSanctionDetails = new WeightBill_SanctionDetailCollection();
[OneToMany(typeof(WeightBill_SanctionDetail), "ID")]
[Join("ID", "WeightBill_ID")]
public WeightBill_SanctionDetailCollection SanctionDetails { get { return mSanctionDetails; } }
#region 明细
private List<WeightBill_Detail> _details = new List<WeightBill_Detail>();
[NonDmoProperty]
public List<WeightBill_Detail> Details { get { return _details; } set { _details = value; } }
public string HouseNames { get; set; }
private List<WeightBill_FarmerDetail> _farmerDetails = new List<WeightBill_FarmerDetail>();
[NonDmoProperty]
public List<WeightBill_FarmerDetail> FarmerDetails { get { return _farmerDetails; } set { _farmerDetails = value; } }
#endregion
} }
} }

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

@ -22,8 +22,4 @@ namespace BWP.B3ClientService.BO
public decimal? Weight { get; set; } public decimal? Weight { get; set; }
} }
[Serializable]
public class WeightBill_DetailCollection : DmoCollection<WeightBill_Detail>
{ }
} }

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

@ -22,8 +22,4 @@ namespace BWP.B3ClientService.BO
public decimal? Weight { get; set; } public decimal? Weight { get; set; }
} }
[Serializable]
public class WeightBill_FarmerDetailCollection : DmoCollection<WeightBill_FarmerDetail>
{ }
} }

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

@ -20,9 +20,4 @@ namespace BWP.B3ClientService.BO
public int? Number { get; set; } public int? Number { get; set; }
} }
[Serializable]
public class WeightBill_HouseDetailCollection : DmoCollection<WeightBill_HouseDetail>
{ }
} }

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

@ -31,8 +31,4 @@ namespace BWP.B3ClientService.BO
public int? Number { get; set; } public int? Number { get; set; }
} }
[Serializable]
public class WeightBill_SanctionDetailCollection : DmoCollection<WeightBill_SanctionDetail>
{ }
} }

+ 0
- 5
B3ClientService/BO/SyncBase.cs View File

@ -10,11 +10,6 @@ namespace BWP.B3ClientService.BO
[Serializable] [Serializable]
public abstract class SyncBase : Base public abstract class SyncBase : Base
{ {
/// <summary>
/// 对应B3ID
/// </summary>
public long? B3ID { get; set; }
/// <summary> /// <summary>
/// 删除状态 /// 删除状态
/// </summary> /// </summary>


+ 5
- 0
B3ClientService/BO/SyncBill.cs View File

@ -10,6 +10,11 @@ namespace BWP.B3ClientService.BO
[Serializable] [Serializable]
public abstract class SyncBill : SyncBase public abstract class SyncBill : SyncBase
{ {
/// <summary>
/// 对应B3ID
/// </summary>
public long? B3ID { get; set; }
/// <summary> /// <summary>
/// 单据创建人用户名 /// 单据创建人用户名
/// </summary> /// </summary>


+ 32
- 0
B3ClientService/ClientSerializerBo/WeightBill/HouseAndSanctionEdit.cs View File

@ -0,0 +1,32 @@
using BWP.B3ClientService.BO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService
{
public class HouseAndSanctionEdit
{
public long ID { get; set; }
public int? Number { get; set; }
public long? HogGrade_ID { get; set; }
#region 获取的时候不赋值,只负责接收
public string HogGrade_Name { get; set; }
public long? Inspector_ID { get; set; }
public string Inspector_Name { get; set; }
#endregion
private List<WeightBill_HouseDetail> _houseDetails = new List<WeightBill_HouseDetail>();
public List<WeightBill_HouseDetail> HouseDetails { get { return _houseDetails; } set { _houseDetails = value; } }
private List<WeightBill_SanctionDetail> _sanctionDetails = new List<WeightBill_SanctionDetail>();
public List<WeightBill_SanctionDetail> SanctionDetails { get { return _sanctionDetails; } set { _sanctionDetails = value; } }
}
}

+ 22
- 0
B3ClientService/ClientSerializerBo/WeightBill/HouseAndSanctionList.cs View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService
{
public class HouseAndSanctionList
{
public long ID { get; set; }
public long? B3ID { get; set; }
public string Employee_Name { get; set; }
public string Supplier_Name { get; set; }
public int? Number { get; set; }
public string HouseNames { get; set; }
}
}

+ 34
- 0
B3ClientService/ClientSerializerBo/WeightBill/WeightBillList.cs View File

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BWP.B3ClientService
{
public class WeightBillList
{
public long ID { get; set; }
public long? B3ID { get; set; }
public string Car_Name { get; set; }
public string Supplier_Name { get; set; }
public string Employee_Name { get; set; }
public string PurchaseType_Name { get; set; }
public int? Number { get; set; }
public decimal? Weight { get; set; }
public string HouseNames { get; set; }
public int? SanctionNumber { get; set; }
public string Remark { get; set; }
public bool FinishWeight { get; set; }
}
}

+ 2
- 2
B3ClientService/RpcBO/Bill/GradeAndWeight/GradeAndWeight.cs View File

@ -7,12 +7,12 @@ namespace BWP.B3ClientService.RpcBO
{ {
public class GradeAndWeight public class GradeAndWeight
{ {
public long ID { get; set; }
public long OrderDetail_ID { get; set; } public long OrderDetail_ID { get; set; }
public int Order { get; set; } public int Order { get; set; }
public short Technics { get; set; }
public string Technics_Name { get; set; } public string Technics_Name { get; set; }
public int Number { get; set; } public int Number { get; set; }


+ 1
- 2
B3ClientService/Rpcs/BackRpcObj.cs View File

@ -7,7 +7,6 @@ using System.Threading.Tasks;
namespace BWP.B3ClientService.Rpcs namespace BWP.B3ClientService.Rpcs
{ {
[RpcObject]
public class BackRpcObj public class BackRpcObj
{ {
public long ID { get; set; } public long ID { get; set; }
@ -16,6 +15,6 @@ namespace BWP.B3ClientService.Rpcs
private List<BackRpcObj> _detailBack = new List<BackRpcObj>(); private List<BackRpcObj> _detailBack = new List<BackRpcObj>();
public List<BackRpcObj> DetailBack { get { return _detailBack; } }
public List<BackRpcObj> DetailBack { get { return _detailBack; } set { _detailBack = value; } }
} }
} }

+ 69
- 39
B3ClientService/Rpcs/BillRpc/GradeAndWeightRpc.cs View File

@ -23,29 +23,19 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{ {
var main = new JoinAlias("_S1", typeof(SecondOrder)); var main = new JoinAlias("_S1", typeof(SecondOrder));
var order = new JoinAlias("_O1", typeof(OrderDetail)); var order = new JoinAlias("_O1", typeof(OrderDetail));
var detail = new JoinAlias(typeof(GradeAndWeight_Detail));
var relate = new JoinAlias(typeof(GradeTemp)); var relate = new JoinAlias(typeof(GradeTemp));
var query = new DQueryDom(main); var query = new DQueryDom(main);
query.RegisterQueryTable(typeof(GradeTemp), new string[] { "OrdreID", "Tang", "Mao" }, GradeTemp.Register(date, maxID));
query.RegisterQueryTable(typeof(GradeTemp), new string[] { "OrdreID", "Tang", "TangAlready", "Mao", "MaoAlready" }, GradeTemp.Register(date, maxID));
query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "OrderDetail_ID", detail, "OrderDetail_ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrdreID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrdreID"));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID"));
query.Columns.Add(DQSelectColumn.Field("Order", order));
query.Columns.Add(DQSelectColumn.Field("PlanNumber", order));//3
query.Columns.Add(DQSelectColumn.Field("HotFadeNumber"));//4
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(detail, "Technics", 0), DQExpression.Value(1), DQExpression.Value(0))), "Tang"));//5
query.Columns.Add(DQSelectColumn.Create(DQExpression.Sum(DQExpression.LogicCase(DQCondition.EQ(detail, "Technics", 1), DQExpression.Value(1), DQExpression.Value(0))), "Mao"));//6
query.Columns.Add(DQSelectColumn.Field("Order", order));//1
query.Columns.Add(DQSelectColumn.Field("PlanNumber", order));
query.Columns.Add(DQSelectColumn.Field("HotFadeNumber"));//3
query.Columns.Add(DQSelectColumn.Field("TangAlready", relate));
query.Columns.Add(DQSelectColumn.Field("MaoAlready", relate));//5
query.Columns.Add(DQSelectColumn.Field("Tang", relate)); query.Columns.Add(DQSelectColumn.Field("Tang", relate));
query.Columns.Add(DQSelectColumn.Field("Mao", relate));
query.GroupBy.Expressions.Add(DQExpression.Field("ID"));
query.GroupBy.Expressions.Add(DQExpression.Field("OrderDetail_ID"));
query.GroupBy.Expressions.Add(DQExpression.Field(order, "Order"));
query.GroupBy.Expressions.Add(DQExpression.Field(order, "PlanNumber"));
query.GroupBy.Expressions.Add(DQExpression.Field("HotFadeNumber"));
query.GroupBy.Expressions.Add(DQExpression.Field(relate, "Tang"));
query.GroupBy.Expressions.Add(DQExpression.Field(relate, "Mao"));
query.Columns.Add(DQSelectColumn.Field("Mao", relate));//7
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29)))); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29))));
if (maxID.HasValue) if (maxID.HasValue)
@ -58,30 +48,30 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
while (reader.Read()) while (reader.Read())
{ {
var tang = new GradeAndWeight(); var tang = new GradeAndWeight();
tang.ID = (long)reader[0];
tang.OrderDetail_ID = (long)reader[1];
tang.Order = (int)reader[2];
tang.Number = (int)reader[4];
tang.Finish = Convert.ToBoolean(reader[7]);
tang.OrderDetail_ID = (long)reader[0];
tang.Order = (int)reader[1];
tang.Number = (int)reader[3];
tang.Finish = Convert.ToBoolean(reader[6]);
if (tang.Number != 0) if (tang.Number != 0)
{ {
tang.Technics = 0;
tang.Technics_Name = "烫褪"; tang.Technics_Name = "烫褪";
tang.Already = Convert.ToInt32(reader[5]);
tang.Already = Convert.ToInt32(reader[4]);
list.Add(tang); list.Add(tang);
} }
var lastNumber = (int)reader[3] - tang.Number;
var lastNumber = (int)reader[2] - tang.Number;
if (lastNumber == 0) if (lastNumber == 0)
continue; continue;
var mb = new GradeAndWeight(); var mb = new GradeAndWeight();
list.Add(mb); list.Add(mb);
mb.ID = tang.ID;
mb.OrderDetail_ID = tang.OrderDetail_ID; mb.OrderDetail_ID = tang.OrderDetail_ID;
mb.Order = tang.Order; mb.Order = tang.Order;
mb.Number = lastNumber; mb.Number = lastNumber;
mb.Technics = 1;
mb.Technics_Name = "毛剥"; mb.Technics_Name = "毛剥";
mb.Already = Convert.ToInt32(reader[6]);
mb.Finish = Convert.ToBoolean(reader[8]);
mb.Already = Convert.ToInt32(reader[5]);
mb.Finish = Convert.ToBoolean(reader[7]);
} }
} }
} }
@ -95,8 +85,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
public bool Tang { get; set; } public bool Tang { get; set; }
public int TangAlready { get; set; }
public bool Mao { get; set; } public bool Mao { get; set; }
public int MaoAlready { get; set; }
public static DQueryDom Register(DateTime date, long? maxID) public static DQueryDom Register(DateTime date, long? maxID)
{ {
var main = new JoinAlias("_S2", typeof(SecondOrder)); var main = new JoinAlias("_S2", typeof(SecondOrder));
@ -106,8 +100,10 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(order), DQCondition.EQ(main, "OrderDetail_ID", order, "ID"));
query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrderDetail_ID")); query.From.AddJoin(JoinType.Left, new DQDmoSource(relate), DQCondition.EQ(main, "OrderDetail_ID", relate, "OrderDetail_ID"));
query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID")); query.Columns.Add(DQSelectColumn.Field("OrderDetail_ID"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 0), DQExpression.Value(1), DQExpression.Value(0))), "Tang"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 1), DQExpression.Value(1), DQExpression.Value(0))), "Mao"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 0), DQExpression.Field(relate, "Finish"), DQExpression.Value(0))), "Tang"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 0), DQExpression.Field(relate, "Already"), DQExpression.Value(0))), "TangAlready"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 1), DQExpression.Field(relate, "Finish"), DQExpression.Value(0))), "Mao"));
query.Columns.Add(DQSelectColumn.Create(DQExpression.Max(DQExpression.LogicCase(DQCondition.EQ(relate, "Technics", 1), DQExpression.Field(relate, "Already"), DQExpression.Value(0))), "MaoAlready"));
query.GroupBy.Expressions.Add(DQExpression.Field("OrderDetail_ID")); query.GroupBy.Expressions.Add(DQExpression.Field("OrderDetail_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29)))); query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("IsOk", true), DQCondition.Between(DQExpression.Field(order, "Date"), date, date + new TimeSpan(23, 59, 29))));
@ -118,20 +114,17 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
} }
[Rpc] [Rpc]
public static string GetDetailsList(DateTime start, DateTime end, int? order, int type)
public static string GetDetailsList(DateTime date, int top)
{ {
var query = new DmoQuery(typeof(GradeAndWeight_Detail)); var query = new DmoQuery(typeof(GradeAndWeight_Detail));
query.Where.Conditions.Add(DQCondition.Between("Date", start, end + new TimeSpan(23, 59, 29)));
if (type != -1)
query.Where.Conditions.Add(DQCondition.EQ("Technics", type));
if (order.HasValue)
query.Where.Conditions.Add(DQCondition.EQ("Order", order));
query.Where.Conditions.Add(DQCondition.EQ("Date", date));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Index", true)); query.OrderBy.Expressions.Add(DQOrderByExpression.Create("Index", true));
query.Range = SelectRange.Top(top);
return serializer.Serialize(query.EExecuteList()); return serializer.Serialize(query.EExecuteList());
} }
[Rpc] [Rpc]
public static long InsertOrInsertDetail(string json)
public static long UpdateOrInsertDetail(string json, bool fillTechnics)
{ {
json = json.ESerializeDateTime(); json = json.ESerializeDateTime();
var entity = serializer.Deserialize<GradeAndWeight_Detail>(json); var entity = serializer.Deserialize<GradeAndWeight_Detail>(json);
@ -141,6 +134,8 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
session.Insert(entity); session.Insert(entity);
else else
session.Update(entity); session.Update(entity);
if (fillTechnics)
AddAlready(session, entity.OrderDetail_ID, entity.Technics);
session.Commit(); session.Commit();
return entity.ID; return entity.ID;
} }
@ -166,14 +161,49 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{ {
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
var entity = new OrderGradeFinishRelate();
var entity = GetRelate(orderDetailID, technics);
if (entity == null)
{
entity = new OrderGradeFinishRelate();
entity.OrderDetail_ID = orderDetailID;
entity.Technics = technics;
entity.Finish = true;
session.Insert(entity);
}
else
{
entity.Finish = true;
session.Update(entity);
}
session.Commit();
}
return 1;
}
static void AddAlready(IDmoSession session, long orderDetailID, short technics)
{
var entity = GetRelate(orderDetailID, technics);
if (entity == null)
{
entity = new OrderGradeFinishRelate();
entity.OrderDetail_ID = orderDetailID; entity.OrderDetail_ID = orderDetailID;
entity.Technics = technics; entity.Technics = technics;
entity.Already = 1;
session.Insert(entity); session.Insert(entity);
session.Commit();
} }
else
{
entity.Already += 1;
session.Update(entity);
}
}
return 1;
static OrderGradeFinishRelate GetRelate(long orderDetailID, short technics)
{
var query = new DmoQuery(typeof(OrderGradeFinishRelate));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("OrderDetail_ID", orderDetailID), DQCondition.EQ("Technics", technics)));
return query.EExecuteScalar<OrderGradeFinishRelate>();
} }
} }
} }

+ 227
- 0
B3ClientService/Rpcs/BillRpc/HouseAndSanctionRpc.cs View File

@ -0,0 +1,227 @@
using BWP.B3ClientService.BO;
using BWP.B3Frameworks.Utils;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.EnterpriseServices.JsonRpc;
using Forks.EnterpriseServices.SqlDoms;
using Forks.JsonRpc.Client.Data;
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 HouseAndSanctionRpc
{
static JavaScriptSerializer serializer = new JavaScriptSerializer();
[Rpc]
public static string GetHouseAndSanctionList(DateTime date)
{
var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_Detail));
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.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.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
var list = new List<HouseAndSanctionList>();
using (var session = Dmo.NewSession())
{
using (var reader = session.ExecuteReader(query))
{
while (reader.Read())
{
var entity = new HouseAndSanctionList();
entity.ID = (long)reader[0];
entity.B3ID = (long?)reader[1];
entity.Employee_Name = (string)reader[2];
entity.Supplier_Name = (string)reader[3];
entity.HouseNames = (string)reader[4];
entity.Number = (int?)reader[5];
list.Add(entity);
}
}
}
return serializer.Serialize(list);
}
[Rpc]
public static int GetDetailTotalNumber(DateTime date)
{
var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "WeightBill_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29)))));
query.Columns.Add(DQSelectColumn.Sum(detail, "Number"));
var result = query.EExecuteScalar();
if (result == null)
return 0;
return Convert.ToInt32(result);
}
[Rpc]
public static string GetHouseAndSanctionDetail(long id)
{
var result = new HouseAndSanctionEdit();
using (var session = Dmo.NewSession())
{
result.ID = id;
result.HogGrade_ID = InnerBLUtil.GetDmoPropertyByID<long?>(session, typeof(WeightBill), "HogGrade_ID", id);
result.Number = InnerBLUtil.GetDmoProperty<int?>(session, typeof(WeightBill_Detail), "Number", new Tuple<string, object>("WeightBill_ID", id), new Tuple<string, object>("DeleteState", false));
result.HouseDetails = InnerBLUtil.GetPartialFieldsDmoList<WeightBill_HouseDetail>(session, (query) =>
{
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", id), DQCondition.EQ("DeleteState", false)));
}, "ID", "LiveColonyHouse_ID").ToList();
result.SanctionDetails = InnerBLUtil.GetPartialFieldsDmoList<WeightBill_SanctionDetail>(session, (query) =>
{
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", id), DQCondition.EQ("DeleteState", false)));
}, "ID", "AbnormalItem_ID", "Number").ToList();
}
return serializer.Serialize(result);
}
[Rpc]
public static int UpdateInsertHouseAndSanction(string json)
{
var entity = serializer.Deserialize<HouseAndSanctionEdit>(json);
using (var session = Dmo.NewSession())
{
//为了节省ID,把传过来的通过栋舍匹配,并到原有明细里。然后从新的集合里把上传的集合里不存在的剔除掉
var houseDetail = GetList<WeightBill_HouseDetail>(entity.ID);
foreach (var item in entity.HouseDetails)
{
var first = houseDetail.FirstOrDefault(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID);
if (first == null)
houseDetail.Add(item);
else
first.Index = item.Index;
}
var delete = new List<long>();
var houseNames = new List<string>();
foreach (var item in houseDetail)
{
if (entity.HouseDetails.Any(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID))
{
UpdateOrInsertHouseDetail(session, item);
houseNames.Add(item.LiveColonyHouse_Name);
}
else
delete.Add(item.LiveColonyHouse_ID ?? 0);
}
if (delete.Any())
{
Delete<WeightBill_HouseDetail>(session, entity.ID, (dom) =>
{
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("LiveColonyHouse_ID"), delete.Select(x => DQExpression.Value(x)).ToArray()));
});
}
delete.Clear();
var sanctionDetail = GetList<WeightBill_SanctionDetail>(entity.ID);
foreach (var item in entity.SanctionDetails)
{
var first = sanctionDetail.FirstOrDefault(x => x.AbnormalItem_ID == item.AbnormalItem_ID);
if (first == null)
sanctionDetail.Add(item);
else
{
first.Index = item.Index;
first.Number = item.Number;
}
}
foreach (var item in sanctionDetail)
{
if (entity.SanctionDetails.Any(x => x.AbnormalItem_ID == item.AbnormalItem_ID))
UpdateOrInsertSanctionDetail(session, item);
else
delete.Add(item.AbnormalItem_ID ?? 0);
}
if (delete.Any())
{
Delete<WeightBill_SanctionDetail>(session, entity.ID, (dom) =>
{
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("AbnormalItem_ID"), delete.Select(x => DQExpression.Value(x)).ToArray()));
});
}
var dUpdate = new DQUpdateDom(typeof(WeightBill_Detail));
dUpdate.Columns.Add(new DQUpdateColumn("Number", entity.Number));
dUpdate.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", entity.ID), DQCondition.EQ("DeleteState", false)));
session.ExecuteNonQuery(dUpdate);
var update = new DQUpdateDom(typeof(WeightBill));
update.Columns.Add(new DQUpdateColumn("HogGrade_ID", entity.HogGrade_ID));
update.Columns.Add(new DQUpdateColumn("HogGrade_Name", entity.HogGrade_Name));
update.Columns.Add(new DQUpdateColumn("Inspector_ID", entity.Inspector_ID));
update.Columns.Add(new DQUpdateColumn("Inspector_Name", entity.Inspector_Name));
update.Columns.Add(new DQUpdateColumn("HouseNames", string.Join(",", houseNames)));
update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Columns.Add(new DQUpdateColumn("ModifyTime", DateTime.Now));
update.Where.Conditions.Add(DQCondition.EQ("ID", entity.ID));
session.ExecuteNonQuery(update);
session.Commit();
}
return 1;
}
static List<T> GetList<T>(long billID)
{
var query = new DmoQuery(typeof(T));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", billID)));
return query.EExecuteList().Cast<T>().ToList();
}
static void Delete<T>(IDmoSession session, long billID, Action<DQUpdateDom> conditions)
where T : SyncBase
{
var delete = new DQUpdateDom(typeof(T));
delete.Columns.Add(new DQUpdateColumn("DeleteState", true));
delete.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", billID)));
conditions(delete);
session.ExecuteNonQuery(delete);
}
static void UpdateOrInsertHouseDetail(IDmoSession session, WeightBill_HouseDetail detail)
{
if (detail.ID == 0)
{
session.Insert(detail);
return;
}
var update = new DQUpdateDom(typeof(WeightBill_HouseDetail));
update.Columns.Add(new DQUpdateColumn("Index", detail.Index));
update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("LiveColonyHouse_ID", detail.LiveColonyHouse_ID)));
session.ExecuteNonQuery(update);
}
static void UpdateOrInsertSanctionDetail(IDmoSession session, WeightBill_SanctionDetail detail)
{
if (detail.ID == 0)
{
session.Insert(detail);
return;
}
var update = new DQUpdateDom(typeof(WeightBill_SanctionDetail));
update.Columns.Add(new DQUpdateColumn("Index", detail.Index));
update.Columns.Add(new DQUpdateColumn("Number", detail.Number));
update.Columns.Add(new DQUpdateColumn("Sanction_ID", detail.Sanction_ID));
update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("AbnormalItem_ID", detail.AbnormalItem_ID)));
session.ExecuteNonQuery(update);
}
}
}

+ 141
- 350
B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs View File

@ -21,419 +21,210 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
static JavaScriptSerializer serializer = new JavaScriptSerializer(); static JavaScriptSerializer serializer = new JavaScriptSerializer();
[Rpc] [Rpc]
public static BackRpcObj UploadBill(WeightBill dmo, string recordDetail)
public static string GetWeightBillList(DateTime date, long? carID, long? supplierID)
{ {
recordDetail = recordDetail.ESerializeDateTime();
var records = serializer.Deserialize<List<WeightDetail>>(recordDetail);
var weightDetails = dmo.Details.ToList();
dmo.Details = new WeightBill_DetailCollection();
var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_Detail));
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.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("B3ID"));
query.Columns.Add(DQSelectColumn.Field("Car_Name"));
query.Columns.Add(DQSelectColumn.Field("Supplier_Name"));
query.Columns.Add(DQSelectColumn.Field("Employee_Name"));
query.Columns.Add(DQSelectColumn.Field("PurchaseType_Name"));//5
query.Columns.Add(DQSelectColumn.Field("HouseNames"));
query.Columns.Add(DQSelectColumn.Field("SanctionNumber"));
query.Columns.Add(DQSelectColumn.Field("Remark"));
query.Columns.Add(DQSelectColumn.Field("Number", detail));
query.Columns.Add(DQSelectColumn.Field("Weight", detail));
query.Columns.Add(DQSelectColumn.Create(DQExpression.LogicCase(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field(detail, "PiWeight")), DQCondition.IsNotNull(DQExpression.Field(detail, "MaoWeight"))), DQExpression.Value(1), DQExpression.Value(0)), "FinishWeight"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.Between("WeighTime", date, date + new TimeSpan(23, 59, 29)), DQCondition.EQ("DeleteState", false)));
if (carID.HasValue)
query.Where.Conditions.Add(DQCondition.EQ("Car_ID", carID));
if (supplierID.HasValue)
query.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", supplierID));
var list = new List<WeightBillList>();
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
if (dmo.ID == 0)
session.Insert(dmo);
else
{
foreach (var item in dmo.FarmerDetails)
{
if (item.ID == 0)
session.Insert(item);
else
session.Update(item);
}
dmo.FarmerDetails = new WeightBill_FarmerDetailCollection();
FillServerUpdateFields(session, dmo);
session.Update(dmo);
}
InsertWeightDetails(dmo.ID, weightDetails, records, session);
session.Commit();
}
var result = new BackRpcObj();
result.ID = dmo.ID;
var details = new BackRpcObj() { Flag = "Details" };
foreach (var d in weightDetails)
details.DetailBack.Add(new BackRpcObj() { Flag = d.Index.ToString(), ID = d.ID });
result.DetailBack.Add(details);
var farmerDetails = new BackRpcObj() { Flag = "FarmerDetails" };
foreach (var d in dmo.FarmerDetails)
farmerDetails.DetailBack.Add(new BackRpcObj() { Flag = d.Index.ToString(), ID = d.ID });
result.DetailBack.Add(farmerDetails);
return result;
}
static void InsertWeightDetails(long id, List<WeightBill_Detail> details, List<WeightDetail> records, IDmoSession session)
{
foreach (var item in details)
{
if (item.ID == 0)
{
item.WeightBill_ID = id;
session.Insert(item);
}
else
session.Update(item);
foreach (var r in records)
using (var reader = session.ExecuteReader(query))
{ {
if (r.Delete)
session.Delete(r);
else
while (reader.Read())
{ {
r.WeightBill_Detail_ID = item.ID;
session.Insert(r);
var entity = new WeightBillList();
entity.ID = (long)reader[0];
entity.B3ID = (long?)reader[1];
entity.Car_Name = (string)reader[2];
entity.Supplier_Name = (string)reader[3];
entity.Employee_Name = (string)reader[4];
entity.PurchaseType_Name = (string)reader[5];
entity.HouseNames = (string)reader[6];
entity.SanctionNumber = (int?)reader[7];
entity.Remark = (string)reader[8];
entity.Number = (int?)reader[9];
entity.Weight = (decimal?)reader[10];
entity.FinishWeight = Convert.ToBoolean(reader[11]);
list.Add(entity);
} }
} }
} }
}
static void FillServerUpdateFields(IDmoSession session, WeightBill dmo)
{
var min = InnerBLUtil.GetSingleDmo<WeightBill>(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;
return serializer.Serialize(list);
} }
[Rpc] [Rpc]
public static bool DeleteBill(long id)
{
using (var session = Dmo.NewSession())
{
DeleteEntity<WeightBill>(session, "ID", id);
DeleteEntity<WeightBill_Detail>(session, "WeightBill_ID", id);
DeleteEntity<WeightBill_FarmerDetail>(session, "WeightBill_ID", id);
DeleteEntity<WeightBill_HouseDetail>(session, "WeightBill_ID", id);
DeleteEntity<WeightBill_SanctionDetail>(session, "WeightBill_ID", id);
session.Commit();
}
return true;
}
static void DeleteEntity<T>(IDmoSession session, string property, object value)
where T : SyncBase
{
var update = new DQUpdateDom(typeof(T));
update.Columns.Add(new DQUpdateColumn("DeleteState", true));
update.Where.Conditions.Add(DQCondition.EQ(property, value));
session.ExecuteNonQuery(update);
}
[Rpc]
public static List<WeightBill> GetWeightBillList(DateTime date, long? carID, long? supplierID)
public static string Load(long id)
{ {
var query = new DmoQuery(typeof(WeightBill)); var query = new DmoQuery(typeof(WeightBill));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29))));
if (carID.HasValue)
query.Where.Conditions.Add(DQCondition.EQ("Car_ID", carID));
if (supplierID.HasValue)
query.Where.Conditions.Add(DQCondition.EQ("Supplier_ID", supplierID));
return query.EExecuteList().Cast<WeightBill>().ToList();
}
query.Where.Conditions.Add(DQCondition.EQ("ID", id));
var entity = query.EExecuteScalar<WeightBill>();
[Rpc]
public static List<Tuple<long, long>> SyncBillB3Ids(List<long> ids)
{
return GetSyncBaseB3Ids<WeightBill>(ids);
}
var dQuery = new DmoQuery(typeof(WeightBill_Detail));
dQuery.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", id)));
entity.Details = dQuery.EExecuteList().Cast<WeightBill_Detail>().ToList();
[Rpc]
public static List<Tuple<long, long>> SyncWeightDetailB3Ids(List<long> ids)
{
return GetSyncBaseB3Ids<WeightBill_Detail>(ids);
var fQuery = new DmoQuery(typeof(WeightBill_FarmerDetail));
fQuery.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", id)));
entity.FarmerDetails = fQuery.EExecuteList().Cast<WeightBill_FarmerDetail>().ToList();
return serializer.Serialize(entity);
} }
[Rpc] [Rpc]
public static List<Tuple<long, long>> SyncFarmerDetailB3Ids(List<long> ids)
{
return GetSyncBaseB3Ids<WeightBill_FarmerDetail>(ids);
}
static List<Tuple<long, long>> GetSyncBaseB3Ids<T>(List<long> ids)
where T : SyncBase
{
var query = new DQueryDom(new JoinAlias(typeof(T)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("B3ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field("B3ID")), DQCondition.InList(DQExpression.Field("ID"), ids.Select(x => DQExpression.Value(x)).ToArray())));
return query.EExecuteList<long, long>();
}
[Rpc]
public static List<Tuple<long, long, int>> SyncWeightDetailFirstNumber(List<long> detailIds)
{
var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail)));
query.Columns.Add(DQSelectColumn.Field("WeightBill_ID"));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("Number"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field("Number")), DQCondition.InList(DQExpression.Field("ID"), detailIds.Select(x => DQExpression.Value(x)).ToArray())));
return query.EExecuteList<long, long, int>();
}
[Rpc]
public static List<WeightWithHouseDetail> GetNoHouseInfoWeightBills(DateTime date)
{
var query = new DQueryDom(new JoinAlias(typeof(WeightBill)));
query.Where.Conditions.Add(DQCondition.And(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29)))));
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("AlreadyHouse"));
var result = query.EExecuteList<long, long?, string, string, bool>();
var list = new List<WeightWithHouseDetail>();
foreach (var item in result)
{
var bill = new WeightWithHouseDetail();
var entity = new WeightBill();
bill.Bill = entity;
list.Add(bill);
entity.ID = item.Item1;
entity.B3ID = item.Item2;
entity.Employee_Name = item.Item3;
entity.Supplier_Name = item.Item4;
entity.AlreadyHouse = item.Item5;
entity.FirstWeightNumber = GetWeightDetailFirstNumber(entity.ID);
}
var details = GetWeightHouseDetail(list.Select(x => x.Bill.ID));
foreach (var item in list)
{
var tags = details.Where(x => x.WeightBill_ID == item.Bill.ID);
if (tags.Any())
item.Detail = tags.ToArray();
}
return list;
}
static int? GetWeightDetailFirstNumber(long id)
{
var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail)));
query.Columns.Add(DQSelectColumn.Field("Number"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", id)));
query.Range = SelectRange.Top(1);
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID"));
return query.EExecuteScalar<int?>();
}
static IEnumerable<WeightBill_HouseDetail> GetWeightHouseDetail(IEnumerable<long> billIDs)
{
var query = new DmoQuery(typeof(WeightBill_HouseDetail));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.InList(DQExpression.Field("WeightBill_ID"), billIDs.Select(x => DQExpression.Value(x)).ToArray())));
return query.EExecuteList().Cast<WeightBill_HouseDetail>();
}
[Rpc]
public static int UpdateInsertWeightBillHouseDetail(WeightBill bo)
public static string UpdateOrInsert(string json, string recordDetail)
{ {
json = json.ESerializeDateTime();
var dmo = serializer.Deserialize<WeightBill>(json);
recordDetail = recordDetail.ESerializeDateTime();
var records = serializer.Deserialize<List<WeightDetail>>(recordDetail);
var result = new BackRpcObj();
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));
foreach (var item in bo.HouseDetails)
if (dmo.ID != 0)
{ {
var first = houseDetail.FirstOrDefault(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID);
if (first == null)
houseDetail.Add(item);
else
first.Index = item.Index;
FillServerUpdateFields(session, dmo);
session.Update(dmo);
} }
var delete = new List<long>();
var houseNames = new List<string>();
foreach (var item in houseDetail)
else
{ {
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);
dmo.ModifyTime = DateTime.Now;
session.Insert(dmo);
} }
if (delete.Any())
var detailBack = InsertWeightDetails(dmo.ID, dmo.Details, records, session);
if (detailBack.Any())
{ {
Delete<WeightBill_HouseDetail>(session, (dom) =>
{
dom.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", bo.ID)));
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("LiveColonyHouse_ID"), delete.Select(x => DQExpression.Value(x)).ToArray()));
});
var details = new BackRpcObj() { Flag = "Details" };
details.DetailBack.AddRange(detailBack);
result.DetailBack.Add(details);
} }
var sanctionDetail = GetList<WeightBill_SanctionDetail>(new Tuple<string, object>("WeightBill_ID", bo.ID), new Tuple<string, object>("DeleteState", false));
foreach (var item in bo.SanctionDetails)
var farmerDetails = new BackRpcObj() { Flag = "FarmerDetails" };
foreach (var detail in dmo.FarmerDetails)
{ {
var first = sanctionDetail.FirstOrDefault(x => x.AbnormalItem_ID == item.AbnormalItem_ID);
if (first == null)
sanctionDetail.Add(item);
else
if (detail.ID == 0)
{ {
first.Index = item.Index;
first.Number = item.Number;
detail.WeightBill_ID = dmo.ID;
session.Insert(detail);
farmerDetails.DetailBack.Add(new BackRpcObj() { Flag = detail.Index.ToString(), ID = detail.ID });
} }
}
delete.Clear();
foreach (var item in sanctionDetail)
{
if (bo.SanctionDetails.Any(x => x.AbnormalItem_ID == item.AbnormalItem_ID))
UpdateOrInsertSanctionDetail(session, item);
else else
delete.Add(item.AbnormalItem_ID ?? 0);
}
if (delete.Any())
{
Delete<WeightBill_SanctionDetail>(session, (dom) =>
{
dom.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", bo.ID)));
dom.Where.Conditions.Add(DQCondition.InList(DQExpression.Field("AbnormalItem_ID"), delete.Select(x => DQExpression.Value(x)).ToArray()));
});
session.Update(detail);
} }
var firstID = GetWeightDetailFirstID(bo.ID);
if (firstID.HasValue)
{
var dUpdate = new DQUpdateDom(typeof(WeightBill_Detail));
dUpdate.Columns.Add(new DQUpdateColumn("Number", bo.FirstWeightNumber));
dUpdate.Where.Conditions.Add(DQCondition.EQ("ID", firstID));
session.ExecuteNonQuery(dUpdate);
}
var update = new DQUpdateDom(typeof(WeightBill));
update.Columns.Add(new DQUpdateColumn("HogGrade_ID", bo.HogGrade_ID));
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));
update.Where.Conditions.Add(DQCondition.EQ("ID", bo.ID));
session.ExecuteNonQuery(update);
if (farmerDetails.DetailBack.Any())
result.DetailBack.Add(farmerDetails);
session.Commit(); session.Commit();
} }
return 1;
}
static List<T> GetList<T>(params Tuple<string, object>[] condition)
{
var query = new DmoQuery(typeof(T));
if (condition.Any())
query.Where.Conditions.Add(DQCondition.And(condition.Select(x => DQCondition.EQ(x.Item1, x.Item2))));
return query.EExecuteList().Cast<T>().ToList();
}
static void Delete<T>(IDmoSession session, Action<DQUpdateDom> conditions)
where T : SyncBase
{
var delete = new DQUpdateDom(typeof(T));
delete.Columns.Add(new DQUpdateColumn("DeleteState", true));
conditions(delete);
session.ExecuteNonQuery(delete);
result.ID = dmo.ID;
return serializer.Serialize(result);
} }
static void UpdateOrInsertHouseDetail(IDmoSession session, WeightBill_HouseDetail detail)
static void FillServerUpdateFields(IDmoSession session, WeightBill dmo)
{ {
if (detail.ID == 0)
{
session.Insert(detail);
return;
}
var update = new DQUpdateDom(typeof(WeightBill_HouseDetail));
update.Columns.Add(new DQUpdateColumn("Index", detail.Index));
update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("LiveColonyHouse_ID", detail.LiveColonyHouse_ID)));
session.ExecuteNonQuery(update);
var min = InnerBLUtil.GetSingleDmo<WeightBill>(session, "ID", dmo.ID, "B3ID", "Inspector_ID", "Inspector_Name", "HouseNames", "SanctionNumber");
dmo.B3ID = min.B3ID;
dmo.Inspector_ID = min.Inspector_ID;
dmo.Inspector_Name = min.Inspector_Name;
dmo.HouseNames = min.HouseNames;
dmo.SanctionNumber = min.SanctionNumber;
dmo.Sync = false;
dmo.ModifyTime = DateTime.Now;
} }
static void UpdateOrInsertSanctionDetail(IDmoSession session, WeightBill_SanctionDetail detail)
static List<BackRpcObj> InsertWeightDetails(long id, List<WeightBill_Detail> details, List<WeightDetail> records, IDmoSession session)
{ {
if (detail.ID == 0)
var result = new List<BackRpcObj>();
foreach (var item in details)
{ {
session.Insert(detail);
return;
if (item.ID == 0)
{
item.WeightBill_ID = id;
session.Insert(item);
result.Add(new BackRpcObj() { Flag = item.Index.ToString(), ID = item.ID });
}
else
session.Update(item);
if (item.DeleteState)
DeleteWeightDetail(session, item.ID);
else
{
foreach (var r in records)
{
if (r.Delete)
session.Delete(r);
else
{
r.WeightBill_Detail_ID = item.ID;
session.Insert(r);
}
}
}
} }
var update = new DQUpdateDom(typeof(WeightBill_SanctionDetail));
update.Columns.Add(new DQUpdateColumn("Index", detail.Index));
update.Columns.Add(new DQUpdateColumn("Number", detail.Number));
update.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("AbnormalItem_ID", detail.AbnormalItem_ID)));
session.ExecuteNonQuery(update);
return result;
} }
static long? GetWeightDetailFirstID(long id)
static void DeleteWeightDetail(IDmoSession session, long detailID)
{ {
var query = new DQueryDom(new JoinAlias(typeof(WeightBill_Detail)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("WeightBill_ID", id)));
query.Range = SelectRange.Top(1);
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID"));
return query.EExecuteScalar<long?>();
var delete = new DQDeleteDom(typeof(WeightDetail));
delete.Where.Conditions.Add(DQCondition.EQ("WeightBill_Detail_ID", detailID));
session.ExecuteNonQuery(delete);
} }
[Rpc] [Rpc]
public static int GetDetailTotalNumber(DateTime date)
public static string GetWeightRecord(long id)
{ {
var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.EQ(main, "ID", detail, "WeightBill_ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.And(DQCondition.EQ(detail, "DeleteState", false), DQCondition.EQ("DeleteState", false), DQCondition.Between("WeighTime", date.Date, date.Date + new TimeSpan(23, 59, 29)))));
query.Columns.Add(DQSelectColumn.Sum(detail, "Number"));
var result = query.EExecuteScalar();
if (result == null)
return 0;
return Convert.ToInt32(result);
var query = new DmoQuery(typeof(WeightDetail));
query.Where.Conditions.Add(DQCondition.EQ("WeightBill_Detail_ID", id));
var result = query.EExecuteList();
return serializer.Serialize(result);
} }
[Rpc] [Rpc]
public static WeightWithHouseAndSanction GetWeightBillOnHousePage(long id)
public static bool DeleteBill(long id)
{ {
var result = new WeightWithHouseAndSanction();
using (var session = Dmo.NewSession()) using (var session = Dmo.NewSession())
{ {
var entity = new WeightBill();
entity.HogGrade_ID = InnerBLUtil.GetDmoPropertyByID<long?>(session, typeof(WeightBill), "HogGrade_ID", id);
entity.FirstWeightNumber = GetWeightDetailFirstNumber(id);
result.Bill = entity;
result.Detail = InnerBLUtil.GetPartialFieldsDmoList<WeightBill_HouseDetail>(session, (query) =>
{
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", id), DQCondition.EQ("DeleteState", false)));
}, "ID", "LiveColonyHouse_ID").ToArray();
var update = new DQUpdateDom(typeof(WeightBill));
update.Columns.Add(new DQUpdateColumn("DeleteState", true));
update.Columns.Add(new DQUpdateColumn("Sync", false));
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
result.SanctionDetail = InnerBLUtil.GetPartialFieldsDmoList<WeightBill_SanctionDetail>(session, (query) =>
{
query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", id), DQCondition.EQ("DeleteState", false)));
}, "ID", "AbnormalItem_ID", "Number").ToArray();
var detailID = InnerBLUtil.GetDmoProperty<long?>(session, typeof(WeightBill_Detail), "ID", new Tuple<string, object>("WeightBill_ID", id), new Tuple<string, object>("DeleteState", false));
if (detailID.HasValue)
DeleteWeightDetail(session, detailID.Value);
session.Commit();
} }
return result;
return true;
} }
[Rpc] [Rpc]
public static string GetWeightRecord(long id)
public static string SyncBillB3Ids(List<long> ids)
{ {
var query = new DmoQuery(typeof(WeightDetail));
query.Where.Conditions.Add(DQCondition.EQ("WeightBill_Detail_ID", id));
var result = query.EExecuteList();
return serializer.Serialize(result);
var query = new DQueryDom(new JoinAlias(typeof(WeightBill)));
query.Columns.Add(DQSelectColumn.Field("ID"));
query.Columns.Add(DQSelectColumn.Field("B3ID"));
query.Where.Conditions.Add(DQCondition.And(DQCondition.IsNotNull(DQExpression.Field("B3ID")), DQCondition.InList(DQExpression.Field("ID"), ids.Select(x => DQExpression.Value(x)).ToArray())));
var result = query.EExecuteList<long, long>().Select(x => new CTuple<long, long>(x.Item1, x.Item2));
return serializer.Serialize(result.ToList());
} }
} }
[RpcObject]
public class WeightWithHouseDetail
{
public WeightBill Bill { get; set; }
public WeightBill_HouseDetail[] Detail { get; set; }
}
[RpcObject]
public class WeightWithHouseAndSanction : WeightWithHouseDetail
{
public WeightBill_SanctionDetail[] SanctionDetail { get; set; }
}
} }

+ 158
- 158
B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs View File

@ -18,163 +18,163 @@ namespace BWP.B3ClientService.Tasks.UpdateLoad
{ {
public static class UpLoadWeightBill public static class UpLoadWeightBill
{ {
public static void Execute(string uri)
{
var serializer = new JavaScriptSerializer();
//获取所有未上传的数据
var allBill = GetAllNeedSyncBill();
foreach (var item in allBill)
{
var bwpClient = new BWPClient(uri, item.Creator);
using (var context = new TransactionContext())
{
#region 删除
if (item.DeleteState)
{
if (item.B3ID.HasValue)
bwpClient.Call<int>("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/Delete", item.B3ID.Value);
context.Session.Delete(item);
context.Commit();
continue;
}
#endregion
var sync = serializer.Serialize(CreateRpcWeightBill(item));
var back = bwpClient.Call<BackRpcObj>("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/UpdateOrInsert", sync);
#region 同步完了要清理掉删除的明细(当前实体和数据库)
ClearDetails(item, context.Session);
#endregion
#region 反填信息
item.B3ID = back.ID;
SetBillAsSynced(item.ID, item.B3ID.Value, context.Session);
foreach (var bItem in back.DetailBack)
{
switch (bItem.Flag)
{
case "Details":
ExecuteSimpleDetail<WeightBill_Detail>(bItem, context.Session);
break;
case "FarmerDetails":
ExecuteSimpleDetail<WeightBill_FarmerDetail>(bItem, context.Session);
break;
case "SanctionDetails":
ExecuteSimpleDetail<WeightBill_SanctionDetail>(bItem, context.Session);
break;
default:
break;
}
}
//栋舍明细在B3系统不存在,所以无返回信息
ExecuteHouseDetial(item.ID, context.Session);
#endregion
context.Commit();
}
}
}
static IEnumerable<WeightBill> GetAllNeedSyncBill()
{
var query = new DmoQuery(typeof(WeightBill));
query.Where.Conditions.Add(DQCondition.EQ("Sync", false));
query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID", true));
return query.EExecuteList().Cast<WeightBill>();
}
static RpcWeightBill CreateRpcWeightBill(WeightBill bill)
{
var result = new RpcWeightBill();
result.Bill = new SWeightBill();
DmoUtil.CopyDmoFields(bill, result.Bill);
var d = bill.Details.Where(x => !x.DeleteState);
result.Details = d.Select(x => { var y = new SWeightBill_Detail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
if (result.Details.Any())
{
result.Details.OrderBy(x => x.ID).First().LiveColonyHouse_Name = string.Join(",", bill.HouseDetails.Where(x => !x.DeleteState).Select(x => x.LiveColonyHouse_Name));
}
result.D_Details = bill.Details.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
var fd = bill.FarmerDetails.Where(x => !x.DeleteState);
result.FarmerDetails = fd.Select(x => { var y = new SWeightBill_FarmerDetail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
result.D_FarmerDetails = bill.FarmerDetails.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
var sd = bill.SanctionDetails.Where(x => !x.DeleteState);
result.SanctionDetails = sd.Select(x => { var y = new SWeightBill_SanctionDetail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
result.D_SanctionDetails = bill.SanctionDetails.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
return result;
}
private static void ClearDetails(WeightBill bill, IDmoSession session)
{
var d = bill.Details.Where(x => x.DeleteState).ToArray();
foreach (var dd in d)
bill.Details.Remove(dd);
DeleteDetail<WeightBill_Detail>(bill.ID, session);
var f = bill.FarmerDetails.Where(x => x.DeleteState).ToArray();
foreach (var fd in f)
bill.FarmerDetails.Remove(fd);
DeleteDetail<WeightBill_FarmerDetail>(bill.ID, session);
var h = bill.HouseDetails.Where(x => x.DeleteState).ToArray();
foreach (var hd in h)
bill.HouseDetails.Remove(hd);
DeleteDetail<WeightBill_HouseDetail>(bill.ID, session);
var s = bill.SanctionDetails.Where(x => x.DeleteState).ToArray();
foreach (var sd in s)
bill.SanctionDetails.Remove(sd);
DeleteDetail<WeightBill_SanctionDetail>(bill.ID, session);
}
static void DeleteDetail<T>(long mainID, IDmoSession session)
where T : SyncBase
{
var delete = new DQDeleteDom(typeof(T));
delete.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", mainID), DQCondition.EQ("DeleteState", true)));
session.ExecuteNonQuery(delete);
}
static void ExecuteHouseDetial(long mainID, IDmoSession session)
{
var update = new DQUpdateDom(typeof(WeightBill_HouseDetail));
update.Columns.Add(new DQUpdateColumn("B3ID", -1));
update.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", mainID));
session.ExecuteNonQuery(update);
}
static void ExecuteSimpleDetail<T>(BackRpcObj details, IDmoSession session)
where T : SyncBase
{
foreach (var item in details.DetailBack)
{
var update = new DQUpdateDom(typeof(T));
update.Columns.Add(new DQUpdateColumn("B3ID", item.ID));
update.Where.Conditions.Add(DQCondition.EQ("ID", long.Parse(item.Flag)));
session.ExecuteNonQuery(update);
}
}
static void SetBillAsSynced(long id, long B3ID, IDmoSession session)
{
var update = new DQUpdateDom(typeof(WeightBill));
update.Columns.Add(new DQUpdateColumn("Sync", true));
update.Columns.Add(new DQUpdateColumn("B3ID", B3ID));
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
session.ExecuteNonQuery(update);
}
//public static void Execute(string uri)
//{
// var serializer = new JavaScriptSerializer();
// //获取所有未上传的数据
// var allBill = GetAllNeedSyncBill();
// foreach (var item in allBill)
// {
// var bwpClient = new BWPClient(uri, item.Creator);
// using (var context = new TransactionContext())
// {
// #region 删除
// if (item.DeleteState)
// {
// if (item.B3ID.HasValue)
// bwpClient.Call<int>("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/Delete", item.B3ID.Value);
// context.Session.Delete(item);
// context.Commit();
// continue;
// }
// #endregion
// var sync = serializer.Serialize(CreateRpcWeightBill(item));
// var back = bwpClient.Call<BackRpcObj>("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/UpdateOrInsert", sync);
// #region 同步完了要清理掉删除的明细(当前实体和数据库)
// ClearDetails(item, context.Session);
// #endregion
// #region 反填信息
// item.B3ID = back.ID;
// SetBillAsSynced(item.ID, item.B3ID.Value, context.Session);
// foreach (var bItem in back.DetailBack)
// {
// switch (bItem.Flag)
// {
// case "Details":
// ExecuteSimpleDetail<WeightBill_Detail>(bItem, context.Session);
// break;
// case "FarmerDetails":
// ExecuteSimpleDetail<WeightBill_FarmerDetail>(bItem, context.Session);
// break;
// case "SanctionDetails":
// ExecuteSimpleDetail<WeightBill_SanctionDetail>(bItem, context.Session);
// break;
// default:
// break;
// }
// }
// //栋舍明细在B3系统不存在,所以无返回信息
// ExecuteHouseDetial(item.ID, context.Session);
// #endregion
// context.Commit();
// }
// }
//}
//static IEnumerable<WeightBill> GetAllNeedSyncBill()
//{
// var query = new DmoQuery(typeof(WeightBill));
// query.Where.Conditions.Add(DQCondition.EQ("Sync", false));
// query.OrderBy.Expressions.Add(DQOrderByExpression.Create("ID"));
// return query.EExecuteList().Cast<WeightBill>();
//}
//static RpcWeightBill CreateRpcWeightBill(WeightBill bill)
//{
// var result = new RpcWeightBill();
// result.Bill = new SWeightBill();
// DmoUtil.CopyDmoFields(bill, result.Bill);
// var d = bill.Details.Where(x => !x.DeleteState);
// result.Details = d.Select(x => { var y = new SWeightBill_Detail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
// if (result.Details.Any())
// {
// result.Details.OrderBy(x => x.ID).First().LiveColonyHouse_Name = string.Join(",", bill.HouseDetails.Where(x => !x.DeleteState).Select(x => x.LiveColonyHouse_Name));
// }
// result.D_Details = bill.Details.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
// var fd = bill.FarmerDetails.Where(x => !x.DeleteState);
// result.FarmerDetails = fd.Select(x => { var y = new SWeightBill_FarmerDetail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
// result.D_FarmerDetails = bill.FarmerDetails.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
// var sd = bill.SanctionDetails.Where(x => !x.DeleteState);
// result.SanctionDetails = sd.Select(x => { var y = new SWeightBill_SanctionDetail(); DmoUtil.CopyDmoFields(x, y); return y; }).ToArray();
// result.D_SanctionDetails = bill.SanctionDetails.Where(x => x.DeleteState && x.B3ID.HasValue).Select(x => x.B3ID.Value).ToArray();
// return result;
//}
//private static void ClearDetails(WeightBill bill, IDmoSession session)
//{
// var d = bill.Details.Where(x => x.DeleteState).ToArray();
// foreach (var dd in d)
// bill.Details.Remove(dd);
// DeleteDetail<WeightBill_Detail>(bill.ID, session);
// var f = bill.FarmerDetails.Where(x => x.DeleteState).ToArray();
// foreach (var fd in f)
// bill.FarmerDetails.Remove(fd);
// DeleteDetail<WeightBill_FarmerDetail>(bill.ID, session);
// var h = bill.HouseDetails.Where(x => x.DeleteState).ToArray();
// foreach (var hd in h)
// bill.HouseDetails.Remove(hd);
// DeleteDetail<WeightBill_HouseDetail>(bill.ID, session);
// var s = bill.SanctionDetails.Where(x => x.DeleteState).ToArray();
// foreach (var sd in s)
// bill.SanctionDetails.Remove(sd);
// DeleteDetail<WeightBill_SanctionDetail>(bill.ID, session);
//}
//static void DeleteDetail<T>(long mainID, IDmoSession session)
// where T : SyncBase
//{
// var delete = new DQDeleteDom(typeof(T));
// delete.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("WeightBill_ID", mainID), DQCondition.EQ("DeleteState", true)));
// session.ExecuteNonQuery(delete);
//}
//static void ExecuteHouseDetial(long mainID, IDmoSession session)
//{
// var update = new DQUpdateDom(typeof(WeightBill_HouseDetail));
// update.Columns.Add(new DQUpdateColumn("B3ID", -1));
// update.Where.Conditions.Add(DQCondition.EQ("WeightBill_ID", mainID));
// session.ExecuteNonQuery(update);
//}
//static void ExecuteSimpleDetail<T>(BackRpcObj details, IDmoSession session)
// where T : SyncBase
//{
// foreach (var item in details.DetailBack)
// {
// var update = new DQUpdateDom(typeof(T));
// update.Columns.Add(new DQUpdateColumn("B3ID", item.ID));
// update.Where.Conditions.Add(DQCondition.EQ("ID", long.Parse(item.Flag)));
// session.ExecuteNonQuery(update);
// }
//}
//static void SetBillAsSynced(long id, long B3ID, IDmoSession session)
//{
// var update = new DQUpdateDom(typeof(WeightBill));
// update.Columns.Add(new DQUpdateColumn("Sync", true));
// update.Columns.Add(new DQUpdateColumn("B3ID", B3ID));
// update.Where.Conditions.Add(DQCondition.EQ("ID", id));
// session.ExecuteNonQuery(update);
//}
} }
} }

+ 1
- 1
B3ClientService/Tasks/UpdateLoad/UploadTest.cs View File

@ -22,7 +22,7 @@ namespace BWP.B3ClientService.Tasks
var serverUri = ServerHost.GetServerUrl(); var serverUri = ServerHost.GetServerUrl();
if (string.IsNullOrEmpty(serverUri)) if (string.IsNullOrEmpty(serverUri))
throw new Exception("请配置服务器地址"); throw new Exception("请配置服务器地址");
UpLoadWeightBill.Execute(serverUri);
//UpLoadWeightBill.Execute(serverUri);
UploadOrderDetail.Execute(serverUri); UploadOrderDetail.Execute(serverUri);
UploadSecondOrder.Execute(serverUri); UploadSecondOrder.Execute(serverUri);
} }


Loading…
Cancel
Save