From 1543e640a8867fa7c8a99fae43402b81876a95a8 Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期六, 24 二月 2024 11:09:42 +0800 Subject: [PATCH] Merge branch 'csc' --- Wms/Model/ModelDto/PdaDto/PdaSoDto.cs | 6 +- Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs | 4 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 8 +- Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs | 2 Wms/WMS.BLL/Logic/AllotSku.cs | 18 ++--- Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs | 8 +- Wms/Wms/Controllers/DownApiController.cs | 33 +++++++++++ Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs | 8 +- Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | 82 ++++++++++++++++++++++----- 9 files changed, 125 insertions(+), 44 deletions(-) diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs index f90e033..4ef74ba 100644 --- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs +++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs @@ -48,22 +48,22 @@ /// <summary> /// Desc:鏁伴噺 /// </summary> - public int Qty { get; set; } + public decimal Qty { get; set; } /// <summary> /// Desc:鍒嗛厤鏁伴噺 /// </summary> - public int? AllotQty { get; set; } + public decimal? AllotQty { get; set; } /// <summary> /// Desc:涓嬫灦鏁伴噺 /// </summary> - public int? FactQty { get; set; } + public decimal? FactQty { get; set; } /// <summary> /// Desc:鎷h揣鏁伴噺 /// </summary> - public int? CompleteQty { get; set; } + public decimal? CompleteQty { get; set; } /// <summary> /// Desc:鍖呰缂栫爜 diff --git a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs index 962ca86..d694a54 100644 --- a/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs +++ b/Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs @@ -128,7 +128,7 @@ public string SkuNo { get; set; } //鐗╂枡缂栫爜 public string SkuName { get; set; } //鐗╂枡鍚嶇О public decimal Qty { get; set; } //搴撳瓨鏁伴噺 - public int ExQty { get; set; } //鏁伴噺 + public decimal ExQty { get; set; } //鏁伴噺 public string Standard { get; set; } public string IsBale { get; set; } //鏄惁瑁瑰寘 public string IsBelt { get; set; } //鏄惁鎵撳甫 @@ -214,7 +214,7 @@ /// <summary> /// Desc:鏁伴噺 /// </summary> - public int Qty { get; set; } + public decimal Qty { get; set; } /// <summary> /// Desc:鎷h揣鏁伴噺 diff --git a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs index 6b427a3..b82d1c7 100644 --- a/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs +++ b/Wms/Model/ModelDto/PdaDto/PdaSoDto.cs @@ -7,10 +7,10 @@ public class OutPdaInfo { public string OutModel { get; set; } // 鎷h揣鍖猴紙鍑哄簱鍙o級 - public int PlanQty { get; set; } // 璁″垝鏁伴噺 - public int? FinishQty { get; set; } // 瀹屾垚鏁伴噺 + public decimal PlanQty { get; set; } // 璁″垝鏁伴噺 + public decimal? FinishQty { get; set; } // 瀹屾垚鏁伴噺 public string Standard { get; set; } // 瑙勬牸 - public int PickQty { get; set; } // 鎵樼洏寰呮嫞鏁伴噺 + public decimal PickQty { get; set; } // 鎵樼洏寰呮嫞鏁伴噺 public decimal? PickedQty { get; set; } // 鎵樼洏宸叉嫞鏁伴噺 } public class BoxInfo diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs index 52a047c..0a362ba 100644 --- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs @@ -862,22 +862,48 @@ } } var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo)) - .GroupBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); + .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); - SysRoadwayUseLog useLog = Db.Ado.SqlQuerySingle<SysRoadwayUseLog>("select Top(1) * from SysRoadwayUseLog where IsDel=0 order by CreateTime desc"); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰� + SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m=>m.IsDel =="0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰� - var bindNum = Db.Queryable<BllPalletBind>() - .Where(m => m.IsDel == "0" && m.Status == "0" && !string.IsNullOrWhiteSpace(m.RoadwayNo)) - .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); + #region 纭畾宸烽亾鎺掑簭 + + List<string> roadList2 = new List<string>(); + List<string> roadSmall = new List<string>(); + List<string> roadLarge = new List<string>(); + if (useLog != null) + { + roadList2.Add(useLog.RoadwayNo); + foreach (var r in roadList) + { + if (r == useLog.RoadwayNo) + { + continue; + } + //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱 + //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛� + //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆� + var bol = String.CompareOrdinal(r, useLog.RoadwayNo); + if (bol < 0) + { + roadSmall.Add(r); + } + if (bol > 0) + { + roadLarge.Add(r); + } + } + roadList2.AddRange(roadLarge); + roadList2.AddRange(roadSmall); + } + + roadList = roadList2; + #endregion + var roadNo = ""; if (laneAllot == 0)//璺冲贩閬撳钩鍧囧垎閰� { - //濡傛灉鍚岀骇宸烽亾鏈夊鏉″垯鏌ヤ笂娆′綅缃棩蹇� - if (roadList.Count > 1) - { - useLog = Db.Queryable<SysRoadwayUseLog>().OrderByDescending(l => l.Id).First(); - } //鍙栧悇宸烽亾鎵�鏈夋帓绗竴涓悎閫備綅 foreach (var l in roadList) { @@ -888,7 +914,11 @@ } var locateCount = Db.Queryable<SysStorageLocat>() - .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo)).Count(); + .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l).Count(); + + var bindNum = Db.Queryable<BllPalletBind>() + .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo== l) + .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); if (locateCount - bindNum > 0) { roadNo = l; @@ -905,19 +935,39 @@ { if (useLog != null) { - roadNo = useLog.RoadwayNo; + var locateCount = Db.Queryable<SysStorageLocat>() + .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == useLog.RoadwayNo).Count(); + + var bindNum = Db.Queryable<BllPalletBind>() + .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == useLog.RoadwayNo) + .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); + if (locateCount - bindNum > 0) + { + roadNo = useLog.RoadwayNo; + } } } } else//鎸夌収宸烽亾浼樺厛绾у垎閰� { foreach (var item in roadList) - { - roadNo = item; + { + var locateCount = Db.Queryable<SysStorageLocat>() + .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == item).Count(); + + var bindNum = Db.Queryable<BllPalletBind>() + .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == item) + .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); + + if (locateCount - bindNum > 0) + { + roadNo = item; + } + //褰撳墠宸锋湁浣嶇疆鍒欓��鍑� if (roadNo != null) { break; - } + } } } @@ -975,7 +1025,7 @@ } #endregion - return null; + return comDto; } catch (Exception e) { diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 714766d..e863a79 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -2256,11 +2256,11 @@ } #endregion //鍙栧悎閫傚簱瀛樺晢鍝� - Dictionary<int, int> stockQtyDic = new Dictionary<int, int>();//鎵樺嚭搴撶墿鍝佹暟 + Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟 Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁� //鍒嗛厤璐х墿 //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic); - int qty = assign.AllotPallets(stockDetail, int.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); + var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); foreach (var sc in stockQtyDic) { @@ -2678,8 +2678,8 @@ //淇敼鍑哄簱鍗曠姸鎬� if (notice.Status == "0" || notice.Status == "1") { - int totalQty = 0; - int totalAllotQty = 0; + decimal totalQty = 0; + decimal totalAllotQty = 0; foreach (var item in detailList) { totalQty += item.Qty; diff --git a/Wms/WMS.BLL/Logic/AllotSku.cs b/Wms/WMS.BLL/Logic/AllotSku.cs index d0af838..3b600fd 100644 --- a/Wms/WMS.BLL/Logic/AllotSku.cs +++ b/Wms/WMS.BLL/Logic/AllotSku.cs @@ -14,14 +14,12 @@ /// 鍒嗛厤璐х墿 /// </summary> /// <param name="palletList">搴撳瓨鏄庣粏闆嗗悎</param> - /// <param name="goodCode">鐗╂枡缂栫爜</param> - /// <param name="lotNo">鎵规</param> /// <param name="needQty">闇�瑕佸垎閰嶇殑鏁伴噺</param> /// <param name="fullPalletQty">婊℃墭鏁伴噺</param> /// <param name="fullBoxQty">婊$鏁伴噺</param> /// <param name="stockQtyDic">鎵樺嚭搴撶墿鍝佹暟 key:搴撳瓨鎵樼洏琛ㄧ殑ID銆乿al:鎵樼洏涓婄殑鏁伴噺</param> /// <returns></returns> - public int AllotPallets(List<DataStockDetail> palletList, int needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, int> stockQtyDic) + public decimal AllotPallets(List<DataStockDetail> palletList, decimal needQty, int fullPalletQty, int fullBoxQty, Dictionary<int, decimal> stockQtyDic) { //浼樺厛鍏堣繘鍏堝嚭锛堝揩杩囨湡鐨勫厛鍑猴級 //浼樺厛闆剁銆侀浂鎵橈紙鍑哄畬闆剁鍑烘暣绠憋級 @@ -53,7 +51,7 @@ } } #endregion - var qty = 0; //鍒嗛厤鐨勬�绘暟閲� + decimal qty = 0; //鍒嗛厤鐨勬�绘暟閲� var ztNum = needQty / fullPalletQty;//闇�瑕佹暣鎵樻暟 var zps = palletList.Where(s => s.Qty >= fullPalletQty).ToList();//鏁存墭 @@ -66,7 +64,7 @@ //鏁f墭 foreach (var s in st) { - var detailQty = int.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); + var detailQty = decimal.Parse((s.Qty - s.LockQty - s.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -89,7 +87,7 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -123,7 +121,7 @@ var zt = zps.OrderBy(s => s.ExpirationTime).ToList();//鎵�鏈夋湭浣跨敤鐨勬墭鐩橈紙鏈鍒嗛厤鐨勶級 foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { break; @@ -144,7 +142,7 @@ foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -167,7 +165,7 @@ var zt = zps.Where(s => !sIds.Contains(s.Id)).OrderBy(s => s.ExpirationTime).ThenBy(m => m.Qty - m.LockQty - m.FrozenQty).ToList();//鎵�鏈夋湭浣跨敤锛堟湭琚垎閰嶇殑锛� foreach (var ss in zt) { - var detailQty = int.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); + var detailQty = decimal.Parse((ss.Qty - ss.LockQty - ss.FrozenQty).ToString()); if (needQty - qty < detailQty) { var num = needQty - qty; @@ -206,7 +204,7 @@ /// <param name="dic"></param> /// <param name="key"></param> /// <param name="v"></param> - private void SaveDic(Dictionary<int, int> dic, int key, int v) + private void SaveDic(Dictionary<int, decimal> dic, int key, decimal v) { if (dic.ContainsKey(key)) { diff --git a/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs b/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs index cc2dba3..5993cf9 100644 --- a/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs +++ b/Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs @@ -66,28 +66,28 @@ /// Default: /// Nullable:False /// </summary> - public int Qty {get;set;} + public decimal Qty {get;set;} /// <summary> /// Desc:鍒嗛厤鏁伴噺 /// Default: /// Nullable:True /// </summary> - public int? AllotQty {get;set;} + public decimal? AllotQty {get;set;} /// <summary> /// Desc:涓嬫灦鏁伴噺 /// Default:0 /// Nullable:True /// </summary> - public int? FactQty {get;set;} + public decimal? FactQty {get;set;} /// <summary> /// Desc:鎷h揣鏁伴噺 /// Default:0 /// Nullable:True /// </summary> - public int? CompleteQty {get;set;} + public decimal? CompleteQty {get;set;} /// <summary> /// Desc:鍖呰缂栫爜 diff --git a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs b/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs index 87334f4..e69a17d 100644 --- a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs +++ b/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs @@ -116,7 +116,7 @@ /// Default: /// Nullable:False /// </summary> - public int Qty {get;set;} + public decimal Qty {get;set;} /// <summary> /// Desc:鎷h揣鏁伴噺 diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs index 68f194a..2be6a9d 100644 --- a/Wms/Wms/Controllers/DownApiController.cs +++ b/Wms/Wms/Controllers/DownApiController.cs @@ -189,6 +189,39 @@ /// <returns></returns> [AllowAnonymous] [HttpPost] + public IActionResult RequestRoadWay(RequestLocate model) + { + var logStr = ""; + + logStr = $@".\log\WCS\WCS鐢宠宸烽亾" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + + try + { + + var jsonData = JsonConvert.SerializeObject(model); + LogFile.SaveLogToFile($"WCS鐢宠宸烽亾锛�( {jsonData} ),", logStr); + + var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo ); + + LogFile.SaveLogToFile($"WCS鐢宠鍌ㄤ綅杩斿洖锛�( {JsonConvert.SerializeObject(list)} ),", logStr); + + return Ok(new { Success = 0, Message = "鐢宠鍌ㄤ綅鎴愬姛", TaskList = list }); + } + catch (Exception e) + { + LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {e.Message} ),", logStr); + + return Ok(new ErpModel { Success = -1, Message = e.Message }); + } + } + + /// <summary> + /// 鐢宠鍌ㄤ綅 + /// </summary> + /// <param name="model">鍏ュ簱鍗曚俊鎭�</param> + /// <returns></returns> + [AllowAnonymous] + [HttpPost] public IActionResult RequestLocation(RequestLocate model) { -- Gitblit v1.8.0