Browse Source

未完。

master
yibo 8 years ago
parent
commit
5b5b231841
10 changed files with 811 additions and 77 deletions
  1. +5
    -0
      B3ClientService/B3ClientService.csproj
  2. +3
    -0
      B3ClientService/BO/Bill/WeightBill/WeightBill.cs
  3. +2
    -0
      B3ClientService/BO/Bill/WeightBill/WeightBill_FarmerDetail.cs
  4. +166
    -0
      B3ClientService/MapBO/WeightBill/WeighBill.cs
  5. +50
    -0
      B3ClientService/MapBO/WeightBill/Weigh_AbnormalRecording.cs
  6. +41
    -0
      B3ClientService/MapBO/WeightBill/Weigh_FarmerDetail.cs
  7. +91
    -0
      B3ClientService/MapBO/WeightBill/Weigh_Record.cs
  8. +190
    -11
      B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs
  9. +197
    -0
      B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs
  10. +66
    -66
      B3ClientService/Tasks/UpdateLoad/UploadTest.cs

+ 5
- 0
B3ClientService/B3ClientService.csproj View File

@ -87,6 +87,10 @@
<Compile Include="BO\SyncBO\MinEmployee.cs" />
<Compile Include="BO\SyncBO\MinWPF_User.cs" />
<Compile Include="BO\ServerHost.cs" />
<Compile Include="MapBO\WeightBill\WeighBill.cs" />
<Compile Include="MapBO\WeightBill\Weigh_AbnormalRecording.cs" />
<Compile Include="MapBO\WeightBill\Weigh_FarmerDetail.cs" />
<Compile Include="MapBO\WeightBill\Weigh_Record.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Rpcs\BackRpcObj.cs" />
<Compile Include="Rpcs\BaseInfoRpc.cs" />
@ -95,6 +99,7 @@
<Compile Include="Rpcs\UserInfoRpc.cs" />
<Compile Include="Tasks\SyncInfoFromServer.cs" />
<Compile Include="Tasks\UpdateLoad\UploadTest.cs" />
<Compile Include="Tasks\UpdateLoad\UpLoadWeightBill.cs" />
<Compile Include="WordPair.cs" />
</ItemGroup>
<ItemGroup>


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

@ -76,6 +76,9 @@ namespace BWP.B3ClientService.BO
[DbColumn(DefaultValue = 0)]
public bool AlreadyHouse { get; set; }
//[NonDmoProperty]
public int? FirstWeightNumber { get; set; }
private WeightBill_DetailCollection mDetails = new WeightBill_DetailCollection();
[OneToMany(typeof(WeightBill_Detail), "ID")]
[Join("ID", "WeightBill_ID")]


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

@ -19,6 +19,8 @@ namespace BWP.B3ClientService.BO
public string Farmer_Name { get; set; }
public int? Number { get; set; }
public decimal? Weight { get; set; }
}
[Serializable]


+ 166
- 0
B3ClientService/MapBO/WeightBill/WeighBill.cs View File

@ -0,0 +1,166 @@
using BWP.B3Frameworks;
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using Forks.Utils;
using TSingSoft.WebControls2;
using BWP.B3Frameworks.Utils;
using BWP.B3Frameworks.BO.MoneyTemplate;
using TSingSoft.WebPluginFramework;
namespace BWP.B3ClientService.MapBO
{
[Serializable]
[LogicName("过磅单")]
[BOClass(Exclude = true)]
public class WeighBill : DomainBill
{
[LogicName("会计单位")]
public long? AccountingUnit_ID { get; set; }
[LogicName("来源地")]
public long? Zone_ID { get; set; }
//[ReferenceTo(typeof(Zone1), "Depth")]
//[Join("Zone_ID", "ID")]
//public int? Zone_Depth { get; set; }
//[ReferenceTo(typeof(Zone1), "Name")]
//[Join("Zone_ID", "ID")]
//[LogicName("区域")]
//public string Zone_Name { get; set; }
//[ReferenceTo(typeof(Zone1), "TreeDeep1_Name")]
//[Join("Zone_ID", "ID")]
//[LogicName("一级区域")]
//public string TreeDeep1_Name { get; set; }
//[ReferenceTo(typeof(Zone1), "TreeDeep2_Name")]
//[Join("Zone_ID", "ID")]
//[LogicName("二级区域")]
//public string TreeDeep2_Name { get; set; }
//[NonDmoProperty]
//[DFPrompt("区域树形名称")]
//public string Zone_TreeName
//{
// get { return TreeUtil.GetTreePrefix(Zone_Depth) + Zone_Name; }
//}
[LogicName("部门")]
public long? Department_ID { get; set; }
[LogicName("供应商")]
public long? Supplier_ID { get; set; }
DateTime dt = DateTime.Now;
[LogicName("过磅时间")]
public DateTime? WeighTime { get { return dt; } set { dt = (DateTime)value; } }
//[LogicName("收购头数")]
//[DFExtProperty("WebControlType", DFEditControl.StaticText)]
//public int? BuyNum { get; set; }
//[LogicName("收购重量")]
//[DFExtProperty("WebControlType", DFEditControl.StaticText)]
//public Money<decimal>? BuyWeigh1 { get; set; }
[LogicName("棚前单价")]
public Money<decimal>? ShackPrice { get; set; }
[LogicName("棚前重量")]
public Money<decimal>? ShackWeight { get; set; }
[LogicName("棚前金额")]
//[DFExtProperty("WebControlType", DFEditControl.StaticText)]
public Money<>? ShackMoney { get; set; }
[LogicName("收购类型")]
public short? PurchaseType { get; set; }
[LogicName("定价单")]
public long? FixedPrice_ID { get; set; }
[LogicName("车辆")]
public long? Car_ID { get; set; }
[LogicName("验质员")]
public long? Inspector_ID { get; set; }
[LogicName("动检号")]
public string AnimalTestNumber { get; set; }
[LogicName("动检日期")]
public DateTime? AnimalTestDate { get; set; }
[LogicName("动检员")]
public string AnimalTestMan { get; set; }
//[ReferenceTo(typeof(AccountingUnit), "Name")]
//[Join("AccountingUnit_ID", "ID")]
//[DFPrompt("会计单位")]
//public string AccountingUnit_Name { get; set; }
//[Join("Department_ID", "ID")]
//[LogicName("部门名称")]
//[ReferenceTo(typeof(Department), "Name")]
//public string Department_Name { get; set; }
//[Join("Supplier_ID", "ID")]
//[LogicName("供应商")]
//[ReferenceTo(typeof(Supplier), "Name")]
//public string Supplier_Name { get; set; }
//[Join("Supplier_ID", "ID")]
//[LogicName("联系方式")]
//[ReferenceTo(typeof(Supplier), "Tel")]
//public string Supplier_Tel { get; set; }
[LogicName("车牌号")]
public string CarNo { get; set; }
//[ReferenceTo(typeof(Car), "Name")]
//[Join("Car_ID", "ID")]
//[DFPrompt("车辆")]
//public string Car_Name { get; set; }
//[Join("Inspector_ID", "ID")]
//[LogicName("验质员")]
//[ReferenceTo(typeof(Employee), "Name")]
//public string Inspector_Name { get; set; }
private Weigh_RecordCollection mWeighRecord = new Weigh_RecordCollection();
[OneToMany(typeof(Weigh_Record), "ID")]
[Join("ID", "Weigh_ID")]
public Weigh_RecordCollection WeighRecord
{
get { return mWeighRecord; }
set { mWeighRecord = value; }
}
private Weigh_AbnormalRecordingCollection mWeighAbnormalRecording = new Weigh_AbnormalRecordingCollection();
[OneToMany(typeof(Weigh_AbnormalRecording), "ID")]
[Join("ID", "Weigh_ID")]
public Weigh_AbnormalRecordingCollection WeighAbnormalRecording
{
get { return mWeighAbnormalRecording; }
set { mWeighAbnormalRecording = value; }
}
private Weigh_FarmerDetailCollection mFarmerDetails = new Weigh_FarmerDetailCollection();
[OneToMany(typeof(Weigh_FarmerDetail), "ID")]
[Join("ID", "Weigh_ID")]
public Weigh_FarmerDetailCollection FarmerDetails
{
get { return mFarmerDetails; }
set { mFarmerDetails = value; }
}
[LogicName("外部ID")]
public long? CID { get; set; }
}
}

+ 50
- 0
B3ClientService/MapBO/WeightBill/Weigh_AbnormalRecording.cs View File

@ -0,0 +1,50 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataDictionary;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3ClientService.MapBO
{
[LogicName("过磅记录")]
[Serializable]
[BOClass(Exclude = true)]
public class Weigh_AbnormalRecording : Base
{
public long? Weigh_ID { get; set; }
[LogicName("奖罚设置")]
public long? Sanction_ID { get; set; }
[LogicName("头数")]
public int Num { get; set; }
[LogicName("单价")]
public Money<decimal>? UnitPrice { get; set; }
[LogicName("金额")]
public Money<decimal>? Abnormal_Money { get; set; }
//[LogicName("异常项目")]
//public string Abnormal_Name { get; set; }
[LogicName("异常项目ID")]
public long? AbnormalItem_ID { get; set; }
[LogicName("外部ID")]
public long? CID { get; set; }
}
[Serializable]
public class Weigh_AbnormalRecordingCollection : DmoCollection<Weigh_AbnormalRecording>
{
}
}

+ 41
- 0
B3ClientService/MapBO/WeightBill/Weigh_FarmerDetail.cs View File

@ -0,0 +1,41 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataDictionary;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TSingSoft.WebPluginFramework;
namespace BWP.B3ClientService.MapBO
{
[LogicName("过磅单_养殖户信息")]
[Serializable]
[BOClass(Exclude = true)]
public class Weigh_FarmerDetail : Base
{
[LogicName("过磅记录ID")]
public long Weigh_ID { get; set; }
[LogicName("养殖户")]
public long? Farmer_ID { get; set; }
//[LogicName("养殖户")]
//public string Farmer_Name { get; set; }
[LogicName("头数")]
public int? Number { get; set; }
[LogicName("重量")]
public decimal? Weight { get; set; }
[LogicName("外部ID")]
public long? CID { get; set; }
}
[Serializable]
public class Weigh_FarmerDetailCollection : DmoCollection<Weigh_FarmerDetail>
{ }
}

+ 91
- 0
B3ClientService/MapBO/WeightBill/Weigh_Record.cs View File

@ -0,0 +1,91 @@
using BWP.B3Frameworks.BO;
using Forks.EnterpriseServices;
using Forks.EnterpriseServices.DataDictionary;
using Forks.EnterpriseServices.DataForm;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BWP.B3Frameworks.BO.MoneyTemplate;
using TSingSoft.WebPluginFramework;
namespace BWP.B3ClientService.MapBO
{
[LogicName("过磅记录")]
[Serializable]
[BOClass(Exclude = true)]
public class Weigh_Record : Base
{
[LogicName("过磅记录ID")]
public long Weigh_ID { get; set; }
[LogicName("活体品种")]
public long? LiveVarieties_ID { get; set; }
//[LogicName("活体品种")]
//public string LiveVarieties_Name { get; set; }
[LogicName("等级")]
public long? HogGrade_ID { get; set; }
//[LogicName("等级")]
//public string HogGrade_Name { get; set; }
[LogicName("活体标识")]
public string LiveMark { get; set; }
[LogicName("头数")]
public int Number { get; set; }
[LogicName("毛重")]
public Money<decimal>? MaoWeight { get; set; }
[LogicName("皮重")]
public Money<decimal>? PiWeight { get; set; }
[LogicName("重量")]
public Money<decimal>? Weight { get; set; }
//[LogicName("均重")]
//[NonDmoProperty]
//public Money<一位小数>? AvgWeight {
// get { return Weight / Number; }
//}
short? nv = 0;
[LogicName("建议工艺")]
public short? SuggestedProcess1
{
get { return nv; }
set { nv = value; }
}
[LogicName("活体圈舍")]
public string LiveColonyHouse_Name { get; set; }
[LogicName("剩余头数")]
public int? RemainNumber { get; set; }
[LogicName("已计划头数")]
public int? PlanNumber { get; set; }
[LogicName("已屠宰头数")]
public int? ButcherNumber { get; set; }
[LogicName("备注")]
public string Remark { get; set; }
[LogicName("外部ID")]
public long? CID { get; set; }
}
[Serializable]
public class Weigh_RecordCollection : DmoCollection<Weigh_Record>
{
}
}

+ 190
- 11
B3ClientService/Rpcs/BillRpc/WeightBillRpc.cs View File

@ -79,13 +79,25 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{
using (var session = Dmo.NewSession())
{
var update = new DQUpdateDom(typeof(WeightBill));
update.Columns.Add(new DQUpdateColumn("DeleteState", true));
update.Where.Conditions.Add(DQCondition.EQ("ID", id));
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)
{
@ -122,6 +134,16 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
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)
@ -144,6 +166,7 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
entity.B3ID = item.Item2;
entity.Supplier_Name = item.Item3;
entity.AlreadyHouse = item.Item4;
entity.FirstWeightNumber = GetWeightDetailFirstNumber(entity.ID);
}
var details = GetWeightHouseDetail(list.Select(x => x.Bill.ID));
foreach (var item in list)
@ -155,6 +178,16 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
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));
@ -163,15 +196,79 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
}
[Rpc]
public static int InsertWeightBillHouseDetail(WeightBill bo)
public static int UpdateInsertWeightBillHouseDetail(WeightBill bo)
{
using (var session = Dmo.NewSession())
{
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)
session.Insert(item);
{
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>();
foreach (var item in houseDetail)
{
if (bo.HouseDetails.Any(x => x.LiveColonyHouse_ID == item.LiveColonyHouse_ID))
UpdateOrInsertHouseDetail(session, item);
else
delete.Add(item.LiveColonyHouse_ID ?? 0);
}
if (delete.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 sanctionDetail = GetList<WeightBill_SanctionDetail>(new Tuple<string, object>("WeightBill_ID", bo.ID), new Tuple<string, object>("DeleteState", false));
foreach (var item in bo.SanctionDetails)
session.Insert(item);
{
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;
}
}
delete.Clear();
foreach (var item in sanctionDetail)
{
if (bo.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, (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()));
});
}
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));
@ -187,14 +284,68 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
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);
}
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.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", false), DQCondition.EQ("AbnormalItem_ID", detail.AbnormalItem_ID)));
session.ExecuteNonQuery(update);
}
static long? GetWeightDetailFirstID(long id)
{
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?>();
}
[Rpc]
public static int GetHouseDetailTotalNumber(DateTime date)
public static int GetDetailTotalNumber(DateTime date)
{
var main = new JoinAlias(typeof(WeightBill));
var detail = new JoinAlias(typeof(WeightBill_HouseDetail));
var detail = new JoinAlias(typeof(WeightBill_Detail));
var query = new DQueryDom(main);
query.From.AddJoin(JoinType.Left, new DQDmoSource(detail), DQCondition.And(DQCondition.EQ(main, "ID", detail, "WeightBill_ID"), DQCondition.EQ(detail, "DeleteState", false)));
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.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();
@ -202,6 +353,29 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
return 0;
return Convert.ToInt32(result);
}
[Rpc]
public static WeightWithHouseAndSanction GetWeightBillOnHousePage(long id)
{
var result = new WeightWithHouseAndSanction();
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();
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();
}
return result;
}
}
[RpcObject]
@ -209,7 +383,12 @@ namespace BWP.B3ClientService.Rpcs.BillRpc
{
public WeightBill Bill { get; set; }
public WeightBill_HouseDetail[] Detail { get; set; }
}
[RpcObject]
public class WeightWithHouseAndSanction : WeightWithHouseDetail
{
public WeightBill_SanctionDetail[] SanctionDetail { get; set; }
}
}

+ 197
- 0
B3ClientService/Tasks/UpdateLoad/UpLoadWeightBill.cs View File

@ -0,0 +1,197 @@
using BWP.B3ClientService.BO;
using BWP.B3ClientService.MapBO;
using BWP.B3ClientService.Rpcs;
using Forks.EnterpriseServices.DomainObjects2;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TSingSoft.WebPluginFramework;
using TSingSoft.WebPluginFramework.BWPClients;
namespace BWP.B3ClientService.Tasks.UpdateLoad
{
public static class UpLoadWeightBill
{
public static void Execute()
{
//1、清理垃圾(删除且未上传的)
ClearUnUpdateLoadAndDeleteData();
//2、获取所有未上传的数据
var allBill = GetAllNeedSyncBill();
//3、上传
//{
// 1、插入(全量)
// 2、修改{1、全部修改,2、明细删除} 返回 信息后,明细该删的,要清理,然后改为已同步。
// 3、删除的,删除,并清理本地
// 修改删除注意单据状态。
// }
//4、并反馈ID
//4、改为已上传
}
static void ClearUnUpdateLoadAndDeleteData()
{
using (var session = Dmo.NewSession())
{
DeleteEntity<WeightBill>(session);
DeleteEntity<WeightBill_Detail>(session);
DeleteEntity<WeightBill_FarmerDetail>(session);
DeleteEntity<WeightBill_HouseDetail>(session);
DeleteEntity<WeightBill_SanctionDetail>(session);
session.Commit();
}
}
static void DeleteEntity<T>(IDmoSession session)
where T : SyncBase
{
var delete = new DQDeleteDom(typeof(T));
delete.Where.Conditions.Add(DQCondition.And(DQCondition.EQ("DeleteState", true), DQCondition.IsNull(DQExpression.Field("B3ID"))));
session.ExecuteNonQuery(delete);
}
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 BackRpcObj Sync(WeightBill bill, string serverUri)
{
var bwpClient = new BWPClient(serverUri, bill.Creator);
WeighBill dmo = new WeighBill();
if (bill.B3ID.HasValue)
dmo = bwpClient.Call<WeighBill>("/MainSystem/B3ButcherManage/Rpcs/WeighBillRpc/Load", bill.B3ID.Value);
dmo.AccountingUnit_ID = bill.AccountingUnit_ID;
dmo.Department_ID = bill.Department_ID;
dmo.Zone_ID = bill.Zone_ID;
dmo.Employee_ID = bill.Employee_ID;
dmo.Supplier_ID = bill.Supplier_ID;
dmo.WeighTime = bill.WeighTime;
dmo.ShackPrice = bill.ShackPrice;
dmo.ShackWeight = bill.ShackWeight;
dmo.ShackMoney = bill.ShackMoney;
dmo.PurchaseType = bill.PurchaseType_ID;
dmo.Inspector_ID = bill.Inspector_ID;
dmo.Car_ID = bill.Car_ID;
dmo.AnimalTestNumber = bill.AnimalTestNumber;
dmo.AnimalTestDate = bill.AnimalTestDate;
dmo.AnimalTestMan = bill.AnimalTestMan;
dmo.Remark = bill.Remark;
dmo.CID = bill.ID;
foreach (var bF in bill.FarmerDetails)
{
//未上传标识为删除的,已经在ClearUnUpdateLoadAndDeleteData里处理了
var first = dmo.FarmerDetails.FirstOrDefault(x => x.ID == bF.B3ID);
if (bF.DeleteState)
{
if (first != null)
dmo.FarmerDetails.Remove(first);
continue;
}
if (first == null)
{
first = new Weigh_FarmerDetail();
dmo.FarmerDetails.Add(first);
first.CID = bF.ID;
}
first.Farmer_ID = bF.Farmer_ID;
first.Number = bF.Number;
first.Weigh_ID = dmo.ID;
first.Weight = bF.Weight;
}
foreach (var bd in bill.Details)
{
var first = dmo.WeighRecord.FirstOrDefault(x => x.ID == bd.B3ID);
if (bd.DeleteState)
{
if (first != null)
dmo.WeighRecord.Remove(first);
continue;
}
if (first == null)
{
first = new Weigh_Record();
dmo.WeighRecord.Add(first);
first.CID = bd.ID;
}
first.Weigh_ID = dmo.ID;
first.LiveVarieties_ID = bill.LiveVarieties_ID;
first.HogGrade_ID = bill.HogGrade_ID;
first.Number = bd.Number ?? 0;
first.MaoWeight = bd.MaoWeight;
first.PiWeight = bd.PiWeight;
first.Weight = bd.Weight;
first.LiveColonyHouse_Name = string.Join(",", bill.HouseDetails.Where(x => !x.DeleteState).Select(x => x.LiveColonyHouse_Name));
}
foreach (var bs in bill.SanctionDetails)
{
var first = dmo.WeighAbnormalRecording.FirstOrDefault(x => x.ID == bs.B3ID);
if (bs.DeleteState)
{
if (first != null)
dmo.WeighAbnormalRecording.Remove(first);
continue;
}
if (first == null)
{
first = new Weigh_AbnormalRecording();
dmo.WeighAbnormalRecording.Add(first);
first.CID = bs.ID;
}
first.Sanction_ID = bs.Sanction_ID;
first.AbnormalItem_ID = bs.AbnormalItem_ID;
first.Num = bs.Number ?? 0;
first.Weigh_ID = dmo.ID;
}
//var farmerDic = new Dictionary<string, object>();
//foreach (var farmerDetail in bill.FarmerDetails)
//{
// farmerDic.Add("ID", farmerDetail.B3ID);
// farmerDic.Add("Weigh_ID", bill.ID);
// farmerDic.Add("Farmer_ID", farmerDetail.Farmer_ID);
// farmerDic.Add("Number", farmerDetail.Number);
// farmerDic.Add("Weight", farmerDetail.Weight);
// farmerDic.Add("CID", farmerDetail.ID);
//}
//dic.Add("FarmerDetails", farmerDic);
//var farmerDic = new Dictionary<string, object>();
//foreach (var farmerDetail in bill.FarmerDetails)
//{
// farmerDic.Add("ID", farmerDetail.B3ID);
// farmerDic.Add("Weigh_ID", bill.ID);
// farmerDic.Add("Farmer_ID", farmerDetail.Farmer_ID);
// farmerDic.Add("Number", farmerDetail.Number);
// farmerDic.Add("Weight", farmerDetail.Weight);
// farmerDic.Add("CID", farmerDetail.ID);
//}
//dic.Add("FarmerDetails", farmerDic);
return null;
}
}
}

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

@ -1,72 +1,72 @@
//using BWP.B3ClientService.BO;
//using Forks.EnterpriseServices.DomainObjects2.DQuery;
//using Forks.JsonRpc.Client;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
//using TSingSoft.WebPluginFramework.BWPClients;
//using TSingSoft.WebPluginFramework.TimerTasks;
//using TSingSoft.WebPluginFramework;
//using Forks.JsonRpc.Client.Data;
//using Forks.EnterpriseServices.DomainObjects2;
using BWP.B3ClientService.BO;
using Forks.EnterpriseServices.DomainObjects2.DQuery;
using Forks.JsonRpc.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TSingSoft.WebPluginFramework.BWPClients;
using TSingSoft.WebPluginFramework.TimerTasks;
using TSingSoft.WebPluginFramework;
using Forks.JsonRpc.Client.Data;
using Forks.EnterpriseServices.DomainObjects2;
//namespace BWP.B3ClientService.Tasks
//{
// public class UploadTest : ITimerTask
// {
// public void Execute()
// {
// var serverUri = ServerHost.GetServerUrl();
// if (string.IsNullOrEmpty(serverUri))
// throw new Exception("请配置服务器地址");
namespace BWP.B3ClientService.Tasks
{
public class UploadTest : ITimerTask
{
public void Execute()
{
var serverUri = ServerHost.GetServerUrl();
if (string.IsNullOrEmpty(serverUri))
throw new Exception("请配置服务器地址");
// var list = GetWeightBill();
// foreach (var bill in list)
// {
// BWPClient bwpClient = new BWPClient(serverUri, bill.CreaterName);
// var obj = ConvertToRpcObject(bill);
// var id =bwpClient.Call<long>("/MainSystem/B3ButcherManage/Rpcs/TouchScreenUploadRpc/InsertWeighBill", obj);
// using (var dmo = Dmo.NewSession())
// {
// }
var list = GetWeightBill();
foreach (var bill in list)
{
BWPClient bwpClient = new BWPClient(serverUri, bill.Creator);
var obj = ConvertToRpcObject(bill);
var id = bwpClient.Call<long>("/MainSystem/B3ButcherManage/Rpcs/TouchScreenUploadRpc/InsertWeighBill", obj);
using (var dmo = Dmo.NewSession())
{
// }
// }
}
// IEnumerable<WeightBill> GetWeightBill()
// {
// var query = new DmoQuery(typeof(WeightBill));
// query.Where.Conditions.Add(DQCondition.EQ("Sync", false));
// return query.EExecuteList().Cast<WeightBill>();
// }
}
}
// Dictionary<string,object> ConvertToRpcObject(WeightBill bill)
// {
// var dic = new Dictionary<string, object>();
// dic.Add("AccountingUnit_ID", 1);
// dic.Add("Department_ID", 5);
// dic.Add("Domain_ID", 1);
// dic.Add("Zone_ID", bill.Zone_ID);
// dic.Add("Employee_ID", bill.Employee_ID);
// dic.Add("Supplier_ID", bill.Supplier_ID);
// dic.Add("WeighTime", bill.WeightTime);
// dic.Add("ShackPrice", bill.ShackPrice);
// dic.Add("ShackWeight", bill.ShackWeight);
// dic.Add("PurchaseType", bill.PurchaseType_ID);
// dic.Add("Inspector_ID", bill.Inspector_ID);
// dic.Add("Car_ID", bill.Car_ID);
// dic.Add("AnimalTestNumber", bill.AnimalTestNumber);
// dic.Add("AnimalTestDate", bill.AnimalTestDate);
// dic.Add("AnimalTestMan", bill.AnimalTestMan);
// return dic;
// }
IEnumerable<WeightBill> GetWeightBill()
{
var query = new DmoQuery(typeof(WeightBill));
query.Where.Conditions.Add(DQCondition.EQ("Sync", false));
return query.EExecuteList().Cast<WeightBill>();
}
// public string Name
// {
// get { return "测试上传"; }
// }
// }
//}
Dictionary<string, object> ConvertToRpcObject(WeightBill bill)
{
var dic = new Dictionary<string, object>();
dic.Add("AccountingUnit_ID", 1);
dic.Add("Department_ID", 5);
dic.Add("Domain_ID", 1);
dic.Add("Zone_ID", bill.Zone_ID);
dic.Add("Employee_ID", bill.Employee_ID);
dic.Add("Supplier_ID", bill.Supplier_ID);
dic.Add("WeighTime", bill.WeighTime);
dic.Add("ShackPrice", bill.ShackPrice);
dic.Add("ShackWeight", bill.ShackWeight);
dic.Add("PurchaseType", bill.PurchaseType_ID);
dic.Add("Inspector_ID", bill.Inspector_ID);
dic.Add("Car_ID", bill.Car_ID);
dic.Add("AnimalTestNumber", bill.AnimalTestNumber);
dic.Add("AnimalTestDate", bill.AnimalTestDate);
dic.Add("AnimalTestMan", bill.AnimalTestMan);
return dic;
}
public string Name
{
get { return "测试上传"; }
}
}
}

Loading…
Cancel
Save