using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UFIDA.U9.BC.BaseData; using UFSoft.UBF.Business; namespace UFIDA.U9.Cust.Kusi.CJJ.Plugin.BE { internal class BarCodeUpdater { public static void Update(long id, string entityType) { using (ISession session = Session.Open()) { UFIDA.U9.BC.BaseData.BarCodeUsed.EntityList tmp = UFIDA.U9.BC.BaseData.BarCodeUsed.Finder.FindAll("UseDocLine.EntityID=@ID and UseDocLine.EntityType=@EntityType and CurQty>0 order by CreatedOn desc" , new UFSoft.UBF.PL.OqlParam[] { new UFSoft.UBF.PL.OqlParam(id), new UFSoft.UBF.PL.OqlParam(entityType) }); if (tmp != null && tmp.Count > 0) { List list = Distinct(tmp); foreach (var barCodeUsed in list) { //if (barCodeUsed.IsUpdateWh || barCodeUsed.CopyOfBarCodeApp == UFIDA.U9.BC.Common.CopyOfBarCodeAppsEnum.QuickTransIn) if (barCodeUsed.IsUpdateWh) { //if (barCodeUsed.Direct == UFIDA.U9.BC.Common.DirectEnum.Rcv || barCodeUsed.CopyOfBarCodeApp == UFIDA.U9.BC.Common.CopyOfBarCodeAppsEnum.QuickTransIn) string barCodeTmp = barCodeUsed.BarCode; UFIDA.U9.BC.Common.DirectEnum directEnum = barCodeUsed.Direct; decimal qty = barCodeUsed.CurQty; //BarCode barCodeMaster = barCodeUsed.BarCodeMaster; barCodeUsed.Remove(); session.Commit(); var barCodeUsedTmp = UFIDA.U9.BC.BaseData.BarCodeUsed.Finder.Find(string.Format("BarCode='{0}' order by CreatedOn desc",barCodeTmp)); string binid = ""; string bincode = ""; string binname = ""; string whid = ""; string whcode = ""; string whname = ""; if (barCodeUsedTmp != null) { binid = barCodeUsedTmp["Cust4Binid"].ToString(); bincode = barCodeUsedTmp["Cust4Bincode"].ToString(); binname = barCodeUsedTmp["Cust4Binname"].ToString(); whid = barCodeUsedTmp["Cust4Whid"].ToString(); whcode = barCodeUsedTmp["Cust4Whcode"].ToString(); whname = barCodeUsedTmp["Cust4Whname"].ToString(); //barCodeMaster = barCodeUsedTmp.BarCodeMaster; } else { barCodeUsedTmp = barCodeUsed; } if (directEnum == UFIDA.U9.BC.Common.DirectEnum.Rcv) { //barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty - qty; //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binid",binid); //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Bincode",bincode); //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binname",binname); //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whcode", whcode); //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whname", whname); //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whid", whid); barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty - qty; if (barCodeUsedTmp.BarCodeMaster.WhQty < 0) { throw new Exception("不能弃审,弃审后条码现场量将小于0"); } } else if (directEnum == UFIDA.U9.BC.Common.DirectEnum.Shipment) { barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty + qty; } barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binid", binid); barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Bincode", bincode); barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binname", binname); barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whcode", whcode); barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whname", whname); barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whid", whid); } } } session.Commit(); } } public static List Distinct(UFIDA.U9.BC.BaseData.BarCodeUsed.EntityList list) { Dictionary dic = new Dictionary(); foreach (var barCodeUsed in list) { if (!dic.ContainsKey(barCodeUsed.BarCode)) { dic.Add(barCodeUsed.BarCode, barCodeUsed); } } return new List(dic.Values); } } }