FRAME_FacilityListF.cpp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  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. String StrToDay(String AStrDateTime)
  83. {
  84. String sDateTime = "";
  85. if (AStrDateTime.Length() < 8) return AStrDateTime;
  86. try
  87. {
  88. sDateTime.printf(L"%s-%s-%s",
  89. AStrDateTime.SubString( 1, 4).c_str(),
  90. AStrDateTime.SubString( 5, 2).c_str(),
  91. AStrDateTime.SubString( 7, 2).c_str());
  92. }
  93. catch(...)
  94. {
  95. }
  96. return sDateTime;
  97. }
  98. //---------------------------------------------------------------------------
  99. void __fastcall TFRAMEFacilityList::UpdateList()
  100. {
  101. TItsCompany *pComp;
  102. TDateTime dtNull = NULL;
  103. CMM_ClearGridTableView(TvList);
  104. TItsLayer *pLayer;
  105. int nRow = 0;
  106. try
  107. {
  108. TvList->BeginUpdate();
  109. try
  110. {
  111. ItsFacilityManager->FLists.Lock();
  112. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  113. {
  114. pObj->EditMode = DB_INIT; //미리 초기화해준다(업데이트 확인을 위해)
  115. if (pObj->DEL_YN == "Y") continue;
  116. nRow = m_pGDC->AppendRecord();
  117. pObj->GridIndex = nRow;
  118. m_pGDC->Values[nRow][ColumnSel->Index] = false; //선택
  119. m_pGDC->Values[nRow][Column00->Index] = pObj->Deleted;
  120. m_pGDC->Values[nRow][Column01->Index] = "-";
  121. m_pGDC->Values[nRow][Column02->Index] = pObj->FCLT_ID; // FCLT_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  122. m_pGDC->Values[nRow][Column03->Index] = pObj->RFID_ID; // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  123. pLayer = ItsLayerManager->FLists.Find(pObj->FCLT_TYPE);
  124. if (pLayer)
  125. {
  126. m_pGDC->Values[nRow][Column04->Index] = pLayer->Name; // FCLT_TYPE VARCHAR(7 BYTE) NOT NULL, '시설물유형';
  127. }
  128. else
  129. {
  130. m_pGDC->Values[nRow][Column04->Index] = pObj->FCLT_TYPE; // FCLT_TYPE VARCHAR(7 BYTE) NOT NULL, '시설물유형';
  131. }
  132. m_pGDC->Values[nRow][Column05->Index] = pObj->FCLT_LCTN; // FCLT_LCTN VARCHAR(100 BYTE) '시설물 위치';
  133. if(pObj->RSCE_YN.IsEmpty())
  134. m_pGDC->Values[nRow][Column06->Index] = "N";
  135. else
  136. m_pGDC->Values[nRow][Column06->Index] = pObj->RSCE_YN; // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  137. m_pGDC->Values[nRow][Column07->Index] = pObj->MDL_NM; // MDL_NM VARCHAR(30 BYTE) '모델명';
  138. m_pGDC->Values[nRow][Column08->Index] = pObj->USE_YEAR; // USE_YEAR NUMBER(3) '사용년수';
  139. #if 0
  140. m_pGDC->Values[nRow][Column09->Index] = dtNull; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  141. m_pGDC->Values[nRow][Column10->Index] = dtNull; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  142. m_pGDC->Values[nRow][Column11->Index] = dtNull; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  143. m_pGDC->Values[nRow][Column12->Index] = dtNull; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  144. m_pGDC->Values[nRow][Column14->Index] = dtNull; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  145. m_pGDC->Values[nRow][Column15->Index] = dtNull; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  146. m_pGDC->Values[nRow][Column17->Index] = dtNull; // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  147. m_pGDC->Values[nRow][Column19->Index] = dtNull; // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  148. #else
  149. #if 0
  150. m_pGDC->Values[nRow][Column09->Index] = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  151. m_pGDC->Values[nRow][Column10->Index] = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  152. m_pGDC->Values[nRow][Column11->Index] = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  153. m_pGDC->Values[nRow][Column12->Index] = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  154. m_pGDC->Values[nRow][Column14->Index] = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  155. m_pGDC->Values[nRow][Column15->Index] = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  156. m_pGDC->Values[nRow][Column17->Index] = ""; // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  157. m_pGDC->Values[nRow][Column19->Index] = ""; // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  158. #endif
  159. #endif
  160. m_pGDC->Values[nRow][Column22->Index] = ""; // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  161. m_pGDC->Values[nRow][Column23->Index] = ""; // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  162. if (!pObj->INWR_DT.IsEmpty())
  163. m_pGDC->Values[nRow][Column09->Index] = ITSUtil_StrToTime(pObj->INWR_DT); // INWR_DT VARCHAR(14 BYTE) '입고일시';
  164. if (!pObj->OTWR_DT.IsEmpty())
  165. m_pGDC->Values[nRow][Column10->Index] = ITSUtil_StrToTime(pObj->OTWR_DT); // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  166. if (!pObj->ISTL_DT.IsEmpty())
  167. {
  168. //String ISTL_DT = pObj->ISTL_DT;
  169. //if (pObj->ISTL_DT.Length() == 8) ISTL_DT = pObj->ISTL_DT + "000000";
  170. //m_pGDC->Values[nRow][Column11->Index] = ITSUtil_StrToTime(ISTL_DT); // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  171. m_pGDC->Values[nRow][Column11->Index] = StrToDay(pObj->ISTL_DT); // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  172. }
  173. if (!pObj->TAKT_DT.IsEmpty())
  174. m_pGDC->Values[nRow][Column12->Index] = ITSUtil_StrToTime(pObj->TAKT_DT); // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  175. m_pGDC->Values[nRow][Column13->Index] = pObj->TAKT_RESN; // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  176. if (!pObj->TAKN_DT.IsEmpty())
  177. m_pGDC->Values[nRow][Column14->Index] = ITSUtil_StrToTime(pObj->TAKN_DT); // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  178. if (!pObj->ABDN_DT.IsEmpty())
  179. m_pGDC->Values[nRow][Column15->Index] = ITSUtil_StrToTime(pObj->ABDN_DT); // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  180. m_pGDC->Values[nRow][Column16->Index] = pObj->ADTN_NM; // ADTN_NM VARCHAR(30 BYTE) '추가자명';
  181. if (!pObj->ADTN_DT.IsEmpty())
  182. m_pGDC->Values[nRow][Column17->Index] = ITSUtil_StrToTime(pObj->ADTN_DT); // ADTN_DT VARCHAR(14 BYTE) '추가일시';
  183. m_pGDC->Values[nRow][Column18->Index] = pObj->CHNG_NM; // CHNG_NM VARCHAR(30 BYTE) '변경자명';
  184. if (!pObj->CHNG_DT.IsEmpty())
  185. m_pGDC->Values[nRow][Column19->Index] = ITSUtil_StrToTime(pObj->CHNG_DT); // CHNG_DT VARCHAR(14 BYTE) '변경일시';
  186. m_pGDC->Values[nRow][Column20->Index] = pObj->AMT; // AMT NUMBER(15), '금액';
  187. m_pGDC->Values[nRow][Column21->Index] = pObj->DEL_YN; // DEL_YN CHAR(1 BYTE) '삭제여부';
  188. m_pGDC->Values[nRow][Column24->Index] = pObj->ISTL_LCTN_ADDR;
  189. if (!pObj->ISTL_CMPY_ID.IsEmpty())
  190. {
  191. String sComp1 = "[" + pObj->ISTL_CMPY_ID + "] ";
  192. pComp = ItsCompanyManager->FLists.Find(pObj->ISTL_CMPY_ID);
  193. if (pComp) sComp1 = sComp1 + pComp->CMPY_NM;
  194. m_pGDC->Values[nRow][Column22->Index] = sComp1; // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  195. }
  196. if (!pObj->MNFC_CMPY_ID.IsEmpty())
  197. {
  198. String sComp2 = "[" + pObj->MNFC_CMPY_ID + "] ";
  199. pComp = ItsCompanyManager->FLists.Find(pObj->MNFC_CMPY_ID);
  200. if (pComp) sComp2 = sComp2 + pComp->CMPY_NM;
  201. m_pGDC->Values[nRow][Column23->Index] = sComp2; // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  202. }
  203. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  204. }
  205. }
  206. __finally
  207. {
  208. ItsFacilityManager->FLists.UnLock();
  209. }
  210. }
  211. __finally
  212. {
  213. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  214. TvList->EndUpdate();
  215. TvList->DataController->GotoFirst();
  216. //TvList->DataController->FocusedRecordIndex = nFocusRow;
  217. //CxList->SetFocus();
  218. }
  219. }
  220. //---------------------------------------------------------------------------
  221. void __fastcall TFRAMEFacilityList::BtnAllSelectClick(TObject *Sender)
  222. {
  223. TcxButton *pBtn = (TcxButton*)Sender;
  224. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  225. }
  226. //---------------------------------------------------------------------------
  227. int __fastcall TFRAMEFacilityList::GetSelectIds(String &ALinkIds)
  228. {
  229. ALinkIds = "";
  230. if (TvList->ViewData->RecordCount <= 0) return 0;
  231. int nIndex = m_pGDC->FocusedRecordIndex;
  232. if( nIndex < 0 )
  233. return 0;
  234. String sLinkId = VarToStr(m_pGDC->Values[nIndex][Column01->Index]);
  235. ALinkIds = sLinkId;
  236. return 1;
  237. }
  238. //---------------------------------------------------------------------------
  239. void __fastcall TFRAMEFacilityList::TvListDataControllerFilterChanged(TObject *Sender)
  240. {
  241. CMM_SetFilterLike(TvList);
  242. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  243. }
  244. //---------------------------------------------------------------------------
  245. void __fastcall TFRAMEFacilityList::BtnExlSaveClick(TObject *Sender)
  246. {
  247. TcxGrid *pGrid = CxList;
  248. TcxGridTableView *pView = TvList;
  249. String sTitle= lblTitle->Caption;//"시설물정보";
  250. CMM_ExportToExcelFile(sTitle, pGrid, pView, (TForm*)this);
  251. }
  252. //---------------------------------------------------------------------------