/// <summary> /// Get Product Object and Put it into Session.SessionKeys.Product /// </summary> /// <param name="executionContext"></param> /// <returns></returns> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { string dnsn = CurrentSession.GetValue(Session.SessionKeys.DeliveryNo) as string; string palletNo = CurrentSession.GetValue(Session.SessionKeys.PalletNo) as string; IDeliveryRepository deliveryRep = RepositoryFactory.GetInstance().GetRepository<IDeliveryRepository, Delivery>(); int condDeviceQty = 0; bool isAllStatus1 = true; IList<DeliveryPalletInfo> lstPallets = deliveryRep.GetDeliveryPalletListByDN(dnsn); foreach (DeliveryPalletInfo p in lstPallets) { if (palletNo.Equals(p.palletNo)) { condDeviceQty = p.deviceQty; } else { if ("0".Equals(p.status)) { isAllStatus1 = false; } } } DeliveryPalletInfo dpiCond = new DeliveryPalletInfo(), dpiNew = new DeliveryPalletInfo(); dpiCond.deliveryNo = dnsn; dpiCond.palletNo = palletNo; dpiCond.deviceQty = condDeviceQty; dpiNew.deliveryNo = dnsn; dpiNew.palletNo = palletNo; dpiNew.deviceQty = condDeviceQty; dpiNew.status = "1"; dpiNew.editor = this.Editor; deliveryRep.UpdateDeliveryPalletInfoDefered(CurrentSession.UnitOfWork, dpiNew, dpiCond); if (isAllStatus1) { // deliveryRep.UpdateDeliveryStatusDefered(CurrentSession.UnitOfWork, dnsn, "88"); } return base.DoExecute(executionContext); }
/// <summary> /// /// </summary> /// <param name="executionContext"></param> /// <returns></returns> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { IProductRepository productRepository = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>(); IDeliveryRepository deliveryRepository = RepositoryFactory.GetInstance().GetRepository<IDeliveryRepository, Delivery>(); IPalletRepository palletRepository = RepositoryFactory.GetInstance().GetRepository<IPalletRepository, Pallet>(); IList<Delivery> deliveryList = CurrentSession.GetValue("DeliveryList") as IList<Delivery>; IList<Pallet> palletList = CurrentSession.GetValue("PalletList") as IList<Pallet>; IList<DeliveryPalletInfo> dpList = CurrentSession.GetValue("DeliveryPalletList") as IList<DeliveryPalletInfo>; foreach (Delivery ele in deliveryList) { Delivery item = deliveryRepository.Find(ele.DeliveryNo); if (null != item) { item.Editor = Editor; foreach (DeliveryInfo info in ele.DeliveryInfoes) { item.SetExtendedProperty(info.InfoType, info.InfoValue, info.Editor); } deliveryRepository.Update(item, CurrentSession.UnitOfWork); } else { deliveryRepository.Add(ele, CurrentSession.UnitOfWork); } } //<UC:2.18>若导入的Pallet存在于数据库中,则删除这个Pallet后再次导入 foreach (Pallet ele in palletList) { Pallet item = palletRepository.Find(ele.PalletNo); if (null != item) { item.Editor = Editor; palletRepository.Update(item, CurrentSession.UnitOfWork); } else { palletRepository.Add(ele, CurrentSession.UnitOfWork); } } foreach (DeliveryPalletInfo ele in dpList) { if (deliveryRepository.GetDeliveryPalletListByDN(ele.deliveryNo, ele.palletNo).Count > 0) { DeliveryPalletInfo cond = new DeliveryPalletInfo(); cond.deliveryNo = ele.deliveryNo; cond.palletNo = ele.palletNo; DeliveryPalletInfo item = new DeliveryPalletInfo(); item.editor = Editor; item.udt = DateTime.Now; deliveryRepository.UpdateDeliveryPalletInfoDefered(CurrentSession.UnitOfWork, item, cond); } else { deliveryRepository.InsertDeliveryPalletDefered(CurrentSession.UnitOfWork, ele); } } //<UC:2.20>本次导入的Model 以'PO'和'PF'(2012-09-27)开头的Delivery,需要同步上传信息到整机数据库,如果在整机的数据库中的Delivery/DeliveryInfo/Delivery_Pallet/Pallet 表中存在,则需要将整机的数据库中的Delivery/DeliveryInfo/Delivery_Pallet/Pallet 表中的对应记录删除后再上传 IList<Delivery> PODeliveryList = new List<Delivery>(); IList<Pallet> POPltList = new List<Pallet>(); IList<DeliveryPalletInfo> PODPList = new List<DeliveryPalletInfo>(); IList<string> PODNList = new List<string>(); IList<string> POPNList = new List<string>(); //Find all DN records whose Model property starts with "PO" foreach (Delivery ele in deliveryList) { //Mantis0001695: Final Scan需增加check前一站是否有刷入,新增172及60 開頭機型 if (ele.ModelName.StartsWith("PO") || ele.ModelName.StartsWith("PF") || ele.ModelName.StartsWith("172") || ele.ModelName.StartsWith("60")) { PODeliveryList.Add(ele); PODNList.Add(ele.DeliveryNo); } } //Find their related Delivery_Pallet records and PalletNo foreach (DeliveryPalletInfo ele in dpList) { if (PODNList.Contains(ele.deliveryNo)) { PODPList.Add(ele); POPNList.Add(ele.palletNo); } } //Find their related Pallet records foreach (Pallet ele in palletList) { if (POPNList.Contains(ele.PalletNo)) { POPltList.Add(ele); } } /* * Answer to: ITC-1414-0176 * Description: 导入的Model 以'PO'开头的Delivery,需要同步上传信息到整机数据库 */ if (PODNList.Count > 0) { //Call SP:Docking_ConnectPCDB to connect to PC database. //SP in-args: // none. //productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, // "Docking_ConnectPCDB"); foreach (Delivery ele in PODeliveryList) { //Call SP:Docking_DeleteDeliveryOfPC to do following: //delete from Delivery_Pallet where DeliveryNo=... //delete from DeliveryInfo where DeliveryNo=... //delete from Delivery where DeliveryNo=... //SP in-args: // @DeliveryNo varchar(20) //productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, // "Docking_DeleteDeliveryOfPC", // new SqlParameter("DeliveryNo", ele.DeliveryNo)); //Call SP:Docking_AddDeliveryOfPC to insert a Delivery record. //SP in-args: // @DeliveryNo char(20) // @ShipmentNo char(20) // @PoNo char(20) // @Model varchar(20) // @ShipDate datetime // @Qty int // @Status char(2) // @Editor varchar(30) productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, "Docking_AddDeliveryOfPC", new SqlParameter("DeliveryNo", ele.DeliveryNo), new SqlParameter("ShipmentNo", ele.ShipmentNo), new SqlParameter("PoNo", ele.PoNo), new SqlParameter("Model", ele.ModelName), new SqlParameter("ShipDate", ele.ShipDate), new SqlParameter("Qty", ele.Qty), new SqlParameter("Status", ele.Status), new SqlParameter("Editor", ele.Editor)); foreach (DeliveryInfo info in ele.DeliveryInfoes) { //Call SP:Docking_AddDeliveryInfoOfPC to insert a DeliveryInfo record. //SP in-args: // @DeliveryNo char(20) // @InfoType char(20) // @InfoValue nvarchar(200) // @Editor varchar(30) productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, "Docking_AddDeliveryInfoOfPC", new SqlParameter("DeliveryNo", ele.DeliveryNo), new SqlParameter("InfoType", info.InfoType), new SqlParameter("InfoValue", info.InfoValue), new SqlParameter("Editor", info.Editor)); } } foreach (Pallet ele in POPltList) { //Call SP:Docking_DeletePalletOfPC to do following: //delete from Delivery_Pallet where PalletNo=... //delete from Pallet where PalletNo=... //SP in-args: // @PalletNo varchar(20) //productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, // "Docking_DeletePalletOfPC", // new SqlParameter("PalletNo", ele.PalletNo)); //Call SP:Docking_AddPalletOfPC to insert a Pallet record. //SP in-args: // @PalletNo char(20) // @UCC char(30) // @Station char(10) // @Weight decimal(10,2) // @PalletModel char(10) // @Length decimal(10,2) // @Width decimal(10,2) // @Height decimal(10,2) // @Editor varchar(30) // @Weight_L decimal(10,2) productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, "Docking_AddPalletOfPC", new SqlParameter("PalletNo", ele.PalletNo), new SqlParameter("UCC", ele.UCC), new SqlParameter("Station", ele.Station), new SqlParameter("Weight", ele.Weight), //Mantis0001695: Final Scan需增加check前一站是否有刷入,新增區別Docking 使用棧板 new SqlParameter("PalletModel", "Docking"), //new SqlParameter("PalletModel", ele.PalletModel), new SqlParameter("Length", ele.Length), new SqlParameter("Width", ele.Width), new SqlParameter("Height", ele.Height), new SqlParameter("Editor", ele.Editor), new SqlParameter("Weight_L", ele.Weight_L)); } foreach (DeliveryPalletInfo ele in PODPList) { //Call SP:Docking_AddDeliveryPalletOfPC to insert a Delivery_Pallet record. //SP in-args: // @DeliveryNo char(20) // @PalletNo char(20) // @ShipmentNo char(20) // @DeliveryQty smallint // @Status char(1) // @Editor varchar(30) // @PalletType varchar(8) // @DeviceQty int productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, "Docking_AddDeliveryPalletOfPC", new SqlParameter("DeliveryNo", ele.deliveryNo), new SqlParameter("PalletNo", ele.palletNo), new SqlParameter("ShipmentNo", ele.shipmentNo), new SqlParameter("DeliveryQty", ele.deliveryQty), new SqlParameter("Status", ele.status), new SqlParameter("Editor", ele.editor), new SqlParameter("PalletType", ele.palletType), new SqlParameter("DeviceQty", ele.deviceQty)); } //Call SP:Docking_DisconnectPCDB to disconnect from PC database. //SP in-args: // none. //productRepository.ExecSpForNonQuery(SqlHelper.ConnectionString_PAK, // "Docking_DisconnectPCDB"); } return base.DoExecute(executionContext); }
/// <summary> /// Get DeliveryInfo to set DeliveryEx /// </summary> private DeliveryEx SetDeliveryEx(string deliveryNo, int qty, IList<DeliveryInfo> infoList, DeliveryPalletInfo deliveryPallet) { DeliveryEx item = new DeliveryEx(); item.DeliveryNo = deliveryNo; int DNCount =0; int cnQty = 0; string cqty = infoList.Where(x => x.InfoType == "CQty").Select(y => y.InfoValue).FirstOrDefault(); if (!string.IsNullOrEmpty(cqty)) { item.QtyPerCarton = (int)double.Parse(cqty); } foreach (DeliveryInfo info in infoList) { //if (string.IsNullOrEmpty(info.InfoValue)) //{ // continue; //} switch (info.InfoType) { case "Consolidated": string[] s = info.InfoValue.Split(new char[] { '/' }); item.ShipmentNo = s[0].Trim(); item.ConsolidateQty = int.Parse(s[1].Trim()); break; case "PackingType": item.ShipType = info.InfoValue; break; //case "CQty": case "CnQty": cnQty = (int)double.Parse(info.InfoValue); if (cnQty > 0) { item.QtyPerCarton = cnQty; } break; case "RegId": item.MessageCode = info.InfoValue; break; case "ShipToParty": item.ShipToParty = info.InfoValue.Substring(info.InfoValue.IndexOf("-") + 1).Trim(); break; case "GroupId": item.GroupId = info.InfoValue; break; case "Priority": item.Priority = info.InfoValue; break; case "Flag": item.OrderType= info.InfoValue; break; case "BOL": item.BOL= info.InfoValue; break; case "EmeaCarrier": item.HAWB = info.InfoValue; break; case "Carrier": item.Carrier = info.InfoValue; break; case "ShipWay": item.ShipWay = info.InfoValue; break; case "Invoice": item.PackID= info.InfoValue; break; case "InvoiceNum": DNCount=int.Parse( info.InfoValue); break; case "Invoice_NO": DNCount = int.Parse(info.InfoValue); break; case "PalletQty": string[] data = info.InfoValue.Split('.'); item.StdPltFullQty = data[0].Trim(); if (data.Length>1) { item.StdPltStackType = data[1].Trim(); } break; } } if (string.IsNullOrEmpty(item.ShipmentNo)) { item.ShipmentNo = deliveryNo.Substring(0, 10); item.ConsolidateQty = DNCount; } if (item.QtyPerCarton > 0) { item.CartonQty = qty % item.QtyPerCarton == 0 ? (qty / item.QtyPerCarton) : (qty / item.QtyPerCarton) + 1; } item.PalletType = deliveryPallet.palletNo.Substring(0, 2) == "NA" ? "C" : "P"; item.Editor = this.Editor; return item; }