FRAME_FacilityListF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "CDSFacilityF.h"
  6. #include "CDSCompanyF.h"
  7. #include "FrmResourceF.h"
  8. #include "ITSLangTransF.h"
  9. #include "CDSLayerF.h"
  10. #pragma hdrstop
  11. #include "FRAME_FacilityListF.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "cxButtons"
  15. #pragma link "cxCalc"
  16. #pragma link "cxCalendar"
  17. #pragma link "cxCheckBox"
  18. #pragma link "cxClasses"
  19. #pragma link "cxControls"
  20. #pragma link "cxCustomData"
  21. #pragma link "cxData"
  22. #pragma link "cxDataStorage"
  23. #pragma link "cxDropDownEdit"
  24. #pragma link "cxEdit"
  25. #pragma link "cxFilter"
  26. #pragma link "cxGraphics"
  27. #pragma link "cxGrid"
  28. #pragma link "cxGridCustomTableView"
  29. #pragma link "cxGridCustomView"
  30. #pragma link "cxGridLevel"
  31. #pragma link "cxGridTableView"
  32. #pragma link "cxLabel"
  33. #pragma link "cxLookAndFeelPainters"
  34. #pragma link "cxLookAndFeels"
  35. #pragma link "cxSpinEdit"
  36. #pragma link "cxStyles"
  37. #pragma link "cxTextEdit"
  38. #pragma link "dxSkinBlack"
  39. #pragma link "dxSkinBlue"
  40. #pragma link "dxSkinsCore"
  41. #pragma link "dxSkinscxPCPainter"
  42. #pragma link "cxContainer"
  43. #pragma link "dxSkinMcSkin"
  44. #pragma resource "*.dfm"
  45. //---------------------------------------------------------------------------
  46. __fastcall TFRAMEFacilityList::TFRAMEFacilityList(TComponent* Owner)
  47. : TFrame(Owner)
  48. {
  49. LangTrans->Translate(this, ITSDb_GetConnection());
  50. ColumnSel->Options->Filtering = false;
  51. //TvList->DataController->Filter->SupportedLike = false;
  52. m_pGDC = TvList->DataController;
  53. // TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<시설물 정보가 없습니다>";
  54. if (!ItsCompanyManager)
  55. {
  56. ItsCompanyManager = new TItsCompanyManager();
  57. }
  58. ItsCompanyManager->LoadFromDb();
  59. //현장자산유무
  60. TcxComboBoxProperties *pcxCboProperties06 = (TcxComboBoxProperties*)Column06->Properties;
  61. pcxCboProperties06->Items->Clear();
  62. pcxCboProperties06->Items->Add("Y");
  63. pcxCboProperties06->Items->Add("N");
  64. //업체
  65. TcxComboBoxProperties *pcxCboProperties22 = (TcxComboBoxProperties *)Column22->Properties;
  66. TcxComboBoxProperties *pcxCboProperties23 = (TcxComboBoxProperties *)Column23->Properties;
  67. pcxCboProperties22->Items->Clear();
  68. pcxCboProperties23->Items->Clear();
  69. try
  70. {
  71. FOR_STL(TItsCompany*, pObj, ItsCompanyManager->FLists)
  72. {
  73. pcxCboProperties22->Items->Add("[" + pObj->CMPY_ID + "] " + pObj->CMPY_NM);
  74. pcxCboProperties23->Items->Add("[" + pObj->CMPY_ID + "] " + pObj->CMPY_NM);
  75. }
  76. }
  77. __finally
  78. {
  79. }
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TFRAMEFacilityList::UpdateList()
  83. {
  84. TItsCompany *pComp;
  85. TDateTime dtNull = NULL;
  86. CMM_ClearGridTableView(TvList);
  87. TItsLayer *pLayer;
  88. int nRow = 0;
  89. try
  90. {
  91. TvList->BeginUpdate();
  92. try
  93. {
  94. ItsFacilityManager->FLists.Lock();
  95. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  96. {
  97. pObj->EditMode = DB_INIT; //미리 초기화해준다(업데이트 확인을 위해)
  98. if (pObj->DEL_YN == "Y") continue;
  99. nRow = m_pGDC->AppendRecord();
  100. pObj->GridIndex = nRow;
  101. m_pGDC->Values[nRow][ColumnSel->Index] = false; //선택
  102. m_pGDC->Values[nRow][Column00->Index] = pObj->Deleted;
  103. m_pGDC->Values[nRow][Column01->Index] = "-";
  104. m_pGDC->Values[nRow][Column02->Index] = pObj->FCLT_ID; // FCLT_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  105. m_pGDC->Values[nRow][Column03->Index] = pObj->RFID_ID; // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  106. pLayer = ItsLayerManager->FLists.Find(pObj->FCLT_TYPE);
  107. if (pLayer)
  108. {
  109. m_pGDC->Values[nRow][Column04->Index] = pLayer->Name; // FCLT_TYPE VARCHAR(7 BYTE) NOT NULL, '시설물유형';
  110. }
  111. else
  112. {
  113. m_pGDC->Values[nRow][Column04->Index] = pObj->FCLT_TYPE; // FCLT_TYPE VARCHAR(7 BYTE) NOT NULL, '시설물유형';
  114. }
  115. m_pGDC->Values[nRow][Column05->Index] = pObj->FCLT_LCTN; // FCLT_LCTN VARCHAR(100 BYTE) '시설물 위치';
  116. if(pObj->RSCE_YN.IsEmpty())
  117. m_pGDC->Values[nRow][Column06->Index] = "N";
  118. else
  119. m_pGDC->Values[nRow][Column06->Index] = pObj->RSCE_YN; // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  120. m_pGDC->Values[nRow][Column07->Index] = pObj->MDL_NM; // MDL_NM VARCHAR(30 BYTE) '모델명';
  121. m_pGDC->Values[nRow][Column08->Index] = pObj->USE_YEAR; // USE_YEAR NUMBER(3) '사용년수';
  122. #if 0
  123. m_pGDC->Values[nRow][Column09->Index] = dtNull; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  124. m_pGDC->Values[nRow][Column10->Index] = dtNull; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  125. m_pGDC->Values[nRow][Column11->Index] = dtNull; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  126. m_pGDC->Values[nRow][Column12->Index] = dtNull; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  127. m_pGDC->Values[nRow][Column14->Index] = dtNull; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  128. m_pGDC->Values[nRow][Column15->Index] = dtNull; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  129. m_pGDC->Values[nRow][Column17->Index] = dtNull; // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  130. m_pGDC->Values[nRow][Column19->Index] = dtNull; // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  131. #else
  132. #if 0
  133. m_pGDC->Values[nRow][Column09->Index] = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  134. m_pGDC->Values[nRow][Column10->Index] = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  135. m_pGDC->Values[nRow][Column11->Index] = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  136. m_pGDC->Values[nRow][Column12->Index] = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  137. m_pGDC->Values[nRow][Column14->Index] = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  138. m_pGDC->Values[nRow][Column15->Index] = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  139. m_pGDC->Values[nRow][Column17->Index] = ""; // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  140. m_pGDC->Values[nRow][Column19->Index] = ""; // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  141. #endif
  142. #endif
  143. m_pGDC->Values[nRow][Column22->Index] = ""; // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  144. m_pGDC->Values[nRow][Column23->Index] = ""; // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  145. if (!pObj->INWR_DT.IsEmpty())
  146. m_pGDC->Values[nRow][Column09->Index] = ITSUtil_StrToTime(pObj->INWR_DT); // INWR_DT VARCHAR(14 BYTE) '입고일시';
  147. if (!pObj->OTWR_DT.IsEmpty())
  148. m_pGDC->Values[nRow][Column10->Index] = ITSUtil_StrToTime(pObj->OTWR_DT); // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  149. if (!pObj->ISTL_DT.IsEmpty())
  150. m_pGDC->Values[nRow][Column11->Index] = ITSUtil_StrToTime(pObj->ISTL_DT); // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  151. if (!pObj->TAKT_DT.IsEmpty())
  152. m_pGDC->Values[nRow][Column12->Index] = ITSUtil_StrToTime(pObj->TAKT_DT); // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  153. m_pGDC->Values[nRow][Column13->Index] = pObj->TAKT_RESN; // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  154. if (!pObj->TAKN_DT.IsEmpty())
  155. m_pGDC->Values[nRow][Column14->Index] = ITSUtil_StrToTime(pObj->TAKN_DT); // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  156. if (!pObj->ABDN_DT.IsEmpty())
  157. m_pGDC->Values[nRow][Column15->Index] = ITSUtil_StrToTime(pObj->ABDN_DT); // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  158. m_pGDC->Values[nRow][Column16->Index] = pObj->ADTN_NM; // ADTN_NM VARCHAR(30 BYTE) '추가자명';
  159. if (!pObj->ADTN_DT.IsEmpty())
  160. m_pGDC->Values[nRow][Column17->Index] = ITSUtil_StrToTime(pObj->ADTN_DT); // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  161. m_pGDC->Values[nRow][Column18->Index] = pObj->CHNG_NM; // CHNG_NM VARCHAR(30 BYTE) '변경자명';
  162. if (!pObj->CHNG_DT.IsEmpty())
  163. m_pGDC->Values[nRow][Column19->Index] = ITSUtil_StrToTime(pObj->CHNG_DT); // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  164. m_pGDC->Values[nRow][Column20->Index] = pObj->AMT; // AMT NUMBER(15), '금액';
  165. m_pGDC->Values[nRow][Column21->Index] = pObj->DEL_YN; // DEL_YN CHAR(1 BYTE) '삭제여부';
  166. m_pGDC->Values[nRow][Column24->Index] = pObj->ISTL_LCTN_ADDR;
  167. if (!pObj->ISTL_CMPY_ID.IsEmpty())
  168. {
  169. String sComp1 = "[" + pObj->ISTL_CMPY_ID + "] ";
  170. pComp = ItsCompanyManager->FLists.Find(pObj->ISTL_CMPY_ID);
  171. if (pComp) sComp1 = sComp1 + pComp->CMPY_NM;
  172. m_pGDC->Values[nRow][Column22->Index] = sComp1; // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  173. }
  174. if (!pObj->MNFC_CMPY_ID.IsEmpty())
  175. {
  176. String sComp2 = "[" + pObj->MNFC_CMPY_ID + "] ";
  177. pComp = ItsCompanyManager->FLists.Find(pObj->MNFC_CMPY_ID);
  178. if (pComp) sComp2 = sComp2 + pComp->CMPY_NM;
  179. m_pGDC->Values[nRow][Column23->Index] = sComp2; // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  180. }
  181. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  182. }
  183. }
  184. __finally
  185. {
  186. ItsFacilityManager->FLists.UnLock();
  187. }
  188. }
  189. __finally
  190. {
  191. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  192. TvList->EndUpdate();
  193. TvList->DataController->GotoFirst();
  194. //TvList->DataController->FocusedRecordIndex = nFocusRow;
  195. //CxList->SetFocus();
  196. }
  197. }
  198. //---------------------------------------------------------------------------
  199. void __fastcall TFRAMEFacilityList::BtnAllSelectClick(TObject *Sender)
  200. {
  201. TcxButton *pBtn = (TcxButton*)Sender;
  202. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  203. }
  204. //---------------------------------------------------------------------------
  205. int __fastcall TFRAMEFacilityList::GetSelectIds(String &ALinkIds)
  206. {
  207. ALinkIds = "";
  208. if (TvList->ViewData->RecordCount <= 0) return 0;
  209. int nIndex = m_pGDC->FocusedRecordIndex;
  210. if( nIndex < 0 )
  211. return 0;
  212. String sLinkId = VarToStr(m_pGDC->Values[nIndex][Column01->Index]);
  213. ALinkIds = sLinkId;
  214. return 1;
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TFRAMEFacilityList::TvListDataControllerFilterChanged(TObject *Sender)
  218. {
  219. CMM_SetFilterLike(TvList);
  220. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  221. }
  222. //---------------------------------------------------------------------------
  223. void __fastcall TFRAMEFacilityList::BtnExlSaveClick(TObject *Sender)
  224. {
  225. TcxGrid *pGrid = CxList;
  226. TcxGridTableView *pView = TvList;
  227. String sTitle= lblTitle->Caption;//"시설물정보";
  228. CMM_ExportToExcelFile(sTitle, pGrid, pView, (TForm*)this);
  229. }
  230. //---------------------------------------------------------------------------