服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-10-05 617634e5e18c7c02f689de40353da113907da9a8
工单同步接口更新,箱盒二维码更新
已修改2个文件
69 ■■■■■ 文件已修改
Tiger.Business.MES/Transaction/Position.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/iERP/U9C_MES.cs 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/Position.cs
@@ -659,7 +659,7 @@
            var Display = WorkBatch.Product.ExtInfo.Display;
            var Remark = WorkBatch.Product.ExtInfo.Remark;
            return $"{code}|{itemCode}|{wo}|\r\n{snList}|{weight}|型号:{model},输入:{Input},显示:{Display},输出:{OutPut},电源:{Power},精度:{Accuracy},备注:{Remark}";
            return $"{code}|{itemCode}|{wo}|\r\n{snList}|{weight}{unit}|型号:{model},输入:{Input},显示:{Display},输出:{OutPut},电源:{Power},精度:{Accuracy},备注:{Remark}";
        }
        /// <summary>
Tiger.Business.MES/iERP/U9C_MES.cs
@@ -14,6 +14,8 @@
using Tiger.Model.Minsun;
using Org.BouncyCastle.Asn1.Tsp;
using Tiger.Model.Entitys.MES.Position;
using Apache.NMS.ActiveMQ.Commands;
using System.Security.Cryptography;
namespace Tiger.Business.MES
{
@@ -186,7 +188,7 @@
                            CUST_PREFIX = di["OutBarHead"] == null ? "" : di["OutBarHead"].ToString(),
                            SALES_CONTRACT = di["Contracts"] == null ? "" : di["Contracts"].ToString(),
                        };
                        if (!Biz.Db.Queryable<BIZ_MES_WO>().Any(x => x.ORDER_NO == woItem.ORDER_NO && (x.STATUS > 0 || x.ROUTE_STATUS > 0)))
                        if (!Biz.Db.Queryable<BIZ_MES_WO>().Any(x => x.ORDER_NO == woItem.ORDER_NO && (x.STATUS > BIZ_MES_WO.STATUSs.Init.GetValue() || x.ROUTE_STATUS > BIZ_MES_WO.ROUTE_STATUSs.WaitSet.GetValue())))
                        {
                            items.Add(woItem);
                        }
@@ -235,6 +237,69 @@
                Logger.Scheduler.Error(action.Message);
            }
            Logger.Scheduler.Info($"工单信息存入数据库,总数:[{items.Count}]");
            if (action.IsSuccessed && items.Count > 0)
            {
                //异步跑绑定工艺路线
                Work.DoAsync(() =>
                {
                    List<BIZ_MES_WO> woList = new();
                    foreach (var wo in items) {
                        //只有工单状态为初始化和工艺状态为待配置才自动绑定工艺路线
                        if (wo.STATUS == BIZ_MES_WO.STATUSs.Init.GetValue() && wo.ROUTE_STATUS == BIZ_MES_WO.ROUTE_STATUSs.WaitSet.GetValue()) {
                            try
                            {
                                var rot = Biz.Db.Queryable<MES_PROD_OPER>()
                                .GroupBy(x => new { x.PROD_CODE, x.ROT_ID})
                                .Where(q => q.PROD_CODE == wo.ITEM_CODE)
                                .Select(it => new {
                                    PROD_CODE = it.PROD_CODE,
                                    ROT_ID = it.ROT_ID
                                })
                                .First();
                                if (rot != null)
                                {
                                    SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { ROT_ID = rot.ROT_ID, WO = wo.ORDER_NO, ERR_CODE = 0, ERR_MSG = "" });
                                    pars[2].Direction = System.Data.ParameterDirection.Output;
                                    pars[3].Direction = System.Data.ParameterDirection.Output;
                                    Biz.Db.Ado.UseStoredProcedure().ExecuteCommand("SP_MES_PROD2WO", pars);
                                    if (pars[2].Value.ToInt32() == 0)
                                    {
                                        Logger.Scheduler.Info($"工单[{wo.ORDER_NO}]绑定工艺路线[{rot.ROT_ID}]成功,{pars[3].Value.ToString()}");
                                        wo.ROUTE_STATUS = BIZ_MES_WO.ROUTE_STATUSs.Finish.GetValue();
                                        woList.Add(wo);
                                    }
                                    else
                                    {
                                        Logger.Scheduler.Error(pars[3].Value.ToString());
                                    }
                                }
                            }
                            catch (System.Exception ex)
                            {
                                Logger.Scheduler.Error(ex.Message);
                            }
                        }
                    }
                    var _db = Biz.Db;
                    var dbTran = _db.UseTran(() =>
                    {
                        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();
                        }
                    });
                    if (!dbTran.IsSuccess)
                    {
                        Logger.Scheduler.Error(dbTran.ErrorException.Message);
                    }
                });
            }
            return action;
        }