| | |
| | | |
| | | } |
| | | |
| | | |
| | | var isChongFu = true; |
| | | //绑定到托盘事件 |
| | | form.on('submit(formBind)', function (data) { |
| | | if (xianshiyemian == 0) { |
| | | console.log($("#goodSelect").val()); |
| | | if ($("#bar").val() == "") { |
| | | layer.msg('请选择入库单', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#goodSelect").val() == "") { |
| | | layer.msg('请选择物料及明细', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#STOCKCODE").val() == "") { |
| | | layer.msg('请扫描托盘条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#BOXCODE").val() == "") { |
| | | layer.msg('请扫描外箱条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | var param = { |
| | | AsnNo: $("#bar").val(), |
| | | PalletNo: $("#STOCKCODE").val(), |
| | | AsnDetailId: parseInt($("#goodSelect").val()), |
| | | LotNo: $("#goodSelect").find("option:selected").text(), |
| | | BoxNo: $("#BOXCODE").val(), |
| | | IsContinue: isContinue, |
| | | TailBoxNo: $("#BOXCODE2").val(), |
| | | Origin: "PDA", |
| | | TableType: xianshiyemian, |
| | | } |
| | | console.log(param) |
| | | //组盘 |
| | | sendData(IP + "/PdaAsn/BindPallet", param, 'post', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | layer.msg(res.msg, { |
| | | icon: 1, |
| | | time: 1000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | setOrderGoods(); |
| | | //refreshTable(); |
| | | $("#BOXCODE").val(""); |
| | | $("#BOXCODE2").val(""); |
| | | $("#QTY").val(""); |
| | | }); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | | if (isChongFu == true) { |
| | | isChongFu = false; |
| | | |
| | | if (xianshiyemian == 0) { |
| | | if ($("#bar").val() == "") { |
| | | layer.msg('请选择入库单', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | //回调 |
| | | }); |
| | | return; |
| | | } |
| | | }); |
| | | } |
| | | else if (xianshiyemian == 1) { |
| | | if ($("#bar1").val() == "") { |
| | | layer.msg('请选择入库单', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#goodSelect1").val() == "") { |
| | | layer.msg('请选择物料及明细', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#STOCKCODE1").val() == "") { |
| | | layer.msg('请扫描托盘条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | // 获取输入的值并处理 |
| | | var skuQty = parseFloat($("#SkuQty").val()) || 0; |
| | | // 确保显示时保留4位小数 |
| | | var formattedQty = skuQty.toFixed(4); |
| | | |
| | | var param = { |
| | | AsnNo: $("#bar1").val(), //出库单据 |
| | | PalletNo: $("#STOCKCODE1").val(), //托盘条码 |
| | | AsnDetailId: parseInt($("#goodSelect1").val()), //入库单明细ID |
| | | LotNo: $("#goodSelect1").find("option:selected").text(), //物料批次 |
| | | SkuQty: Number(skuQty), //物料数量 |
| | | Demo: $("#NoticeDemo").val(), //物料数量 |
| | | Origin: "PDA", |
| | | TableType: xianshiyemian, |
| | | } |
| | | |
| | | console.log(param) |
| | | //组盘 |
| | | sendData(IP + "/PdaAsn/BindPallet", param, 'post', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | layer.msg(res.msg, { |
| | | icon: 1, |
| | | time: 1000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | setOrderGoods(); |
| | | //refreshTable(); |
| | | $("#STOCKCODE").val(""); |
| | | $("#SkuQty").val(""); |
| | | }); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | | if ($("#goodSelect").val() == "") { |
| | | layer.msg('请选择物料及明细', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | //回调 |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#STOCKCODE").val() == "") { |
| | | layer.msg('请扫描托盘条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#BOXCODE").val() == "") { |
| | | layer.msg('请扫描外箱条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | var param = { |
| | | AsnNo: $("#bar").val(), |
| | | PalletNo: $("#STOCKCODE").val(), |
| | | AsnDetailId: parseInt($("#goodSelect").val()), |
| | | LotNo: $("#goodSelect").find("option:selected").text(), |
| | | BoxNo: $("#BOXCODE").val(), |
| | | IsContinue: isContinue, |
| | | TailBoxNo: $("#BOXCODE2").val(), |
| | | Origin: "PDA", |
| | | TableType: xianshiyemian, |
| | | } |
| | | layer.msg('数据提交中,正在组托...'); |
| | | setTimeout(function() { |
| | | //组盘 |
| | | sendData(IP + "/PdaAsn/BindPallet", param, 'post', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | layer.msg(res.msg, { |
| | | icon: 1, |
| | | time: 1000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | setOrderGoods(); |
| | | //refreshTable(); |
| | | $("#BOXCODE").val(""); |
| | | $("#BOXCODE2").val(""); |
| | | $("#QTY").val(""); |
| | | |
| | | isChongFu = true; |
| | | }); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | //回调 |
| | | isChongFu = true; |
| | | }); |
| | | } |
| | | }); |
| | | }, 2000); // 延迟 1.5 秒 |
| | | |
| | | } |
| | | else if (xianshiyemian == 1) { |
| | | if ($("#bar1").val() == "") { |
| | | layer.msg('请选择入库单', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#goodSelect1").val() == "") { |
| | | layer.msg('请选择物料及明细', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | if ($("#STOCKCODE1").val() == "") { |
| | | layer.msg('请扫描托盘条码', { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | return; |
| | | } |
| | | // 获取输入的值并处理 |
| | | var skuQty = parseFloat($("#SkuQty").val()) || 0; |
| | | // 确保显示时保留4位小数 |
| | | var formattedQty = skuQty.toFixed(4); |
| | | |
| | | var param = { |
| | | AsnNo: $("#bar1").val(), //出库单据 |
| | | PalletNo: $("#STOCKCODE1").val(), //托盘条码 |
| | | AsnDetailId: parseInt($("#goodSelect1").val()), //入库单明细ID |
| | | LotNo: $("#goodSelect1").find("option:selected").text(), //物料批次 |
| | | SkuQty: Number(skuQty), //物料数量 |
| | | Demo: $("#NoticeDemo").val(), //物料数量 |
| | | Origin: "PDA", |
| | | TableType: xianshiyemian, |
| | | } |
| | | |
| | | console.log(param) |
| | | //组盘 |
| | | sendData(IP + "/PdaAsn/BindPallet", param, 'post', function (res) { |
| | | if (res.code == 0) { //成功 |
| | | layer.msg(res.msg, { |
| | | icon: 1, |
| | | time: 1000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | setOrderGoods(); |
| | | //refreshTable(); |
| | | $("#STOCKCODE").val(""); |
| | | $("#SkuQty").val(""); |
| | | |
| | | isChongFu = true; |
| | | }); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | //回调 |
| | | isChongFu = true; |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }else{ |
| | | layer.msg("请勿重复点击", { |
| | | icon: 2, |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | } |
| | | |
| | | |
| | | return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。 |
| | | }); |
| | |
| | | autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <!-- 箱码 --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label">箱码</label> |
| | | <div class="layui-input-block"> |
| | | <input id="BoxNo" type="text" lay-verify="stock" placeholder="箱码" |
| | | autocomplete="off" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <!-- --> |
| | | <div id="" class="layui-form-item layout-input" style="margin-top: 5px;"> |
| | | <label class="layui-form-label">物料编码</label> |
| | | <div class="layui-input-block"> |
| | |
| | | function clear(){ |
| | | $("#LocatNo").val(''); |
| | | $("#PalletNo").val(''); |
| | | $("#BoxNo").val(''); |
| | | $("#SkuNo").val(""); |
| | | $("#SkuName").val(""); |
| | | $("#Standard").val(""); |
| | | } |
| | | |
| | | $("#btnQuery").click(function(){ |
| | | if($('#LocatNo').val() == '' && $('#PalletNo').val() == '' && $('#SkuName').val() == ''){ |
| | | if($('#LocatNo').val() == '' && $('#PalletNo').val() == '' && $('#BoxNo').val() == '' && $('#SkuName').val() == ''){ |
| | | // layer.msg("请输入查询条件", { |
| | | // icon: 2, |
| | | // time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | |
| | | var param = { |
| | | LocatNo: $('#LocatNo').val(), |
| | | PalletNo: $('#PalletNo').val(), |
| | | BoxNo:$('#BoxNo').val(), |
| | | }; |
| | | sendData(IP + "/PdaCr/GetStockQueryList", param, 'get', function(res) { |
| | | console.log("库存查询:",res) |
| | |
| | | clear(); |
| | | $("#LocatNo").val(res.data[0].LocatNo); |
| | | $("#PalletNo").val(res.data[0].PalletNo); |
| | | $("#BoxNo").val(res.data[0].BoxNo); |
| | | $("#SkuNo").val(res.data[0].SkuNo); |
| | | $("#SkuName").val(res.data[0].SkuName); |
| | | $("#Standard").val(res.data[0].Standard); |
| | |
| | | /// <param name="locatNo">储位编号</param> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | public async Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo) |
| | | //public async Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo) |
| | | //{ |
| | | // return await Db.Queryable<DataStockDetail>() |
| | | // .Where(s => s.IsDel == "0" && s.LocatNo.Contains(locatNo) || s.PalletNo.Contains(palletNo)) |
| | | // .OrderBy(s => new { s.LotNo, s.LocatNo, s.PalletNo }) |
| | | // .ToListAsync(); |
| | | //} |
| | | public async Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo, string boxNo) |
| | | { |
| | | return await Db.Queryable<DataStockDetail>() |
| | | .Where(s => s.IsDel == "0" && s.LocatNo.Contains(locatNo) || s.PalletNo.Contains(palletNo)) |
| | | .OrderBy(s => new { s.LotNo, s.LocatNo, s.PalletNo }) |
| | | .ToListAsync(); |
| | | |
| | | .LeftJoin<DataBoxInfo>((stk, box) => stk.LotNo == box.LotNo) |
| | | .Where((stk, box) => stk.IsDel == "0") |
| | | .WhereIF(!string.IsNullOrWhiteSpace(locatNo),(stk, box) => stk.LocatNo.Contains(locatNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(palletNo),(stk, box) => stk.PalletNo.Contains(palletNo)) |
| | | .WhereIF(!string.IsNullOrWhiteSpace(boxNo),(stk, box) => box.BoxNo.Contains(boxNo)) |
| | | .OrderBy((stk, box) => new { stk.LotNo, stk.LocatNo, stk.PalletNo, box.BoxNo }) |
| | | .Select((stk, box) => stk) |
| | | .ToListAsync(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 托盘变更(托盘解绑绑定) |
| | |
| | | { |
| | | throw Oops.Bah("托盘储位信息不存在,请检查!"); |
| | | } |
| | | if (models.WareHouseNo != "W04") |
| | | if (models.WareHouseNo != "W04" && models.WareHouseNo != "W02") |
| | | { |
| | | throw Oops.Bah("该托盘未在平库内,请检查!"); |
| | | throw Oops.Bah("该托盘未在平库内或货架库内,请检查!"); |
| | | } |
| | | return models.LocatNo; |
| | | } |
| | |
| | | { |
| | | throw Oops.Bah("托盘储位信息不存在,请检查!"); |
| | | } |
| | | if (models.WareHouseNo != "W04") |
| | | if (models.WareHouseNo != "W04" && models.WareHouseNo != "W02") |
| | | { |
| | | throw Oops.Bah("该托盘未在平库内,请检查!"); |
| | | } |
| | |
| | | throw Oops.Bah("储位信息不存在,请检查!"); |
| | | } |
| | | |
| | | |
| | | storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo != storageLocat.AreaNo && w.WareHouseNo == "W04").OrderBy(o => o.AreaNo).ToListAsync(); |
| | | if (models.WareHouseNo == "W02") |
| | | { |
| | | storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo != storageLocat.AreaNo && w.WareHouseNo == "W04" && (w.AreaNo == "B01" || w.AreaNo == "B02")).OrderBy(o => o.AreaNo).ToListAsync(); |
| | | } |
| | | else |
| | | { |
| | | storageArea = await Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.AreaNo != storageLocat.AreaNo && w.WareHouseNo == "W04").OrderBy(o => o.AreaNo).ToListAsync(); |
| | | } |
| | | |
| | | } |
| | | return storageArea; |
| | |
| | | /// <param name="palletNo"></param> |
| | | /// <param name="areaNo"></param> |
| | | /// <param name="ruku"></param> |
| | | public async Task AgvTransport(string palletNo, string areaNo, string ruku, string url, int userId) |
| | | /*public async Task AgvTransport(string palletNo, string areaNo, string ruku, string url, int userId) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw Oops.Bah("托盘储位信息不存在,请检查!"); |
| | | } |
| | | if (stockDetail.WareHouseNo != "W04") |
| | | if (stockDetail.WareHouseNo != "W04" && stockDetail.WareHouseNo != "W02") |
| | | { |
| | | throw Oops.Bah("该托盘未在平库内,请检查!"); |
| | | } |
| | |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | }*/ |
| | | |
| | | public async Task AgvTransport(string palletNo, string areaNo, string ruku, string url, int userId) |
| | | { |
| | | try |
| | | { |
| | | if (string.IsNullOrEmpty(palletNo)) |
| | | { |
| | | throw Oops.Bah("请扫描托盘条码!"); |
| | | } |
| | | if (string.IsNullOrEmpty(areaNo) && string.IsNullOrEmpty(ruku)) |
| | | { |
| | | throw Oops.Bah("请选择目标区域或入库口!"); |
| | | } |
| | | if (!string.IsNullOrEmpty(areaNo) && !string.IsNullOrEmpty(ruku)) |
| | | { |
| | | throw Oops.Bah("目标区域和入库口不能同时选择!"); |
| | | } |
| | | string EndLocat = string.Empty;//目标位置 |
| | | |
| | | var log = await Db.Queryable<LogTask>().FirstAsync(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1")); |
| | | if (log != null) |
| | | { |
| | | throw Oops.Bah("该托盘已有等待执行或正在执行的任务!"); |
| | | } |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(w => w.IsDel == "0" && w.PalletNo == palletNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("托盘上物料库存明细信息不存在,请检查!"); |
| | | } |
| | | if (!string.IsNullOrEmpty(areaNo)) |
| | | { |
| | | var storageArea = await Db.Queryable<SysStorageArea>().FirstAsync(w => w.IsDel == "0" && w.AreaNo == areaNo); |
| | | if (storageArea == null) |
| | | { |
| | | throw Oops.Bah("所选区域信息不存在,请检查!"); |
| | | } |
| | | EndLocat = await GetLocat(areaNo); |
| | | } |
| | | else |
| | | { |
| | | EndLocat = ruku; |
| | | } |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(w => w.IsDel == "0" && w.SkuNo == stockDetail.SkuNo && w.LotNo == stockDetail.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("托盘上物料库存信息不存在,请检查!"); |
| | | } |
| | | if (string.IsNullOrEmpty(stockDetail.LocatNo)) |
| | | { |
| | | throw Oops.Bah("托盘储位信息不存在,请检查!"); |
| | | } |
| | | if (stockDetail.WareHouseNo != "W04") |
| | | { |
| | | throw Oops.Bah("该托盘未在平库内,请检查!"); |
| | | } |
| | | |
| | | //起始储位信息 |
| | | var storageLocat = await Db.Queryable<SysStorageLocat>().FirstAsync(w => w.IsDel == "0" && w.LocatNo == stockDetail.LocatNo); |
| | | if (storageLocat == null) |
| | | { |
| | | throw Oops.Bah("储位信息不存在,请检查!"); |
| | | } |
| | | //目标储位信息 |
| | | //var storageLocatEnd = new SysStorageLocat(); |
| | | |
| | | var storageLocatEnd = await Db.Queryable<SysStorageLocat>().FirstAsync(w => w.IsDel == "0" && w.LocatNo == EndLocat && w.Flag == "0"); |
| | | if (storageLocatEnd == null) |
| | | { |
| | | throw Oops.Bah("目标储位信息不存在,请检查!"); |
| | | } |
| | | |
| | | |
| | | //添加出库任务 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | var moveTask = new LogTask |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | |
| | | StartLocat = stockDetail.LocatNo,//起始位置 |
| | | EndLocat = EndLocat,//目标位置 |
| | | PalletNo = palletNo,//托盘码 |
| | | Msg = string.Format("转运任务:{0}=>>{1}", stockDetail.LocatNo, EndLocat), |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "2",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "3",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | |
| | | CreateTime = DateTime.Now |
| | | }; |
| | | await Db.Insertable(moveTask).ExecuteCommandAsync(); |
| | | |
| | | //修改库存明细信息 |
| | | //stockDetail.Status = "4";//移库锁定 |
| | | //stockDetail.LockQty = stockDetail.Qty;//锁定库存数量 |
| | | //await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | ////修改库存信息 |
| | | //stock.LockQty += (decimal)stockDetail.Qty; |
| | | //await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | |
| | | //修改起始储位地址状态 |
| | | storageLocat.Status = "5";//0:空储位 1:有物品 2:入库中 3:出库中 4:移入中 5:移出中 |
| | | await Db.Updateable(storageLocat).ExecuteCommandAsync(); |
| | | |
| | | //修改目标储位地址状态 |
| | | if (storageLocatEnd != null) |
| | | { |
| | | storageLocatEnd.Status = "4";//0:空储位 1:有物品 2:入库中 3:出库中 4:移入中 5:移出中 |
| | | await Db.Updateable(storageLocatEnd).ExecuteCommandAsync(); |
| | | } |
| | | //添加操作日志记录 |
| | | var k = new OperationCrServer().AddLogOperationCr("PDA模块", "AGV转运", palletNo, "移库", $"PDA呼叫小车对托盘号:{palletNo}发起转运", userId); |
| | | |
| | | var outDto = new List<OutCommandDto> |
| | | { |
| | | new OutCommandDto() |
| | | { |
| | | TaskNo = moveTask.TaskNo, // 任务号 |
| | | TaskType = "2",// 任务类型 0入 1出 2移 |
| | | PalletNo = moveTask.PalletNo,//托盘号 |
| | | |
| | | StartLocate = moveTask.StartLocat, // 起始位置 |
| | | EndLocate = EndLocat, // 目标位置 |
| | | |
| | | Order = 999, |
| | | Type = PLCTypeEnum.AGV |
| | | |
| | | } |
| | | }; |
| | | |
| | | // 正式运行程序放开 |
| | | var list2 = outDto.Select(m => m.TaskNo).ToList(); |
| | | var jsonData = JsonConvert.SerializeObject(outDto); |
| | | string response = ""; |
| | | |
| | | try |
| | | { |
| | | var time1 = DateTime.Now;//发送时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | response = HttpHelper.DoPost(url, jsonData, "下发给WCS出库命令", "WCS"); |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | //解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); |
| | | if (wcsModel.code == 200) |
| | | { |
| | | // 更改任务的发送返回时间// |
| | | new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | } |
| | | else |
| | | { |
| | | new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); |
| | | throw new Exception(wcsModel.message); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 呼叫agv转运空托盘 |
| | |
| | | for (int i = 1; i <= 2; i++) |
| | | { |
| | | var iStr = i.ToString(); |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "", iStr); |
| | | try |
| | | { |
| | | locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "", iStr); |
| | | } |
| | | catch (Exception e) |
| | | { } |
| | | if (locate != null) |
| | | { |
| | | break; |
| | |
| | | var roadStr = Db.Queryable<SysStorageRoadway>().Where(m => m.IsDel == "0" && m.Status == "0").Select(m=>m.RoadwayNo).ToList(); |
| | | //巷道组信息 |
| | | var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) && !string.IsNullOrWhiteSpace(m.RoadwayNo) && roadStr.Contains(m.RoadwayNo)) |
| | | .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); |
| | | .GroupBy(m => m.RoadwayNo) |
| | | .Select(m => m.RoadwayNo) |
| | | .ToList() |
| | | .OrderBy(roadwayNo => |
| | | { |
| | | // 移除所有非数字字符,只保留数字 |
| | | var numbersOnly = new string(roadwayNo.Where(char.IsDigit).ToArray()); |
| | | return int.TryParse(numbersOnly, out int result) ? result : 0; |
| | | }).ToList(); |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | // 判断当前巷道(组)是否有空余储位 |
| | | |
| | | var locateCount = db.Queryable<SysStorageLocat>().Count(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l); |
| | | var locateCount = db.Queryable<SysStorageLocat>().Count(m => m.IsDel=="0" && m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l); |
| | | |
| | | var bindNum = db.Queryable<LogTask>().Where(m => m.IsDel == "0" && (m.Status == "0" || m.Status == "1") && m.EndRoadway == l) |
| | | .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count(); |
| | |
| | | |
| | | var roadList = db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) ) |
| | | .GroupBy(m=>m.RoadwayNo).Select(m=>m.RoadwayNo).ToList(); |
| | | |
| | | if (houseNo == "W02") |
| | | { |
| | | //一楼巷道 |
| | | var conveyList1 = new List<string>() { "LR01", "LR02", "LR03", "LR04", "LR05", "LR06", "LR07", "LR08" }; |
| | | //二楼巷道 |
| | | var conveyList2 = new List<string>() { "LR09", "LR10", "LR11", "LR12" }; |
| | | if (ceng == "1") |
| | | { |
| | | roadList = roadList.Where(m => conveyList1.Contains(m)).ToList(); |
| | | } |
| | | else if (ceng == "2") |
| | | { |
| | | roadList = roadList.Where(m => conveyList2.Contains(m)).ToList(); |
| | | } |
| | | } |
| | | |
| | | //数据字典(获取字典中仓库类型) |
| | | var dic = db.Queryable<SysDictionary>().First(m => m.Id.ToString() == house.Type); |
| | |
| | | foreach (var area in areaList) |
| | | { |
| | | var sql = $@"select * from SysStorageLocat where IsDel = 0 and Layer!= '3' and Flag = 0 and [Status] = 0 and RoadwayNo = '{roadwayNo}' and AreaNo = '{area}' and LocatNo not in({str}) "; |
| | | if (!string.IsNullOrWhiteSpace(ceng)) |
| | | { |
| | | sql += $"and Layer = '{ceng}' "; |
| | | } |
| | | //if (!string.IsNullOrWhiteSpace(ceng)) |
| | | //{ |
| | | // sql += $"and Layer = '{ceng}' "; |
| | | //} |
| | | sql += "order by "; |
| | | sql += topOrBom == 0 ? "Layer desc, " : "Layer, "; |
| | | sql += leftOrRight == 0 ? "[Column], " : "[Column] desc, "; |
| | |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.BllCheckDto; |
| | | using Model.ModelDto.DataDto; |
| | | using Model.ModelDto.PdaDto; |
| | | using WMS.Entity.DataEntity; |
| | | using WMS.Entity.SysEntity; |
| | |
| | | /// <param name="locatNo">储位编号</param> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns></returns> |
| | | Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo); |
| | | Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo, string boxno); |
| | | |
| | | #endregion |
| | | |
| | |
| | | using System.Security.Cryptography; |
| | | using Wms.Tools; |
| | | using Microsoft.Extensions.Options; |
| | | using Model.ModelDto.DataDto; |
| | | |
| | | namespace Wms.Controllers |
| | | { |
| | |
| | | /// </summary> |
| | | /// <param name="locatNo">储位编号</param> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <param name="skuName">物料名称</param> |
| | | /// <param name="boxno">箱码</param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo) |
| | | public async Task<List<DataStockDetail>> GetStockQueryList(string locatNo, string palletNo, string boxno) |
| | | { |
| | | return await _pdaCrSvc.GetStockQueryList(locatNo, palletNo); |
| | | return await _pdaCrSvc.GetStockQueryList(locatNo, palletNo, boxno); |
| | | } |
| | | |
| | | #endregion |