| | |
| | | //如果有传入货架,则只允该货架的物料 |
| | | .WhereIF(!option.ShelfID.IsNullOrEmpty(), (q, p, w, r, s, l) => q.SHELF_ID == option.ShelfID && q.AUTH_ORG == auth.CurOrg) |
| | | //优先使用库存池中的物料 |
| | | .OrderBy((q, p, w, r, s, l) => SqlFunc.IsNullOrEmpty(p.ID)) |
| | | .OrderBy((q, p, w, r, s, l) => SqlFunc.IIF(SqlFunc.IsNullOrEmpty(p.ID), 1, 0)) |
| | | //优先使用尾数物料(截料或者退料之后的物料) |
| | | //.OrderByDescending((q, p, w, r, s, l) => q.SN.Contains("_C") || q.SN.Contains("_T")) |
| | | //.OrderByDescending((q, p, w, r, s, l) => SqlFunc.IIF(q.SN.Contains("_C") || q.SN.Contains("_T"), 1, 0)) |
| | | //备料策略:按生产日期先进先出 |
| | | .OrderByIF(option.Strategy.HasFlag(WMS_ITEM_POOL.STRATEGYs.FIFO), (q, p, w, r, s, l) => q.PROD_DATE) |
| | | //按生产日期先进先出,再按物料数量从小到大, |
| | |
| | | result.Flag = Result.Flags.Warning; |
| | | result.LocaleMsg = new("WMS.WmsItem.Suggest.Warning", total); |
| | | } |
| | | //if (total == 0) |
| | | //{ |
| | | // result.Flag = Result.Flags.Failed; |
| | | // result.LocaleMsg = new("WMS.WmsItem.Suggest.Failed"); |
| | | //} |
| | | if (total == 0) |
| | | { |
| | | result.Flag = Result.Flags.Failed; |
| | | result.LocaleMsg = new("WMS.WmsItem.Suggest.Failed"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | //如果有传入货架,则只允该货架的物料 |
| | | .WhereIF(!option.ShelfID.IsNullOrEmpty(), (q, p, w, r, s, l) => q.SHELF_ID == option.ShelfID && q.AUTH_ORG == auth.CurOrg) |
| | | //优先使用库存池中的物料 |
| | | .OrderBy((q, p, w, r, s, l) => SqlFunc.IsNullOrEmpty(p.ID)) |
| | | .OrderBy((q, p, w, r, s, l) => SqlFunc.IIF(SqlFunc.IsNullOrEmpty(p.ID), 1, 0)) |
| | | //优先使用尾数物料(截料或者退料之后的物料) |
| | | //.OrderByDescending((q, p, w, r, s, l) => q.SN.Contains("_C") || q.SN.Contains("_T")) |
| | | //.OrderByDescending((q, p, w, r, s, l) => SqlFunc.IIF(q.SN.Contains("_C") || q.SN.Contains("_T"), 1, 0)) |
| | | //备料策略:按生产日期先进先出 |
| | | .OrderByIF(option.Strategy.HasFlag(WMS_ITEM_POOL.STRATEGYs.FIFO), (q, p, w, r, s, l) => q.PROD_DATE) |
| | | //按生产日期先进先出,再按物料数量从小到大, |
| | |
| | | result.Flag = Result.Flags.Warning; |
| | | result.LocaleMsg = new("WMS.WmsItem.Suggest.Warning", totalQty); |
| | | } |
| | | //if (totalQty == 0) |
| | | //{ |
| | | // result.Flag = Result.Flags.Failed; |
| | | // result.LocaleMsg = new("WMS.WmsItem.Suggest.Failed"); |
| | | //} |
| | | if (totalQty == 0) |
| | | { |
| | | result.Flag = Result.Flags.Failed; |
| | | //result.LocaleMsg = new("物料下架推荐失败:库存中找不到可以下架的物料"); |
| | | result.LocaleMsg = new("WMS.WmsItem.Suggest.Failed"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | var result = new Result(Result.Flags.Success); |
| | | try |
| | | { |
| | | var newItems = new List<WMS_ITEM>(); |
| | | foreach (var item in CurInvItem.Items) |
| | | { |
| | | var sn = snList.First(q => q.SN == item.SN); |
| | |
| | | META_SN = newItem.SN, |
| | | }); |
| | | |
| | | CurInvItem.Items.Add(newItem); |
| | | newItems.Add(newItem); |
| | | CurInvItem.History.Add(his); |
| | | CurInvItem.Packages.Add(newPkg); |
| | | } |
| | |
| | | CurInvItem.History.Add(new WMS_ITEM_HIS(item, $"条码[{CurInvItem.SN}]从储位[{CurInvItem?.Location?.LOCATION_CODE}]发料下架成功,状态[{item.STATUS.GetEnumDesc<WMS_ITEM.STATUSs>()}],操作单据[{item.TRANS_NO}]")); |
| | | } |
| | | } |
| | | CurInvItem.Items.AddRange(newItems); |
| | | CurInvItem.Packages = WMS_ITEM_PKG.UpdateQty(CurInvItem.Packages); |
| | | |
| | | //创建变量克隆对象用于传入DBSubmitAction中保存当前需要暂存的数据值 |
| | |
| | | /// <summary> |
| | | /// 设置当前物料的默认储位 |
| | | /// </summary> |
| | | public ApiAction<ScanOutput> SetDefaultLocation(DbClient db, BAS_ITEM Item, WMS_LOCATION location) |
| | | public ApiAction<ScanOutput> SetDefaultLocation(DbClient db, BAS_ITEM Item, WMS_LOCATION location, long RcvLineId) |
| | | { |
| | | var action = new ApiAction<ScanOutput>(new ScanOutput()); |
| | | |
| | | //调用设置默认储位接口 |
| | | //var iInput = new CreateRcvLineLocationInput |
| | | //{ |
| | | |
| | | //}; |
| | | //var result = await DI.Resolve<IWMS_U9C>().CreateRcvLineLocation(iInput); |
| | | //if (!result.IsSuccessed) |
| | | //{ |
| | | // action.IsSuccessed = false; |
| | | // action.LocaleMsg = result.LocaleMsg; |
| | | //} |
| | | //else |
| | | var iInput = new CreateRcvLineLocationInput |
| | | { |
| | | IsLogin = true, |
| | | RcvLineLocationParam = new() |
| | | { |
| | | RcvLineId = RcvLineId, |
| | | BinCode = location.LOCATION_CODE, |
| | | } |
| | | }; |
| | | var result = DI.Resolve<IWMS_U9C>().CreateRcvLineLocation(iInput).Result; |
| | | if (!result.IsSuccessed) |
| | | { |
| | | action.IsSuccessed = false; |
| | | action.LocaleMsg = result.LocaleMsg; |
| | | } |
| | | else |
| | | { |
| | | Item.DEFAULT_LOCATION = location.LOCATION_CODE; |
| | | db.Updateable(Item, UserCode).UpdateColumns(q => new { q.DEFAULT_LOCATION, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand(); |