服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-12-09 9556c5fc2168b71e5aba4bd5353fcd70e681ee46
调用U9C接口生成入库单更新
已修改6个文件
505 ■■■■ 文件已修改
Tiger.Business.MES/Transaction/InStoreOrderNo.cs 268 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/iERP/MES_U9C.cs 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/InStoreOrderNo.cs
@@ -17,6 +17,9 @@
using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
using System.Drawing.Printing;
using Tiger.Model.Entitys.MES.Position;
using System.Drawing.Drawing2D;
using static Microsoft.CodeAnalysis.CSharp.SyntaxTokenParser;
using Tiger.Model.Minsun;
namespace Tiger.Business.MES.Transaction
{
@@ -34,6 +37,8 @@
            ApiHost = apiHost;
            OrgCode = input.OrgCode;
            pageSize = input.pageSize;
            _GetScannedList();
            CurBatchNo = !inStoreInfos.IsNullOrEmpty() && inStoreInfos.InStoreScanInfos.Count>0? InStoreScanInfos[0].BATCH_NO: DateTime.Now.ToString("yyyyMMddHHmmss");
            Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
            return this;
        }
@@ -44,20 +49,26 @@
        public long UserId { get; set; }
        public string OrgCode { get; set; }
        public string CurSN { get; set; }
        public string CurBatchNo { get; set; }
        public int pageSize { get; set; }
        public RcvRptDocCreateInput RcvRptInput { get; set; } = new RcvRptDocCreateInput();
        public List<ProdInBatch> ProdInBatchs { get; set; } = new List<ProdInBatch>();
        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; } = new List<BIZ_ERP_PROD_IN_BTH>();
        public List<BIZ_ERP_PROD_IN> ErpProdIns { get; set; } = new List<BIZ_ERP_PROD_IN>();
        /// <summary>
        /// 扫描列表 
        /// </summary>
        public List<InStoreScanInfo> InStoreScanInfos { get; set; } = new List<InStoreScanInfo>();
        public List<BIZ_ERP_PROD_IN_SN> ErpProdInSns { get; set; } = new List<BIZ_ERP_PROD_IN_SN>();
        public InStoreInfos inStoreInfos { get; set; }
        #endregion Propertys & Variables
        #region Functions
        public ApiAction<InStoreInfos> GetInStoreInfos() {
            return new() { Data= inStoreInfos };
        }
        /// <summary>
        /// 扫描条码
        /// </summary>
@@ -86,6 +97,7 @@
                if (!ErpProdInBths.Any(q => q.WORK_ORDER == Info.ErpProdInBth.WORK_ORDER))
                {
                    Info.ErpProdInBth.AUTH_ORG = OrgCode;
                    Info.ErpProdInBth.BATCH_NO = CurBatchNo;
                    Info.ErpProdInBth.CREATE_USER = UserCode;
                    Info.ErpProdInBth.CREATE_TIME = DateTime.Now;
                    Info.ErpProdInBth.SCANED_DATE = DateTime.Now;
@@ -94,7 +106,19 @@
                    Info.ErpProdInBth.ORDER_NO = UserCode;
                    Info.ErpProdInBth.IS_HANDLED = "N";
                    Info.ErpProdInBth.CartonQty = n == 0 ? 1 : n;
                    BIZ_ERP_PROD_IN prodIn = new()
                    {
                        AUTH_ORG = OrgCode,
                        BILLCODE = UserCode,
                        BILLDATE = DateTime.Now,
                        STATUS = 0,
                        HANDLED = -1,
                        WAREHOUSECODE = "",
                        SOURCECODE = Info.ErpProdInBth.WORK_ORDER,
                        HANDLED_DATE = DateTime.Now,
                    };
                    ErpProdInBths.Add(Info.ErpProdInBth);
                    ErpProdIns.Add(prodIn);
                }
                else
                {
@@ -104,7 +128,7 @@
                        if (!erpbth.IsNullOrEmpty())
                        {
                            erpbth.SCAN_QTY += Info.InStoreScanInfo.SCAN_QTY.ToDouble();
                            Info.ErpProdInBth.CartonQty++;
                            erpbth.CartonQty = n + 1;
                        }
                    }
                }
@@ -139,7 +163,7 @@
                            isAdded = true;
                        }
                    }
                    if (isAdded)
                    if (!isAdded)
                    {
                        RcvRptInput.PrintJsons.Add(new()
                        {
@@ -154,14 +178,16 @@
                //暂存扫码数据
                if (!InStoreScanInfos.Any(q => q.WORK_ORDER == Info?.ErpProdInBth.WORK_ORDER && q.SN == CurSN))
                {
                    Info.InStoreScanInfo.BATCH_NO = CurBatchNo;
                    InStoreScanInfos.Add(Info.InStoreScanInfo);
                }
                var wipPkgs = Biz.Db.Ado.UseStoredProcedure().SqlQuery<MES_WIP_PKG>("SP_MES_GET_ITEM_PKG", new SugarParameter("root", CurSN));
                int maxLevel = wipPkgs.Max(p => p.LEVEL);
                foreach (var item in wipPkgs.Where(q=> q.LEVEL == maxLevel))
                foreach (var item in wipPkgs.Where(q => q.LEVEL == maxLevel))
                {
                    var scanResult = new BIZ_ERP_PROD_IN_SN
                    {
                        AUTH_ORG = OrgCode,
                        ID = Guid.NewGuid().ToString(),
                        CARTONNO = CurSN,
                        SN = item.SN,
@@ -200,10 +226,16 @@
                    this.Close(!dbTran.IsSuccess);
                    throw dbTran.ErrorException;
                }
                action.Data = new() {
                RcvRptInput.RcvRptDocBases = new();
                RcvRptInput.labels = new();
                RcvRptInput.ErpProdInBths = ErpProdInBths;
                RcvRptInput.userId = UserCode;
                inStoreInfos= new()
                {
                    ErpProdInBths = ErpProdInBths,
                    InStoreScanInfos = InStoreScanInfos,
                };
                action.Data = inStoreInfos;
            }
            catch (Exception ex)
            {
@@ -217,48 +249,88 @@
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public async Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder(RcvRptDocCreateInput input)
        public async Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder()
        {
            var action = new ApiAction<RcvRptDocCreateInput>();
            try
            {
                //input.RcvRptDocBases = new()
                //{
                //    new(){
                //    WorkOrder = item.WORK_ORDER,
                //    ItemCode = item.ITEM_CODE,
                //    WhCode = "10105",
                //    PkgQty = item.SCAN_QTY,
                //    CompleteQty = item.SCAN_QTY,
                //    OutputType = 0,
                //    StorageType = 4,
                //    DocState = 1,
                //    Status = "N"
                //    }
                //};
                action = await _IMES_U9C.RcvRptDocCreate(input);
                //保存数据库
                var db = Business.Biz.Db;
                var dbTran = db.UseTran(() =>
                //如果扫描记录为0
                if (!RcvRptInput.ErpProdInBths.Any(q => q.IS_HANDLED == "N"))
                {
                    //var x = db.Storageable(ErpProdInBths, $"InStoreOrderNo_{UserCode}")
                    //         .WhereColumns(t => new { t.ORDER_NO, t.WORK_ORDER, t.GHOST_ROW })
                    //         .ToStorage();
                    //x.AsInsertable.ExecuteCommand();
                    //x.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                    //var s = db.Storageable(ErpProdInSns, $"InStoreOrderNo_{UserCode}")
                    //            .WhereColumns(t => new { t.CARTONNO, t.SN, t.GHOST_ROW })
                    //            .ToStorage();
                    //s.AsInsertable.ExecuteCommand();
                    //s.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                });
                if (!dbTran.IsSuccess)
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L($"没有要入库的产品数据,请扫描包装完成的箱二维码重新生成入库单据!");
                    return action;
                }
                if (RcvRptInput.RcvRptDocBases.IsNullOrEmpty() || RcvRptInput.RcvRptDocBases.Count == 0)
                {
                    Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
                    this.Close(!dbTran.IsSuccess);
                    throw dbTran.ErrorException;
                    foreach (var item in RcvRptInput.ErpProdInBths)
                    {
                        var DocBase = new RcvRptDocBase()
                        {
                            WorkOrder = item.WORK_ORDER,
                            ItemCode = item.ITEM_CODE,
                            WhCode = "10105",
                            PkgQty = item.SCAN_QTY.ToInt32(),
                            CompleteQty = item.SCAN_QTY.ToInt32(),
                            OutputType = 0,
                            StorageType = 4,
                            DocState = 1,
                            Status = "N"
                        };
                        if (!RcvRptInput.RcvRptDocBases.Any(q => q.WorkOrder == item.WORK_ORDER))
                        {
                            RcvRptInput.RcvRptDocBases.Add(DocBase);
                        }
                    }
                }
                else
                {
                    action.IsSuccessed = false;
                    action.LocaleMsg = Biz.L($"有存在未提交的入库单,不能生成入库单");
                    return action;
                }
                action = await _IMES_U9C.RcvRptDocCreate(RcvRptInput);
                if (action.IsSuccessed)
                {
                    foreach (var sn in ErpProdInSns)
                    {
                        var d = action.Data.ErpProdInBths.Where(q=> q.WORK_ORDER == sn.SOURCECODE).FirstOrDefault();
                        if (!d.IsNullOrEmpty())
                        {
                            sn.BUSINESSCODE = d.ORDER_NO;
                            sn.UPDATE_USER = UserCode;
                            sn.UPDATE_TIME = DateTime.Now;
                        }
                    }
                    foreach (var p in ErpProdIns)
                    {
                        var d = action.Data.ErpProdInBths.Where(q => q.WORK_ORDER == p.SOURCECODE).FirstOrDefault();
                        if (!d.IsNullOrEmpty())
                        {
                            p.BILLCODE = d.ORDER_NO;
                            p.UPDATE_USER = UserCode;
                            p.UPDATE_TIME = DateTime.Now;
                            p.HANDLED = 0;
                        }
                    }
                    //保存数据库
                    var db = Business.Biz.Db;
                    var dbTran = db.UseTran(() =>
                    {
                        db.Updateable(ErpProdInSns, $"InStoreOrderNo_{UserCode}").UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.BUSINESSCODE }).ExecuteCommand();
                        var x = db.Storageable(ErpProdIns, $"InStoreOrderNo_{UserCode}")
                                 .WhereColumns(t => new { t.BILLCODE, t.SOURCECODE, t.GHOST_ROW })
                                 .ToStorage();
                        x.AsInsertable.ExecuteCommand();
                        x.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                    });
                    if (!dbTran.IsSuccess)
                    {
                        Logger.Default.Fatal(dbTran.ErrorException, "Database transaction save exception");
                        this.Close(!dbTran.IsSuccess);
                        throw dbTran.ErrorException;
                    }
                }
            }
@@ -270,39 +342,115 @@
        }
        /// <summary>
        /// 查询对应的条码
        /// 查询已扫描列表
        /// </summary>
        /// <returns></returns>
        public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedBarcodes()
        public async Task<ApiAction<RcvRptDocCreateInput>> GetScannedList()
        {
            var action = new ApiAction<RcvRptDocCreateInput>();
            try
            {
                //var query = await Biz.Db.Queryable<BIZ_ERP_RECEIPT_SN, BAS_ITEM>((t, m) =>
                //                        new JoinQueryInfos(
                //                            JoinType.Left, t.ITEM_CODE == m.ITEM_CODE
                //                            ))
                //    .Where((t, m) => t.CREATE_USER == UserCode
                //        //&& t.WAREHOUSECODE.ToUpper() == WarehouseCode.ToUpper()
                //        && t.STATUS == WMS_ITEM.STATUSs.Counted.GetValue()
                //        && t.ITEM_CODE.ToUpper() == MaterialCode.ToUpper()
                //        && t.BILLCODE == UserCode
                //        && t.AUTH_ORG == OrgCode)
                //    .Select((t, m) => new Model.Minsun.CustSupplyCheckDetail
                //    {
                //        Barcode = t.SN,
                //        BarcodeQty = t.SCANQTY,
                //        Unit = m.UNIT
                //    })
                //    .ToListAsync();
                action.Data = _GetScannedList();
            }
            catch (Exception ex)
            {
                action.CatchExceptionWithLog(ex, $"查询对应的条码异常");
                action.CatchExceptionWithLog(ex, $"查询已扫描列表异常");
            }
            return action;
        }
        /// <summary>
        /// 从数据库读回操作者原本操作的记录
        /// </summary>
        /// <returns></returns>
        private RcvRptDocCreateInput _GetScannedList()
        {
            RcvRptInput.RcvRptDocBases = new();
            RcvRptInput.PrintJsons = new();
            RcvRptInput.labels = new();
            RcvRptInput.userId = UserCode;
            if (RcvRptInput.ErpProdInBths.Count == 0)
            {
                RcvRptInput.ErpProdInBths = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>()
                    .Where(q => q.BATCH_NO == SqlFunc.Subqueryable<BIZ_ERP_PROD_IN_BTH>().Where(s => s.ORDER_NO == UserCode).Select(s => s.BATCH_NO))
                    .IncludesAllFirstLayer().ToList();
                foreach (var item in RcvRptInput.ErpProdInBths)
                {
                    var values = item.ProdInSns.GroupBy(x => x.CARTONNO)
                        .Select(g => new InStoreScanInfo() { SN = g.Key, SALES_ORDER = item.SALES_ORDER, BATCH_NO = item.BATCH_NO, WORK_ORDER = item.WORK_ORDER, SCAN_QTY = g.Sum(x => x.Qty).ToDouble() });
                    foreach (var t in values)
                    {
                        InStoreScanInfos.Add(t);
                    }
                    item.CartonQty = values.Count();
                    BIZ_ERP_PROD_IN prodIn = new()
                    {
                        AUTH_ORG = OrgCode,
                        BILLCODE = UserCode,
                        BILLDATE = DateTime.Now,
                        STATUS = 0,
                        HANDLED = -1,
                        WAREHOUSECODE = "",
                        SOURCECODE = item.WORK_ORDER,
                        HANDLED_DATE = DateTime.Now,
                    };
                    ErpProdIns.Add(prodIn);
                    ErpProdInSns.AddRange(item.ProdInSns);
                    //生成打印实体
                    if (RcvRptInput.PrintJsons.Count == 0)
                    {
                        RcvRptInput.PrintJsons.Add(new()
                        {
                            ID = Guid.NewGuid().ToString("N"),
                            Items = new() {
                            item
                        }
                        });
                    }
                    else
                    {
                        //拼分页
                        bool isAdded = false;
                        foreach (var p in RcvRptInput.PrintJsons)
                        {
                            if (!p.Items.Any(q => q.WORK_ORDER == item.WORK_ORDER))
                            {
                                if (p.Items.Count < pageSize)
                                {
                                    p.Items.Add(item);
                                    isAdded = true;
                                }
                            }
                            else
                            {
                                isAdded = true;
                            }
                        }
                        if (!isAdded)
                        {
                            RcvRptInput.PrintJsons.Add(new()
                            {
                                ID = Guid.NewGuid().ToString("N"),
                                Items = new() {
                            item
                        }
                            });
                        }
                    }
                }
                ErpProdInBths = RcvRptInput.ErpProdInBths;
            }
            inStoreInfos = new()
            {
                ErpProdInBths = ErpProdInBths,
                InStoreScanInfos = InStoreScanInfos,
            };
            return RcvRptInput;
        }
        #endregion Functions
        public override bool Close(bool needSaveHistoryLog = false)
Tiger.Business.MES/iERP/MES_U9C.cs
@@ -45,30 +45,25 @@
            var action = new ApiAction<RcvRptDocCreateInput>();
            try
            {
                //先保存数据
                bool IsSuccessed = true;
                //保存成功,调用U9C接口-测试用
                //int i = 1;
                //List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths = new List<BIZ_ERP_PROD_IN_BTH>();
                //foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y"))
                //{
                //    var ErpProdInBth = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>().Where(q => q.WORK_ORDER == item.WorkOrder).First();
                //    var ErpProdInBth = input.ErpProdInBths.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
                //    item.Status = "Y";
                //    if (!ErpProdInBth.IsNullOrEmpty())
                //    {
                //        ErpProdInBth.ORDER_NO = $"YDRKD241200006";
                //        ErpProdInBth.ORDER_NO = $"YDRKD24120000{5+i}";
                //        ErpProdInBth.IS_HANDLED = "Y";
                //        ErpProdInBth.HANDLED_DATE = DateTime.Now;
                //        ErpProdInBths.Add(ErpProdInBth);
                //    }
                //    foreach (var p in input.PrintJsons)
                //    {
                //        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
                //        if (!d.IsNullOrEmpty())
                //        {
                //            d.ORDER_NO = $"YDRKD241200006";
                //            d.STATUS = "Y";
                //            d.ORDER_NO = $"YDRKD24120000{5 + i}";
                //            d.IS_HANDLED = "Y";
                //        }
                //    }
                //    i++;
@@ -76,7 +71,7 @@
                //var _db = Biz.Db;
                //var _dbTran = _db.UseTran(() =>
                //{
                //    _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE }).ExecuteCommand();
                //    _db.Updateable(input.ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
                //});
                //if (!_dbTran.IsSuccess)
                //{
@@ -84,20 +79,16 @@
                //    Logger.Interface.Error(action.Message);
                //    IsSuccessed = false;
                //}
                //input.ErpProdInBths = ErpProdInBths;
                //保存成功,调用U9C接口
                if (IsSuccessed)
                var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
                if (u9CLoginResult.Success)
                {
                    var u9CLoginResult = await HttpHelper.GetAsync<U9CLoginResult>($"{U9CAuthLoginUrl}userCode={input.userId}{secret}");
                    if (u9CLoginResult.Success)
                    var token = u9CLoginResult.Data;
                    Logger.Interface.Info($"U9C登录token: {token}");
                    foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y"))
                    {
                        var token = u9CLoginResult.Data;
                        Logger.Interface.Info($"U9C登录token: {token}");
                        List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths = new List<BIZ_ERP_PROD_IN_BTH>();
                        foreach (var item in input.RcvRptDocBases.Where(q => q.Status != "Y"))
                        {
                            List<RcvRptDocCreateParam> param = new() {
                        List<RcvRptDocCreateParam> param = new() {
                                new() {
                                    CompleteList = new(){
                                       new CompleteList
@@ -116,70 +107,65 @@
                                    BusinessDate = DateTime.Now,
                                }
                            };
                            var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
                            var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
                            var ErpProdInBth = Biz.Db.Queryable<BIZ_ERP_PROD_IN_BTH>().Where(q => q.WORK_ORDER == item.WorkOrder).First();
                            if (result != null)
                        var response = await HttpHelper.PostAsync(RcvRptDocCreateUrl, JsonConvert.SerializeObject(param), new Dictionary<string, string>() { { "token", token } });
                        var result = JsonConvert.DeserializeObject<U9CResult>(response.Message);
                        var ErpProdInBth = input.ErpProdInBths.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
                        if (result != null)
                        {
                            if (result.Success && result.Data[0].m_isSucess)
                            {
                                if (result.Success && result.Data[0].m_isSucess)
                                Logger.Interface.Info($"生成入库单接口提交Json: {JsonConvert.SerializeObject(param)},返回Json: {response.Message}");
                                item.Status = "Y";
                                if (!ErpProdInBth.IsNullOrEmpty())
                                {
                                    Logger.Interface.Info($"生成入库单接口提交Json: {JsonConvert.SerializeObject(param)},返回Json: {response.Message}");
                                    item.Status = "Y";
                                    if (!ErpProdInBth.IsNullOrEmpty())
                                    {
                                        ErpProdInBth.ORDER_NO = result.Data[0].m_code;
                                        ErpProdInBth.IS_HANDLED = "Y";
                                        ErpProdInBth.HANDLED_DATE = DateTime.Now;
                                        ErpProdInBths.Add(ErpProdInBth);
                                    }
                                    foreach (var p in input.PrintJsons)
                                    {
                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
                                        if (!d.IsNullOrEmpty())
                                        {
                                            d.ORDER_NO = result.Data[0].m_code;
                                            d.IS_HANDLED = "Y";
                                        }
                                    }
                                    Logger.Interface.Info($"生成入库单成功");
                                    ErpProdInBth.ORDER_NO = result.Data[0].m_code;
                                    ErpProdInBth.IS_HANDLED = "Y";
                                    ErpProdInBth.HANDLED_DATE = DateTime.Now;
                                }
                                else
                                foreach (var p in input.PrintJsons)
                                {
                                    action.IsSuccessed = false;
                                    action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}");
                                    item.Status = "F";
                                    if (!ErpProdInBth.IsNullOrEmpty())
                                    var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
                                    if (!d.IsNullOrEmpty())
                                    {
                                        ErpProdInBth.REMARK = result.Data[0].m_errorMsg;
                                        ErpProdInBth.IS_HANDLED = "F";
                                        ErpProdInBth.HANDLED_DATE = DateTime.Now;
                                        ErpProdInBths.Add(ErpProdInBth);
                                        d.ORDER_NO = result.Data[0].m_code;
                                        d.IS_HANDLED = "Y";
                                    }
                                    foreach (var p in input.PrintJsons)
                                    {
                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
                                        if (!d.IsNullOrEmpty())
                                        {
                                            d.ORDER_NO = result.Data[0].m_code;
                                            d.IS_HANDLED = "F";
                                        }
                                    }
                                    Logger.Interface.Info($"生成入库单失败:{result.Data[0].m_errorMsg}");
                                }
                                Logger.Interface.Info($"生成入库单成功");
                            }
                            else
                            {
                                action.IsSuccessed = false;
                                action.LocaleMsg = new($"{action.Message}; {result.Data[0].m_errorMsg}");
                                item.Status = "F";
                                if (!ErpProdInBth.IsNullOrEmpty())
                                {
                                    ErpProdInBth.REMARK = result.Data[0].m_errorMsg;
                                    ErpProdInBth.IS_HANDLED = "F";
                                    ErpProdInBth.HANDLED_DATE = DateTime.Now;
                                }
                                foreach (var p in input.PrintJsons)
                                {
                                    var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.IS_HANDLED != "P").FirstOrDefault();
                                    if (!d.IsNullOrEmpty())
                                    {
                                        d.ORDER_NO = result.Data[0].m_code;
                                        d.IS_HANDLED = "F";
                                    }
                                }
                                Logger.Interface.Info($"生成入库单失败:{result.Data[0].m_errorMsg}");
                            }
                        }
                        var _db = Biz.Db;
                        var _dbTran = _db.UseTran(() =>
                        {
                            _db.Updateable(ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
                        });
                        if (!_dbTran.IsSuccess)
                        {
                            action.CatchExceptionWithLog(_dbTran.ErrorException, $"数据处理失败");
                            Logger.Interface.Error(action.Message);
                            IsSuccessed = false;
                        }
                        input.ErpProdInBths = ErpProdInBths;
                    }
                    var _db = Biz.Db;
                    var _dbTran = _db.UseTran(() =>
                    {
                        _db.Updateable(input.ErpProdInBths, "U9C_RcvRptDocCreate").UpdateColumns(x => new { x.ORDER_NO, x.REMARK, x.IS_HANDLED, x.HANDLED_DATE, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
                    });
                    if (!_dbTran.IsSuccess)
                    {
                        action.CatchExceptionWithLog(_dbTran.ErrorException, $"数据处理失败");
                        Logger.Interface.Error(action.Message);
                    }
                }
                input.labels = GetLabels(input.PrintJsons);
Tiger.Controllers.MES/Controllers/MESController.InStoreOrderNo.cs
@@ -10,6 +10,7 @@
using Tiger.Model;
using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
using Tiger.Model.Entitys.MES.Position;
using Tiger.Model.Entitys.MES.U9C;
namespace Tiger.Api.Controllers.MES
{
@@ -36,9 +37,10 @@
                {
                    trans = AutoFacContainer.Instance.Resolve<IInStoreOrderNo>().Init(action.ID, Request.Host.Value,  action.Data);
                    iBiz.MES.Context.NewTransaction(HttpContext, trans);
                }
                response = action.GetResponse();
                response = action.GetResponse(trans.GetInStoreInfos());
            }
            catch (System.IO.InvalidDataException ex)
            {
@@ -147,5 +149,94 @@
            return Ok(response);
        }
        /// <summary>
        /// 调用U9C接口生成入库单
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/InStoreOrderNo/GenerateInStoreOrder")]
        public async Task<IActionResult> InStoreOrderNo_GenerateInStoreOrderAsync([FromBody] ApiAction<RcvRptDocCreateInput> action)
        {
            ApiAction response;
            IInStoreOrderNo trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IInStoreOrderNo;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(await trans.GenerateInStoreOrder());
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.GenerateInStoreOrder().Result); }
                        }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: 入库单事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: 入库单事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
        /// <summary>
        /// 查询对应的条码
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        [HttpPost]
        [Route("api/[controller]/InStoreOrderNo/GetScannedList")]
        public async Task<IActionResult> InStoreOrderNo_GetScannedListAsync([FromBody] ApiAction action)
        {
            ApiAction response;
            IInStoreOrderNo trans = null;
            try
            {
                if (iBiz.MES.Context.GetTransDic().ContainsKey(action.ID))
                {
                    trans = iBiz.MES.Context.GetTransDic()[action.ID] as IInStoreOrderNo;
                    if (!trans.IsFinished)
                    {
                        if (action.IsAsync)
                        {
                            response = action.GetResponse(await trans.GetScannedList());
                        }
                        else
                        {
                            lock (trans.TransLock) { response = action.GetResponse(trans.GetScannedList().Result); }
                        }
                    }
                    else
                    {
                        response = action.GetResponse($"Transaction Error: 入库单事务[ID:{action.ID}]已经关闭", false);
                    }
                }
                else
                {
                    response = action.GetResponse($"Transaction Error: 入库单事务[ID:{action.ID}]已经被关闭", false);
                }
            }
            catch (System.Exception ex)
            {
                response = action.GetResponse().CatchExceptionWithLog(ex);
            }
            trans?.AddHistory(Request, action);
            return Ok(response);
        }
    }
}
Tiger.IBusiness.MES/Transaction/IInStoreOrderNo.cs
@@ -6,6 +6,7 @@
using System.Threading.Tasks;
using Tiger.Model;
using Tiger.Model.Entitys.MES.BizPrintInstoreDoc;
using Tiger.Model.Entitys.MES.U9C;
namespace Tiger.IBusiness
{
@@ -13,6 +14,9 @@
    {
        public IInStoreOrderNo Init(string id, string apiHost, InstoreDocInput input);
        public Task<ApiAction<InStoreInfos>> Submit(string code);
        public Task<ApiAction<RcvRptDocCreateInput>> GenerateInStoreOrder();
        public Task<ApiAction<RcvRptDocCreateInput>> GetScannedList();
        public ApiAction<InStoreInfos> GetInStoreInfos();
        public bool Close(bool needSaveHistoryLog = false);
    }
Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -39,7 +39,7 @@
    public class RcvRptDocCreateInput
    {
        public List<RcvRptDocBase> RcvRptDocBases { get; set; }
        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; } = new List<BIZ_ERP_PROD_IN_BTH>();
        public List<InStorePrintJson> PrintJsons { get; set; } = new List<InStorePrintJson>();
        public List<BAS_LABEL_TEMP> labels { get; set; }
        public string userId { get; set; }
Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs
@@ -204,7 +204,7 @@
        [DisplayName("条码")]
        public string SN { get; set; }
        public string SALES_ORDER { get; set; }
        [DisplayName("工单批次号")]
        [DisplayName("批次号")]
        public string BATCH_NO { get; set; }
        /// <summary>
        /// 工单号