Пример #1
0
        private RouteData StockCountCore(
            string StockInventoryId, DateTime StockCountDate, string WarehouseID, OutsideStockCountMaterial[] materials)
        {
            if (materials.Length == 0)
            {
                return(YL.Core.Dto.RouteData.From(PubMessages.E2204_STOCKCOUNT_MATERIAL_ZERO));
            }

            string        warehouseNo = string.IsNullOrWhiteSpace(WarehouseID) ? "A00" : WarehouseID;
            Wms_warehouse warehouse   = WMSApiManager.GetWarehouse(warehouseNo);

            if (warehouse == null)
            {
                return(YL.Core.Dto.RouteData.From(PubMessages.E1026_SUPPLIES_WAREHOUSEID_NOTFOUND, $"warehouseId = {warehouseNo}"));
            }
            long warehouseId          = warehouse.WarehouseId;
            IWMSBaseApiAccessor proxy = WMSApiManager.GetBaseApiAccessor(warehouseId.ToString(), _sqlClient);

            Wms_mestask mesTask = new Wms_mestask()
            {
                MesTaskId        = PubId.SnowflakeId,
                MesTaskType      = MESTaskTypes.StockCount,
                WarehousingId    = StockInventoryId,              //入库单编号
                WarehousingType  = String.Empty,                  //入库类型
                WarehousingTime  = StockCountDate,                //入库时间
                ProductionPlanId = String.Empty,                  //生产令号
                BatchPlanId      = String.Empty,                  //批次号
                WorkAreaName     = String.Empty,                  //作业区
                SuppliesKinds    = materials.Length,              //物料种类
                SuppliesInfoJson = "",                            // jsonSuppliesInfoStr, //物料信息
                WorkStatus       = MESTaskWorkStatus.WaitPlan,    //等待计划
                NotifyStatus     = MESTaskNotifyStatus.Requested, //已接收
                CreateDate       = DateTime.Now
            };
            RouteData result = null;

            try
            {
                result = proxy.StockCount(new OutsideStockCountRequestDto()
                {
                    MesTaskId    = mesTask.MesTaskId,
                    StockCountNo = StockInventoryId,
                    PlanDate     = StockCountDate.ToString(PubConst.Format_Date),
                    MaterialList = materials
                }).GetAwaiter().GetResult();
                if (result == null || !result.IsSccuess)
                {
                    mesTask.WorkStatus = MESTaskWorkStatus.Failed;
                    mesTask.Remark     = result.Message;
                }
            }
            catch (Exception ex)
            {
                mesTask.WorkStatus = MESTaskWorkStatus.Failed;
                mesTask.Remark     = ex.Message;
            }

            _mastaskServices.Insert(mesTask);
            return(result);
        }
Пример #2
0
        public async Task <string> Search(string text)
        {
            //var bootstrap = new Bootstrap.BootstrapParams
            //{
            //    limit = 100,
            //    offset = 0,
            //    sort = "CreateDate",
            //    search = text,
            //    order = "desc"
            //};
            //var json = _storagerackServices.PageList(bootstrap);
            //return Content(json);

            var bootstrap = new Bootstrap.BootstrapParams
            {
                limit  = 100,
                offset = 1,
                sort   = "CreateDate",
                search = text,
                order  = "desc"
            };
            IWMSBaseApiAccessor           wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <Wms_storagerack[]> result      = await wmsAccessor.GetStorageRackList(
                null, null, bootstrap.offset, bootstrap.limit, bootstrap.search,
                new string[] { bootstrap.sort + " " + bootstrap.order },
                bootstrap.datemin, bootstrap.datemax);

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
Пример #3
0
        public async Task <IActionResult> Index(string storeId)
        {
            IWMSBaseApiAccessor             wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId, _client);
            RouteData <Wms_reservoirarea[]> result      = (await wmsAccessor.GetReservoirAreaList(1, 100, null, null, null, null));

            ViewData["reservoirAreaList"] = result.Data;
            return(View());
        }
Пример #4
0
        public async Task <IActionResult> Work(long storeId, string pid)
        {
            IWMSBaseApiAccessor baseApiAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client, this.UserDto);
            var model = _stockinServices.QueryableToEntity(c => c.StockInId == SqlFunc.ToInt64(pid) && c.IsDel == 1);

            ViewData["currentStoreId"]    = model.WarehouseId;
            ViewData["reservoirAreaList"] = (await baseApiAccessor.GetReservoirAreaList(1, 20, "", new string[0], "", "")).Data;
            return(View(model));
        }
Пример #5
0
        public async Task <string> Search(long storeId, string text)
        {
            IWMSBaseApiAccessor           wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <Wms_MaterialDto[]> result      = (await wmsAccessor.GetMateralList(1, 100, text, new string[0], null, null));

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
Пример #6
0
        public async Task <IActionResult> Index()
        {
            long currentStoreId = (long)ViewData["currentStoreId"];


            IWMSBaseApiAccessor baseAccessor = WMSApiManager.GetBaseApiAccessor(currentStoreId.ToString(), _client);

            ViewBag.ReservoirAreas = (await baseAccessor.GetReservoirAreaList(0, 100, "", null, "", "")).Data;

            return(View());
        }
Пример #7
0
        public async Task <string> Search(string storeId, string text)
        {
            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <OutsideStockOutQueryResult[]> result = await wmsAccessor.QueryStockOutList(null, null, 1, 20, text, new string[0], null, null);

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
Пример #8
0
        public async Task <PageGridData> QueryPlanList(StockCountBootstrapParams bootstrap)
        {
            IWMSBaseApiAccessor baseAccessor          = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <OutsideStockCountDto[]> result = await baseAccessor.QueryStockCountList(
                bootstrap.StockCountStatus, bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                new string[] { bootstrap.sort + " " + bootstrap.order },
                bootstrap.datemin, bootstrap.datemax
                );

            return(result.ToGridData());
        }
Пример #9
0
        public async Task <OutsideStockCountMaterial[]> QueryPlanMaterialList(StockCountMaterialBootstrapParams bootstrap)
        {
            IWMSBaseApiAccessor baseAccessor        = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <OutsideStockCountDto> result = await baseAccessor.QueryStockCount(bootstrap.StockCountNo);

            if (!result.IsSccuess || result.Data == null)
            {
                return(new OutsideStockCountMaterial[0]);
            }
            return(result.Data.MaterialList);
        }
        public async Task <IActionResult> Index(string storeId)
        {
            long currentStoreId = (long)ViewData["currentStoreId"];

            IWMSBaseApiAccessor             wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId, _client);
            RouteData <Wms_reservoirarea[]> result      = (await wmsAccessor.GetReservoirAreaList(1, 100, null, null, null, null));

            ViewData["reservoirAreaList"] = result.Data;
            //ViewBag.StorageRack = _storagerackServices.QueryableToList(c => c.WarehouseId == currentStoreId && c.IsDel == 1);
            return(View());
        }
Пример #11
0
        public async Task <string> ListDetail(int storeId, string pid)
        {
            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <OutsideStockInQueryResult> result = await wmsAccessor.QueryStockIn(SqlFunc.ToInt64(pid));

            if (!result.IsSccuess)
            {
                return(null);
            }
            return(new PageGridData(result.Data.Details, result.Data.Details.Length).JilToJson());
        }
        public async Task <IActionResult> BoxBack(long storeId, long inventoryBoxId)
        {
            IWMSBaseApiAccessor          wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client, this.UserDto);
            RouteData <Wms_inventorybox> result      = await wmsAccessor.GetInventoryBox(inventoryBoxId);

            if (!result.IsSccuess)
            {
                return(Json(result));
            }
            Wms_inventorybox     box  = result.Data;
            Wms_inventoryboxTask task = await _client.Queryable <Wms_inventoryboxTask>().FirstAsync(x => x.InventoryBoxId == inventoryBoxId &&
                                                                                                    (x.Status != (int)InventoryBoxTaskStatus.task_canceled &&
                                                                                                     x.Status != (int)InventoryBoxTaskStatus.task_backed));

            if (task == null) //新料箱入库
            {
                if (box.Status == (int)InventoryBoxStatus.None)
                {
                    task = new Wms_inventoryboxTask()
                    {
                        InventoryBoxTaskId = PubId.SnowflakeId,
                        InventoryBoxId     = box.InventoryBoxId,
                        InventoryBoxNo     = box.InventoryBoxNo,
                        ReservoirareaId    = (long)box.ReservoirAreaId,
                        StoragerackId      = (long)box.StorageRackId,
                        Data         = null,
                        OperaterDate = DateTime.Now,
                        OperaterId   = UserDto.UserId,
                        OperaterUser = UserDto.UserName,
                        Status       = InventoryBoxTaskStatus.task_leaved.ToByte()
                    };

                    if (_client.Insertable(task).ExecuteCommand() == 0)
                    {
                        return(Json(YL.Core.Dto.RouteData.From(PubMessages.E0005_DATABASE_INSERT_FAIL, "新料箱入库时任务记录生成失败")));
                    }
                }
                else
                {
                    return(Json(YL.Core.Dto.RouteData.From(PubMessages.E1013_INVENTORYBOXTASK_NOTFOUND)));
                }
            }
            else if (await _client.Queryable <Wms_stockindetail_box>().AnyAsync(x => x.InventoryBoxId == task.InventoryBoxTaskId))
            {
                return(Redirect($"/inventorybox/stockinboxback?storeId={storeId}&inventoryBoxTaskId=" + task.InventoryBoxTaskId));
            }
            else if (await _client.Queryable <Wms_stockoutdetail_box>().AnyAsync(x => x.InventoryBoxId == task.InventoryBoxTaskId))
            {
                return(Redirect($"/inventorybox/stockoutboxback?storeId={storeId}&inventoryBoxTaskId=" + task.InventoryBoxTaskId));
            }
            ViewData["InventoryBoxTaskId"] = task.InventoryBoxTaskId;
            ViewData["currentStoreId"]     = storeId;
            return(View(box));
        }
        public async Task <string> Search(long storeId, string text)
        {
            IWMSBaseApiAccessor            wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <Wms_inventorybox[]> result      = (await wmsAccessor.GetInventoryBoxList(
                                                              null, null, null, 1, 20, text, null, null, null));

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
Пример #14
0
        public async Task <Wms_MaterialDto[]> MaterialList(Bootstrap.BootstrapParams bootstrap)
        {
            IWMSBaseApiAccessor           wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <Wms_MaterialDto[]> result      = (await wmsAccessor.GetMateralList(
                                                             bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                                                             new string[] { bootstrap.sort + " " + bootstrap.order },
                                                             bootstrap.datemin, bootstrap.datemax));

            if (!result.IsSccuess)
            {
                return(new Wms_MaterialDto[0]);
            }
            return(result.Data);
        }
Пример #15
0
        public async Task <string> GetReservoirarea(string id)
        {
            //var json = _reservoirareaServices.Queryable().Where(c => c.IsDel == 1 && c.WarehouseId == SqlFunc.ToInt64(id))
            //    .Select(c => new { ReservoirAreaId = c.ReservoirAreaId.ToString(), c.ReservoirAreaName })
            //    .ToList();
            //return Content(json.JilToJson());

            IWMSBaseApiAccessor             wmsAccessor = WMSApiManager.GetBaseApiAccessor(id.ToString(), _client);
            RouteData <Wms_reservoirarea[]> result      = (await wmsAccessor.GetReservoirAreaList(1, 100, null, null, null, null));

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
        public async Task <string> DetailList(long storeId, long id)
        {
            if (id == 0)
            {
                return(PubMessages.E1006_INVENTORYBOX_MISSING.Message);
            }

            IWMSBaseApiAccessor         wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <Wms_inventory[]> result      = await wmsAccessor.GetInventoryBoxDetail(id);

            if (!result.IsSccuess)
            {
                return(result.Message);
            }
            return(result.ToGridJson());
        }
Пример #17
0
        public async Task <IActionResult> InventoryBoxList(long storeId, string materialNo)
        {
            ViewBag.StoreId    = storeId;
            ViewBag.MaterialNo = materialNo;
            IWMSOperationApiAccessor        accessor            = WMSApiManager.GetOperationApiAccessor(storeId.ToString(), _client, this.UserDto);
            IWMSBaseApiAccessor             wmsAccessor         = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
            RouteData <Wms_reservoirarea[]> reservoirAreaResult = (await wmsAccessor.GetReservoirAreaList(1, 100, null, null, null, null));

            ViewData["reservoirAreaList"] = reservoirAreaResult.Data;
            RouteData <Wms_InventoryBoxMaterialInfo[]> result = await accessor.GetInventoryBoxList(materialNo);

            Wms_InventoryBoxMaterialInfo last = result.Data.FirstOrDefault(x => x.InventoryBoxStatus == (int)InventoryBoxStatus.InPosition);

            ViewBag.Data = JsonConvert.SerializeObject(new Wms_InventoryBoxMaterialInfo[] { last });
            return(View());
        }
        public async Task <IActionResult> Add(long storeId, string id)
        {
            ViewData["currentStoreId"] = storeId;
            var model = new Wms_inventorybox();

            if (id.IsEmpty())
            {
                return(View(model));
            }
            else
            {
                IWMSBaseApiAccessor          wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);
                RouteData <Wms_inventorybox> result      = await wmsAccessor.GetInventoryBox(SqlFunc.ToInt64(id));

                return(View(result.Data));
            }
        }
Пример #19
0
        public async Task <string> List([FromForm] StorageRackBootstrapParams bootstrap)
        {
            //var sd = _storagerackServices.PageList(bootstrap);
            //return Content(sd);

            IWMSBaseApiAccessor           wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <Wms_storagerack[]> result      = await wmsAccessor.GetStorageRackList(
                bootstrap.ReservoirAreaId, bootstrap.Status, bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                new string[] { bootstrap.sort + " " + bootstrap.order },
                bootstrap.datemin, bootstrap.datemax);

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
        public async Task <IActionResult> Detail(long storeId, long id)
        {
            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);

            if (id == 0)
            {
                return(Content("调用错误"));
            }
            RouteData <Wms_inventorybox> result = (await wmsAccessor.GetInventoryBox(id));

            if (!result.IsSccuess)
            {
                return(Content(result.Message));
            }
            ViewData["currentStoreId"] = storeId;
            return(View(result.Data));
        }
Пример #21
0
        public async Task <string> List([FromForm] Bootstrap.BootstrapParams bootstrap)
        {
            //var sd = _materialServices.PageList(bootstrap);
            //return Content(sd);

            IWMSBaseApiAccessor           wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <Wms_MaterialDto[]> result      = (await wmsAccessor.GetMateralList(
                                                             bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                                                             new string[] { bootstrap.sort + " " + bootstrap.order },
                                                             bootstrap.datemin, bootstrap.datemax));

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
        public async Task <IActionResult> StockOutBoxBack(long storeId, long inventoryBoxTaskId)
        {
            IWMSOperationApiAccessor         wmsAccessor = WMSApiManager.GetOperationApiAccessor(storeId.ToString(), _client, this.UserDto);
            RouteData <Wms_inventoryboxTask> result      = await wmsAccessor.GetInventoryBoxkTask(inventoryBoxTaskId);

            IWMSBaseApiAccessor          wmsBaseAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client, this.UserDto);
            RouteData <Wms_inventorybox> boxResult       = await wmsBaseAccessor.GetInventoryBox(result.Data.InventoryBoxId);

            if (!boxResult.IsSccuess)
            {
                return(Json(boxResult.Message));
            }

            ViewData["currentStoreId"]     = storeId;
            ViewData["InventoryBoxTaskId"] = inventoryBoxTaskId;
            return(View(boxResult.Data));
        }
        public async Task <PageGridData> List([FromForm] PubParams.InventoryBootstrapParams bootstrap)
        {
            //var sd = _inventoryrecordServices.PageList(bootstrap);
            //return Content(sd);

            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <OutsideInventoryRecordDto[]> result = (await wmsAccessor.QueryInventoryRecord(
                                                                  null, null, null, null, bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                                                                  new string[] { bootstrap.sort + " " + bootstrap.order },
                                                                  bootstrap.datemin, bootstrap.datemax));

            if (!result.IsSccuess)
            {
                return(new PageGridData());
            }
            return(result.ToGridData());
        }
Пример #24
0
        public async Task <string> List([FromForm] PubParams.StockInBootstrapParams bootstrap)
        {
            //var sd = _stockinServices.PageList(bootstrap);
            //return Content(sd);

            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
            RouteData <OutsideStockInQueryResult[]> result = await wmsAccessor.QueryStockInList(
                null, null, bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                new string[] { bootstrap.sort + " " + bootstrap.order },
                bootstrap.datemin, bootstrap.datemax);

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.ToGridJson());
        }
Пример #25
0
        public async Task <IActionResult> Add(string id, string storeId)
        {
            IWMSBaseApiAccessor             wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId, _client);
            RouteData <Wms_reservoirarea[]> result      = (await wmsAccessor.GetReservoirAreaList(1, 100, null, null, null, null));

            ViewData["reservoirAreaList"] = result.Data;

            var model = new Wms_storagerack();

            if (id.IsEmpty())
            {
                return(View(model));
            }
            else
            {
                model = _storagerackServices.QueryableToEntity(c => c.StorageRackId == SqlFunc.ToInt64(id));
                return(View(model));
            }
        }
Пример #26
0
        public async Task <string> GetStoragerack(long storeId, long id)
        {
            //var json = _storagerackServices.Queryable().Where(c => c.IsDel == 1 && c.ReservoirAreaId == SqlFunc.ToInt64(id))
            //    .Select(c => new { value = c.StorageRackId.ToString(), name = c.StorageRackName })
            //    .ToList();
            //return Content(json.JilToJson());

            IWMSBaseApiAccessor wmsAccessor = WMSApiManager.GetBaseApiAccessor(storeId.ToString(), _client);

            if (wmsAccessor == null)
            {
                return("");
            }
            RouteData <Wms_storagerack[]> result = (await wmsAccessor.GetStorageRackList(SqlFunc.ToInt64(id), null, 1, 500, null, null, null, null));

            if (!result.IsSccuess)
            {
                return(new PageGridData().JilToJson());
            }
            return(result.Data.JilToJson());
        }
Пример #27
0
        public async Task <string> List([FromForm] PubParams.InventoryBootstrapParams bootstrap)
        {
            try
            {
                //var sd = _inventoryServices.PageList(bootstrap);
                //return Content(sd);
                long?materialId = string.IsNullOrWhiteSpace(bootstrap.MaterialId) ? (long?)null : long.Parse(bootstrap.MaterialId);

                IWMSBaseApiAccessor wmsAccessor          = WMSApiManager.GetBaseApiAccessor(bootstrap.storeId.ToString(), _client);
                RouteData <OutsideInventoryDto[]> result = (await wmsAccessor.QueryInventory(
                                                                null, null, null, materialId, bootstrap.pageIndex, bootstrap.limit, bootstrap.search,
                                                                new string[] { bootstrap.sort + " " + bootstrap.order }, bootstrap.datemin, bootstrap.datemax));
                if (!result.IsSccuess)
                {
                    return(new PageGridData().JilToJson());
                }
                return(result.ToGridJson());
            }
            catch (Exception ex)
            {
                return(ex.ToString());
            }
        }
Пример #28
0
        /// <summary>
        /// 获取基本Api
        /// </summary>
        /// <param name="key"></param>
        /// <param name="sqlSugar"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static IWMSBaseApiAccessor GetBaseApiAccessor(string key, ISqlSugarClient sqlSugar, SysUserDto user = null)
        {
            if (_baseApiInstanceMap.ContainsKey(key))
            {
                return(_baseApiInstanceMap[key]);
            }
            if (!_warehouseMap.ContainsKey(key))
            {
                return(null);
            }
            Wms_warehouse       warehouse = _warehouseMap[key];
            IWMSBaseApiAccessor accessor  = null;

            if (string.IsNullOrWhiteSpace(warehouse.IFAddress))
            {
                accessor = new SelfWMSBaseApiAccessor(warehouse, sqlSugar, user);
            }
            else
            {
                accessor = new WMSBaseApiAccessor(warehouse, sqlSugar, user);
                _baseApiInstanceMap.Add(key, accessor);
            }
            return(accessor);
        }
Пример #29
0
        private RouteData CreateWMSStockout(Wms_mestask mesTask, OutsideWarehouseEntryMaterialDto[] suppliesInfoList)
        {
            Dictionary <long, List <Wms_WarehouseEntryMaterialInventoryDto> > map =
                new Dictionary <long, List <Wms_WarehouseEntryMaterialInventoryDto> >();

            foreach (OutsideWarehouseEntryMaterialDto materialDto in suppliesInfoList)
            {
                //Sys_dict typeDict = _sqlClient.Queryable<Sys_dict>()
                //       .First(x => x.DictType == PubDictType.material.ToByte().ToString() && x.DictName == materialDto.SuppliesType);
                //if (typeDict == null)
                //{
                //    return RouteData<Wms_material>.From(PubMessages.E1001_SUPPLIESTYPE_NOTFOUND, $"SuppliesType = {materialDto.SuppliesType}");
                //}
                //else if (typeDict.WarehouseId == null)
                //{
                //    return RouteData<Wms_material>.From(PubMessages.E1002_SUPPLIESTYPE_WAREHOUSEID_NOTSET, $"SuppliesType = {materialDto.SuppliesType}");
                //}
                //long warehouseId = typeDict.WarehouseId.Value;


                string warehouseNo = string.IsNullOrWhiteSpace(materialDto.WarehouseId) ? "A00" : materialDto.WarehouseId;
                //MES的WarehouseID对应WMS的WarehouseNo
                Wms_warehouse warehouse = WMSApiManager.GetWarehouse(warehouseNo);
                if (warehouse == null)
                {
                    return(RouteData <Wms_material> .From(PubMessages.E1026_SUPPLIES_WAREHOUSEID_NOTFOUND, $"warehouseId = {warehouseNo}"));
                }
                long warehouseId = warehouse.WarehouseId;
                List <Wms_WarehouseEntryMaterialInventoryDto> warehouseMaterialList = null;
                if (map.ContainsKey(warehouseId))
                {
                    warehouseMaterialList = map[warehouseId];
                }
                else
                {
                    warehouseMaterialList = new List <Wms_WarehouseEntryMaterialInventoryDto>();
                    map.Add(warehouseId, warehouseMaterialList);
                }
                warehouseMaterialList.Add(new Wms_WarehouseEntryMaterialInventoryDto()
                {
                    MaterialId          = "-1",
                    SubWarehouseEntryId = materialDto.SubWarehouseEntryId,
                    UniqueIndex         = materialDto.UniqueIndex,
                    MaterialOnlyId      = materialDto.SuppliesOnlyId,
                    MaterialNo          = materialDto.SuppliesId,
                    MaterialName        = materialDto.SuppliesName,
                    MaterialType        = materialDto.SuppliesType,
                    Qty  = materialDto.SuppliesNumber,
                    Unit = materialDto.Unit
                });
            }

            List <RouteData> result = new List <RouteData>();

            foreach (KeyValuePair <long, List <Wms_WarehouseEntryMaterialInventoryDto> > keyValue in map)
            {
                try
                {
                    IWMSBaseApiAccessor       proxy   = WMSApiManager.GetBaseApiAccessor(keyValue.Key.ToString(), _sqlClient);
                    OutsideStockOutRequestDto request = new OutsideStockOutRequestDto()
                    {
                        MesTaskId          = mesTask.MesTaskId,
                        WarehouseEntryId   = mesTask.WarehousingId,
                        WarehouseEntryTime = mesTask.WarehousingTime.ToString(PubConst.Format_DateTime),
                        WarehouseEntryType = mesTask.WarehousingType,
                        WarehouseId        = keyValue.Key,
                        OrderNo            = mesTask.ProductionPlanId,
                        WorkNo             = mesTask.TotalWorkOrder,
                        BatchNumber        = mesTask.BatchNumber,
                        WorkAreaName       = mesTask.WorkAreaName,
                        WorkStationId      = mesTask.WorkStationId,
                        BatchPlanId        = mesTask.BatchPlanId,
                        MaterialList       = keyValue.Value.ToArray(),
                    };
                    _logger.LogInformation("小WMS的StockOut开始", "");
                    RouteData data = proxy.StockOut(request).GetAwaiter().GetResult();
                    _logger.LogInformation("小WMS的StockOut结束", "");
                    if (!data.IsSccuess)
                    {
                        string message = $"仓库{keyValue.Key}下发出库任务失败,Code={data.Code},Message={data.Message}";
                        _logger.LogError(message);
                        result.Add(data);
                        return(new RouteData()
                        {
                            Code = -1,
                            Message = message
                        });
                    }
                    else
                    {
                        _logger.LogInformation($"仓库{keyValue.Key}下发出库任务成功");
                    }
                }
                catch (Exception ex)
                {
                    string message = $"仓库{keyValue.Key}下发出库任务发生异常";
                    _logger.LogError(ex, message);
                    return(new RouteData()
                    {
                        Code = -1,
                        Message = message
                    });
                }
            }


            return(new RouteData());
        }
Пример #30
0
        public async Task <string> DetailList(string id, MESTaskTypes mesTaskType)
        {
            long searchMesId = id.ToInt64();

            if (id.IsEmptyZero())
            {
                return("");
            }
            //IWMSBaseApiAccessor[] proxies = WMSApiManager.GetAll(_client);

            if (mesTaskType == MESTaskTypes.StockIn)
            {
                List <Wms_stockin> stockins = await _client.Queryable <Wms_stockin>().Where(x => x.MesTaskId == searchMesId).ToListAsync();

                List <OutsideStockInQueryResult> totalResult = new List <OutsideStockInQueryResult>();
                foreach (Wms_stockin stockin in stockins)
                {
                    IWMSBaseApiAccessor proxy     = WMSApiManager.GetBaseApiAccessor(stockin.WarehouseId.ToString(), _client, this.UserDto);
                    Wms_warehouse       warehouse = proxy.Warehouse;
                    try
                    {
                        RouteData <OutsideStockInQueryResult> result = await proxy.QueryStockIn(stockin.StockInId);

                        result.Data.WarehouseName = warehouse.WarehouseName;
                        totalResult.Add(result.Data);
                    }
                    catch (Exception ex) {
                        this._logger.LogError(ex, $"查询入库信息失败,WarhouseId={stockin.WarehouseId},StockInId={stockin.StockInId}");
                        OutsideStockInQueryResult resultData = new OutsideStockInQueryResult()
                        {
                            WarehouseName   = warehouse.WarehouseName,
                            StockInId       = stockin.StockInId.ToString(),
                            StockInNo       = stockin.StockInNo,
                            StockInTypeName = stockin.StockInTypeName,
                            StockInStatus   = (StockInStatus)stockin.StockInStatus,
                            MesTaskId       = stockin.MesTaskId.ToString(),
                            OrderNo         = stockin.OrderNo,
                            Remark          = "详细信息查询失败,仅显示本地信息"
                        };
                        totalResult.Add(resultData);
                    }
                }
                return(JsonConvert.SerializeObject(Bootstrap.GridData(totalResult, totalResult.Count)));
            }
            else if (mesTaskType == MESTaskTypes.StockOut)
            {
                List <Wms_stockout> stockOuts = await _client.Queryable <Wms_stockout>().Where(x => x.MesTaskId == searchMesId).ToListAsync();

                List <OutsideStockOutQueryResult> totalResult = new List <OutsideStockOutQueryResult>();
                foreach (Wms_stockout stockout in stockOuts)
                {
                    IWMSBaseApiAccessor proxy     = WMSApiManager.GetBaseApiAccessor(stockout.WarehouseId.ToString(), _client, this.UserDto);
                    Wms_warehouse       warehouse = proxy.Warehouse;
                    try
                    {
                        RouteData <OutsideStockOutQueryResult> result = await proxy.QueryStockOut(stockout.StockOutId);

                        result.Data.WarehouseName = warehouse.WarehouseName;
                        totalResult.Add(result.Data);
                    }
                    catch (Exception ex) {
                        this._logger.LogError(ex, $"查询出库信息失败,WarhouseId={stockout.WarehouseId},StockOutId={stockout.StockOutId}");
                        OutsideStockOutQueryResult resultData = new OutsideStockOutQueryResult()
                        {
                            WarehouseName    = warehouse.WarehouseName,
                            StockOutId       = stockout.StockOutId.ToString(),
                            StockOutNo       = stockout.StockOutNo,
                            StockOutTypeName = stockout.StockOutTypeName,
                            StockOutStatus   = (StockOutStatus)stockout.StockOutStatus.Value,
                            BatchNumber      = stockout.BatchNumber,
                            BatchPlanId      = stockout.BatchPlanId,
                            MesTaskId        = stockout.MesTaskId.ToString(),
                            WorkNo           = stockout.WorkNo,
                            WorkAreaName     = stockout.WorkAreaName,
                            WorkStationId    = stockout.WorkStationId,
                            OrderNo          = stockout.OrderNo,
                            Remark           = "详细信息查询失败,仅显示本地信息"
                        };
                        totalResult.Add(resultData);
                    }
                }
                return(Bootstrap.GridData(totalResult, totalResult.Count).JilToJson());
            }
            else
            {
                return("");
            }
        }