1
huanghongfeng
2024-11-27 1dd9f4bf540a74a7de2daeeebf38491f86befa08
´úÂë¹ÜÀí/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -49,6 +49,7 @@
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
using WIDESEA_TaskInfoRepository;
using static WIDESEA_ITaskInfoService.ITaskService;
namespace WIDESEA_TaskInfoService
{
@@ -112,25 +113,48 @@
        }
        /// <summary>
        /// å…¥åº“完成
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public WebResponseContent InboundTaskCompleted(Dt_Task task)
        {
            decimal beforeQuantity = 0;
            //查库存
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            //查货位
            Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
            Dt_StockInfoDetail dt_StockInfodetail = _stockService.StockInfoDetailService.Repository.QueryFirst(x => x.OrderNo == task.PalletCode);
            CheckCompleted(stockInfo, locationInfo);
            stockInfo.LocationCode = locationInfo.LocationCode;
            if (stockInfo.MaterialType == (int)InventoryMaterialType.空托)
            {
                string currentTime = DateTime.Now.ToString("HHmmss");
                stockInfo.PalletCode = "KTP" + currentTime;
            }
            stockInfo.LocationCode = task.TargetAddress;
            stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
             _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            if(dt_StockInfodetail != null)
            {
                dt_StockInfodetail.Status = StockStatusEmun.已入库.ObjToInt();
                _stockService.StockInfoDetailService.Repository.UpdateData(dt_StockInfodetail);
            }
            beforeQuantity = stockInfo.Details.Where(x => x.Id != 0).Sum(x => x.StockQuantity);
            int beforeStatus = locationInfo.LocationStatus;
            locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(),false);
            if (stockInfo.MaterialType == (int)InventoryMaterialType.空托)
            {
                locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
            }
            else
            {
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
            }
            _basicService.LocationInfoService.UpdateLocationFree(locationInfo, task.TaskNum, StockChangeType.Inbound.ObjToInt(), false);
            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
            task.TaskStatus = InTaskStatusEnum.InFinish.ObjToInt();
@@ -160,7 +184,7 @@
            CheckCompleted(stockInfo, locationInfo);
            _stockService.StockInfoService.Repository.AddData(stockInfo);
            int beforeStatus = locationInfo.LocationStatus;
@@ -172,7 +196,7 @@
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Inbound.ObjToInt(), "", task.TaskNum);
            return WebResponseContent.Instance.OK();
        }
@@ -195,10 +219,10 @@
                return (false, "未找到货位信息");
            }
            if (isCheckStockDetail && (stockInfo.Details == null || stockInfo.Details.Count == 0))
            /*if (isCheckStockDetail && (stockInfo.Details == null || stockInfo.Details.Count == 0))
            {
                return (false, "未找到组盘明细信息");
            }
            }*/
            return (true, "成功");
        }
@@ -212,7 +236,6 @@
            CheckCompleted(stockInfo, locationInfo);
            stockInfo.LocationCode = locationInfo.LocationCode;
            stockInfo.StockStatus = StockStatusEmun.出库完成.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            int beforeStatus = locationInfo.LocationStatus;
@@ -244,7 +267,8 @@
            _recordService.StockQuantityChangeRecordService.AddStockChangeRecord(stockInfo, stockInfo.Details, beforeQuantity, stockInfo.Details.Sum(x => x.StockQuantity) - beforeQuantity, StockChangeType.Outbound);
            return OnOutboundTaskCompleted?.Invoke(task) ?? WebResponseContent.Instance.OK();
            //return OnOutboundTaskCompleted?.Invoke(task) ?? WebResponseContent.Instance.OK();
            return WebResponseContent.Instance.OK();
        }
        public WebResponseContent PalletOutboundTaskCompleted(Dt_Task task)
@@ -267,41 +291,44 @@
            task.TaskStatus = OutTaskStatusEnum.OutFinish.ObjToInt();
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", task.TaskNum);
            return WebResponseContent.Instance.OK();
        }
        public WebResponseContent RelocationTaskCompleted(Dt_Task task)
        public WebResponseContent RelocationTaskCompleted(GenerateInv2 generate)
        {
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(task.PalletCode);
            Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetStockInfo(generate.PalletCode);
            Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
            CheckCompleted(stockInfo, locationEnd);
            Dt_LocationInfo locationpoint = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == generate.SourceAddress);
            Dt_LocationInfo locationEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == generate.TargetAddress);
            List<Dt_LocationInfo> loca = new List<Dt_LocationInfo>();
            stockInfo.LocationCode = locationEnd.LocationCode;
            stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
            _stockService.StockInfoService.Repository.UpdateData(stockInfo);
            _basicService.LocationInfoService.RelocationFree(locationEnd, task.TaskNum);
            task.TaskStatus = InTaskStatusEnum.RelocationFinish.ObjToInt();
            BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
            locationpoint.LocationStatus = LocationStatusEnum.Free.ObjToInt();
            locationEnd.LocationStatus = locationEnd.LocationStatus == LocationStatusEnum.Lock.ObjToInt() ? LocationStatusEnum.InStock.ObjToInt() : LocationStatusEnum.Pallet.ObjToInt();
            
            loca.Add(locationpoint);
            loca.Add(locationEnd);
            _basicService.LocationInfoService.Repository.UpdateData(loca);
            return WebResponseContent.Instance.OK();
        }
        public bool DepthTask(Dt_Task task)
        {
            Dt_LocationInfo location=_locationInfoService.Repository.QueryFirst(x=>x.LocationCode == task.SourceAddress);
            if(location != null)
            Dt_LocationInfo location = _locationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
            if (location != null)
            {
                if(location.Row%2==0)
                if (location.Row % 2 == 0)
                {
                    Dt_LocationInfo locations = _locationInfoService.Repository.QueryFirst(x => x.Row == location.Row + 1 && x.Layer == location.Layer && x.Column == location.Column && x.RoadwayNo == location.RoadwayNo);
                    Dt_Task tasks=BaseDal.QueryFirst(x=>x.SourceAddress == locations.LocationCode);
                    Dt_Task tasks = BaseDal.QueryFirst(x => x.SourceAddress == locations.LocationCode);
                    return tasks != null ? true : false;
                }
                else
@@ -313,40 +340,5 @@
            }
            return false;
        }
        /// <summary>
        /// åˆ›å»ºä»»åŠ¡
        /// </summary>
        /// <param name="taskInfo"></param>
        /// <returns></returns>
        public Dt_Task CreateTask(Dt_Task tasks)
        {
            try
            {
                if (tasks.TaskType == (int)TaskTypeEnum.Inbound)
                {
                    Dt_Task task = new Dt_Task()
                    {
                        TaskType = (int)TaskTypeEnum.Outbound, //任务类型
                        CreateDate = DateTime.Now,
                        ModifyDate = DateTime.Now,
                        Grade = 1,
                        Creater = "创智WMS",// åˆ›å»ºäºº
                    };
                    return task;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                //WriteLog.GetLog("创建任务").Write($"{JsonConvert.SerializeObject(ex.Message)}{Environment.NewLine}", "创建任务");
                throw;
            }
        }
    }
    }
}