服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-11-27 3f364634b79a0f97a550c54f67313dfc0cfd4cb5
Tiger.Business.MES/WorkAction/ThreeInOne.cs
@@ -17,6 +17,7 @@
    {
        #region Propertys & Variables
        #region 固定写法,工序中的必要信息
        public DbClient MainDB { get; set; }
        public bool IsFinished { get; set; } = false;
        public IWorkStep CurStep { get; set; }
        public IPosition CurPosition { get; set; }
@@ -39,6 +40,7 @@
        public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting)
        {
            #region 固定写法,给默认变量赋值
            MainDB = position.MainDB;
            CurStep = curStep;
            CurPosition = position;
            NodeAct = nodeAct;
@@ -46,11 +48,11 @@
            #endregion
            //获取打印模板
            Label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First();
            LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList();
            Label = MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First();
            LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList();
            //获取当前产品在当前客户的关系
            CustInfo = Biz.Db.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First();
            CustInfo = MainDB.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First();
            CurStep.Message = Biz.L("扫描厂内条码或客户条码");
            CurStep.Status = StepStatus.Normal;
@@ -100,7 +102,7 @@
            }
            var wipSn = CurPosition.CurWipSNs.First();
            FlowCSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First();
            FlowCSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First();
            //找不到生产记录,认为扫描错误
            if (FlowCSN.IsNullOrEmpty())
            {
@@ -264,11 +266,20 @@
            var action = new ApiAction<SubmitOutput>(new SubmitOutput());
            //查询是否存在已导入的客户条码
            CustCSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.CUST_SN == input.Data).First();
            CustCSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.CUST_SN == input.Data).First();
            var isOK = true;
            //客户条码扫到厂内条码
            if (isOK && FlowCSN.FLOW_SN == input.Data)
            {
                CurStep.SetStatusMessage(StepStatus.Error, Biz.L("请扫描正确的客户标签"));
                action.Data.ShortMsg = new("请扫描正确的客户标签", ShortMessage.Types.Failed);
                action.IsSuccessed = isOK = false;
                //action.LocaleMsg = new($"厂内条码[{0}]绑定客户条码[{1}]失败,厂内条码与客户条码不能一样,请扫描正确的客户标签");
                action.LocaleMsg = new("MES.WorkAction.ThreeInOne.TheSameSN", FlowCSN.FLOW_SN, input.Data);
            }
            //客户条码已绑定其他厂内条码
            if (!CustCSN.IsNullOrEmpty() && !CustCSN.FLOW_SN.IsNullOrEmpty() && CustCSN.FLOW_SN != FlowCSN.FLOW_SN)
            if (isOK && !CustCSN.IsNullOrEmpty() && !CustCSN.FLOW_SN.IsNullOrEmpty() && CustCSN.FLOW_SN != FlowCSN.FLOW_SN)
            {
                CurStep.SetStatusMessage(StepStatus.Error, Biz.L("请扫描正确的客户标签"));
                action.Data.ShortMsg = new("请扫描正确的客户标签", ShortMessage.Types.Failed);
@@ -277,7 +288,7 @@
                action.LocaleMsg = new("MES.WorkAction.ThreeInOne.BindingOtherSN", CurPosition.CurWipSNs.First().SN, CustCSN.CUST_SN, CustCSN.FLOW_SN);
            }
            //客户条码不属于当前工单的客户
            if (!CustCSN.IsNullOrEmpty() && CustCSN.CUST_CODE.IsNullOrEmpty(CurPosition.WorkBatch.WO.CUST_CODE) != CurPosition.WorkBatch.WO.CUST_CODE)
            if (isOK && !CustCSN.IsNullOrEmpty() && CustCSN.CUST_CODE.IsNullOrEmpty(CurPosition.WorkBatch.WO.CUST_CODE) != CurPosition.WorkBatch.WO.CUST_CODE)
            {
                CurStep.SetStatusMessage(StepStatus.Error, Biz.L("请扫描正确的客户标签"));
                action.Data.ShortMsg = new("请扫描正确的客户标签", ShortMessage.Types.Failed);
@@ -286,7 +297,7 @@
                action.LocaleMsg = new("MES.WorkAction.ThreeInOne.NotSameCustomer", CustCSN.CUST_SN, CustCSN.CUST_CODE, CurPosition.WorkBatch.WO.CUST_CODE);
            }
            //验证产品客户标签条码规则
            if (CustInfo.IsNullOrEmpty() && !CustInfo.RULE_CODE.IsNullOrEmpty() && !Biz.CodeRule[CustInfo.RULE_CODE].IsNullOrEmpty())
            if (isOK && !CustInfo.IsNullOrEmpty() && !CustInfo.RULE_CODE.IsNullOrEmpty() && !Biz.CodeRule[CustInfo.RULE_CODE].IsNullOrEmpty())
            {
                var result = Biz.CodeRule[CustInfo.RULE_CODE].Verify(CustCSN.CUST_SN);
                if (!result.IsSuccessed)
@@ -378,8 +389,8 @@
                    PRD_CODE = wipSn.PRD_CODE,
                    ACT_TYPE = NodeAct.ACT_TYPE,
                    ACT_SN = wipSn.SN,
                    ACT_VALUE_1 = Label.LABEL_CODE,
                    ACT_VALUE_2 = Label.Variables.ToJson(),
                    ACT_VALUE_1 = Label?.LABEL_CODE,
                    ACT_VALUE_2 = Label?.Variables.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"厂内条码[{FlowCSN.FLOW_SN}]绑定客户条码[{FlowCSN.CUST_SN}]成功",