public ActionResult TrackOutPackage(LotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { //如果包装号为空。 if (string.IsNullOrEmpty(model.PackageNo)) { result.Code = 1001; result.Message = string.Format("包装号不能为空。"); return Json(result); } Package obj = null; //如果当前数量为空,获取当前数量 using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { MethodReturnResult<Package> rst2 = client.Get(model.PackageNo); if (rst2.Code > 0) { return Json(rst2); } //检查包装状态 if (rst2.Data.PackageState != EnumPackageState.Packaged) { result.Code = 1001; result.Message = string.Format("包 {0} 非{1}状态,不能操作。" , model.PackageNo.ToUpper() , EnumPackageState.Packaged.GetDisplayName()); return Json(result); } } //result = Package(model); //返回包装结果。 if (result.Code <= 0) { MethodReturnResult<LotPackageViewModel> rstFinal = new MethodReturnResult<LotPackageViewModel>() { Code = result.Code, Data = model, Detail = result.Detail, HelpLink = result.HelpLink, Message = result.Message }; return Json(rstFinal); } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return Json(result); }
/// <summary> /// 批次包装作业。 /// </summary> /// <param name="obj">批次对象。</param> /// <param name="model">包装模型对象。</param> /// <returns>返回结果。</returns> private MethodReturnResult Package(LotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); //进行批次包装作业。 PackageParameter p = new PackageParameter() { Creator = User.Identity.Name, EquipmentCode = model.EquipmentCode, IsFinishPackage = model.IsFinishPackage, IsLastestPackage = model.IsLastestPackage, LineCode = model.LineCode, LotNumbers = new List <string>(), OperateComputer = Request.UserHostAddress, Operator = User.Identity.Name, PackageNo = model.PackageNo.ToUpper(), Remark = model.Description, RouteOperationName = model.RouteOperationName }; if (model.IsFinishPackage == false) { p.LotNumbers.Add(model.LotNumber.ToUpper()); } if (p.IsFinishPackage == false && model.CurrentQuantity == model.FullQuantity) { p.IsFinishPackage = true; model.IsFinishPackage = true; } using (LotPackageServiceClient client = new LotPackageServiceClient()) { result = client.Package(p); if (result.Code == 0 && model.IsFinishPackage == false) { result.Message = string.Format("批次 {0} 成功包装到({1})。" , model.LotNumber , model.PackageNo); } else if (result.Code == 0 && model.IsFinishPackage == true) { result.Message = string.Format("包 {0} 已完成。" , model.PackageNo); } } return(result); }
public ActionResult Save(LotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { //获取批次数据。 string lotNumber = model.LotNumber.ToUpper(); result = GetLot(lotNumber); if (result.Code > 0) { return(Json(result)); } MethodReturnResult <Lot> rst = result as MethodReturnResult <Lot>; Lot obj = rst.Data; //如果包装号为空。生成包装号。 if (string.IsNullOrEmpty(model.PackageNo)) { using (LotPackageServiceClient client = new LotPackageServiceClient()) { MethodReturnResult <string> rst1 = client.Generate(model.LotNumber, model.IsLastestPackage); if (rst1.Code > 0) { return(Json(rst1)); } else { model.PackageNo = rst1.Data; } } } //重新获取当前数量。 using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { MethodReturnResult <Package> rst2 = client.Get(model.PackageNo); if (rst2.Code == 1000) { return(Json(rst2)); } //检查包装状态 if (rst2.Data != null && rst2.Data.PackageState != EnumPackageState.Packaging) { result.Code = 1001; result.Message = string.Format("包 {0} 非 [{1}] 状态,不能包装。" , model.PackageNo.ToUpper() , EnumPackageState.Packaging.GetDisplayName()); return(Json(result)); } //设置当前数量。 if (rst2.Code <= 0 && rst2.Data != null) { model.CurrentQuantity = rst2.Data.Quantity; } } //如果满包数量为空,获取满包数量 if (model.FullQuantity == 0) { using (WorkOrderAttributeServiceClient client = new WorkOrderAttributeServiceClient()) { MethodReturnResult <WorkOrderAttribute> rst1 = client.Get(new WorkOrderAttributeKey() { OrderNumber = obj.OrderNumber, AttributeName = "FullPackageQuantity" }); double fullQuantity = 25; if (rst1.Code == 1000) { return(Json(rst1)); } if (rst1.Data != null && !string.IsNullOrEmpty(rst1.Data.AttributeValue)) { double.TryParse(rst1.Data.AttributeValue, out fullQuantity); } model.FullQuantity = fullQuantity; } } double newCurrentQuantity = model.CurrentQuantity + obj.Quantity; //当前数量超过满包数量,不能继续包装。 if (newCurrentQuantity > model.FullQuantity) { result.Code = 1; result.Message = string.Format("包({0}) 当前数量({1})加上批次({2})数量({3}),超过满包数量。" , model.PackageNo.ToUpper() , model.CurrentQuantity , obj.Key , obj.Quantity); return(Json(result)); } model.CurrentQuantity = newCurrentQuantity; //判断批次工序是否在当前工序。 if (obj.RouteStepName != model.RouteOperationName) { result.Code = 2; result.Message = string.Format("批次({0})当前所在工序({1}),不能在({2})工序上操作。" , obj.Key , obj.RouteStepName , model.RouteOperationName); return(Json(result)); } //判断批次所在车间和当前线所在车间是否匹配。 //获取线别车间。 string locationName = string.Empty; using (ProductionLineServiceClient client = new ProductionLineServiceClient()) { MethodReturnResult <ProductionLine> r = client.Get(model.LineCode); if (r.Code <= 0) { locationName = r.Data.LocationName; } } if (!string.IsNullOrEmpty(locationName)) { using (LocationServiceClient client = new LocationServiceClient()) { MethodReturnResult <Location> r = client.Get(locationName); if (r.Code <= 0) { locationName = r.Data.ParentLocationName; } } } //检查批次车间和线别车间是否匹配。 if (obj.LocationName != locationName) { result.Code = 3; result.Message = string.Format("批次({0})属于({1})车间,不能在({2})车间线别上操作。" , lotNumber.ToUpper() , obj.LocationName , locationName); return(Json(result)); } result = Package(model); //返回包装结果。 if (result.Code <= 0) { MethodReturnResult <LotPackageViewModel> rstFinal = new MethodReturnResult <LotPackageViewModel>() { Code = result.Code, Data = model, Detail = result.Detail, HelpLink = result.HelpLink, Message = result.Message }; return(Json(rstFinal)); } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return(Json(result)); }
public ActionResult Finish(LotPackageViewModel model) { MethodReturnResult result = new MethodReturnResult(); try { //如果包装号为空。 if (string.IsNullOrEmpty(model.PackageNo)) { result.Code = 1001; result.Message = string.Format("包装号不能为空。"); return(Json(result)); } Package obj = null; //如果当前数量为空,获取当前数量 using (PackageQueryServiceClient client = new PackageQueryServiceClient()) { MethodReturnResult <Package> rst2 = client.Get(model.PackageNo); if (rst2.Code > 0) { return(Json(rst2)); } //检查包装状态 if (rst2.Data.PackageState != EnumPackageState.Packaging) { result.Code = 1001; result.Message = string.Format("包 {0} 非{1}状态,不能操作。" , model.PackageNo.ToUpper() , EnumPackageState.Packaging.GetDisplayName()); return(Json(result)); } //设置当前数量。 if (rst2.Code <= 0 && rst2.Data != null) { obj = rst2.Data; model.CurrentQuantity = rst2.Data.Quantity; } } //如果满包数量为空,获取满包数量 if (model.FullQuantity == 0) { using (WorkOrderAttributeServiceClient client = new WorkOrderAttributeServiceClient()) { MethodReturnResult <WorkOrderAttribute> rst1 = client.Get(new WorkOrderAttributeKey() { OrderNumber = obj.OrderNumber, AttributeName = "FullPackageQuantity" }); double fullQuantity = 25; if (rst1.Code == 1000) { return(Json(rst1)); } if (rst1.Data != null && !string.IsNullOrEmpty(rst1.Data.AttributeValue)) { double.TryParse(rst1.Data.AttributeValue, out fullQuantity); } model.FullQuantity = fullQuantity; } } //非尾包,不能完成包装并过站 if (model.IsFinishPackage == true && model.IsLastestPackage == false && model.CurrentQuantity != model.FullQuantity) { result.Code = 1; result.Message = string.Format("包({0})非尾包,包装数量未达到满包数量,不能完成包装。" , model.PackageNo); return(Json(result)); } //判断批次所在车间和当前线所在车间是否匹配。 //获取线别车间。 string locationName = string.Empty; using (ProductionLineServiceClient client = new ProductionLineServiceClient()) { MethodReturnResult <ProductionLine> r = client.Get(model.LineCode); if (r.Code <= 0) { locationName = r.Data.LocationName; } } if (!string.IsNullOrEmpty(locationName)) { using (LocationServiceClient client = new LocationServiceClient()) { MethodReturnResult <Location> r = client.Get(locationName); if (r.Code <= 0) { locationName = r.Data.ParentLocationName; } } } //获取包装号所在车间。 string currentLocationName = string.Empty; using (WorkOrderServiceClient client = new WorkOrderServiceClient()) { MethodReturnResult <WorkOrder> rst1 = client.Get(obj.OrderNumber); if (rst1.Code <= 0 && rst1.Data != null) { currentLocationName = rst1.Data.LocationName; } } //检查包所在车间和线别车间是否匹配。 if (currentLocationName != locationName) { result.Code = 3; result.Message = string.Format("包({0})属于({1})车间,不能在({2})车间线别上操作。" , obj.Key , currentLocationName , locationName); return(Json(result)); } result = Package(model); //返回包装结果。 if (result.Code <= 0) { MethodReturnResult <LotPackageViewModel> rstFinal = new MethodReturnResult <LotPackageViewModel>() { Code = result.Code, Data = model, Detail = result.Detail, HelpLink = result.HelpLink, Message = result.Message }; return(Json(rstFinal)); } } catch (Exception ex) { result.Code = 1000; result.Message = ex.Message; result.Detail = ex.ToString(); } // 如果我们进行到这一步时某个地方出错,则重新显示表单 return(Json(result)); }