服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-12-03 6cc05f3689e7616431886ec183948c433a30220c
一些优化
已修改8个文件
188 ■■■■■ 文件已修改
Tiger.Business.MES/BIZ/BIZ_MES_WO.cs 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/YadaPacking.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/iERP/MES_U9C.cs 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/iERP/U9C_MES.cs 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/Services/Base/TigerJobBase.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -182,18 +182,18 @@
                    {
                        try
                        {
                            //SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { WO = input.Wo.ORDER_NO, ERR_CODE = 0, ERR_MSG = "" });
                            //pars[1].Direction = System.Data.ParameterDirection.Output;
                            //pars[2].Direction = System.Data.ParameterDirection.Output;
                            //Biz.Db.Ado.UseStoredProcedure().ExecuteCommand("SP_MES_WO2CUST", pars);
                            //if (pars[1].Value.ToInt32() == 0)
                            //{
                            //    Logger.Default.Info($"工单[{input.Wo.ORDER_NO}]下发完成后保存工艺路线数据到产品[{input.Wo.ITEM_CODE}]的客户[{input.Wo.CUST_CODE ?? ""}]的工艺路线中,{pars[2].Value.ToString()}");
                            //}
                            //else
                            //{
                            //    Logger.Default.Error($"工单[{input.Wo.ORDER_NO}]下发完成后保存工艺路线数据到产品[{input.Wo.ITEM_CODE}]的客户[{input.Wo.CUST_CODE ?? ""}]的工艺路线出错,{pars[2].Value.ToString()}");
                            //}
                            SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { WO = input.Wo.ORDER_NO, ERR_CODE = 0, ERR_MSG = "" });
                            pars[1].Direction = System.Data.ParameterDirection.Output;
                            pars[2].Direction = System.Data.ParameterDirection.Output;
                            Biz.Db.Ado.UseStoredProcedure().ExecuteCommand("SP_MES_WO2CUST", pars);
                            if (pars[1].Value.ToInt32() == 0)
                            {
                                Logger.Default.Info($"工单[{input.Wo.ORDER_NO}]下发完成后保存工艺路线数据到产品[{input.Wo.ITEM_CODE}]的客户[{input.Wo.CUST_CODE ?? ""}]的工艺路线中,{pars[2].Value.ToString()}");
                            }
                            else
                            {
                                Logger.Default.Error($"工单[{input.Wo.ORDER_NO}]下发完成后保存工艺路线数据到产品[{input.Wo.ITEM_CODE}]的客户[{input.Wo.CUST_CODE ?? ""}]的工艺路线出错,{pars[2].Value.ToString()}");
                            }
                        }
                        catch (Exception ex)
                        {
@@ -734,6 +734,7 @@
                        SALES_ORDER = wo.SALES_ORDER,
                        BATCH_NO = woSns[0].BATCH_NO,
                        ITEM_CODE = wo.ITEM_CODE,
                        SapCode = wo.ItemInfo?.ExtInfo?.SapCode,
                        ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
                        PLAN_QTY = wo.PLAN_QTY,
                        SCAN_QTY = woSns.Count,
Tiger.Business.MES/BIZ/BizPrintInstoreDoc.cs
@@ -32,7 +32,7 @@
            var result = new ApiAction<List<BAS_LABEL_TEMP>>();
            try
            {
                List<BAS_LABEL_TEMP> labels = new List<BAS_LABEL_TEMP>();
                int i = 1;
                int j = 1;
                foreach (var p in input.printJsons)
@@ -75,7 +75,7 @@
                            }
                            if (item.VAR_NAME.StartsWith("SapCode"))
                            {
                                item.Value = v.ITEM_CODE;
                                item.Value = v.SapCode;
                            }
                            if (item.VAR_NAME.StartsWith("Seq"))
                            {
@@ -96,8 +96,10 @@
                            item.Value = DateTime.Now.ToString("yyyyy.MM.dd");
                        }
                    }
                    labels.Add(label);
                    j++;
                } 
                result.Data = labels;
            }
            catch (Exception ex)
            {
Tiger.Business.MES/Transaction/YadaPacking.cs
@@ -70,10 +70,10 @@
                //    //action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.QtyError", input.Qty);
                //    return SetOutPutMqttMsg(action, input.Locale);
                //}
                if (input.Options.ContainsKey("IsPrintCustomerLabel"))
                {
                    IsPrintCustomerLabel = input.Options["IsPrintCustomerLabel"].ToBoolean();
                }
                //if (input.Options.ContainsKey("IsPrintCustomerLabel"))
                //{
                //    IsPrintCustomerLabel = input.Options["IsPrintCustomerLabel"].ToBoolean();
                //}
                //if (input.Options.ContainsKey("ShippingOrder"))
                //{
Tiger.Business.MES/iERP/MES_U9C.cs
@@ -147,10 +147,11 @@
                                    }
                                    foreach (var p in input.PrintJsons)
                                    {
                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder).FirstOrDefault();
                                        var d = p.Items.Where(q => q.WORK_ORDER == item.WorkOrder && q.STATUS !="P").FirstOrDefault();
                                        if (!d.IsNullOrEmpty())
                                        {
                                            d.ORDER_NO = result.Data[0].m_code;
                                            d.STATUS = "Y";
                                        }
                                    }
                                    Logger.Interface.Info($"生成入库单成功");
@@ -166,6 +167,15 @@
                                        ErpProdInBth.IS_HANDLED = "F";
                                        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.STATUS != "P").FirstOrDefault();
                                        if (!d.IsNullOrEmpty())
                                        {
                                            d.ORDER_NO = result.Data[0].m_code;
                                            d.STATUS = "F";
                                        }
                                    }
                                    Logger.Interface.Info($"生成入库单失败:{result.Data[0].m_errorMsg}");
                                }
@@ -185,6 +195,7 @@
                        input.ErpProdInBths = ErpProdInBths;
                    }
                }
                input.labels = GetLabels(input.PrintJsons);
                action.Data = input;
            }
            catch (System.Exception ex)
@@ -194,5 +205,77 @@
            Logger.Interface.Info($"/* 入库单接口结束 */\r\n"); //固定写法
            return action;
        }
        private List<BAS_LABEL_TEMP> GetLabels(List<InStorePrintJson> printJsons) {
            List<BAS_LABEL_TEMP> labels = new List<BAS_LABEL_TEMP>();
            int i = 1;
            int j = 1;
            foreach (var p in printJsons)
            {
                BAS_LABEL_TEMP label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == "InstoreTemplate").First();
                foreach (var item in label.Variables.OrderBy(q => q.VAR_TYPE == BAS_LABEL_VAR.VAR_TYPEs.BarcodeGenerate.GetValue() ? 0 : 1))
                {
                    foreach (var v in p.Items.Where(q=>q.STATUS !="F" && q.STATUS !="P"))
                    {
                        if (item.VAR_NAME.StartsWith("RcvDoc"))
                        {
                            item.Value = v.ORDER_NO;
                        }
                        if (item.VAR_NAME.StartsWith("SoDoc"))
                        {
                            item.Value = v.SALES_ORDER;
                        }
                        if (item.VAR_NAME.StartsWith("MoDoc"))
                        {
                            item.Value = v.WORK_ORDER;
                        }
                        if (item.VAR_NAME.StartsWith("ItemCode"))
                        {
                            item.Value = v.ITEM_CODE;
                        }
                        if (item.VAR_NAME.StartsWith("Description"))
                        {
                            item.Value = v.ITEM_NAME;
                        }
                        if (item.VAR_NAME.StartsWith("BoxQty"))
                        {
                            item.Value = v.PLAN_QTY.ToString();
                        }
                        if (item.VAR_NAME.StartsWith("InQty"))
                        {
                            item.Value = v.SCAN_QTY.ToString();
                        }
                        if (item.VAR_NAME.StartsWith("RcvQrCode"))
                        {
                            item.Value = v.ORDER_NO.ToString();
                        }
                        if (item.VAR_NAME.StartsWith("SapCode"))
                        {
                            item.Value = v.SapCode;
                        }
                        if (item.VAR_NAME.StartsWith("Seq"))
                        {
                            item.Value = i.ToString();
                        }
                        i++;
                    }
                    if (item.VAR_NAME == "PageNum")
                    {
                        item.Value = j.ToString();
                    }
                    if (item.VAR_NAME == "PageSize")
                    {
                        item.Value = printJsons.Count.ToString();
                    }
                    if (item.VAR_NAME == "BusinessDate")
                    {
                        item.Value = DateTime.Now.ToString("yyyyy.MM.dd");
                    }
                }
                labels.Add(label);
                j++;
            }
            return labels;
        }
    }
}
Tiger.Business.MES/iERP/U9C_MES.cs
@@ -119,7 +119,7 @@
                                    .WhereColumns(t => new { t.ITEM_ID, t.GHOST_ROW })
                                    .ToStorage();
                             y.AsInsertable.ExecuteCommand();
                             y.AsUpdateable.ExecuteCommand();
                             y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                         });
                    }
                    else
@@ -208,15 +208,15 @@
                db.Storageable(LastRun, "U9C_MES_GetWo").ExecuteCommand();
                if (items.Any())
                {
                    if (items.Count > 150)
                    if (items.Count > 100)
                    {
                        db.Utilities.PageEach(items, 1000, pageList =>
                        db.Utilities.PageEach(items, 100, pageList =>
                        {
                            var y = db.Storageable(pageList, "U9C")
                                   .WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW })
                                   .ToStorage();
                            y.BulkCopy();
                            y.BulkUpdate();
                            y.AsInsertable.ExecuteCommand();
                            y.AsUpdateable.IgnoreColumns(x => x.ID).ExecuteCommand();
                        });
                    }
                    else
@@ -285,11 +285,7 @@
                    {
                        if (woList.Any())
                        {
                            var s = _db.Storageable(woList, "U9C")
                                   .WhereColumns(t => new { t.ORDER_NO, t.GHOST_ROW })
                                   .ToStorage();
                            s.AsInsertable.ExecuteCommand();
                            s.AsUpdateable.IgnoreColumns(x => x.ID).UpdateColumns(x => new { x.ROUTE_STATUS}).ExecuteCommand();
                            _db.Updateable(woList, "U9C").UpdateColumns(x => new { x.ROUTE_STATUS }).ExecuteCommand();
                        }
                    });
Tiger.Business/Services/Base/TigerJobBase.cs
@@ -125,93 +125,82 @@
        {
            TskJobInput tskJobInput = new TskJobInput();
            var dateTime = DateTime.Now;
            if (Args.Interval > 0)
            {
                tskJobInput.result = true;
                tskJobInput.input = new()
                {
                    startTime = dateTime.AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss"),
                    endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                };
            }
            else
            {
                //按时间类型来运行
                switch (Args.Type)
                {
                    case TrigArgs.EveryType.Milliseconds:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMilliseconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Seconds:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddSeconds(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddSeconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Minutes:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMinutes(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMinutes(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Hours:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddHours(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddHours(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Days:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Weeks:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-7);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Weekdays:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Months:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMonths(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                }
            }
            return tskJobInput;
        }
Tiger.Model.Net/Entitys/MES/ParameterEntity/U9CParameter.cs
@@ -41,6 +41,7 @@
        public List<RcvRptDocBase> RcvRptDocBases { get; set; }
        public List<BIZ_ERP_PROD_IN_BTH> ErpProdInBths { get; set; }
        public List<InStorePrintJson> PrintJsons { get; set; }
        public List<BAS_LABEL_TEMP> labels { get; set; }
    }
    public class InStorePrintJson
@@ -57,6 +58,7 @@
        public string BATCH_NO { get; set; }
        public string WORK_ORDER { get; set; }
        public string ITEM_CODE { get; set; }
        public string SapCode { get; set; }
        public string ITEM_NAME { get; set; }
        public double PLAN_QTY { get; set; }
        public double SCAN_QTY { get; set; }
Tiger.Model.Net/Entitys/WMS/BIZ_ERP_PROD_IN_BTH.cs
@@ -168,6 +168,7 @@
        /// </summary>
        [DisplayName("物料名称")]
        public string ITEM_NAME { get; set; }
        public string SapCode { get; set; }
        /// <summary>
        /// 计划数量
        /// </summary>