Wms/Model/ModelDto/BllSoDto/ExportNoticeDetailDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Model/ModelDto/BllSoDto/ExportNoticeDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Model/ModelDto/PdaDto/PdaSoDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/Logic/AllotSku.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllSoEntity/BLLExportNoticeDetail.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/DownApiController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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:拣货数量 /// </summary> public int? CompleteQty { get; set; } public decimal? CompleteQty { get; set; } /// <summary> /// Desc:包装编码 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:拣货数量 Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
@@ -7,10 +7,10 @@ public class OutPdaInfo { public string OutModel { get; set; } // 拣货区(出库口) 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 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) { 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; 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、val:托盘上的数量</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 @@ //散托 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)) { 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:拣货数量 /// Default:0 /// Nullable:True /// </summary> public int? CompleteQty {get;set;} public decimal? CompleteQty {get;set;} /// <summary> /// Desc:包装编码 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:拣货数量 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) {