Merge branch 'master' into Liudl
| | |
| | | var mxId = "0"; |
| | | var yemianid = 0; |
| | | refreshTable(); |
| | | refreshTablemx(mxId) |
| | | //refreshTablemx(mxId) |
| | | //渲染出库分配table |
| | | //#region 自定义表头 |
| | | var TotalColsArr = [[ |
| | |
| | | time: 2000 //2秒关闭(如果不配置,默认是3秒) |
| | | }); |
| | | } else { |
| | | if(res.code==200){//成功 |
| | | if(res.code==0){//成功 |
| | | layer.msg('登陆成功', { |
| | | icon: 1, |
| | | time: 500 //2秒关闭(如果不配置,默认是3秒) |
| | | }, function () { |
| | | $.cookie('token', res.ToKen.TokenStr); |
| | | $.cookie('token', res.data); |
| | | //回调 |
| | | location.href="/View/index.html"; |
| | | }); |
| | |
| | | using System.ComponentModel.Design; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Net; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Microsoft.AspNetCore.Identity; |
| | |
| | | ParentName = "库内作业", |
| | | MenuName = "盘点单据", |
| | | FkNo = model.CrNo, |
| | | TypeName = "添加", |
| | | TypeName = "编辑", |
| | | Msg = $"编辑了单据号为{model.CrNo}的盘点单信息" |
| | | }); |
| | | //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", model.CrNo, "编辑", $"编辑了单据号为{model.CrNo}的盘点单信息", _userManager.UserId); |
| | |
| | | //盘点下发出库 |
| | | public async Task<List<OutCommandDto>> CheckOutHouse(string crNo, string outMode, string url, string str) |
| | | { |
| | | try |
| | | #region 集合 |
| | | var outDtoList = new List<OutCommandDto>(); //出库数据的集合 |
| | | //记录错误信息的集合 |
| | | var flagList = new List<int>();//1:当前要出库的储位正在移出、2 出库的托盘储位信息错误(在储位表中未查询到)、3储位损坏不能出库、4 要出库的托盘正在入库 |
| | | |
| | | #endregion |
| | | var com = new Common(); |
| | | //assign.IsHavePyTask(); |
| | | var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0"); |
| | | if (notice == null) |
| | | { |
| | | #region 集合 |
| | | var outDtoList = new List<OutCommandDto>(); //出库数据的集合 |
| | | //记录错误信息的集合 |
| | | var flagList = new List<int>();//1:当前要出库的储位正在移出、2 出库的托盘储位信息错误(在储位表中未查询到)、3储位损坏不能出库、4 要出库的托盘正在入库 |
| | | |
| | | #endregion |
| | | var com = new Common(); |
| | | //assign.IsHavePyTask(); |
| | | var notice = await Db.Queryable<BllStockCheck>().FirstAsync(m => m.CRNo == crNo && m.IsDel == "0"); |
| | | if (notice == null) |
| | | throw Oops.Bah($"未找到{crNo}盘点单信息"); |
| | | } |
| | | //所有要出库的盘点明细信息(等待的信息和待拣货的信息) |
| | | var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "InventoryCheckMethod"); |
| | | if (funSetting == null || funSetting.IsEnable == "OFF") |
| | | { |
| | | throw Oops.Bah("需配置盘点方式"); |
| | | } |
| | | var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync(); |
| | | if (list.Count == 0) //判断是否有需要下发的盘点明细 |
| | | { |
| | | throw Oops.Bah("当前盘点单据无需要下发的托盘"); |
| | | } |
| | | if (funSetting.SetValue == "once") |
| | | { |
| | | if (list.Any(s => s.Status == 1 || s.Status == 2)) |
| | | { |
| | | throw Oops.Bah($"未找到{crNo}盘点单信息"); |
| | | throw Oops.Bah("已有正在出库或待盘点的数据,请完成盘点后再出库"); |
| | | } |
| | | //所有要出库的盘点明细信息(等待的信息和待拣货的信息) |
| | | var list = await Db.Queryable<BllStockCheckDetail>().Where(a => a.IsDel == "0" && a.CRNo == crNo && a.Status == 0).ToListAsync(); |
| | | if (list.Count == 0) //判断是否有需要下发的盘点明细 |
| | | list = new List<BllStockCheckDetail>() { list.FirstOrDefault() }; |
| | | } |
| | | #region |
| | | //要出库的托盘集合 |
| | | var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList(); |
| | | //要出库的明细集合 |
| | | var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync(); |
| | | var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync(); |
| | | //获取物料信息 |
| | | var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync(); |
| | | var time = DateTime.Now; |
| | | //Db.BeginTran(); |
| | | //循环盘点明细的信息生成出库任务 |
| | | foreach (var item in list) |
| | | { |
| | | if (item.Status == 0) |
| | | { |
| | | throw Oops.Bah("当前盘点单据无需要下发的托盘"); |
| | | } |
| | | #region |
| | | //要出库的托盘集合 |
| | | var outLpnList = list.Select(m => m.PalletNo).Distinct().ToList(); |
| | | //要出库的明细集合 |
| | | var outStockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync(); |
| | | var outStockBox = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToListAsync(); |
| | | //获取物料信息 |
| | | var skuNo = await Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.Type == "4").Select(a => a.SkuNo).ToListAsync(); |
| | | var time = DateTime.Now; |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | | //循环盘点明细的信息生成出库任务 |
| | | foreach (var item in list) |
| | | var logList = new List<BllStockCheckLog>(); |
| | | //判断是否为无码物料 |
| | | if (skuNo.Contains(item.SkuNo)) |
| | | { |
| | | if (item.Status == 0) |
| | | var de = outStockDetail.First(m => m.IsDel == "0" && |
| | | m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo); |
| | | |
| | | var checkLog = new BllStockCheckLog() |
| | | { |
| | | var logList = new List<BllStockCheckLog>(); |
| | | //判断是否为无码物料 |
| | | if (skuNo.Contains(item.SkuNo)) |
| | | { |
| | | var de = outStockDetail.First(m => m.IsDel == "0" && |
| | | m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo); |
| | | CRNo = item.CRNo, |
| | | PalletNo = item.PalletNo, |
| | | BoxNo = "", |
| | | BoxNo2 = "", |
| | | BoxNo3 = "", |
| | | Qty = (int?)de.Qty, |
| | | SkuNo = de.SkuNo, |
| | | SkuName = de.SkuName, |
| | | Standard = de.Standard, |
| | | LotNo = de.LotNo, |
| | | LotText = de.LotText, |
| | | SupplierLot = de.SupplierLot, |
| | | |
| | | var checkLog = new BllStockCheckLog() |
| | | { |
| | | CRNo = item.CRNo, |
| | | PalletNo = item.PalletNo, |
| | | BoxNo = "", |
| | | BoxNo2 = "", |
| | | BoxNo3 = "", |
| | | Qty = (int?)de.Qty, |
| | | SkuNo = de.SkuNo, |
| | | SkuName = de.SkuName, |
| | | Standard = de.Standard, |
| | | LotNo = de.LotNo, |
| | | LotText = de.LotText, |
| | | SupplierLot = de.SupplierLot, |
| | | CreateUser = _userManager.UserId, |
| | | CreateTime = time |
| | | }; |
| | | logList.Add(checkLog); |
| | | |
| | | CreateUser = _userManager.UserId, |
| | | CreateTime = time |
| | | }; |
| | | logList.Add(checkLog); |
| | | |
| | | } |
| | | else |
| | | { |
| | | var de = outStockDetail.Where(m => |
| | | m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList(); |
| | | var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList(); |
| | | foreach (var b in bo) |
| | | { |
| | | var checkLog = new BllStockCheckLog() |
| | | { |
| | | CRNo = item.CRNo, |
| | | PalletNo = item.PalletNo, |
| | | BoxNo = b.BoxNo, |
| | | BoxNo2 = b.BoxNo2, |
| | | BoxNo3 = b.BoxNo3, |
| | | Qty = b.Qty, |
| | | SkuNo = b.SkuNo, |
| | | SkuName = b.SkuName, |
| | | Standard = b.Standard, |
| | | LotNo = b.LotNo, |
| | | LotText = b.LotText, |
| | | SupplierLot = b.SupplierLot, |
| | | |
| | | CreateUser = _userManager.UserId, |
| | | CreateTime = time |
| | | }; |
| | | logList.Add(checkLog); |
| | | } |
| | | } |
| | | |
| | | //生成盘点记录 |
| | | await Db.Insertable(logList).ExecuteCommandAsync(); |
| | | } |
| | | // 储位号 |
| | | var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo; |
| | | |
| | | #region 判断 |
| | | //判断托盘是否在库内 |
| | | if (string.IsNullOrWhiteSpace(locateNo)) |
| | | } |
| | | else |
| | | { |
| | | var de = outStockDetail.Where(m => |
| | | m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo).Select(m => m.Id).ToList(); |
| | | var bo = outStockBox.Where(m => de.Contains(m.StockDetailId)).ToList(); |
| | | foreach (var b in bo) |
| | | { |
| | | var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo); |
| | | //判断是否是零箱库,当前明细信息直接更新出库完成 |
| | | if (de != null && de.WareHouseNo == "W02") |
| | | var checkLog = new BllStockCheckLog() |
| | | { |
| | | //盘点明细状态改为待盘点 |
| | | item.Status = 2; |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | //盘点信息修改 |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | //库存中当前托盘的信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync(); |
| | | foreach (var s in stockDetail) |
| | | { |
| | | s.LocatNo = "";//储位更改(改为空) |
| | | s.WareHouseNo = "";//所属仓库更改(改为空) |
| | | s.RoadwayNo = "";//所属巷道更改(改为空) |
| | | s.AreaNo = "";//所属区域更改(改为空) |
| | | await Db.Updateable(s).ExecuteCommandAsync(); |
| | | } |
| | | flagList.Add(5); |
| | | continue; |
| | | } |
| | | //判断托盘是否在入库中 |
| | | var imBl = com.GetImTask(item.PalletNo); |
| | | if (imBl != null) |
| | | { |
| | | flagList.Add(4); |
| | | continue; |
| | | } |
| | | //判断是否是已经出过库又回库(状态为待拣货的 1) |
| | | if (item.Status == 0) |
| | | { |
| | | //如果不在仓库内,当前明细信息直接更新出库完成 |
| | | item.Status = 2;//状态 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | continue; |
| | | } |
| | | //当前出库的储位信息 |
| | | var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0"); |
| | | if (locate == null) |
| | | { |
| | | flagList.Add(2); |
| | | continue; |
| | | } |
| | | //判断储位标志是否为损坏 |
| | | if (locate.Flag == "2") |
| | | { |
| | | flagList.Add(3); |
| | | continue; |
| | | } |
| | | #endregion |
| | | if (locate.Status == "1") //有物品 |
| | | { |
| | | #region 添加出库任务 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | //添加出库任务 |
| | | var exTask = new LogTask |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | StartLocat = locate.LocatNo,//起始位置 |
| | | EndLocat = outMode,//目标位置 |
| | | PalletNo = item.PalletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "1",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "2",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | CRNo = item.CRNo, |
| | | PalletNo = item.PalletNo, |
| | | BoxNo = b.BoxNo, |
| | | BoxNo2 = b.BoxNo2, |
| | | BoxNo3 = b.BoxNo3, |
| | | Qty = b.Qty, |
| | | SkuNo = b.SkuNo, |
| | | SkuName = b.SkuName, |
| | | Standard = b.Standard, |
| | | LotNo = b.LotNo, |
| | | LotText = b.LotText, |
| | | SupplierLot = b.SupplierLot, |
| | | |
| | | CreateUser = _userManager.UserId, |
| | | CreateTime = time |
| | | }; |
| | | await Db.Insertable(exTask).ExecuteCommandAsync(); |
| | | |
| | | outDtoList.Add(new OutCommandDto() |
| | | { |
| | | PalletNo = item.PalletNo,//托盘号 |
| | | StartLocate = locate.LocatNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo, |
| | | EndLocate = "", // 目标位置 |
| | | TaskNo = exTask.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }); |
| | | #endregion |
| | | |
| | | #region 改变数据 |
| | | if (item.Status == 0)//判断托盘是否下发过 |
| | | { |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | locate.Status = "3"; //要出库的储位改变状态 正在出库 |
| | | await Db.Updateable(locate).ExecuteCommandAsync(); |
| | | |
| | | item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号 |
| | | item.Status = 1; // 出库分配信息状态改为正在执行 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | #endregion |
| | | |
| | | flagList.Add(0); |
| | | } |
| | | else if (locate.Status == "3") //出库中 |
| | | { |
| | | #region 改变数据 |
| | | //判断是否是已经出过库又回库(状态为待拣货的 1) |
| | | if (item.Status == 0) |
| | | { |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | |
| | | } |
| | | } |
| | | var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); |
| | | item.TaskNo = taskNo.TaskNo; |
| | | item.Status = 1; // 出库分配信息状态改为正在执行 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | |
| | | #endregion |
| | | } |
| | | else if (locate.Status == "5") //移出中 |
| | | { |
| | | flagList.Add(1); |
| | | logList.Add(checkLog); |
| | | } |
| | | } |
| | | //添加操作日志记录 |
| | | //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", crNo, "出库", $"点击出库按钮盘点单号为:{crNo}的盘点单", userId); |
| | | await _operation.AddLogOperationCr(new OperationInputVm() |
| | | { |
| | | ParentName = "库内作业", |
| | | MenuName = "盘点单据", |
| | | FkNo = crNo, |
| | | TypeName = "出库", |
| | | Msg = $"点击出库按钮盘点单号为:{crNo}的盘点单" |
| | | }); |
| | | Db.CommitTran(); |
| | | |
| | | str = string.Empty; |
| | | if (flagList.Count(m => m == 1) > 0) |
| | | { |
| | | str += "1.当前要出库的储位正在移出、"; |
| | | } |
| | | if (flagList.Count(m => m == 2) > 0) |
| | | { |
| | | str += "2.出库的托盘储位信息错误(在储位表中未查询到)、"; |
| | | } |
| | | if (flagList.Count(m => m == 3) > 0) |
| | | { |
| | | str += "4.储位损坏不能出库、"; |
| | | } |
| | | if (flagList.Count(m => m == 4) > 0) |
| | | { |
| | | str += "3.要出库的托盘正在入库、"; |
| | | } |
| | | if (flagList.Count(m => m == 5) > 0) |
| | | { |
| | | str += "5.要出库的托盘在零箱库、"; |
| | | } |
| | | if (outDtoList.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var list2 = outDtoList.Select(m => m.TaskNo).ToList(); |
| | | var jsonData = JsonConvert.SerializeObject(outDtoList); |
| | | 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<WcsModel>(response); |
| | | //if (wcsModel.StatusCode == 0) |
| | | //{ |
| | | // //更改任务的发送返回时间// |
| | | // new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | //str += "下发成功"; |
| | | //} |
| | | //if (wcsModel.StatusCode == -1) |
| | | //{ |
| | | // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); |
| | | // throw new Exception(wcsModel.Msg); |
| | | //} |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | } |
| | | } |
| | | return outDtoList; |
| | | //生成盘点记录 |
| | | await Db.Insertable(logList).ExecuteCommandAsync(); |
| | | } |
| | | catch (Exception e) |
| | | // 储位号 |
| | | var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo && m.SkuNo == item.SkuNo && m.LotNo == item.LotNo).LocatNo; |
| | | |
| | | #region 判断 |
| | | //判断托盘是否在库内 |
| | | if (string.IsNullOrWhiteSpace(locateNo)) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | var de = outStockDetail.First(m => m.SkuNo == item.SkuNo && m.LotNo == item.LotNo && m.PalletNo == item.PalletNo); |
| | | //判断是否是零箱库,当前明细信息直接更新出库完成 |
| | | if (de != null && de.WareHouseNo == "W02") |
| | | { |
| | | //盘点明细状态改为待盘点 |
| | | item.Status = 2; |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | //盘点信息修改 |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | //库存中当前托盘的信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == item.PalletNo).ToListAsync(); |
| | | foreach (var s in stockDetail) |
| | | { |
| | | s.LocatNo = "";//储位更改(改为空) |
| | | s.WareHouseNo = "";//所属仓库更改(改为空) |
| | | s.RoadwayNo = "";//所属巷道更改(改为空) |
| | | s.AreaNo = "";//所属区域更改(改为空) |
| | | await Db.Updateable(s).ExecuteCommandAsync(); |
| | | } |
| | | flagList.Add(5); |
| | | continue; |
| | | } |
| | | //判断托盘是否在入库中 |
| | | var imBl = com.GetImTask(item.PalletNo); |
| | | if (imBl != null) |
| | | { |
| | | flagList.Add(4); |
| | | continue; |
| | | } |
| | | //判断是否是已经出过库又回库(状态为待拣货的 1) |
| | | if (item.Status == 0) |
| | | { |
| | | //如果不在仓库内,当前明细信息直接更新出库完成 |
| | | item.Status = 2;//状态 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | continue; |
| | | } |
| | | //当前出库的储位信息 |
| | | var locate = await Db.Queryable<SysStorageLocat>().FirstAsync(m => m.LocatNo == locateNo && m.IsDel == "0"); |
| | | if (locate == null) |
| | | { |
| | | flagList.Add(2); |
| | | continue; |
| | | } |
| | | //判断储位标志是否为损坏 |
| | | if (locate.Flag == "2") |
| | | { |
| | | flagList.Add(3); |
| | | continue; |
| | | } |
| | | #endregion |
| | | if (locate.Status == "1") //有物品 |
| | | { |
| | | #region 添加出库任务 |
| | | var taskNo = new Common().GetMaxNo("TK"); |
| | | //添加出库任务 |
| | | var exTask = new LogTask |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "WCS", |
| | | IsSuccess = 0, //是否下发成功 0失败 1成功 |
| | | StartLocat = locate.LocatNo,//起始位置 |
| | | EndLocat = outMode,//目标位置 |
| | | PalletNo = item.PalletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | | IsCancel = 1,//是否可取消 |
| | | IsFinish = 1,//是否可完成 |
| | | Type = "1",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "0",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "2",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | |
| | | CreateTime = time |
| | | }; |
| | | await Db.Insertable(exTask).ExecuteCommandAsync(); |
| | | |
| | | outDtoList.Add(new OutCommandDto() |
| | | { |
| | | PalletNo = item.PalletNo,//托盘号 |
| | | StartLocate = locate.LocatNo, // 起始位置 |
| | | StartRoadway = locate.RoadwayNo, |
| | | EndLocate = "", // 目标位置 |
| | | TaskNo = exTask.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | OutMode = "", //目标地址 |
| | | Order = 1 |
| | | }); |
| | | #endregion |
| | | |
| | | #region 改变数据 |
| | | if (item.Status == 0)//判断托盘是否下发过 |
| | | { |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | locate.Status = "3"; //要出库的储位改变状态 正在出库 |
| | | await Db.Updateable(locate).ExecuteCommandAsync(); |
| | | |
| | | item.TaskNo = exTask.TaskNo; // 出库分配信息中更新任务号 |
| | | item.Status = 1; // 出库分配信息状态改为正在执行 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | #endregion |
| | | |
| | | flagList.Add(0); |
| | | } |
| | | else if (locate.Status == "3") //出库中 |
| | | { |
| | | #region 改变数据 |
| | | //判断是否是已经出过库又回库(状态为待拣货的 1) |
| | | if (item.Status == 0) |
| | | { |
| | | if (notice.Status == 0) |
| | | { |
| | | notice.CheckDate = DateTime.Now; |
| | | notice.Status = 1; |
| | | notice.UpdateUser = _userManager.UserId; |
| | | notice.UpdateTime = time; |
| | | await Db.Updateable(notice).ExecuteCommandAsync(); |
| | | |
| | | } |
| | | } |
| | | var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "2" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); |
| | | item.TaskNo = taskNo.TaskNo; |
| | | item.Status = 1; // 出库分配信息状态改为正在执行 |
| | | await Db.Updateable(item).ExecuteCommandAsync(); |
| | | |
| | | #endregion |
| | | } |
| | | else if (locate.Status == "5") //移出中 |
| | | { |
| | | flagList.Add(1); |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | //添加操作日志记录 |
| | | //var k = new OperationCrServer().AddLogOperationCr("库内作业", "盘点单据", crNo, "出库", $"点击出库按钮盘点单号为:{crNo}的盘点单", userId); |
| | | await _operation.AddLogOperationCr(new OperationInputVm() |
| | | { |
| | | throw new Exception(e.Message); |
| | | ParentName = "库内作业", |
| | | MenuName = "盘点单据", |
| | | FkNo = crNo, |
| | | TypeName = "出库", |
| | | Msg = $"点击出库按钮盘点单号为:{crNo}的盘点单" |
| | | }); |
| | | //Db.CommitTran(); |
| | | |
| | | str = string.Empty; |
| | | if (flagList.Count(m => m == 1) > 0) |
| | | { |
| | | str += "1.当前要出库的储位正在移出、"; |
| | | } |
| | | if (flagList.Count(m => m == 2) > 0) |
| | | { |
| | | str += "2.出库的托盘储位信息错误(在储位表中未查询到)、"; |
| | | } |
| | | if (flagList.Count(m => m == 3) > 0) |
| | | { |
| | | str += "4.储位损坏不能出库、"; |
| | | } |
| | | if (flagList.Count(m => m == 4) > 0) |
| | | { |
| | | str += "3.要出库的托盘正在入库、"; |
| | | } |
| | | if (flagList.Count(m => m == 5) > 0) |
| | | { |
| | | str += "5.要出库的托盘在零箱库、"; |
| | | } |
| | | if (!string.IsNullOrEmpty(str)) |
| | | throw Oops.Bah(str); |
| | | if (outDtoList.Count > 0) |
| | | { |
| | | // 正式运行程序放开 |
| | | var list2 = outDtoList.Select(m => m.TaskNo).ToList(); |
| | | var jsonData = JsonConvert.SerializeObject(outDtoList); |
| | | string response = ""; |
| | | |
| | | 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<WcsModel>(response); |
| | | //if (wcsModel.StatusCode == 0) |
| | | //{ |
| | | // //更改任务的发送返回时间// |
| | | // new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | // str += "下发成功"; |
| | | //} |
| | | //if (wcsModel.StatusCode == -1) |
| | | //{ |
| | | // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); |
| | | // throw Oops.Bah(wcsModel.Msg); |
| | | //} |
| | | } |
| | | return outDtoList; |
| | | #endregion |
| | | } |
| | | |
| | | //盘点出库完成 |
| | |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using SqlSugar; |
| | | using WMS.DAL; |
| | | using WMS.Entity.BllSoEntity; |
| | |
| | | |
| | | namespace WMS.BLL.BllSoServer |
| | | { |
| | | public class CompleteDetailServer: DbHelper<BllCompleteDetail>,ICompleteDetailServer |
| | | public class CompleteDetailServer : DbHelper<BllCompleteDetail>, ICompleteDetailServer |
| | | { |
| | | private static readonly SqlSugarScope Db = DataContext.Db; |
| | | public CompleteDetailServer():base(Db) |
| | | public CompleteDetailServer() : base(Db) |
| | | { |
| | | } |
| | | |
| | | //查询拣货明细箱码信息(分组后) |
| | | public List<CompleteDetailDto> GetCompleteDetailList(int id, int page, int limit, out int count) |
| | | public async Task<List<CompleteDetailDto>> GetCompleteDetailList(GetCompleteDetailVm model, RefAsync<int> count) |
| | | { |
| | | try |
| | | { |
| | | var total = 0; |
| | | var detailInfo = Db.Queryable<BllCompleteDetail>().First(w => string.IsNullOrEmpty(w.BoxNo) || string.IsNullOrEmpty(w.BoxNo3)); |
| | | if (detailInfo == null) |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .And(it => it.ExportAllotId == model.Id) |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var data = await GetAllWhereAsync(item) |
| | | .GroupBy(m => new |
| | | { |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .And(it => it.ExportAllotId == id) |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var data = GetAllWhereAsync(item) |
| | | .GroupBy(m => new |
| | | { |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo, |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | //CreateTime = a.CreateTime |
| | | }).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | return data; |
| | | } |
| | | else //箱码或支码为空说明是按数量拣货,增加 CreateTime 分组条件 |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .And(it => it.ExportAllotId == id) |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var data = GetAllWhereAsync(item) |
| | | .GroupBy(m => new |
| | | { |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo, |
| | | m.CreateTime |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | //CreateTime = a.CreateTime |
| | | }).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | return data; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | //查询拣货明细支码详细信息 |
| | |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo.Trim()) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3.Contains(boxNo3.Trim())) |
| | | .ToExpression(); |
| | | .ToExpression(); |
| | | var data = GetAllWhereAsync(item) |
| | | .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id) |
| | |
| | | CompleteQty = a.CompleteQty, |
| | | NowPalletNo = a.NowPalletNo, |
| | | |
| | | CreateUserName = b.RealName, |
| | | CreateUserName = b.RealName, |
| | | UpdateUserName = c.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime, |
| | |
| | | { |
| | | page = 1; |
| | | } |
| | | |
| | | |
| | | sqlString += sqlPub + $" order by 1 offset {((page - 1) * limit)} rows fetch next {limit} rows only;"; |
| | | |
| | | var com = new Common(); |
| | |
| | | var modelList = Db.Ado.SqlQuery<CompleteDetailDto>(sqlString); |
| | | return modelList; |
| | | } |
| | | else |
| | | else |
| | | { |
| | | string sqlString = string.Empty; |
| | | string sqlCount = string.Empty; |
| | |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using SqlSugar; |
| | | using WMS.BLL.LogServer; |
| | | using WMS.DAL; |
| | |
| | | } |
| | | |
| | | //查询出库分配表信息 |
| | | public List<ExportAllotDto> GetExportAllotList(string no, string waveNo, string palletNo, string skuNo, string skuName, string lotNo, string status, string boxNo, int page, int limit, out int count) |
| | | public async Task<List<ExportAllotDto>> GetExportAllotList(GetExportAllotVm model, RefAsync<int> count) |
| | | { |
| | | try |
| | | { |
| | | var strList = new List<int>(); |
| | | var strList = new List<int>(); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(boxNo)) |
| | | if (!string.IsNullOrWhiteSpace(model.BoxNo)) |
| | | { |
| | | var detailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo.Contains(model.BoxNo.Trim())).Select(m => m.ExportAllotId).Distinct().ToList(); |
| | | strList = detailList; |
| | | } |
| | | Expression<Func<BllExportAllot, bool>> item = Expressionable.Create<BllExportAllot>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SoNo), it => it.SONo.Contains(model.SoNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), it => it.PalletNo.Contains(model.PalletNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), it => it.SkuNo.Contains(model.SkuNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuName), it => it.SkuName.Contains(model.SkuName.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo), m => strList.Contains(m.Id)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var data = await GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .Select((a, b, c, d) => new ExportAllotDto() |
| | | { |
| | | var detailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo.Contains(boxNo.Trim())).Select(m => m.ExportAllotId).Distinct().ToList(); |
| | | strList = detailList; |
| | | } |
| | | Expression<Func<BllExportAllot, bool>> item = Expressionable.Create<BllExportAllot>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(no), it => it.SONo.Contains(no.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(waveNo), it => it.WaveNo.Contains(waveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(palletNo), it => it.PalletNo.Contains(palletNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(skuNo), it => it.SkuNo.Contains(skuNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(skuName), it => it.SkuName.Contains(skuName.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(lotNo), it => it.LotNo.Contains(lotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo), m => strList.Contains(m.Id)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var data = GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .Select((a, b, c, d) => new ExportAllotDto() |
| | | { |
| | | Id = a.Id, |
| | | SONo = a.SONo, |
| | | WaveNo = a.WaveNo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | TaskNo = a.TaskNo, |
| | | Id = a.Id, |
| | | SONo = a.SONo, |
| | | WaveNo = a.WaveNo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | TaskNo = a.TaskNo, |
| | | |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | IsBale = a.IsBale, |
| | | IsBelt = a.IsBelt, |
| | | Qty = a.Qty, |
| | | CompleteQty = a.CompleteQty, |
| | | Status = a.Status, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | IsAdvance = a.IsAdvance, |
| | | OutMode = a.OutMode, |
| | | LoadingAddre=a.LoadingAddre, |
| | | UnstackingMode=a.UnstackingMode, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | IsBale = a.IsBale, |
| | | IsBelt = a.IsBelt, |
| | | Qty = a.Qty, |
| | | CompleteQty = a.CompleteQty, |
| | | Status = a.Status, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | IsAdvance = a.IsAdvance, |
| | | OutMode = a.OutMode, |
| | | LoadingAddre = a.LoadingAddre, |
| | | UnstackingMode = a.UnstackingMode, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = d.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime |
| | | }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.Status).OrderBy(a => a.SkuNo).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = d.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime |
| | | }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.Status).OrderBy(a => a.SkuNo) |
| | | .ToPageListAsync(model.Page, model.Limit, count); |
| | | count = total; |
| | | return data; |
| | | } |
| | | |
| | | //撤销分配(删除) |
| | |
| | | } |
| | | public async Task<List<ExportNoticeDetailDto>> GetExportNoticeDetailList(GetExportNoticeDetailVm model, RefAsync<int> count) |
| | | { |
| | | try |
| | | if (string.IsNullOrWhiteSpace(model.SoNo)) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.SoNo)) |
| | | { |
| | | throw new Exception("出库单号为空"); |
| | | } |
| | | var notice = DataContext.Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == model.SoNo).ToList().FirstOrDefault(); |
| | | if (notice == null) |
| | | { |
| | | throw new Exception("出库单号为空"); |
| | | } |
| | | |
| | | var data = await GetAllWhereAsync(a=>a.SONo == model.SoNo) |
| | | .LeftJoin<SysPackag>((a,b)=> a.PackagNo == b.PackagNo) |
| | | .LeftJoin<SysUserInfor>((a,b,c)=> a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a,b,c,d)=> a.UpdateUser == d.Id) |
| | | .Select((a, b, c, d) => new ExportNoticeDetailDto() |
| | | { |
| | | Id = a.Id, |
| | | Status = a.Status, |
| | | Origin = notice.Origin, |
| | | SONo = a.SONo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | Qty = a.Qty, |
| | | AllotQty = a.AllotQty, |
| | | FactQty = a.FactQty, |
| | | CompleteQty = a.CompleteQty, |
| | | PackagNo = a.PackagNo, |
| | | PackagName = b.PackagName, |
| | | Price = a.Price, |
| | | Money = a.Money, |
| | | IsBale = a.IsBale, |
| | | IsBelt = a.IsBelt, |
| | | SupplierLot = a.SupplierLot, |
| | | IsWave = a.IsWave, |
| | | WaveNo = a.WaveNo, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = d.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | return data; |
| | | throw new Exception("出库单号为空"); |
| | | } |
| | | catch (Exception e) |
| | | var notice = DataContext.Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.SONo == model.SoNo).ToList().FirstOrDefault(); |
| | | if (notice == null) |
| | | { |
| | | throw new Exception(e.Message); |
| | | throw new Exception("出库单号为空"); |
| | | } |
| | | |
| | | var data = await GetAllWhereAsync(a => a.SONo == model.SoNo) |
| | | .LeftJoin<SysPackag>((a, b) => a.PackagNo == b.PackagNo) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.UpdateUser == d.Id) |
| | | .Select((a, b, c, d) => new ExportNoticeDetailDto() |
| | | { |
| | | Id = a.Id, |
| | | Status = a.Status, |
| | | Origin = notice.Origin, |
| | | SONo = a.SONo, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | Qty = a.Qty, |
| | | AllotQty = a.AllotQty, |
| | | FactQty = a.FactQty, |
| | | CompleteQty = a.CompleteQty, |
| | | PackagNo = a.PackagNo, |
| | | PackagName = b.PackagName, |
| | | Price = a.Price, |
| | | Money = a.Money, |
| | | IsBale = a.IsBale, |
| | | IsBelt = a.IsBelt, |
| | | SupplierLot = a.SupplierLot, |
| | | IsWave = a.IsWave, |
| | | WaveNo = a.WaveNo, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = d.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime |
| | | }).ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | public bool DelExportNoticeDetail(int id, int userId) |
| | |
| | | |
| | | public async Task<List<ExportNoticeDto>> GetExportNoticeList(GetExportNoticeVm model, RefAsync<int> count) |
| | | { |
| | | try |
| | | { |
| | | var strList = new List<string>(); |
| | | var strList = new List<string>(); |
| | | |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | if (!string.IsNullOrWhiteSpace(model.LotNo)) |
| | | { |
| | | var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(model.LotNo.Trim())).Select(m => m.SONo).Distinct().ToList(); |
| | | strList = detailList; |
| | | } |
| | | Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.No), it => it.SONo.Contains(model.No.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Type), it => it.Type == model.Type) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) |
| | | .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.IsWave), it => it.IsWave == model.IsWave) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.IsDespatch), it => it.IsDespatch == model.IsDespatch) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => strList.Contains(it.SONo)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var data = await GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id) |
| | | .Select((a, b, c, d, e) => new ExportNoticeDto() |
| | | { |
| | | var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.LotNo.Contains(model.LotNo.Trim())).Select(m => m.SONo).Distinct().ToList(); |
| | | strList = detailList; |
| | | } |
| | | Expression<Func<BllExportNotice, bool>> item = Expressionable.Create<BllExportNotice>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.No), it => it.SONo.Contains(model.No.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Type), it => it.Type == model.Type) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) |
| | | .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.IsWave), it => it.IsWave == model.IsWave) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.IsDespatch), it => it.IsDespatch == model.IsDespatch) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => strList.Contains(it.SONo)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | Id = a.Id, |
| | | SONo = a.SONo, |
| | | Type = a.Type, |
| | | Status = a.Status, |
| | | Origin = a.Origin, |
| | | CustomerNo = a.CustomerNo, |
| | | CustomerName = a.CustomerName, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | IsWave = a.IsWave, |
| | | WaveNo = a.WaveNo, |
| | | IsDespatch = a.IsDespatch, |
| | | Demo = a.Demo, |
| | | |
| | | var data = await GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id) |
| | | .Select((a, b, c, d, e) => new ExportNoticeDto() |
| | | { |
| | | Id = a.Id, |
| | | SONo = a.SONo, |
| | | Type = a.Type, |
| | | Status = a.Status, |
| | | Origin = a.Origin, |
| | | CustomerNo = a.CustomerNo, |
| | | CustomerName = a.CustomerName, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | IsWave = a.IsWave, |
| | | WaveNo = a.WaveNo, |
| | | IsDespatch = a.IsDespatch, |
| | | Demo = a.Demo, |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = c.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = c.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime, |
| | | CheckUserName = e.RealName, |
| | | CheckTime = a.CheckTime |
| | | }) |
| | | .OrderByDescending(a => a.CreateTime) |
| | | .ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | CheckUserName = e.RealName, |
| | | CheckTime = a.CheckTime |
| | | }) |
| | | .OrderByDescending(a => a.CreateTime) |
| | | .ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | //获取添加/编辑出库单时选择物料明细信息 |
| | |
| | | /// <param name="limit">零托标记</param> |
| | | /// <param name="count">零托标记</param> |
| | | /// <returns></returns> |
| | | public List<DataStockDetail> GetPalletNoOutList(string skuNo, string skuName, string palletNo, string lotNo, string inspectMark, string bitPalletMark, int page, int limit, out int count) |
| | | public async Task<List<DataStockDetail>> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync<int> count) |
| | | { |
| | | Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), m => m.SkuNo.Contains(model.SkuNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.SkuName), m => m.SkuName.Contains(model.SkuName.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.PalletNo), m => m.PalletNo.Contains(model.PalletNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), m => m.LotNo.Contains(model.LotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.InspectMark), m => m.InspectMark == model.InspectMark) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.BitPalletMark), m => m.BitPalletMark == model.BitPalletMark) |
| | | .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo)) |
| | | .And(a => a.Status == "0") |
| | | .And(a => a.WareHouseNo == "W01") |
| | | .ToExpression(); |
| | | var data = await Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToPageListAsync(model.Page, model.Limit, count); |
| | | //data.Select(m => m.Status == "0" && m.IsDel == "0"); |
| | | |
| | | try |
| | | { |
| | | Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(skuNo), m => m.SkuNo.Contains(skuNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(skuName), m => m.SkuName.Contains(skuName.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo.Contains(palletNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(lotNo), m => m.LotNo.Contains(lotNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark == inspectMark) |
| | | .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark == bitPalletMark) |
| | | .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo)) |
| | | .And(a => a.Status == "0") |
| | | .And(a => a.WareHouseNo == "W01") |
| | | .ToExpression(); |
| | | var total = 0; |
| | | var data = Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToOffsetPage(page, limit, ref total); |
| | | //data.Select(m => m.Status == "0" && m.IsDel == "0"); |
| | | count = total; |
| | | |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | return data; |
| | | } |
| | | |
| | | //托盘出库 |
| | |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.InterFaceModel; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using WMS.BLL.Logic; |
| | |
| | | } |
| | | |
| | | //获取波次单信息 |
| | | public List<WaveMageDto> GetWaveMageList(string waveNo, string status, string lotNo, int? logisticsId, int page, int limit, out int count) |
| | | public async Task<List<WaveMageDto>> GetWaveMageList(GetWaveMageVm model, RefAsync<int> count) |
| | | { |
| | | try |
| | | { |
| | | Expression<Func<BllWaveMage, bool>> item = Expressionable.Create<BllWaveMage>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(waveNo), it => it.WaveNo.Contains(waveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(status), it => it.Status == status) |
| | | .AndIF(logisticsId != null, it => it.LogisticsId == logisticsId) |
| | | .AndIF(!string.IsNullOrWhiteSpace(lotNo), it => it.LotNo.Contains(lotNo)) |
| | | Expression<Func<BllWaveMage, bool>> item = Expressionable.Create<BllWaveMage>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.WaveNo), it => it.WaveNo.Contains(model.WaveNo.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) |
| | | .AndIF(model.LogisticsId != null, it => it.LogisticsId == model.LogisticsId) |
| | | .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var data = GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .Select((a, b, c, d) => new WaveMageDto() |
| | | { |
| | | Id = a.Id, |
| | | WaveNo = a.WaveNo, |
| | | Status = a.Status, |
| | | Origin = a.Origin, |
| | | CustomerNo = a.CustomerNo, |
| | | CustomerName = a.CustomerName, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | Address = a.Address, |
| | | |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = c.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime, |
| | | var data = await GetAllWhereAsync(item) |
| | | .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) |
| | | .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) |
| | | .Select((a, b, c, d) => new WaveMageDto() |
| | | { |
| | | Id = a.Id, |
| | | WaveNo = a.WaveNo, |
| | | Status = a.Status, |
| | | Origin = a.Origin, |
| | | CustomerNo = a.CustomerNo, |
| | | CustomerName = a.CustomerName, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | LogisticsId = a.LogisticsId, |
| | | LogisticsName = b.CarrierName, |
| | | Address = a.Address, |
| | | |
| | | }) |
| | | .OrderByDescending(a => a.CreateTime) |
| | | .ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | CreateUserName = c.RealName, |
| | | UpdateUserName = c.RealName, |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime, |
| | | |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | }) |
| | | .OrderByDescending(a => a.CreateTime) |
| | | .ToPageListAsync(model.Page, model.Limit, count); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | //获取添加波次单的出库单信息 |
| | |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.LogDto; |
| | | using SqlSugar; |
| | | using WMS.BLL.SysServer; |
| | |
| | | public OperationSOServer() : base(Db) |
| | | { |
| | | } |
| | | public List<OperationDto> GetLogOperationSoList(string menuName, string type, string msg, string startTime, string endTime, int page, int limit, out int count) |
| | | public async Task<List<OperationDto>> GetLogOperationSoList(string menuName, string type, string msg, string startTime, string endTime, int page, int limit, RefAsync<int> count) |
| | | { |
| | | try |
| | | { |
| | | var item = Expressionable.Create<LogOperationSO>() |
| | | var item = Expressionable.Create<LogOperationSO>() |
| | | .AndIF(!string.IsNullOrWhiteSpace(menuName), it => it.MenuName.Contains(menuName.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(type), it => it.Type == type) |
| | | .AndIF(!string.IsNullOrWhiteSpace(msg), it => it.Msg.Contains(msg.Trim())) |
| | | .AndIF(!string.IsNullOrWhiteSpace(startTime), it => it.CreateTime >= Convert.ToDateTime(startTime)) |
| | | .AndIF(!string.IsNullOrWhiteSpace(endTime), it => it.CreateTime <= Convert.ToDateTime(endTime).AddDays(1)) |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var total = 0; |
| | | var list = GetAllWhereAsync(item) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }) |
| | | .OrderByDescending(it => it.CreateTime) |
| | | .ToOffsetPage(page, limit, ref total); |
| | | |
| | | count = total; |
| | | return list.OrderByDescending(m => m.CreateTime).ToList(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | var list = await GetAllWhereAsync(item) |
| | | .LeftJoin<SysDictionary>((it, dic) => it.Type == dic.Id.ToString()) |
| | | .LeftJoin<SysUserInfor>((it, dic, users) => it.CreateUser == users.Id) |
| | | .Select((it, dic, users) => new OperationDto() |
| | | { |
| | | Id = it.Id, |
| | | ParentNo = it.ParentNo, |
| | | MenuNo = it.MenuNo, |
| | | MenuName = it.MenuName, |
| | | FkNo = it.FkNo, |
| | | Type = dic.DictName, |
| | | Msg = it.Msg, |
| | | CreateTime = it.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), |
| | | CreateUserName = users.RealName, |
| | | }) |
| | | .OrderByDescending(it => it.CreateTime) |
| | | .ToPageListAsync(page, limit, count); |
| | | |
| | | return list.OrderByDescending(m => m.CreateTime).ToList(); |
| | | } |
| | | public bool AddLogOperationSo(string parentNo, string menuName, string fkNo, string type, string msg, int userId) |
| | | { |
| | |
| | | |
| | | var str = pallNo.Substring(3, 5); |
| | | string remove = pallNo.Substring(0, 3); |
| | | int sibelius = Convert.ToInt16(str); |
| | | int sibelius = 0; |
| | | var num = 0; |
| | | if (remove != "T" + DateTime.Now.ToString("yy")) |
| | | { |
| | | remove = "T" + DateTime.Now.ToString("yy"); |
| | | sibelius = 0; |
| | | } |
| | | else |
| | | { |
| | | sibelius = Convert.ToInt16(str); |
| | | } |
| | | for (int i = 0; i < groupCount; i++) |
| | | { |
| | | sibelius += 1; |
| | |
| | | //Console.WriteLine(UtilMethods.GetNativeSql(sql, pars)); |
| | | |
| | | //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用 |
| | | //Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars)); |
| | | Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars)); |
| | | |
| | | }; |
| | | |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using SqlSugar; |
| | | |
| | | namespace WMS.IBLL.IBllSoServer |
| | | { |
| | |
| | | /// <param name="limit"></param> |
| | | /// <param name="count"></param> |
| | | /// <returns></returns> |
| | | List<CompleteDetailDto> GetCompleteDetailList(int id, int page, int limit, out int count); |
| | | Task<List<CompleteDetailDto>> GetCompleteDetailList(GetCompleteDetailVm model, RefAsync<int> count); |
| | | |
| | | /// <summary> |
| | | /// 获取拣货明细中详细箱支信息 根据箱码\支码 |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using SqlSugar; |
| | | |
| | | namespace WMS.IBLL.IBllSoServer |
| | | { |
| | |
| | | /// <param name="limit"></param> |
| | | /// <param name="count"></param> |
| | | /// <returns></returns> |
| | | List<ExportAllotDto> GetExportAllotList(string no, string waveNo, string palletNo, string skuNo, string skuName, string lotNo, string status, string boxNo, int page, int limit, out int count); |
| | | Task<List<ExportAllotDto>> GetExportAllotList(GetExportAllotVm model, RefAsync<int> count); |
| | | |
| | | /// <summary> |
| | | /// 撤销分配(删除) |
| | |
| | | /// <param name="limit"></param> |
| | | /// <param name="count"></param> |
| | | /// <returns></returns> |
| | | List<DataStockDetail> GetPalletNoOutList(string skuNo, string skuName, string palletNo, string lotNo, |
| | | string inspectMark, string bitPalletMark, int page, int limit, out int count); |
| | | Task<List<DataStockDetail>> GetPalletNoOutList(GetPalletNoOutVm model, RefAsync<int> count); |
| | | |
| | | /// <summary> |
| | | /// 托盘下发出库 |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.InterFaceModel; |
| | | using Model.ModelDto.BllSoDto; |
| | | using Model.ModelVm.BllSoVm; |
| | | using SqlSugar; |
| | | |
| | | namespace WMS.IBLL.IBllSoServer |
| | | { |
| | |
| | | /// <param name="limit">数量</param> |
| | | /// <param name="count">中数量</param> |
| | | /// <returns></returns> |
| | | List<WaveMageDto> GetWaveMageList(string waveNo, string status, string lotNo, int? logisticsId, int page, int limit, out int count); |
| | | Task<List<WaveMageDto>> GetWaveMageList(GetWaveMageVm model, RefAsync<int> count); |
| | | |
| | | /// <summary> |
| | | /// 获取添加波次单的出库单信息 |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using Model.ModelDto.LogDto; |
| | | using SqlSugar; |
| | | |
| | | namespace WMS.IBLL.ILogServer |
| | | { |
| | |
| | | /// <param name="limit"></param> |
| | | /// <param name="count"></param> |
| | | /// <returns></returns> |
| | | List<OperationDto> GetLogOperationSoList(string menuName, string type, string msg, string startTime, |
| | | string endTime, int page, int limit, out int count); |
| | | Task<List<OperationDto>> GetLogOperationSoList(string menuName, string type, string msg, string startTime, |
| | | string endTime, int page, int limit, RefAsync<int> count); |
| | | /// <summary> |
| | | /// 添加出库操作日志 |
| | | /// </summary> |
| | |
| | | [Route("api/[controller]/[action]")] |
| | | [ApiController] |
| | | [Authorize] |
| | | |
| | | |
| | | public class BllAsnController : ControllerBase |
| | | { |
| | | #region 依赖注入 |
| | |
| | | #endregion |
| | | |
| | | #region 构造函数 |
| | | public BllAsnController(IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc,IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc,IOperationASNServer logSvc, IPalletUnbindServer palletUnbind,IAuditLogServer auditLog,IBllLabelBoxNoServer labelBox, IProcurePlanServer procurePlanSvc) |
| | | public BllAsnController(IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc, IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc, IOperationASNServer logSvc, IPalletUnbindServer palletUnbind, IAuditLogServer auditLog, IBllLabelBoxNoServer labelBox, IProcurePlanServer procurePlanSvc) |
| | | { |
| | | _arrivalNoticeSvc = arrivalNoticeSvc; |
| | | _PalletBindSvc = palletBindSvc; |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _arrivalNoticeSvc.GetArrivalNoticeList(model, count); |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | } |
| | | |
| | | |
| | | [HttpPost] |
| | |
| | | } |
| | | if (strMesage.Contains("-1")) |
| | | { |
| | | return Ok(new { code = 0, msg = "部分成功 "+ strMesage }); |
| | | return Ok(new { code = 0, msg = "部分成功 " + strMesage }); |
| | | } |
| | | else |
| | | { |
| | |
| | | /// <param name="reason"></param> |
| | | /// <returns></returns> |
| | | [HttpGet] |
| | | public IActionResult CancelOrder(int id,string reason) |
| | | public IActionResult CancelOrder(int id, string reason) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | |
| | | _arrivalNoticeSvc.CancelOrder(id,reason,int.Parse(userId)); |
| | | |
| | | |
| | | _arrivalNoticeSvc.CancelOrder(id, reason, int.Parse(userId)); |
| | | |
| | | |
| | | return Ok(new { code = 0, msg = "入库单撤销申请成功" }); |
| | | |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | } |
| | | |
| | | [HttpGet] |
| | | public IActionResult GetBoxInfoByBoxNo(string boxNo, string boxNo3,int bindNo=0) |
| | | public IActionResult GetBoxInfoByBoxNo(string boxNo, string boxNo3, int bindNo = 0) |
| | | { |
| | | try |
| | | { |
| | | var models = _PalletBindSvc.GetBoxInfoByBoxNo(boxNo, boxNo3,bindNo); |
| | | var models = _PalletBindSvc.GetBoxInfoByBoxNo(boxNo, boxNo3, bindNo); |
| | | |
| | | return Ok(new { code = 0, count= models.Count, msg = "箱支明细信息", data = models }); |
| | | return Ok(new { code = 0, count = models.Count, msg = "箱支明细信息", data = models }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | _PalletBindSvc.DelBindBoxInfo(boxNo,int.Parse(userId)); |
| | | _PalletBindSvc.DelBindBoxInfo(boxNo, int.Parse(userId)); |
| | | |
| | | return Ok(new { code = 0, count = 0, msg = "删除成功", data = "" }); |
| | | } |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | _PalletBindSvc.CancelPalletBind(id, reason,int.Parse(userId)); |
| | | _PalletBindSvc.CancelPalletBind(id, reason, int.Parse(userId)); |
| | | |
| | | return Ok(new { code = 0, count = 0, msg = "托盘绑定撤销申请成功", data = "" }); |
| | | } |
| | |
| | | { |
| | | var list = _BoxInfoSvc.GetBoxInfoList(boxNo, isContinue, boxNo2); |
| | | var num = 0; |
| | | if (list!=null) |
| | | if (list != null) |
| | | { |
| | | num = list.Count; |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | var models = _PalletBindSvc.GetLocateList("W01",model.RoadwayNo,model.Row,model.Column,model.Layer,model.LocateNo,model.StockDetailId, model.Page,model.Limit, out int count); |
| | | var models = _PalletBindSvc.GetLocateList("W01", model.RoadwayNo, model.Row, model.Column, model.Layer, model.LocateNo, model.StockDetailId, model.Page, model.Limit, out int count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "获取指定储位信息", data = models }); |
| | | } |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | _PalletBindSvc.SaveAppointSlot(model.BindId,model.LocateId,int.Parse(userId)); |
| | | _PalletBindSvc.SaveAppointSlot(model.BindId, model.LocateId, int.Parse(userId)); |
| | | |
| | | return Ok(new { code = 0, count = 0, msg = "指定储位成功", data = "" }); |
| | | } |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "入库任务信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "入库任务信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | { |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | _auditLog.EditAudit(model.Id,model.Status,model.Opinion, int.Parse(userId)); |
| | | _auditLog.EditAudit(model.Id, model.Status, model.Opinion, int.Parse(userId)); |
| | | |
| | | return Ok(new { code = 0, count=0, msg = "审核记录列表", data = "" }); |
| | | return Ok(new { code = 0, count = 0, msg = "审核记录列表", data = "" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | var list = _BoxInfoSvc.AddLabelBox(model.Id, model.IsReset, decimal.Parse(model.ArriveQty), model.ProductionTime, model.ExpirationTime, model.StoreTime, model.SupplierLot, int.Parse(userId)); |
| | | return Ok(new { code = 0, msg = "生成箱码标签成功", data = list }); |
| | | return Ok(new { code = 0, msg = "生成箱码标签成功", data = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | { |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | var list = _BoxInfoSvc.GetBuDaLabelList(model.BoxNo, model.EndBoxNo, model.BoxNo2, model.EndBoxNo2,model.Type,int.Parse(userId)); |
| | | var list = _BoxInfoSvc.GetBuDaLabelList(model.BoxNo, model.EndBoxNo, model.BoxNo2, model.EndBoxNo2, model.Type, int.Parse(userId)); |
| | | return Ok(new { code = 0, msg = "获取补打箱码标签信息", data = list }); |
| | | } |
| | | catch (Exception e) |
| | |
| | | { |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | _BoxInfoSvc.DelLabelByAsnNo(model.AsnNo,model.LotNo,int.Parse(userId)); |
| | | _BoxInfoSvc.DelLabelByAsnNo(model.AsnNo, model.LotNo, int.Parse(userId)); |
| | | return Ok(new { code = 0, msg = "删除成功", data = "" }); |
| | | } |
| | | catch (Exception e) |
| | |
| | | { |
| | | try |
| | | { |
| | | var type = new List<string>() { "0","1","2" }; |
| | | var type = new List<string>() { "0", "1", "2" }; |
| | | var bolls = _taskSvc.GetArchivingTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, out int count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "任务信息", data = bolls }); |
| | |
| | | { |
| | | try |
| | | { |
| | | var bolls = _logSvc.GetArchivingLogOperationList(model.ComeFrom,model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, out int count); |
| | | var bolls = _logSvc.GetArchivingLogOperationList(model.ComeFrom, model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, out int count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "入库操作日志信息", data = bolls }); |
| | | } |
| | |
| | | /// <returns>采购单信息</returns> |
| | | [HttpPost] |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetProcurePlanNoticeList(ProcurePlanNoticeVm model) |
| | | public async Task<SqlSugarPagedList> GetProcurePlanNoticeList(ProcurePlanNoticeVm model) |
| | | { |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _procurePlanSvc.GetProcurePlanNoticeList(model, count); |
| | |
| | | { |
| | | throw new Exception("未获取到用户信息"); |
| | | } |
| | | |
| | | |
| | | _procurePlanSvc.CreateAsnByProcurePlan(Convert.ToInt32(model.Id), int.Parse(UserId)); |
| | | |
| | | return Ok(new { code = 0, msg = "添加成功" }); |
| | |
| | | { |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _stockCheckSvc.GetStockCheckList(model.CrNo, model.Status, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, model.StartTime, model.EndTime, model.Page, model.Limit, count); |
| | | return Ok(new { code = 0, count, msg = "盘点单信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "盘点单信息", data = bolls }); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _stockCheckSvc.GetStockCheckDetailList(model.CrNo, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "盘点单明细信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "盘点单明细信息", data = bolls }); |
| | | } |
| | | /// <summary> |
| | | /// 获取库存明细信息(盘点选择明细数据源) |
| | |
| | | { |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _stockCheckSvc.GetCheckStockDetailList(model.HouseNo, model.RoadwayNo, model.LocateNo, model.Msg, model.Page, model.Limit, count); |
| | | return Ok(new { code = 0, count, msg = "获取库存明细信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "获取库存明细信息", data = bolls }); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var list = await _stockCheckLogSvc.GetStockCheckLogList(model.CrNo, model.Status, model.PalletNo, model.BoxNo, model.SkuNo, model.SkuName, model.LotNo, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "盘点记录", data = list }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "盘点记录", data = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _taskSvc.GetTaskList(type, model.Type, model.Status, model.TaskNo, model.IsSuccess, model.PalletNo, model.Msg, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "库内任务信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "库内任务信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _logSvc.GetLogOperationCrList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "出库操作日志信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "出库操作日志信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | { |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | List<MateDataStockDto> mateDataStockDtos = await _stockPallet.GetPalletsOutside(model.SkuNo, model.SkuName, model.LotNo, model.PalletNo, model.Page, model.Limit, count); |
| | | return Ok(new { code = 0, count, msg = "获取库外托盘信息成功", data = mateDataStockDtos }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "获取库外托盘信息成功", data = mateDataStockDtos }); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult GetExportAllotList(GetExportAllotVm model) |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetExportAllotList(GetExportAllotVm model) |
| | | { |
| | | try |
| | | { |
| | | var bolls = _exAllotSvc.GetExportAllotList(model.SoNo, model.WaveNo, model.PalletNo, model.SkuNo, model.SkuName, model.LotNo, model.Status,model.BoxNo, model.Page, model.Limit, out int count); |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _exAllotSvc.GetExportAllotList(model, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "出库分配信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return Ok(new { code = 1, msg = e.Message }); |
| | | } |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult GetCompleteDetailList(GetCompleteDetailVm model) |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetCompleteDetailList(GetCompleteDetailVm model) |
| | | { |
| | | try |
| | | { |
| | | var bolls = _comDetailSvc.GetCompleteDetailList(model.Id,model.Page, model.Limit, out int count); |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _comDetailSvc.GetCompleteDetailList(model, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "拣货明细信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return Ok(new { code = 1, msg = e.Message }); |
| | | } |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | |
| | | [HttpGet] |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult GetPalletNoOutList(GetPalletNoOutVm model) |
| | | [HttpPost] |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetPalletNoOutList(GetPalletNoOutVm model) |
| | | { |
| | | try |
| | | { |
| | | var bolls = _exNoticeSvc.GetPalletNoOutList(model.SkuNo,model.SkuName,model.PalletNo,model.LotNo,model.InspectMark,model.BitPalletMark,model.Page,model.Limit,out int count); |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _exNoticeSvc.GetPalletNoOutList(model, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "获取托盘出库数据异常", data = bolls}); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return Ok(new { code = 1, msg = "托盘出库数据" + e.Message }); |
| | | } |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _taskSvc.GetTaskList( type, model.Type,model.Status,model.TaskNo,model.IsSuccess,model.PalletNo,model.Msg,model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "出库任务信息", data = bolls }); |
| | | return Ok(new { code = 0, count = count.Value, msg = "出库任务信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult GetLogOperationSoList(GetOperationVm model) |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetLogOperationSoList(GetOperationVm model) |
| | | { |
| | | try |
| | | { |
| | | var bolls = _logSvc.GetLogOperationSoList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime,model.Page, model.Limit, out int count); |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _logSvc.GetLogOperationSoList(model.MenuName, model.Type, model.Msg, model.StartTime, model.EndTime, model.Page, model.Limit, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "出库操作日志信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return Ok(new { code = 1, msg = e.Message }); |
| | | } |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | |
| | | #endregion |
| | |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult GetWaveMageList(GetWaveMageVm model) |
| | | [ServiceFilter(typeof(ApiResponseActionFilter))] |
| | | public async Task<SqlSugarPagedList> GetWaveMageList(GetWaveMageVm model) |
| | | { |
| | | try |
| | | { |
| | | var bolls = _waveSvc.GetWaveMageList(model.WaveNo, model.Status, model.LotNo, model.LogisticsId, model.Page, model.Limit, out int count); |
| | | RefAsync<int> count = new RefAsync<int>(); |
| | | var bolls = await _waveSvc.GetWaveMageList(model, count); |
| | | |
| | | return Ok(new { code = 0, count, msg = "出库单信息", data = bolls }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | return Ok(new { code = 1, msg = e.Message }); |
| | | } |
| | | return new SqlSugarPagedList() { Items = bolls, Total = count }; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// <returns></returns> |
| | | [Authorize] |
| | | [HttpGet] |
| | | [UnitOfWork] |
| | | public async Task<IActionResult> CheckOutHouse(string crNo, string outMode) |
| | | { |
| | | try |
| | | //获取当前登录的用户ID |
| | | var claimsIdentity = this.User.Identity as ClaimsIdentity; |
| | | if (claimsIdentity == null) |
| | | { |
| | | //获取当前登录的用户ID |
| | | var claimsIdentity = this.User.Identity as ClaimsIdentity; |
| | | if (claimsIdentity == null) |
| | | { |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; |
| | | if (string.IsNullOrWhiteSpace(userId)) |
| | | { |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | string str = ""; |
| | | var list = await _crCheckSvc.CheckOutHouse(crNo, outMode, _config.WcsHost + _config.IssueComApiUrl, str); |
| | | |
| | | return Ok(new { code = 0, msg = str, data = list }); |
| | | |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | catch (Exception e) |
| | | var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; |
| | | if (string.IsNullOrWhiteSpace(userId)) |
| | | { |
| | | return Ok(new { code = 1, msg = e.Message }); |
| | | return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); |
| | | } |
| | | string str = ""; |
| | | var list = await _crCheckSvc.CheckOutHouse(crNo, outMode, _config.WcsHost + _config.IssueComApiUrl, str); |
| | | |
| | | return Ok(new { code = 0, msg = str, data = list }); |
| | | |
| | | } |
| | | |
| | | /// <summary> |