Example #1
0
        public LineStoreMaterialDetail GetLineStoreMaterialDetail(LineStoreMaterialDetailKey key)
        {
            LineStoreMaterialDetail obj = null;

            using (LineStoreMaterialServiceClient client = new LineStoreMaterialServiceClient())
            {
                MethodReturnResult <LineStoreMaterialDetail> result = client.GetDetail(key);
                if (result.Code <= 0 && result.Data != null)
                {
                    obj = result.Data;
                }
            }
            return(obj);
        }
        //
        // POST: /WIP/LotCreate/Detail
        public ActionResult Detail(LotCreateMainViewModel model)
        {
            LotCreateDetailViewModel viewModel = new LotCreateDetailViewModel()
            {
                LineStoreName       = model.LineStoreName,
                MaterialLot         = model.MaterialLot,
                MaterialCode        = model.MaterialCode,
                LotType             = model.LotType,
                OrderNumber         = model.OrderNumber,
                Count               = model.Count,
                Description         = string.Empty,
                MaterialQty         = 0,
                ProductCode         = string.Empty,
                Quantity            = 0,
                RawQuantity         = 0,
                RouteEnterpriseName = string.Empty,
                RouteName           = string.Empty,
                RouteStepName       = string.Empty,
                SupplierCode        = string.Empty
            };

            if (string.IsNullOrEmpty(model.MaterialLot))
            {
                return(View(viewModel));
            }

            //获取工单信息。
            using (WorkOrderServiceClient client = new WorkOrderServiceClient())
            {
                MethodReturnResult <WorkOrder> result = client.Get(model.OrderNumber);
                if (result.Code <= 0 && result.Data != null)
                {
                    result.Code    = 1000;
                    result.Message = "工单号错误!";

                    return(Json(result));

                    //viewModel.ProductCode = result.Data.MaterialCode;
                }
            }

            //获取工单工艺信息。
            using (WorkOrderRouteServiceClient client = new WorkOrderRouteServiceClient())
            {
                PagingConfig cfg = new PagingConfig()
                {
                    PageNo   = 0,
                    PageSize = 1,
                    Where    = string.Format("Key.OrderNumber='{0}'", model.OrderNumber),
                    OrderBy  = "Key.ItemNo"
                };
                if (model.LotType == EnumLotType.Rework)
                {
                    cfg.Where += " AND IsRework=1";
                }
                else
                {
                    cfg.Where += " AND IsRework=0";
                }
                MethodReturnResult <IList <WorkOrderRoute> > result = client.Get(ref cfg);
                if (result.Code <= 0 && result.Data != null && result.Data.Count > 0)
                {
                    viewModel.RouteEnterpriseName = result.Data[0].RouteEnterpriseName;
                    viewModel.RouteName           = result.Data[0].RouteName;
                    viewModel.RouteStepName       = result.Data[0].RouteStepName;
                }
            }
            //获取线边仓物料信息
            using (LineStoreMaterialServiceClient client = new LineStoreMaterialServiceClient())
            {
                LineStoreMaterialDetailKey key = new LineStoreMaterialDetailKey()
                {
                    LineStoreName = model.LineStoreName,
                    OrderNumber   = model.OrderNumber,
                    MaterialCode  = model.MaterialCode,
                    MaterialLot   = model.MaterialLot
                };
                MethodReturnResult <LineStoreMaterialDetail> result = client.GetDetail(key);
                if (result.Code <= 0 && result.Data != null)
                {
                    viewModel.MaterialQty  = result.Data.CurrentQty;
                    viewModel.SupplierCode = result.Data.SupplierCode;
                }
            }
            //根据物料获取每批原材料建议数量和每批产品建议数量。
            using (MaterialServiceClient client = new MaterialServiceClient())
            {
                MethodReturnResult <Material> result = client.Get(viewModel.ProductCode);
                if (result.Code <= 0 && result.Data != null)
                {
                    viewModel.RawQuantity = result.Data.MainRawQtyPerLot;
                    viewModel.Quantity    = result.Data.MainProductQtyPerLot;
                }
            }
            //根据工单号和批次个数生成批次号。
            IList <string> lstLot = new List <string>();

            using (LotCreateServiceClient client = new LotCreateServiceClient())
            {
                MethodReturnResult <IList <string> > result = client.Generate(model.LotType, model.OrderNumber, model.Count, model.LineCode);
                if (result.Code <= 0 && result.Data != null && result.Data.Count > 0)
                {
                    lstLot = result.Data;
                }
            }
            ViewBag.LotList = lstLot;
            //获取需要录入的批次号自定义特性
            IList <BaseAttribute> lstAttribute = new List <BaseAttribute>();

            using (BaseAttributeServiceClient client = new BaseAttributeServiceClient())
            {
                PagingConfig cfg = new PagingConfig()
                {
                    IsPaging = false,
                    Where    = string.Format("Key.CategoryName='{0}'", "LotCreateAttribute")
                };

                MethodReturnResult <IList <BaseAttribute> > result = client.Get(ref cfg);
                if (result.Code <= 0 && result.Data != null && result.Data.Count > 0)
                {
                    lstAttribute = result.Data;
                }
            }
            ViewBag.AttributeList = lstAttribute;

            return(View(viewModel));
        }