1
wankeda
2025-03-22 867aba2636e34a1050b1c4c84bbe78cc9c39b553
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs
@@ -18,9 +18,14 @@
using System.Linq.Expressions;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.Task;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System.Drawing.Printing;
using WIDESEA_Core.DB;
using System.Drawing;
using WIDESEA_ITaskInfoService;
namespace WIDESEA_TaskInfoService
{
    public partial class TaskService
    {
@@ -264,7 +269,7 @@
                        if (location != null)
                        {
                            Dt_LocationInfo result = _basicService.LocationInfoService.isDepth(location);
                            if (result != null && result.LocationStatus != LocationStatusEnum.Lock.ObjToInt() && result.LocationStatus != LocationStatusEnum.PalletLock.ObjToInt() && result.LocationStatus != LocationStatusEnum.Free.ObjToInt())
                            if (result != null && result.LocationStatus != LocationStatusEnum.Lock.ObjToInt() && result.LocationStatus != StatusEnum.PalletLock.ObjToInt() && result.LocationStatus != LocationStatusEnum.Free.ObjToInt())
                            {
                                int sum = 0;
                                for (int j = 0; j < task.Count; j++)
@@ -297,7 +302,7 @@
                                tasks.Add(task[i]);
                                content = WebResponseContent.Instance.OK();
                            }
                            else if (result != null && (result.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || result.LocationStatus == LocationStatusEnum.PalletLock.ObjToInt()))
                            else if (result != null && (result.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || result.LocationStatus == StatusEnum.PalletLock.ObjToInt()))
                            {
                                Dt_Task TaskInfo = BaseDal.QueryFirst(x => x.SourceAddress == result.LocationCode);
                                if (TaskInfo == null)
@@ -544,7 +549,7 @@
                int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0));
                if (taskDTO.pageNo <= maxPage)
                {
                    var inboundOrder = BaseDal.Db.Queryable<Dt_Task>().Where(expressionOrder).Where(x => x.TaskType == TaskTypeEnum.Outbound.ObjToInt()).OrderByDescending(x => x.CreateDate).Select(x => new Dt_Task { TaskNum = x.TaskNum, TaskId = x.TaskId, CreateDate = x.CreateDate, Creater = x.Creater }).ToList();
                    var inboundOrder = BaseDal.Db.Queryable<Dt_Task>().Where(expressionOrder).Where(x => x.TaskType == TaskTypeEnum.Outbound.ObjToInt()).OrderByDescending(x => x.CreateDate).Select(x => new Dt_Task { TaskNum = x.TaskNum, TaskId = x.TaskId, CreateDate = x.CreateDate, Creater = x.Creater, Materialtype = x.Materialtype }).ToList();
                    content = WebResponseContent.Instance.OK(data: inboundOrder);
                }
@@ -560,101 +565,134 @@
            return content;
        }
        /// <summary>
        /// ç¡®è®¤å‡ºåº“任务
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent RequestInbound(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                int taskname = saveModel.MainData["taskname"].ObjToInt();
                string address = saveModel.MainData["startPoint"].ToString();
                string inboundBarcode = saveModel.MainData["barcode"].ToString();
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskname);
                string stationcode = saveModel.MainData["stationcode"].ToString();
                string PalletCode = saveModel.MainData["PalletCode"].ToString();
                Dt_Task task = BaseDal.QueryFirst(x => x.SourceAddress == stationcode && x.Materialtype == PalletCode);
                if (task != null)
                {
                    task.SourceAddress = address;
                    task.TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt();
                    task.TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt();
                    BaseDal.UpdateData(task);
                    content = WebResponseContent.Instance.OK();
                }
                else
                {
                    content = WebResponseContent.Instance.Error("未找到此任务");
                    return content = WebResponseContent.Instance.Error("未找到此任务或物料类型不匹配");
                }
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"添加任务起点异常,错误信息:{ex.Message}");
                content = WebResponseContent.Instance.Error($"任务起点异常,错误信息:{ex.Message}");
            }
            return content;
        }
        private static readonly object text = new object();
        /// <summary>
        /// å‡ºåº“任务
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
        public WebResponseContent OutboundTasks(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            lock (text)
            {
                string stationcode = saveModel.MainData["stationcode"].ToString();
                string PalletCode = saveModel.MainData["PalletCode"].ToString();
                List<Dt_Task> tasks = new List<Dt_Task>();
                Dt_Task task = new Dt_Task()
                WebResponseContent content = new WebResponseContent();
                try
                {
                    CurrentAddress = "1",
                    Grade = 1,
                    NextAddress = "1",
                    PalletCode = PalletCode,
                    Roadway = "1",
                    SourceAddress = "",
                    TargetAddress = stationcode,
                    TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
                    TaskType = TaskTypeEnum.Outbound.ObjToInt(),
                    Depth = 1,
                    TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                };
                tasks.Add(task);
                Repository.AddData(tasks);
                content = WebResponseContent.Instance.OK();
                    string stationcode = saveModel.MainData["stationcode"].ToString();
                    string PalletCode = saveModel.MainData["PalletCode"].ToString();
                    if (stationcode == "" || PalletCode == "")//异常返回。。。。。。
                    {
                        return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:扫码信息不能为空");
                    }
                    Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode.Contains("原材料库") && x.PointStatus == LocationStatusEnum.Free.ObjToInt());//&& x.PointStatus == LocationStatusEnum.Free.ObjToInt()
                    if (endCachePoint == null)
                    {
                        return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{"未找到原材料库可用缓存位"}");
                    }
                    Dt_CachePoint point = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == stationcode );//&& x.Materialtype == PalletCode
                    if (point == null)
                    {
                        return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{"扫码数据异常,未找到此缓存架或物料类型不匹配"}");
                    }
                    Dt_CachePoint points = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == stationcode && x.PointStatus == LocationStatusEnum.Free.ObjToInt());
                    if (points == null)
                    {
                        return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{"扫码数据异常,此缓存点已被锁定"}");
                    }
                    Dt_Task taskcode = BaseDal.QueryFirst(x => x.SourceAddress == stationcode || x.TargetAddress == stationcode);
                    if (taskcode != null)
                    {
                        return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:该站点已存在任务");
                    }
                    var pointname = _basicService.CachePointService.Repository.QueryData(x => x.PointName == point.PointName).ToList();
                    foreach (var item in pointname)
                    {
                        var a = point.Remark.ObjToInt();
                        var b = item.Remark.ObjToInt();
                        if (b < a)
                        {
                            Dt_CachePoint c = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == item.PointCode && x.PointStatus == 0);
                            if (c != null)
                            {
                                return content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{"请按从里到外缓存点顺序请求任务"}");
                            }
                        }
                    }
                    List<Dt_Task> tasks = new List<Dt_Task>();
                    Dt_Task task = new Dt_Task()
                    {
                        CurrentAddress = "1",
                        Grade = 1,
                        NextAddress = "1",
                        PalletCode = "",
                        Roadway = "1",
                        SourceAddress = endCachePoint.PointCode,
                        TargetAddress = stationcode,
                        TaskStatus = AGVTaskStatusEnum.AGV_Query.ObjToInt(),
                        TaskType = TaskTypeEnum.Outbound.ObjToInt(),
                        Materialtype = PalletCode,
                        Depth = 1,
                        TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                    };
                    tasks.Add(task);
                    Repository.AddData(tasks);
                    HCJLock(task);
                    //Main();
                    content = WebResponseContent.Instance.OK();
                }
                catch (Exception ex)
                {
                    content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{ex.Message}");
                }
                return content;
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{ex.Message}");
            }
            return content;
        }
        public void Main()
        {
            PrintDocument printDocument = new PrintDocument();
            printDocument.PrintPage += new PrintPageEventHandler(PrintPage);
            printDocument.Print();
        }
        public WebResponseContent InboundTask(SaveModel saveModel)
        private void PrintPage(object sender, PrintPageEventArgs e)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                string stationcode = saveModel.MainData["stationcode"].ToString();
                string PalletCode = saveModel.MainData["PalletCode"].ToString();
                List<Dt_Task> tasks = new List<Dt_Task>();
                Dt_Task task = new Dt_Task()
                {
                    CurrentAddress = "",
                    Grade = 1,
                    NextAddress = "",
                    PalletCode = PalletCode,
                    Roadway = "",
                    SourceAddress = stationcode,
                    TargetAddress = "",
                    TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(),
                    TaskType = TaskTypeEnum.Inbound.ObjToInt(),
                    Depth = 1,
                    TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
                };
                tasks.Add(task);
                Repository.AddData(tasks);
                content = WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error($"添加任务异常,错误信息:{ex.Message}");
            }
            return content;
            var agvtask = BaseDal.QueryData(x => x.TaskStatus == AGVTaskStatusEnum.AGV_Query.ObjToInt()).OrderByDescending(x => x.CreateDate).First();
            string textToPrint = "放货货位位:" + agvtask.SourceAddress + Environment.NewLine + "物料类型:" + agvtask.Materialtype + Environment.NewLine + "任务创建时间:" + agvtask.CreateDate;
            Font printFont = new Font("Arial", 12);
            e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, 10, 10);
        }
    }
}