分支自 SuZhouGuanHong/TaiYuanTaiZhong

huanghongfeng
2024-07-15 a765da90e5ee63e04d2d8460a5ad1ebd0e8eb4db
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs
@@ -12,6 +12,7 @@
using WIDESEA_WMS.IRepositories;
using WIDESEA_WMS.Repositories;
using static FreeSql.Internal.GlobalFilter;
using static System.Collections.Specialized.BitVector32;
namespace WIDESEA_WMS.Common
{
@@ -28,6 +29,27 @@
            VOLContext context = new VOLContext();
            Idt_agvtask_htyRepository htyRepository = new dt_agvtask_htyRepository(context);
            Idt_agvtaskRepository repository = new dt_agvtaskRepository(context);
            Idt_mes_headRepository idt_Mes_Head = new dt_mes_headRepository(context);
            Idt_mes_detailRepository idt_Mes_Detail=new dt_mes_detailRepository(context);
            if (task.agv_worktype == 17)
            {
                string[] bindSNs = task.bindSN.Split(",");
                foreach (var item in bindSNs)
                {
                    var mes_detail = idt_Mes_Detail.Find(x => x.SN == item).FirstOrDefault();
                    var mes_head= idt_Mes_Head.Find(x=>x.jobID==mes_detail.jobID).FirstOrDefault();
                    if(mes_head != null)
                    {
                        mes_head.agv_finishNum = mes_head.agv_finishNum == null ? task.agv_qty : mes_head.agv_finishNum + task.agv_qty;
                        idt_Mes_Head.Update(mes_head, x => new { x.agv_finishNum }, true);
                        break;
                    }
                }
            }
            dt_agvtask_hty agvtask_Hty = new dt_agvtask_hty()
            {
                hty_pkid = Guid.NewGuid(),
@@ -67,7 +89,18 @@
        /// <param name="task"></param>
        public static void Updateinventory(dt_agvtask task)
        {
            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
            VOLContext context = new VOLContext();
            Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context);
            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString())
            {
                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;
@@ -88,7 +121,7 @@
                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").First();
                    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();
@@ -105,7 +138,8 @@
                        Operator = "admin",
                        stationCode = task.agv_toaddress,
                        area = station.area,
                        jobID = mes_Work.workOrder,
                        jobID = mes_Work.jobID,
                        workOrder = mes_Work.workOrder,
                        ID = Guid.NewGuid()
                    };
                    inventorys.Add(inventory);
@@ -152,15 +186,15 @@
        {
            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);
            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") //入库空托任务
                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;
@@ -171,10 +205,13 @@
                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;
@@ -186,8 +223,14 @@
                //else
                //    station1.quantity = 0;
                #endregion
                if (station1.area == "10" || station1.area == "11") //出库空托任务
                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;
@@ -200,6 +243,7 @@
                {
                    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;
@@ -207,6 +251,8 @@
                    //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);
            }
        }