Example #1
0
        private IEnumerable <XElement> Group(IEnumerable <XElement> reports)
        {
            IEnumerable <string> storerkeys = reports.Select(x => x.Element("STORERKEY").Value).Distinct();

            foreach (string key in storerkeys)
            {
                string   duns        = getStorerDuns(key);
                XElement storerGroup = new XElement("VendorInventoryReport");
                storerGroup.Add(new XAttribute("VendorCode", key));
                storerGroup.Add(new XAttribute("VendorDuns", duns));
                XElement fromrole     = ConfigHelper.GetRoleElement(_configpath, _fromRole, "fromRole");
                XElement tostxrole    = ConfigHelper.GetRoleElement(_configpath, _toSTXRole, "toRole");
                XElement toe2openrole = ConfigHelper.GetRoleElement(_configpath, _toe2openRole, "toRole");
                //XElement hub = ConfigHelper.GetRoleElement(_warehous, "hub");
                XElement config = new XElement("config");
                config.Add(new XElement("fromRole", fromrole.Elements()));
                config.Add(new XElement("tostxRole", tostxrole.Elements()));
                config.Add(new XElement("toe2openRole", toe2openrole.Elements()));
                //config.Add(new XElement("hub", hub.Elements()));
                storerGroup.Add(config);

                IEnumerable <XElement> vendorreport = reports.Where(x => x.Element("STORERKEY").Value == key).ToArray();
                storerGroup.Add(vendorreport);


                yield return(storerGroup);
            }
        }
        private IEnumerable <XElement> Group(IEnumerable <XElement> rows)
        {
            IEnumerable <string> storerkeys = rows.Select(x => x.Element("STORERKEY").Value).Distinct();

            foreach (string key in storerkeys)
            {
                string   duns        = getStorerDuns(key);
                XElement storerGroup = new XElement("VendorShipmentPODReport");
                storerGroup.Add(new XAttribute("VendorCode", key));
                storerGroup.Add(new XAttribute("VendorDuns", duns));
                //string cmcode = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => x.Element("CONSIGNEEKEY").Value).First();
                //string cmduns = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => x.Element("CMDUNS").Value).First();
                //storerGroup.Add(new XAttribute("CMCode", cmcode));
                //storerGroup.Add(new XAttribute("CMDuns", cmduns));


                XElement fromrole     = ConfigHelper.GetRoleElement(_configpath, _fromRole, "fromRole");
                XElement tostxrole    = ConfigHelper.GetRoleElement(_configpath, _toSTXRole, "toRole");
                XElement toe2openrole = ConfigHelper.GetRoleElement(_configpath, _toe2openRole, "toRole");
                //XElement hub = ConfigHelper.GetRoleElement(_warehous, "hub");
                XElement config = new XElement("config");
                config.Add(new XElement("fromRole", fromrole.Elements()));
                config.Add(new XElement("tostxRole", tostxrole.Elements()));
                config.Add(new XElement("toe2openRole", toe2openrole.Elements()));
                //config.Add(new XElement("hub", hub.Elements()));
                storerGroup.Add(config);
                //添加所有物流/分ASIC/NOASIC
                IEnumerable <XElement> vendorreport = rows.Where(x => x.Element("STORERKEY").Value == key).ToArray();
                XElement noasic = new XElement("NOASIC");
                IEnumerable <OrderHead> orderheads = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => new OrderHead()
                {
                    OrderKey       = x.Element("ORDERKEY").Value,
                    CMCode         = x.Element("CONSIGNEEKEY").Value,
                    DeliveryOrder  = x.Element("LOTTABLE02").Value,
                    ExternOrderKey = x.Element("EXTERNORDERKEY").Value
                }).Distinct();
                foreach (OrderHead orderhead in orderheads)
                {
                    //表头/表体分组
                    XElement orderel = new XElement("ORDER");
                    orderel.Add(new XElement("ORDERKEY", orderhead.OrderKey));
                    //string externorderkey = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("ORDERKEY").Value == orderkey).Select(x => x.Element("EXTERNORDERKEY").Value).First();
                    orderel.Add(new XElement("EXTERNORDERKEY", orderhead.ExternOrderKey));
                    orderel.Add(new XElement("DELIVERYORDER", orderhead.DeliveryOrder));
                    orderel.Add(new XElement("CMCODE", orderhead.CMCode));
                    //string comcode = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("ORDERKEY").Value == orderkey).Select(x => x.Element("COMCODE").Value).First();
                    //orderel.Add(new XElement("COMCODE", comcode));
                    //XElement orderdetail = new XElement("ORDERDETAIL");
                    IEnumerable <XElement> detail = rows.Where(x => x.Element("STORERKEY").Value == key &&
                                                               x.Element("ORDERKEY").Value == orderhead.OrderKey &&
                                                               x.Element("CONSIGNEEKEY").Value == orderhead.CMCode &&
                                                               x.Element("LOTTABLE02").Value == orderhead.DeliveryOrder).ToArray();
                    //orderdetail.Add(detail);
                    orderel.Add(detail);
                    noasic.Add(orderel);
                }



                storerGroup.Add(noasic);



                yield return(storerGroup);
            }
        }
        private IEnumerable <XElement> Group(IEnumerable <XElement> rows)
        {
            IEnumerable <string> storerkeys = rows.Select(x => x.Element("STORERKEY").Value).Distinct();

            foreach (string key in storerkeys)
            {
                string   duns        = getStorerDuns(key);
                XElement storerGroup = new XElement("VendorShipmentReport");
                storerGroup.Add(new XAttribute("VendorCode", key));
                storerGroup.Add(new XAttribute("VendorDuns", duns));
                string cmcode = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => x.Element("CONSIGNEEKEY").Value).First();
                string cmduns = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => x.Element("CMDUNS").Value).First();
                storerGroup.Add(new XAttribute("CMCode", cmcode));
                storerGroup.Add(new XAttribute("CMDuns", cmduns));


                XElement fromrole     = ConfigHelper.GetRoleElement(_configpath, _fromRole, "fromRole");
                XElement tostxrole    = ConfigHelper.GetRoleElement(_configpath, _toSTXRole, "toRole");
                XElement toe2openrole = ConfigHelper.GetRoleElement(_configpath, _toe2openRole, "toRole");
                //XElement hub = ConfigHelper.GetRoleElement(_warehous, "hub");
                XElement config = new XElement("config");
                config.Add(new XElement("fromRole", fromrole.Elements()));
                config.Add(new XElement("tostxRole", tostxrole.Elements()));
                config.Add(new XElement("toe2openRole", toe2openrole.Elements()));
                //config.Add(new XElement("hub", hub.Elements()));
                storerGroup.Add(config);
                //添加所有物流/分ASIC/NOASIC
                IEnumerable <XElement> vendorreport = rows.Where(x => x.Element("STORERKEY").Value == key).ToArray();
                XElement             all            = new XElement("ALL");
                IEnumerable <string> orderkeys      = rows.Where(x => x.Element("STORERKEY").Value == key).Select(x => x.Element("ORDERKEY").Value).Distinct();
                foreach (string orderkey in orderkeys)
                {
                    //表头/表体分组
                    XElement orderel = new XElement("ORDER");
                    orderel.Add(new XElement("ORDERKEY", orderkey));
                    string externorderkey = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("ORDERKEY").Value == orderkey).Select(x => x.Element("EXTERNORDERKEY").Value).First();
                    orderel.Add(new XElement("EXTERNORDERKEY", externorderkey));
                    string comcode = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("ORDERKEY").Value == orderkey).Select(x => x.Element("COMCODE").Value).First();
                    orderel.Add(new XElement("COMCODE", comcode));
                    XElement orderdetail          = new XElement("ORDERDETAIL");
                    IEnumerable <XElement> detail = rows.Where(x => x.Element("STORERKEY").Value == key &&  x.Element("ORDERKEY").Value == orderkey ).ToArray();
                    //orderdetail.Add(detail);
                    orderel.Add(detail);
                    all.Add(orderel);
                }



                storerGroup.Add(all);

                bool hasASIC = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("COMMODITYCLASS").Value == "ASIC").Any();
                if (hasASIC)
                {
                    XElement asic = new XElement("ASIC");
                    orderkeys = rows.Where(x => x.Element("STORERKEY").Value == key && x.Element("COMMODITYCLASS").Value == "ASIC").Select(x => x.Element("ORDERKEY").Value).Distinct();
                    foreach (string orderkey in orderkeys)
                    {
                        //表头/表体分组
                        XElement orderel = new XElement("ORDER");
                        orderel.Add(new XElement("ORDERKEY", orderkey));
                        string externorderkey = rows.Where(x => x.Element("STORERKEY").Value == key &&
                                                           x.Element("ORDERKEY").Value == orderkey &&
                                                           x.Element("COMMODITYCLASS").Value == "ASIC").Select(x => x.Element("EXTERNORDERKEY").Value).First();
                        orderel.Add(new XElement("EXTERNORDERKEY", externorderkey));
                        string comcode = rows.Where(x => x.Element("STORERKEY").Value == key &&
                                                    x.Element("ORDERKEY").Value == orderkey &&
                                                    x.Element("COMMODITYCLASS").Value == "ASIC").Select(x => x.Element("COMCODE").Value).First();
                        orderel.Add(new XElement("COMCODE", comcode));
                        XElement orderdetail          = new XElement("ORDERDETAIL");
                        IEnumerable <XElement> detail = rows.Where(x => x.Element("STORERKEY").Value == key &&
                                                                   x.Element("ORDERKEY").Value == orderkey &&
                                                                   x.Element("COMMODITYCLASS").Value == "ASIC").ToArray();
                        //orderdetail.Add(detail);
                        orderel.Add(detail);
                        asic.Add(orderel);
                    }
                    storerGroup.Add(asic);
                }

                yield return(storerGroup);
            }
        }