| | |
| | | var pNum = 0;//托盘物品数量 |
| | | var bNum = 0;//箱码物品数量 |
| | | |
| | | if (pack == null) |
| | | { |
| | | throw new Exception("获取物料包装信息失败,请核实!"); |
| | | } |
| | | if (pack.L5Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L5Num; |
| | | bNum = (int)pack.L4Num; |
| | | } |
| | | else if (pack.L4Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L4Num; |
| | | bNum = (int)pack.L3Num; |
| | | } |
| | | else if (pack.L3Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L3Num; |
| | | bNum = (int)pack.L2Num; |
| | | } |
| | | else if (pack.L2Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L2Num; |
| | | bNum = (int)pack.L1Num; |
| | | } |
| | | else if (pack.L1Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L1Num; |
| | | bNum = (int)pack.L1Num; |
| | | } |
| | | if (pNum == 0 || bNum == 0) |
| | | { |
| | | throw new Exception($"绑定失败,{detail.SkuNo}物品包装未找到!"); |
| | | } |
| | | //公共方法获取包装数量 |
| | | new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | try |
| | | { |
| | | Db.BeginTran(); |
| | | #region 判断 |
| | | |
| | | //0:成品入库 1:采购入库 3:退货入库 4:车间余料入库 8:生产退料入库 |
| | |
| | | { |
| | | throw new Exception("该托盘已有储位信息,请核实!"); |
| | | } |
| | | if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo)) |
| | | { |
| | | throw new Exception("该托盘在库存已有其它物料批次信息,请核实!"); |
| | | } |
| | | //if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo)) |
| | | //{ |
| | | // throw new Exception("该托盘在库存已有其它物料批次信息,请核实!"); |
| | | //} |
| | | |
| | | #endregion |
| | | |
| | | #region 包装 |
| | | |
| | | var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); |
| | | var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 由Sku包装编号变更为入库单明细包装编号 |
| | | //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 由Sku包装编号变更为入库单明细包装编号 |
| | | |
| | | var pNum = 0;//托盘物品数量 |
| | | var bNum = 0;//箱码物品数量 |
| | | |
| | | if (pack == null) |
| | | { |
| | | throw new Exception("获取物料包装失败,请核实!"); |
| | | } |
| | | if (pack.L5Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L5Num; |
| | | bNum = (int)pack.L4Num; |
| | | } |
| | | else if (pack.L4Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L4Num; |
| | | bNum = (int)pack.L3Num; |
| | | } |
| | | else if (pack.L3Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L3Num; |
| | | bNum = (int)pack.L2Num; |
| | | } |
| | | else if (pack.L2Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L2Num; |
| | | bNum = (int)pack.L1Num; |
| | | } |
| | | else if (pack.L1Num.HasValue) |
| | | { |
| | | pNum = (int)pack.L1Num; |
| | | bNum = (int)pack.L1Num; |
| | | } |
| | | if (pNum == 0 || bNum == 0) |
| | | { |
| | | throw new Exception($"绑定失败,{detail.SkuNo}物品包装未找到!"); |
| | | } |
| | | //公共方法获取包装数量 |
| | | new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); |
| | | |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | tags = "1"; |
| | | } |
| | | |
| | | //验证库存托盘是否有贴标物料 |
| | | var skuStr = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && m.IsPasteCode == "1").Select(m => m.SkuNo).ToList(); |
| | | var sdHave = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && skuStr.Contains(m.SkuNo)); |
| | | if (sdHave>0) |
| | | { |
| | | throw new Exception("当前托盘含有贴标物料信息,不能组托"); |
| | | } |
| | | // 判断库存明细是否已有此托盘信息 |
| | | var sd1 = Db.Queryable<DataStockDetail>() |
| | | .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.LotNo == bind.LotNo); |
| | | .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.SkuNo == detail.SkuNo && m.LotNo == bind.LotNo); |
| | | var sdId1 = 0; |
| | | if (sd1 != null) |
| | | { |
| | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | |
| | | #region 更改组托信息 |
| | | |
| | | var isSample = "0";//是否取样 |
| | |
| | | Db.Updateable(notice).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | #region 库存明细 |
| | | #region 更改库存明细数量 |
| | | |
| | | sd1.Qty = bind.Qty; |
| | | //更改库存明细数量 |
| | | Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); |
| | | |
| | | #endregion |
| | | |
| | | #region 库存 |
| | |
| | | sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','组盘','0',getDate(),{userId},NULL,NULL);"; |
| | | Db.Ado.ExecuteCommand(sqlStr); |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "托盘绑定", model.AsnNo, "添加", $"添加了托盘码为:{model.PalletNo}的组盘信息", userId); |
| | | |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | Db.RollbackTran(); |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | var item = Expressionable.Create<BllArrivalNoticeDetail>() |
| | | .AndIF(true, it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var modelList = Db.Queryable<BllArrivalNoticeDetail>().Where(item) |
| | | .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo && tb2.IsDel == "0" && (tb1.Status == "0" || tb1.Status == "1")) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo && tb3.IsDel == "0" && tb3.IsPasteCode == "1") |
| | | |
| | | var modelList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo ) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo ) |
| | | .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "1") |
| | | .Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList(); |
| | | |
| | | return modelList; |
| | |
| | | { |
| | | try |
| | | { |
| | | var item = Expressionable.Create<BllArrivalNoticeDetail>() |
| | | .AndIF(true, it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | |
| | | var modelList = Db.Queryable<BllArrivalNoticeDetail>().Where(item) |
| | | .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1")) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo && tb3.IsDel == "0" && tb3.IsPasteCode == "0") |
| | | var modelList = Db.Queryable<BllArrivalNoticeDetail>() |
| | | .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo ) |
| | | .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo ) |
| | | .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "0") |
| | | .Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList(); |
| | | |
| | | return modelList; |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 验证托盘是否存在 |
| | | /// </summary> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns>"":可使用 -1:不可使用(原因)</returns> |
| | | public string IsEnablePalletNo(string palletNo) |
| | | { |
| | | string sqlMsg = ""; |
| | | string sqlString = string.Empty; |
| | | try |
| | | { |
| | | sqlString = $"select * from SysPallets where PalletNo = '{palletNo}' and isdel = '0';"; |
| | | var models = Db.Ado.SqlQuery<PalletBindVm>(sqlString); |
| | | |
| | | if (models.Count > 1) |
| | | { |
| | | sqlMsg = "-1:存在重复托盘号,请检查!"; |
| | | return sqlMsg; |
| | | } |
| | | if (models.Count > 0) |
| | | { |
| | | if (models[0].Status == "1") |
| | | { |
| | | sqlString = $"select count(id) from DataStockDetail where PalletNo = '{palletNo}' and isnull(LocatNo,'') != '' and isdel = '0';"; |
| | | int rowNum = Db.Ado.GetInt(sqlString); |
| | | if (rowNum > 0) |
| | | { |
| | | sqlMsg = "-1:托盘使用中,此托盘应在库内请核实!"; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | sqlMsg = "-1:托盘号不存在!"; |
| | | } |
| | | |
| | | return sqlMsg; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据单据获取标签数量 |
| | | /// </summary> |
| | | /// <param name="asnNo">入库单</param> |
| | | /// <param name="asnDetailId">入库单明细号</param> |
| | | /// <returns></returns> |
| | | public BoxListInfoDto GetBoxCountByAsn(string asnNo,int? asnDetailId) |
| | | { |
| | | try |
| | | { |
| | | |
| | | var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == asnDetailId); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception("没有查询到单据明细信息"); |
| | | } |
| | | var data = new BoxListInfoDto() |
| | | { |
| | | SkuNo = detail.SkuNo, |
| | | SkuName = detail.SkuName, |
| | | LotNo = detail.LotNo, |
| | | |
| | | }; |
| | | //获取状态是未组托的标签信息 |
| | | var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0" |
| | | foreach (var item in models) |
| | | { |
| | | var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList(); |
| | | if (boxNoList.Count > 0) |
| | | { |
| | | data.BoxNoList = boxNoList; |
| | | data.Date1 = item.ProductionTime.ToString(); |
| | | data.Date2 = item.ExpirationTime.ToString(); |
| | | |
| | | break; |
| | | } |
| | | } |
| | | return data; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | |
| | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 验证托盘是否存在 |
| | | /// </summary> |
| | | /// <param name="palletNo">托盘号</param> |
| | | /// <returns>"":可使用 -1:不可使用(原因)</returns> |
| | | public string IsEnablePalletNo(string palletNo) |
| | | { |
| | | string sqlMsg = ""; |
| | | string sqlString = string.Empty; |
| | | try |
| | | { |
| | | sqlString = $"select * from SysPallets where PalletNo = '{palletNo}' and isdel = '0';"; |
| | | var models = Db.Ado.SqlQuery<PalletBindVm>(sqlString); |
| | | |
| | | if (models.Count > 1) |
| | | { |
| | | sqlMsg = "-1:存在重复托盘号,请检查!"; |
| | | return sqlMsg; |
| | | } |
| | | if (models.Count > 0) |
| | | { |
| | | if (models[0].Status == "1") |
| | | { |
| | | sqlString = $"select count(id) from DataStockDetail where PalletNo = '{palletNo}' and isnull(LocatNo,'') != '' and isdel = '0';"; |
| | | int rowNum = Db.Ado.GetInt(sqlString); |
| | | if (rowNum > 0) |
| | | { |
| | | sqlMsg = "-1:托盘使用中,此托盘应在库内请核实!"; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | sqlMsg = "-1:托盘号不存在!"; |
| | | } |
| | | |
| | | return sqlMsg; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | |
| | | // 根据箱码或托盘号获取箱支信息 liudl |
| | | public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model) |