bool SpecialCharacteristic::UpdateFromPanShi(BOOL& isHaveDelete)
{
vector<HugeRock> Datas;
isHaveDelete = FALSE;
map<CString, CString>::iterator it;
CWaitExe m_waitExe;//进度条
m_waitExe.StartExe();
m_waitExe.SetProgRange(100);
CString waitExeStr = L"正在更新数据,请稍等...";
m_waitExe.SetProgPos(0, waitExeStr);
CString strApiBody;
if (FileMap.size() > 0)
{
m_waitExe.SetProgPos(10, waitExeStr);
int count = 0;
for (it = FileMap.begin(); it != FileMap.end(); it++)
{
CString FileName = it->first;
CString Version = it->second;
if (count == 0)
{
strApiBody.Format(L"[{\"drawingCode\":\"%s\", \"drawingVersion\":\"%s\"}]", FileName, Version);
}
else
{
CString addBody;
addBody.Format(L"{\"drawingCode\":\"%s\", \"drawingVersion\":\"%s\"}", FileName, Version);
strApiBody = AddOneJsonData(addBody, strApiBody);
}
count++;
}
CString errMsg;
BOOL result = GetPanShiApiData(strApiBody, Datas, errMsg);
if (!result) {
m_waitExe.EndExe();
return false;
}
}
else
{
strApiBody.Format(L"[{\"drawingCode\":\"%s\", \"drawingVersion\":\"%s\"}]", MdlFileName, MdlVersion);
CString errMsg;
BOOL result = GetPanShiApiData(strApiBody, Datas, errMsg);
if (!result) {
m_waitExe.EndExe();
return false;
}
}
m_waitExe.SetProgPos(80, waitExeStr);
for (int i = 0; i < Datas.size(); i++)
{
CString version;
if (FileMap.size() > 0) {
map<CString, CString>::iterator it = FileMap.find(Datas[i].drawingCode.MakeUpper());
if (it != FileMap.end()) {
version = it->second;
}
}
else
{
version = MdlVersion;
}
bool found = false;
for (int j = 0; j < m_listCtrl.GetItemCount(); j++)
{
CString code = m_listCtrl.GetItemText(j, 4);
if (code == Datas[i].code)
{
if (m_listCtrl.GetItemText(j, 15) == L"删除特性规格")//删除后在列表中没点删除,磐石又有数据则刷新回来
{
m_listCtrl.SetItemText(j, 15, L"获取图纸规格");
}
// Update existing row
m_listCtrl.SetItemText(j, 1, Datas[i].drawingCode);
m_listCtrl.SetItemText(j, 2, version);
m_listCtrl.SetItemText(j, 3, Datas[i].nodeName);
m_listCtrl.SetItemText(j, 4, Datas[i].code);
m_listCtrl.SetItemText(j, 5, Datas[i].name);
m_listCtrl.SetItemText(j, 6, Datas[i].version);
m_listCtrl.SetItemText(j, 7, Datas[i].statusName);
m_listCtrl.SetItemText(j, 8, Datas[i].className);
m_listCtrl.SetItemText(j, 16, Datas[i].specification);
m_listCtrl.SetItemText(j, 10, Datas[i].drawingLocation);
found = true;
break;
}
}
if (!found)
{
// Add new row
int ID = m_listCtrl.GetItemCount() + 1;
CString StrID;
StrID.Format(L"%d", ID);
int index = m_listCtrl.InsertItem(m_listCtrl.GetItemCount(), StrID);
m_listCtrl.SetItemText(index, 1, Datas[i].drawingCode);
m_listCtrl.SetItemText(index, 2, version);
m_listCtrl.SetItemText(index, 3, Datas[i].nodeName);
m_listCtrl.SetItemText(index, 4, Datas[i].code);
m_listCtrl.SetItemText(index, 5, Datas[i].name);
m_listCtrl.SetItemText(index, 6, Datas[i].version);
m_listCtrl.SetItemText(index, 7, Datas[i].statusName);
m_listCtrl.SetItemText(index, 8, Datas[i].className);
m_listCtrl.SetItemText(index, 16, Datas[i].specification);
m_listCtrl.SetItemText(index, 10, Datas[i].drawingLocation);
m_listCtrl.SetItemText(index, 15, L"获取图纸规格");
m_listCtrl.SetItemText(index, 20, Datas[i].relationNetId);
}
}
m_waitExe.SetProgPos(90, waitExeStr);
// Remove row
for (int i = 0; i < m_listCtrl.GetItemCount(); i++)
{
CString code = m_listCtrl.GetItemText(i, 4);
bool found = false;
for (int j = 0; j < Datas.size(); j++)
{
if (code == Datas[j].code)
{
found = true;
break;
}
}
if (!found)
{
m_listCtrl.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
m_listCtrl.SetItemState(i, LVIS_CUT, LVIS_CUT);
m_listCtrl.RedrawItems(i, i);
m_listCtrl.SetItemText(i, 15, L"删除特性规格");
isHaveDelete = TRUE;
}
}
m_waitExe.SetProgPos(100, waitExeStr);
m_waitExe.EndExe();
m_editCtrl.SetTipText(strTipText);
GetListData();//更新全局m_Data数据
CString key_count, important_count;
GetPanShiSpecialFeatureCount(key_count, important_count);
m_showStatic1.SetWindowTextW(key_count);//磐石关键特性数量
m_showStatic2.SetWindowTextW(important_count);//磐石重要特性数量
ComparisonData(TRUE, 1);//对比数据
m_listCtrl.Invalidate();
return true;
}逐行解释该代码,并将其转为QT框架
最新发布