Example #1
0
        public bool IsRelated(EntPartedFull ep)
        {
            int count = 0;

            foreach (var s in ep.total)
            {
                if (names.Contains(s))
                {
                    count++;
                    if (count == 2)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Example #2
0
        public void Add(EntPartedFull ep)
        {
            cluster.Add(ep);
            names.UnionWith(ep.total);
            foreach (var p in ep.pnameDict)
            {
                if (pnameDict.ContainsKey(p.Key))
                {
                    pnameDict[p.Key].@int += p.Value.@int;
                }
                else
                {
                    pnameDict[p.Key] = p.Value;
                }
            }

            if (ep.isSelf)
            {
                isSelf = true;
            }
        }
Example #3
0
        public EntPartedGroup(EntPartedFull ep)
        {
            cluster = new List <EntPartedFull>()
            {
                ep
            };
            names.UnionWith(ep.total);
            foreach (var p in ep.pnameDict)
            {
                if (pnameDict.ContainsKey(p.Key))
                {
                    pnameDict[p.Key].@int += p.Value.@int;
                }
                else
                {
                    pnameDict[p.Key] = p.Value;
                }
            }

            if (ep.isSelf)
            {
                isSelf = true;
            }
        }
Example #4
0
 public int GetRelation(EntPartedFull ep) => ep.total.Intersect(names).Count();
Example #5
0
        /// <summary>
        /// 为指定公司聚合相关的一组公司
        /// </summary>
        /// <param name="ents"></param>
        /// <param name="self">指定的公司</param>
        /// <returns></returns>
        public static List <EntPartedGroup> ClusterForCom(List <EntPartedFull> ents, EntPartedFull self)
        {
            var group   = new EntPartedGroup(self);
            var reminds = new List <EntPartedFull>();

            bool fanbingbing_flag = false;

            if (Fanbingbing_Codes.Contains(group.cluster[0].code))
            {
                fanbingbing_flag = true;
            }

            for (int i = 0; i < ents.Count; i++)
            {
                if (ents[i].isSelf)
                {
                    continue;
                }
                //var curRelation = group.GetRelation(ents[i]);   // 当前企业与当前分组的相关度
                //if(curRelation > 1)
                //{
                //    group.Add(ents[i]);
                //}
                //else
                //{
                //    reminds.Add(ents[i]);
                //}

                // *****************  手动处理范冰冰 **************************
                if (fanbingbing_flag && Fanbingbing_Codes.Contains(ents[i].code))
                {
                    group.Add(ents[i]);
                    continue;
                }
                // **********************************************************

                if (group.IsRelated(ents[i]))
                {
                    group.Add(ents[i]);
                }
                else
                {
                    reminds.Add(ents[i]);
                }
            }
            for (int i = 0; i < reminds.Count; i++)
            {
                //if (group.GetRelation(reminds[i]) > 1)
                //    group.Add(reminds[i]);

                // *****************  手动处理范冰冰 **************************
                if (fanbingbing_flag && Fanbingbing_Codes.Contains(reminds[i].code))
                {
                    group.Add(reminds[i]);
                    continue;
                }
                // *****************  手动处理范冰冰 **************************

                if (group.IsRelated(reminds[i]))
                {
                    group.Add(reminds[i]);
                }
            }
            return(new List <EntPartedGroup>()
            {
                group
            });
        }