| @ -0,0 +1,111 @@ | |||||
| using BWP.B3CowButcherManage.Rpcs; | |||||
| using BWP.B3Frameworks; | |||||
| using BWP.B3Sale.BL; | |||||
| using BWP.B3Sale.BO; | |||||
| using Forks.EnterpriseServices.BusinessInterfaces; | |||||
| using Forks.EnterpriseServices.DomainObjects2; | |||||
| using Forks.EnterpriseServices.DomainObjects2.DQuery; | |||||
| using Forks.EnterpriseServices.SqlDoms; | |||||
| using Newtonsoft.Json; | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using TSingSoft.WebPluginFramework; | |||||
| using TSingSoft.WebPluginFramework.QueueTasks; | |||||
| namespace BWP.B3CowButcherManageToSale.TypeIOCs | |||||
| { | |||||
| [TypeIOC(typeof(SaleOutStoreBL), typeof(SaleOutStoreBL.BillBLIOCs.AfterCheck))] | |||||
| public class SaleOutStoreCheckBLTypeIoc : SaleOutStoreBL.BillBLIOCs.AfterCheck | |||||
| { | |||||
| public void Invoke(IDmoContext context, SaleOutStore dmo) | |||||
| { | |||||
| var task = new SaleInfoToButcherTask(dmo.ID); | |||||
| task.AddTaskUser_ID = BLContext.User.ID; | |||||
| task.DomainUser_ID = DomainContext.Current.DomainUser.ID; | |||||
| QueueTaskService.Add(task); | |||||
| } | |||||
| } | |||||
| [Serializable] | |||||
| class SaleInfoToButcherTask : QueueTaskBase | |||||
| { | |||||
| public long BillID { get; set; } | |||||
| public long DomainUser_ID { get; set; } | |||||
| public SaleInfoToButcherTask(long id) | |||||
| { | |||||
| BillID = id; | |||||
| } | |||||
| public override bool PersistTask | |||||
| { | |||||
| get | |||||
| { | |||||
| return true; | |||||
| } | |||||
| } | |||||
| protected override bool SingleTaskInQueue | |||||
| { | |||||
| get | |||||
| { | |||||
| return true; | |||||
| } | |||||
| } | |||||
| public override void Execute(QueueTaskContext context) | |||||
| { | |||||
| using (var scope = new SpecialDomainUserBLScope(DomainUser_ID)) | |||||
| { | |||||
| using (var session = Dmo.NewSession()) | |||||
| { | |||||
| var infos = GetBarCodeInfos(session, BillID); | |||||
| if(infos.Count==0) | |||||
| return; | |||||
| var json = JsonConvert.SerializeObject(infos); | |||||
| BarCodeProductRpc.UploadSaleOutInfo(json); | |||||
| } | |||||
| } | |||||
| } | |||||
| List<object> GetBarCodeInfos(IDmoSession session, long id) | |||||
| { | |||||
| var detail = new JoinAlias(typeof(SaleOutStore_Detail)); | |||||
| var bill = new JoinAlias(typeof(SaleOutStore)); | |||||
| var scan = new JoinAlias(typeof(WeightingInfo_ScanDetail)); | |||||
| var query = new DQueryDom(detail); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(bill), DQCondition.EQ(detail, "SaleOutStore_ID", bill, "ID")); | |||||
| query.From.AddJoin(JoinType.Left, new DQDmoSource(scan), DQCondition.EQ(detail, "ID", scan, "Detail_ID")); | |||||
| query.Columns.Add(DQSelectColumn.Field("LoadTime", bill)); | |||||
| query.Columns.Add(DQSelectColumn.Field("Weight", scan)); | |||||
| query.Columns.Add(DQSelectColumn.Field("Detail_ID", scan)); | |||||
| query.Columns.Add(DQSelectColumn.Field("BarCode", scan)); | |||||
| query.Where.Conditions.Add(DQCondition.And(DQCondition.EQ(detail, "SaleOutStore_ID", id), DQCondition.IsNotNull(DQExpression.Field(scan, "ID")))); | |||||
| query.Where.Conditions.Add(DQCondition.InEQ(scan, "BarCode", "")); | |||||
| var list = new List<object>(); | |||||
| using (var reader = session.ExecuteReader(query)) | |||||
| { | |||||
| while (reader.Read()) | |||||
| { | |||||
| var entity = new | |||||
| { | |||||
| SaleTime = (DateTime)reader[0], | |||||
| SaleWeight = (decimal)reader[1], | |||||
| SaleDetailID = (long)reader[2], | |||||
| BarCode = (string)reader[3] | |||||
| }; | |||||
| list.Add(entity); | |||||
| } | |||||
| } | |||||
| return list; | |||||
| } | |||||
| public override string Name | |||||
| { | |||||
| get { return string.Format("销售出库单No.{0}扫码信息到屠宰系统", BillID); } | |||||
| } | |||||
| } | |||||
| } | |||||