1
wangxinhui
6 天以前 fdf7bb595ee00e5fef7b4e110fbe32f637c069f6
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs
@@ -425,112 +425,112 @@
        /// <param name="barCode"></param>
        /// <param name="startPoint"></param>
        /// <returns></returns>
        public WebResponseContent BackProductTask(string barCode, string startPoint)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                string palletCode = @"^C\d{5}$";  // æ­£åˆ™è¡¨è¾¾å¼
                bool isValid = Regex.IsMatch(barCode, palletCode);
                if (!isValid)
                {
                    return content.Error($"框码格式错误{barCode}");
                }
                if (!OutStartPonits.Contains(startPoint))
                {
                    return content.Error($"起点错误{startPoint}");
                }
                //判断当前点位是否重复
                Dt_Task taskOldPoint = BaseDal.QueryFirst(x=>x.SourceAddress==startPoint && (x.TaskStatus == TaskStatusEnum.New.ObjToInt()||x.TaskStatus==TaskStatusEnum.Line_Execute.ObjToInt()|| x.TaskStatus == TaskStatusEnum.Line_Executing.ObjToInt() || x.TaskStatus == TaskStatusEnum.AGV_Takeing.ObjToInt()));
                if (taskOldPoint != null)
                {
                    return content.Error($"站点{startPoint}已存在任务");
                }
                Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == barCode);
                if (taskOld != null)
                {
                    return content.Error($"胶框{barCode}任务已存在");
                }
                //获取胶框余料
                Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x=>x.PalletCode== barCode).Includes(x=>x.proStockInfoDetails).First();
                if (proStockInfo==null)
                {
                    return content.Error($"未找到{barCode}胶框信息");
                }
                if (proStockInfo.proStockInfoDetails==null || proStockInfo.proStockInfoDetails.Count<=0)
                {
                    return content.Error($"{barCode}胶框信息为空");
                }
                if (proStockInfo.StockStatus!=StockStatusEmun.出库完成.ObjToInt())
                {
                    return content.Error($"{barCode}胶框信息状态异常");
                }
                //获取成品平库
                Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
                if (proStockInfo.WarehouseId != warehouse.WarehouseId && proStockInfo.LocationCode!= "成品包装拣货区")
                {
                    return content.Error($"{barCode}胶框信息不在拣货区");
                }
                //获取当前的库存属性
                Dt_Warehouse? warePoint = null;
                switch (proStockInfo.ProStockAttribute)
                {
                    case (int)ProStockAttributeEnum.成品:
                        warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
                        break;
                    case (int)ProStockAttributeEnum.尾数:
                        warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
                        break;
                    case (int)ProStockAttributeEnum.研发:
                        warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA73.ToString());
                        break;
                    default:
                        throw new Exception($"未找到{barCode}胶框信息库存属性");
                }
                Dt_Warehouse warehouseLocation = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
                Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == warehouseLocation.WarehouseId);
                if (locationInfo == null)
                {
                    return content.Error($"未找到{warehouse.WarehouseCode}货位信息");
                }
                proStockInfo.StockStatus = StockStatusEmun.成品余料回库.ObjToInt();
                proStockInfo.proStockInfoDetails.ForEach(x =>
                {
                    x.ProOutDetailStatus = StockStatusEmun.成品余料回库.ObjToInt();
                });
                Dt_Task newTask = new Dt_Task()
                {
                    CurrentAddress = startPoint,
                    Grade = 0,
                    NextAddress = "",
                    PalletCode = proStockInfo.PalletCode,
                    Roadway = locationInfo.RoadwayNo,
                    SourceAddress = startPoint,
                    TargetAddress = "",
                    TaskType = TaskTypeEnum.InProductBack.ObjToInt(),
                    TaskStatus = TaskStatusEnum.New.ObjToInt(),
                    WarehouseId = warePoint.WarehouseId,
                    PalletType = proStockInfo.PalletType,
                    MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
                    Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
                };
                _unitOfWorkManage.BeginTran();
                int taskId = BaseDal.AddData(newTask);
                newTask.TaskId = taskId;
                _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
                _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails);
                _unitOfWorkManage.CommitTran();
                //推送任务
                PushTasksToWCS(new List<Dt_Task> { newTask });
                content.OK("发送成功");
            }
            catch (Exception ex)
            {
                _unitOfWorkManage.RollbackTran();
                content.Error(ex.Message);
            }
            return content;
        }
        //public WebResponseContent BackProductTask(string barCode, string startPoint)
        //{
        //    WebResponseContent content = new WebResponseContent();
        //    try
        //    {
        //        string palletCode = @"^C\d{5}$";  // æ­£åˆ™è¡¨è¾¾å¼
        //        bool isValid = Regex.IsMatch(barCode, palletCode);
        //        if (!isValid)
        //        {
        //            return content.Error($"框码格式错误{barCode}");
        //        }
        //        if (!OutStartPonits.Contains(startPoint))
        //        {
        //            return content.Error($"起点错误{startPoint}");
        //        }
        //        //判断当前点位是否重复
        //        Dt_Task taskOldPoint = BaseDal.QueryFirst(x=>x.SourceAddress==startPoint && (x.TaskStatus == TaskStatusEnum.New.ObjToInt()||x.TaskStatus==TaskStatusEnum.Line_Execute.ObjToInt()|| x.TaskStatus == TaskStatusEnum.Line_Executing.ObjToInt() || x.TaskStatus == TaskStatusEnum.AGV_Takeing.ObjToInt()));
        //        if (taskOldPoint != null)
        //        {
        //            return content.Error($"站点{startPoint}已存在任务");
        //        }
        //        Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == barCode);
        //        if (taskOld != null)
        //        {
        //            return content.Error($"胶框{barCode}任务已存在");
        //        }
        //        //获取胶框余料
        //        Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x=>x.PalletCode== barCode).Includes(x=>x.proStockInfoDetails).First();
        //        if (proStockInfo==null)
        //        {
        //            return content.Error($"未找到{barCode}胶框信息");
        //        }
        //        if (proStockInfo.proStockInfoDetails==null || proStockInfo.proStockInfoDetails.Count<=0)
        //        {
        //            return content.Error($"{barCode}胶框信息为空");
        //        }
        //        if (proStockInfo.StockStatus!=StockStatusEmun.出库完成.ObjToInt())
        //        {
        //            return content.Error($"{barCode}胶框信息状态异常");
        //        }
        //        //获取成品平库
        //        Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
        //        if (proStockInfo.WarehouseId != warehouse.WarehouseId && proStockInfo.LocationCode!= "成品包装拣货区")
        //        {
        //            return content.Error($"{barCode}胶框信息不在拣货区");
        //        }
        //        //获取当前的库存属性
        //        Dt_Warehouse? warePoint = null;
        //        switch (proStockInfo.ProStockAttribute)
        //        {
        //            case (int)ProStockAttributeEnum.成品:
        //                warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
        //                break;
        //            case (int)ProStockAttributeEnum.尾数:
        //                warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
        //                break;
        //            case (int)ProStockAttributeEnum.研发:
        //                warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA73.ToString());
        //                break;
        //            default:
        //                throw new Exception($"未找到{barCode}胶框信息库存属性");
        //        }
        //        Dt_Warehouse warehouseLocation = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
        //        Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == warehouseLocation.WarehouseId);
        //        if (locationInfo == null)
        //        {
        //            return content.Error($"未找到{warehouse.WarehouseCode}货位信息");
        //        }
        //        proStockInfo.StockStatus = StockStatusEmun.成品余料回库.ObjToInt();
        //        proStockInfo.proStockInfoDetails.ForEach(x =>
        //        {
        //            x.ProOutDetailStatus = StockStatusEmun.成品余料回库.ObjToInt();
        //        });
        //        Dt_Task newTask = new Dt_Task()
        //        {
        //            CurrentAddress = startPoint,
        //            Grade = 0,
        //            NextAddress = "",
        //            PalletCode = proStockInfo.PalletCode,
        //            Roadway = locationInfo.RoadwayNo,
        //            SourceAddress = startPoint,
        //            TargetAddress = "",
        //            TaskType = TaskTypeEnum.InProductBack.ObjToInt(),
        //            TaskStatus = TaskStatusEnum.New.ObjToInt(),
        //            WarehouseId = warePoint.WarehouseId,
        //            PalletType = proStockInfo.PalletType,
        //            MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
        //            Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
        //        };
        //        _unitOfWorkManage.BeginTran();
        //        int taskId = BaseDal.AddData(newTask);
        //        newTask.TaskId = taskId;
        //        _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
        //        _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails);
        //        _unitOfWorkManage.CommitTran();
        //        //推送任务
        //        PushTasksToWCS(new List<Dt_Task> { newTask });
        //        content.OK("发送成功");
        //    }
        //    catch (Exception ex)
        //    {
        //        _unitOfWorkManage.RollbackTran();
        //        content.Error(ex.Message);
        //    }
        //    return content;
        //}
        /// <summary>
        /// ç©ºæ¡†å›žåº“
        /// </summary>