服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-12-23 141b19dbe2eadbb267379cc3820c45adf45d7b8e
Tiger.Business.MES/BIZ/BIZ_MES_WO.cs
@@ -186,7 +186,6 @@
                            pars[1].Direction = System.Data.ParameterDirection.Output;
                            pars[2].Direction = System.Data.ParameterDirection.Output;
                            Biz.Db.Ado.UseStoredProcedure().ExecuteCommand("SP_MES_WO2CUST", pars);
                            //response.LocaleMsg = new(pars[2].Value.ToString());
                            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()}");
@@ -292,6 +291,14 @@
                        _woBatch.ACT_LINE = input.ActLine;
                        _woBatch.CHANGE_USER = input.UserId;
                        _woBatch.CHANGE_TIME = DateTime.Now;
                        _wo.STATUS = BIZ_MES_WO.STATUSs.Release.GetValue();
                    }
                    else
                    {
                        if (input.Status == BIZ_MES_WO_BATCH.STATUSs.Init.GetValue() && !Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(x => x.ORDER_NO == input.WorkOrder && x.BATCH_NO != input.WoBatch && x.STATUS > BIZ_MES_WO_BATCH.STATUSs.Init.GetValue()).Any())
                        {
                            _wo.STATUS = BIZ_MES_WO.STATUSs.Init.GetValue();
                        }
                    }
                }
                else
@@ -312,6 +319,10 @@
                    else
                    {
                        db.Updateable(_woBatch, input.UserId).UpdateColumns(x => new { x.STATUS, x.UPDATE_USER, x.UPDATE_TIME, x.CHANGE_USER, x.CHANGE_TIME }).ExecuteCommand();
                    }
                    if (!_wo.IsNullOrEmpty())
                    {
                        db.Updateable(_wo, input.UserId).UpdateColumns(x => new { x.STATUS, x.UPDATE_USER, x.UPDATE_TIME }).ExecuteCommand();
                    }
                });
                if (!dbTran.IsSuccess)
@@ -711,7 +722,7 @@
                    result.LocaleMsg = new($"条码不存在!");
                    return result;
                }
                var wo = await Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == woSns[0].WORK_ORDER ).IncludesAllFirstLayer().FirstAsync();
                var wo = await Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == woSns[0].WORK_ORDER ).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q._ItemInfos).FirstAsync();
                if (wo == null)
                {
                    result.IsSuccessed = false;
@@ -725,20 +736,12 @@
                    ErpProdInBth= new() { 
                        WORK_ORDER = wo.ORDER_NO,
                        BATCH_NO = woSns[0].BATCH_NO,
                        ITEM_CODE = wo.ITEM_CODE,
                        ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
                        SCAN_QTY = woSns.Count
                    },
                    ProdInBatch = new()
                    {
                        WORK_ORDER = wo.ORDER_NO,
                        SALES_ORDER = wo.SALES_ORDER,
                        BATCH_NO = woSns[0].BATCH_NO,
                        ITEM_CODE = wo.ITEM_CODE,
                        ITEM_NAME = wo.ItemInfo?.ITEM_DESC,
                        PLAN_QTY = wo.PLAN_QTY,
                        SapCode = wo.ItemInfo?.ExtInfo?.SapCode,
                        SCAN_QTY = woSns.Count,
                        STATUS = "N" //Y-已生成,N-未生成,F-失败
                        IS_HANDLED = "N" //Y-已生成,N-未生成,F-失败
                    },
                    InStoreScanInfo = new() { 
                        SN = cartonSn,
@@ -757,5 +760,28 @@
            }
            return result;
        }
        #region 提交前通用方法
        /// <summary>
        /// 提交前检查是否岗位、工单和不良代码
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        public async Task<ApiAction<CheckCodeOutput>> CheckCode(string code)
        {
            var action = new ApiAction<CheckCodeOutput>($"检查条码{code}成功", new CheckCodeOutput());
            try
            {
                action.Data.Position = DbCache.Cache.Position[code];
                action.Data.WorkOrder = await Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == code).FirstAsync();
                action.Data.Defect = DbCache.Cache.Defect[code];
            }
            catch (Exception ex)
            {
                action.CatchExceptionWithLog(ex, $"检查条码{code}异常");
            }
            return action;
        }
        #endregion
    }
}