| | |
| | | } |
| | | |
| | | //出库pda拣货 |
| | | public void SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, int userId) |
| | | public void SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, int userId) |
| | | { |
| | | Db.BeginTran(); |
| | | try |
| | |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw new Exception("托盘码不能为空"); |
| | | } |
| | | if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) |
| | | { |
| | | throw new Exception("追溯条码和拣货数量不能同时输入"); |
| | | } |
| | | |
| | | //出库单 |
| | |
| | | } |
| | | else |
| | | { |
| | | var biaoShi = "0";//0:整箱拣货、1:散支拣货 |
| | | var biaoShi = "0";//0:整箱拣货、1:散支拣货、2:数量拣货 |
| | | List<DataBoxInfo> boxInfos; |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); |
| | | if (boxInfo.Count() == 0) |
| | |
| | | |
| | | biaoShi = "1"; |
| | | } |
| | | else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//数量拣货 |
| | | { |
| | | if (boxInfo.Count() > 1) |
| | | { |
| | | throw new Exception("该箱码内存在支码不能进行数量拣货"); |
| | | } |
| | | int boxQty = boxInfo.First().Qty; |
| | | if (Convert.ToInt32(pickQty1) > boxQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于箱内数量"); |
| | | } |
| | | if (Convert.ToInt32(pickQty1) > needQty) |
| | | { |
| | | throw new Exception("拣货数量不能大于剩余待拣数量"); |
| | | } |
| | | |
| | | biaoShi = "2"; |
| | | } |
| | | else //整箱拣货 |
| | | { |
| | | if (boxInfo.Count() == 0) |
| | |
| | | var comList = new List<BllCompleteDetail>(); |
| | | foreach (var item in boxInfos) |
| | | { |
| | | if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) |
| | | if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) |
| | | { |
| | | throw new Exception($"当前{item.BoxNo}中{item.BoxNo3}已拣货完成,请勿重复拣货"); |
| | | } |
| | |
| | | SkuName = allot.SkuName, |
| | | Standard = allot.Standard, |
| | | PalletNo = palletNo, |
| | | CompleteQty = item.Qty, |
| | | CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty, |
| | | |
| | | CreateUser = userId |
| | | }; |
| | | comList.Add(completeDetail); |
| | | |
| | | //删除库存箱码明细 |
| | | Db.Deleteable(item).ExecuteCommand(); |
| | | if (biaoShi != "2") |
| | | { |
| | | //删除库存箱码明细 |
| | | Db.Deleteable(item).ExecuteCommand(); |
| | | } |
| | | else//数量拣货 |
| | | { |
| | | if (int.Parse(pickQty1) == item.Qty) |
| | | { |
| | | //删除库存箱码明细 |
| | | Db.Deleteable(item).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | item.Qty -= int.Parse(pickQty1); |
| | | item.BitBoxMark = "1";//零箱标识 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | } |
| | | pickQty += item.Qty; |
| | | } |
| | | //改变库内箱码是否零箱信息 |
| | |
| | | //修改出库单信息 |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | } |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | |
| | | int isDel = 0; |
| | | |
| | | //删除或修改库存明细 |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= int.Parse(PickQty); |
| | | stockDetail.LockQty -= int.Parse(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) |
| | | { |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | |
| | | //修改出库单信息 |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | //根据托盘号获取取样类型 |
| | | public string GetSampleType(string palletNo) |
| | | { |
| | | try |
| | | { |
| | | var type = ""; |
| | | var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); |
| | | if (detail== null) |
| | | { |
| | | throw new Exception("当前托盘未在库存中"); |
| | | } |
| | | //怎么判断当前托盘是库外要取样的托盘,正常出库剩余托盘目前这种情况也能拣货啊,也没有分配信息 |
| | | var allot = Db.Queryable<BllExportAllot>().First(m => |
| | | m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6"); |
| | | if (allot!=null) |
| | | { |
| | | type = "0";//库内取样 |
| | | } |
| | | else |
| | | { |
| | | type = "1";//库前取样 |
| | | } |
| | | return type; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | } |
| | | } |