分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-04-01 19c66ba052a7fb26c4d27deaa75ae46479eee342
´úÂë¹ÜÀí/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,81 @@
        /// <param name="task"></param>
        public static void Updateinventory(dt_agvtask task)
        {
            string[] bindSNs = task.bindSN.Split(",");
            if (bindSNs.Length > 0)
            if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString())
            {
                var Materiel = QueryData.QueryMateriel(task.agv_materielid);
                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("库存清除失败!SN号:" + 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").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.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>
@@ -94,17 +155,60 @@
            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);
            if (task.agv_taskstate == AGVTaskStateEnum.Complete1.ToString())
            {
                ////空托任务需修改逻辑
                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.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;
                stationinfoRepository.Update(station2, true);
            }
            else if (task.agv_taskstate == AGVTaskStateEnum.Complete.ToString())
            {
                #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
            station1.quantity = 0;
            station1.bindSN = string.Empty;
            station1.location_state = LocationStateEnum.Empty.ToString();
            station1.tray_status = string.Empty;
            stationinfoRepository.Update(station1, true);
                if (station1.area == "10" || station1.area == "11") //出库空托任务
                {
                    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.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;
                }
                stationinfoRepository.Update(station1, true);
            }
        }
    }
}