From c8f338feee0b6003d8f069b1d37fd9b90dd1b7f4 Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期一, 07 七月 2025 17:31:38 +0800
Subject: [PATCH] 印尼佳通优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs              |  211 ++++--------
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/dispatch/GtDispatch.cs        |    9 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs                  |   18 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs                  |   25 -
 HH.WCS.Mobox3/HH.WCS.Mobox3.HD/dispatch/ShopFloorControl.cs        |   45 ++
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/WmsController.cs              |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/WmsController.cs          |  116 ++----
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ItemHelper.cs             |   14 
 HH.WCS.Mobox3/HH.WCS.Mobox3.HD/wms/WMSHelper.cs                    |    7 
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/ApiHelper.cs                  |   30 +
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs               |   20 
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/MoboxController.cs            |   18 +
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ContainerHelper.cs        |   24 -
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/HH.WCS.Mobox3.YNJT_BZP.csproj |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/core/WCSCore.cs                   |   15 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/ItemBarcodeInfo.cs     |   17 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/MatlInformation.cs     |   14 
 HH.WCS.Mobox3/HH.WCS.Mobox3.HD/core/Monitor.cs                     |   81 +++--
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/CntrItemRel.cs         |   24 -
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs               |   11 
 HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs                   |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/ApiHelper.cs                    |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs              |  199 ++++++------
 23 files changed, 444 insertions(+), 467 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
index 16e19b6..9e1a722 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
@@ -541,7 +541,7 @@
                         {
                             WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
                             throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
-                        }*/
+                        }*/               
                     }
                     else
                     {
@@ -753,7 +753,7 @@
                     return responseResult;
                 }
 
-                middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2 , 2);
+                middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2 );
                 if (middleLoc == null) {
                     WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES鍙枡浠诲姟{mesTask.ID},绔嬪簱鎺ラ┏浣嶅彲鑳藉浜庨攣瀹氭垨绂佺敤鐘舵�锛岃鏌ョ湅");
                     responseResult.code = 1;
@@ -1159,7 +1159,7 @@
                         wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                         if (wmsEndLoc != null)
                         {
-                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1);  
                             if (agvEndLoc != null)
                             {
                                 LogHelper.Info($"鍒涘缓绔嬪簱绔欏彴鍒扮珛搴撶殑棰勫垱寤轰换鍔★紝agv缁堢偣璐т綅:{agvEndLoc.S_CODE},绔嬪簱缁堢偣璐т綅:{wmsEndLoc.S_CODE}", "AGV");
@@ -1235,7 +1235,7 @@
                         wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                         if (wmsEndLoc != null)
                         {
-                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+                            agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1); 
                             if (agvEndLoc != null)
                             {
                                 LogHelper.Info($"鍒涘缓绔嬪簱绔欏彴鍒扮珛搴撶殑棰勫垱寤轰换鍔★紝agv缁堢偣璐т綅:{agvEndLoc.S_CODE},绔嬪簱缁堢偣璐т綅:{wmsEndLoc.S_CODE}", "AGV");
@@ -1246,7 +1246,7 @@
                                     S_OP_CODE = mst.S_CODE,
                                     S_CODE = WCSHelper.GenerateTaskNo(),
                                     S_CNTR_CODE = cst.S_CNTR_CODE,
-                                    S_TYPE = cst.S_TYPE + "銆愬紓甯搞�",
+                                    S_TYPE = "寮傚父宸ヨ鍏ュ簱",
                                     S_START_LOC = agvEndLoc.S_CODE,
                                     S_START_AREA = agvEndLoc.S_AREA_CODE,
                                     S_END_LOC = wmsEndLoc.S_CODE,
@@ -1348,7 +1348,7 @@
                         if (locCntrRels.Count > 0)
                         {
                             cntrCode = locCntrRels[0].S_CNTR_CODE;
-                            middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2);
+                            middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2);
                             if (middleLoc != null)
                             {
                                 // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�@@ -1523,7 +1523,7 @@
                             Location endLoc = WMSHelper.getCallMaterialLocCode(mesTask.EQP);
                             if (endLoc != null)
                             {
-                                middleLoc = WMSHelper.GetTransfeRelevanceLoc(startLoc.S_AREA_CODE, 2, 2);
+                                middleLoc = WMSHelper.GetMinTaskTransfeLoc(startLoc.S_AREA_CODE, 2);
                                 if (middleLoc != null)
                                 {
                                     // 1.鍒涘缓鎴愭柊鏈哄彨鏂欎綔涓�@@ -1747,7 +1747,7 @@
                 wmsEndLoc = WMSHelper.getInStockEndLoc(null, container.N_DETAIL_COUNT == 0 ? 0 : 1, container.N_TYPE);
                 if (wmsEndLoc != null)
                 {
-                    agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1, 2);  // 1.绔嬪簱鎺ラ┏浣�1.鍏ュ簱 2.闈炵洿杩�+                    agvEndLoc = WMSHelper.GetMinTaskTransfeLoc(wmsEndLoc.S_AREA_CODE, 1); 
                     if (agvEndLoc != null)
                     {
                         // 棰勫厛鐢熸垚鍏ュ簱绔欏彴-绔嬪簱缁堢偣鐨勬惉杩愪换鍔�@@ -2101,7 +2101,7 @@
             {
                 var transfeRelevance = WMSHelper.GetTransfeRelevance(model.locCode);  // 鎺ラ┏浣嶅睘鎬�                 LogHelper.Info($"鍘熺珯鍙板睘鎬э細{JsonConvert.SerializeObject(transfeRelevance)}", "WMS");
-                if (transfeRelevance != null && transfeRelevance.N_PROPERTY == 2)
+                if (transfeRelevance != null)
                 {
                     if (model.signalType == "1")
                     {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
index d88c163..3cce68b 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
@@ -519,26 +519,6 @@
 
         /// <summary>
         /// 鏌ヨ鎺ラ┏浣嶅叧鑱斿睘鎬�-        /// 娉細
-        /// 1.鏌ヨ寮傚父鍖鸿揣浣�-        /// </summary>
-        /// <param name="areaCode">搴撳尯</param>
-        /// <param name="type">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param>
-        /// <param name="property">璐т綅灞炴�锛�.鐩磋繛 2.闈炵洿杩烇級</param>
-        /// <returns></returns>
-        public static Location GetTransfeRelevanceLoc(string areaCode  ,int type ,int property )
-        {
-            Location loc = null;
-            var db = new SqlHelper<object>().GetInstance();
-            loc = db.Queryable<Location>()
-                .LeftJoin<TransfeRelevance>((a,b)=> a.S_CODE == b.S_LOC_CODE)
-                .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_TYPE == type && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y")
-                .First();
-            return loc;
-        }
-
-        /// <summary>
-        /// 鏌ヨ鎺ラ┏浣嶅叧鑱斿睘鎬�         /// </summary>
         /// <param name="locCode"></param>
         /// <param name="isManual">璐т綅灞炴� (0.闈炰汉宸�1.浜哄伐)</param>
@@ -556,16 +536,15 @@
         /// 娉細鏌ヨ浠诲姟鏈�皯鐨勬帴椹充綅
         /// </summary>
         /// <param name="areaCode">搴撳尯</param>
-        /// <param name="property">璐т綅灞炴� ( 1.鐩磋繛 2.闈炵洿杩�</param>
         /// <param name="type">鍔ㄤ綔绫诲瀷 锛�.鍏ュ簱鎺ラ┏浣� 2.鍑哄簱鎺ラ┏浣嶏級</param>
         /// <returns></returns>
-        public static Location GetMinTaskTransfeLoc(string areaCode ,int type, int property)
+        public static Location GetMinTaskTransfeLoc(string areaCode ,int type)
         {
             var db = new SqlHelper<object>().GetInstance();
             var loc = db.Queryable<Location>()
                 .LeftJoin<TransfeRelevance>((a,b) => a.S_CODE == b.S_LOC_CODE)
                 .LeftJoin<WCSTask>((a,b,c) => a.S_CODE == c.S_END_LOC && c.N_B_STATE < 3)
-                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode  && b.N_TYPE == type && b.N_PROPERTY == property  && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
+                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode  && b.N_TYPE == type && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
                 .GroupBy((a, b, c) => a.S_CODE)
                 .Select((a, b, c) => new {
                     count = SqlFunc.AggregateCount(c.S_END_LOC),
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/ApiHelper.cs
index b1c7b2b..12bf093 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/api/ApiHelper.cs
@@ -285,7 +285,7 @@
                     {
                         LogHelper.Info("鎺ラ┏浣嶏細" + JsonConvert.SerializeObject(item), "Mobox");
                         var conLoc = LocationHelper.GetLoc(item);
-                        endLoc = WMSHelper.GetEndLocation(areaCode, model.trayItemInfoList[0].itemCode, conLoc.N_ROADWAY, conLoc.N_ROW);
+                        endLoc = WMSHelper.GetEndLocation(areaCode, model.trayItemInfoList[0].itemCode, conLoc.N_ROADWAY, conLoc.N_ROW,4);
                         if (endLoc != null)
                         {
                             firstTaskEnd = conLoc;
@@ -666,7 +666,7 @@
             else
             {
                 responseResult.success = false;
-                responseResult.message = "鏈幏鍙栧埌缁堢偣搴撲綅";
+                responseResult.message = "鏈幏鍙栧埌缁堢偣搴撲綅,鍓╀綑璐т綅涓嶈冻";
             }
             return responseResult;
         }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/core/Monitor.cs
index efa0ea3..834ffda 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/core/Monitor.cs
@@ -224,18 +224,28 @@
                         if (locCntrRel != null)
                         {
                             LogHelper.Info("1111111", "杈撻�绾�);
-                            if (lineSignalInfo.faultMessage == 1)
-                            {
-                                // 鍥炴姤杞﹂棿鎺у埗鍣�-                                LogHelper.Info("杈撻�绾�绾夸綋銆� + line.code + "銆戣皟鏁翠负鎵嬪姩鐘舵�", "杈撻�绾�);
-                                continue;
-                            }
-
                             WMSTask wmsTask = WMSHelper.GetWmsTaskByCntr(locCntrRel.S_CNTR_CODE);
                             if (wmsTask == null)
                             {
                                 LogHelper.Info("娌℃湁姝e湪鎵ц鐨勪换鍔★紝璐т綅锛� + locCntrRel.S_LOC_CODE + " 瀹瑰櫒锛� + locCntrRel.S_CNTR_CODE, "杈撻�绾�);
                                 continue;
+                            }
+                            
+                            if (lineSignalInfo.faultMessage != 0) 
+                            {
+                                // 鍥炴姤杞﹂棿鎺у埗鍣�+                                WMSStatusInfo statusInfo = new WMSStatusInfo()
+                                {
+                                    wmsId = wmsTask.S_CODE,
+                                    errMsg = $"{line.code}杈撻�绾挎晠闅滐紝鏁呴殰缂栫爜锛歿lineSignalInfo.faultMessage}"
+                                };
+                                ShopFloorControl.wmsUpdateStatus(statusInfo);
+
+                                if (lineSignalInfo.faultMessage == 1)
+                                {
+                                    LogHelper.Info("杈撻�绾�绾夸綋銆� + line.code + "銆戣皟鏁翠负鎵嬪姩鐘舵�", "杈撻�绾�);
+                                    continue;
+                                }
                             }
 
                             var date = DateTime.Now.ToString("yyMMdd");
@@ -337,33 +347,40 @@
                                         }
                                         LogHelper.Info("鍫嗗灈鏈哄叆搴撲换鍔$粓鐐�, "杈撻�绾�);
                                         Location endLoc = WMSHelper.GetEndLocation(wmsTask.S_END_AREA, itemCode, originLocation.N_ROADWAY, originLocation.N_ROW);
-                                        LogHelper.Info($"鍫嗗灈鏈哄叆搴撲换鍔$粓鐐癸細{endLoc.S_CODE}", "杈撻�绾�);
-                                        wmsTask.S_END_LOC = endLoc.S_CODE;
-                                        WMSHelper.UpdateTask(wmsTask);
-                                        string eqNo = ApiHelper.getEqNo(endLoc.S_AREA_CODE, endLoc.N_ROADWAY);
+                                        if (endLoc != null)
+                                        {
+                                            LogHelper.Info($"鍫嗗灈鏈哄叆搴撲换鍔$粓鐐癸細{endLoc.S_CODE}", "杈撻�绾�);
+                                            wmsTask.S_END_LOC = endLoc.S_CODE;
+                                            WMSHelper.UpdateTask(wmsTask);
+                                            string eqNo = ApiHelper.getEqNo(endLoc.S_AREA_CODE, endLoc.N_ROADWAY);
 
-                                        List<string> areaCdoes = Settings.getStoreAreaCodes(2, 1);
-                                        WCSTask twoWcsTask = new WCSTask
+                                            List<string> areaCdoes = Settings.getStoreAreaCodes(2, 1);
+                                            WCSTask twoWcsTask = new WCSTask
+                                            {
+                                                S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                                S_OP_CODE = wmsTask.S_CODE,
+                                                S_CODE = WCSHelper.GenerateTaskNo(),
+                                                S_CNTR_CODE = wmsTask.S_CNTR_CODE,
+                                                S_TYPE = wmsTask.S_TYPE + "-2",
+                                                S_START_LOC = originLocation.S_CODE,
+                                                S_START_AREA = originLocation.S_AREA_CODE,
+                                                S_END_LOC = wmsTask.S_END_LOC,
+                                                S_END_AREA = wmsTask.S_END_AREA,
+                                                S_EQ_NO = eqNo,
+                                                S_SCHEDULE_TYPE = "RB",
+                                                T_START_TIME = DateTime.Now,
+                                            };
+                                            if (WCSHelper.CreateTask(twoWcsTask))
+                                            {
+                                                // 鎺ラ┏浣嶅姞鍑哄簱閿�缁堢偣璐т綅鍔犲叆搴撻攣
+                                                LocationHelper.LockLoc(twoWcsTask.S_START_LOC, 2);
+                                                LocationHelper.LockLoc(twoWcsTask.S_END_LOC, 1);
+                                                LogHelper.Info("鍫嗗灈鏈哄叆搴撲换鍔″凡涓嬪彂锛屼换鍔′俊鎭細" + JsonConvert.SerializeObject(twoWcsTask), "杈撻�绾�);
+                                            }
+                                        }
+                                        else 
                                         {
-                                            S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                                            S_OP_CODE = wmsTask.S_CODE,
-                                            S_CODE = WCSHelper.GenerateTaskNo(),
-                                            S_CNTR_CODE = wmsTask.S_CNTR_CODE,
-                                            S_TYPE = wmsTask.S_TYPE + "-2",
-                                            S_START_LOC = originLocation.S_CODE,
-                                            S_START_AREA = originLocation.S_AREA_CODE,
-                                            S_END_LOC = wmsTask.S_END_LOC,
-                                            S_END_AREA = wmsTask.S_END_AREA,
-                                            S_EQ_NO = eqNo,
-                                            S_SCHEDULE_TYPE = "RB",
-                                            T_START_TIME = DateTime.Now,
-                                        };
-                                        if (WCSHelper.CreateTask(twoWcsTask))
-                                        {
-                                            // 鎺ラ┏浣嶅姞鍑哄簱閿�缁堢偣璐т綅鍔犲叆搴撻攣
-                                            LocationHelper.LockLoc(twoWcsTask.S_START_LOC, 2);
-                                            LocationHelper.LockLoc(twoWcsTask.S_END_LOC, 1);
-                                            LogHelper.Info("鍫嗗灈鏈哄叆搴撲换鍔″凡涓嬪彂锛屼换鍔′俊鎭細" + JsonConvert.SerializeObject(twoWcsTask), "杈撻�绾�);
+                                            LogHelper.Info($"鍫嗗灈鏈哄叆搴撲换鍔$粓鐐癸細null", "杈撻�绾�);
                                         }
                                     }
                                     else {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/dispatch/ShopFloorControl.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/dispatch/ShopFloorControl.cs
index e40c2dc..e70bc81 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/dispatch/ShopFloorControl.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/dispatch/ShopFloorControl.cs
@@ -92,6 +92,45 @@
         }
 
         /// <summary>
+        /// WMS鐗╂祦璋冨害鐘舵�鍙嶉
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public static bool wmsUpdateStatus(WMSStatusInfo model)
+        {
+            var msg = "";
+            var result = false;
+            LogHelper.Info("WMS鐗╂祦璋冨害鐘舵�鍙嶉, 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "杞﹂棿鎺у埗鍣�);
+            var request = JsonConvert.SerializeObject(model);
+            var response = apiHelper.Post(baseUrl + "/api/hecWms/logistics/wmsUpdateStatus", request);
+            msg = $"[杞﹂棿鎺у埗鍣�updateStatus] request={request} response={response}";
+            Console.WriteLine(msg);
+            LogHelper.Info("WMS鐗╂祦璋冨害鐘舵�鍙嶉, 鍑哄弬锛� + JsonConvert.SerializeObject(response), "杞﹂棿鎺у埗鍣�);
+            if (response != null && response != "")
+            {
+                try
+                {
+                    var dataResult = JsonConvert.DeserializeObject<ResponseData>(response);
+                    if (dataResult.success)
+                    {
+                        result = dataResult.code.Equals("200");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine(ex.Message);
+                }
+            }
+            else
+            {
+                msg = "[杞﹂棿鎺у埗鍣�updateStatus]WMS鐗╂祦璋冨害鐘舵�鍙嶉澶辫触";
+                Console.WriteLine(msg);
+            }
+            LogHelper.Info(msg, "杞﹂棿鎺у埗鍣�);
+            return result;
+        }
+
+        /// <summary>
         /// 鐗╂祦璋冨害鎺ュ彛
         /// </summary>
         /// <param name="model"></param>
@@ -327,6 +366,12 @@
             public string reason { get; set; } // 澶辫触鍘熷洜
         }
 
+        public class WMSStatusInfo
+        {
+            public string wmsId { get; set; } // wms浠诲姟ID
+            public string errMsg { get; set; } // 閿欒淇℃伅
+        }
+
         public class UnBindInfo { 
             public string processTaskId { get; set; }  // 宸ュ簭浠诲姟ID
             public string trayCode{ get; set; } // 鎵樼洏缂栫爜
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/wms/WMSHelper.cs
index fa13ebf..cfbaf3f 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.HD/wms/WMSHelper.cs
@@ -676,8 +676,9 @@
         /// <param name="itemCode"></param>
         /// <param name="roadway">鎺ラ┏浣嶆墍鍦ㄥ贩閬�/param>
         /// <param name="row">鎺ラ┏浣嶆墍鍦ㄦ帓</param>
+        /// <param name="thresholdValue">搴撳闃堝�</param>
         /// <returns></returns>
-        public static Location GetEndLocation(string areaCode, string itemCode ,int roadway ,int row)
+        public static Location GetEndLocation(string areaCode, string itemCode ,int roadway ,int row ,int thresholdValue = 1)
         {
             Location loc = null;
             try
@@ -718,7 +719,7 @@
                                 .LeftJoin<WCSTask>((a,b) => a.S_CODE == b.S_OP_CODE)
                               .LeftJoin<Location>((a, b ,c) => b.S_END_LOC == c.S_CODE)
                               .Where((a, b, c) => b.S_END_AREA == storeAreaInfo.accessArea && c.N_ROADWAY == roadway && a.N_B_STATE < 2 && b.S_TYPE.Contains("鍏ュ簱")).Count();
-                        if (locList.Count - 2 > taskNum)
+                        if (locList.Count - thresholdValue > taskNum)
                         {
                             // 銆�.2銆戞煡璇㈡繁搴�N_DEEP = 2 ,浣嶇疆 N_POS = 1 涓�鐗╂枡鐩稿悓 鐨勮揣浣�                             var sameItemLocList = db.Queryable<Location>()
@@ -764,7 +765,7 @@
                 }
             }
             catch (Exception ex) {
-                LogHelper.Error("GetEndLocation:" + ex.Message, ex);
+                LogHelper.Info("鑾峰彇鍏ュ簱缁堢偣鎶ラ敊锛岄敊璇俊鎭�" + ex.Message,"WMS");
             }
             return loc;
         }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/ApiHelper.cs
index 23136fe..ef363a5 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/ApiHelper.cs
@@ -11,6 +11,7 @@
 using System.Linq;
 using System.Threading;
 using static HH.WCS.Mobox3.SXJK.api.ApiModel;
+using static HH.WCS.Mobox3.SXJK.api.MoboxController;
 using static HH.WCS.Mobox3.SXJK.api.OtherModel;
 using static HH.WCS.Mobox3.SXJK.api.WmsController;
 using static HH.WCS.Mobox3.SXJK.api.WmsController.PutawayOrderIn;
@@ -563,6 +564,35 @@
         }
 
         /// <summary>
+        /// 鍏ュ簱鍗曢噸缃�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public static SimpleResult inventoryReceiptReset(InventoryReceiptResetModel model) 
+        {
+            SimpleResult simpleResult = new SimpleResult();
+            var inStockList = WMSHelper.GetInStockList(model.asnNo);
+            if (inStockList != null) 
+            {
+                var inStockListChildren = WMSHelper.getInstockListChild(model.asnNo);
+                if(inStockListChildren.Count > 0) 
+                {
+                    foreach (var child in inStockListChildren)
+                    {
+                        var locCntrRel = LocationHelper.GetLocCntrRelByCntr(child.S_TRACE_ID);
+                        if (locCntrRel != null) 
+                        {
+                            LocationHelper.UnBindingLoc(locCntrRel.S_LOC_CODE, new List<string>() { locCntrRel.S_CNTR_CODE });
+                        }
+
+                        ContainerHelper.deleteCntrItem(child.S_TRACE_ID);
+                    }
+                }
+            }
+            return simpleResult;
+        }
+
+        /// <summary>
         /// 鏇存柊鎶芥淇℃伅
         /// </summary>
         /// <param name="model"></param>
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/MoboxController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/MoboxController.cs
index a89347e..1d88ff7 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/MoboxController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/MoboxController.cs
@@ -20,6 +20,24 @@
     public class MoboxController : System.Web.Http.ApiController {
 
         /// <summary>
+        /// 鍏ュ簱鍗曢噸缃�+        /// </summary>
+        /// <returns></returns>
+        public SimpleResult inventoryReceiptReset(InventoryReceiptResetModel model)
+        {
+            LogHelper.Info("[鍏ュ簱鍗曢噸缃甝inventoryReceiptReset 鍏ュ弬锛� + JsonConvert.SerializeObject(model), "Mobox");
+            SimpleResult simpleResult = new SimpleResult();
+            ApiHelper.inventoryReceiptReset(model);
+            LogHelper.Info("[鍏ュ簱鍗曢噸缃甝inventoryReceiptReset 鍑哄弬锛� + JsonConvert.SerializeObject(simpleResult), "Mobox");
+            return simpleResult;
+        }
+
+        public class InventoryReceiptResetModel 
+        {
+            public string asnNo { get; set; }  // 鍏ュ簱鍗曞彿
+        }
+
+        /// <summary>
         /// 杩滅▼鍚姩杈撻�绾�         /// </summary>
         /// <returns></returns>
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/WmsController.cs
index deb2e93..cd94f84 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/WmsController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/api/WmsController.cs
@@ -145,7 +145,7 @@
                     if (!result)
                     {
                         es_bc_info.TYPE = "E";
-                        es_bc_info.MSG = "绉诲簱鍗曞悓姝ラ敊璇�;
+                        es_bc_info.MSG = "杞Щ鍗曞悓姝ラ敊璇�;
                     }
                 });
             }
@@ -184,7 +184,7 @@
 
             try
             {
-                model.IT_DATA.ForEach(a =>
+                model.IT_DATA.ForEach( a =>
                 {
                    var result = ApiHelper.shiftingStockOrderSync(a);
                     if (!result) {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/core/WCSCore.cs
index d1dad47..b8f72dd 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/core/WCSCore.cs
@@ -225,13 +225,22 @@
                                                 var cntrItemRels = ContainerHelper.GetCntrItemRel(cntrCode);
                                                 if (cntrItemRels != null && cntrItemRels.Count > 0)
                                                 {
-                                                    LogHelper.Info($"OperateGZTaskStatus: 2 ,cntrCode:{cntrCode},S_ASN_NO ={cntrItemRels[0].S_ASN_NO},", "WMS");
-                                                    var inStockListChilds = WMSHelper.getInstockListChild(cntrCode, cntrItemRels[0].S_ASN_NO);
+                                                    var cntrItemRel = cntrItemRels[0];
+                                                    LogHelper.Info($"OperateGZTaskStatus: 2 ,cntrCode:{cntrCode},S_ASN_NO ={cntrItemRel.S_ASN_NO},", "WMS");
+                                                    var inStockListChilds = WMSHelper.getInstockListChild(cntrCode, cntrItemRel.S_ASN_NO);
                                                     LogHelper.Info($"OperateGZTaskStatus: 2 ,inStockListChilds.count:{inStockListChilds.Count}", "WMS");
                                                     if (inStockListChilds != null && inStockListChilds.Count > 0) 
                                                     {
                                                         LogHelper.Info("OperateGZTaskStatus: 3", "WMS");
-                                                        receiveGoodsFeedback(inStockListChilds, cntrItemRels[0].F_NET_WEIGHT.ToString(), cntrCode, TN_Task.S_END_LOC);
+                                                        receiveGoodsFeedback(inStockListChilds, cntrItemRel.F_NET_WEIGHT.ToString(), cntrCode, TN_Task.S_END_LOC);
+
+                                                        // 鍏ュ簱瀹屾垚锛屽洖鎶MS鍚庯紝鏇存柊SPA鎵规鍙�+                                                        var inStockListChildren = Monitor.getInStockTrayInfo(cntrCode);
+                                                        if (inStockListChildren != null && inStockListChildren.Count > 0) 
+                                                        {
+                                                            cntrItemRel.LOTATT04 = inStockListChildren[0].LOTATT04;
+                                                            ContainerHelper.UpdateCntrItemRel(cntrItemRel);
+                                                        }
                                                     }
                                                 }
                                             }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs
index e403702..f738cab 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/core/Monitor.cs
@@ -66,7 +66,7 @@
                 LogHelper.Info($"缂撳瓨淇″彿澶勭悊锛岀紦瀛業P锛歿item.Key}", "TSSG");
                 var instockInfo = item.Value;
                 var end = WMSHelper.GetInstockEnd(instockInfo.item, instockInfo.endArea);
-                LogHelper.Info("(缂撳瓨淇″彿)缁堢偣璐т綅锛� + JsonConvert.SerializeObject(end), "TSSG");
+                LogHelper.Info($"(缂撳瓨淇″彿锛岀洰鏍囧簱鍖猴細{instockInfo.endArea},鐗╂枡缂栫爜锛歿instockInfo.item})缁堢偣璐т綅锛� + JsonConvert.SerializeObject(end), "TSSG");
                 if (end != null)
                 {
                     ApiHelper.Instock(instockInfo);
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/HH.WCS.Mobox3.YNJT_BZP.csproj b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/HH.WCS.Mobox3.YNJT_BZP.csproj
index f1bf06a..0e8f220 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/HH.WCS.Mobox3.YNJT_BZP.csproj
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/HH.WCS.Mobox3.YNJT_BZP.csproj
@@ -257,6 +257,8 @@
     <Compile Include="models\Area.cs" />
     <Compile Include="models\EmptyTrayBuffer.cs" />
     <Compile Include="models\ItemBarcodeInfo.cs" />
+    <Compile Include="models\iWMS_semi_bld_BCsample.cs" />
+    <Compile Include="models\iWMS_semi_bld_BCstatus.cs" />
     <Compile Include="models\MatlInformation.cs" />
     <Compile Include="models\OI_WMS_OP_DEF.cs" />
     <Compile Include="models\OI_WMS_SCHEDULE_TYPE.cs" />
@@ -296,6 +298,7 @@
     <Compile Include="models\TN_OOS_Order.cs" />
     <Compile Include="models\TN_YiKuDetail.cs" />
     <Compile Include="models\TN_YiKuOrder.cs" />
+    <Compile Include="models\Trfloc.cs" />
     <Compile Include="models\WHInventory.cs" />
     <Compile Include="models\TN_WMS_Const.cs" />
     <Compile Include="models\WorkOrder.cs" />
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
index 7777326..4b65c2b 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -28,6 +28,7 @@
 
         }
 
+
         /// <summary>
         /// 1.鍒涘缓鍏ュ簱浠诲姟
         /// </summary>
@@ -44,39 +45,6 @@
                         result.ResultCode = 1;
                         result.ResultMsg = "鐗╂枡淇℃伅涓嶈兘涓虹┖";
                         return result;
-                    }
-                    else 
-                    {
-                        foreach (var item in itemInfos)
-                        {
-                            // 灏哅ES鐨勭墿鏂欑姸鎬佽浆鍖栨垚WMS鍙瘑鍒殑鐗╂枡鐘舵�
-                            if (item.jdge == "" || item.jdge == null)
-                            {
-                                item.jdge = "OK";
-                            }
-                            else if(item.jdge != "OK")
-                            {
-                                item.jdge = "HOLD";
-                            }
-
-                            // 璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂�-                            var overage = WMSHelper.getOverage(item.bc_entried);
-                            LogHelper.Info($"璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂达紝杩斿洖鍊硷細{JsonConvert.SerializeObject(overage)}", "WMS");
-                            if (overage != null)
-                            {
-                                DateTime txndate = DateTime.Parse(item.txndate);
-                                DateTime minTime = txndate.AddHours(overage.MINHOUR);
-                                DateTime maxTime = txndate.AddDays(overage.OVERAGE);
-                                item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss");
-                                item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss");
-                            }
-                            else 
-                            {
-                                result.ResultCode = 1;
-                                result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}";
-                                return result;
-                            }
-                        }
                     }
                 }
 
@@ -267,6 +235,13 @@
 
                         if (endLoc != null)
                         {
+                            string taskType = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�;
+                            if (model.taskType == 2) 
+                            {
+                                taskType = "鎶芥鍙枡鍑哄簱浠诲姟";
+                            }
+
+
                             var wmsTask = new WMSTask()
                             {
                                 S_CNTR_CODE = descCntrCode,
@@ -275,9 +250,9 @@
                                 S_START_AREA = startLoc.S_AREA_CODE,
                                 S_END_LOC = endLoc.S_CODE,
                                 S_END_AREA = endLoc.S_AREA_CODE,
-                                S_TYPE = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
+                                S_TYPE = taskType,
                                 S_OP_DEF_CODE = model.taskNo,
-                                S_OP_DEF_NAME = "鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�,
+                                S_OP_DEF_NAME = "鍙枡鍑哄簱浠诲姟",
                                 N_PRIORITY = model.priority,
                                 T_START_TIME = DateTime.Now,
                             };
@@ -347,40 +322,8 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                if(model.itemInfo != null && model.itemInfo.Count > 0)
-                {
-                    foreach (var item in model.itemInfo)
-                    {
-                        // 灏哅ES鐨勭墿鏂欑姸鎬佽浆鍖栨垚WMS鍙瘑鍒殑鐗╂枡鐘舵�
-                        if (item.jdge == "" || item.jdge == null)
-                        {
-                            item.jdge = "OK";
-                        }
-                        else if (item.jdge != "OK")
-                        {
-                            item.jdge = "HOLD";
-                        }
-
-                        var overage = WMSHelper.getOverage(item.bc_entried);
-                        if (overage != null && overage.OVERAGE != 0)
-                        {
-                            DateTime txndate = DateTime.Parse(item.txndate);
-                            DateTime minTime = txndate.AddHours(overage.MINHOUR);
-                            DateTime maxTime = txndate.AddDays(overage.OVERAGE);
-                            item.effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss");
-                            item.expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss");
-                        }
-                        else
-                        {
-                            result.ResultCode = 1;
-                            result.ResultMsg = $"鏈煡璇㈠埌鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅锛屾潯褰㈢爜锛歿item.bc_entried}";
-                            return result;
-                        }
-                    }
-                }
-
                 var container = ContainerHelper.GetCntr(model.trayCode);
-                if (container != null) 
+                if (container != null)
                 {
                     Location startLoc = LocationHelper.GetLoc(model.startLoc);
                     Location endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, model.startLoc, 2);
@@ -446,8 +389,13 @@
                     else
                     {
                         result.ResultCode = 1;
-                        result.ResultMsg = "娌℃湁绌轰綑鐨勮揣浣�;
+                        result.ResultMsg = "绔嬪簱娌℃湁绌轰綑鐨勮揣浣�;
                     }
+                }
+                else 
+                {
+                    result.ResultCode = 1;
+                    result.ResultMsg = "WMS绯荤粺涓病鏈夎瀹瑰櫒";
                 }
             }
             catch (Exception ex)
@@ -1090,19 +1038,15 @@
                 {
                     S_ITEM = matl.item,
                     S_BC_ENTRIED = matl.bc_entried,
+                    S_TOOLING_CODE = matl.toolineCode,
                     S_MCN = matl.mcn,
-                    S_OPR = matl.opr,
                     TXNDATE = DateTime.Parse(matl.txndate, enGB) ,
                     S_SHIFT = matl.shift,
                     N_QTY = matl.qty,
-                    N_STOCK = matl.stock,
-                    S_LOKASI = matl.lokasi,
-                    S_SARANA = matl.sarana,
-                    BOM1 = matl.bom1,
-                    BOM2 = matl.bom2,
-                    BOM3 = matl.bom3,
-                    S_FOVRAGE = matl.fovrage,
                     S_JDGE = matl.jdge,
+                    N_OVERAGE = matl.overagv,
+                    N_MINHOUR = matl.minhour,
+                    N_PRODUCT_TYPE_CODE = matl.productTypeCode,
                     LAST_MODIFY_TIME = matl.last_modify_time
                 };
                 itemBarcodeInfos.Add(itemBarcodeInfo);
@@ -1112,102 +1056,87 @@
             if (!bo) 
             {
                 responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "鍚屾鐗╂枡鏉$爜淇℃伅澶辫触";
+                responseResult.ResultMsg = "鍚屾GT鏉$爜鐗╂枡淇℃伅澶辫触";
             }
             return responseResult;
         }
 
         /// <summary>
-        /// 鍚屾鐗╂枡鐘舵�淇℃伅
+        /// 鍚屾鏉$爜鐘舵�淇℃伅
         /// </summary>
         /// <param name="updateMatlStatuses"></param>
         /// <returns></returns>
-        public static ReturnResult synUpdateMatlStatus(List<UpdateMatlStatus> updateMatlStatuses)
+        public static ReturnResult synBarcodeStatus(List<UpdateMatlStatus> updateMatlStatuses)
         {
             ReturnResult responseResult = new ReturnResult();
-            var bo = WMSHelper.batchUpdateItemStatus(updateMatlStatuses);
-            if (!bo)
+            List<iWMS_semi_bld_BCstatus> list = new List<iWMS_semi_bld_BCstatus> ();
+            if (updateMatlStatuses.Count > 0) 
             {
-                responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触";
-            }
-            return responseResult;
-        }
-
-        /// <summary>
-        /// 鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅
-        /// </summary>
-        /// <param name="overages"></param>
-        /// <returns></returns>
-        public static ReturnResult synUpdateMatlTimeConfig(List<MatlOverage> overages)
-        {
-            ReturnResult responseResult = new ReturnResult();
-            if (overages != null && overages.Count > 0) 
-            {
-                List<Overage> overageList = new List<Overage>();
-                foreach (var item in overages)
+                foreach (var item in updateMatlStatuses)
                 {
-                    Overage overage = new Overage
+                    iWMS_semi_bld_BCstatus bCstatus = new iWMS_semi_bld_BCstatus() 
                     {
-                        MCNGRP = item.mcngrp,
-                        ITEMPATT = item.itempatt,
-                        OVERAGE = item.overage,
-                        MINHOUR = float.Parse(item.minhour.ToString()),
-                        FLAG_STS = item.flag_sts,
-                        RECID = item.recid,
+                        S_BC_ENTRIED = item.bc_entried,
+                        S_MCNGRP = item.mcngrp,
+                        S_JDGE = item.jdge,
+                        LAST_MODIFY_TIME = item.last_modify_time
                     };
-                    overageList.Add(overage);
+                    list.Add(bCstatus);
                 }
-                var bo = WMSHelper.batchUpdateMatlTimeConfig(overageList);
+
+                var bo = WMSHelper.synBarcodeStatus(list);
                 if (!bo)
                 {
                     responseResult.ResultCode = 1;
-                    responseResult.ResultMsg = "鍚屾鐗╂枡鐘舵�淇℃伅澶辫触";
+                    responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触";
                 }
             }
             return responseResult;
         }
 
         /// <summary>
-        /// 璁板綍鏁版嵁鍚屾鏃堕棿
+        /// 鍚屾鏉$爜鐘舵�淇℃伅
         /// </summary>
-        /// <param name="model"></param>
+        /// <param name="updateMatlStatuses"></param>
         /// <returns></returns>
-        public static ReturnResult recordDataSynTime(RecordDataSynTimeModel model)
+        public static ReturnResult synSamplingStatus(List<UpdateMatlStatus> updateMatlStatuses)
         {
             ReturnResult responseResult = new ReturnResult();
-            SynDataTimeRecord record = new SynDataTimeRecord() 
+            List<iWMS_semi_bld_BCsample> list = new List<iWMS_semi_bld_BCsample>();
+            if (updateMatlStatuses.Count > 0)
             {
-                S_SYN_TIME = model.sysTime,
-                N_SYN_NUM = model.synNum,
-                RECORD_TABLE = model.recordTable
-            }; 
-            var bo = WMSHelper.addSynDataTimeReord(record);
-            if (!bo)
-            {
-                responseResult.ResultCode = 1;
-                responseResult.ResultMsg = "璁板綍鏁版嵁鍚屾鏃堕棿澶辫触";
+                foreach (var item in updateMatlStatuses)
+                {
+                    iWMS_semi_bld_BCsample bCstatus = new iWMS_semi_bld_BCsample()
+                    {
+                        S_BC_ENTRIED = item.bc_entried,
+                        S_MCNGRP = item.mcngrp,
+                        S_JDGE = item.jdge,
+                        LAST_MODIFY_TIME = item.last_modify_time
+                    };
+                    list.Add(bCstatus);
+                }
+
+                var bo = WMSHelper.synSamplingStatus(list);
+                if (!bo)
+                {
+                    responseResult.ResultCode = 1;
+                    responseResult.ResultMsg = "鍚屾鏉$爜鐘舵�淇℃伅澶辫触";
+                }
             }
             return responseResult;
         }
-
 
         /// <summary>
         /// 鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿
         /// </summary>
-        /// <param name="recordTable"></param>
+        /// <param name="tableType"></param>
         /// <returns></returns>
-        public static ReturnResult findLastDataSynTime(string recordTable)
+        public static ReturnResult findDataLastSynTime(int tableType)
         {
             ReturnResult responseResult = new ReturnResult();
-            var synDataTime = WMSHelper.getLastDataSynTime(recordTable);
-            if (synDataTime != null) 
-            {
-                Dictionary<string, string> map = new Dictionary<string, string>();
-                map.Add("S_SYN_TIME", synDataTime.S_SYN_TIME);
-                map.Add("RECORD_TABLE", synDataTime.RECORD_TABLE);
-                responseResult.data = map;
-            }
+            var synDataTime = WMSHelper.getDataLastSynTime(tableType);
+            responseResult.data = synDataTime;
             return responseResult;
         }
 
@@ -1272,10 +1201,11 @@
         public class CreateOutOrderModel
         {
             public string taskNo { get; set; } // 浠诲姟鍙�-            public string trayCode { get; set; } // 浠诲姟鍙�+            public string trayCode { get; set; } // 鎵樼洏鍙�             public string itemCode { get; set; } // 鐗╂枡缂栫爜
             public string endLoc { get; set; } // 缁堢偣璐т綅
             public int priority { get; set; } = 0; // 浼樺厛绾�榛樿0
+            public int taskType { get; set; } = 1; // 1.鎴愬瀷鏈哄彨鏂欎换鍔�2.鎶芥鍑哄簱浠诲姟
         }
 
         public class EmptyTrayOutOrderModel
@@ -1300,16 +1230,15 @@
         {
             public string item { get; set; } // 鐗╁搧浠g爜
             public string bc_entried { get; set; } // 鏉″舰鐮佺紪鍙�+            public string toolineCode { get; set; } // 宸ヨ鏉$爜
             public string mcn { get; set; } // 鏈哄櫒浠g爜缂栧彿
-            public string opr { get; set; } // 鎿嶄綔鍛�             public string txndate { get; set; } // 鐢熶骇鏃堕棿
             public string shift { get; set; } // 宸ヤ綔鐝
             public int qty { get; set; } // 浜у搧鏁伴噺
-            public string sarana { get; set; } // 浜у搧鏉愭枡鐨勬墭鐩�鐩�鎺ㄨ溅/璐ц溅ID
-            public string fovrage { get; set; } // 鏄惁杩囨湡鐨勭姸鎬�Y=杩囨湡锛孨=鏈繃鏈�-            public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孨G=浜у搧涓嶅悎鏍硷紝HLM=浜у搧寰呭畾
-            public string effective_time { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
-            public string expiration_time { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public string jdge { get; set; } // 璐ㄩ噺鐘舵� OK=浜у搧鍚堟牸锛孒OLD = 浜у搧寰呭畾
+            public int overage { get; set; } // 鐢熸晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public int minhour { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
+            public int productTypeCode { get; set; } // 澶辨晥鏃堕棿 (yyyy-MM-dd HH:mm:ss)
         }
 
         
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/WmsController.cs
index 1d874e5..d2a4ece 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/WmsController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/WmsController.cs
@@ -55,18 +55,19 @@
         }
 
         /// <summary>
-        /// 3.鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔�+        /// 3.鍙枡鍑哄簱浠诲姟
         /// 涓氬姟鍦烘櫙锛�         /// 1.鎴愬瀷鏈哄懠鍙祦绋嬶紙甯︽潫/闆跺害 銆佽儙渚�銆丅EC銆佸唴琛�甯樺竷銆佽儙鍦�涓夎鑳讹級
+        /// 2.鎶芥鍑哄簱
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost]
         public ReturnResult createOutOrder(CreateOutOrderModel model)
         {
-            LogHelper.Info("銆�.鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔°�request锛� + JsonConvert.SerializeObject(model), "WMS");
+            LogHelper.Info("銆�.鍙枡鍑哄簱浠诲姟銆憆equest锛� + JsonConvert.SerializeObject(model), "WMS");
             var result = ApiHelper.createOutOrder(model);
-            LogHelper.Info("銆�.鎴愬瀷鏈哄彨鏂欏嚭搴撲换鍔°�response锛� + JsonConvert.SerializeObject(result), "WMS");
+            LogHelper.Info("銆�.鍙枡鍑哄簱浠诲姟銆憆esponse锛� + JsonConvert.SerializeObject(result), "WMS");
             return result;
         }
 
@@ -126,7 +127,7 @@
             LogHelper.Info("銆�.涓嬪彂姣嶆嫋鍑哄叆搴撲换鍔°�response锛� + JsonConvert.SerializeObject(result), "WMS");
             return result;
         }
-
+       
         // ------------------- WCS ----------------
 
         /// <summary>
@@ -144,22 +145,6 @@
             LogHelper.Info("銆�.WCS浠诲姟鐘舵�鍙嶉銆憆esponse锛� + JsonConvert.SerializeObject(result), "WMS");
             return result;
         }
-
-        /*/// <summary>
-        /// 8.WCS鍏ュ簱璇荤爜鍙嶉
-        /// 涓氬姟鍦烘櫙锛歐CS鍦ㄦ墽琛屼换鍔℃椂锛屽洖鎶ヤ换鍔$姸鎬�-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        [HttpPost]
-        *//*[Route("notifyTaskStatus")]*//*
-        public ReturnResult readCodeFeedback(ReadCodeFeedbackModel model)
-        {
-            LogHelper.Info("銆�.WCS鍏ュ簱璇荤爜鍙嶉銆慠equest锛� + JsonConvert.SerializeObject(model), "WMS");
-            var result = ApiHelper.readCodeFeedback(model);
-            LogHelper.Info("銆�.WCS鍏ュ簱璇荤爜鍙嶉銆憆esponse锛� + JsonConvert.SerializeObject(result), "WMS");
-            return result;
-        }*/
 
         /// <summary>
         /// 8.WCS鍙嶉璐т綅鐘舵�
@@ -181,14 +166,6 @@
             return result;
         }
 
-        public class LocStateFeedBackModel
-        {
-            public string reqId { get; set; }
-            public string reqTime { get; set; }
-            public string loc_code { get; set; } // 绔欏彴缂栫爜
-            public string type { get; set; } // 璇锋眰绫诲瀷 1 鍏佽鍙栬揣 2 鍏佽鏀捐揣
-            public string req_no { get; set; } // 浠诲姟鍙�-        }
 
         // ----------------------------------- GT --------------------------------------------------------------
 
@@ -209,65 +186,48 @@
         }
 
         /// <summary>
-        /// 10.鍚屾鏇存柊鐗╂枡鐘舵�
-        /// 涓氬姟鍦烘櫙锛欸T鐨勭姸鎬佽繘琛屾洿鏂帮紝wms涔熼渶瑕佸悓姝ユ洿鏂�+        /// 10.鍚屾鏉$爜鐘舵�淇℃伅
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost]
         /*[Route("notifyTaskStatus")]*/
-        public ReturnResult synUpdateMatlStatus(SynUpdateMatlStatusModel model)
+        public ReturnResult synBarcodeStatus(SynUpdateMatlStatusModel model)
         {
-            LogHelper.Info("銆�0.鍚屾鏇存柊鐗╂枡鐘舵�銆慠equest锛� + JsonConvert.SerializeObject(model), "GT");
-            var result = ApiHelper.synUpdateMatlStatus(model.updateMatlStatuses);
-            LogHelper.Info("銆�0.鍚屾鏇存柊鐗╂枡鐘舵�銆憆esponse锛� + JsonConvert.SerializeObject(result), "GT");
+            LogHelper.Info("銆�0.鍚屾鏉$爜鐘舵�琛ㄤ俊鎭�Request锛� + JsonConvert.SerializeObject(model), "GT");
+            var result = ApiHelper.synBarcodeStatus(model.updateMatlStatuses);
+            LogHelper.Info("銆�0.鍚屾鏉$爜鐘舵�琛ㄤ俊鎭�response锛� + JsonConvert.SerializeObject(result), "GT");
             return result;
         }
 
         /// <summary>
-        /// 11.璁板綍鏁版嵁鍚屾鏃堕棿
+        /// 11.鍚屾鎶芥鐘舵�琛ㄤ俊鎭�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        /*[Route("notifyTaskStatus")]*/
+        public ReturnResult synSamplingStatus(SynUpdateMatlStatusModel model)
+        {
+            LogHelper.Info("銆�1.鍚屾鎶芥鐘舵�琛ㄤ俊鎭�Request锛� + JsonConvert.SerializeObject(model), "GT");
+            var result = ApiHelper.synSamplingStatus(model.updateMatlStatuses);
+            LogHelper.Info("銆�1.鍚屾鎶芥鐘舵�琛ㄤ俊鎭�response锛� + JsonConvert.SerializeObject(result), "GT");
+            return result;
+        }
+
+        /// <summary>
+        /// 11.鏌ヨ涓棿琛ㄦ渶鍚庣殑鍚屾鏃堕棿
         /// 涓氬姟鍦烘櫙锛氳褰曠墿鏂欐潯鐮佷俊鎭悓姝ャ�鐗╂枡鐘舵�淇℃伅鍚屾鏃堕棿
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
         [HttpPost]
         /*[Route("notifyTaskStatus")]*/
-        public ReturnResult recordDataSynTime(RecordDataSynTimeModel model)
+        public ReturnResult findDataLastSynTime(SynTableModel model)
         {
-            LogHelper.Info("銆�1.璁板綍鏁版嵁鍚屾鏃堕棿銆慠equest锛� + JsonConvert.SerializeObject(model), "GT");
-            var result = ApiHelper.recordDataSynTime(model);
-            LogHelper.Info("銆�1.璁板綍鏁版嵁鍚屾鏃堕棿銆憆esponse锛� + JsonConvert.SerializeObject(result), "GT");
-            return result;
-        }
-
-        /// <summary>
-        /// 12.鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿
-        /// 涓氬姟鍦烘櫙锛氳褰曠墿鏂欐潯鐮佷俊鎭悓姝ャ�鐗╂枡鐘舵�淇℃伅鍚屾鏃堕棿
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        [HttpPost]
-        /*[Route("notifyTaskStatus")]*/
-        public ReturnResult findLastDataSynTime(RecordDataSynTimeModel model)
-        {
-            LogHelper.Info("銆�2.鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿銆慠equest锛� + JsonConvert.SerializeObject(model), "GT");
-            var result = ApiHelper.findLastDataSynTime(model.recordTable);
-            LogHelper.Info("銆�2.鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿銆憆esponse锛� + JsonConvert.SerializeObject(result), "GT");
-            return result;
-        }
-
-        /// <summary>
-        /// 13.鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆琛�-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        [HttpPost]
-        /*[Route("notifyTaskStatus")]*/
-        public ReturnResult synUpdateMatlTimeConfig(MatlTimeConfigModel model)
-        {
-            LogHelper.Info("銆�3.鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆琛ㄣ�Request锛� + JsonConvert.SerializeObject(model), "GT");
-            var result = ApiHelper.synUpdateMatlTimeConfig(model.overages);
-            LogHelper.Info("銆�3.鍚屾鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆琛ㄣ�response锛� + JsonConvert.SerializeObject(result), "GT");
+            LogHelper.Info("銆�1.鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿銆慠equest锛� + JsonConvert.SerializeObject(model), "GT");
+            var result = ApiHelper.findDataLastSynTime(model.tableType);
+            LogHelper.Info("銆�1.鏌ヨ涓婁竴娆$殑鏁版嵁鍚屾鏃堕棿銆憆esponse锛� + JsonConvert.SerializeObject(result), "GT");
             return result;
         }
 
@@ -287,12 +247,18 @@
             public string last_modify_time { get; set; }
         }
 
-        public class RecordDataSynTimeModel 
+        public class LocStateFeedBackModel
         {
-            public string sysTime { get; set; } // 鍚屾鏃堕棿
-            public int synNum { get; set; }  // 鍚屾鏁伴噺
-            public string recordTable { get; set; } // 1.鐗╂枡鏉$爜璁板綍琛�2.鑳氳儙鏉$爜鐘舵�琛�3.鐗╂枡瀛樻斁鏃堕棿閰嶇疆琛�+            public string reqId { get; set; }
+            public string reqTime { get; set; }
+            public string loc_code { get; set; } // 绔欏彴缂栫爜
+            public string type { get; set; } // 璇锋眰绫诲瀷 1 鍏佽鍙栬揣 2 鍏佽鏀捐揣
+            public string req_no { get; set; } // 浠诲姟鍙�+        }
 
+        public class SynTableModel
+        {
+            public int tableType { get; set; } // 1.鍗婂埗鍝佹潯鐮佷俊鎭〃 2.鏉$爜鐘舵�琛�3.鎶芥鐘舵�琛�         }
 
         public class SynUpdateMatlStatusModel
@@ -303,7 +269,9 @@
         public class UpdateMatlStatus
         {
             public string bc_entried { get; set; }
+            public string mcngrp { get; set; }
             public string jdge { get; set; }
+            public string last_modify_time { get; set; }
         }
 
         public class SynMatlInformationModel 
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
index 27a5a5f..a0ea283 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
@@ -138,5 +138,16 @@
                 }
             }
         }
+
+
+
+        /// <summary>
+        /// 鏉$爜鐘舵�鏇存柊
+        /// </summary>
+        public static void BarcodeStatusUpdate() 
+        {
+            
+        }
+
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
index 1758ea2..5fac5a1 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
@@ -81,27 +81,30 @@
                                         {
                                             LogHelper.Info($"浠诲姟鍙凤細{TN_Task.S_CODE}锛孉GV浠诲姟瀹屾垚锛屼换鍔′俊鎭洖鎶T", "AGV");
                                             string shift = ApiHelper.getShift(DateTime.Now.TimeOfDay);
-                                            string ydate_shiftName = "";
+                                            string ydate= "";
                                             if (shift == "III")
                                             {
-                                                ydate_shiftName = DateTime.Now.AddDays(-1).ToString("yy/MM/dd") + "-" + shift;
+                                                ydate = DateTime.Now.AddDays(-1).ToString("dd/MM/yy");
                                             }
                                             else
                                             {
-                                                ydate_shiftName = DateTime.Now.ToString("yy/MM/dd") + "-" + shift;
+                                                ydate = DateTime.Now.ToString("dd/MM/yy");
                                             }
-                                            WmsToGtLokasiModel wmsToGtLokasiModel = new WmsToGtLokasiModel()
+                                            Trfloc trfloc = new Trfloc()
                                             {
-                                                ydate_shiftName = ydate_shiftName,
+                                                recid = 1,
+                                                ydate = ydate,
+                                                shift = shift,
                                                 bc_entried = cntrItemRels[0].S_CG_ID,
                                                 loc_from = TN_Task.S_START_LOC,
                                                 loc_to = TN_Task.S_END_LOC,
-                                                qty = 1,
+                                                qty = cntrItemRels[0].F_QTY,
                                                 lot = 1,
                                                 scantime = TN_Task.T_CREATE.ToString("yyyy-MM-dd HH:mm:ss"),
-                                                pic = model.ForkliftNo
+                                                pic = model.ForkliftNo,
+                                                last_modify_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")
                                             };
-                                            GtDispatch.agvTaskFeedback(wmsToGtLokasiModel);
+                                           
                                         }
                                         break;
                                     case 7:
@@ -347,6 +350,7 @@
                         {
                             // 婊℃枡鎵樼洏鍏ュ簱
                             itemCode = cntrItemRels[0].S_ITEM_CODE;
+                            int itemType = cntrItemRels[0].N_PRODUCT_TYPE_CODE;
                             var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1, itemCode);
                             if (endLoc != null)
                             {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/dispatch/GtDispatch.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/dispatch/GtDispatch.cs
index 2c59433..ae3dada 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/dispatch/GtDispatch.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/dispatch/GtDispatch.cs
@@ -59,14 +59,17 @@
 
         public class WmsToGtLokasiModel
         {
-            public string ydate_shiftName { get; set; } // 鏃堕棿_鐝
+            public int recid { get; set; } 
+            public string ydate { get; set; }  // 鐝鏃ユ湡
+            public string shift { get; set; }  // 鐝
             public string bc_entried { get; set; }  // 鏉$爜
             public string loc_from { get; set; } // 璧风偣璐т綅
             public string loc_to { get; set; } // 缁堢偣璐т綅
-            public int qty { get; set; } // 鏁伴噺
-            public int lot { get; set; } // 鎵樻暟
+            public float qty { get; set; } // 鏁伴噺
+            public int lot { get; set; } = 1; // 鎵樻暟
             public string scantime { get; set; } // 鎵爜鍒涘缓浠诲姟鏃堕棿
             public string pic { get; set; }  // 灏忚溅鍙�+            public string last_modify_time { get; set; } // 鎵爜鍒涘缓浠诲姟鏃堕棿
         }
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/CntrItemRel.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/CntrItemRel.cs
index 6e004f4..241fa0d 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/CntrItemRel.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/CntrItemRel.cs
@@ -9,31 +9,19 @@
     [SugarTable("TN_CG_Detail")]
     public class CntrItemRel : BaseModel
     {
-        public string S_CG_ID { get; set; } // 条形码编码
-        public string S_SERIAL_NO { get; set; }
-        public string S_ITEM_CODE { get; set; }   // 物品代码
-        public string S_ITEM_NAME { get; set; } = "";
-        public string S_ITEM_SPEC { get; set; }
-        public string S_ITEM_STATE { get; set; } = "OK";  // OK=产品合格,NG=产品不合格,HLM=产品待定
-        /// <summary>
-        /// 1:合格 2:不合格 
-        /// </summary>
-        public int N_ITEM_STATE { get; set; }
-        public string S_BATCH_NO { get; set; } = "";
-
-        public float F_QTY { get; set; }  // 产品数量
-
         [SugarColumn(IsPrimaryKey = true)]
-        public string S_CNTR_CODE { get; set; }
+        public string S_CNTR_CODE { get; set; }  // 容器编码
+        public string S_CG_ID { get; set; } // 条形码编码
+        public string S_ITEM_CODE { get; set; }   // 物品代码
+        public string S_ITEM_STATE { get; set; } = "OK";  // OK=产品合格,HODE=产品待定
+        public float F_QTY { get; set; }  // 产品数量
 
         // ------------------ 印尼半制品 -------------------
         public string S_MCN { get; set; }  // 机器代码编号
-        public string S_OPR { get; set; }  // 操作员
         public string S_TXNDATE { get; set; }  // 生产时间
         public string S_SHIFT { get; set; }  // 工作班次 
-        public string S_FOVRAGE { get; set; } = "N"; // 是否过期的状态  Y=过期,N=未过期
         public string S_EFFECTIVE_TIME { get; set; }  // 生效时间  
         public string S_EXPIRATION_TIME { get; set; }  // 失效时间    
-        public string S_SARANA { get; set; } // 托盘ID
+        public int N_PRODUCT_TYPE_CODE { get; set; } // 物料类别编码
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/ItemBarcodeInfo.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/ItemBarcodeInfo.cs
index d864157..6d73c61 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/ItemBarcodeInfo.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/ItemBarcodeInfo.cs
@@ -7,24 +7,23 @@
 
 namespace HH.WCS.Mobox3.YNJT_BZP.models
 {
-    [SugarTable("TN_Item_Barcode_H")]
+    /// <summary>
+    /// 鍗婂埗鍝佹潯鐮佷俊鎭〃
+    /// </summary>
+    [SugarTable("TN_iWMS_semi_BCScan")]
     internal class ItemBarcodeInfo : BaseModel
     {
         public string S_ITEM { get; set; } // 浜у搧鏉愭枡鐨勭墿鍝佷唬鐮侊紙浠庢潯褰㈢爜鏁板瓧宸︿晶璧锋埅鍙栧墠10浣嶏級
         public string S_BC_ENTRIED { get; set; } // 浜у搧鏉愭枡鐨勬潯褰㈢爜缂栧彿
+        public string S_TOOLING_CODE { get; set; } // 宸ヨ鏉$爜
         public string S_MCN { get; set; } // 鏈哄櫒浠g爜缂栧彿
-        public string S_OPR { get; set; } // 鎿嶄綔鍛業D
         public DateTime TXNDATE { get; set; } // 浜у搧鏉愭枡鐨勭敓浜ф椂闂�         public string S_SHIFT { get; set; } // 宸ヤ綔鐝浠g爜锛堢彮娆�I (07:00~14:59) - 鐝 II (15:00~22:59) - 鐝 III (23:00~06:59)锛�         public int N_QTY { get; set; } // 棣栨鎵弿鐨勬潯鐮佺殑浜у搧鏁伴噺
-        public int N_STOCK { get; set; } // 鍦ㄥ姞宸ヨ繃绋嬩腑鐨勫疄鏃跺簱瀛樻暟閲�-        public string S_LOKASI { get; set; } // 浜у搧鏉愭枡鐨勪綅缃�浣嶇疆ID
-        public string S_SARANA { get; set; } // 浜у搧鏉愭枡鐨勬墭鐩�鐩�鎺ㄨ溅/璐ц溅ID
-        public string BOM1 { get; set; }
-        public string BOM2 { get; set; }
-        public string BOM3 { get; set; }
-        public string S_FOVRAGE { get; set; } // 鏄惁杩囨湡 鏄惁杩囨湡锛坣ull 鎴�绌�榛樿 鍚︼級 Y/N
         public string S_JDGE { get; set; }    // 璐ㄦ鐘舵�
+        public int N_OVERAGE { get; set; }    // 鏈夋晥鏈�+        public int N_MINHOUR { get; set; }    // 鏈�綆鏀剧疆鏈�+        public int N_PRODUCT_TYPE_CODE { get; set; }    // 鐗╂枡绫诲埆缂栫爜
         public string LAST_MODIFY_TIME { get; set; } // 鏈�悗淇敼鏃堕棿
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/MatlInformation.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/MatlInformation.cs
index 3354fa2..b7c5fa8 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/MatlInformation.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/models/MatlInformation.cs
@@ -14,19 +14,15 @@
     {
         public string item { get; set; } // 浜у搧鏉愭枡鐨勭墿鍝佷唬鐮侊紙浠庢潯褰㈢爜鏁板瓧宸︿晶璧锋埅鍙栧墠10浣嶏級
         public string bc_entried { get; set; } // 浜у搧鏉愭枡鐨勬潯褰㈢爜缂栧彿
+        public string toolineCode { get; set; } // 宸ヨ鏉$爜
         public string mcn { get; set; } // 鏈哄櫒浠g爜缂栧彿
-        public string opr { get; set; } // 鎿嶄綔鍛業D
         public string txndate { get; set; } // 浜у搧鏉愭枡鐨勭敓浜ф椂闂�         public string shift { get; set; } // 宸ヤ綔鐝浠g爜锛堢彮娆�I (07:00~14:59) - 鐝 II (15:00~22:59) - 鐝 III (23:00~06:59)锛�         public int qty { get; set; } // 棣栨鎵弿鐨勬潯鐮佺殑浜у搧鏁伴噺
-        public int stock { get; set; } // 鍦ㄥ姞宸ヨ繃绋嬩腑鐨勫疄鏃跺簱瀛樻暟閲�-        public string lokasi { get; set; } // 浜у搧鏉愭枡鐨勪綅缃�浣嶇疆ID
-        public string sarana { get; set; } // 浜у搧鏉愭枡鐨勬墭鐩�鐩�鎺ㄨ溅/璐ц溅ID
-        public string bom1 { get; set; }
-        public string bom2 { get; set; }
-        public string bom3 { get; set; }
-        public string fovrage { get; set; } // 鏄惁杩囨湡 鏄惁杩囨湡锛坣ull 鎴�绌�榛樿 鍚︼級 Y/N
-        public string jdge { get; set; }    // 璐ㄦ鐘舵�
+        public string jdge { get; set; }    // 璐ㄦ鐘舵�  OK / HOLD
+        public int overagv { get; set; }    // 鏈夋晥鏈�+        public int minhour { get; set; }    // 鏈�綆鏀剧疆鏃堕棿锛坔锛�+        public int productTypeCode { get; set; }    // 鐗╂枡绫诲埆缂栫爜
         public string last_modify_time { get; set; } // 鏈�悗淇敼鏃堕棿
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ContainerHelper.cs
index 8c7e7cf..0a6c74f 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ContainerHelper.cs
@@ -68,30 +68,6 @@
             var list = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ToList();
             return list;
         }
-        internal static bool BindNewCntrItem(string loc,string cntrCode, string itemCode) {
-            var res = false;
-            var itemName = ItemHelper.GetItemInfo(itemCode).S_ITEM_NAME;
-            var db = new SqlHelper<object>().GetInstance();
-            try {
-                db.BeginTran();
-                var cntr = new Container { S_CODE = cntrCode, N_DETAIL_COUNT = 1 };
-                db.Insertable(cntr).ExecuteCommand();
-                //鑾峰彇鐗╂枡淇℃伅锛屽~鍏呭埌瀹瑰櫒璐у搧鏄庣粏锛屾柟渚夸汉宸ユ煡鐪�-                var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), F_QTY = 1, S_ITEM_CODE = itemCode, S_ITEM_NAME = itemName };
-                db.Insertable<CntrItemRel>(cir).ExecuteCommand();
-                var lcr = new LocCntrRel { S_CNTR_CODE = cntrCode, S_LOC_CODE = loc };
-                db.Insertable<LocCntrRel>(lcr).ExecuteCommand();
-                db.CommitTran();
-                res = true;
-            }
-            catch (Exception ex) {
-                db.RollbackTran();
-                Console.WriteLine(ex.Message);
-            }
-
-            return res;
-        }
-
 
         internal static bool addCntrItem(string cntrCode, CntrItemRel cntrItemRel)
         {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ItemHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ItemHelper.cs
index d33696c..327b8b4 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ItemHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/ItemHelper.cs
@@ -59,6 +59,12 @@
             {
                 foreach (var itemInfo in itemInfos)
                 {
+                    DateTime txndate = DateTime.Parse(itemInfo.txndate);
+                    DateTime minTime = txndate.AddHours(itemInfo.minhour);
+                    DateTime maxTime = txndate.AddDays(itemInfo.overage);
+                    var effective_time = minTime.ToString("yyyy-MM-dd HH:mm:ss");
+                    var expiration_time = maxTime.ToString("yyyy-MM-dd HH:mm:ss");
+
                     CntrItemRel cntrItemRel = new CntrItemRel()
                     {
                         S_CNTR_CODE = cntrCode,
@@ -67,13 +73,11 @@
                         S_MCN = itemInfo.mcn,
                         S_ITEM_STATE = itemInfo.jdge,
                         F_QTY = itemInfo.qty,
-                        S_OPR = itemInfo.opr,
                         S_TXNDATE = itemInfo.txndate,
                         S_SHIFT = itemInfo.shift,
-                        S_FOVRAGE = itemInfo.fovrage,
-                        S_EFFECTIVE_TIME = itemInfo.effective_time,
-                        S_EXPIRATION_TIME = itemInfo.expiration_time,
-                        S_SARANA = itemInfo.sarana,
+                        S_EFFECTIVE_TIME = effective_time,
+                        S_EXPIRATION_TIME = expiration_time,
+                        N_PRODUCT_TYPE_CODE = itemInfo.productTypeCode
                     };
                     ContainerHelper.addCntrItem(cntrCode, cntrItemRel);
                 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
index b6d7694..d720822 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
@@ -561,6 +561,7 @@
         /// <param name="locCode"></param>
         /// <param name="trayType"></param>
         /// <param name="inWay">鍏ュ簱鏂瑰紡 1.鑷姩鍏ュ簱 2.浜哄伐鍏ュ簱</param>
+        /// <param name="itemCode">鐗╂枡缂栫爜</param>
         /// <returns></returns>
         public static Location GetInstockEndLoc(int trayType , string locCode = null , int inWay = 1 ,string itemCode = null)
         {
@@ -817,26 +818,22 @@
             try
             {
                 db.BeginTran();
-                itemBarcodeInfos.ForEach(item => {
-                    var itemBarcodeInfo = db.Queryable<ItemBarcodeInfo>().Where(a => a.S_BC_ENTRIED == item.S_BC_ENTRIED).First();
-                    if (itemBarcodeInfo == null) 
-                    {
-                        var bo = db.Insertable<ItemBarcodeInfo>(item).ExecuteCommand() > 0;
-                        if (!bo)
+                if (itemBarcodeInfos.Count > 0) 
+                {
+                    itemBarcodeInfos.ForEach(item => {
+                        var itemBarcodeInfo = db.Queryable<ItemBarcodeInfo>().Where(a => a.S_BC_ENTRIED == item.S_BC_ENTRIED).First();
+                        if (itemBarcodeInfo == null)
                         {
-                            result = false;
-                            LogHelper.Info($"娣诲姞鐗╂枡鏉$爜淇℃伅澶辫触锛岀墿鏂欐潯鐮佷俊鎭細{JsonConvert.SerializeObject(item)}", "GT");
+                            var bo = db.Insertable<ItemBarcodeInfo>(item).ExecuteCommand() == 0;
+                            if (bo)
+                            {
+                                result = false;
+                                LogHelper.Info($"娣诲姞鐗╂枡鏉$爜淇℃伅澶辫触锛岀墿鏂欐潯鐮佷俊鎭細{JsonConvert.SerializeObject(item)}", "GT");
+                            }
                         }
-                    }
-                });
-                if (result)
-                {
-                    db.CommitTran();
+                    });
                 }
-                else 
-                {
-                    db.RollbackTran();
-                }
+                db.CommitTran();
             }
             catch (Exception ex) 
             {
@@ -844,6 +841,62 @@
                 db.RollbackTran();
             }
            return result;
+        }
+
+        /// <summary>
+        /// 鍚屾鏉$爜鐘舵�琛�+        /// </summary>
+        /// <returns></returns>
+        public static bool synBarcodeStatus(List<iWMS_semi_bld_BCstatus> model) 
+        {
+            bool result = true;
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                db.BeginTran();
+                if (model.Count > 0)
+                {
+                    model.ForEach(update => {
+                        db.Insertable(update).ExecuteCommand();
+                    });
+                }
+                db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"鍚屾鏉$爜鐘舵�琛ㄩ敊璇紝閿欒淇℃伅锛歿ex.Message}", "GT");
+                db.RollbackTran();
+                result = false;
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 鍚屾鎶芥鐘舵�琛�+        /// </summary>
+        /// <returns></returns>
+        public static bool synSamplingStatus(List<iWMS_semi_bld_BCsample> model)
+        {
+            bool result = true;
+            var db = new SqlHelper<object>().GetInstance();
+            try
+            {
+                db.BeginTran();
+                if (model.Count > 0)
+                {
+                    model.ForEach(update => {
+                        db.Insertable(update).ExecuteCommand();
+                    });
+                }
+                db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info($"鍚屾鎶芥鐘舵�琛ㄩ敊璇紝閿欒淇℃伅锛歿ex.Message}", "GT");
+                db.RollbackTran();
+                result = false;
+            }
+            return result;
         }
 
         /// <summary>
@@ -857,28 +910,22 @@
             try
             {
                 db.BeginTran();
-                updateMatlStatuses.ForEach(update => {
-                    var itemBarcodeInfo = db.Queryable<ItemBarcodeInfo>().Where(a => a.S_BC_ENTRIED == update.bc_entried).First();
-                    if (itemBarcodeInfo != null) 
-                    {
-                        itemBarcodeInfo.S_JDGE = update.jdge;
-                        db.Updateable(itemBarcodeInfo).ExecuteCommand();
-                        var cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CG_ID == update.bc_entried).First();
-                        if (cntrItemRel != null) 
+                if (updateMatlStatuses.Count > 0) 
+                {
+                    updateMatlStatuses.ForEach(update => {
+                        var itemBarcodeInfo = db.Queryable<ItemBarcodeInfo>().Where(a => a.S_BC_ENTRIED == update.bc_entried).First();
+                        if (itemBarcodeInfo != null)
                         {
-                            // 灏哅ES鐨勭墿鏂欑姸鎬佽浆鍖栨垚WMS鍙瘑鍒殑鐗╂枡鐘舵�
-                            if (update.jdge == "" || update.jdge == null)
+                            itemBarcodeInfo.S_JDGE = update.jdge;
+                            db.Updateable(itemBarcodeInfo).ExecuteCommand();
+                            var cntrItemRel = db.Queryable<CntrItemRel>().Where(a => a.S_CG_ID == update.bc_entried).First();
+                            if (cntrItemRel != null)
                             {
-                                update.jdge = "OK";
+                                db.Updateable<CntrItemRel>().SetColumns(a => new CntrItemRel() { S_ITEM_STATE = update.jdge }).Where(a => a.S_CG_ID == update.bc_entried).ExecuteCommand();
                             }
-                            else if (update.jdge != "OK")
-                            {
-                                update.jdge = "HOLD";
-                            }
-                            db.Updateable<CntrItemRel>().SetColumns(a => new CntrItemRel() { S_ITEM_STATE = update.jdge }).Where(a => a.S_CG_ID == update.bc_entried).ExecuteCommand();
                         }
-                    }
-                });
+                    });
+                }
                 db.CommitTran();
             }
             catch (Exception ex)
@@ -888,69 +935,6 @@
                 result = false;
             }
             return result;
-        }
-
-        /// <summary>
-        /// 鎵归噺鏇存柊鐗╂枡鐘舵�
-        /// </summary>
-        /// <returns></returns>
-        public static bool batchUpdateMatlTimeConfig(List<Overage> overages)
-        {
-            bool result = true;
-            var db = new SqlHelper<object>().GetInstance();
-            try
-            {
-                db.BeginTran();
-                foreach (Overage overage in overages) 
-                {
-                    var overage1 = db.Queryable<Overage>().Where(a => a.RECID == overage.RECID).First();
-                    if (overage1 != null)
-                    {
-                        overage1.MCNGRP = overage.MCNGRP;
-                        overage1.ITEMPATT = overage.ITEMPATT;
-                        overage1.OVERAGE = overage.OVERAGE;
-                        overage1.MINHOUR = overage.MINHOUR;
-                        overage1.FLAG_STS = overage.FLAG_STS;
-                        db.Updateable(overage1).ExecuteCommand();
-                    }
-                    else 
-                    {
-                        db.Insertable(overage).ExecuteCommand();
-                    }
-                }
-                db.CommitTran();
-            }
-            catch (Exception ex)
-            {
-                LogHelper.Info($"鎵归噺鏇存柊鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅閿欒锛岄敊璇俊鎭細{ex.Message}", "GT");
-                db.RollbackTran();
-                result = false;
-            }
-            return result;
-        }
-        /// <summary>
-        /// 鏌ヨ鐗╂枡瀛樻斁鏃堕棿閰嶇疆淇℃伅
-        /// </summary>
-        /// <param name="bc_entried"></param>
-        /// <returns></returns>
-        public static Overage getOverage(string bc_entried)
-        {
-           
-            var db = new SqlHelper<object>().GetInstance();
-
-            // 鐩存帴鎵ц SQL锛堝弬鏁板寲鏌ヨ锛�-            var sql = "SELECT get_ovg_bar(@barcode, @mcngrp) AS overage_value";
-            var sql1 = "SELECT get_minhour_bar(@barcode, @mcngrp) AS overage_value";
-
-            // 浣跨敤鍖垮悕瀵硅薄浼犻�鍙傛暟
-            var ovg_bar = db.Ado.SqlQuery<int>(sql, new { barcode = bc_entried, mcngrp = "1"}).First();
-            var minhour_bar = db.Ado.SqlQuery<float>(sql1, new { barcode = bc_entried, mcngrp = "1"}).First();
-            Overage overage = new Overage()
-            {
-                MINHOUR = minhour_bar,
-                OVERAGE = ovg_bar
-            };
-            return overage;
         }
 
         /// <summary>
@@ -997,12 +981,25 @@
         /// <summary>
         /// 鏌ヨ涓婁竴娆$殑鍚屾鏃堕棿
         /// </summary>
-        /// <param name="recordTable"></param>
+        /// <param name="tableType"></param>
         /// <returns></returns>
-        public static SynDataTimeRecord getLastDataSynTime(string recordTable) 
+        public static string getDataLastSynTime(int tableType) 
         {
             var db = new SqlHelper<object>().GetInstance();
-            return db.Queryable<SynDataTimeRecord>().Where(a => a.RECORD_TABLE == recordTable).OrderByDescending(a => a.T_CREATE).First();
+            string lastTime = null;
+            if (tableType == 1)
+            {
+                lastTime = db.Queryable<ItemBarcodeInfo>().OrderByDescending(a => a.LAST_MODIFY_TIME).Select(a => a.LAST_MODIFY_TIME).First();
+            }
+            else if (tableType == 2)
+            {
+
+            }
+            else if (tableType == 3) 
+            {
+            
+            }
+            return lastTime;
         }
     }    
 }

--
Gitblit v1.9.1