| | |
| | | WaveNo = "", |
| | | IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1", |
| | | IsMixBox = "0", |
| | | |
| | | OrderDetailCode = d.lineNo, |
| | | Status = "0",//默认等待执行 |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | |
| | | WaveNo = "", |
| | | IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1", |
| | | IsMixBox = "0", |
| | | |
| | | Status = "0",//默认等待执行 |
| | | CreateUser = 0, |
| | | }; |
| | | list.Add(item); |
| | |
| | | |
| | | CreateUser = 0, |
| | | }; |
| | | if (houseNo == "1000" || houseNo == "1001" || houseNo == "2000" || houseNo == "2002" || houseNo == "2003" || houseNo == "2004") |
| | | if (houseNo == "1000" || houseNo == "1001" || houseNo == "1002" || houseNo == "1003" || houseNo == "1098" || houseNo == "2000" || houseNo == "2001" || houseNo == "2002" || houseNo == "2003" || houseNo == "2004" || houseNo == "3101" || houseNo == "3102" || houseNo == "3103" || houseNo == "3104") |
| | | { |
| | | notice.WareHouseNo = "W02"; |
| | | } |
| | | else if (houseNo == "4000") |
| | | else if (houseNo == "4000" | houseNo == "4001") |
| | | { |
| | | notice.WareHouseNo = "W01"; |
| | | } |
| | |
| | | //系统对接后放开 |
| | | var jsonData = JsonConvert.SerializeObject(soInfo); |
| | | |
| | | var response = HttpHelper.DoPost(url, jsonData, "出库单完成上传", "ERP"); |
| | | var response = HttpHelper.DoPost(url, jsonData, "出库单完成上传", "SAP"); |
| | | |
| | | var obj = JsonConvert.DeserializeObject<ErpModel>(response);//解析返回数据 |
| | | if (obj.Success != 0) |
| | | var obj = JsonConvert.DeserializeObject<SapResultModel>(response);//解析返回数据 |
| | | if (obj.RESULT != true) |
| | | { |
| | | throw new Exception("上传失败" + obj.Message); |
| | | throw new Exception("上传失败" + obj.MESSAGE); |
| | | } |
| | | #endregion |
| | | } |
| | |
| | | { |
| | | throw new Exception("未查询到出库单据信息"); |
| | | } |
| | | if (notice.Origin != "WMS" || notice.Status != "0") |
| | | //if (notice.Origin != "WMS" || notice.Status != "0") |
| | | if (notice.Status != "0") |
| | | { |
| | | throw new Exception("参数异常,请检查状态是否未等待执行或来源是否是WMS"); |
| | | } |
| | |
| | | //更新出库单 |
| | | foreach (var d in model.Detail) |
| | | { |
| | | if (d.Qty < 1) |
| | | if (d.Qty <= 0) |
| | | { |
| | | throw new Exception("出库数据必须大于0"); |
| | | } |
| | |
| | | { |
| | | throw new Exception("未查询到出库单据信息"); |
| | | } |
| | | if (notice.Status != "4") |
| | | //2025年12月08日可户要求少拣货也可以正常关单 |
| | | List<string> statusList = new List<string>() { "3", "4" }; |
| | | if (!statusList.Contains(notice.Status)) |
| | | { |
| | | throw new Exception("参数异常,请检查状态是否为执行完成或订单关闭"); |
| | | } |
| | | //总库存信息 |
| | | var stockList = Db.Queryable<DataStock>().ToList(); |
| | | ////总库存信息 |
| | | //var stockList = Db.Queryable<DataStock>().ToList(); |
| | | //出库单明细 |
| | | var noticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == notice.SONo).ToList(); |
| | | |
| | |
| | | notice.UpdateTime = DateTime.Now; |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | var skuList = noticeDetail.Select(d => d.SkuNo).ToList(); |
| | | var stocks = stockList.Where(s => skuList.Contains(s.SkuNo)).ToList(); |
| | | //var skuList = noticeDetail.Select(d => d.SkuNo).ToList(); |
| | | //var stocks = stockList.Where(s => skuList.Contains(s.SkuNo)).ToList(); |
| | | |
| | | List<string> sqlList = new List<string>(); |
| | | |
| | | foreach (var d in noticeDetail) |
| | | { |
| | | #region MyRegion |
| | | //更改库存明细锁定数量 |
| | | //var orders = dataContext.WmsExportOrder.Where(o => o.ExportDetailId == d.Id |
| | | // && o.ExportExecuteFlag != "4" && o.ExportExecuteFlag == "3" && o.pickingType == 0).ToList(); |
| | |
| | | //{ |
| | | // throw new Exception("当前单据明细中计划数量与拣货数量不符,请核实"); |
| | | //} |
| | | #region 库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了) |
| | | |
| | | //库存表减去锁定数量与总数量(PDA拣货的时候已经减去数量了) |
| | | /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo); |
| | | if (!string.IsNullOrWhiteSpace(d.LotNo)) |
| | | { |
| | |
| | | Db.Updateable(st).UpdateColumns(it => new { it.Qty, it.LockQty }).ExecuteCommand(); |
| | | }*/ |
| | | #endregion |
| | | //实际拣货表 |
| | | string completeSql = $@"select PalletNo,Qty-CompleteQty as lessQty |
| | | from BllExportAllot |
| | | where IsDel='0' and SONo='{d.SONo}' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}'"; |
| | | DataTable completeDt = Db.Ado.GetDataTable(completeSql); |
| | | //修改托盘明细的锁定数量 |
| | | foreach (DataRow dr in completeDt.Rows) |
| | | { |
| | | decimal lessQty = Convert.ToDecimal(dr["lessQty"]); |
| | | if (lessQty > 0) |
| | | { |
| | | //查看库存明细锁定数量-lessQty |
| | | string stockDetailSql = $@"select LockQty-{lessQty} as morelockQty from DataStockDetail where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'"; |
| | | decimal morelockQty = Db.Ado.GetDecimal(stockDetailSql); |
| | | |
| | | if (morelockQty >= 0) |
| | | { |
| | | sqlList.Add($@"update DataStockDetail set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{d.SkuNo}' and LotNo='{d.LotNo}' and PalletNo='{dr["PalletNo"] + ""}'"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | //修改库存总表 |
| | | string exportDetailSql = $@"select SkuNo,LotNo,sum(Qty)-sum(CompleteQty) as lessQty |
| | | from BllExportNoticeDetail |
| | | where IsDel='0' and SONo='{notice.SONo}' |
| | | group by SkuNo,LotNo"; |
| | | DataTable exportDetailDt = Db.Ado.GetDataTable(exportDetailSql); |
| | | |
| | | foreach (DataRow dr in exportDetailDt.Rows) |
| | | { |
| | | decimal lessQty = Convert.ToDecimal(dr["lessQty"]); |
| | | if (lessQty > 0) |
| | | { |
| | | //查看库存锁定数量-lessQty |
| | | string stockDetailSql = $@"select LockQty-{lessQty} as morelockQty from DataStock where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'"; |
| | | decimal morelockQty = Db.Ado.GetDecimal(stockDetailSql); |
| | | |
| | | if (morelockQty >= 0) |
| | | { |
| | | sqlList.Add($@"update DataStock set LockQty=LockQty-{morelockQty} where IsDel='0' and SkuNo='{dr["SkuNo"] + ""}' and LotNo='{dr["LotNo"] + ""}'"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | foreach (string sqlStr in sqlList) |
| | | { |
| | | var end = Db.Ado.ExecuteCommand(sqlStr); |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("出库作业", "出库单据", notice.SONo, "关单", $"关闭了单据号为{notice.SONo}的单据信息", userId); |
| | | |
| | |
| | | } |
| | | //还需要分配的数量 |
| | | decimal needQty = detail.Qty - (detail.AllotQty == null ? 0 : decimal.Parse(detail.AllotQty.ToString())); |
| | | |
| | | //排除车间库存 |
| | | List<string> areaNoList = new List<string>() { "B06", "B07", "B09", "B24", "B26", "B27", "B28", "B29" }; |
| | | //库存明细 Status 0:待分配 1:部分分配 2:已分配 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0" |
| | | && m.AreaNo != "B06" && m.AreaNo != "B07" && m.AreaNo != "B09" && m.AreaNo != "B24")//排除车间库存 |
| | | .ToList(); |
| | | |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == detail.SkuNo && (m.Qty - m.FrozenQty - m.LockQty + m.InspectQty) > 0 && (m.Status == "0" || m.Status == "1") && m.IsDel == "0" && !areaNoList.Contains(m.AreaNo)).ToList(); |
| | | |
| | | //判断单号是否指定批次 |
| | | if (!string.IsNullOrWhiteSpace(detail.LotNo)) |
| | |
| | | CreateUser = userId, |
| | | CreateTime = DateTime.Now |
| | | }; |
| | | if (s.WareHouseNo == "W04") |
| | | //2025年12月08日货架库和平库,直接待拣货 |
| | | List<string> wareHouseList = new List<string>() { "W02", "W04" }; |
| | | if (wareHouseList.Contains(s.WareHouseNo)) |
| | | { |
| | | allot.Status = "2";//待拣货 |
| | | xQty += allot.Qty; |
| | |
| | | CreateUser = userId, |
| | | CreateTime = DateTime.Now |
| | | }; |
| | | if (stock.WareHouseNo == "W04") |
| | | //2025年12月08日货架库和平库,直接待拣货 |
| | | List<string> wareHouseList = new List<string>() { "W02", "W04" }; |
| | | if (wareHouseList.Contains(stock.WareHouseNo)) |
| | | { |
| | | allot.Status = "2";//待拣货 |
| | | xQty += allot.Qty; |
| | |
| | | |
| | | } |
| | | |
| | | var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m => m.LocatNo).ToList(); |
| | | //所属区域集合 |
| | | List<string> areNolist = new List<string>() { "B01", "B02", "B05" }; |
| | | var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && areNolist.Contains(m.AreaNo)).Select(m => m.LocatNo).ToList(); |
| | | //判断是否是原辅料出库任务 货架储位=》平库储位 |
| | | if (endLocateList.Contains(task.EndLocat) && PalletType == "0") |
| | | { |
| | |
| | | throw new Exception("未查询到任务信息"); |
| | | } |
| | | //获取对应库位信息 |
| | | var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | //var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | var startlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.StartLocat); |
| | | if (startlocat == null) |
| | | { |
| | | throw new Exception("未查询到储位信息"); |
| | | } |
| | | startlocat.Status = "0";//修改分配信息状态 |
| | | //获取储位信息 |
| | | var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | //var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); |
| | | var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.StartLocat); |
| | | //获取移库任d务对应目标储位信息 |
| | | SysStorageLocat endlocat = new SysStorageLocat(); |
| | | if (task.Type == "2") |
| | | { |
| | | endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat); |
| | | //endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.EndLocat); |
| | | endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == task.EndLocat); |
| | | if (endlocat == null) |
| | | { |
| | | throw new Exception("未查询到目标储位信息"); |
| | |
| | | //获取库存 |
| | | var datastock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo); |
| | | //获取储位信息 |
| | | var locate = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == stockDetail.LocatNo); |
| | | //var locate = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == stockDetail.LocatNo); |
| | | var locate = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == stockDetail.LocatNo); |
| | | |
| | | //判断是否为空托盘 |
| | | if (stockDetail.SkuNo == "100099") |