From f4a748766f25fd7f00b3c082a26c88d5d66d336e Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期六, 25 五月 2024 18:01:35 +0800
Subject: [PATCH] 上料事务

---
 Tiger.Business/MES/Transaction/LoadingMaterial.cs |  197 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 178 insertions(+), 19 deletions(-)

diff --git a/Tiger.Business/MES/Transaction/LoadingMaterial.cs b/Tiger.Business/MES/Transaction/LoadingMaterial.cs
index 48331bf..5a41898 100644
--- a/Tiger.Business/MES/Transaction/LoadingMaterial.cs
+++ b/Tiger.Business/MES/Transaction/LoadingMaterial.cs
@@ -34,8 +34,8 @@
         public string UserCode { get; set; }
         public long UserId { get; set; }
         public string OrgCode { get; set; }
-        public bool his_isComplete { get; set; }
-        public bool isManual { get; set; }
+        public string CurrSmtCode { get; set; }
+        public string CurrSlotNo { get; set; }
         /// <summary>
         /// 姝ラ绫诲瀷
         /// </summary>
@@ -63,6 +63,43 @@
             SN,
         }
 
+        /// <summary>
+        /// 瀹屾垚鐘舵��
+        /// </summary>
+        public enum Statuss
+        {
+            /// <summary>
+            /// 鎵弿鏈哄櫒缂栫爜瀹屾垚
+            /// </summary>
+            [Description("鏈哄櫒缂栫爜瀹屾垚")]
+            SmtCodeOK,
+            /// <summary>
+            /// 鎵弿妲戒綅瀹屾垚
+            /// </summary>
+            [Description("妲戒綅瀹屾垚")]
+            SlotNoOK,
+            /// <summary>
+            /// 鎵弿椋炶揪瀹屾垚
+            /// </summary>
+            [Description("Feeder瀹屾垚")]
+            FeederOK,
+            /// <summary>
+            /// 鎵弿鏂欑洏SN瀹屾垚
+            /// </summary>
+            [Description("鏂欑洏鐮佸畬鎴�")]
+            SnOK,
+            /// <summary>
+            /// 褰撳墠鏈哄櫒瀹屾垚
+            /// </summary>
+            [Description("褰撳墠鏈哄櫒瀹屾垚")]
+            CurrCompleted,
+            /// <summary>
+            /// 鍏ㄩ儴瀹屾垚
+            /// </summary>
+            [Description("鍏ㄩ儴瀹屾垚")]
+            Completed,
+        }
+
         #endregion Propertys & Variables
 
         #region Functions
@@ -72,9 +109,9 @@
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<ApiAction<ProdReqOutput>> ScanItem(SmtLoadingInput input)
+        public async Task<ApiAction<SmtLoadingReturn>> ScanItem(SmtLoadingInput input)
         {
-            var action = new ApiAction<ProdReqOutput>();
+            var action = new ApiAction<SmtLoadingReturn>();
             try
             {
                 if (input.Code.IsNullOrEmpty())
@@ -84,20 +121,57 @@
                     return action;
                 }
 
+                //01鏍规嵁涓婃枡姝ラ鎵ц鐩稿簲鏂规硶
                 switch (EnumHelper.GetEnum<Step_Types>(input.Step))
                 {
                     case Step_Types.SmtCode:
-                        ExecuteSmtCode();
+                        action = ExecuteSmtCode(input);
                         break;
                     case Step_Types.SlotNo:
-                        ExecuteSlotNo();
+                        action = ExecuteSlotNo(input);
                         break;
                     case Step_Types.Feeder:
-                        ExecuteFeeder();
+                        action = ExecuteFeeder(input);
                         break;
                     case Step_Types.SN:
-                        ExecuteSN();
+                        action = ExecuteSN(input);
                         break;
+                }
+                if (!action.IsSuccessed) { return action; }
+
+                //02淇濆瓨涓婃枡鏁版嵁
+
+                //03鏌ョ湅鏈笂鏂欏垪琛�
+                Biz.SmtTool smtTool = new();
+                var actionSmtTool = await smtTool.GetNotLoadingMaterial(input);
+                if (actionSmtTool.IsSuccessed)
+                {
+                    //甯﹀叆鏈哄櫒缂栫爜鏌ヨ锛屽鏋滄病鏈夋湭涓婃枡鐨勯」锛岃鏄庡綋鍓嶆満鍣ㄦ墍鏈夋Ы浣嶅潎宸插畬鎴愪笂鏂欙紒
+                    if (actionSmtTool.Data.Count == 0)
+                    {
+                        var _input = input.Clone();
+                        _input.machineCode = "";
+                        action.LocaleMsg = Biz.L($"褰撳墠鏈哄櫒鎵�鏈夋Ы浣嶅潎宸插畬鎴愪笂鏂欙紒");
+                        var _actionSmtTool = await smtTool.GetNotLoadingMaterial(_input);
+                        if (_actionSmtTool.IsSuccessed)
+                        {
+                            //涓嶅甫鍏ユ満鍣ㄧ紪鐮佹煡璇紝濡傛灉娌℃湁鏈笂鏂欑殑椤癸紝璇存槑褰撳墠绾垮埆鎵�鏈夋満鍣ㄥ潎宸插畬鎴愪笂鏂欙紒
+                            if (_actionSmtTool.Data.Count == 0)
+                            {
+                                action.LocaleMsg = Biz.L($"褰撳墠绾垮埆鎵�鏈夋満鍣ㄥ潎宸插畬鎴愪笂鏂�");
+                            }
+                        }
+                        else
+                        {
+                            action.IsSuccessed = false;
+                            action.LocaleMsg = Biz.L($"鑾峰彇鏈笂鏂欏垪琛ㄥけ璐ワ紒");
+                        }
+                    }
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"鑾峰彇鏈笂鏂欏垪琛ㄥけ璐ワ紒");
                 }
 
                 //action.Data = new ProdReqOutput()
@@ -120,11 +194,31 @@
             return action;
         }
 
-        private ApiAction ExecuteSmtCode() {
-            var action = new ApiAction();
+        /// <summary>
+        /// 01鎵弿鏈哄櫒缂栫爜鎿嶄綔
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private ApiAction<SmtLoadingReturn> ExecuteSmtCode(SmtLoadingInput input) {
+            var action = new ApiAction<SmtLoadingReturn>();
+            SmtLoadingReturn loadingReturn = new();
             try
             {
-
+                if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == input.Code).Any())
+                {
+                    CurrSmtCode = input.Code;
+                    action.IsSuccessed = true;
+                    action.LocaleMsg = Biz.L($"鏈哄櫒缂栫爜楠岃瘉閫氳繃锛�");
+                    loadingReturn.SmtCode = CurrSmtCode;
+                    loadingReturn.Step = (int)Step_Types.SmtCode;
+                    loadingReturn.Status = (int)Statuss.SmtCodeOK;
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"鏂欑珯琛ㄤ腑涓嶅瓨鍦ㄦ鏈哄櫒缂栫爜锛岃纭鏂欑珯琛ㄦ槸鍚︽纭笂浼狅紒");
+                }
+                action.Data = loadingReturn;
             }
             catch (Exception ex)
             {
@@ -133,12 +227,34 @@
             return action;
         }
 
-        private ApiAction ExecuteSlotNo()
+        /// <summary>
+        /// 02鎵弿妲戒綅鎿嶄綔
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private ApiAction<SmtLoadingReturn> ExecuteSlotNo(SmtLoadingInput input)
         {
-            var action = new ApiAction();
+            var action = new ApiAction<SmtLoadingReturn>();
+            SmtLoadingReturn loadingReturn = new();
             try
             {
-
+                if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.SLOT_NO == input.Code).Any())
+                {
+                    CurrSlotNo = input.Code;
+                    action.IsSuccessed = true;
+                    action.LocaleMsg = Biz.L($"妲戒綅楠岃瘉閫氳繃锛�");
+                    loadingReturn.SmtCode = CurrSmtCode;
+                    loadingReturn.SlotNo = CurrSlotNo;
+                    loadingReturn.Step = (int)Step_Types.SlotNo;
+                    loadingReturn.Status = (int)Statuss.SlotNoOK;
+                    loadingReturn.LoadingCount = Biz.Db.Queryable<SMT_LOADING>().Where(x=> x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.SLOT_NO == input.Code).Count();
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝ゆЫ浣峓{input.Code}]涓嶅瓨鍦ㄦ垨鏂欑珯琛ㄦ湭涓婁紶锛�");
+                }
+                action.Data = loadingReturn;
             }
             catch (Exception ex)
             {
@@ -147,12 +263,50 @@
             return action;
         }
 
-        private ApiAction ExecuteFeeder()
+        /// <summary>
+        /// 03鎵弿椋炶揪鎿嶄綔
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private ApiAction<SmtLoadingReturn> ExecuteFeeder(SmtLoadingInput input)
         {
-            var action = new ApiAction();
+            var action = new ApiAction<SmtLoadingReturn>();
+            SmtLoadingReturn loadingReturn = new();
             try
             {
-
+                var _feeder = Biz.Db.Queryable<SMT_FEEDER>().Where(x => x.FEEDER_CODE == input.Code).First();
+                //妫�鏌ラ杈句繚鍏荤淮鎶ゆ儏鍐�
+                if (_feeder.FEEDER_TYPE.IsNullOrEmpty())
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝ら杈綶{input.Code}]鏈淮鎶ょ被鍨嬩俊鎭紒");
+                    return action;
+                }
+                if (_feeder.FEEDER_TYPE != input.feederType)
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝eeder[{input.Code}]绫诲瀷涓嶄竴鑷达紒瑕佹眰鐨勭被鍨嬶細[{_feeder.FEEDER_TYPE}]锛涘綋鍓岶eeder鐨勭被鍨嬶細[{input.feederType}]");
+                    return action;
+                }
+                if (_feeder.USED_COUNT >= _feeder.MAX_COUNT)
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝eeder[{input.Code}]宸茶揪鏈�澶т娇鐢ㄦ鏁帮紝璇蜂繚鍏诲悗鍐嶄娇鐢紒");
+                    return action;
+                }
+                var _loading = Biz.Db.Queryable<SMT_LOADING>().Where(x => x.FEEDER_CODE == input.Code).First();
+                if (_loading!=null)
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝eeder[{input.Code}]宸茶鍗犵敤锛佺嚎鍒細[{_loading.LINE_CODE}]锛屽伐鍗曪細[{_loading.WORK_ORDER}]锛屾満鍣細[{_loading.SMT_CODE}]锛屾Ы浣嶏細[{_loading.SLOT_NO}]");
+                    return action;
+                }
+                action.LocaleMsg = Biz.L($"姝eeder楠岃瘉閫氳繃锛�");
+                loadingReturn.SmtCode = CurrSmtCode;
+                loadingReturn.SlotNo = CurrSlotNo;
+                loadingReturn.Step = (int)Step_Types.Feeder;
+                loadingReturn.Status = (int)Statuss.FeederOK;
+                loadingReturn.LoadingCount = Biz.Db.Queryable<SMT_LOADING>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.FEEDER_CODE == input.Code && x.SLOT_NO == CurrSlotNo).Count();
             }
             catch (Exception ex)
             {
@@ -161,9 +315,14 @@
             return action;
         }
 
-        private ApiAction ExecuteSN()
+        /// <summary>
+        /// 04鎵弿鐗╂枡鏉$爜鎿嶄綔
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        private ApiAction<SmtLoadingReturn> ExecuteSN(SmtLoadingInput input)
         {
-            var action = new ApiAction();
+            var action = new ApiAction<SmtLoadingReturn>();
             try
             {
 

--
Gitblit v1.9.3