服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-12-19 eb0ad83719de660e5c4f7676aea4710625b6bd51
Tiger.Business.WMS/Transaction/Old/OtherInLocation.cs
ÎļþÃû´Ó Tiger.Business.WMS/Transaction/OtherInLocation.cs ÐÞ¸Ä
@@ -12,6 +12,7 @@
using Tiger.IBusiness;
using Tiger.Model.Sharetronic.Shelf;
using Tiger.Business.WMS.Sharetronic.Shelf;
using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser;
namespace Tiger.Business.WMS.Transaction
{
@@ -71,7 +72,7 @@
                //当input.ReqType为0时:无工单入库
                if (input.ReqType == 0)
                {
                    Result<Inventory> res = new();
                    Result<IInventory> res = new();
                    if (WarehouseName.Contains("客供"))
                    {
                        res = WMS_ITEM_Biz.WmsItem.GetK(input.SN, new() { UserId = "admin" }, true);
@@ -80,11 +81,12 @@
                    {
                        res = WMS_ITEM_Biz.WmsItem.Get(input.SN, new() { UserId = "admin" }, true);
                    }
                    var inv = res.Data as Inventory;
                    //判断是否一维码
                    if (!res.Data.IsQRCode)
                    if (!inv.IsQRCode)
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotQrCode", res.Data.Barcode.MetaSn);
                        action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.NotQrCode", inv.Barcode.MetaSn);
                        return action;
                    }
                    if (!res.IsSuccessed)
@@ -93,110 +95,110 @@
                        action.LocaleMsg = res.LocaleMsg;
                        return action;
                    }
                    if (res.Data.Status.GetValue() != WMS_ITEM.STATUSs.NotExists.GetValue() && res.Data.Status.GetValue() <= WMS_ITEM.STATUSs.InStore.GetValue())
                    if (inv.Status.GetValue() != WMS_ITEM.STATUSs.NotExists.GetValue() && inv.Status.GetValue() <= WMS_ITEM.STATUSs.InStore.GetValue())
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L("状态异常{0}", string.Join(',', res.Data.StatusList.Select(x => x.GetDesc()))); //Biz.L("WMS.CustSupChk.ScanItem.StatusException", string.Join(',', res.Data.StatusList.Select(x => x.GetDesc())));
                        action.LocaleMsg = Biz.L("状态异常{0}", string.Join(',', inv.StatusList.Select(x => x.GetDesc()))); //Biz.L("WMS.CustSupChk.ScanItem.StatusException", string.Join(',', inv.StatusList.Select(x => x.GetDesc())));
                        return action;
                    }
                    //验证条码是否正确
                    //if (!res.Data.isNormalStatus || !new[] { WMS_ITEM.STATUSs.WaitIn }.Contains(res.Data.Status))
                    //if (!inv.isNormalStatus || !new[] { WMS_ITEM.STATUSs.WaitIn }.Contains(inv.Status))
                    //{
                    //    action.IsSuccessed = false;
                    //    action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.StatusException", string.Join(',', res.Data.StatusList));
                    //    action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.StatusException", string.Join(',', inv.StatusList));
                    //    return action;
                    //}
                    //物料验证
                    if (res.Data.ItemInfo.IsNullOrEmpty() || res.Data.ItemInfo.IS_ACTIVE == "N")
                    if (inv.ItemInfo.IsNullOrEmpty() || inv.ItemInfo.IS_ACTIVE == "N")
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L("WMS.ProdMReq.ScanItem.ItemCodeNotExistsOrNotActive", res.Data.ItemInfo.ITEM_CODE.IsNullOrEmpty(res.Data.Barcode.ItemCode));
                        action.LocaleMsg = Biz.L("WMS.ProdMReq.ScanItem.ItemCodeNotExistsOrNotActive", inv.ItemInfo.ITEM_CODE.IsNullOrEmpty(inv.Barcode.ItemCode));
                        return action;
                    }
                    List<WMS_ITEM_HIS> ItemHistorys = new List<WMS_ITEM_HIS>();
                    WMS_ITEM Item;
                    WMS_ITEM_PKG ItemPkgs;
                    var IsNull = false;
                    if (!res.Data.IsNullOrEmpty())
                    if (!inv.IsNullOrEmpty())
                    {
                        if (res.Data.Items.Count == 0)
                        if (inv.Items.Count == 0)
                        {
                            IsNull = true;
                            Item = new()
                            {
                                SN = res.Data.Barcode.SN,
                                ITEM_CODE = WarehouseName.Contains("客供") && !res.Data.Barcode.ItemCode.StartsWith("K") ? ("K" + res.Data.Barcode.ItemCode) : (res.Data.Barcode.ItemCode),
                                SN = inv.Barcode.SN,
                                ITEM_CODE = WarehouseName.Contains("客供") && !inv.Barcode.ItemCode.StartsWith("K") ? ("K" + inv.Barcode.ItemCode) : (inv.Barcode.ItemCode),
                                AUTH_ORG = input.AuthOption.CurOrg,
                                STATUS = WMS_ITEM.STATUSs.WaitIn.GetValue(),
                                QTY = res.Data.Barcode.Qty.ToDecimal(),
                                PROD_DATE = res.Data.Barcode.DateCode.ToDateTime(),
                                QTY = inv.Barcode.Qty.ToDecimal(),
                                PROD_DATE = inv.Barcode.DateCode.ToDateTime(),
                                ERP_WH = WarehouseCode,
                                UNIT = res.Data.Barcode.Unit,
                                UNIT = inv.Barcode.Unit,
                            };
                            WMS_ITEM_HIS his = new WMS_ITEM_HIS(Item, $"无单据入库");
                            ItemHistorys.Add(his);
                            ItemPkgs = new()
                            {
                                SN = res.Data.Barcode.SN,
                                SN = inv.Barcode.SN,
                                AUTH_ORG = input.AuthOption.CurOrg,
                                ITEM_CODE = WarehouseName.Contains("客供") && !res.Data.Barcode.ItemCode.StartsWith("K") ? ("K" + res.Data.Barcode.ItemCode) : (res.Data.Barcode.ItemCode),
                                QTY = res.Data.Barcode.Qty.ToDecimal(),
                                ITEM_CODE = WarehouseName.Contains("客供") && !inv.Barcode.ItemCode.StartsWith("K") ? ("K" + inv.Barcode.ItemCode) : (inv.Barcode.ItemCode),
                                QTY = inv.Barcode.Qty.ToDecimal(),
                                ERP_WH = WarehouseCode,
                                UNIT = res.Data.Barcode.Unit,
                                UNIT = inv.Barcode.Unit,
                            };
                            res.Data.ItemsExt = Biz.Db.Queryable<WMS_ITEM_EXT>().Where(q => res.Data.Items.Any(s => s.SN == q.SN)).ToList();//扩展表
                            //var data = result.Data.Items.Select(i => i.SN).ToList().Except(result.Data.ItemsExt.Select(i => i.SN).ToList());
                            var data = res.Data.Items.Where(q => !res.Data.ItemsExt.Any(s => s.SN == q.SN)).ToList();
                            inv.ItemsExt = Biz.Db.Queryable<WMS_ITEM_EXT>().Where(q => inv.Items.Any(s => s.SN == q.SN)).ToList();//扩展表
                            //var data = inv.Items.Select(i => i.SN).ToList().Except(inv.ItemsExt.Select(i => i.SN).ToList());
                            var data = inv.Items.Where(q => !inv.ItemsExt.Any(s => s.SN == q.SN)).ToList();
                            //扩展表不存在时新建
                            if (data.Count > 0)
                            {
                                foreach (var item in data)
                                {
                                    res.Data.ItemsExt.Add(new()
                                    inv.ItemsExt.Add(new()
                                    {
                                        SN = item.SN,
                                        SUPP_ITEM_CODE = res.Data.Barcode.OEMItemCode,
                                        META_SN = res.Data.Barcode.MetaSn,
                                        QR_CODE = res.Data.Barcode.MetaSn
                                        SUPP_ITEM_CODE = inv.Barcode.OEMItemCode,
                                        META_SN = inv.Barcode.MetaSn,
                                        QR_CODE = inv.Barcode.MetaSn
                                    });
                                }
                            }
                            res.Data.Items.Add(Item);
                            res.Data.History.Add(his);
                            res.Data.Packages.Add(ItemPkgs);
                            inv.Items.Add(Item);
                            inv.History.Add(his);
                            inv.Packages.Add(ItemPkgs);
                        }
                        else if (res.Data.Items.Count == 1)
                        else if (inv.Items.Count == 1)
                        {
                            res.Data.Items.First().QTY = res.Data.Barcode.Qty.ToDecimal();
                            res.Data.Items.First().ERP_WH = WarehouseCode;
                            res.Data.Items.First().AUTH_ORG = input.AuthOption.CurOrg;
                            inv.Items.First().QTY = inv.Barcode.Qty.ToDecimal();
                            inv.Items.First().ERP_WH = WarehouseCode;
                            inv.Items.First().AUTH_ORG = input.AuthOption.CurOrg;
                            res.Data.Packages.First().QTY = res.Data.Barcode.Qty.ToDecimal();
                            res.Data.Packages.First().ERP_WH = WarehouseCode;
                            res.Data.Packages.First().AUTH_ORG = input.AuthOption.CurOrg;
                            inv.Packages.First().QTY = inv.Barcode.Qty.ToDecimal();
                            inv.Packages.First().ERP_WH = WarehouseCode;
                            inv.Packages.First().AUTH_ORG = input.AuthOption.CurOrg;
                        }
                        //如果扫描外箱的不能更新数量 2024-09-23 Ben Lin
                        else
                        {
                            foreach (var item in res.Data.Items)
                            foreach (var item in inv.Items)
                            {
                                //item.QTY = res.Data.Barcode.Qty.ToDecimal();
                                //item.QTY = inv.Barcode.Qty.ToDecimal();
                                item.ERP_WH = WarehouseCode;
                                item.AUTH_ORG = input.AuthOption.CurOrg;
                            }
                            foreach (var item in res.Data.Packages)
                            foreach (var item in inv.Packages)
                            {
                                //item.QTY = res.Data.Barcode.Qty.ToDecimal();
                                //item.QTY = inv.Barcode.Qty.ToDecimal();
                                item.ERP_WH = WarehouseCode;
                                item.AUTH_ORG = input.AuthOption.CurOrg;
                            }
                        }
                        //CustomerSupplyPuton.LocationCode = nLocation.LOCATION_CODE;
                    }
                    foreach (var item in res.Data.Items)
                    foreach (var item in inv.Items)
                    {
                        item.SOURCE_CODE = item.TRANS_CODE;
                        item.SOURCE_LINE = item.TRANS_LINE;
@@ -208,7 +210,7 @@
                    // åˆ¤æ–­æ˜¯å¦æ™ºèƒ½è´§æž¶
                    if (CustomerSupplyPuton.IsSmartRack)
                    {
                        ShelfApiResult shelfApiResult = await Share.Shelf.PutOn(TransID, Shelf, res.Data.Items[0]);
                        ShelfApiResult shelfApiResult = await Share.Shelf.PutOn(TransID, Shelf, inv.Items[0]);
                        if (!shelfApiResult.IsSuccess)
                        {
                            action.IsSuccessed = false;
@@ -247,7 +249,7 @@
                    }
                    //判断储位是否单放
                    if (nLocation.IS_SINGLE == "Y" && res.Data.Items.Count > 1)
                    if (nLocation.IS_SINGLE == "Y" && inv.Items.Count > 1)
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = Biz.L("WMS.CustSupChk.ScanItem.LocationSingleFailure"); //$"储位只能单放一个物料";
@@ -255,7 +257,7 @@
                    }
                    //执行入库
                    Result<PutOnInfo> putonResult = WMS_ITEM_Biz.WmsItem.PutOn(res.Data, input.AuthOption, nLocation.LOCATION_CODE);
                    Result<PutOnInfo> putonResult = WMS_ITEM_Biz.WmsItem.PutOn(inv, input.AuthOption, nLocation.LOCATION_CODE);
                    if (!putonResult.IsSuccessed)
                    {
                        action.IsSuccessed = false;
@@ -293,35 +295,35 @@
                    // è¿”回其他入库对象
                    action.Data = new Model.Minsun.OtherInstockBarcodeOutput
                    {
                        Barcode = res.Data.SN,
                        MaterialCode = res.Data.Items[0].ITEM_CODE,
                        //MaterialName = res.Data.Items[0].ITEM_NAME,
                        //MaterialStandard = res.Data.ItemInfo.SPEC,
                        InitialQty = res.Data.Barcode.Qty ?? 0,
                        CurrentQty = res.Data.Barcode.Qty ?? 0,
                        Unit = res.Data.Items[0].UNIT,
                        DateCode = res.Data.Barcode.ProdDate ?? DateTime.MinValue,
                        LotNo = res.Data.SN,  //批次号默认为外包装条码
                        Barcode = inv.SN,
                        MaterialCode = inv.Items[0].ITEM_CODE,
                        //MaterialName = inv.Items[0].ITEM_NAME,
                        //MaterialStandard = inv.ItemInfo.SPEC,
                        InitialQty = inv.Barcode.Qty ?? 0,
                        CurrentQty = inv.Barcode.Qty ?? 0,
                        Unit = inv.Items[0].UNIT,
                        DateCode = inv.Barcode.ProdDate ?? DateTime.MinValue,
                        LotNo = inv.SN,  //批次号默认为外包装条码
                                              //SourceBillCode = billCode,
                        LocationCode = nLocation.LOCATION_CODE,
                        //ReceiptCode = barcodeScanned?.BUSINESSCODE,
                        //IncompleteTips = isCompleted ? "数量:0 (0盘)" : iWMS.GetIncompleteTipsNew(barcodeScanned?.BUSINESSCODE, barcodeScanned?.ITEM_CODE),
                        IsScanShelf = false
                    };
                    action.LocaleMsg = Biz.L("入库成功{0}", res.Data.SN);
                    action.LocaleMsg = Biz.L("入库成功{0}", inv.SN);
                }
                //其他入库
                if (input.ReqType == 1)
                {
                    Result<Inventory> result = WMS_ITEM_Biz.WmsItem.Get(input.SN, input.AuthOption, true);
                    Result<IInventory> result = WMS_ITEM_Biz.WmsItem.Get(input.SN, input.AuthOption, true);
                    if (!result.IsSuccessed)
                    {
                        action.IsSuccessed = false;
                        action.LocaleMsg = result.LocaleMsg;
                        return action;
                    }
                    var inv = result.Data;
                    var inv = result.Data as Inventory;
                    //验证条码是否正确
                    if (!inv.isNormalStatus || !new[] { WMS_ITEM.STATUSs.WaitIn }.Contains(inv.Status))