BarCodeUpdater.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using UFIDA.U9.BC.BaseData;
  7. using UFSoft.UBF.Business;
  8. namespace UFIDA.U9.Cust.Kusi.CJJ.Plugin.BE
  9. {
  10. internal class BarCodeUpdater
  11. {
  12. public static void Update(long id, string entityType)
  13. {
  14. using (ISession session = Session.Open())
  15. {
  16. 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"
  17. , new UFSoft.UBF.PL.OqlParam[]
  18. {
  19. new UFSoft.UBF.PL.OqlParam(id),
  20. new UFSoft.UBF.PL.OqlParam(entityType)
  21. });
  22. if (tmp != null && tmp.Count > 0)
  23. {
  24. List<UFIDA.U9.BC.BaseData.BarCodeUsed> list = Distinct(tmp);
  25. foreach (var barCodeUsed in list)
  26. {
  27. //if (barCodeUsed.IsUpdateWh || barCodeUsed.CopyOfBarCodeApp == UFIDA.U9.BC.Common.CopyOfBarCodeAppsEnum.QuickTransIn)
  28. if (barCodeUsed.IsUpdateWh)
  29. {
  30. //if (barCodeUsed.Direct == UFIDA.U9.BC.Common.DirectEnum.Rcv || barCodeUsed.CopyOfBarCodeApp == UFIDA.U9.BC.Common.CopyOfBarCodeAppsEnum.QuickTransIn)
  31. string barCodeTmp = barCodeUsed.BarCode;
  32. UFIDA.U9.BC.Common.DirectEnum directEnum = barCodeUsed.Direct;
  33. decimal qty = barCodeUsed.CurQty;
  34. //BarCode barCodeMaster = barCodeUsed.BarCodeMaster;
  35. barCodeUsed.Remove();
  36. session.Commit();
  37. var barCodeUsedTmp = UFIDA.U9.BC.BaseData.BarCodeUsed.Finder.Find(string.Format("BarCode='{0}' order by CreatedOn desc",barCodeTmp));
  38. string binid = "";
  39. string bincode = "";
  40. string binname = "";
  41. string whid = "";
  42. string whcode = "";
  43. string whname = "";
  44. if (barCodeUsedTmp != null)
  45. {
  46. binid = barCodeUsedTmp["Cust4Binid"].ToString();
  47. bincode = barCodeUsedTmp["Cust4Bincode"].ToString();
  48. binname = barCodeUsedTmp["Cust4Binname"].ToString();
  49. whid = barCodeUsedTmp["Cust4Whid"].ToString();
  50. whcode = barCodeUsedTmp["Cust4Whcode"].ToString();
  51. whname = barCodeUsedTmp["Cust4Whname"].ToString();
  52. //barCodeMaster = barCodeUsedTmp.BarCodeMaster;
  53. }
  54. else
  55. {
  56. barCodeUsedTmp = barCodeUsed;
  57. }
  58. if (directEnum == UFIDA.U9.BC.Common.DirectEnum.Rcv)
  59. {
  60. //barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty - qty;
  61. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binid",binid);
  62. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Bincode",bincode);
  63. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binname",binname);
  64. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whcode", whcode);
  65. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whname", whname);
  66. //barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whid", whid);
  67. barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty - qty;
  68. if (barCodeUsedTmp.BarCodeMaster.WhQty < 0)
  69. {
  70. throw new Exception("不能弃审,弃审后条码现场量将小于0");
  71. }
  72. }
  73. else if (directEnum == UFIDA.U9.BC.Common.DirectEnum.Shipment)
  74. {
  75. barCodeUsedTmp.BarCodeMaster.WhQty = barCodeUsedTmp.BarCodeMaster.WhQty + qty;
  76. }
  77. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binid", binid);
  78. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Bincode", bincode);
  79. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Binname", binname);
  80. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whcode", whcode);
  81. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whname", whname);
  82. barCodeUsedTmp.BarCodeMaster.SetValue("Cust4Whid", whid);
  83. }
  84. }
  85. }
  86. session.Commit();
  87. }
  88. }
  89. public static List<UFIDA.U9.BC.BaseData.BarCodeUsed> Distinct(UFIDA.U9.BC.BaseData.BarCodeUsed.EntityList list)
  90. {
  91. Dictionary<string, UFIDA.U9.BC.BaseData.BarCodeUsed> dic = new Dictionary<string, UFIDA.U9.BC.BaseData.BarCodeUsed>();
  92. foreach (var barCodeUsed in list)
  93. {
  94. if (!dic.ContainsKey(barCodeUsed.BarCode))
  95. {
  96. dic.Add(barCodeUsed.BarCode, barCodeUsed);
  97. }
  98. }
  99. return new List<UFIDA.U9.BC.BaseData.BarCodeUsed>(dic.Values);
  100. }
  101. }
  102. }