wangxinhui
2025-08-30 cd78554c3da306ed8c866d971bee94457665f80c
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs
@@ -34,7 +34,6 @@
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.Inbound;
using WIDESEA_DTO.MES;
using WIDESEA_DTO.Stock;
using WIDESEA_DTO.Task;
using WIDESEA_External.ERPService;
@@ -140,109 +139,6 @@
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// æˆå“ä»“入库任务完成
        /// </summary>
        public WebResponseContent InProductCompleted(Dt_Task task)
        {
            WebResponseContent content=new WebResponseContent();
            try
            {
                switch (task.TaskType)
                {
                    case (int)TaskTypeEnum.EmptyProductBack:
                        content = EmptyProBackCompleted(task);
                        break;
                    case (int)TaskTypeEnum.InProductBack:
                        content = InProBackCompleted(task);
                        break;
                    default:
                        content.Error("未知任务类型");
                        break;
                }
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        public WebResponseContent EmptyProBackCompleted(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //更新入库状态
                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
                _unitOfWorkManage.BeginTran();
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                _unitOfWorkManage.CommitTran();
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        /// <summary>
        /// æˆå“ä½™æ–™é€€åº“任务完成
        /// </summary>
        /// <param name="task"></param>
        /// <returns></returns>
        public WebResponseContent InProBackCompleted(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                //获取组盘信息
                Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First();
                if (proStockInfo == null)
                {
                    return content.Error($"未找到胶框为{task.PalletCode}组盘信息");
                }
                Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
                if (locationInfo == null)
                {
                    return content.Error($"未找到目标货位信息");
                }
                if (locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
                {
                    return content.Error($"货位状态不正确");
                }
                if (proStockInfo.StockStatus!=StockStatusEmun.成品余料回库.ObjToInt())
                {
                    return content.Error($"胶框{proStockInfo.PalletCode}库存状态不正确");
                }
                LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
                locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
                proStockInfo.LocationCode = locationInfo.LocationCode;
                proStockInfo.StockStatus = StockStatusEmun.入库完成.ObjToInt();
                proStockInfo.proStockInfoDetails.ForEach(x =>
                {
                    x.ProOutDetailStatus = StockStatusEmun.入库完成.ObjToInt();
                });
                //更新入库状态
                task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
                _unitOfWorkManage.BeginTran();
                BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.人工完成 : OperateTypeEnum.自动完成);
                _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, locationInfo.WarehouseId);
                _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
                _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails);
                _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted);
                _unitOfWorkManage.CommitTran();
                content.OK();
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
    }
}