From ba51d2ed8f5d96c7d86da68ef2c966d9c17f299f Mon Sep 17 00:00:00 2001
From: 杨张扬 <634643841@qq.com>
Date: 星期四, 15 五月 2025 15:25:51 +0800
Subject: [PATCH] 双钱-AGV软件文件变更

---
 Program.cs                    |    2 
 models/TN_CG_Detail.cs        |    4 
 wms/LocationHelper.cs         |    3 
 core/Monitor.cs               |  234 ++++++++++----
 wms/WMSHelper.cs              |   20 
 models/TN_YearProDetail.cs    |    4 
 api/ApiModel.cs               |    9 
 models/TN_DayProDetail.cs     |    4 
 core/WCSCore.cs               |   10 
 models/TN_MonthProDetail.cs   |    4 
 models/TN_Component_Detail.cs |   26 
 wms/SpecHelper.cs             |   98 +++--
 models/TN_RemeltDetail.cs     |   22 
 api/ApiHelper.cs              |  372 ++++++++++++++++++----
 models/TN_InventoryM.cs       |   20 
 models/TN_EquipProDetail.cs   |   30 
 api/MoboxController.cs        |   52 ++-
 models/TN_WeekProDetail.cs    |    4 
 models/TN_SurplusDetail.cs    |   24 
 19 files changed, 651 insertions(+), 291 deletions(-)

diff --git a/Program.cs b/Program.cs
index d006239..572516f 100644
--- a/Program.cs
+++ b/Program.cs
@@ -143,7 +143,7 @@
 
                 tasks.Add(GetTask(Monitor.SynchronizationEquipPro));//鍚屾 TN_EquipProDetail  TN_InventoryM
 
-                tasks.Add(GetTask(Monitor.FullOutTime));//婊℃墭杩囨湡鍑哄簱 婊℃墭杩囨湡鍥炲簱锛屾弧鎵樿繃鏈熷洖鐐�+                tasks.Add(GetTask(Monitor.FullOutTime));//婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐� 
                 Task.WaitAll(tasks.ToArray());
             }
diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs
index 41acf7d..a8b37e2 100644
--- a/api/ApiHelper.cs
+++ b/api/ApiHelper.cs
@@ -116,13 +116,13 @@
         }
 
         /// <summary>
-        /// PDA婊℃墭鎶芥鍒ゆ柇
+        /// PDA婊℃墭澶嶆鍒ゆ柇
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
         internal static SimpleResult PDAFullCheckIn(PDAFullCheckInfo model)
         {
-            LogHelper.Info("瑙﹀彂API锛歅DA婊℃墭鎶芥鍒ゆ柇" + JsonConvert.SerializeObject(model), "API");
+            LogHelper.Info("瑙﹀彂API锛歅DA婊℃墭澶嶆鍒ゆ柇" + JsonConvert.SerializeObject(model), "API");
             var db = new SqlHelper<object>().GetInstance();
             var result = new SimpleResult();//杩斿洖缁撴灉
             try
@@ -150,7 +150,7 @@
                 if (startLoc == null)
                 {
                     result.resultCode = 3;
-                    result.resultMsg = $"璧风偣璐т綅{locCnt.S_LOC_CODE}鏈В閿侊紝鎴栬�涓嶅睘浜庢娊妫�尯";
+                    result.resultMsg = $"璧风偣璐т綅{locCnt.S_LOC_CODE}鏈В閿侊紝鎴栬�涓嶅睘浜庡妫�尯";
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
@@ -164,6 +164,14 @@
                             Where(o => o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                             OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣�                 }
+                else if (model.cgState == 4)//鎶�湳鍚堟牸鍥炲簱
+                {
+                    cG_Detail.N_ITEM_STATE = 4;
+                    cG_Detail.S_ITEM_STATE = "鎶�湳鍚堟牸";
+                    endLoc = db.Queryable<TN_Location>().
+                            Where(o => o.S_AREA_CODE == Settings.Areas[8] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
+                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣�+                }
                 else if (model.cgState == 2)//涓嶅悎鏍煎洖鐐�                 {
                     cG_Detail.N_ITEM_STATE = 2;
@@ -172,10 +180,18 @@
                             Where(o => o.S_AREA_CODE == Settings.Areas[8] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
                             OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣�                 }
+                else if (model.cgState == 5)//娣峰悎涔熷洖搴擄紝閫氳繃鐐瑰鐐瑰啀鍙戠嚎杈�+                {
+                    cG_Detail.N_ITEM_STATE = 5;
+                    cG_Detail.S_ITEM_STATE = "娣峰悎";
+                    endLoc = db.Queryable<TN_Location>().
+                            Where(o => o.S_AREA_CODE == Settings.Areas[2] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y" && o.N_CURRENT_NUM == 0).
+                            OrderBy(o => o.T_MODIFY, OrderByType.Asc).First();//鏌ヨ鍚堥�鐨勭粓鐐硅揣浣�+                }
                 else
                 {
                     result.resultCode = 6;
-                    result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�鎴�锛屽嵆鍙傛暟cgState = 2 鎴�= 0锛屽鏋滀负鍏朵粬鍊硷紝鍒欎笉澶勭悊锛�鍚堟牸锛�涓嶅悎鏍�;
+                    result.resultMsg = $"鐗╂枡鐘舵�鍙兘涓�銆�銆�銆�锛屽鏋滀负鍏朵粬鍊硷紝鍒欎笉澶勭悊锛�鍚堟牸锛�涓嶅悎鏍硷紝4鎶�湳鍚堟牸锛�娣峰悎";
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
@@ -188,7 +204,9 @@
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
-                var typeName = (model.cgState == 0) ? "浜哄伐鎶芥鍥炲簱" : "浜哄伐鎶芥鍥炵倝";
+
+                var typeName = (model.cgState == 0) ? "浜哄伐澶嶆鍥炲簱" : "浜哄伐澶嶆鍥炵倝";
+
                 //鍒涘缓浜哄伐鎷嗙洏鍑哄簱浠诲姟
                 if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, typeName, 3, locCnt.S_CNTR_CODE,out string taskNo,cG_Detail.S_SPE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�                 {
@@ -209,17 +227,36 @@
                         {
                             var target = new TN_RemeltDetail()
                             {
-                                CntCode = locCnt.S_CNTR_CODE,
-                                StartLoc = startLoc.S_CODE,
-                                LoginName = model.staff,
-                                ItemCode = cG_Detail.S_ITEM_CODE,
-                                Spec = cG_Detail.S_SPE,
-                                CarCode = cG_Detail.S_CAR_CODE,
-                                Weight = cG_Detail.F_QTY,
-                                RemeltTime = DateTime.Now,
-                                TaskNo = taskNo
+                                CNTCODE = locCnt.S_CNTR_CODE,
+                                STARTLOC = startLoc.S_CODE,
+                                LOGINNAME = model.staff,
+                                ITEMCODE = cG_Detail.S_ITEM_CODE,
+                                SPEC = cG_Detail.S_SPE,
+                                CARCODE = cG_Detail.S_CAR_CODE,
+                                WEIGHT = cG_Detail.F_QTY,
+                                REMELTTIME = DateTime.Now,
+                                TASKNO = taskNo
                             };
                             SpecHelper.InsertRemeltDetail(target);
+                        }
+                    });
+
+                    Task task27 = Task.Run(() =>
+                    {
+                        if (model.cgState != 2)
+                        {
+                            var target = new TN_InventoryM()
+                            {
+                                S_ID = cG_Detail.S_ID,
+                                RFID = cG_Detail.S_CNTR_CODE,
+                                SPEC = cG_Detail.S_SPE,
+                                WEIGHT = cG_Detail.F_QTY,
+                                ITEMSTATE = cG_Detail.S_ITEM_STATE,
+                                ITEMCODE = cG_Detail.S_ITEM_CODE,
+                                LOGINNAME = model.staff,
+                                SHIFT = "None",
+                            };
+                            SpecHelper.InsertInventoryM(target);
                         }
                     });
 
@@ -234,7 +271,6 @@
                     LogHelper.Info(result.resultMsg);
                     return result;
                 }
-
             }
             catch (Exception ex)
             {
@@ -365,18 +401,34 @@
                             WMSHelper.InsertOpInfo(model.staff, "浜哄伐娆″搧鍥炵倝", locCnt.S_CNTR_CODE);
                         });
 
+                        Task task2 = Task.Run(() =>
+                        {
+                            var target = new TN_RemeltDetail()
+                            {
+                                TASKNO = task1.S_CODE,
+                                CNTCODE = model.rfId,
+                                STARTLOC = model.startLoc,
+                                LOGINNAME = model.staff,
+                                ITEMCODE = cgInfo.S_ITEM_CODE,
+                                SPEC = cgInfo.S_SPE,
+                                CARCODE = cgInfo.S_CAR_CODE,
+                                WEIGHT = cgInfo.F_QTY,
+                                REMELTTIME = DateTime.Now
+                            };
+                            SpecHelper.InsertRemeltDetail(target);
+                        });
 
                         tran.CommitTran();
                         result.resultCode = 0;
                         result.resultMsg = "鎴愬姛";
-                        LogHelper.Info($"鐢熸垚婊℃墭涓嬬嚎鍏ュ簱浠诲姟鎴愬姛锛屽鍣細{model.rfId}锛岃捣鐐癸細{model.startLoc}锛岀粓鐐癸細{endLoc.S_CODE}");
+                        LogHelper.Info($"鐢熸垚浜哄伐娆″搧鍥炵倝浠诲姟鎴愬姛锛屽鍣細{model.rfId}锛岃捣鐐癸細{model.startLoc}锛岀粓鐐癸細{endLoc.S_CODE}");
                         return result;
                     }
                     else
                     {
                         tran.RollbackTran();
                         result.resultCode = 7;
-                        result.resultMsg = $"鐢熸垚婊℃墭涓嬬嚎鍏ュ簱浠诲姟澶辫触锛屽鍣細{model.rfId}锛岃捣鐐癸細{model.startLoc}锛岀粓鐐癸細{endLoc.S_CODE}";
+                        result.resultMsg = $"鐢熸垚浜哄伐娆″搧鍥炵倝浠诲姟澶辫触锛屽鍣細{model.rfId}锛岃捣鐐癸細{model.startLoc}锛岀粓鐐癸細{endLoc.S_CODE}";
                         LogHelper.Info(result.resultMsg);
                         return result;
                     }
@@ -386,7 +438,7 @@
             catch(Exception ex)
             {
                 result.resultCode = -1;
-                result.resultMsg = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
+                result.resultMsg = $"鐢熸垚浜哄伐娆″搧鍥炵倝浠诲姟澶辫触锛屽彂鐢熶簡寮傚父锛歿ex.Message}";
                 LogHelper.Info(result.resultMsg);
                 return result;
             }
@@ -722,16 +774,16 @@
                                                     var target = new TN_EquipProDetail()
                                                     {
                                                         S_ID = tN_CG_Detail.S_ID,
-                                                        TaskType = "PDA婊℃墭涓嬬嚎鍏ュ簱",
+                                                        TASKTYPE = "PDA婊℃墭涓嬬嚎鍏ュ簱",
                                                         RFID = model.RfId,
-                                                        Spec = woInfo.S_ITEM_SPEC,
-                                                        CarCode = model.CarCode,
-                                                        Weight = modelWeight,
-                                                        ItemState = "寰呮",
-                                                        ItemCode = woInfo.S_ITEM_CODE,
-                                                        LoginName = model.staff,
-                                                        Shift = "None",
-                                                        StartLoc = startLoc.S_CODE,
+                                                        SPEC = woInfo.S_ITEM_SPEC,
+                                                        CARCODE = model.CarCode,
+                                                        WEIGHT = modelWeight,
+                                                        ITEMSTATE = "寰呮",
+                                                        ITEMCODE = woInfo.S_ITEM_CODE,
+                                                        LOGINNAME = model.staff,
+                                                        SHIFT = "None",
+                                                        STARTLOC = startLoc.S_CODE,
                                                     };
                                                     SpecHelper.InsertEquipProDetail(target);
                                                 });
@@ -742,12 +794,12 @@
                                                     {
                                                         S_ID = tN_CG_Detail.S_ID,
                                                         RFID = model.RfId,
-                                                        Spec = woInfo.S_ITEM_SPEC,
-                                                        Weight = modelWeight,
-                                                        ItemState = "寰呮",
-                                                        ItemCode = woInfo.S_ITEM_CODE,
-                                                        LoginName = model.staff,
-                                                        Shift = "None",
+                                                        SPEC = woInfo.S_ITEM_SPEC,
+                                                        WEIGHT = modelWeight,
+                                                        ITEMSTATE = "寰呮",
+                                                        ITEMCODE = woInfo.S_ITEM_CODE,
+                                                        LOGINNAME = model.staff,
+                                                        SHIFT = "None",
                                                     };
                                                     SpecHelper.InsertInventoryM(target);
                                                 });
@@ -923,16 +975,28 @@
 
                 var waitTime = SpecHelper.GetWaitTime(model.Spe);
 
-                //鏌ヨ绗﹀悎瑙勬牸鐨勭墿鏂欐墍鍦ㄧ殑鏈攣瀹氬凡鍚敤鎸囧畾璐у尯鐨勮揣浣嶏紝璧风偣
+                //浼樺厛鎶�湳鍚堟牸
                 var startLoc = db.Queryable<TN_Location>().
                     LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE).
                     LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE).
                     Where((o, i, s) => o.N_CURRENT_NUM > 0 && o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y"
                     && (s.S_ITEM_SPEC == model.Spe || s.S_SPE == model.Spe)//鎸囧畾瑙勬牸
-                    && s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "鍚堟牸" //鍚堟牸鐨�-                    && s.T_MODIFY.AddMinutes(waitTime) <= System.DateTime.Now).//鏍规嵁瑙勬牸鐨勪笉鍚岄潤缃笉鍚屽垎閽熸墠鑳藉嚭搴�-                    OrderBy((o, i, s) => s.T_CREATE, OrderByType.Asc).//鍏堣繘鍏堝嚭
+                    && s.N_ITEM_STATE == 4 && s.S_ITEM_STATE == "鎶�湳鍚堟牸"). //鎶�湳鍚堟牸
                     First();//绛涢�鏈夊鍣ㄨ揣浣嶅叧绯昏〃淇℃伅锛岀瓫閫夋湁瀹瑰櫒璐у搧鏄庣粏琛ㄤ俊鎭�+
+                if (startLoc == null)//鍏舵鍚堟牸
+                {
+                    //鏌ヨ绗﹀悎瑙勬牸鐨勭墿鏂欐墍鍦ㄧ殑鏈攣瀹氬凡鍚敤鎸囧畾璐у尯鐨勮揣浣嶏紝璧风偣
+                    startLoc = db.Queryable<TN_Location>().
+                       LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE).
+                       LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE).
+                       Where((o, i, s) => o.N_CURRENT_NUM > 0 && o.S_AREA_CODE == Settings.Areas[1] && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃� && o.C_ENABLE == "Y"
+                       && (s.S_ITEM_SPEC == model.Spe || s.S_SPE == model.Spe)//鎸囧畾瑙勬牸
+                       && s.N_ITEM_STATE == 0 && s.S_ITEM_STATE == "鍚堟牸" //鍚堟牸鐨�+                       && s.T_MODIFY.AddMinutes(waitTime) <= System.DateTime.Now).//鏍规嵁瑙勬牸鐨勪笉鍚岄潤缃笉鍚屽垎閽熸墠鑳藉嚭搴�+                       OrderBy((o, i, s) => s.T_CREATE, OrderByType.Asc).//鍏堣繘鍏堝嚭
+                       First();//绛涢�鏈夊鍣ㄨ揣浣嶅叧绯昏〃淇℃伅锛岀瓫閫夋湁瀹瑰櫒璐у搧鏄庣粏琛ㄤ俊鎭�+                }
 
                 if (startLoc == null)
                 {
@@ -970,15 +1034,21 @@
                     {
                         var target = new TN_Component_Detail()
                         {
-                           ItemCode = cgInfo.S_ITEM_CODE,
-                           CntrCode = container,
-                           EndLoc = endLoc.S_CODE,
-                           Staff = model.staff,
-                           Weight = cgInfo.F_QTY,
-                           Spec = model.Spe,
-                           TaskNo = taskNo,
+                           ITEMCODE = cgInfo.S_ITEM_CODE,
+                           CNTRCODE = container,
+                           CARCODE = cgInfo.S_CAR_CODE,
+                           ENDLOC = endLoc.S_CODE,
+                           STAFF = model.staff,
+                           WEIGHT = cgInfo.F_QTY,
+                           SPEC = model.Spe,
+                           TASKNO = taskNo,
                         };
                         SpecHelper.InsertComponentDetail(target);
+                    });
+
+                    Task task27 = Task.Run(() =>
+                    {
+                        SpecHelper.DeleteInventoryM(cgInfo.S_ID);
                     });
                 }
                 else
@@ -1215,17 +1285,33 @@
                     {
                         var target = new TN_SurplusDetail()
                         {
-                            CntCode = model.cntID,
-                            StartLoc = startLoc_New.S_CODE,
-                            LoginName = model.staff,
-                            ItemCode = cG_Detail.S_ITEM_CODE,
-                            Spec = cG_Detail.S_SPE,
-                            CarCode = cG_Detail.S_CAR_CODE,
-                            Weight = cG_Detail.F_QTY,
-                            RemeltTime = DateTime.Now,
-                            TaskNo = taksNo
+                            CNTCODE = model.cntID,
+                            STARTLOC = startLoc_New.S_CODE,
+                            LOGINNAME = model.staff,
+                            ITEMCODE = cG_Detail.S_ITEM_CODE,
+                            SPEC = cG_Detail.S_SPE,
+                            CARCODE = cG_Detail.S_CAR_CODE,
+                            WEIGHT = cG_Detail.F_QTY,
+                            REMELTTIME = DateTime.Now,
+                            TASKNO = taksNo
                         };
                         SpecHelper.InsertSurplusDetail(target);
+                    });
+
+                    Task task27 = Task.Run(() =>
+                    {
+                        var target = new TN_InventoryM()
+                        {
+                            S_ID = cG_Detail.S_ID,
+                            RFID = cG_Detail.S_CNTR_CODE,
+                            SPEC = cG_Detail.S_SPE,
+                            WEIGHT = cG_Detail.F_QTY,
+                            ITEMSTATE = cG_Detail.S_ITEM_STATE,
+                            ITEMCODE = cG_Detail.S_ITEM_CODE,
+                            LOGINNAME = model.staff,
+                            SHIFT = "None",
+                        };
+                        SpecHelper.InsertInventoryM(target);
                     });
                 }
                 else
@@ -1432,7 +1518,7 @@
                 var locCntrRel_New1 = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == model.new_CntIds);
                 if (locCntrRel_New1 != null)
                 {
-                    LocationHelper.ErrorLocCntReset(new ErrorLocCntResetInfo() { cntID = model.new_CntIds ,reqCode=2});
+                    LocationHelper.PdaUnBind(new PdaUnBindInfo() { cntID = model.new_CntIds ,reqCode=1});
                     result.resultCode = 6;
                     result.resultMsg = $"鎷嗗垎鍚庣殑鏂版墭鐩樺瓨鍦ㄦ畫鐣欑殑璐т綅瀹瑰櫒鍏崇郴琛紝宸茶В缁戦噸缃紝瀹瑰櫒鍙穥model.new_CntIds}锛岃揣浣峽locCntrRel_New1.S_LOC_CODE}";
                     LogHelper.Info(result.resultMsg);
@@ -1441,7 +1527,7 @@
                 var locCntrRel_Old1 = db.Queryable<TN_Loc_Container>().First(a => a.S_CNTR_CODE == model.old_CntId);
                 if (locCntrRel_Old1 != null)
                 {
-                    LocationHelper.ErrorLocCntReset(new ErrorLocCntResetInfo() { cntID = model.old_CntId, reqCode = 2 });
+                    LocationHelper.PdaUnBind(new PdaUnBindInfo() { cntID = model.old_CntId, reqCode = 1 });
                     result.resultCode = 6;
                     result.resultMsg = $"琚媶鐨勬棫鎵樼洏瀛樺湪娈嬬暀鐨勮揣浣嶅鍣ㄥ叧绯昏〃锛屽凡瑙g粦閲嶇疆锛屽鍣ㄥ彿{model.old_CntId}锛岃揣浣峽locCntrRel_Old1.S_LOC_CODE}";
                     LogHelper.Info(result.resultMsg);
@@ -1599,15 +1685,15 @@
                                 {
                                     var target = new TN_RemeltDetail()
                                     {
-                                        TaskNo = oldTaskCreate.taskNo,
-                                        CntCode = cG_old_Detail.S_CNTR_CODE,
-                                        StartLoc = startLoc_Old.S_CODE,
-                                        LoginName = model.staff,
-                                        ItemCode = cG_old_Detail.S_ITEM_CODE,
-                                        Spec = cG_old_Detail.S_SPE,
-                                        CarCode = cG_old_Detail.S_CAR_CODE,
-                                        Weight = cG_old_Detail.F_QTY,
-                                        RemeltTime = DateTime.Now
+                                        TASKNO = oldTaskCreate.taskNo,
+                                        CNTCODE = cG_old_Detail.S_CNTR_CODE,
+                                        STARTLOC = startLoc_Old.S_CODE,
+                                        LOGINNAME = model.staff,
+                                        ITEMCODE = cG_old_Detail.S_ITEM_CODE,
+                                        SPEC = cG_old_Detail.S_SPE,
+                                        CARCODE = cG_old_Detail.S_CAR_CODE,
+                                        WEIGHT = cG_old_Detail.F_QTY,
+                                        REMELTTIME = DateTime.Now
                                     };
                                     SpecHelper.InsertRemeltDetail(target);
                                 }
@@ -1615,17 +1701,51 @@
                                 {
                                     var target = new TN_RemeltDetail()
                                     {
-                                        TaskNo = newTaskCreate.taskNo,
-                                        CntCode = cG_new_Detail_Ins.S_CNTR_CODE,
-                                        StartLoc = startLoc_New.S_CODE,
-                                        LoginName = model.staff,
-                                        ItemCode = cG_new_Detail_Ins.S_ITEM_CODE,
-                                        Spec = cG_new_Detail_Ins.S_SPE,
-                                        CarCode = cG_new_Detail_Ins.S_CAR_CODE,
-                                        Weight = cG_new_Detail_Ins.F_QTY,
-                                        RemeltTime = DateTime.Now
+                                        TASKNO = newTaskCreate.taskNo,
+                                        CNTCODE = cG_new_Detail_Ins.S_CNTR_CODE,
+                                        STARTLOC = startLoc_New.S_CODE,
+                                        LOGINNAME = model.staff,
+                                        ITEMCODE = cG_new_Detail_Ins.S_ITEM_CODE,
+                                        SPEC = cG_new_Detail_Ins.S_SPE,
+                                        CARCODE = cG_new_Detail_Ins.S_CAR_CODE,
+                                        WEIGHT = cG_new_Detail_Ins.F_QTY,
+                                        REMELTTIME = DateTime.Now
                                     };
                                     SpecHelper.InsertRemeltDetail(target);
+                                }
+                            });
+
+                            Task task27 = Task.Run(() =>
+                            {
+                                if (model.old_IsOK == 1)
+                                {
+                                    var target = new TN_InventoryM()
+                                    {
+                                        S_ID = cG_old_Detail.S_ID,
+                                        RFID = cG_old_Detail.S_CNTR_CODE,
+                                        SPEC = cG_old_Detail.S_SPE,
+                                        WEIGHT = cG_old_Detail.F_QTY,
+                                        ITEMSTATE = cG_old_Detail.S_ITEM_STATE,
+                                        ITEMCODE = cG_old_Detail.S_ITEM_CODE,
+                                        LOGINNAME = model.staff,
+                                        SHIFT = "None",
+                                    };
+                                    SpecHelper.InsertInventoryM(target);
+                                }
+                                if (model.new_IsOK == 1)
+                                {
+                                    var target = new TN_InventoryM()
+                                    {
+                                        S_ID = cG_new_Detail_Ins.S_ID,
+                                        RFID = cG_new_Detail_Ins.S_CNTR_CODE,
+                                        SPEC = cG_new_Detail_Ins.S_SPE,
+                                        WEIGHT = cG_new_Detail_Ins.F_QTY,
+                                        ITEMSTATE = cG_new_Detail_Ins.S_ITEM_STATE,
+                                        ITEMCODE = cG_new_Detail_Ins.S_ITEM_CODE,
+                                        LOGINNAME = model.staff,
+                                        SHIFT = "None",
+                                    };
+                                    SpecHelper.InsertInventoryM(target);
                                 }
                             });
                         }
@@ -1658,5 +1778,111 @@
 
             return result;
         }
+
+
+        /// <summary>
+        /// 浜哄伐鍒涘缓鐐瑰埌鐐逛换鍔�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        internal static SimpleResult CreateP2PTask(CreateP2PTaskInfo model)
+        {
+            LogHelper.Info("瑙﹀彂API锛氫汉宸ュ垱寤虹偣鍒扮偣浠诲姟" + JsonConvert.SerializeObject(model), "API");
+
+            var result = new SimpleResult();
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc);
+                
+                if(!(startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == "鏃�))
+                {
+                    result.resultCode = 1;
+                    result.resultMsg = $"璧峰浣嶇疆{model.startLoc}涓嶆弧瓒虫潯浠讹細startLoc != null && startLoc.N_CURRENT_NUM > 0 && startLoc.N_LOCK_STATE == 0 && startLoc.S_LOCK_STATE == 鏃�;
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc);
+
+                if (!(endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0 && endLoc.S_LOCK_STATE == "鏃�))
+                {
+                    result.resultCode = 2;
+                    result.resultMsg = $"缁堢偣浣嶇疆{model.endLoc}涓嶆弧瓒虫潯浠讹細endLoc != null && endLoc.N_CURRENT_NUM == 0 && endLoc.N_LOCK_STATE == 0 && endLoc.S_LOCK_STATE == 鏃�;
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                var startLocCnt = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc);
+                
+                if (startLocCnt == null)
+                {
+                    result.resultCode = 3;
+                    result.resultMsg = $"璧峰浣嶇疆{model.startLoc}鏈粦瀹氬鍣�;
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+                //鍒涘缓鐐瑰鐐逛换鍔�+                if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "鐐瑰鐐�, 3, startLocCnt.S_CNTR_CODE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+                {
+                    LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
+                    LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+                    LogHelper.Info($"鐢熸垚鐐瑰鐐逛换鍔℃垚鍔燂紝瀹瑰櫒鍙穥startLocCnt.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}");
+
+                    Task task1 = Task.Run(() =>
+                    {
+                        WMSHelper.InsertOpInfo(model.staff, "鐐瑰鐐�, startLocCnt.S_CNTR_CODE);
+                    });
+
+                    var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == startLocCnt.S_CNTR_CODE);
+                    Task task27 = Task.Run(() =>
+                    {
+                        if (endLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null)
+                        {
+                            var target = new TN_InventoryM()
+                            {
+                                S_ID = cginfo.S_ID,
+                                RFID = cginfo.S_CNTR_CODE,
+                                SPEC = cginfo.S_SPE,
+                                WEIGHT = cginfo.F_QTY,
+                                ITEMSTATE = cginfo.S_ITEM_STATE,
+                                ITEMCODE = cginfo.S_ITEM_CODE,
+                                LOGINNAME = model.staff,
+                                SHIFT = "None",
+                            };
+                            SpecHelper.InsertInventoryM(target);
+                        }
+                    });
+                    Task task26 = Task.Run(() =>
+                    {
+                        if (startLoc.S_AREA_CODE == Settings.Areas[2] && cginfo != null)
+                        {
+                            SpecHelper.DeleteInventoryM(cginfo.S_ID);
+                        }
+                    });
+
+                    result.resultCode = 0;
+                    result.resultMsg =  "鎴愬姛";
+                    LogHelper.Info($"鐢熸垚鐐瑰鐐瑰け璐ワ紝瀹瑰櫒鍙穥 startLocCnt.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}");
+                    return result;
+                }
+                else
+                {
+                    result.resultCode = 9;
+                    result.resultMsg = $"鐢熸垚鐐瑰鐐瑰け璐ワ紝瀹瑰櫒鍙穥 startLocCnt.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}";
+                    LogHelper.Info(result.resultMsg);
+                    return result;
+                }
+
+            }
+            catch (Exception ex)
+            {
+                result.resultCode = -1;
+                result.resultMsg = $"浜哄伐鍒涘缓鐐瑰埌鐐逛换鍔★紝鍙戠敓浜嗗紓甯革紝{ex.Message}";
+                LogHelper.Error(result.resultMsg, ex);
+                return result;
+            }
+        }
     }
 }
diff --git a/api/ApiModel.cs b/api/ApiModel.cs
index 6150bbc..cab31b1 100644
--- a/api/ApiModel.cs
+++ b/api/ApiModel.cs
@@ -435,7 +435,7 @@
             public int new_IsOK { get; set; }//鏂板鍣↖D鐨勮揣鍝佺殑0鍚堟牸1涓嶅悎鏍硷紵
             public string staff { get; set; } = "None";//鎿嶄綔浜�         }
-        
+
         public class UpCgDetailModel
         {
             public string cntID { get; set; }//瀹瑰櫒ID
@@ -444,5 +444,12 @@
 
             public string staff { get; set; } = "None";//鎿嶄綔浜�         }
+
+        public class CreateP2PTaskInfo
+        {
+            public string startLoc { get; set; }//璧风偣
+            public string endLoc { get; set; }//缁堢偣
+            public string staff { get; set; } = "None";//鎿嶄綔浜�+        }
     }
 }
diff --git a/api/MoboxController.cs b/api/MoboxController.cs
index 8bcbe5c..b163687 100644
--- a/api/MoboxController.cs
+++ b/api/MoboxController.cs
@@ -48,12 +48,12 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("UpCgDetailModel")]
-        public SimpleResult UpCgDetailModel(UpCgDetailModel model)
-        {
-            return ApiHelper.UpCgDetailModel(model);
-        }
+        //[HttpPost]
+        //[Route("UpCgDetailModel")]
+        //public SimpleResult UpCgDetailModel(UpCgDetailModel model)
+        //{
+        //    return ApiHelper.UpCgDetailModel(model);
+        //}
 
         /// <summary>
         /// 婊℃墭鍑哄簱涓婄嚎
@@ -120,24 +120,26 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("EmptyUnBind")]
-        public SimpleResult EmptyUnBind(EmptyUnBindInfo model)
-        {
-            return LocationHelper.EmptyUnBind(model);
-        }
+        //[HttpPost]
+        //[Route("EmptyUnBind")]
+        //public SimpleResult EmptyUnBind(EmptyUnBindInfo model)
+        //{
+        //    return LocationHelper.EmptyUnBind(model);
+        //}
 
         /// <summary>
         /// 浜哄伐鎵嬪姩PDA瑙g粦锛氬垹闄よ揣浣�瀹瑰櫒/璐у搧涓夋柟淇℃伅锛�=瑙g粦璐т綅涓庡鍣紝2=瑙g粦瀹瑰櫒涓庤揣鍝�         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        [HttpPost]
-        [Route("PdaUnBind")]
-        public SimpleResult PdaUnBind(PdaUnBindInfo model)
-        {
-            return LocationHelper.PdaUnBind(model);
-        }
+        //[HttpPost]
+        //[Route("PdaUnBind")]
+        //public SimpleResult PdaUnBind(PdaUnBindInfo model)
+        //{
+        //    return LocationHelper.PdaUnBind(model);
+        //}
+
+       
 
         /// <summary>
         /// 浜哄伐鎵嬪姩PDA鍙栨秷浠诲姟锛�=鍙戠粰AGV鍙栨秷浠诲姟
@@ -176,7 +178,7 @@
         //}
 
         /// <summary>
-        /// PDA婊℃墭鎶芥鍒ゆ柇
+        /// PDA婊℃墭澶嶆鍒ゆ柇
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -210,5 +212,17 @@
         {
             return ApiHelper.PDAReturnReset(model);
         }
+
+        /// <summary>
+        /// 浜哄伐鍒涘缓鐐瑰埌鐐逛换鍔�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("CreateP2PTask")]
+        public SimpleResult CreateP2PTask(CreateP2PTaskInfo model)
+        {
+            return ApiHelper.CreateP2PTask(model);
+        }
     }
 }
diff --git a/core/Monitor.cs b/core/Monitor.cs
index 1175125..ed34896 100644
--- a/core/Monitor.cs
+++ b/core/Monitor.cs
@@ -197,16 +197,16 @@
                                                                 var target = new TN_EquipProDetail()
                                                                 {
                                                                     S_ID = tN_CG_Detail.S_ID,
-                                                                    TaskType = "PLC婊℃墭涓嬬嚎鍏ュ簱",
+                                                                    TASKTYPE = "PLC婊℃墭涓嬬嚎鍏ュ簱",
                                                                     RFID = result.RfidData,
-                                                                    Spec = woInfo.S_ITEM_SPEC,
-                                                                    CarCode = modelCI.S_CAR_CODE,
-                                                                    Weight = result.Weight,
-                                                                    ItemState = "寰呮",
-                                                                    ItemCode = woInfo.S_ITEM_CODE,
-                                                                    LoginName = woInfo.S_LINE_NO,
-                                                                    Shift = "None",
-                                                                    StartLoc = startLoc.S_CODE,
+                                                                    SPEC = woInfo.S_ITEM_SPEC,
+                                                                    CARCODE = modelCI.S_CAR_CODE,
+                                                                    WEIGHT = result.Weight,
+                                                                    ITEMSTATE = "寰呮",
+                                                                    ITEMCODE = woInfo.S_ITEM_CODE,
+                                                                    LOGINNAME = woInfo.S_LINE_NO,
+                                                                    SHIFT = "None",
+                                                                    STARTLOC = startLoc.S_CODE,
                                                                 };
                                                                 SpecHelper.InsertEquipProDetail(target);
                                                             });
@@ -217,12 +217,12 @@
                                                                 {
                                                                     S_ID = tN_CG_Detail.S_ID,
                                                                     RFID = result.RfidData,
-                                                                    Spec = woInfo.S_ITEM_SPEC,
-                                                                    Weight = result.Weight,
-                                                                    ItemState = "寰呮",
-                                                                    ItemCode = woInfo.S_ITEM_CODE,
-                                                                    LoginName = woInfo.S_LINE_NO,
-                                                                    Shift = "None",
+                                                                    SPEC = woInfo.S_ITEM_SPEC,
+                                                                    WEIGHT = result.Weight,
+                                                                    ITEMSTATE = "寰呮",
+                                                                    ITEMCODE = woInfo.S_ITEM_CODE,
+                                                                    LOGINNAME = woInfo.S_LINE_NO,
+                                                                    SHIFT = "None",
                                                                 };
                                                                 SpecHelper.InsertInventoryM(target);
                                                             });
@@ -347,7 +347,7 @@
         }
 
         /// <summary>
-        /// 婊℃墭杩囨湡鍑哄簱 婊℃墭杩囨湡鍥炲簱锛屾弧鎵樿繃鏈熷洖鐐�+        /// 婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐�         /// </summary>
         internal static void FullOutTime()
         {
@@ -378,12 +378,17 @@
                             LocationHelper.LockLoc(startLoc_1.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
                             LocationHelper.LockLoc(endLoc_1.S_CODE, 1);//缁堢偣鍏ュ簱閿�                             LogHelper.Info($"鐢熸垚婊℃墭杩囨湡鍑哄簱浠诲姟鎴愬姛锛屽鍣ㄥ彿{outTimeCg.S_CNTR_CODE}锛岃捣鐐箋startLoc_1.S_CODE}锛岀粓鐐箋endLoc_1.S_CODE}");
+
+                            Task task27 = Task.Run(() =>
+                            {
+                                SpecHelper.DeleteInventoryM(outTimeCg.S_ID);
+                            });
                         }
                     }
                 }
 
 
-                //婊℃墭杩囨湡鍥炲簱
+                //杩囨湡鍚堟牸鍥炲簱
                 var startLoc_2 = db.Queryable<TN_Location>()
                     .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE)
                     .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE)
@@ -391,10 +396,91 @@
                     && o.S_AREA_CODE == Settings.Areas[12] && o.N_CURRENT_NUM > 0
                     && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
 
+                if (startLoc_2 != null)
+                {
+                    var endLoc_2 = db.Queryable<TN_Location>()
+                     .First(o => o.S_AREA_CODE == Settings.Areas[2] &&
+                     o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�);
+
+                    if (endLoc_2 != null)
+                    {
+                        var cntCode = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == startLoc_2.S_CODE);
+                        var outTimeCg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntCode.S_CNTR_CODE);
+                        if (WCSHelper.CreateTask(startLoc_2.S_CODE, endLoc_2.S_CODE, "杩囨湡鍚堟牸鍥炲簱", 3, outTimeCg.S_CNTR_CODE, outTimeCg.S_SPE))
+                        {
+                            LocationHelper.LockLoc(startLoc_2.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
+                            LocationHelper.LockLoc(endLoc_2.S_CODE, 1);//缁堢偣鍏ュ簱閿�+
+                            Task task27 = Task.Run(() =>
+                            {
+                                var target = new TN_InventoryM()
+                                {
+                                    S_ID = outTimeCg.S_ID,
+                                    RFID = outTimeCg.S_CNTR_CODE,
+                                    SPEC = outTimeCg.S_SPE,
+                                    WEIGHT = outTimeCg.F_QTY,
+                                    ITEMSTATE = outTimeCg.S_ITEM_STATE,
+                                    ITEMCODE = outTimeCg.S_ITEM_CODE,
+                                    LOGINNAME = "杩囨湡鍚堟牸鍥炲簱杞",
+                                    SHIFT = "None",
+                                };
+                                SpecHelper.InsertInventoryM(target);
+                            });
+
+                            LogHelper.Info($"鐢熸垚杩囨湡鍚堟牸鍥炲簱浠诲姟鎴愬姛锛屽鍣ㄥ彿{outTimeCg.S_CNTR_CODE}锛岃捣鐐箋startLoc_2.S_CODE}锛岀粓鐐箋endLoc_2.S_CODE}");
+                        }
+                    }
+                }
+
+                //杩囨湡娆″搧鍥炵倝
+                var startLoc_3 = db.Queryable<TN_Location>()
+                    .LeftJoin<TN_Loc_Container>((o, i) => o.S_CODE == i.S_LOC_CODE)
+                    .LeftJoin<TN_CG_Detail>((o, i, s) => i.S_CNTR_CODE == s.S_CNTR_CODE)
+                    .Where((o, i, s) => s.N_ITEM_STATE == 2 && s.S_ITEM_STATE == "涓嶅悎鏍�
+                    && o.S_AREA_CODE == Settings.Areas[12] && o.N_CURRENT_NUM > 0
+                    && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�).First();
+
+                if (startLoc_3 != null)
+                {
+                    var endLoc_3 = db.Queryable<TN_Location>()
+                     .First(o => o.S_AREA_CODE == Settings.Areas[11] &&
+                     o.N_CURRENT_NUM == 0 && o.N_LOCK_STATE == 0 && o.S_LOCK_STATE == "鏃�);
+
+                    if (endLoc_3 != null)
+                    {
+                        var cntCode = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == startLoc_3.S_CODE);
+                        var outTimeCg = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntCode.S_CNTR_CODE);
+                        if (WCSHelper.CreateTask(startLoc_3.S_CODE, endLoc_3.S_CODE, "杩囨湡娆″搧鍥炵倝", 3, outTimeCg.S_CNTR_CODE,out string taskno, outTimeCg.S_SPE))
+                        {
+                            LocationHelper.LockLoc(startLoc_3.S_CODE, 2);//璧风偣鍑哄簱閿侊紝
+                            LocationHelper.LockLoc(endLoc_3.S_CODE, 1);//缁堢偣鍏ュ簱閿�+
+                            Task task2 = Task.Run(() =>
+                            {
+                                var target = new TN_RemeltDetail()
+                                {
+                                    TASKNO = taskno,
+                                    CNTCODE = outTimeCg.S_CNTR_CODE,
+                                    STARTLOC = startLoc_3.S_CODE,
+                                    LOGINNAME = "杩囨湡娆″搧鍥炵倝杞",
+                                    ITEMCODE = outTimeCg.S_ITEM_CODE,
+                                    SPEC = outTimeCg.S_SPE,
+                                    CARCODE = outTimeCg.S_CAR_CODE,
+                                    WEIGHT = outTimeCg.F_QTY,
+                                    REMELTTIME = DateTime.Now
+                                };
+                                SpecHelper.InsertRemeltDetail(target);
+                            });
+
+                            LogHelper.Info($"鐢熸垚杩囨湡娆″搧鍥炵倝浠诲姟鎴愬姛锛屽鍣ㄥ彿{outTimeCg.S_CNTR_CODE}锛岃捣鐐箋startLoc_3.S_CODE}锛岀粓鐐箋endLoc_3.S_CODE}");
+                        }
+                    }
+                }
+
             }
             catch (Exception ex)
             {
-                LogHelper.Error($"鍙戠敓浜嗗紓甯革紝婊℃墭杩囨湡鍑哄簱 婊℃墭杩囨湡鍥炲簱锛屾弧鎵樿繃鏈熷洖鐐�寮傚父锛寋ex.Message}", ex);
+                LogHelper.Error($"鍙戠敓浜嗗紓甯革紝婊℃墭杩囨湡鍑哄簱 杩囨湡鍚堟牸鍥炲簱锛岃繃鏈熸鍝佸洖鐐�寮傚父锛寋ex.Message}", ex);
             }
         }
 
@@ -409,48 +495,75 @@
 
                 // 鍚屾 TN_EquipProDetail 涓�TN_CG_Detail
                 var targetEPD = db.Queryable<TN_EquipProDetail>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
-                   Where((o, i) => o.ItemState != i.S_ITEM_STATE && i.S_ITEM_STATE != "寰呮").First();
+                   Where((o, i) => o.ITEMSTATE != i.S_ITEM_STATE && i.S_ITEM_STATE != "寰呮" && i.N_ITEM_STATE != 1).First();
+
                 if (targetEPD != null)
                 {
-                    targetEPD.ItemState = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID).S_ITEM_STATE;
-
-                    db.Updateable<TN_EquipProDetail>(targetEPD).ExecuteCommand();
+                    targetEPD.ITEMSTATE = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID).S_ITEM_STATE;
+                    db.Updateable<TN_EquipProDetail>(targetEPD).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
                 }
 
                 targetEPD = db.Queryable<TN_EquipProDetail>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
-                    Where((o, i) => System.DateTime.Now >= o.Expiration).First();
+                    Where((o, i) => System.DateTime.Now >= o.EXPIRATION && i.S_ITEM_STATE == "寰呮" && i.N_ITEM_STATE == 1).First();
+
                 if (targetEPD != null)
                 {
-                    targetEPD.ItemState = "杩囨湡";
-                    db.Updateable<TN_EquipProDetail>(targetEPD).ExecuteCommand();
+                    targetEPD.ITEMSTATE = "杩囨湡";
+                    db.Updateable<TN_EquipProDetail>(targetEPD).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
 
                     var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetEPD.S_ID);
                     cginfo.S_ITEM_STATE = "杩囨湡";
                     cginfo.N_ITEM_STATE = 3;
-                    db.Updateable<TN_CG_Detail>(cginfo).ExecuteCommand();
+                    db.Updateable<TN_CG_Detail>(cginfo).UpdateColumns(it => new { it.S_ITEM_STATE, it.N_ITEM_STATE }).ExecuteCommand();
                 }
+
+                // 鍚屾 TN_InventoryM 涓�TN_CG_Detail
+                var targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
+                   Where((o, i) => o.ITEMSTATE != i.S_ITEM_STATE && i.S_ITEM_STATE != "寰呮" && i.N_ITEM_STATE != 1).First();
+
+                if (targetInM != null)
+                {
+                    targetInM.ITEMSTATE = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID).S_ITEM_STATE;
+                    db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
+                }
+
+                targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
+                   Where((o, i) => System.DateTime.Now >= o.EXPIRATION && i.S_ITEM_STATE == "寰呮" && i.N_ITEM_STATE == 1).First();
+
+                if (targetInM != null)
+                {
+                    targetInM.ITEMSTATE = "杩囨湡";
+                    db.Updateable<TN_InventoryM>(targetInM).UpdateColumns(it => new { it.ITEMSTATE }).ExecuteCommand();
+
+                    var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID);
+                    cginfo.S_ITEM_STATE = "杩囨湡";
+                    cginfo.N_ITEM_STATE = 3;
+                    db.Updateable<TN_CG_Detail>(cginfo).UpdateColumns(it => new { it.S_ITEM_STATE, it.N_ITEM_STATE }).ExecuteCommand();
+                }
+                
+
 
                 //  鍚屾 TN_DayProDetail
                 var curDay = System.DateTime.Now.Date;
-                var targetDay = db.Queryable<TN_DayProDetail>().First(a => a.DayTime == curDay);
+                var targetDay = db.Queryable<TN_DayProDetail>().First(a => a.DAYTIME == curDay);
                 if (targetDay == null)
                 {
                     targetDay = new TN_DayProDetail()
                     {
-                        DayTime = curDay,
+                        DAYTIME = curDay,
                     };
                     db.Insertable(targetDay).ExecuteCommand();
                 }
 
-                var targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curDay && a.DownLineTime <= curDay.AddDays(1)).ToList();
+                var targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curDay && a.DOWNLINETIME <= curDay.AddDays(1)).ToList();
 
-                var sumWeight = targetEPDs.Sum(a => a.Weight);
+                var sumWeight = targetEPDs.Sum(a => a.WEIGHT);
 
                 if (targetEPDs.Count > 0)
                 {
-                    if (targetDay.Weight != sumWeight)
+                    if (targetDay.WEIGHT != sumWeight)
                     {
-                        targetDay.Weight = sumWeight;
+                        targetDay.WEIGHT = sumWeight;
                         db.Updateable(targetDay).ExecuteCommand();
                     }
 
@@ -458,88 +571,66 @@
 
                 // 鍚屾 TN_WeekProSpcDetail
                 var curWeek = System.DateTime.Now.Date.AddDays(-(int)System.DateTime.Now.DayOfWeek + 1);
-                var targetWeek = db.Queryable<TN_WeekProDetail>().First(a => a.DayTime == curWeek);
+                var targetWeek = db.Queryable<TN_WeekProDetail>().First(a => a.DAYTIME == curWeek);
                 if (targetWeek == null)
                 {
                     targetWeek = new TN_WeekProDetail()
                     {
-                        DayTime = curWeek,
+                        DAYTIME = curWeek,
                     };
                     db.Insertable(targetWeek).ExecuteCommand();
                 }
 
-                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curWeek && a.DownLineTime <= curWeek.AddDays(7)).ToList();
+                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curWeek && a.DOWNLINETIME <= curWeek.AddDays(7)).ToList();
                 if (targetEPDs.Count > 0)
                 {
-                    if (targetWeek.Weight != sumWeight)
+                    if (targetWeek.WEIGHT != sumWeight)
                     {
-                        targetWeek.Weight = sumWeight;
+                        targetWeek.WEIGHT = sumWeight;
                         db.Updateable(targetWeek).ExecuteCommand();
                     }
                 }
 
                 // 鍚屾 TN_MonthProSpcDetail
                 var curMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).Date;
-                var targetMonth = db.Queryable<TN_MonthProDetail>().First(a => a.DayTime == curMonth);
+                var targetMonth = db.Queryable<TN_MonthProDetail>().First(a => a.DAYTIME == curMonth);
                 if (targetMonth == null)
                 {
                     targetMonth = new TN_MonthProDetail()
                     {
-                        DayTime = curMonth,
+                        DAYTIME = curMonth,
                     };
                     db.Insertable(targetMonth).ExecuteCommand();
                 }
-                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curMonth && a.DownLineTime <= curMonth.AddMonths(1)).ToList();
+                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curMonth && a.DOWNLINETIME <= curMonth.AddMonths(1)).ToList();
                 if (targetEPDs.Count > 0)
                 {
-                    if (targetMonth.Weight != sumWeight)
+                    if (targetMonth.WEIGHT != sumWeight)
                     {
-                        targetMonth.Weight = sumWeight;
+                        targetMonth.WEIGHT = sumWeight;
                         db.Updateable(targetMonth).ExecuteCommand();
                     }
                 }
 
                 // 鍚屾 TN_YearProSpcDetail
                 var curYear = new DateTime(DateTime.Now.Year, 1, 1).Date;
-                var targetYear = db.Queryable<TN_YearProDetail>().First(a => a.DayTime == curYear);
+                var targetYear = db.Queryable<TN_YearProDetail>().First(a => a.DAYTIME == curYear);
                 if (targetYear == null)
                 {
                     targetYear = new TN_YearProDetail()
                     {
-                        DayTime = curYear,
+                        DAYTIME = curYear,
                     };
                     db.Insertable(targetYear).ExecuteCommand();
                 }
-                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DownLineTime >= curYear && a.DownLineTime <= curYear.AddYears(1)).ToList();
+                targetEPDs = db.Queryable<TN_EquipProDetail>().Where(a => a.DOWNLINETIME >= curYear && a.DOWNLINETIME <= curYear.AddYears(1)).ToList();
                 if (targetEPDs.Count > 0)
                 {
-                    if (targetYear.Weight != sumWeight)
+                    if (targetYear.WEIGHT != sumWeight)
                     {
-                        targetYear.Weight = sumWeight;
+                        targetYear.WEIGHT = sumWeight;
                         db.Updateable(targetYear).ExecuteCommand();
                     }
-                }
-
-                // 鍚屾 TN_InventoryM 涓�TN_CG_Detail
-                var targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
-                   Where((o, i) => o.ItemState != i.S_ITEM_STATE && i.S_ITEM_STATE != "寰呮").First();
-                if (targetInM != null)
-                {
-                    targetInM.ItemState = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID).S_ITEM_STATE;
-
-                    db.Updateable<TN_InventoryM>(targetInM).ExecuteCommand();
-                }
-                targetInM = db.Queryable<TN_InventoryM>().LeftJoin<TN_CG_Detail>((o, i) => o.S_ID == i.S_ID).
-                   Where((o, i) => System.DateTime.Now >= o.Expiration).First();
-                if (targetInM != null)
-                {
-                    targetInM.ItemState = "杩囨湡";
-                    db.Updateable<TN_InventoryM>(targetInM).ExecuteCommand();
-
-                    var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_ID == targetInM.S_ID);
-                    cginfo.S_ITEM_STATE = "杩囨湡";
-                    cginfo.N_ITEM_STATE = 3;
-                    db.Updateable<TN_CG_Detail>(cginfo).ExecuteCommand();
                 }
             }
             catch (Exception ex)
@@ -643,6 +734,11 @@
                     LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� 
                     LogHelper.Info($"鐢熸垚婊℃墭鍑哄簱澶嶆浠诲姟鎴愬姛锛屽鍣細{cntId.S_CNTR_CODE}锛岃捣鐐癸細{startLoc.S_CODE}");
+
+                    Task task27 = Task.Run(() =>
+                    {
+                         SpecHelper.DeleteInventoryM(cgInfo.S_ID);
+                    });
                 }
                 else
                 {
diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index 68267f1..c1ec6bd 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -86,7 +86,7 @@
                                     {
                                         returnS7Ok(TN_Task);
                                     });
-                                   
+
                                     break;
                                 case 5:
                                     WCSHelper.UpdateStatus(TN_Task, "寮�鍗歌揣");//浠诲姟鐘舵�鏀规垚寮�鍗歌揣
@@ -141,6 +141,14 @@
                                         }
                                     });
 
+                                    Task task19 = Task.Run(() =>
+                                    {
+                                        if (TN_Task.S_END_AREA == Settings.Areas[2])
+                                        {
+                                            SpecHelper.UpdateInventoryM_RuKu(TN_Task.S_CNTR_CODE);
+                                        }
+                                    });
+
                                     break;
                                 case 2:
                                     WCSHelper.End(TN_Task);//浠诲姟鐘舵�鏀规垚缁撴潫
diff --git a/models/TN_CG_Detail.cs b/models/TN_CG_Detail.cs
index 3ef15ed..d19d3c6 100644
--- a/models/TN_CG_Detail.cs
+++ b/models/TN_CG_Detail.cs
@@ -27,12 +27,12 @@
         public string S_SPE { get; set; }//货品规格
 
         /// <summary>
-        /// 0合格1待检2不合格,下线即待检,3过期
+        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合
         /// </summary>
         public string S_ITEM_STATE { get; set; }//货品状态
 
         /// <summary>
-        /// 0合格1待检2不合格,下线即待检,3过期
+        /// 0合格1待检2不合格,下线即待检,3过期,4技术合格,5混合
         /// </summary>
         public int N_ITEM_STATE { get; set; }//货品状态_字典
         public string S_BATCH_NO { get; set; }//批次号
diff --git a/models/TN_Component_Detail.cs b/models/TN_Component_Detail.cs
index 01d8a14..9ee6890 100644
--- a/models/TN_Component_Detail.cs
+++ b/models/TN_Component_Detail.cs
@@ -16,62 +16,62 @@
         /// <summary>
         /// 鍑哄簱鏃堕棿
         /// </summary>
-        public DateTime OutAreaTime { get; set; }
+        public DateTime OUTAREATIME { get; set; }
 
         /// <summary>
         /// 鐝
         /// </summary>
-        public string Shift { get; set; }
+        public string SHIFT { get; set; }
 
         /// <summary>
         /// 鐗╂枡缂栫爜
         /// </summary>
-        public string ItemCode { get; set; }
+        public string ITEMCODE { get; set; }
 
         /// <summary>
         /// 鐗╂枡瑙勬牸
         /// </summary>
-        public string Spec { get; set; }
+        public string SPEC { get; set; }
 
         /// <summary>
-        /// 杞︽
+        /// 杞﹀彿
         /// </summary>
-        public string CarCode { get; set; }
+        public string CARCODE { get; set; }
 
         /// <summary>
         /// 缁堢偣
         /// </summary>
-        public string EndLoc { get; set; }
+        public string ENDLOC { get; set; }
 
         /// <summary>
         /// 鎿嶄綔浜哄憳濮撳悕
         /// </summary>
-        public string Staff { get; set; }
+        public string STAFF { get; set; }
 
         /// <summary>
         /// 瀹瑰櫒缂栫爜
         /// </summary>
-        public string CntrCode { get; set; }
+        public string CNTRCODE { get; set; }
 
         /// <summary>
         /// 閲嶉噺
         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
         /// <summary>
         /// 浠诲姟绫诲瀷
         /// </summary>
-        public string Type { get; set; }
+        public string TYPE { get; set; }
 
         /// <summary>
         /// 浠诲姟鍙�         /// </summary>
-        public string TaskNo { get; set; }
+        public string TASKNO { get; set; }
 
         /// <summary>
         /// 閫佽揪鏃堕棿
         /// </summary>
-        public DateTime EndTime { get; set; }
+        public DateTime ENDTIME { get; set; }
 
 
     }
diff --git a/models/TN_DayProDetail.cs b/models/TN_DayProDetail.cs
index fd80274..8cba30d 100644
--- a/models/TN_DayProDetail.cs
+++ b/models/TN_DayProDetail.cs
@@ -16,12 +16,12 @@
         /// <summary>
         /// 褰撳ぉ闆剁偣
         /// </summary>
-        public DateTime DayTime { get; set; }
+        public DateTime DAYTIME { get; set; }
 
         /// <summary>
         /// 鎬婚噸閲�         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
     }
 }
diff --git a/models/TN_EquipProDetail.cs b/models/TN_EquipProDetail.cs
index 0b17682..eb440db 100644
--- a/models/TN_EquipProDetail.cs
+++ b/models/TN_EquipProDetail.cs
@@ -16,12 +16,12 @@
         /// <summary>
         /// 浠诲姟绫诲瀷
         /// </summary>
-        public string TaskType { get; set; }
+        public string TASKTYPE { get; set; }
 
         /// <summary>
         /// 涓嬬嚎鏃堕棿
         /// </summary>
-        public DateTime DownLineTime { get; set; } = DateTime.Now;
+        public DateTime DOWNLINETIME { get; set; } = DateTime.Now;
 
         /// <summary>
         /// 瀹瑰櫒鍙�@@ -31,46 +31,46 @@
         /// <summary>
         /// 鐧诲綍濮撳悕
         /// </summary>
-        public string LoginName { get; set; }
+        public string LOGINNAME { get; set; }
 
         /// <summary>
         /// 鐝
         /// </summary>
-        public string Shift { get; set; }
+        public string SHIFT { get; set; }
 
         /// <summary>
         /// 鐗╂枡缂栫爜
         /// </summary>
-        public string ItemCode { get; set; }
+        public string ITEMCODE { get; set; }
 
         /// <summary>
         /// 瑙勬牸
         /// </summary>
-        public string Spec { get; set; }
+        public string SPEC { get; set; }
 
         /// <summary>
         /// 杞﹀彿
         /// </summary>
-        public string CarCode { get; set; }
+        public string CARCODE { get; set; }
 
         /// <summary>
         /// 閲嶉噺
         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
         /// <summary>
         /// 鐗╂枡鐘舵�
         /// </summary>
-        public string ItemState { get; set; }
-
-        /// <summary>
-        /// 璧风偣璐т綅
-        /// </summary>
-        public string StartLoc { get; set; }
+        public string ITEMSTATE { get; set; }
 
         /// <summary>
         /// 杩囨湡鏃堕棿
         /// </summary>
-        public DateTime Expiration { get; set; }
+        public DateTime EXPIRATION { get; set; }
+
+        /// <summary>
+        /// 璧风偣璐т綅
+        /// </summary>
+        public string STARTLOC { get; set; }
     }
 }
diff --git a/models/TN_InventoryM.cs b/models/TN_InventoryM.cs
index a6f7da3..9e32a23 100644
--- a/models/TN_InventoryM.cs
+++ b/models/TN_InventoryM.cs
@@ -1,9 +1,5 @@
 锘縰sing SqlSugar;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 
 namespace HH.WCS.Mobox3.DoubleCoin.models
 {
@@ -16,7 +12,7 @@
         /// <summary>
         /// 鍏ュ簱鏃堕棿
         /// </summary>
-        public DateTime InAreaTime { get; set; }
+        public DateTime INAREATIME { get; set; }
 
         /// <summary>
         /// 瀹瑰櫒鍙�@@ -26,36 +22,36 @@
         /// <summary>
         /// 鐧诲綍濮撳悕
         /// </summary>
-        public string LoginName { get; set; }
+        public string LOGINNAME { get; set; }
 
         /// <summary>
         /// 鐝
         /// </summary>
-        public string Shift { get; set; }
+        public string SHIFT { get; set; }
 
         /// <summary>
         /// 鐗╂枡缂栫爜
         /// </summary>
-        public string ItemCode { get; set; }
+        public string ITEMCODE { get; set; }
 
         /// <summary>
         /// 瑙勬牸
         /// </summary>
-        public string Spec { get; set; }
+        public string SPEC { get; set; }
 
         /// <summary>
         /// 閲嶉噺
         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
         /// <summary>
         /// 鐗╂枡鐘舵�
         /// </summary>
-        public string ItemState { get; set; }
+        public string ITEMSTATE { get; set; }
 
         /// <summary>
         /// 杩囨湡鏃堕棿
         /// </summary>
-        public DateTime Expiration { get; set; }
+        public DateTime EXPIRATION { get; set; }
     }
 }
diff --git a/models/TN_MonthProDetail.cs b/models/TN_MonthProDetail.cs
index d3254a9..b8ea43a 100644
--- a/models/TN_MonthProDetail.cs
+++ b/models/TN_MonthProDetail.cs
@@ -16,12 +16,12 @@
         /// <summary>
         /// 姣忔湀1鍙烽浂鐐�         /// </summary>
-        public DateTime DayTime { get; set; }
+        public DateTime DAYTIME { get; set; }
 
         /// <summary>
         /// 鎬婚噸閲�         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
     }
 }
diff --git a/models/TN_RemeltDetail.cs b/models/TN_RemeltDetail.cs
index 3d3f4fe..f02aaf7 100644
--- a/models/TN_RemeltDetail.cs
+++ b/models/TN_RemeltDetail.cs
@@ -16,56 +16,56 @@
         /// <summary>
         /// 鍥炵倝鏃堕棿
         /// </summary>
-        public DateTime RemeltTime { set; get;}
+        public DateTime REMELTTIME { set; get;}
 
         /// <summary>
         /// 鎵樼洏鍙�         /// </summary>
-        public string CntCode { set; get;}
+        public string CNTCODE { set; get;}
 
         /// <summary>
         /// 鎿嶄綔浜哄鍚�         /// </summary>
-        public string LoginName { set; get;}
+        public string LOGINNAME { set; get;}
 
         /// <summary>
         /// 鐝
         /// </summary>
-        public string Shift { set; get;}
+        public string SHIFT { set; get;}
 
         /// <summary>
         /// 鐗╂枡缂栫爜
         /// </summary>
-        public string ItemCode { set; get;}
+        public string ITEMCODE { set; get;}
 
         /// <summary>
         /// 鐗╂枡瑙勬牸
         /// </summary>
-        public string Spec { set; get;}
+        public string SPEC { set; get;}
 
         /// <summary>
         /// 杞︽
         /// </summary>
-        public string CarCode { set; get;}
+        public string CARCODE { set; get;}
 
         /// <summary>
         /// 閲嶉噺
         /// </summary>
-        public float Weight { set; get;}
+        public float WEIGHT { set; get;}
 
         /// <summary>
         /// 鍥炵倝鏈哄彴
         /// </summary>
-        public string StartLoc { set; get;}
+        public string STARTLOC { set; get;}
 
         /// <summary>
         /// 閫佽揪鏃堕棿
         /// </summary>
-        public DateTime EndTime { set; get;}
+        public DateTime ENDTIME { set; get;}
 
         /// <summary>
         /// 浠诲姟鍙�         /// </summary>
-        public string TaskNo { set; get; }
+        public string TASKNO { set; get; }
     }
 }
diff --git a/models/TN_SurplusDetail.cs b/models/TN_SurplusDetail.cs
index 340f68c..627e248 100644
--- a/models/TN_SurplusDetail.cs
+++ b/models/TN_SurplusDetail.cs
@@ -8,7 +8,7 @@
 namespace HH.WCS.Mobox3.DoubleCoin.models
 {
     /// <summary>
-    /// 浣欐枡鍥炲簱鏄庣粏
+    /// 浣欐枡鍥炲簱(杩斿洖鑳�鏄庣粏
     /// </summary>
     [SugarTable("TN_SurplusDetail")]
     public class TN_SurplusDetail : BaseModel
@@ -16,56 +16,56 @@
         /// <summary>
         /// 鍥炲簱鏃堕棿
         /// </summary>
-        public DateTime RemeltTime { set; get; }
+        public DateTime REMELTTIME { set; get; }
 
         /// <summary>
         /// 鎵樼洏鍙�         /// </summary>
-        public string CntCode { set; get; }
+        public string CNTCODE { set; get; }
 
         /// <summary>
         /// 鎿嶄綔浜哄鍚�         /// </summary>
-        public string LoginName { set; get; }
+        public string LOGINNAME { set; get; }
 
         /// <summary>
         /// 鐝
         /// </summary>
-        public string Shift { set; get; }
+        public string SHIFT { set; get; }
 
         /// <summary>
         /// 鐗╂枡缂栫爜
         /// </summary>
-        public string ItemCode { set; get; }
+        public string ITEMCODE { set; get; }
 
         /// <summary>
         /// 鐗╂枡瑙勬牸
         /// </summary>
-        public string Spec { set; get; }
+        public string SPEC { set; get; }
 
         /// <summary>
         /// 杞︽
         /// </summary>
-        public string CarCode { set; get; }
+        public string CARCODE { set; get; }
 
         /// <summary>
         /// 浜屾绉伴噸閲嶉噺
         /// </summary>
-        public float Weight { set; get; }
+        public float WEIGHT { set; get; }
 
         /// <summary>
         /// 杩斿洖鏈哄彴
         /// </summary>
-        public string StartLoc { set; get; }
+        public string STARTLOC { set; get; }
 
         /// <summary>
         /// 浜屾鍏ュ簱鏃堕棿
         /// </summary>
-        public DateTime EndTime { set; get; }
+        public DateTime ENDTIME { set; get; }
 
         /// <summary>
         /// 浠诲姟鍙�         /// </summary>
-        public string TaskNo { set; get; }
+        public string TASKNO { set; get; }
     }
 }
diff --git a/models/TN_WeekProDetail.cs b/models/TN_WeekProDetail.cs
index d3ac94b..9e13157 100644
--- a/models/TN_WeekProDetail.cs
+++ b/models/TN_WeekProDetail.cs
@@ -16,12 +16,12 @@
         /// <summary>
         /// 鍛ㄤ竴闆剁偣
         /// </summary>
-        public DateTime DayTime { get; set; }
+        public DateTime DAYTIME { get; set; }
 
         /// <summary>
         /// 鎬婚噸閲�         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
     }
 }
diff --git a/models/TN_YearProDetail.cs b/models/TN_YearProDetail.cs
index 1b6c051..633e307 100644
--- a/models/TN_YearProDetail.cs
+++ b/models/TN_YearProDetail.cs
@@ -16,12 +16,12 @@
         /// <summary>
         /// 姣忓勾1鏈�鍙烽浂鐐�         /// </summary>
-        public DateTime DayTime { get; set; }
+        public DateTime DAYTIME { get; set; }
 
         /// <summary>
         /// 鎬婚噸閲�         /// </summary>
-        public float Weight { get; set; }
+        public float WEIGHT { get; set; }
 
     }
 }
diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs
index 26c56bb..a4c680e 100644
--- a/wms/LocationHelper.cs
+++ b/wms/LocationHelper.cs
@@ -365,7 +365,6 @@
         /// <summary>
         /// 浜哄伐鎵嬪姩PDA瑙g粦锛氬垹闄よ揣浣�瀹瑰櫒/璐у搧涓夋柟淇℃伅锛�=瑙g粦璐т綅涓庡鍣紝2=瑙g粦瀹瑰櫒涓庤揣鍝�         /// </summary>
-        /// <param name="model"></EmptyUnBind>
         /// <returns></returns>
         internal static SimpleResult PdaUnBind(PdaUnBindInfo model)
         {
@@ -580,7 +579,7 @@
         public string rfId { get; set; }//瀹瑰櫒鍙� 
         /// <summary>
-        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�+        /// 0鍚堟牸1寰呮2涓嶅悎鏍硷紝涓嬬嚎鍗冲緟妫�紝3杩囨湡锛�鎶�湳鍚堟牸锛�娣峰悎
         /// </summary>
         public int cgState { get; set; }//鐗╂枡鐘舵�
 
diff --git a/wms/SpecHelper.cs b/wms/SpecHelper.cs
index 12c9718..cc88f6b 100644
--- a/wms/SpecHelper.cs
+++ b/wms/SpecHelper.cs
@@ -77,7 +77,7 @@
                 var log = JsonConvert.SerializeObject(model);
                 if (model != null)
                 {
-                    model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec));
+                    model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC));
 
                     if (db.Insertable<TN_EquipProDetail>(model).ExecuteCommand() > 0)
                     {
@@ -87,27 +87,6 @@
                     {
                         LogHelper.Info($"鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触锛寋log}");
                     }
-                }
-            }
-            catch (Exception ex)
-            {
-                LogHelper.Error("鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触", ex);
-            }
-        }
-
-        /// <summary>
-        /// 鏇存柊璁惧鐢熶骇鏄庣粏鐨勮繃鏈熸椂闂�-        /// </summary>
-        public static void UpdateEquipProDetail(string cg_SID)
-        {
-            try
-            {
-                var db = new SqlHelper<object>().GetInstance();
-                var target = db.Queryable<TN_EquipProDetail>().First(a => a.S_ID == cg_SID);
-                if (target != null)
-                {
-                    target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec));
-                    db.Updateable<TN_EquipProDetail>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand();
                 }
             }
             catch (Exception ex)
@@ -129,8 +108,8 @@
                 var log = JsonConvert.SerializeObject(model);
                 if (model != null)
                 {
-                    model.OutAreaTime = System.DateTime.Now;
-                    model.Type = "婊℃墭鍑哄簱涓婄嚎";
+                    model.OUTAREATIME = System.DateTime.Now;
+                    model.TYPE = "婊℃墭鍑哄簱涓婄嚎";
 
                     if (db.Insertable<TN_Component_Detail>(model).ExecuteCommand() > 0)
                     {
@@ -156,11 +135,11 @@
             try
             {
                 var db = new SqlHelper<object>().GetInstance();
-                var target  = db.Queryable<TN_Component_Detail>().First(o => o.TaskNo == taskNo);
+                var target  = db.Queryable<TN_Component_Detail>().First(o => o.TASKNO == taskNo);
 
                 if (target != null)
                 {
-                    target.EndTime = System.DateTime.Now;
+                    target.ENDTIME = System.DateTime.Now;
 
                     if (db.Updateable<TN_Component_Detail>(target).ExecuteCommand() > 0)
                     {
@@ -191,7 +170,7 @@
                 var log = JsonConvert.SerializeObject(model);
                 if (model != null)
                 {
-                    model.RemeltTime = System.DateTime.Now;
+                    model.REMELTTIME = System.DateTime.Now;
 
                     if (db.Insertable<TN_RemeltDetail>(model).ExecuteCommand() > 0)
                     {
@@ -217,11 +196,11 @@
             try
             {
                 var db = new SqlHelper<object>().GetInstance();
-                var target = db.Queryable<TN_RemeltDetail>().First(o => o.TaskNo == taskNo);
+                var target = db.Queryable<TN_RemeltDetail>().First(o => o.TASKNO == taskNo);
 
                 if (target != null)
                 {
-                    target.EndTime = System.DateTime.Now;
+                    target.ENDTIME = System.DateTime.Now;
 
                     if (db.Updateable<TN_RemeltDetail>(target).ExecuteCommand() > 0)
                     {
@@ -252,7 +231,7 @@
                 var log = JsonConvert.SerializeObject(model);
                 if (model != null)
                 {
-                    model.RemeltTime = System.DateTime.Now;
+                    model.REMELTTIME = System.DateTime.Now;
 
                     if (db.Insertable<TN_SurplusDetail>(model).ExecuteCommand() > 0)
                     {
@@ -278,11 +257,11 @@
             try
             {
                 var db = new SqlHelper<object>().GetInstance();
-                var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo);
+                var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo);
 
                 if (target != null)
                 {
-                    target.EndTime = System.DateTime.Now;
+                    target.ENDTIME = System.DateTime.Now;
 
                     if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0)
                     {
@@ -308,11 +287,11 @@
             try
             {
                 var db = new SqlHelper<object>().GetInstance();
-                var target = db.Queryable<TN_SurplusDetail>().First(o => o.TaskNo == taskNo);
+                var target = db.Queryable<TN_SurplusDetail>().First(o => o.TASKNO == taskNo);
 
                 if (target != null)
                 {
-                    target.Weight = weight;
+                    target.WEIGHT = weight;
                     if (db.Updateable<TN_SurplusDetail>(target).ExecuteCommand() > 0)
                     {
                         LogHelper.Info($"鏇存柊浣欐枡鍥炲簱鏄庣粏鎴愬姛锛寋taskNo}");
@@ -347,7 +326,7 @@
                     {
                         db.Deleteable<TN_InventoryM>(target).ExecuteCommand();
                     }
-                    model.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(model.Spec));
+                    model.EXPIRATION = System.DateTime.Now.AddMinutes(GetExportTime(model.SPEC));
                     if (db.Insertable<TN_InventoryM>(model).ExecuteCommand() > 0)
                     {
                         LogHelper.Info($"鎻掑叆WMS搴撳瓨鏄庣粏鎴愬姛锛寋log}");
@@ -364,25 +343,60 @@
             }
         }
 
-
         /// <summary>
-        /// 鏇存柊WMS搴撳瓨鏄庣粏鐨勮繃鏈熸椂闂�+        /// 鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂�         /// </summary>
-        public static void UpdateInventoryM(string cg_SID)
+        public static void UpdateInventoryM_RuKu(string cntId)
         {
             try
             {
                 var db = new SqlHelper<object>().GetInstance();
-                var target = db.Queryable<TN_InventoryM>().First(a => a.S_ID == cg_SID);
+                var target = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == cntId);
                 if (target != null)
                 {
-                    target.Expiration = System.DateTime.Now.AddMinutes(GetExportTime(target.Spec));
-                    db.Updateable<TN_InventoryM>().UpdateColumns(it => new { it.Expiration }).ExecuteCommand();
+                    var targetM = db.Queryable<TN_InventoryM>().First(a => a.S_ID == target.S_ID);
+
+                    if (targetM != null)
+                    {
+                        targetM.INAREATIME = System.DateTime.Now;
+                        if(db.Updateable<TN_InventoryM>(targetM).UpdateColumns(it => new { it.INAREATIME }).ExecuteCommand() > 0)
+                        {
+                            LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝鎴愬姛锛屽鍣ㄥ彿锛歿cntId}");
+                        }
+                        else
+                        {
+                            LogHelper.Info($"鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂达紝澶辫触锛屽鍣ㄥ彿锛歿cntId}");
+                        }
+                    }
+                
                 }
             }
             catch (Exception ex)
             {
-                LogHelper.Error("鎻掑叆璁惧鐢熶骇鏄庣粏澶辫触", ex);
+                LogHelper.Error("鏇存柊WMS搴撳瓨鏄庣粏鐨勫叆搴撴椂闂村け璐�, ex);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎WMS搴撳瓨鏄庣粏
+        /// </summary>
+        public static void DeleteInventoryM(string cg_SID)
+        {
+            try
+            {
+                var db = new SqlHelper<object>().GetInstance();
+                if(db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cg_SID).ExecuteCommand() > 0)
+                {
+                    LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屾垚鍔燂紝鐗╂枡涓婚敭锛歿cg_SID}");
+                }
+                else
+                {
+                    LogHelper.Info($"鍒犻櫎WMS搴撳瓨鏄庣粏锛屽け璐ワ紝鐗╂枡涓婚敭锛歿cg_SID}");
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("鏇存柊WMS搴撳瓨鏄庣粏鐨勮繃鏈熸椂闂村け璐�, ex);
             }
         }
     }
diff --git a/wms/WMSHelper.cs b/wms/WMSHelper.cs
index 3fc5bde..18535e1 100644
--- a/wms/WMSHelper.cs
+++ b/wms/WMSHelper.cs
@@ -1,15 +1,7 @@
-锘縰sing HH.WCS.Mobox3.DoubleCoin.api;
-using HH.WCS.Mobox3.DoubleCoin.dispatch;
+锘縰sing HH.WCS.Mobox3.DoubleCoin.dispatch;
 using HH.WCS.Mobox3.DoubleCoin.models;
 using HH.WCS.Mobox3.DoubleCoin.util;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reflection;
-using System.Runtime.Remoting.Messaging;
-using System.Text;
-using System.Threading.Tasks;
 using static HH.WCS.Mobox3.DoubleCoin.api.ApiModel;
 
 namespace HH.WCS.Mobox3.DoubleCoin.wms
@@ -89,7 +81,13 @@
             }
         }
 
-
+        /// <summary>
+        /// 鎻掑叆鎿嶄綔鍛樹俊鎭�+        /// </summary>
+        /// <param name="staff"></param>
+        /// <param name="type"></param>
+        /// <param name="cntrCode"></param>
+        /// <param name="qty"></param>
         public static void InsertOpInfo(string staff, string type , string cntrCode ="",int qty = 0)
         {
             try
@@ -123,5 +121,7 @@
                 LogHelper.Error($"鎻掑叆鎿嶄綔鍛樹俊鎭紝鍙戠敓浜嗗紓甯革紝{ex.Message}",ex);
             }
         }
+
+       
     }
 }

--
Gitblit v1.9.1