dengjunjie
2025-03-13 90a0c4e0ab42a3574cfb6f9fd3b031dac9e7fb0d
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs
@@ -262,7 +262,7 @@
            {
                Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == WMStask.TaskNum && x.TaskType == WMStask.TaskType);
                if (task == null) return WebResponseContent.Instance.Error("未找到任务信息");
                if (task.TaskType == (int)TaskTypeEnum.Inbound)
                if (TaskEnumHelper.GetTaskTypeGroup(task.TaskType) == TaskTypeGroup.InboundGroup)
                {
                    int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>();
                    if (WMStask.TaskState != nextStatus) return WebResponseContent.Instance.Error($"该任务状态有误,任务号:【{task.TaskNum}】,任务状态:【{task.TaskState}】");
@@ -283,7 +283,7 @@
                            break;
                        //case (int)TaskOutStatusEnum.Line_OutFinish:
                            //break;
                        //break;
                        case (int)TaskOutStatusEnum.OutFinish:
                            UpdateTaskStatusOutFinish(task);
                            break;
@@ -327,7 +327,7 @@
                }
                if (Sourcelocation != null)
                {
                    Sourcelocation.CurrentQty--;
                    if (task.TaskType == TaskOutboundTypeEnum.Outbound.ObjToInt()) Sourcelocation.CurrentQty--;
                    if (Sourcelocation.CurrentQty == 0)
                    {
                        Sourcelocation.LocationStatus = LocationStatusEnum.Free.ObjToInt();
@@ -336,8 +336,9 @@
                    if (Sourcelocation.Row == 1 && Sourcelocation.LocationStatus == LocationStatusEnum.Free.ObjToInt())
                    {
                        Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == Sourcelocation.Column && x.Layer == Sourcelocation.Layer);
                        if (locationInfo.CurrentQty == 0 && locationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt())
                        if (locationInfo.CurrentQty == 0 /*&& locationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt()*/)
                        {
                            locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
                            locationInfo.EnableStatus = EnableStatusEnum.Normal.ObjToInt();
                            _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                        }
@@ -368,11 +369,11 @@
        {
            try
            {
                Dt_OutStockLockInfo outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum);
                Dt_OutStockLockInfo? outStockLockInfo = _outboundService.OutboundStockLockInfoService.Repository.QueryFirst(x => x.TaskNum == task.TaskNum);
                Dt_OutboundOrder? outboundOrder = null;
                int overCount = 0;
                if (outStockLockInfo != null)
                {
                    Dt_OutboundOrder outboundOrder = null;
                    int overCount = 0;
                    Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == outStockLockInfo.OrderDetailId);
                    if (outboundOrderDetail != null)
                    {
@@ -387,17 +388,17 @@
                        }
                    }
                    outStockLockInfo.Status = OutLockStockStatusEnum.出库完成.ObjToInt();
                    Db.Ado.BeginTran();
                    if (outboundOrder != null && outboundOrder.Details.Count == overCount)
                    {
                        outboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                        _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                        _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    }
                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo);
                    Db.Ado.CommitTran();
                }
                Db.Ado.BeginTran();
                if (outboundOrder != null && outboundOrder.Details.Count == overCount)
                {
                    outboundOrder.OrderStatus = OutboundStatusEnum.出库完成.ObjToInt();
                    _outboundService.OutboundOrderService.Repository.DeleteAndMoveIntoHty(outboundOrder, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _outboundService.OutboundOrderDetailService.Repository.DeleteAndMoveIntoHty(outboundOrder.Details, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                }
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                _outboundService.OutboundStockLockInfoService.Repository.UpdateData(outStockLockInfo);
                Db.Ado.CommitTran();
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
@@ -467,7 +468,23 @@
                if (stockInfo.StockStatus != StockStatusEmun.入库中.ObjToInt()) throw new Exception($"托盘[{task.PalletCode}],该组盘状态不可入库");
                Dt_StockInfoDetail stockInfoDetail = stockInfo.Details.FirstOrDefault(x => x.StockId == stockInfo.Id);
                if (task.TaskType == TaskTypeEnum.PalletInbound.ObjToInt())
                {
                    stockInfo.SerialNumber = locationInfo.CurrentQty;
                    stockInfo.InDate = DateTime.Now;
                    stockInfo.StockStatus = StockStatusEmun.已入库.ObjToInt();
                    stockInfoDetail.Status = StockStatusEmun.已入库.ObjToInt();
                    locationInfo.LocationStatus = LocationStatusEnum.Pallet.ObjToInt();
                    task.CurrentAddress = task.NextAddress;
                    task.NextAddress = string.Empty;
                    Db.Ado.BeginTran();
                    BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.自动完成 : OperateType.人工完成);
                    _basicService.LocationInfoService.Repository.UpdateData(locationInfo);
                    _stockService.StockInfoService.Repository.UpdateData(stockInfo);
                    _stockService.StockInfoDetailService.Repository.UpdateData(stockInfoDetail);
                    Db.Ado.CommitTran();
                    return content;
                }
                #region å…¥åº“单
                Dt_InboundOrder inboundOrder = _inboundService.InbounOrderService.GetInboundOrder(stockInfoDetail.OrderNo);
                if (inboundOrder == null || inboundOrder.Details == null) throw new Exception($"未找到托盘[{task.PalletCode}]的入库单明细信息");