From 1a15a93fd26457ef3da68d931fd941e652945a9b Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 21 六月 2024 16:15:29 +0800
Subject: [PATCH] 按工作令入库

---
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs |  180 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 154 insertions(+), 26 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
index 210fd6c..b062dd8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs"
@@ -11,6 +11,7 @@
 using WIDESEA_Entity.DomainModels;
 using WIDESEA_WMS.IRepositories;
 using WIDESEA_WMS.Repositories;
+using static FreeSql.Internal.GlobalFilter;
 
 namespace WIDESEA_WMS.Common
 {
@@ -30,7 +31,7 @@
             dt_agvtask_hty agvtask_Hty = new dt_agvtask_hty()
             {
                 hty_pkid = Guid.NewGuid(),
-                agv_id = Guid.Empty,
+                agv_id = task.agv_id,
                 agv_tasknum = task.agv_tasknum,
                 agv_materielid = task.agv_materielid,
                 agv_qty = task.agv_qty,
@@ -39,7 +40,7 @@
                 agv_executingBeginTime = task.agv_executingBeginTime,
                 agv_executingEndTime = task.agv_executingEndTime,
                 agv_completeBeginTime = task.agv_completeBeginTime,
-                agv_finishedtime = DateTime.Now,
+                agv_finishedtime = task.agv_finishedtime,
                 agv_taskstate = task.agv_taskstate,
                 agv_tasktype = task.agv_tasktype,
                 agv_fromaddress = task.agv_fromaddress,
@@ -49,10 +50,13 @@
                 agv_completedate = DateTime.Now,
                 agv_grade = task.agv_grade,
                 agv_userid = task.agv_userid,
-                agv_barcode = task.agv_barcode,
-                agv_code = task.agv_code,
+                agv_Traytype = task.agv_Traytype,
+                agv_TrayStatus = task.agv_TrayStatus,
                 agv_worktype = task.agv_worktype,
-                agv_remark = task.agv_remark
+                agv_remark = task.agv_remark,
+                bindSN = task.bindSN,
+                jobID = task.jobID,
+                agv_materbarcode = task.agv_materbarcode,
             };
             htyRepository.Add(agvtask_Hty, true);
             repository.Delete(task, true);
@@ -63,24 +67,93 @@
         /// <param name="task"></param>
         public static void Updateinventory(dt_agvtask task)
         {
-            string[] bindSNs = task.bindSN.Split(",");
-            if (bindSNs.Length > 0)
+            VOLContext context = new VOLContext();
+            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
+            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString())
             {
-                var Materiel = QueryData.QueryMateriel(task.agv_materielid);
+                var inventorys = inventoryRepository.Find(x => x.stationCode == task.agv_fromaddress).ToList();
+                foreach (var inventory in inventorys)
+                {
+                    inventory.stationCode = task.agv_toaddress;
+                    inventoryRepository.Update(inventory, true);
+                }
+            }
+            else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
+            {
+                string[] bindSNs = task.bindSN.Split(",");
+                int count = 0;
+                foreach (var bindSN in bindSNs)
+                {
+                    //List<dt_inventory> inventorys = new List<dt_inventory>();
+                    var inventory = freeDB.Select<dt_inventory>().Where(x => x.SN == bindSN).First();
+                    //inventorys.Add(inventory);
+                    count = freeDB.Remove(inventory);
+                    if (count < 1)
+                        throw new Exception("搴撳瓨娓呴櫎澶辫触锛丼N鍙�:" + bindSN);
+                }
+            }
+            else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString())
+            {
+                string[] bindSNs = task.bindSN.Split(",");
+                int count = 0;
                 List<dt_inventory> inventorys = new List<dt_inventory>();
                 foreach (string bindSN in bindSNs)
                 {
+                    var mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == bindSN && x.processCode == "17").OrderByDescending(x => x.CreateTime).First();
+                    if (mes_Work == null)
+                        throw new Exception("鏈壘鍒板伐鍗曚俊鎭紒");
+                    var station = freeDB.Select<dt_stationinfo>().Where(x => x.stationCode == task.agv_toaddress).First();
                     dt_inventory inventory = new dt_inventory()
                     {
-                        SN = bindSN,//寰呭畬鍠�
+                        SN = bindSN,
+                        Name = mes_Work.productName,
+                        FigureNumber = mes_Work.drawingNo,
+                        materialCode = task.agv_materbarcode,
+                        HeatNumber = mes_Work.heatID,
+                        drawingNoVer = mes_Work.drawingNoVer,
+                        BilletNumber = mes_Work.billetID,
+                        OnlineTime = task.agv_finishedtime,
+                        Operator = "admin",
+                        stationCode = task.agv_toaddress,
+                        area = station.area,
+                        jobID = mes_Work.jobID,
+                        workOrder = mes_Work.workOrder,
+                        ID = Guid.NewGuid()
                     };
                     inventorys.Add(inventory);
                 }
-                if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString())
-                    freeDB.AddRange(inventorys);
-                else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString())
-                    freeDB.Remove(inventorys);
+                count = freeDB.AddRange(inventorys);
+                if (count < 1)
+                    throw new Exception("搴撳瓨娣诲姞澶辫触锛佸簱浣嶅彿:" + task.agv_toaddress);
             }
+            #region MyRegion
+            //var Materiel = QueryData.QueryMateriel(task.agv_materielid);
+            //List<dt_inventory> inventorys = new List<dt_inventory>();
+            //foreach (string bindSN in bindSNs)
+            //{
+            //    dt_inventory inventory = new dt_inventory()
+            //    {
+            //        SN = bindSN,//寰呭畬鍠�
+            //        Name = "",
+            //        FigureNumber = "",
+            //        //HearthNumber = "",
+            //        HeatNumber = "",
+            //        //BilletNumber=,
+            //        OnlineTime = task.agv_finishedtime,
+            //        Operator = "admin",
+            //        stationCode = task.agv_toaddress,
+            //        area = "",
+            //        jobID = "",
+            //    };
+            //    inventorys.Add(inventory);
+            //}
+            //if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString())
+            //    freeDB.AddRange(inventorys);
+            //else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString())
+            //    freeDB.Remove(inventorys);
+            #endregion
+
+            //}
         }
 
         /// <summary>
@@ -91,20 +164,75 @@
         {
             VOLContext context = new VOLContext();
             Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context);
-            var station1 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_fromaddress);
-            var station2 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_toaddress);
 
-            station2.quantity = station1.quantity;
-            station2.bindSN = station1.bindSN;
-            station2.location_state = LocationStateEnum.Stroge.ToString();
-            station2.tray_status = station1.tray_status;
-            stationinfoRepository.Update(station2, true);
-
-            station1.quantity = 0;
-            station1.bindSN = string.Empty;
-            station1.location_state = LocationStateEnum.Empty.ToString();
-            station1.tray_status = string.Empty;
-            stationinfoRepository.Update(station1, true);
+            if (task.agv_taskstate == AGVTaskStateEnum.Complete1.ToString())
+            {
+                var station2 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_toaddress);
+                if (station2 == null) throw new Exception("鏈壘鍒扮粓鐐瑰湴鍧�锛�");
+                ////绌烘墭浠诲姟闇�淇敼閫昏緫
+                if (station2.stationCode.Contains("X"))
+                    station2.quantity = 0;// task.agv_tasktype.Contains("TaskType_EmptyPallet") ? 0 : task.agv_qty; //task.agv_qty;
+                else if (station2.area == "10" || station2.area == "11" || (station2.stationCode.Contains("C") && task.agv_tasktype == "TaskType_EmptyPallet") || station2.stationCode.Contains("DD")) //鍏ュ簱绌烘墭浠诲姟
+                    station2.quantity = station2.quantity + task.agv_qty;
+                else
+                    station2.quantity = task.agv_qty;
+                station2.bindSN = task.bindSN;
+                station2.location_state = LocationStateEnum.Stroge.ToString();
+                station2.Number = task.jobID;
+                //station2.heatNumber = station1.heatNumber;
+                station2.stationType = task.agv_materielid;
+                station2.tray_status = task.agv_TrayStatus;//妯斁/绔栨斁
+                station2.tray_type = task.agv_Traytype;
+                station2.lastUpdateTime = DateTime.Now;
+                stationinfoRepository.Update(station2, true);
+            }
+            else if (task.agv_taskstate == AGVTaskStateEnum.Complete.ToString())
+            {
+                var station1 = stationinfoRepository.FindFirst(t => t.stationCode == task.agv_fromaddress);
+                if (station1 == null) throw new Exception("鏈壘鍒拌捣鐐瑰湴鍧�锛�");
+                #region MyRegion
+                //if (station1.stationCode.Contains("S"))
+                //    station1.quantity = 0;
+                //else if (station2.stationCode.Contains("X") || station2.stationCode.Contains("W01001004") || station2.stationCode.Contains("W01001005"))//鍑哄簱绌烘墭浠诲姟
+                //{
+                //    station1.location_state = LocationStateEnum.Stroge.ToString();
+                //    station1.quantity = station1.quantity - 1;
+                //}
+                //else
+                //    station1.quantity = 0;
+                #endregion
+                if (station1.stationCode.Contains("DD"))//鍙犵洏搴撲綅
+                {
+                    station1.quantity = station1.quantity - task.agv_qty;
+                    station1.location_state = LocationStateEnum.Stroge.ToString();
+                }
+                else if (station1.area == "10" || station1.area == "11"
+                    || ((station1.stationCode.Contains("C") || station1.stationCode.Contains("B"))
+                    && task.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString())) //鍑哄簱绌烘墭浠诲姟
+                {
+                    station1.location_state = LocationStateEnum.Stroge.ToString();
+                    station1.quantity = station1.quantity - 1;
+                }
+                else
+                    station1.quantity = 0;
+                station1.bindSN = string.Empty;
+                //station1.location_state = station1.quantity == 0 ? LocationStateEnum.Empty.ToString() : LocationStateEnum.Stroge.ToString();
+                if (station1.quantity == 0)
+                {
+                    station1.location_state = LocationStateEnum.Empty.ToString();
+                    station1.Number = string.Empty;
+                    station1.billetID = string.Empty;
+                    station1.heatNumber = string.Empty;
+                    station1.stationType = string.Empty;
+                    station1.tray_status = string.Empty;
+                    station1.remark = string.Empty;
+                    //if (!station1.stationCode.Contains("X") && !station1.stationCode.Contains("S") && !station1.stationCode.Contains("W01001004") && !station1.stationCode.Contains("W01001005"))
+                    //    station1.tray_type = string.Empty;
+                }
+                if (!station1.stationCode.Contains("DD"))
+                    station1.lastUpdateTime = DateTime.Now;
+                stationinfoRepository.Update(station1, true);
+            }
         }
     }
 }

--
Gitblit v1.9.3