| | |
| | | using WMS.Entity.BllAsnEntity; |
| | | using System.Threading.Tasks; |
| | | using Utility; |
| | | using WMS.BLL.Logic; |
| | | |
| | | namespace WMS.BLL.BllPdaServer |
| | | { |
| | |
| | | #region 拼托信息 |
| | | var sdId = 0; |
| | | bool isNew = false; |
| | | |
| | | |
| | | var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo); |
| | | |
| | | if (pinStockDetail != null) |
| | | if (pinStockDetail != null) |
| | | { |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | { |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id!= pinStockDetail.Id).ToList(); |
| | | if (pinStockDetails.Count(m=>m.SONo != notice.SONo) > 0) |
| | |
| | | var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); |
| | | if (newPalletInfo == null) |
| | | { |
| | | throw Oops.Bah("新托盘信息不存在或已被使用!"); |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew &&(m.SkuNo != stockDetail.SkuNo || m.LotNo != stockDetail.LotNo)).ToList(); |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("新托盘信息不存在或已被使用!"); |
| | | } |
| | | } |
| | | //修改新托盘状态 |
| | | newPalletInfo.Status = "1"; |
| | | await Db.Updateable(newPalletInfo).ExecuteCommandAsync(); |
| | | else |
| | | { |
| | | //修改新托盘状态 |
| | | newPalletInfo.Status = "1"; |
| | | await Db.Updateable(newPalletInfo).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | } |
| | | |
| | | var sd = new DataStockDetail(); |
| | |
| | | |
| | | if (isNew) |
| | | { |
| | | sd.Qty = pickQty; |
| | | sd.LockQty = pickQty; |
| | | await Db.Updateable(sd).ExecuteCommandAsync(); |
| | | var sdnew = Db.Queryable<DataStockDetail>().First(m => m.Id == sdId); |
| | | sdnew.Qty = pickQty; |
| | | sdnew.LockQty = pickQty; |
| | | await Db.Updateable(sdnew).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | |
| | | var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); |
| | | if (newPalletInfo == null) |
| | | { |
| | | throw Oops.Bah("新托盘信息不存在或已被使用!"); |
| | | var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo && m.LotNo != stockDetail.LotNo)).ToList(); |
| | | if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) |
| | | { |
| | | throw Oops.Bah("新托盘信息不存在或已被使用!"); |
| | | } |
| | | } |
| | | //修改新托盘状态 |
| | | newPalletInfo.Status = "1"; |
| | | await Db.Updateable(newPalletInfo).ExecuteCommandAsync(); |
| | | else |
| | | { |
| | | //修改新托盘状态 |
| | | newPalletInfo.Status = "1"; |
| | | await Db.Updateable(newPalletInfo).ExecuteCommandAsync(); |
| | | } |
| | | } |
| | | |
| | | if (isNew) |
| | |
| | | } |
| | | } |
| | | |
| | | //取样出库拣货(标签) |
| | | public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) |
| | | { |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrWhiteSpace(qcNo)) |
| | | { |
| | | throw Oops.Bah("请验单据不能为空"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | var type = await GetSampleType2(palletNo); |
| | | if (type != "0") |
| | | { |
| | | throw Oops.Bah("当前托盘请在数量页签取样"); |
| | | } |
| | | if (string.IsNullOrEmpty(boxNo)) |
| | | { |
| | | throw Oops.Bah("外箱条码不能为空"); |
| | | } |
| | | //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) |
| | | //{ |
| | | // throw new Exception("追溯条码和拣货数量不能同时输入"); |
| | | //} |
| | | |
| | | //请验单 |
| | | var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); |
| | | if (inspecd == null) |
| | | { |
| | | throw Oops.Bah("未查询到请验单信息"); |
| | | } |
| | | if (inspecd.Status == "0" || inspecd.Status == "3") |
| | | { |
| | | throw Oops.Bah("请验单状态错误,请核实"); |
| | | } |
| | | //库存明细信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("未在库存中查询出当前托盘信息"); |
| | | } |
| | | // 判断托盘是否在库内 |
| | | if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) |
| | | { |
| | | var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); |
| | | if (wareHouseData.Type != "2") |
| | | { |
| | | throw Oops.Bah("当前托盘不是库外托盘,请核实"); |
| | | } |
| | | } |
| | | //箱支信息 |
| | | var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); |
| | | //库存总表 |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("未查询出库存总信息"); |
| | | } |
| | | //入库单 |
| | | var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | throw Oops.Bah("未查询到入库单信息"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | //取样明细记录表 |
| | | var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); |
| | | |
| | | var isAddSampld = false; |
| | | var PickType = ""; //0数量拣货 1 箱支拣货 |
| | | var EditboxInfo = new DataBoxInfo(); |
| | | var EditboxInfoList = new List<DataBoxInfo>(); |
| | | |
| | | #region 判断拣货方式 散支 数量 |
| | | |
| | | if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //数量拣货 |
| | | { |
| | | PickType = "0"; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(boxNo3)) //支中拣数量 |
| | | { |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) |
| | | { |
| | | throw Oops.Bah("未查询到支码信息"); |
| | | } |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) |
| | | { |
| | | throw Oops.Bah("支码信息数据信息错误,请核实"); |
| | | } |
| | | EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; |
| | | } |
| | | else //箱中拣数量 |
| | | { |
| | | |
| | | if (boxInfoList.Count == 0) |
| | | { |
| | | throw Oops.Bah("未在托盘上查询到箱码信息,请核实"); |
| | | } |
| | | if (boxInfoList.Count > 1) |
| | | { |
| | | throw Oops.Bah("箱码数据信息错误,请核实"); |
| | | } |
| | | if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) |
| | | { |
| | | throw Oops.Bah("当前箱码中含有支码,请输入支码信息取样"); |
| | | } |
| | | EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); |
| | | |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; |
| | | |
| | | } |
| | | if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | //判断箱中是否含有支码,有:不让拣数量 |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | } |
| | | else //箱支拣货 |
| | | { |
| | | PickType = "1"; |
| | | var qty = 0m; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(boxNo3)) //拣支 |
| | | { |
| | | |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) |
| | | { |
| | | throw Oops.Bah("未查询到支码信息"); |
| | | } |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) |
| | | { |
| | | throw Oops.Bah("支码数据信息错误,请核实"); |
| | | } |
| | | EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); |
| | | if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | qty = EditboxInfoList.Sum(m => m.Qty); |
| | | //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; |
| | | } |
| | | else //拣箱 |
| | | { |
| | | |
| | | if (boxInfoList.Count == 0) |
| | | { |
| | | throw Oops.Bah("未在托盘上查询到箱码信息,请核实"); |
| | | } |
| | | if (boxInfoList.Count > 1) |
| | | { |
| | | throw Oops.Bah("箱码数据信息错误,请核实"); |
| | | } |
| | | if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) |
| | | { |
| | | throw Oops.Bah("当前箱码中含有支码,请输入支码信息取样"); |
| | | } |
| | | EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); |
| | | |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | qty = EditboxInfoList.Sum(m => m.Qty); |
| | | //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; |
| | | } |
| | | if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | Db.BeginTran(); |
| | | #region |
| | | |
| | | |
| | | if (PickType == "0") |
| | | { |
| | | |
| | | #region 添加或修改取样明细 |
| | | |
| | | var boxInfo = EditboxInfo; |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = decimal.Parse(pickQty), |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); |
| | | // if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | // { |
| | | // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); |
| | | // } |
| | | // sampldFirst.CompleteQty += decimal.Parse(pickQty); |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //拆包有效期更改 |
| | | var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; |
| | | foreach (var item in boxInfoList) |
| | | { |
| | | item.BitBoxMark = "1"; |
| | | item.InspectMark = "1"; |
| | | |
| | | if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) |
| | | { |
| | | if (item.ProductionTime != null) |
| | | { |
| | | var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); |
| | | if (time < item.ExpirationTime) |
| | | { |
| | | item.ExpirationTime = time; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | Db.Updateable(boxInfoList).ExecuteCommand(); |
| | | |
| | | //库存箱码 |
| | | boxInfo.Qty -= decimal.Parse(pickQty); |
| | | if (boxInfo.Qty == 0) |
| | | { |
| | | Db.Deleteable(boxInfo).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(boxInfo).ExecuteCommand(); |
| | | } |
| | | //库存明细 |
| | | stockDetail.Qty -= decimal.Parse(pickQty); |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= decimal.Parse(pickQty); |
| | | if (stock.Qty == 0) |
| | | { |
| | | Db.Deleteable(stock).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(stock).ExecuteCommand(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 修改请验单 |
| | | |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | Db.Updateable(inspecd).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | } |
| | | else |
| | | { |
| | | var sumQty = 0m; |
| | | foreach (var boxInfo in EditboxInfoList) |
| | | { |
| | | #region 添加或修改取样明细 |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = boxInfo.Qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | await Db.Insertable(sampleDetail).ExecuteCommandAsync(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); |
| | | // if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | // { |
| | | // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); |
| | | // } |
| | | // sampldFirst.CompleteQty += boxInfo.Qty; |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //拆包有效期更改 |
| | | var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; |
| | | |
| | | foreach (var item in boxInfoList) |
| | | { |
| | | item.BitBoxMark = "1"; |
| | | item.InspectMark = "1"; |
| | | if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) |
| | | { |
| | | if (item.ProductionTime != null) |
| | | { |
| | | var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); |
| | | if (time < item.ExpirationTime) |
| | | { |
| | | item.ExpirationTime = time; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | await Db.Updateable(boxInfoList).ExecuteCommandAsync(); |
| | | |
| | | //库存箱码 |
| | | |
| | | await Db.Deleteable(boxInfo).ExecuteCommandAsync(); |
| | | |
| | | //库存明细 |
| | | stockDetail.Qty -= boxInfo.Qty; |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= boxInfo.Qty; |
| | | if (stock.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | sumQty += boxInfo.Qty; |
| | | } |
| | | |
| | | #region 修改请验单 |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | |
| | | await Db.Updateable(inspecd).ExecuteCommandAsync(); |
| | | #endregion |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "取样拣货", qcNo, "拣货", $"在PDA上对请验单号为:{qcNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw e; |
| | | } |
| | | } |
| | | |
| | | |
| | | //取样出库拣货(数量) |
| | | public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) |
| | | { |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrWhiteSpace(qcNo)) |
| | | { |
| | | throw Oops.Bah("请验单据不能为空"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | var type = await GetSampleType2(palletNo); |
| | | if (type != "1") |
| | | { |
| | | throw Oops.Bah("当前托盘请在标签页签取样"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能为空"); |
| | | } |
| | | if (decimal.Parse(pickQty) <= 0) |
| | | { |
| | | throw Oops.Bah("拣货数量不能小于等于0"); |
| | | } |
| | | |
| | | //请验单 |
| | | var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); |
| | | if (inspecd == null) |
| | | { |
| | | throw Oops.Bah("未查询到请验单信息"); |
| | | } |
| | | if (inspecd.Status == "0" || inspecd.Status == "3") |
| | | { |
| | | throw Oops.Bah("请验单状态错误,请核实"); |
| | | } |
| | | //库存明细信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo |
| | | && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("未在库存中查询出当前托盘信息"); |
| | | } |
| | | // 判断托盘是否在库内 |
| | | if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) |
| | | { |
| | | var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); |
| | | if (wareHouseData.Type != "2") |
| | | { |
| | | throw Oops.Bah("当前托盘不是库外托盘,请核实"); |
| | | } |
| | | } |
| | | //库存总表 |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("未查询出库存总信息"); |
| | | } |
| | | //入库单 |
| | | var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | throw Oops.Bah("未查询到入库单信息"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | //取样明细记录表 |
| | | var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); |
| | | var qty = decimal.Parse(pickQty); |
| | | //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; |
| | | |
| | | |
| | | #region 判断数量 |
| | | |
| | | if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | //判断箱中是否含有支码,有:不让拣数量 |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 添加或修改取样明细 |
| | | |
| | | Db.BeginTran(); |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | Standard = stockDetail.Standard, |
| | | LotNo = stockDetail.LotNo, |
| | | SupplierLot = stockDetail.SupplierLot, |
| | | CompleteQty = qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | await Db.Insertable(sampleDetail).ExecuteCommandAsync(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); |
| | | // sampldFirst.CompleteQty += qty; |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //库存明细 |
| | | stockDetail.Qty -= qty; |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | stockDetail.BitPalletMark = "1"; |
| | | stockDetail.InspectMark = "1"; |
| | | |
| | | await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= qty; |
| | | if (stock.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 修改请验单 |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | await Db.Updateable(inspecd).ExecuteCommandAsync(); |
| | | #endregion |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "取样拣货", qcNo, "拣货", $"在PDA上对请验单号为:{qcNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw e; |
| | | } |
| | | } |
| | | |
| | | //车间pda拣货 |
| | | public async Task ChejianPick(string palletNo, string boxNo, int userId) |
| | | { |
| | | Db.BeginTran(); |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw Oops.Bah("托盘码不能为空"); |
| | | } |
| | | if (string.IsNullOrEmpty(boxNo)) |
| | | { |
| | | throw Oops.Bah("追溯条码和拣货数量不能同时输入"); |
| | | } |
| | | |
| | | //箱码明细 |
| | | List<DataBoxInfo> boxInfos; |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); |
| | | if (await boxInfo.CountAsync() == 0) |
| | | { |
| | | throw Oops.Bah("未查询到该箱码及追溯码的信息"); |
| | | } |
| | | boxInfos = await boxInfo.ToListAsync(); |
| | | |
| | | //库存明细 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("未查询到该托盘分配的库存明细信息!"); |
| | | } |
| | | var areaList = new List<string>() { "B06", "B07", "B09" }; |
| | | if (!areaList.Contains(stockDetail.AreaNo)) |
| | | { |
| | | throw Oops.Bah("托盘不是车间托盘!"); |
| | | } |
| | | //库存总表 |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("未查询到该托盘分配的库存信息!"); |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | var pickQty = boxInfos.Sum(m => m.Qty); |
| | | |
| | | |
| | | //删除或修改库存明细 |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= pickQty; |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | | stockDetail.Status = "2"; |
| | | } |
| | | else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) |
| | | { |
| | | stockDetail.Status = "1"; |
| | | } |
| | | else |
| | | { |
| | | stockDetail.Status = "0"; |
| | | } |
| | | |
| | | if (stockDetail.Qty <= 0) |
| | | { |
| | | await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | stock.Qty -= pickQty; |
| | | //stock.LockQty -= pickQty; |
| | | if (stock.Qty <= 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | } |
| | | var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo); |
| | | if (num2 <= 0) |
| | | { |
| | | //改变托盘状态 |
| | | var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == palletNo && m.IsDel == "0"); |
| | | if (pallet == null) |
| | | { |
| | | throw Oops.Bah("未在托盘表中查询到托盘信息"); |
| | | } |
| | | pallet.Status = "0"; |
| | | await Db.Updateable(pallet).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "车间出库", boxNo, "拣货", $"在PDA上对箱号为:{boxNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (AppFriendlyException e) |
| | | { |
| | | Db.RollbackTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据箱码获取标签箱码信息(车间入库-获取WMS生成的箱信息) |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public List<BoxInfoDto> GetWmsBoxInfos(string boxNo) |
| | | { |
| | | try |
| | | { |
| | | if (string.IsNullOrEmpty(boxNo)) |
| | | { |
| | | throw new Exception("请扫描外箱条码!"); |
| | | } |
| | | |
| | | string sqlString = $@"SELECT BoxNo, SkuNo, SkuName, LotNo FROM DataBoxInfo |
| | | WHERE IsDel = '0' and BoxNo = '{boxNo}' |
| | | GROUP BY BoxNo,SkuNo,SkuName,LotNo; "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | if (models.Count != 0) |
| | | { |
| | | return models; |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("没有查询到箱码信息"); |
| | | } |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | //验证托盘是否存在并是否可出库 |
| | |
| | | return allotList2; |
| | | } |
| | | |
| | | |
| | | //获取托盘中含有的执行中的单据 |
| | | public async Task<List<string>> GetPalletListBySo(string soNo, string soDetailId) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(soNo))//判断托盘是否为空 |
| | | { |
| | | throw Oops.Bah("出库单为空,请选择出库单"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | throw Oops.Bah("出库明细为空,请选择物料-批次"); |
| | | } |
| | | |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "0" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId)).Select(m => m.PalletNo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | return allotList; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //获取托盘中含有的执行中的单据 |
| | | public async Task<List<string>> GetRunNoticeList(string type) |
| | | { |
| | |
| | | return allotList2; |
| | | } |
| | | |
| | | |
| | | public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListBySo(string soNo) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(soNo))//判断托盘是否为空 |
| | | { |
| | | throw Oops.Bah("单据为空,请选择单据"); |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.Status == "0" || m.Status == "1")); |
| | | |
| | | var list = await allotList.GroupBy(m => new { m.SODetailNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo() |
| | | { |
| | | SoDetailId = m.SODetailNo, |
| | | SkuName = m.SkuName, |
| | | LotNo = m.LotNo, |
| | | }).ToListAsync(); |
| | | |
| | | return list; |
| | | } |
| | | //获取出库托盘上的物料批次(根据托盘码) |
| | | public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(string palletNo, string soNo) |
| | | { |
| | |
| | | //获取当前时间 |
| | | DateTime serverTime = Db.GetDate(); |
| | | //获取库存明细是否小于等于该垛数 |
| | | //string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' "; |
| | | //var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str); |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0").ToListAsync(); |
| | | |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0" && !string.IsNullOrWhiteSpace(s.WareHouseNo)).ToListAsync(); |
| | | if (stockDetail.Count > 0) |
| | | { |
| | | //判断是否大于需要垛数 |
| | |
| | | foreach (var s in stockDetail) |
| | | { |
| | | //获取储位信息 |
| | | var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W02"); |
| | | var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && (l.WareHouseNo == "W01"||l.WareHouseNo == "W02")); |
| | | |
| | | if (locat == null) |
| | | { |
| | |
| | | { |
| | | TaskNo = taskNo, |
| | | Sender = "WMS", |
| | | Receiver = "PDA", |
| | | Receiver = "WCS", |
| | | IsSuccess = 1, //是否下发成功 0失败 1成功 |
| | | |
| | | StartLocat = locat == null ? "零箱库" : s.LocatNo,//起始位置 |
| | | StartLocat = s.LocatNo,//起始位置 |
| | | EndLocat = model.OutMode,//目标位置 |
| | | PalletNo = s.PalletNo,//托盘码 |
| | | IsSend = 1,//是否可再次下发 |
| | |
| | | OrderType = "1",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | CreateTime = serverTime, //创建时间 |
| | | CreateUser = userId, //创建人 |
| | | Msg = "Pda空托从" + locat == null ? "零箱库" : s.LocatNo + "到" + model.OutMode + "的出库任务", //关键信息 |
| | | Msg = "Pda空托从" + s.LocatNo + "到" + model.OutMode + "的出库任务", //关键信息 |
| | | //FinishDate = serverTime, //完成时间 |
| | | }; |
| | | var endroad = ""; |
| | | if (locat.WareHouseNo == "W01") |
| | | { |
| | | endroad = new AllotLocation().RoadwayToStationNum(locat.RoadwayNo, model.OutMode); |
| | | } |
| | | |
| | | outDtoList.Add(new OutCommandDto() |
| | | { |
| | | PalletNo = exTask.PalletNo,//托盘号 |
| | | StartLocate = exTask.StartLocat, // 起始位置 |
| | | StartRoadway = locat.RoadwayNo, //所属巷道 |
| | | EndLocate = "", // 目标位置 |
| | | TaskNo = exTask.TaskNo, // 任务号 |
| | | TaskType = "1",// 任务类型 (出库) |
| | | OutMode = model.OutMode, //目标地址 |
| | | Order = 1, |
| | | Type = PLCTypeEnum.AGV |
| | | PalletNo = exTask.PalletNo,//托盘号 |
| | | |
| | | StartLocate = exTask.StartLocat, // 起始位置 |
| | | StartRoadway = locat.RoadwayNo, //所属巷道 |
| | | EndLocate = model.OutMode, // 目标位置 |
| | | EndRoadway = endroad, |
| | | |
| | | Order = 999, |
| | | Type = locat.WareHouseNo == "W01"?PLCTypeEnum.ShuttleCar : PLCTypeEnum.AGV |
| | | }); |
| | | await Db.Insertable(exTask).ExecuteCommandAsync(); |
| | | |
| | |
| | | var time2 = DateTime.Now;//返回时间 .ToString("yyyy-MM-dd HH:mm:ss") |
| | | |
| | | ////解析返回数据 |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); |
| | | if (wcsModel.StatusCode == 0) |
| | | var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); |
| | | if (wcsModel.code == 200) |
| | | { |
| | | //更改任务的发送返回时间// |
| | | new TaskServer().EditTaskIssueOk(list2, time1, time2); |
| | | //str += "下发成功"; |
| | | } |
| | | if (wcsModel.StatusCode == -1) |
| | | else |
| | | { |
| | | new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); |
| | | throw Oops.Bah(wcsModel.Msg); |
| | | new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); |
| | | throw Oops.Bah(wcsModel.message); |
| | | } |
| | | } |
| | | catch (AppFriendlyException e) |
| | |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | return e.Message; |
| | | throw new Exception(e.Message); |
| | | } |
| | | |
| | | } |
| | |
| | | return data; |
| | | } |
| | | |
| | | //取样出库拣货(标签) |
| | | public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) |
| | | { |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrWhiteSpace(qcNo)) |
| | | { |
| | | throw Oops.Bah("请验单据不能为空"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | var type = await GetSampleType2(palletNo); |
| | | if (type != "0") |
| | | { |
| | | throw Oops.Bah("当前托盘请在数量页签取样"); |
| | | } |
| | | if (string.IsNullOrEmpty(boxNo)) |
| | | { |
| | | throw Oops.Bah("外箱条码不能为空"); |
| | | } |
| | | //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) |
| | | //{ |
| | | // throw new Exception("追溯条码和拣货数量不能同时输入"); |
| | | //} |
| | | |
| | | //请验单 |
| | | var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); |
| | | if (inspecd == null) |
| | | { |
| | | throw Oops.Bah("未查询到请验单信息"); |
| | | } |
| | | if (inspecd.Status == "0" || inspecd.Status == "3") |
| | | { |
| | | throw Oops.Bah("请验单状态错误,请核实"); |
| | | } |
| | | //库存明细信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("未在库存中查询出当前托盘信息"); |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) |
| | | { |
| | | throw Oops.Bah("当前托盘不是库外托盘,请核实"); |
| | | } |
| | | //箱支信息 |
| | | var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); |
| | | //库存总表 |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("未查询出库存总信息"); |
| | | } |
| | | //入库单 |
| | | var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | throw Oops.Bah("未查询到入库单信息"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | //取样明细记录表 |
| | | var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); |
| | | |
| | | var isAddSampld = false; |
| | | var PickType = ""; //0数量拣货 1 箱支拣货 |
| | | var EditboxInfo = new DataBoxInfo(); |
| | | var EditboxInfoList = new List<DataBoxInfo>(); |
| | | |
| | | #region 判断拣货方式 散支 数量 |
| | | |
| | | if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //数量拣货 |
| | | { |
| | | PickType = "0"; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(boxNo3)) //支中拣数量 |
| | | { |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) |
| | | { |
| | | throw Oops.Bah("未查询到支码信息"); |
| | | } |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) |
| | | { |
| | | throw Oops.Bah("支码信息数据信息错误,请核实"); |
| | | } |
| | | EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; |
| | | } |
| | | else //箱中拣数量 |
| | | { |
| | | |
| | | if (boxInfoList.Count == 0) |
| | | { |
| | | throw Oops.Bah("未在托盘上查询到箱码信息,请核实"); |
| | | } |
| | | if (boxInfoList.Count > 1) |
| | | { |
| | | throw Oops.Bah("箱码数据信息错误,请核实"); |
| | | } |
| | | if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) |
| | | { |
| | | throw Oops.Bah("当前箱码中含有支码,请输入支码信息取样"); |
| | | } |
| | | EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); |
| | | |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; |
| | | |
| | | } |
| | | if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | //判断箱中是否含有支码,有:不让拣数量 |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | } |
| | | else //箱支拣货 |
| | | { |
| | | PickType = "1"; |
| | | var qty = 0m; |
| | | |
| | | if (!string.IsNullOrWhiteSpace(boxNo3)) //拣支 |
| | | { |
| | | |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) |
| | | { |
| | | throw Oops.Bah("未查询到支码信息"); |
| | | } |
| | | if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) |
| | | { |
| | | throw Oops.Bah("支码数据信息错误,请核实"); |
| | | } |
| | | EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); |
| | | if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | qty = EditboxInfoList.Sum(m => m.Qty); |
| | | //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; |
| | | } |
| | | else //拣箱 |
| | | { |
| | | |
| | | if (boxInfoList.Count == 0) |
| | | { |
| | | throw Oops.Bah("未在托盘上查询到箱码信息,请核实"); |
| | | } |
| | | if (boxInfoList.Count > 1) |
| | | { |
| | | throw Oops.Bah("箱码数据信息错误,请核实"); |
| | | } |
| | | if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) |
| | | { |
| | | throw Oops.Bah("当前箱码中含有支码,请输入支码信息取样"); |
| | | } |
| | | EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); |
| | | |
| | | if (EditboxInfo.Qty < decimal.Parse(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能大于箱内数量"); |
| | | } |
| | | qty = EditboxInfoList.Sum(m => m.Qty); |
| | | //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; |
| | | } |
| | | if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | Db.BeginTran(); |
| | | #region |
| | | |
| | | |
| | | if (PickType == "0") |
| | | { |
| | | |
| | | #region 添加或修改取样明细 |
| | | |
| | | var boxInfo = EditboxInfo; |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = decimal.Parse(pickQty), |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); |
| | | // if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | // { |
| | | // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); |
| | | // } |
| | | // sampldFirst.CompleteQty += decimal.Parse(pickQty); |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //拆包有效期更改 |
| | | var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; |
| | | foreach (var item in boxInfoList) |
| | | { |
| | | item.BitBoxMark = "1"; |
| | | item.InspectMark = "1"; |
| | | |
| | | if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) |
| | | { |
| | | if (item.ProductionTime != null) |
| | | { |
| | | var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); |
| | | if (time < item.ExpirationTime) |
| | | { |
| | | item.ExpirationTime = time; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | Db.Updateable(boxInfoList).ExecuteCommand(); |
| | | |
| | | //库存箱码 |
| | | boxInfo.Qty -= decimal.Parse(pickQty); |
| | | if (boxInfo.Qty == 0) |
| | | { |
| | | Db.Deleteable(boxInfo).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(boxInfo).ExecuteCommand(); |
| | | } |
| | | //库存明细 |
| | | stockDetail.Qty -= decimal.Parse(pickQty); |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= decimal.Parse(pickQty); |
| | | if (stock.Qty == 0) |
| | | { |
| | | Db.Deleteable(stock).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | Db.Updateable(stock).ExecuteCommand(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 修改请验单 |
| | | |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | Db.Updateable(inspecd).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | } |
| | | else |
| | | { |
| | | var sumQty = 0m; |
| | | foreach (var boxInfo in EditboxInfoList) |
| | | { |
| | | #region 添加或修改取样明细 |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = boxInfo.Qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | await Db.Insertable(sampleDetail).ExecuteCommandAsync(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); |
| | | // if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | // { |
| | | // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); |
| | | // } |
| | | // sampldFirst.CompleteQty += boxInfo.Qty; |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //拆包有效期更改 |
| | | var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; |
| | | |
| | | foreach (var item in boxInfoList) |
| | | { |
| | | item.BitBoxMark = "1"; |
| | | item.InspectMark = "1"; |
| | | if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) |
| | | { |
| | | if (item.ProductionTime != null) |
| | | { |
| | | var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); |
| | | if (time < item.ExpirationTime) |
| | | { |
| | | item.ExpirationTime = time; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | await Db.Updateable(boxInfoList).ExecuteCommandAsync(); |
| | | |
| | | //库存箱码 |
| | | |
| | | await Db.Deleteable(boxInfo).ExecuteCommandAsync(); |
| | | |
| | | //库存明细 |
| | | stockDetail.Qty -= boxInfo.Qty; |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= boxInfo.Qty; |
| | | if (stock.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | sumQty += boxInfo.Qty; |
| | | } |
| | | |
| | | #region 修改请验单 |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | |
| | | await Db.Updateable(inspecd).ExecuteCommandAsync(); |
| | | #endregion |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "取样拣货", qcNo, "拣货", $"在PDA上对请验单号为:{qcNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw e; |
| | | } |
| | | } |
| | | |
| | | |
| | | //取样出库拣货(数量) |
| | | public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) |
| | | { |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrWhiteSpace(qcNo)) |
| | | { |
| | | throw Oops.Bah("请验单据不能为空"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | var type = await GetSampleType2(palletNo); |
| | | if (type != "1") |
| | | { |
| | | throw Oops.Bah("当前托盘请在标签页签取样"); |
| | | } |
| | | if (string.IsNullOrWhiteSpace(pickQty)) |
| | | { |
| | | throw Oops.Bah("拣货数量不能为空"); |
| | | } |
| | | if (decimal.Parse(pickQty) <= 0) |
| | | { |
| | | throw Oops.Bah("拣货数量不能小于等于0"); |
| | | } |
| | | |
| | | //请验单 |
| | | var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); |
| | | if (inspecd == null) |
| | | { |
| | | throw Oops.Bah("未查询到请验单信息"); |
| | | } |
| | | if (inspecd.Status == "0" || inspecd.Status == "3") |
| | | { |
| | | throw Oops.Bah("请验单状态错误,请核实"); |
| | | } |
| | | //库存明细信息 |
| | | var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo |
| | | && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stockDetail == null) |
| | | { |
| | | throw Oops.Bah("未在库存中查询出当前托盘信息"); |
| | | } |
| | | // 判断托盘是否在库内 |
| | | if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) |
| | | { |
| | | var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); |
| | | if (wareHouseData.Type != "2") |
| | | { |
| | | throw Oops.Bah("当前托盘不是库外托盘,请核实"); |
| | | } |
| | | } |
| | | //库存总表 |
| | | var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (stock == null) |
| | | { |
| | | throw Oops.Bah("未查询出库存总信息"); |
| | | } |
| | | //入库单 |
| | | var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); |
| | | if (notice == null) |
| | | { |
| | | throw Oops.Bah("未查询到入库单信息"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | //取样明细记录表 |
| | | var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); |
| | | var qty = decimal.Parse(pickQty); |
| | | //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; |
| | | |
| | | |
| | | #region 判断数量 |
| | | |
| | | if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) |
| | | { |
| | | throw Oops.Bah("取样总拣货数量大于请验单取样数量"); |
| | | } |
| | | //判断箱中是否含有支码,有:不让拣数量 |
| | | if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) |
| | | { |
| | | throw Oops.Bah("托盘上可用数量小于取样数量,请核实锁定、冻结数量"); |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 添加或修改取样明细 |
| | | |
| | | Db.BeginTran(); |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | Standard = stockDetail.Standard, |
| | | LotNo = stockDetail.LotNo, |
| | | SupplierLot = stockDetail.SupplierLot, |
| | | CompleteQty = qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | await Db.Insertable(sampleDetail).ExecuteCommandAsync(); |
| | | //} |
| | | //else |
| | | //{ |
| | | // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); |
| | | // sampldFirst.CompleteQty += qty; |
| | | // sampldFirst.UpdateTime = DateTime.Now; |
| | | // sampldFirst.UpdateUser = userId; |
| | | // Db.Updateable(sampldFirst).ExecuteCommand(); |
| | | //} |
| | | |
| | | #endregion |
| | | |
| | | #region 修改库存三表 |
| | | |
| | | //库存明细 |
| | | stockDetail.Qty -= qty; |
| | | if (stockDetail.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | stockDetail.BitPalletMark = "1"; |
| | | stockDetail.InspectMark = "1"; |
| | | |
| | | await Db.Updateable(stockDetail).ExecuteCommandAsync(); |
| | | } |
| | | //库存总表 |
| | | stock.Qty -= qty; |
| | | if (stock.Qty == 0) |
| | | { |
| | | await Db.Deleteable(stock).ExecuteCommandAsync(); |
| | | } |
| | | else |
| | | { |
| | | await Db.Updateable(stock).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 修改入库单 |
| | | |
| | | //不是上传完毕的修改取样状态 |
| | | if (notice.Status != "4") |
| | | { |
| | | var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); |
| | | if (noticeDetail.IsSampling == "0") |
| | | { |
| | | noticeDetail.IsSampling = "1"; |
| | | |
| | | await Db.Updateable(noticeDetail).ExecuteCommandAsync(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 修改请验单 |
| | | inspecd.Status = "2"; |
| | | inspecd.UpdateTime = DateTime.Now; |
| | | if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) |
| | | { |
| | | inspecd.Status = "3"; |
| | | } |
| | | await Db.Updateable(inspecd).ExecuteCommandAsync(); |
| | | #endregion |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "取样拣货", qcNo, "拣货", $"在PDA上对请验单号为:{qcNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw e; |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |