服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2025-01-17 aa7d6bef3b1f3437b69ef21f8af4ace39939d2b9
优化库存管理和标签重打印逻辑

在 `In_Default.cs` 文件中:
- 克隆 `inv` 为 `_inv`,以便后续使用。
- 修改物料数量检查逻辑,处理 `qtyList` 为空的情况。

在 `ReprintLabel.cs` 文件中:
- 新增 `using System.Diagnostics;` 引用。
- 修改查询方式为 `SqlQuery`。
- 增加无效货架/储位码的错误处理。
- 修改 `Storageable` 方法调用,增加链式调用。

在 `mes_WhLotCodeQtyInfo.cs` 文件中:
- 新增 `ID` 属性,并标记为主键。
已修改3个文件
35 ■■■■ 文件已修改
Tiger.Business.WMS/Transaction/In_Default.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/ReprintLabel.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/YadaU9/mes_WhLotCodeQtyInfo.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Transaction/In_Default.cs
@@ -99,7 +99,7 @@
                        return action;
                    }
                    var inv = result.Data as Inventory;
                    var _inv = inv.Clone();
                    //验证条码是否正确
                    if (new[] { WMS_ITEM.STATUSs.InStore, WMS_ITEM.STATUSs.Loaded, WMS_ITEM.STATUSs.UseUp }.Contains(inv.Status))
                    {
@@ -193,10 +193,18 @@
                    if (CurInvItem.Items.Any(q => q.QTY <= 0))
                    {
                        var qtyList = Biz.DataSource["YadaU9C"].Client.Queryable<mes_MaterialBarCode>().Where(q => CurInvItem.Items.Select(q => q.SN).Contains(q.Code)).ToList();
                        foreach (var qty in qtyList)
                        if (qtyList.Count == 0)
                        {
                            var item = CurInvItem.Items.First(q => q.SN == qty.Code);
                            item.QTY = qty.WhQty;
                            var item = CurInvItem.Items.First(q => q.SN == _inv.Barcode.SN);
                            item.QTY = _inv.Items.First(q => q.SN == _inv.Barcode.SN).QTY;
                        }
                        else
                        {
                            foreach (var qty in qtyList)
                            {
                                var item = CurInvItem.Items.First(q => q.SN == qty.Code);
                                item.QTY = qty.WhQty;
                            }
                        }
                        action.Data.Data = CurInvItem.Items.Select(q => new { q.SN, q.QTY });
                        action.Data.Command = Command = "ComfirmQty";
Tiger.Business.WMS/Transaction/ReprintLabel.cs
@@ -15,6 +15,7 @@
using Tiger.IBusiness;
using Tiger.Model.MES.Yada;
using Apache.NMS.ActiveMQ.Commands;
using System.Diagnostics;
namespace Tiger.Business.WMS.Transaction
{
@@ -58,7 +59,8 @@
                    action.LocaleMsg = Biz.L("WMS.RePrint.ScanItem.SnEmptyFailure");
                    return SetOutPutMqttMsg(action, input.Locale);
                }
                var LotNos = Biz.DataSource["YadaU9C"].Client.Queryable<mes_WhLotCodeQtyInfo>().Where(t => t.Bin == input.SN).ToList();
                var LotNos = Biz.DataSource["YadaU9C"].Client.Ado.SqlQuery<mes_WhLotCodeQtyInfo>($"select *,'' as ID from mes_WhLotCodeQtyInfo where Bin = '{input.SN}'");
                //Biz.DataSource["YadaU9C"].Client.Queryable<mes_WhLotCodeQtyInfo>().Where(t => t.Bin == input.SN).ToList();
                CurScanShelf = new ScanShelfInfo();
                // 查询货架信息
                var whUnit = await Biz.Db.Queryable<V_WH_UNIT>().Where(t => (t.SHELF_CODE.ToUpper() == input.SN || t.LOCATION_CODE.ToUpper() == input.SN) && t.AUTH_ORG == OrgCode).IncludesAllFirstLayer().FirstAsync();
@@ -91,6 +93,12 @@
                    CurScanShelf.IsSmartRack = false;
                    LocationCode = whUnit.LOCATION_CODE;
                }
                else {
                    action.IsSuccessed = false;
                    //action.LocaleMsg = Biz.L("请输入或扫描有效的货架/储位码");
                    action.LocaleMsg = Biz.L("WMS.Default.ScanShelf.ShelfCanNotEmpty");
                    return action;
                }
                var temps = new List<TemplateInput>();
                foreach (var item in LotNos)
                {
@@ -106,7 +114,12 @@
                    };
                    temps.Add(temp);
                }
                Biz.Db.Storageable(LotNos, UserCode).ExecuteCommand();
                var y = Biz.Db.Storageable(LotNos, UserCode)
                               .WhereColumns(t => new { t.ItemCode, t.LotCode })
                               .ToStorage();
                y.AsInsertable.ExecuteCommand();
                y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                action.Data.Data = temps;
                action.LocaleMsg = Biz.L("WMS.RePrint.ScanItem.ScanSuccessed");
            }
@@ -314,7 +327,6 @@
                        throw dbTran.ErrorException;
                    }
                    LocationCode = "";
                    action.Data.Data = rePrints;
                    action.LocaleMsg = Biz.L("库位批次条码上架成功");
                }
Tiger.Model.Net/Entitys/MES/YadaU9/mes_WhLotCodeQtyInfo.cs
@@ -47,6 +47,7 @@
        /// 
        /// </summary>
        [SugarColumn(IsPrimaryKey = true)]
        public string ID { get; set; }
        public string LotCode { get; set; }
        public string Description { get; set; }
        public string SapCode { get; set; }