HTML/views/ASNSetting/AppointSlot.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Pda/View/AsnSetting/productEnterQuantity.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/DownApiController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HTML/views/ASNSetting/AppointSlot.html
@@ -32,7 +32,7 @@ </div> </div> --> <div class="layui-inline" style="margin-right: 0;"> <label class="layui-form-label" style="width: 60px;">所属区域</label> <label class="layui-form-label" style="width: 60px;">所属巷道</label> <div class="layui-input-inline" style="margin-right: 0;"> <select name="RoadwayNo" id="RoadwayNo" lay-filter="RoadwayNo" lay-search> <option value=""></option> @@ -57,7 +57,7 @@ <div class="layui-input-inline" style="margin-right: 0;"> <input type="number" id="Column" name="Column" placeholder="列" autocomplete="off" class="layui-input" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"> </div> </div> <!-- <label class="layui-form-label" style="width: 60px;">储列</label> <div class="layui-input-inline" style="margin-right: 0;"> <select name="Column" id="Column" lay-filter="Column" lay-search> @@ -98,7 +98,7 @@ </div> <div class="layui-card-body"> <table id="Slot-list" lay-filter="Slot-list"></table> </div> </div> </div> @@ -121,7 +121,7 @@ var id = getQueryString('id'); console.log(id); refreshTable(); function refreshTable(){ function refreshTable() { var where = { RoadwayNo: $("#RoadwayNo").val(), Row: $("#Row").val(), @@ -163,7 +163,7 @@ fixed: 'left', align: 'center', width: 160, hide:true hide: true }, { field: 'RoadwayNo', title: '所属区域', @@ -173,7 +173,7 @@ field: 'LocatNo', title: '储位编码', align: 'center', }, { field: 'Row', title: '排', @@ -190,31 +190,37 @@ align: 'center', width: 100, }, { field: 'Depth', title: '深度', align: 'center', width: 100, }, { field: 'Status', title: '状态', align: 'center', width: 110, templet: function (d) { switch (d.Status) { case "0": return '空储位'; case "0": return '空储位'; default: return ""; } }, }] ], }); } } var param = { wareHouseNo:"W01" wareHouseNo: "W01" } //获取 巷道下拉框 sendData(IP + "/Sys/GetStorageRoadwayByHouseNo", param, 'get', function(res) { sendData(IP + "/Sys/GetStorageRoadwayByHouseNo", param, 'get', function (res) { $("#RoadwayNo").empty(); $("#RoadwayNo").append('<option value =""></option>'); if (res.code == 0) { //成功 for (var i = 0; i < res.data.length; i++) { $("#RoadwayNo").append('<option value =' + res.data[i].RoadwayNo + '>' + for (var i = 0; i < res.data.length; i++) { $("#RoadwayNo").append('<option value =' + res.data[i].RoadwayNo + '>' + res.data[i].RoadwayName + '</option>'); } form.render('select'); @@ -222,7 +228,7 @@ layer.msg('获取巷道信息失败', { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }, function() { }, function () { //回调 form.render('select'); }); @@ -244,7 +250,7 @@ if (checkData.length === 0) { return layer.msg('请选择数据'); } var arr = checkData[0].Id; console.log(arr); var param = { Pda/View/AsnSetting/productEnterQuantity.html
@@ -105,7 +105,7 @@ <li id="option1">标签</li> <li id="option2">数量</li> </ul> --> <button id="option1" class="layout-btn" type="button">标签</button> <button id="option2" class="layout-btn" type="button">数量</button> <br /><br /> @@ -250,7 +250,7 @@ </table> <!-- 分页 --> <table id="tableBoxPages" class="tbl-box-pages" border="" cellspacing="" cellpadding=""> <tr > <tr> <td class="page-prev">上一页</td> <td class="page-num page-num-select">1</td> <td class="page-num">2</td> @@ -352,11 +352,12 @@ <div id="demodiv" class="layui-form-item layout-input" style="height: auto;"> <label class="layui-form-label">寄存备注:</label> <div class="layui-input-inline" style="width: 365px;height: auto;"> <textarea placeholder="请输入内容" id="NoticeDemo" name="NoticeDemo" class="layui-textarea" ></textarea> <textarea placeholder="请输入内容" id="NoticeDemo" name="NoticeDemo" class="layui-textarea"></textarea> </div> <br> </div> <table class="layout-tbl-submit" border="" cellspacing="" cellpadding=""> <tr> <td style="width: 23%;"></td> @@ -377,7 +378,7 @@ <div id="demodiv1"> <br><br><br><br><br><br><br> </div> <div id="" class="cut-line"> <img src="/assets/fengexian.png"> @@ -455,8 +456,8 @@ xianshiyemian = 1; $('#content1').hide(); $('#option1').attr("style", "background-color: #999;width: 50%;float: left;text-align: center;"); //默认颜色 $('#content2').show(); $('#option2').attr("style", "background-color: red;width: 50%;float: right;text-align: center;"); //选中后颜色 @@ -824,21 +825,19 @@ synData(IP + "/PdaAsn/GetArrivalNotice", param, 'post', function (res) { console.log(res) if (res.code == 0 && res.data != null) { //成功 //判断默认选中是否为寄存物料 if(res.data[0].Type == "7") { if (res.data[0].Type == "7") { $("textarea[name='NoticeDemo']").val(res.data[0].Demo); //备注 $('#demodiv').show(); $('#demodiv1').show(); } else { else { $('#demodiv').hide(); $('#demodiv1').hide(); } } else{ else { $('#demodiv').hide(); $('#demodiv1').hide(); } @@ -881,7 +880,7 @@ $("#Standard1").val(res.data.Standard); $("#ImportFactQuantity1").val(res.data.FactQty + ""); } else{} else { } }); } @@ -971,7 +970,7 @@ asnDetails = res.data; for (var i = 0; i < res.data.length; i++) { if (skuNo != '' && skuNo == res.data[i].SkuNo) { if (i == 0) { $("#goodSelect1").append('<option value =' + res.data[i].Id + ' selected>' + res.data[i] .SkuName); @@ -1005,7 +1004,7 @@ $('#goodSelect1').siblings("div.layui-form-select").find('dl').find(sel).addClass('layui-this') } } else { } }); } @@ -1142,6 +1141,7 @@ yes: function () { var param = { Id: parseInt(Id), PalletNo: res.data[0].PalletNo, }; console.log(Id) @@ -1293,99 +1293,99 @@ /* 分页 */ //设置分页 function setPages(pageIndex, boxNum) { if (boxNum <= 0) { //列表为空,隐藏分页页码 $("#tableBoxPages").hide() return } if (boxNum <= 0) { //列表为空,隐藏分页页码 $("#tableBoxPages").hide() return } let pageNum = Math.floor(boxNum / 10); if (boxNum % 10 > 0) { pageNum += 1; } //console.log("pageNum is " + pageNum) let pageNum = Math.floor(boxNum / 10); if (boxNum % 10 > 0) { pageNum += 1; } //console.log("pageNum is " + pageNum) $("#tableBoxPages").find("tr").remove() let table = $("#tableBoxPages") $("<tr></tr>").appendTo("#tableBoxPages") $("#tableBoxPages").find("tr").remove() let table = $("#tableBoxPages") $("<tr></tr>").appendTo("#tableBoxPages") // let newTr = table.append("<tr></tr>") // newTr.append("<td class='page-prev'>上一页</td>") $("<td id='prevPage' class='page-prev'>上一页</td>").appendTo("#tableBoxPages tr") $("#tableBoxPages tr").eq(0).find("td[id^='prevPage']").click(function () { onClickPrevPage() }) for (i = 1; i < pageNum + 1; i++) { // newTr.append("<td class='page-num'>"+ i +"</td>") $("<td class='page-num'>" + i + "</td>").appendTo("#tableBoxPages tr") } // newTr.append("<td class='page-next'>下一页</td>") $("<td id='nextPage' class='page-next'>下一页</td>").appendTo("#tableBoxPages tr") $("#tableBoxPages tr").eq(0).find("td[id^='nextPage']").click(function () { onClickNextPage() }) // pages.show() $("#tableBoxPages").show() // let newTr = table.append("<tr></tr>") // newTr.append("<td class='page-prev'>上一页</td>") $("<td id='prevPage' class='page-prev'>上一页</td>").appendTo("#tableBoxPages tr") $("#tableBoxPages tr").eq(0).find("td[id^='prevPage']").click(function () { onClickPrevPage() }) for (i = 1; i < pageNum + 1; i++) { // newTr.append("<td class='page-num'>"+ i +"</td>") $("<td class='page-num'>" + i + "</td>").appendTo("#tableBoxPages tr") } // newTr.append("<td class='page-next'>下一页</td>") $("<td id='nextPage' class='page-next'>下一页</td>").appendTo("#tableBoxPages tr") $("#tableBoxPages tr").eq(0).find("td[id^='nextPage']").click(function () { onClickNextPage() }) // pages.show() $("#tableBoxPages").show() setCurPage(1) } setCurPage(1) } //设置当前分页 function setCurPage(pageIndex) { let totalTrNum = $("#tableBoxList tr").length if (totalTrNum <= 2) { //console.log("tableBoxList 为空 totalTrNum: " + totalTrNum) //curPageIndex = 1 return } //设置当前分页 function setCurPage(pageIndex) { let totalTrNum = $("#tableBoxList tr").length if (totalTrNum <= 2) { //console.log("tableBoxList 为空 totalTrNum: " + totalTrNum) //curPageIndex = 1 return } let pageNum = getBoxPageNum() if (pageIndex > pageNum) { //console.log("设置的页码超出页数, pageIndex : " + pageIndex) //curPageIndex = 1 return } let pageNum = getBoxPageNum() if (pageIndex > pageNum) { //console.log("设置的页码超出页数, pageIndex : " + pageIndex) //curPageIndex = 1 return } let startIndex = (pageIndex - 1) * 10 + 1 let n = totalTrNum - startIndex let endIndex = 0 if (n > 9) { endIndex = startIndex + 9 } else { endIndex = startIndex + n } //console.log("startIndex is "+startIndex) //console.log("endIndex is "+endIndex) //startIndex =2 //endIndex = 2 let trs = $("#tableBoxList tr") //console.log("行数 "+trs.length) let d = 0 for (let i = 2; i < trs.length; i++) { //console.log("行索引 " + trs.eq(i).attr('index')) let t = trs.eq(i) d = t.attr('index') if (d >= startIndex && d <= endIndex) { //console.log("需要显示") //显示行 t.show() } else { //隐藏行 t.hide() } } let startIndex = (pageIndex - 1) * 10 + 1 let n = totalTrNum - startIndex let endIndex = 0 if (n > 9) { endIndex = startIndex + 9 } else { endIndex = startIndex + n } //console.log("startIndex is "+startIndex) //console.log("endIndex is "+endIndex) //startIndex =2 //endIndex = 2 let trs = $("#tableBoxList tr") //console.log("行数 "+trs.length) let d = 0 for (let i = 2; i < trs.length; i++) { //console.log("行索引 " + trs.eq(i).attr('index')) let t = trs.eq(i) d = t.attr('index') if (d >= startIndex && d <= endIndex) { //console.log("需要显示") //显示行 t.show() } else { //隐藏行 t.hide() } } curPageIndex = pageIndex curPageIndex = pageIndex let ptr = $("#tableBoxPages tr") for (let i = 1; i < pageNum + 1; i++) { ptr.eq(0).find("td").eq(i).removeClass("page-num-select") if (i == curPageIndex) { ptr.eq(0).find("td").eq(i).addClass("page-num-select") } } //console.log("totalTrNum is " + totalTrNum) } let ptr = $("#tableBoxPages tr") for (let i = 1; i < pageNum + 1; i++) { ptr.eq(0).find("td").eq(i).removeClass("page-num-select") if (i == curPageIndex) { ptr.eq(0).find("td").eq(i).addClass("page-num-select") } } //console.log("totalTrNum is " + totalTrNum) } function onClickPrevPage() { //console.log("上一页按钮被点击") @@ -1398,24 +1398,24 @@ function onClickNextPage() { //console.log("下一页按钮被点击") let n = getBoxPageNum() if (curPageIndex == n-1) { if (curPageIndex == n - 1) { return } setCurPage(curPageIndex + 1) } function getBoxPageNum() { let num = $("#tableBoxList tr").length if (num <= 2) { return 0 } let num = $("#tableBoxList tr").length if (num <= 2) { return 0 } let pageNum = Math.floor(num / 10); if (num % 10 > 0) { pageNum += 1; } let pageNum = Math.floor(num / 10); if (num % 10 > 0) { pageNum += 1; } return pageNum } return pageNum } /*——————————————————————————————————————————————————————————*/ Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -563,18 +563,23 @@ #region 指定储位 //指定储位数据源(正常的空储位) public List<LocatDto> GetLocateList(string houseNo, string roadwayNo, string row, string column, string layer, string locateNo, string BindId, int page, int limit, out int count) public List<LocatDto> GetLocateList(string houseNo, string roadwayNo, string row, string column, string layer, string locateNo, string BindId, int page, int limit, out int count) { try { //获取托盘绑定 var bindASNDetailNo = Db.Queryable<BllPalletBind>().Where(a => a.IsDel == "0" && a.Status == "0" && a.Id == int.Parse(BindId)).Select(a => a.ASNDetailNo).First(); var bindASNDetailNo = Db.Queryable<BllPalletBind>().Where(a => a.IsDel == "0" && a.Status == "0" && a.Id == int.Parse(BindId)).Select(a => a.ASNDetailNo).First(); //获取单据明细 var noticeDetailSkuNo = Db.Queryable<BllArrivalNoticeDetail>().Where(a => a.Id == bindASNDetailNo && a.IsDel == "0").Select(a => a.SkuNo).First(); var noticeDetailSkuNo = Db.Queryable<BllArrivalNoticeDetail>().Where(a => a.Id == bindASNDetailNo && a.IsDel == "0").Select(a => a.SkuNo).First(); //获取物料 var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == noticeDetailSkuNo).Select(a => a.CategoryNo).First(); var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == noticeDetailSkuNo) .Select(a => a.CategoryNo).First(); //获取物料对应区域 var categoryAreaNo = Db.Queryable<SysMaterialCategory>().Where(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo).Select(a => a.AreaNo).First(); var categoryAreaNo = Db.Queryable<SysMaterialCategory>().Where(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo) .Select(a => a.AreaNo).First(); Expression<Func<SysStorageLocat, bool>> item = Expressionable.Create<SysStorageLocat>() .AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo) @@ -595,6 +600,7 @@ Row = a.Row, Column = a.Column, Layer = a.Layer, Depth = a.Depth, Status = a.Status }).ToOffsetPage(page, limit, ref total); count = total; @@ -755,6 +761,7 @@ { try { #region 验证托盘合法性 //验证托盘条码是否为空 if (string.IsNullOrEmpty(palletNo)) { @@ -771,17 +778,17 @@ throw new Exception("平库请使用PDA手持进行平库入库"); } OutCommandDto comDto;//返回wcs的入库命令 var isHaveLocateNo = false; //托盘绑定信息中是否已有指定储位 var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//托盘信息 //判断托盘条码是否有效 if (stock == null) { throw new Exception("托盘条码不受WMS管理,不可入库!"); } #endregion OutCommandDto comDto;//返回wcs的入库命令 var isHaveLocateNo = false; // 是否已有指定储位 #region //查询托盘绑定信息(状态为等待入库的) @@ -823,6 +830,8 @@ isHaveLocateNo = true; //已有指定储位 } // 验证是否关联单据,获取托盘上存放的物料 if (palletBindList.First().Type == "0") //物料托入库 { //判断是否绑定单据及单据状态是否正常 @@ -833,7 +842,7 @@ { throw new Exception("托盘存在物料未绑定入库单,不可入库!"); } if (notice.Status == "3") if (notice.Status == "3" || notice.Status == "4") { throw new Exception($"入库单{item.ASNNo}已关闭,不可入库!"); } @@ -865,29 +874,23 @@ skuNo = stockDetail.First().SkuNo; //获取对应回库规则 var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "托盘回库验证" && a.IsEnable == "NO"); var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun041" && a.IsEnable == "NO"); #region 托盘回库规则 if (function != null) { //拣货完成后允许托盘回库 if (function.SetValue == "CompletePick") { var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); //验证拣货明细是否存在 if (allot != null) //验证拣货明细是否存在 if (allot != null) { //验证当前托盘拣货信息是否已完成 if (allot.Status != "5") { //验证当前托盘拣货信息是否已完成 if (allot.Status != "5") { throw new Exception("当前托盘拣货信息未完成,请完成后回库!"); } throw new Exception("当前托盘拣货信息未完成,请完成后回库!"); } } } #endregion } @@ -895,6 +898,7 @@ SysStorageLocat locate; #region 根据sku确认区域划分 var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); if (sku == null) { @@ -940,9 +944,10 @@ .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m => m.IsDel == "0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //巷道最后一次使用记录 #endregion #region 确定巷道排序 List<string> roadList2 = new List<string>(); List<string> roadSmall = new List<string>(); List<string> roadLarge = new List<string>(); @@ -1054,19 +1059,43 @@ Db.BeginTran(); try { if (roadNo != null) //添加巷道使用记录 var log = new SysRoadwayUseLog { //添加巷道使用记录 var log = new SysRoadwayUseLog { RoadwayNo = roadNo, WareHouseNo = houseNo, Row = 0, Column = 0, Layer = 0, }; Db.Insertable(log).ExecuteCommand(); } RoadwayNo = roadNo, WareHouseNo = houseNo, Row = 0, Column = 0, Layer = 0, }; Db.Insertable(log).ExecuteCommand(); // 添加入库日志记录 var taskNo = new Common().GetMaxNo("TK"); var exTask = new LogTask //入库任务 { TaskNo = taskNo, Sender = "WMS", Receiver = "WCS", IsSuccess = 1, //是否下发成功 0失败 1成功 SendDate = DateTime.Now, //发送时间 BackDate = DateTime.Now, //返回时间 StartRoadway = "", // 起始巷道 StartLocat = "",//起始位置 EndLocat = "",//目标位置 EndRoadway = roadNo, // 目标巷道 PalletNo = palletNo,//托盘码 IsSend = 1,//是否可再次下发 IsCancel = 1,//是否可取消 IsFinish = 1,//是否可完成 Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 Status = "1",//任务状态0:等待执行1正在执行2执行完成 OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 Msg = "入库口到=>>" + roadNo + "巷道的入库任务", //关键信息 }; Db.Insertable(exTask).ExecuteCommand(); if (palletBindList.Count >= 1) { @@ -1079,6 +1108,7 @@ Db.Updateable(palletBindList).ExecuteCommand(); } Db.CommitTran(); comDto = new OutCommandDto() { PalletNo = palletNo,//托盘号 @@ -1086,12 +1116,11 @@ StartLocate = "", // 起始位置 EndLocate = "", // 目标位置 EndRoadway = roadNo, // 目标巷道 TaskNo = "", // 任务号 TaskType = "0",// 任务类型 (出库) TaskNo = taskNo, // 任务号 TaskType = "0",// 任务类型:入库任务 OutMode = "", //目标地址 Order = 1 }; } catch (Exception ex) { Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -1789,9 +1789,9 @@ } //根据单据号获取入库单总单 var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo); if (notice.Status != "0" && notice.Status != "1") if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") { throw new Exception("-1:入库单状态不是等待执行或执行完成!"); throw new Exception("-1:该单据已关单!"); } if (string.IsNullOrEmpty(model.LotNo)) { Wms/Wms/Controllers/DownApiController.cs
@@ -185,7 +185,7 @@ #region WMS接口 被下游系统接口调用 /// <summary> /// 申请储位 /// 申请巷道 /// </summary> /// <param name="model">入库单信息</param> /// <returns></returns> @@ -205,14 +205,18 @@ var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo ); LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr); LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2); return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list }); } catch (Exception e) { LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr); new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2); return Ok(new ErpModel { Success = -1, Message = e.Message }); } }