예제 #1
0
        /// <summary>
        /// TrackoutPackageNo
        /// </summary>
        /// <param name="obj">批次对象。</param>
        /// <param name="model">包装模型对象。</param>
        /// <returns>返回结果。</returns>
        private MethodReturnResult TrackOutPackageNo(ZPVMLotPackageViewModel 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
            };

            using (LotPackageServiceClient client = new LotPackageServiceClient())
            {
                result = client.TrackOutPackage(p);
                if (result.Code == 0)
                {
                    result.Message = string.Format("包装号 {0} 过账成功。"
                                                   , model.PackageNo);
                }
            }
            return(result);
        }
예제 #2
0
        public ActionResult UnPackage(string packageNo, int itemNo, string lotNumber)
        {

            MethodReturnResult result = new MethodReturnResult();
            //进行批次包装作业。
            PackageParameter p = new PackageParameter()
            {
                Creator = User.Identity.Name,             
                LotNumbers = new List<string>(),
                OperateComputer = Request.UserHostAddress,
                Operator = User.Identity.Name,
                PackageNo = packageNo.ToUpper(),
            };
            p.LotNumbers.Add(lotNumber.ToUpper());

            try
            {
                //获取包装记录
                using (PackageQueryServiceClient client = new PackageQueryServiceClient())
                {
                    MethodReturnResult<Package> rst1 = client.Get(packageNo);
                    if (rst1.Code > 0 || rst1.Data == null)
                    {
                        return Json(rst1);
                    }
                    //判断包装记录目前是否处于包装中状态。
                    //if (rst1.Data.PackageState != EnumPackageState.Packaging)
                    //{
                    //    result.Code = 1001;
                    //    result.Message = string.Format("包装{0}为非{1}状态,不能删除。"
                    //                                    , packageNo
                    //                                    , EnumPackageState.Packaging.GetDisplayName());
                    //    return Json(result);
                    //}
                }

                using (LotPackageServiceClient client = new LotPackageServiceClient())
                {
                    result = client.UnPackage(p);

                    if (result.Code == 0 )
                    {
                        result.Message = string.Format("拆包({1})成功。"
                                                       , p.PackageNo);
                    }
                 
                }
                return Json(result);
            }
            catch (Exception ex)
            {
                result.Code = 1000;
                result.Message = ex.Message;
                result.Detail = ex.ToString();
            }
            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return Json(result);
        }
예제 #3
0
        private MethodReturnResult Package(ZPVMLotPackageViewModel 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,
                Remark             = model.Description,
                RouteOperationName = model.RouteOperationName
            };

            if (model.PackageNo != null && model.PackageNo != "")
            {
                p.PackageNo = model.PackageNo.ToUpper().Trim();
            }
            else
            {
                p.PackageNo = model.PackageNo.ToUpper();
            }

            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.ToUpper().Trim());
                }
                else if (result.Code == 0 && model.IsFinishPackage == true)
                {
                    result.Message = string.Format("包 {0} 已完成。"
                                                   , model.PackageNo.ToUpper().Trim());
                }
            }
            return(result);
        }
예제 #4
0
        public void AddParameter(string Name, DBType Type, ParamDirection Direction, Int16 Size, object Value)
        {
            if ((short)Direction < 0 || (short)Direction > 3)
            {
                throw new Exception("Tipo ParamDirection incorrecto");
            }

            if (Direction == ParamDirection.ParamInput && Value == null)
            {
                throw new Exception("Valor incorrecto cuando ParamDirection es Input");
            }

            if ((short)Type < 1 || (short)Type > 13)
            {
                throw new Exception("Tipo DBType incorrecto");
            }

            if (Type == DBType.dbCursor && Direction == ParamDirection.ParamInput)
            {
                throw new Exception("Tipo DBType.dbCursor incorrecto cuando ParamDirection es Input");
            }


            PackageParameter iParameter = new PackageParameter();

            iParameter.Name      = Name;
            iParameter.Direction = (short)Direction;
            iParameter.Type      = (short)Type;
            iParameter.Size      = Size;
            iParameter.Flag      = true;
            if (Type == DBType.dbCursor)
            {
                iParameter.Value = null;
            }
            else
            {
                iParameter.Value = Value.ToString();
            }

            _Transaction.Parameters.Add(iParameter);
        }
예제 #5
0
        internal static bool ParseParameters(string[] args, out string packagePath, out string targetDirectory,
                                             out int phase, out string[] parameters, out string logFilePath, out LogLevel logLevel, out bool help,
                                             out bool schema, out bool wait)
        {
            packagePath     = null;
            targetDirectory = null;
            phase           = -1;
            logFilePath     = null;
            wait            = false;
            help            = false;
            schema          = false;
            logLevel        = LogLevel.Default;
            var prms     = new List <string>();
            var argIndex = -1;

            foreach (var arg in args)
            {
                argIndex++;

                if (arg.StartsWith("-"))
                {
                    var verb = arg.Substring(1).ToUpper();
                    switch (verb)
                    {
                    case "?":
                        help = true;
                        break;

                    case "HELP":
                        help = true;
                        break;

                    case "SCHEMA":
                        schema = true;
                        break;

                    case "WAIT":
                        wait = true;
                        break;
                    }
                }
                else if (arg.StartsWith("PHASE:", StringComparison.OrdinalIgnoreCase))
                {
                    phase = int.Parse(arg.Substring(6));
                }
                else if (arg.StartsWith("LOG:", StringComparison.OrdinalIgnoreCase))
                {
                    logFilePath = arg.Substring(4);
                }
                else if (arg.StartsWith("LOGLEVEL:", StringComparison.OrdinalIgnoreCase))
                {
                    logLevel = (LogLevel)Enum.Parse(typeof(LogLevel), arg.Substring(9));
                }
                else if (arg.StartsWith("TARGETDIRECTORY:", StringComparison.OrdinalIgnoreCase))
                {
                    targetDirectory = arg.Substring(16).Trim('"');
                }
                else if (PackageParameter.IsValidParameter(arg) && argIndex > 0)
                {
                    // Recognise this as a 'parameter' only if it is not the first one
                    // (which must be the package path without a param name prefix).
                    prms.Add(arg);
                }
                else if (packagePath == null)
                {
                    packagePath = arg;
                }
            }
            if (targetDirectory == null)
            {
                targetDirectory = Disk.SearchTargetDirectory();
            }
            parameters = prms.ToArray();
            return(true);
        }
예제 #6
0
        public IList <AParameter> ConvertParameters(
            IList <ParameterNode> parameters,
            string resourcePrefix = ""
            )
        {
            var resultList = new List <AParameter>();

            if ((parameters == null) || !parameters.Any())
            {
                return(resultList);
            }

            // convert all parameters
            var index = 0;

            foreach (var parameter in parameters)
            {
                ++index;
                var        parameterName     = parameter.Name ?? $"[{index}]";
                AParameter result            = null;
                var        parameterFullName = resourcePrefix + parameter.Name;
                AtLocation(parameterName, () => {
                    if (parameter.Secret != null)
                    {
                        // encrypted value
                        AtLocation("Secret", () => {
                            result = new SecretParameter {
                                Name              = parameter.Name,
                                Description       = parameter.Description,
                                Secret            = parameter.Secret,
                                Export            = parameter.Export,
                                EncryptionContext = parameter.EncryptionContext
                            };
                        });
                    }
                    else if (parameter.Values != null)
                    {
                        // list of values
                        AtLocation("Values", () => {
                            result = new StringListParameter {
                                Name        = parameter.Name,
                                Description = parameter.Description,
                                Values      = parameter.Values,
                                Export      = parameter.Export
                            };
                        });

                        // TODO (2018-08-19, bjorg): this implementation creates unnecessary parameters
                        if (parameter.Resource != null)
                        {
                            AtLocation("Resource", () => {
                                // enumerate individual values with resource definition for each
                                parameter.Parameters = new List <ParameterNode>();
                                for (var i = 1; i <= parameter.Values.Count; ++i)
                                {
                                    parameter.Parameters.Add(new ParameterNode {
                                        Name     = $"Index{i}",
                                        Value    = parameter.Values[i - 1],
                                        Resource = parameter.Resource
                                    });
                                }
                            });
                        }
                    }
                    else if (parameter.Package != null)
                    {
                        // package value
                        result = new PackageParameter {
                            Name        = parameter.Name,
                            Description = parameter.Description,
                            DestinationBucketParameterName = parameter.Package.Bucket,
                            DestinationKeyPrefix           = parameter.Package.Prefix ?? "",
                            PackagePath = parameter.Package.PackagePath
                        };
                    }
                    else if (parameter.Value != null)
                    {
                        if (parameter.Resource != null)
                        {
                            AtLocation("Resource", () => {
                                // existing resource
                                var resource = ConvertResource((string)parameter.Value, parameter.Resource);
                                result       = new ReferencedResourceParameter {
                                    Name        = parameter.Name,
                                    Description = parameter.Description,
                                    Resource    = resource
                                };
                            });
                        }
                        else if (parameter.Value is string text)
                        {
                            // plaintext value
                            result = new StringParameter {
                                Name        = parameter.Name,
                                Description = parameter.Description,
                                Value       = text
                            };
                        }
                        else
                        {
                            // plaintext value
                            result = new ExpressionParameter {
                                Name        = parameter.Name,
                                Description = parameter.Description,
                                Expression  = parameter.Value
                            };
                        }
                    }
                    else if (parameter.Resource != null)
                    {
                        // managed resource
                        AtLocation("Resource", () => {
                            result = new CloudFormationResourceParameter {
                                Name        = parameter.Name,
                                Description = parameter.Description,
                                Resource    = ConvertResource(null, parameter.Resource)
                            };
                        });
                    }
                });

                // check if there are nested parameters
                if (parameter.Parameters != null)
                {
                    AtLocation("Parameters", () => {
                        var nestedParameters = ConvertParameters(
                            parameter.Parameters,
                            parameterFullName
                            );

                        // keep nested parameters only if they have values
                        if (nestedParameters.Any())
                        {
                            // create empty string parameter if collection has no value
                            result = result ?? new StringParameter {
                                Name        = parameter.Name,
                                Value       = "",
                                Description = parameter.Description,
                                Export      = parameter.Export
                            };
                            result.Parameters = nestedParameters;
                        }
                    });
                }

                // add parameter
                if (result != null)
                {
                    result.FullName = parameterFullName;
                    result.Export   = parameter.Export;
                    resultList.Add(result);
                }
            }
            return(resultList);
        }
예제 #7
0
        public ActionResult Save(ZPVMLotPackageViewModel model)
        {
            MethodReturnResult result = new MethodReturnResult();

            try
            {
                PackageParameter p = new PackageParameter()
                {
                    LineCode           = model.LineCode,
                    RouteOperationName = model.RouteOperationName,
                    EquipmentCode      = model.EquipmentCode,
                    LotNumbers         = new List <string>(),
                    IsLastestPackage   = model.IsLastestPackage,
                    Operator           = User.Identity.Name,
                    OperateComputer    = Request.UserHostAddress
                };
                if (model.PackageNo != null && model.PackageNo != "")
                {
                    p.PackageNo = model.PackageNo.ToUpper().Trim();
                }
                else
                {
                    p.PackageNo = model.PackageNo;
                }

                p.LotNumbers.Add(model.LotNumber.ToString().Trim().ToUpper());

                using (LotPackageServiceClient client = new LotPackageServiceClient())
                {
                    result = client.Package(p);

                    if (result.Code == 0)
                    {
                        if (result.Detail == "1")
                        {
                            model.PackageNo = "";
                        }
                        else
                        {
                            model.PackageNo = result.ObjectNo;
                        }

                        MethodReturnResult <ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult <ZPVMLotPackageViewModel>()
                        {
                            Code    = result.Code,
                            Data    = model,
                            Message = string.Format("批次[{0}]包装到托[{1}]。"
                                                    , model.LotNumber
                                                    , result.ObjectNo)
                        };

                        return(Json(rstFinal));
                    }
                }
            }
            catch (Exception ex)
            {
                result.Code    = 1000;
                result.Message = ex.Message;
                result.Detail  = ex.ToString();
            }

            return(Json(result));

            #region 注释
            //model.LotNumber = model.LotNumber.ToUpper();
            //if (!string.IsNullOrEmpty(model.PackageNo))
            //{
            //    model.PackageNo = model.PackageNo.ToUpper();
            //}
            ////获取批次数据。
            //string lotNumber = model.LotNumber;
            //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;
            //        }
            //    }
            //}

            //if (model.PackageNo.Length < 12 || model.PackageNo.Length > 13)
            //{
            //    result.Code = 1001;
            //    result.Message = string.Format("包装托号{0}系统生成异常,请联系IT。"
            //                                    , model.PackageNo.ToUpper());
            //    return Json(result);
            //}

            ////重新获取当前数量。
            //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 (WorkOrderRuleServiceClient client = new WorkOrderRuleServiceClient())
            //    {
            //        MethodReturnResult<WorkOrderRule> rst1 = client.Get(new WorkOrderRuleKey()
            //        {
            //            OrderNumber = obj.OrderNumber,
            //            MaterialCode = obj.MaterialCode
            //        });
            //        if (rst1.Code == 0
            //            && rst1.Data != null)
            //        {
            //            model.FullQuantity = rst1.Data.FullPackageQty;
            //        }
            //    }
            //}

            //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);
            //    model.PackageNo = result.ObjectNo;

            //    //返回包装结果。
            //    if (result.Code <= 0)
            //    {
            //        MethodReturnResult<ZPVMLotPackageViewModel> rstFinal = new MethodReturnResult<ZPVMLotPackageViewModel>()
            //        {
            //            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);
            #endregion
        }