public IHttpActionResult GetWareHouseAreaListByID(MatWareHouseAreaInfo matwarehouseareaInfo)
 {
     try
     {
         var page = GetPageResult(MatWareHouseAreaInfoContract.MatWareHouseAreaInfos.Where(m => m.MatWareHouse.Id == matwarehouseareaInfo.Id), m => new
         {
             m.Id,
             MatWareHouse_ID = m.MatWareHouse.Id,
             WareHouseCode   = m.MatWareHouse.WareHouseCode,
             WareHouseName   = m.MatWareHouse.WareHouseName,
             m.WareHouseAreaCode,
             m.WareHouseAreaName,
             m.WareHouseLocationType,
             WareHouseLocationCodeType = 0,
             m.LayerNumber,
             m.ColumnNumber,
             m.LocationQuantity,
             m.StorageRackSpecifications,
             m.LocationSpecifications,
             m.LocationLoadBearing,
             m.Description,
             m.IsGenerageLocation,
             m.Remark,
             m.CreatedTime,
             m.CreatorUserId,
             m.LastUpdatedTime,
             m.LastUpdatorUserId,
         });
         return(Json(new OperationResult(OperationResultType.Success, "读取仓库区域信息列表数据成功!", page)));
     }
     catch (Exception ex)
     {
         return(Json(new OperationResult(OperationResultType.Error, "读取仓库区域信息列表数据失败!" + ex.ToString())));
     }
 }
        public IHttpActionResult Get(string id)
        {
            Guid guid = Guid.Parse(id);
            MatWareHouseAreaInfo MatWareHouseAreaInfoList = MatWareHouseAreaInfoContract.MatWareHouseAreaInfos.ToList().Find(s =>
            {
                return(s.Id == guid);
            });

            if (MatWareHouseAreaInfoList == null)
            {
                return(Json(new OperationResult(OperationResultType.Success, "读取仓库区域信息数据失败!", MatWareHouseAreaInfoList)));
            }
            return(Json(new OperationResult(OperationResultType.Success, "读取仓库区域信息数据成功!", MatWareHouseAreaInfoList)));
        }
Пример #3
0
        /// <summary>
        /// 更新库位信息
        /// </summary>
        /// <param name="inputDtos"></param>
        /// <returns></returns>
        public async Task <OperationResult> UpdateMatWareHouseLocations(params MatWareHouseLocationInfoInputDto[] inputDtos)
        {
            inputDtos.CheckNotNull("inputDtos");
            //
            foreach (MatWareHouseLocationInfoInputDto dtoData in inputDtos)
            {
                if (string.IsNullOrEmpty(dtoData.WareHouseLocationCode))
                {
                    return(new OperationResult(OperationResultType.Error, "请正确填写库位编号,该组数据不被存储。"));
                }
                if (string.IsNullOrEmpty(dtoData.WareHouseLocationName))
                {
                    return(new OperationResult(OperationResultType.Error, "请正确填写库位名称,该组数据不被存储。"));
                }
                //
                if (MatWareHouseLocationRepository.CheckExists(x => x.WareHouseLocationCode == dtoData.WareHouseLocationCode && x.Id != dtoData.Id))
                {
                    return(new OperationResult(OperationResultType.Error, $"库位编号 {dtoData.WareHouseLocationCode} 的数据已存在,该组数据不被存储。"));
                }
                if (MatWareHouseLocationRepository.CheckExists(x => x.WareHouseLocationName == dtoData.WareHouseLocationName && x.Id != dtoData.Id))
                {
                    return(new OperationResult(OperationResultType.Error, $"库位名称 {dtoData.WareHouseLocationName} 的数据已存在,该组数据不被存储。"));
                }
            }
            //
            MatWareHouseLocationRepository.UnitOfWork.BeginTransaction();
            //
            MatWareHouseInfo info = new MatWareHouseInfo();

            foreach (var item in inputDtos)
            {
                info = MatWareHouseInfoRepository.TrackEntities.Where(m => m.Id == item.MatWareHouse_Id).FirstOrDefault();
                item.MatWareHouse = info;
            }
            //
            MatWareHouseAreaInfo matwarehouseareaInfo = new MatWareHouseAreaInfo();

            foreach (var item in inputDtos)
            {
                matwarehouseareaInfo  = MatWareHouseAreaInfoRepository.TrackEntities.Where(m => m.Id == item.MatWareHouseArea_Id).FirstOrDefault();
                item.MatWareHouseArea = matwarehouseareaInfo;
            }
            //
            var result = await MatWareHouseLocationRepository.UpdateAsync(inputDtos);

            MatWareHouseLocationRepository.UnitOfWork.Commit();
            return(result);
        }
        /// <summary>
        /// 物理删除库位信息
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public async Task <OperationResult> DeleteMatWareHouseLocations(params Guid[] ids)
        {
            ids.CheckNotNull("ids");
            MatWareHouseLocationRepository.UnitOfWork.BeginTransaction();
            //
            OperationResult result = new OperationResult();
            //
            Guid matwarehouseareaInfoGuid = new Guid();

            foreach (Guid idsCurrent in ids)
            {
                matwarehouseareaInfoGuid = MatWareHouseLocationRepository.TrackEntities
                                           .Where(m => m.Id == idsCurrent)
                                           .Select(m => m.MatWareHouseArea.Id)
                                           .FirstOrDefault();
                //
                result = await MatWareHouseLocationRepository.DeleteAsync(ids);

                //
                int matwarehouseareaInfoNew2 = MatWareHouseLocationRepository.TrackEntities
                                               .Count(m => m.MatWareHouseArea.Id.Equals(matwarehouseareaInfoGuid));
                if (matwarehouseareaInfoNew2 == 0)
                {
                    MatWareHouseAreaInfo matwarehouseareaInfo = MatWareHouseAreaInfoRepository.TrackEntities
                                                                .Where(m => m.Id == matwarehouseareaInfoGuid)
                                                                .FirstOrDefault();
                    //matwarehouseareaInfo.Id = matwarehouseareaInfoGuid;
                    matwarehouseareaInfo.IsGenerageLocation = false;
                    matwarehouseareaInfo.LastUpdatedTime    = DateTime.Now;
                    //
                    await MatWareHouseAreaInfoRepository.UpdateAsync(matwarehouseareaInfo);
                }
            }
            //
            MatWareHouseLocationRepository.UnitOfWork.Commit();
            return(result);
        }
        /// <summary>
        /// 初始化仓位图信息
        /// </summary>
        /// <returns></returns>
        public List <MatWareHousAreaLocationInfoOutputDto> Ini1(Guid id)
        {
            List <MatWareHousAreaLocationInfoOutputDto> matwarehousarealocationinfoList = new List <MatWareHousAreaLocationInfoOutputDto>();

            //
            foreach (MatWareHouseAreaInfo matwarehouseareaInfo in MatWareHouseAreaInfoRepository.Entities.Where(m => (!(id == Guid.Empty) ? m.Id.ToString().Contains(id.ToString()) : true)))
            {
                Guid MatWareHouseArea_Id = matwarehouseareaInfo.Id;
                MatWareHouseAreaInfo MatWareHouseArea = MatWareHouseAreaInfoRepository.TrackEntities.Where(m => m.Id == MatWareHouseArea_Id).FirstOrDefault();
                //List<MatWareHouseLocationInfo> matwarehouselocationinfoList = MatWareHouseLocationInfoRepository.TrackEntities.Where(m => m.MatWareHouseArea.Id == MatWareHouseArea_Id)
                //                                                                                                              .OrderBy(m => m.WareHouseLocationCode).ToList();
                //库位 库存 基础数据
                //var matwarehouselocationinfoList = MatWareHouseLocationInfoRepository.TrackEntities.Where(m => m.MatWareHouseArea.Id == MatWareHouseArea_Id)
                //                                                                                   .OrderBy(m => m.WareHouseLocationCode.Length == 8 ? m.WareHouseLocationCode : m.WareHouseLocationCode.Substring(9,2) + m.WareHouseLocationCode.Substring(5, 3))
                //                                                                                   .Select(m => new
                //var matwarehouselocationinfoList = MatWareHouseLocationInfoRepository.TrackEntities.Where(m => m.MatWareHouseArea.Id == MatWareHouseArea_Id)
                //                                                                                   .OrderBy(m => m.WareHouseLocationCode.Substring(m.WareHouseLocationCode..LastIndexOf("_") + 1,m.WareHouseLocationCode.Length).Length == 3 ?
                //                                                                                                          m.WareHouseLocationCode :
                //                                                                                                          m.WareHouseLocationCode.Substring(m.WareHouseLocationCode.LastIndexOf("_") + 1, 2) +
                //                                                                                                          m.WareHouseLocationCode.Substring(m.WareHouseLocationCode.LastIndexOf("_", m.WareHouseLocationCode.LastIndexOf("_") - 1) + 1, 3) )
                //                                                                                   .Select(m => new
                var matwarehouselocationinfoList = MatWareHouseLocationInfoRepository.TrackEntities.Where(m => m.MatWareHouseArea.Id == MatWareHouseArea_Id)
                                                   .OrderBy(m => m.Id)
                                                   .Select(m => new
                {
                    WareHouseCode = m.MatWareHouse.WareHouseCode,
                    WareHouseName = m.MatWareHouse.WareHouseName,

                    WareHouseAreaCode = m.MatWareHouseArea.WareHouseAreaCode,
                    WareHouseAreaName = m.MatWareHouseArea.WareHouseAreaName,

                    m.WareHouseLocationCode,
                    m.WareHouseLocationName,
                    m.WareHouseLocationType,
                    //m.WareHouseLocationStatus,

                    LayerNumber  = m.MatWareHouseArea.LayerNumber,
                    ColumnNumber = m.MatWareHouseArea.ColumnNumber,

                    PalletCode = MatPalletRepository.TrackEntities.Where(x => x.Id.ToString().Contains(m.PalletID.ToString())).Select(x => x.PalletCode).FirstOrDefault(),
                    PalletName = MatPalletRepository.TrackEntities.Where(x => x.Id.ToString().Contains(m.PalletID.ToString())).Select(x => x.PalletName).FirstOrDefault(),

                    StorageQuantity    = MaterialBatchInfoRepository.TrackEntities.Where(m2 => m2.MatWareHouseLocation.Id == m.Id && m2.Quantity > 0).Sum(m2 => m2.Quantity),
                    FullPalletQuantity = MaterialBatchInfoRepository.TrackEntities.Where(m2 => m2.MatWareHouseLocation.Id == m.Id && m2.Quantity > 0).Select(m2 => m2.Material.FullPalletQuantity).FirstOrDefault(),

                    m.IsUse,
                }).ToList();

                //库位 层 数据
                for (int i = 0; i < MatWareHouseArea.LayerNumber; i++)
                {
                    MatWareHousAreaLocationInfoOutputDto matwarehousarealocationInfo = new MatWareHousAreaLocationInfoOutputDto();
                    //
                    matwarehousarealocationInfo.MatWareHouseArea = MatWareHouseArea;
                    //
                    matwarehousarealocationInfo.WareHouseAreaCode = MatWareHouseArea.WareHouseAreaCode;
                    matwarehousarealocationInfo.WareHouseAreaName = MatWareHouseArea.WareHouseAreaName;

                    matwarehousarealocationInfo.WareHouseCode = MatWareHouseArea.MatWareHouse.WareHouseCode;
                    matwarehousarealocationInfo.WareHouseName = MatWareHouseArea.MatWareHouse.WareHouseName;

                    matwarehousarealocationInfo.LayerNumber      = string.Format($"{i + 1:00}", i + 1);
                    matwarehousarealocationInfo.ColumnNumber     = MatWareHouseArea.ColumnNumber == null ? 0 : MatWareHouseArea.ColumnNumber.Value;
                    matwarehousarealocationInfo.WareHouseColumns = new List <string>();
                    //
                    for (int iii = 0; iii < matwarehousarealocationInfo.ColumnNumber; iii++)
                    {
                        string warehousecolumn = "";
                        matwarehousarealocationInfo.WareHouseColumns.Add(warehousecolumn);
                    }
                    //
                    matwarehousarealocationinfoList.Add(matwarehousarealocationInfo);
                }
                //
                //库位 库存 基础数据 顺序号
                int ii = 0;
                //
                //库位 列 基础数据
                for (int i = 0; i < MatWareHouseArea.LayerNumber; i++)
                {
                    for (int j = 0; j < MatWareHouseArea.ColumnNumber; j++)
                    {
                        string sWareHouseLocationCode = "";
                        string sPalletCode            = "";
                        string sStorageQuantity       = "";
                        string sFullPalletQuantity    = "";
                        string sIsUse = "";
                        //
                        if (matwarehouselocationinfoList[ii] != null)
                        {
                            sWareHouseLocationCode = matwarehouselocationinfoList[ii].WareHouseLocationCode;
                            if (string.IsNullOrEmpty(sWareHouseLocationCode))
                            {
                                sWareHouseLocationCode = "-";
                            }
                            //
                            sPalletCode = matwarehouselocationinfoList[ii].PalletCode;
                            if (string.IsNullOrEmpty(sPalletCode))
                            {
                                sPalletCode = "-";
                            }
                            //
                            sStorageQuantity = matwarehouselocationinfoList[ii].StorageQuantity.ToString();
                            if (string.IsNullOrEmpty(sStorageQuantity))
                            {
                                sStorageQuantity = "-";
                            }
                            //
                            sFullPalletQuantity = matwarehouselocationinfoList[ii].FullPalletQuantity.ToString();
                            if (string.IsNullOrEmpty(sFullPalletQuantity))
                            {
                                sFullPalletQuantity = "-";
                            }
                            //
                            sIsUse = matwarehouselocationinfoList[ii].IsUse.ToString();
                            //
                            sWareHouseLocationCode = sWareHouseLocationCode + " " + sPalletCode + " " + sStorageQuantity + " " + sFullPalletQuantity + " " + sIsUse;
                            matwarehousarealocationinfoList[i].WareHouseColumns[j] = sWareHouseLocationCode;
                        }
                        ii++;
                    }
                }
            }
            ////////////////////////////////////////////////////
            return(matwarehousarealocationinfoList);
        }