#define GATE_SIZE 1 //门牌号 2^0
#define UNIT_SIZE 256 //单元号 2^8
#define BUILD_SIZE 65526 //楼号 2^16
#define COMMUNITY_SIZE 16777216 //小区 2^24
int i,j;
bool ExitFlag = 0;
unsigned int tmpproperty = 0;
METER tmpMeter;
for (i = 0; i < g_arrMeter.GetSize(); i++)
{
tmpMeter = g_arrMeter.GetAt(i);
tmpMeter.Property = 0;
}
typedef struct
{
char name1[60]; //小区名字
char name2[12]; //楼号
char name3[12]; //单元号
char name4[12]; //门牌号
int num; //序号
}ADDRESS;
ADDRESS tmpAddr;
CArray<ADDRESS,ADDRESS> StructAddr;
StructAddr.RemoveAll();
//小区号
tmpMeter = g_arrMeter.GetAt(0); //第一家
sprintf(tmpAddr.name1,tmpMeter.CommunityName);
tmpAddr.num = COMMUNITY_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
for (i = 1; i < g_arrMeter.GetSize(); i++)
{
ExitFlag = 0;
tmpMeter = g_arrMeter.GetAt(i);
for (j=0; j<StructAddr.GetSize(); j++)
{
tmpAddr = StructAddr.GetAt(j);
if (strcmp(tmpMeter.CommunityName,tmpAddr.name1) == 0) //相同,即存在
{
ExitFlag = 1;
tmpMeter.Property += tmpAddr.num;
break;
}
}
if (!ExitFlag) //新的,需添加
{
sprintf(tmpAddr.name1,tmpMeter.CommunityName);
tmpAddr.num += COMMUNITY_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
}
}
TCHAR T_name[60];
for (i=0; i<StructAddr.GetSize(); i++)//保存一份完整的小区信息,全局调用
{
tmpAddr = StructAddr.GetAt(i);
CharToTChar(tmpAddr.name1,T_name,60);
m_COMMUNITY.AddString(LPCTSTR(T_name));
}
//楼号
StructAddr.RemoveAll();
tmpMeter = g_arrMeter.GetAt(0); //第一家
sprintf(tmpAddr.name2,tmpMeter.BuildNo);
tmpAddr.num = BUILD_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
for (i = 1; i < g_arrMeter.GetSize(); i++)
{
ExitFlag = 0;
tmpMeter = g_arrMeter.GetAt(i);
for (j=0; j<StructAddr.GetSize(); j++)
{
tmpAddr = StructAddr.GetAt(j);
if (strcmp(tmpMeter.BuildNo,tmpAddr.name2) == 0) //楼号相同,判断小区号是否相同
{
if (strcmp(tmpMeter.CommunityName,tmpAddr.name1) == 0) //小区也相同,则确定,是同一栋楼
{
ExitFlag = 1;
tmpMeter.Property += tmpAddr.num;
break;
}
}
}
if (!ExitFlag) //新的,需添加
{
sprintf(tmpAddr.name2,tmpMeter.BuildNo);
tmpAddr.num += BUILD_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
}
}
//单元号
StructAddr.RemoveAll();
tmpMeter = g_arrMeter.GetAt(0); //第一家
sprintf(tmpAddr.name3,tmpMeter.UnitNo);
tmpAddr.num = UNIT_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
for (i = 1; i < g_arrMeter.GetSize(); i++)
{
ExitFlag = 0;
tmpMeter = g_arrMeter.GetAt(i);
for (j=0; j<StructAddr.GetSize(); j++)
{
tmpAddr = StructAddr.GetAt(j);
if (strcmp(tmpMeter.UnitNo,tmpAddr.name3) == 0) //单元号相同,需向上依次判断楼号、小区号,以确定是否是同一单元
{
if (strcmp(tmpMeter.BuildNo,tmpAddr.name2) == 0) //楼号相同,判断小区号是否相同
{
if (strcmp(tmpMeter.CommunityName,tmpAddr.name1) == 0) //小区也相同,则确定,是同一
{
ExitFlag = 1;
tmpMeter.Property += tmpAddr.num;
break;
}
}
}
}
if (!ExitFlag) //新的,需添加
{
sprintf(tmpAddr.name2,tmpMeter.BuildNo);
tmpAddr.num += UNIT_SIZE;
StructAddr.Add(tmpAddr);
tmpMeter.Property += tmpAddr.num;
}
}
文章评论(0条评论)
登录后参与讨论