예제 #1
0
        private static int GetConveyorWidth(SpantechPart part)
        {
            int number;

            if (!Int32.TryParse(part.PartNumber.Substring(4, 4), out number))
            {
                Int32.TryParse(part.PartNumber.Substring(3, 4), out number);
            }
            return(number);
        }
예제 #2
0
        private void ExtractDataFromCsv(string file)
        {
            var fullName = string.Format(@"{0}\{1}", RootDirectory, file);

            var strategy = new StripSpantechExcelFile(fullName);
            var lines    = strategy.Parse();

            string projectNumber = "";
            bool   spantechMode  = !string.IsNullOrWhiteSpace(lines[0][0]);
            int    offset        = spantechMode ? 1 : 0;

            var lastCode = 0;
            var stack    = new Stack <SpantechPart>();

            foreach (var line in lines)
            {
                if (!spantechMode && line.Count() > 1 && string.IsNullOrWhiteSpace(line[0]) && !string.IsNullOrWhiteSpace(line[1]))
                {
                    projectNumber = line[1];
                }
                else if (!string.IsNullOrWhiteSpace(line[4 + offset]) && line[1] != "Code")
                {
                    try
                    {
                        var part = new SpantechPart
                        {
                            ProjectNumber     = (spantechMode ? line[0] : projectNumber).Trim(),
                            Code              = int.Parse(line[0 + offset]),
                            PartNumber        = line[1 + offset],
                            PartDesc          = line[2 + offset],
                            UnitOfMeasurement = line[3 + offset],
                            TotalAmount       = Double.Parse(line[4 + offset]),
                            Info1             = line[7 + offset],
                            Info2             = line[8 + offset]
                        };

                        if (part.Code <= lastCode)
                        {
                            while (stack.Count > 0 && stack.Peek().Code >= part.Code)
                            {
                                stack.Pop();
                            }
                        }

                        stack.Push(part);
                        lastCode = part.Code;

                        if (spantechMode && stack.All(p => p.UnitOfMeasurement == "EA"))
                        {
                            part.TotalAmount = stack.Aggregate <SpantechPart, double>(1, (current, p) => current * p.TotalAmount);
                        }

                        _parts.Add(part);
                    }
                    catch (Exception e)
                    {
                        Trace.WriteLine(e.Message);
                    }
                }
            }

            // Load all filtered data. Use this to filter the data loaded unfiltered data in-place.
            var filter       = string.Format(@"{0}\{1}", RootDirectory, PdfConverterRules);
            var filterValues = System.IO.File.ReadAllLines(filter, Encoding.Default).Select(line => line.Split(';')).ToArray();

            _filteredParts.AddRange(filterValues.Select(line => new SpantechPart
            {
                PartDesc      = line[0],
                PartDescNo    = line[1],
                PartDescSe    = line[2],
                PartReference = line[3],
                Drawing       = line[4],
                Unit          = line[5],
                SpareAmount   = line[6]
            }));
        }