예제 #1
0
        private void PackingInOneBox(List <Model.Item> list, int boxID)
        {
            var box = boxDAO.getBox(boxID);

            if (list.Count != 0)
            {
                boxDAO.resetBox(boxID);

                List <Packing.Item> itemsToPack = convertListItem(list);

                List <Packing.Entities.Container> containers = new List <Packing.Entities.Container>();

                containers.Add(convertBox(box));

                List <int> algorithms = new List <int>();
                algorithms.Add((int)AlgorithmType.EB_AFIT);

                //Avvio algoritmo EB-AFIT
                List <ContainerPackingResult> result = PackingService.Pack(containers, itemsToPack, algorithms);

                List <Packing.Item> listPacked   = new List <Packing.Item>();
                List <Packing.Item> listUnpacked = new List <Packing.Item>();

                var container = 0;
                foreach (var a in result)
                {
                    container = a.ContainerID;

                    foreach (var i in a.AlgorithmPackingResults)
                    {
                        listPacked   = i.PackedItems;
                        listUnpacked = i.UnpackedItems;
                    }
                }

                foreach (var v in listPacked)
                {
                    var item = itemDAO.getItem(v.ID);
                    item.updateCoordinate(v.CoordX, v.CoordY, v.CoordZ, v.PackDimX, v.PackDimY, v.PackDimZ);
                    itemDAO.updateItem(item);
                }


                if (listUnpacked.Count == 0 && listPacked.Count == 0)
                {
                    alert("Impossibile completare", "Non è stato possibile inserire nessun oggetto nel pacco", "ok");
                }
                else
                {
                    if (listUnpacked.Count == 0)
                    {
                        alert("Completato", "Tutti gli oggetti sono stati inseriti", "ok");
                        insertPackedItem(listPacked, container);
                    }
                    else
                    {
                        alert("Non tutti gli oggetti entrano nel pacco", "Apri i dettagli del pacco per controllare quali sono stati inseriti", "ok");
                        insertPackedItem(listPacked, container);
                    }
                }
            }
        }