HTML/views/ASNSetting/BoxInfo.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Pda/View/SoSetting/pingKuOut.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Model/ModelDto/PdaDto/PdaSoDto.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/Logic/AllotSku.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/PdaSoController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/WeatherForecastController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HTML/views/ASNSetting/BoxInfo.html
@@ -754,8 +754,8 @@ BoxNo2: data[0].Sheet1[i].BoxNo2, BoxNo3: data[0].Sheet1[i].BoxNo3, Qty: Qty, SkuNo: data[0].Sheet1[i].SkuNo, LotNo: data[0].Sheet1[i].LotNo, SkuNo: data[0].Sheet1[i].SkuNo.toString(), LotNo: data[0].Sheet1[i].LotNo.toString(), LotText: data[0].Sheet1[i].LotText, ProductionTime: data[0].Sheet1[i].ProductionTime, InspectMark: InspectMark, @@ -772,6 +772,7 @@ console.log(param) layer.load();//打开loading sendData(IP + "/BllAsn/ImportBllBoxInfo", param, 'post', function (res) { console.log(res); layer.closeAll(); //关闭loading if (res.code == 0) { //成功 layer.msg(res.msg, { Pda/View/SoSetting/pingKuOut.html
@@ -186,6 +186,8 @@ Type: "1", }; synData(IP + "/PdaSo/GetRunSoNoticeList", param, 'post', function (res) { console.log(res); if (res.code == 0) { //成功 console.log(res.data); for (var i = 0; i < res.data.length; i++) { @@ -280,6 +282,8 @@ "PalletNo": $("#PalletNo").val() } synData(IP + "/PdaSo/IsEnableOkPalletNo", param, 'post', function (res) { console.log("AAA"); console.log(res); if (res.code == 0) { //成功 updateBillList(); Wms/Model/ModelDto/PdaDto/PdaSoDto.cs
@@ -17,7 +17,7 @@ public class BoxInfo { public string BoxNo { get; set; } // 箱码/支码 public decimal Qty { get; set; } // 箱内数量 public decimal? Qty { get; set; } // 箱内数量 public string SkuNo { get; set; } // 物料编码 public string SkuName { get; set; } // 物料名称 public string LotNo { get; set; } // 批次 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -1222,10 +1222,10 @@ throw Oops.Bah("库存信息中不存在该托盘信息,请检查!"); } if (result.WareHouseNo != "W02")//W02:零箱库 { throw Oops.Bah("该托盘未在零箱库,请检查!"); } //if (result.WareHouseNo != "W02")//W02:零箱库 //{ // throw Oops.Bah("该托盘未在零箱库,请检查!"); //} #endregion @@ -1236,7 +1236,7 @@ { throw Oops.Bah("未获取到对应储位信息,请检查!"); } if (locat.Status != "1") if (locat.Status != "3") { throw Oops.Bah("当前储位不是有物品,请检查!"); } Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -4319,8 +4319,10 @@ foreach (var item in noticeDetail) { //验证先进先出原则 var forData = data.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 && dataDetail.Contains(m.LotNo)).Select(m=>m.LotNo).ToList(); //获取当前物料的所有批次信息(排除单据的批次,防止单据所在批次锁定数量后验证小于等于0) //获取当前物料的所有批次信息(排除单据的批次,防止单据所在批次锁定数量后验证小于等于0) var forData = data.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && (m.Qty - m.FrozenQty - m.LockQty) > 0 && dataDetail.Contains(m.LotNo)).Select(m=>m.LotNo).ToList(); forData.Add(item.LotNo); //集合添加单据的批次 //获取排序后的第一个批次 @@ -4333,15 +4335,37 @@ //验证效期优先原则 var forDataBox = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo != item.LotNo && m.Qty > 0).ToList(); var expirationTime = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.Qty > 0).OrderBy(m=>m.ExpirationTime).Select(m=>m.ExpirationTime).First(); //获取当前单据批次的最近效期 var num = forDataBox.Count(m => m.ExpirationTime > expirationTime); //获取库存中其它批次效期大于当前单据批次的效期数量 //判断是否大于0 if (num>0) //获取当前单据批次的最近效期 var expirationTimedt = dataBoxInfo.Where(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.Qty > 0).ToList(); if (expirationTimedt.Count > 0) { bl = false; break; var expirationTime = expirationTimedt.OrderBy(m => m.ExpirationTime).Select(m => m.ExpirationTime).First(); //获取库存中其它批次效期大于当前单据批次的效期数量 var num = forDataBox.Count(m => m.ExpirationTime > expirationTime); //判断是否大于0 if (num > 0) { bl = false; break; } } else { var dataDetailtime = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.InspectStatus == "1"). Where(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.Qty > 0) .OrderBy(m => m.ExpirationTime) .Select(m => m.ExpirationTime).First(); var num = forDataBox.Count(m => m.ExpirationTime > dataDetailtime); //判断是否大于0 if (num > 0) { bl = false; break; } } } @@ -4380,7 +4404,6 @@ var exAllotList = new List<BllExportAllot>(); var assign = new AllotSku(); var specialSku = new List<string>();//特殊物料集合, 无需托盘上全部分配的 Db.BeginTran(); try { @@ -4428,12 +4451,6 @@ { stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList(); } if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo)) { //分配整个托盘上的物料 只查询未分配的托盘 stockDetail = stockDetail.Where(m => m.Status == "0").ToList(); } if (stockDetail.Sum(m=>m.Qty-m.LockQty) < needQty) { throw new Exception("库存明细数量不足"); @@ -4451,16 +4468,7 @@ Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//托出库物品数 var qty = 0m; //分配货物 if (notice.Type == "1" && !specialSku.Contains(detail.SkuNo))//判断是否未领料出库 { //分配四楼备料投料的物料 qty += assign.LingLiaoAllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic); } else { qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); } qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, detail.LotNo, detail.IsMixBox); foreach (var sc in stockQtyDic) { var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key); @@ -4518,7 +4526,9 @@ if (qty > detail.Qty) { //库存总表 var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); var stock = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); stock.LockQty += qty-detail.Qty; Db.Updateable(stock).ExecuteCommand(); @@ -4579,7 +4589,8 @@ var zd = Db.Updateable(notice).ExecuteCommand(); //添加操作日志记录 var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "分配", $"自动分配了单据号为{notice.SONo}的单据信息", userId); var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "分配", $"自动分配了单据号为{notice.SONo}的单据信息", userId); if (zd > 0 && mx > 0 && fp > 0 && k) { Wms/WMS.BLL/Logic/AllotSku.cs
@@ -922,12 +922,13 @@ //立库内托盘 var detail3 = list.Where(m => m.WareHouseNo == "W01").ToList(); foreach (var item in detail2) { var dept = item.LocatNo.Substring(5,2); // 平库储位编码规则确认后,根据实际规则取深度 //foreach (var item in detail2) //{ // var dept = item.LocatNo.Substring(5,2); item.Dept = int.Parse(dept); } // item.Dept = int.Parse(dept); //} foreach (var item in detail3) { var dept = item.LocatNo.Substring(6, 2); @@ -935,27 +936,27 @@ item.Dept = int.Parse(dept); } //平库 var locate1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W02"); var data2 = new List<StockDetailDto>(); foreach (var pingku in detail2.OrderByDescending(a => a.PalletTags).ThenBy(m => m.Dept).ToList()) { if (data2.Contains(pingku)) { continue; } //var locate1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W02"); //var data2 = new List<StockDetailDto>(); //foreach (var pingku in detail2.OrderByDescending(a => a.PalletTags).ThenBy(m => m.Dept).ToList()) //{ // if (data2.Contains(pingku)) // { // continue; // } var currentLocate = locate1.First(m => m.LocatNo == pingku.LocatNo); var locateAfter = locate1.Where(m => m.AreaNo == currentLocate.AreaNo && m.Layer == currentLocate.Layer && m.Row == currentLocate.Row && int.Parse(m.Depth) < int.Parse(currentLocate.Depth)).OrderBy(m => m.Depth).ToList(); foreach (var locat in locateAfter) { if (detail2.Any(m => m.LocatNo == locat.LocatNo) && !data2.Contains(detail2.First(m => m.LocatNo == locat.LocatNo))) { data2.Add(detail2.First(m => m.LocatNo == locat.LocatNo)); } // var currentLocate = locate1.First(m => m.LocatNo == pingku.LocatNo); // var locateAfter = locate1.Where(m => m.AreaNo == currentLocate.AreaNo && m.Layer == currentLocate.Layer && m.Row == currentLocate.Row && int.Parse(m.Depth) < int.Parse(currentLocate.Depth)).OrderBy(m => m.Depth).ToList(); // foreach (var locat in locateAfter) // { // if (detail2.Any(m => m.LocatNo == locat.LocatNo) && !data2.Contains(detail2.First(m => m.LocatNo == locat.LocatNo))) // { // data2.Add(detail2.First(m => m.LocatNo == locat.LocatNo)); // } } data2.Add(pingku); } // } // data2.Add(pingku); //} //立库 var locate2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W01").ToList(); @@ -981,9 +982,9 @@ } data.AddRange(detail1); data.AddRange(data2); data.AddRange(data3); data.AddRange(detail1); // 库外 data.AddRange(detail2); // 平库 data.AddRange(data3); // 立库 return data; } Wms/Wms/Controllers/PdaSoController.cs
@@ -158,7 +158,7 @@ /// <param name="palletNo">托盘号</param> /// <returns></returns> [HttpGet] public async Task<dynamic> GetPingKuInfoByPallet(string soNo, string palletNo) public async Task<List<BoxInfo>> GetPingKuInfoByPallet(string soNo, string palletNo) { return await _pdaSoSvc.GetPingKuInfoByPallet(soNo, palletNo); } Wms/Wms/Controllers/WeatherForecastController.cs
@@ -1,19 +1,12 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Model.ModelVm; using Newtonsoft.Json; using Utility.Tools; using WMS.Entity.Context; using WMS.IBLL.ISysServer; using Wms.Tools; using Utility; namespace Wms.Controllers {