IFM0010MF.cpp 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "WindowMsgF.h"
  7. #include "AppGlobalF.h"
  8. #include "CDSFacilityF.h"
  9. #include "CDSCompanyF.h"
  10. #include "ITSLangTransF.h"
  11. #include "ITS_OPLibF.h"
  12. #pragma hdrstop
  13. #include "IFM0010MF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma link "FRAME_UnRegFacilityListF"
  17. #pragma link "cxButtons"
  18. #pragma link "cxContainer"
  19. #pragma link "cxControls"
  20. #pragma link "cxEdit"
  21. #pragma link "cxGraphics"
  22. #pragma link "cxGroupBox"
  23. #pragma link "cxLookAndFeelPainters"
  24. #pragma link "cxLookAndFeels"
  25. #pragma link "cxSplitter"
  26. #pragma link "dxSkinBlack"
  27. #pragma link "dxSkinBlue"
  28. #pragma link "dxSkinsCore"
  29. #pragma link "FRAME_FacilityListF"
  30. #pragma link "cxLabel"
  31. #pragma link "dxSkinMcSkin"
  32. #pragma resource "*.dfm"
  33. TIFM0010M *IFM0010M = NULL;
  34. extern LOGININFO *g_pLOGIN;
  35. //---------------------------------------------------------------------------
  36. __fastcall TIFM0010M::TIFM0010M(TComponent* Owner)
  37. : TForm(Owner)
  38. {
  39. LangTrans->Translate(this, ITSDb_GetConnection());
  40. ITSSkin_Load(this);
  41. CMM_LoadForm(g_sFormsDir, this);
  42. FTitle = Caption;//"시설물정보 관리";
  43. FRAMEFacilityList1->PnlBottom->Visible = false;
  44. FRAMEFacilityList1->PnlTop->Visible = false;
  45. FRAMEFacilityList1->TvList->OptionsData->Editing = true;
  46. FRAMEUnRegFacilityList1->PnlBottom->Visible = false;
  47. cxGroupBox2->Width = 390;
  48. cxSplitter1->CloseSplitter();
  49. cxSplitter1->Visible = false;
  50. FDbUpdate = false;
  51. }
  52. //---------------------------------------------------------------------------
  53. void __fastcall TIFM0010M::CommClose()
  54. {
  55. try
  56. {
  57. CMM_SaveForm(g_sFormsDir, this);
  58. }
  59. catch(...)
  60. {
  61. }
  62. }
  63. //---------------------------------------------------------------------------
  64. void __fastcall TIFM0010M::FormInit()
  65. {
  66. m_pGDC1 = FRAMEFacilityList1->TvList->DataController;
  67. m_pGDC2 = FRAMEUnRegFacilityList1->TvList->DataController;
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TIFM0010M::FormShow(TObject *Sender)
  71. {
  72. Refresh();
  73. FormInit();
  74. TmrShow->Enabled = true;
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TIFM0010M::TmrShowTimer(TObject *Sender)
  78. {
  79. TmrShow->Enabled = false;
  80. BtnSearchClick((TObject*)BtnSearch);
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TIFM0010M::BtnSearchClick(TObject *Sender)
  84. {
  85. Application->ProcessMessages();
  86. TSqlCursor sqlCrs((TControl*)BtnSearch);
  87. RefreshData();
  88. }
  89. //---------------------------------------------------------------------------
  90. void __fastcall TIFM0010M::RefreshData()
  91. {
  92. FUpdate = false;
  93. FRAMEFacilityList1->UpdateList();
  94. FRAMEUnRegFacilityList1->UpdateList();
  95. if (m_pGDC2->RecordCount == 0)
  96. {
  97. cxSplitter1->CloseSplitter();
  98. cxSplitter1->Visible = false;
  99. }
  100. else
  101. {
  102. cxSplitter1->Visible = true;
  103. cxSplitter1->OpenSplitter();
  104. }
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TIFM0010M::BtnCloseClick(TObject *Sender)
  108. {
  109. Close();
  110. }
  111. //---------------------------------------------------------------------------
  112. void __fastcall TIFM0010M::FormClose(TObject *Sender, TCloseAction &Action)
  113. {
  114. CommClose();
  115. IFM0010M = NULL;
  116. Action = caFree;
  117. }
  118. //---------------------------------------------------------------------------
  119. void __fastcall TIFM0010M::BtnEditClick(TObject *Sender)
  120. {
  121. TListFocus tvFocus(FRAMEFacilityList1->TvList);
  122. if (BtnEdit->Caption == FrmLang->lblCancel->Caption)//"취소")
  123. {
  124. FRAMEFacilityList1->CxList->SetFocus();
  125. Application->ProcessMessages();
  126. SaveData();
  127. }
  128. FrmLang->ITSSkin_ButtonClick(BtnSearch, BtnEdit, BtnInsert, BtnDelete, BtnApply);
  129. ChangeEditMode(BtnEdit->Down);
  130. BtnInsert->Enabled = !BtnEdit->Down;
  131. RefreshData();
  132. }
  133. //---------------------------------------------------------------------------
  134. void __fastcall TIFM0010M::ChangeEditMode(bool AEdit)
  135. {
  136. bool bEditing = AEdit;
  137. //int nFocusRow = FRAMEFacilityList1->TvList->Controller->FocusedRowIndex;
  138. try
  139. {
  140. FRAMEFacilityList1->TvList->BeginUpdate();
  141. FRAMEFacilityList1->Column01->Visible = bEditing;
  142. FRAMEFacilityList1->Column03->Options->Editing = bEditing;
  143. FRAMEFacilityList1->Column06->Options->Editing = bEditing;
  144. FRAMEFacilityList1->Column07->Options->Editing = bEditing;
  145. FRAMEFacilityList1->Column08->Options->Editing = bEditing;
  146. FRAMEFacilityList1->Column09->Options->Editing = bEditing;
  147. FRAMEFacilityList1->Column10->Options->Editing = bEditing;
  148. FRAMEFacilityList1->Column11->Options->Editing = bEditing;
  149. FRAMEFacilityList1->Column12->Options->Editing = bEditing;
  150. FRAMEFacilityList1->Column13->Options->Editing = bEditing;
  151. FRAMEFacilityList1->Column14->Options->Editing = bEditing;
  152. FRAMEFacilityList1->Column15->Options->Editing = bEditing;
  153. //FRAMEFacilityList1->Column16->Options->Editing = bEditing;
  154. //FRAMEFacilityList1->Column17->Options->Editing = bEditing;
  155. //FRAMEFacilityList1->Column18->Options->Editing = bEditing;
  156. //FRAMEFacilityList1->Column19->Options->Editing = bEditing;
  157. FRAMEFacilityList1->Column20->Options->Editing = bEditing;
  158. //FRAMEFacilityList1->Column21->Options->Editing = bEditing;
  159. FRAMEFacilityList1->Column22->Options->Editing = bEditing;
  160. FRAMEFacilityList1->Column23->Options->Editing = bEditing;
  161. FRAMEFacilityList1->Column24->Options->Editing = bEditing;
  162. }
  163. __finally
  164. {
  165. FRAMEFacilityList1->TvList->EndUpdate();
  166. if (bEditing)
  167. {
  168. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  169. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  170. }
  171. else
  172. {
  173. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  174. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  175. }
  176. //FRAMEFacilityList1->TvList->Controller->FocusedRowIndex = nFocusRow;
  177. }
  178. }
  179. //---------------------------------------------------------------------------
  180. void __fastcall TIFM0010M::BtnDeleteClick(TObject *Sender)
  181. {
  182. int nIdx = m_pGDC1->FocusedRecordIndex;
  183. if (nIdx < 0) return;
  184. //m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column01->Index] = FrmLang->lblDelete->Caption;//"삭제";
  185. m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column01->Index] = FrmLang->lblDelete->Caption;
  186. int nMemPtr = m_pGDC1->Values[nIdx][FRAMEFacilityList1->Column99->Index];
  187. TItsFacility *pObj = (TItsFacility*)nMemPtr;
  188. pObj->EditMode = DB_DELETE;
  189. }
  190. //---------------------------------------------------------------------------
  191. void __fastcall TIFM0010M::BtnApplyClick(TObject *Sender)
  192. {
  193. FUpdate = true;
  194. BtnEdit->Down = false;
  195. BtnEdit->Click();
  196. }
  197. //---------------------------------------------------------------------------
  198. void __fastcall TIFM0010M::BtnInsertClick(TObject *Sender)
  199. {
  200. int nSelCount = CMM_GetCheckCount(FRAMEUnRegFacilityList1->TvList, FRAMEUnRegFacilityList1->ColumnSel->Index);
  201. if (nSelCount == 0)
  202. {
  203. Application->MessageBox(cxLabel1->Caption.c_str(), //L"미등록 시설물이 선택되지 않았습니다.\r\n추가 등록할 미등록 시설물을 체크하여 선택하십시요.",
  204. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  205. return;
  206. }
  207. if (Application->MessageBox(cxLabel2->Caption.c_str(), //L"선택하신 미등록 시설물을 시설물 정보에 추가하여 저장 하시겠습니까?",
  208. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  209. TADOQuery *pADO = NULL;
  210. String sQry;
  211. try
  212. {
  213. sQry = "MERGE INTO TB_FCLT_INFR L \r\n"
  214. "USING (SELECT :p01 AS FCLT_ID, \r\n"
  215. " :p02 AS FCLT_TYPE, \r\n"
  216. " :p03 AS FCLT_LCTN, \r\n"
  217. " 'N' AS DEL_YN, \r\n"
  218. " 0 AS USE_YEAR, \r\n"
  219. " 0 AS AMT, \r\n"
  220. " :p04 AS ADTN_NM, \r\n"
  221. " TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') AS ADTN_DT \r\n"
  222. " FROM DUAL ) M \r\n"
  223. "ON (L.FCLT_ID = M.FCLT_ID) \r\n"
  224. "WHEN MATCHED THEN \r\n"
  225. " UPDATE SET L.DEL_YN = M.DEL_YN, \r\n"
  226. " L.ADTN_NM = M.ADTN_NM, \r\n"
  227. " L.ADTN_DT = M.ADTN_DT \r\n"
  228. "WHEN NOT MATCHED THEN \r\n"
  229. " INSERT (L.FCLT_ID, L.FCLT_TYPE, L.FCLT_LCTN, L.DEL_YN, \r\n"
  230. " L.USE_YEAR,L.AMT, L.ADTN_NM, L.ADTN_DT) \r\n"
  231. " VALUES (M.FCLT_ID, M.FCLT_TYPE, M.FCLT_LCTN, M.DEL_YN, \r\n"
  232. " M.USE_YEAR,M.AMT, M.ADTN_NM, M.ADTN_DT) \r\n";
  233. FRAMEUnRegFacilityList1->TvList->BeginUpdate();
  234. try
  235. {
  236. pADO = new TADOQuery(NULL);
  237. pADO->Close();
  238. pADO->Connection = ITSDb_GetConnection();
  239. ITSDb_SQLText(pADO, sQry);
  240. ITSDb_GetConnection()->BeginTrans();
  241. int nMemPtr;
  242. TItsRegFacility *pObj;
  243. int nRowCnt = FRAMEUnRegFacilityList1->TvList->ViewData->RecordCount;
  244. for (int ii = 0; ii < nRowCnt; ii++)
  245. {
  246. TcxCustomGridRow* ARow = FRAMEUnRegFacilityList1->TvList->ViewData->Rows[ii];
  247. if (((bool)ARow->Values[FRAMEUnRegFacilityList1->ColumnSel->Index]))
  248. {
  249. nMemPtr = ARow->Values[FRAMEUnRegFacilityList1->Column99->Index];
  250. pObj = (TItsRegFacility*)nMemPtr;
  251. ITSDb_SQLBind(pADO, "p01", pObj->Id);
  252. ITSDb_SQLBind(pADO, "p02", pObj->Type);
  253. ITSDb_SQLBind(pADO, "p03", pObj->Name);
  254. ITSDb_SQLBind(pADO, "p04", g_pLOGIN->sUserId);
  255. ITSDb_SQLExec(pADO);
  256. }
  257. }
  258. ITSDb_GetConnection()->CommitTrans();
  259. Application->MessageBox(cxLabel3->Caption.c_str(), //L"선택하신 미등록 시설물을 시설물 정보에 정상적으로 저장하였습니다.",
  260. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  261. FDbUpdate = true;
  262. }
  263. catch(EDatabaseError &E)
  264. {
  265. ITSDb_GetConnection()->RollbackTrans();
  266. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  267. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  268. throw Exception(String(E.ClassName()) + E.Message);
  269. }
  270. catch(Exception &e)
  271. {
  272. ITSDb_GetConnection()->RollbackTrans();
  273. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  274. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQry);
  275. throw Exception(String(e.ClassName()) + e.Message);
  276. }
  277. }
  278. __finally
  279. {
  280. if (pADO)
  281. {
  282. pADO->Close();
  283. delete pADO;
  284. }
  285. FRAMEUnRegFacilityList1->TvList->EndUpdate();
  286. }
  287. ItsFacilityManager->LoadFromDb();
  288. HWND MainWinHandle = (HWND)g_AppCfg.lMainWinHandle;
  289. RefreshData();
  290. }
  291. //---------------------------------------------------------------------------
  292. void __fastcall TIFM0010M::FRAMEFacilityList1TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  293. bool &ADone)
  294. {
  295. if (AViewInfo)
  296. {
  297. String sType = AViewInfo->GridRecord->DisplayTexts[FRAMEFacilityList1->Column01->Index];
  298. if (sType == FrmLang->lblModify->Caption)//"수정")
  299. {
  300. ACanvas->Brush->Color = clOlive;
  301. }
  302. else if (sType == FrmLang->lblDelete->Caption)//"삭제")
  303. {
  304. ACanvas->Brush->Color = clRed;
  305. }
  306. else if (sType == FrmLang->lblNew->Caption)//"신규")
  307. {
  308. ACanvas->Brush->Color = clLime;
  309. if (AViewInfo->Focused) ACanvas->Font->Color = clBlack;
  310. }
  311. sType = AViewInfo->GridRecord->DisplayTexts[FRAMEFacilityList1->Column00->Index]; //삭제됨
  312. if (sType == "Y")
  313. ACanvas->Brush->Color = clSilver;
  314. }
  315. }
  316. //---------------------------------------------------------------------------
  317. bool __fastcall TIFM0010M::IsUpdate()
  318. {
  319. try
  320. {
  321. ItsFacilityManager->FLists.Lock();
  322. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  323. {
  324. if (pObj->Completed && pObj->EditMode != DB_INIT)
  325. return true;
  326. if (!pObj->Completed && pObj->EditMode == DB_NEW)
  327. return true;
  328. }
  329. }
  330. __finally
  331. {
  332. ItsFacilityManager->FLists.UnLock();
  333. }
  334. return false;
  335. }
  336. //---------------------------------------------------------------------------
  337. void __fastcall TIFM0010M::SaveData()
  338. {
  339. if (!IsUpdate()) return;
  340. if (!FUpdate)
  341. {
  342. if (Application->MessageBox(FrmLang->lblEidtConfirm->Caption.c_str(),//L"변경된 정보가 있습니다.\r\n변경된 정보를 저장 하시겠습니까?",
  343. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  344. }
  345. TADOQuery *pADOU = NULL;
  346. TADOQuery *pADOD = NULL;
  347. String sQryU;
  348. String sQryD;
  349. int nEditMode;
  350. try
  351. {
  352. sQryU = "UPDATE TB_FCLT_INFR \r\n"
  353. " SET RFID_ID = :p02, \r\n"
  354. // " FCLT_TYPE = :p03, \r\n"
  355. " FCLT_LCTN = :p04, \r\n"
  356. " RSCE_YN = :p05, \r\n"
  357. " MDL_NM = :p06, \r\n"
  358. " USE_YEAR = :p07, \r\n"
  359. " INWR_DT = :p08, \r\n"
  360. " OTWR_DT = :p09, \r\n"
  361. " ISTL_DT = :p10, \r\n"
  362. " TAKT_DT = :p11, \r\n"
  363. " TAKT_RESN = :p12, \r\n"
  364. " TAKN_DT = :p13, \r\n"
  365. " ABDN_DT = :p14, \r\n"
  366. // " ADTN_NM = :p15, \r\n"
  367. // " ADTN_DT = :p16, \r\n"
  368. " CHNG_NM = :p17, \r\n"
  369. " CHNG_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS'), \r\n"
  370. " AMT = :p18, \r\n"
  371. // " DEL_YN = :p19, \r\n"
  372. " ISTL_CMPY_ID = :p20, \r\n"
  373. " MNFC_CMPY_ID = :p21, \r\n"
  374. " ISTL_LCTN_ADDR = :p22 \r\n"
  375. " WHERE FCLT_ID = :p01 \r\n";
  376. sQryD = "UPDATE TB_FCLT_INFR \r\n"
  377. " SET DEL_YN = 'Y', \r\n"
  378. " CHNG_NM = :p02, \r\n"
  379. " CHNG_DT = TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') \r\n"
  380. " WHERE FCLT_ID = :p01 \r\n";
  381. int nRow;
  382. FRAMEFacilityList1->TvList->BeginUpdate();
  383. try
  384. {
  385. pADOU = new TADOQuery(NULL);
  386. pADOU->Close();
  387. pADOU->Connection = ITSDb_GetConnection();
  388. pADOD = new TADOQuery(NULL);
  389. pADOD->Close();
  390. pADOD->Connection = ITSDb_GetConnection();
  391. ITSDb_SQLText(pADOU, sQryU);
  392. ITSDb_SQLText(pADOD, sQryD);
  393. ITSDb_GetConnection()->BeginTrans();
  394. try
  395. {
  396. ItsFacilityManager->FLists.Lock();
  397. FOR_STL(TItsFacility*, pObj, ItsFacilityManager->FLists)
  398. {
  399. if (pObj->GridIndex < 0) continue;
  400. if (pObj->Completed && pObj->EditMode == DB_INIT)
  401. continue;
  402. if (!pObj->Completed && pObj->EditMode != DB_NEW)
  403. continue;
  404. nRow = pObj->GridIndex;
  405. String sRfId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column03->Index]); // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  406. String sRsceYn = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column06->Index]); // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  407. String sModelNm = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column07->Index]); // MDL_NM VARCHAR(30 BYTE) '모델명';
  408. String sUseYear = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column08->Index]); // USE_YEAR NUMBER(3) '사용년수';
  409. String sTaktResn = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column13->Index]); // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  410. String sISTL_LCTN_ADDR = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column24->Index]);
  411. String sInwr = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  412. String sOtwr = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  413. String sIstl = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  414. String sTakt = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  415. String sTakn = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  416. String sAbdn = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  417. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column09->Index])) // INWR_DT VARCHAR(14 BYTE) '입고일시';
  418. {
  419. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column09->Index];
  420. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  421. }
  422. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column10->Index])) // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  423. {
  424. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column10->Index];
  425. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  426. }
  427. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column11->Index])) // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  428. {
  429. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column11->Index];
  430. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  431. }
  432. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column12->Index])) // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  433. {
  434. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column12->Index];
  435. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  436. }
  437. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column14->Index])) // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  438. {
  439. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column14->Index];
  440. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  441. }
  442. if (!VarIsNull(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column15->Index])) // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  443. {
  444. TDateTime dtTmp = m_pGDC1->Values[nRow][FRAMEFacilityList1->Column15->Index];
  445. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  446. }
  447. String sAmt = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column20->Index]); // AMT NUMBER(15), '금액';
  448. String sInsCmpId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column22->Index]); // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  449. String sPrcCmpId = VarToStr(m_pGDC1->Values[nRow][FRAMEFacilityList1->Column23->Index]); // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  450. sInsCmpId = ITSUtil_GetCode(sInsCmpId);
  451. sPrcCmpId = ITSUtil_GetCode(sPrcCmpId);
  452. //pObj->FFCLT_ID = pADO->FieldByName("FCLT_ID")->AsString;
  453. pObj->RFID_ID = sRfId;
  454. //pObj->FFCLT_TYPE = pADO->FieldByName("FCLT_TYPE")->AsString;
  455. //pObj->FFCLT_LCTN = pADO->FieldByName("FCLT_LCTN")->AsString;
  456. pObj->RSCE_YN = sRsceYn;
  457. pObj->MDL_NM = sModelNm;
  458. pObj->USE_YEAR = sUseYear;
  459. pObj->INWR_DT = sInwr;
  460. pObj->OTWR_DT = sOtwr;
  461. pObj->ISTL_DT = sIstl;
  462. pObj->TAKT_DT = sTakt;
  463. pObj->TAKT_RESN = sTaktResn;
  464. pObj->TAKN_DT = sTakn;
  465. pObj->ABDN_DT = sAbdn;
  466. //pObj->ADTN_NM = pADO->FieldByName("ADTN_NM")->AsString;
  467. //pObj->ADTN_DT = pADO->FieldByName("ADTN_DT")->AsString;
  468. pObj->CHNG_NM = g_pLOGIN->sUserId;
  469. pObj->CHNG_DT = Now().FormatString("YYYYMMDDHHNNSS");
  470. pObj->AMT = sAmt;
  471. //pObj->FDEL_YN = pADO->FieldByName("DEL_YN")->AsString;
  472. pObj->ISTL_CMPY_ID = sInsCmpId;
  473. pObj->MNFC_CMPY_ID = sPrcCmpId;
  474. pObj->ISTL_LCTN_ADDR = sISTL_LCTN_ADDR;
  475. nEditMode = pObj->EditMode;
  476. if (pObj->Completed)
  477. {
  478. if (pObj->EditMode == DB_DELETE)
  479. {
  480. //delete
  481. ITSDb_SQLBind(pADOD, "p01", pObj->FCLT_ID);
  482. ITSDb_SQLBind(pADOD, "p02", g_pLOGIN->sUserId);
  483. ITSDb_SQLExec(pADOD);
  484. pObj->DEL_YN = "Y";
  485. }
  486. else
  487. if (pObj->EditMode == DB_UPDATE)
  488. {
  489. //update
  490. ITSDb_SQLBind(pADOU, "p01", pObj->FCLT_ID);
  491. ITSDb_SQLBind(pADOU, "p02", pObj->RFID_ID);
  492. //ITSDb_SQLBind(pADOU, "p03", pObj->FCLT_TYPE);
  493. ITSDb_SQLBind(pADOU, "p04", pObj->FCLT_LCTN);
  494. ITSDb_SQLBind(pADOU, "p05", pObj->RSCE_YN);
  495. ITSDb_SQLBind(pADOU, "p06", pObj->MDL_NM);
  496. ITSDb_SQLBind(pADOU, "p07", pObj->USE_YEAR);
  497. ITSDb_SQLBind(pADOU, "p08", pObj->INWR_DT);
  498. ITSDb_SQLBind(pADOU, "p09", pObj->OTWR_DT);
  499. ITSDb_SQLBind(pADOU, "p10", pObj->ISTL_DT);
  500. ITSDb_SQLBind(pADOU, "p11", pObj->TAKT_DT);
  501. ITSDb_SQLBind(pADOU, "p12", pObj->TAKT_RESN);
  502. ITSDb_SQLBind(pADOU, "p13", pObj->TAKN_DT);
  503. ITSDb_SQLBind(pADOU, "p14", pObj->ABDN_DT);
  504. //ITSDb_SQLBind(pADOU, "p15", pObj->ADTN_NM);
  505. //ITSDb_SQLBind(pADOU, "p16", pObj->ADTN_DT);
  506. ITSDb_SQLBind(pADOU, "p17", g_pLOGIN->sUserId);
  507. ITSDb_SQLBind(pADOU, "p18", pObj->AMT);
  508. //ITSDb_SQLBind(pADOU, "p19", pObj->DEL_YN);
  509. ITSDb_SQLBind(pADOU, "p20", pObj->ISTL_CMPY_ID);
  510. ITSDb_SQLBind(pADOU, "p21", pObj->MNFC_CMPY_ID);
  511. ITSDb_SQLBind(pADOU, "p22", pObj->ISTL_LCTN_ADDR);
  512. ITSDb_SQLExec(pADOU);
  513. pObj->DEL_YN = "N";
  514. }
  515. }
  516. pObj->Completed = true;
  517. }
  518. }
  519. __finally
  520. {
  521. ItsFacilityManager->FLists.UnLock();
  522. }
  523. ITSDb_GetConnection()->CommitTrans();
  524. FDbUpdate = true;
  525. Application->MessageBox(cxLabel4->Caption.c_str(), //L"변경된 시설물 정보를 저장 하였습니다.",
  526. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  527. }
  528. catch(EDatabaseError &E)
  529. {
  530. ITSDb_GetConnection()->RollbackTrans();
  531. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  532. if (nEditMode == DB_DELETE)
  533. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQryD);
  534. else
  535. if (nEditMode == DB_UPDATE)
  536. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQryU);
  537. throw Exception(String(E.ClassName()) + E.Message);
  538. }
  539. catch(Exception &e)
  540. {
  541. ITSDb_GetConnection()->RollbackTrans();
  542. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  543. if (nEditMode == DB_DELETE)
  544. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQryD);
  545. else
  546. if (nEditMode == DB_UPDATE)
  547. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQryU);
  548. throw Exception(String(e.ClassName()) + e.Message);
  549. }
  550. }
  551. __finally
  552. {
  553. if (pADOU)
  554. {
  555. pADOU->Close();
  556. delete pADOU;
  557. }
  558. if (pADOD)
  559. {
  560. pADOD->Close();
  561. delete pADOD;
  562. }
  563. FRAMEFacilityList1->TvList->EndUpdate();
  564. }
  565. ItsFacilityManager->LoadFromDb();
  566. }
  567. //---------------------------------------------------------------------------
  568. void __fastcall TIFM0010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  569. {
  570. SaveData();
  571. if (FDbUpdate)
  572. {
  573. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_03, 0);
  574. }
  575. if (ItsCompanyManager)
  576. {
  577. ItsCompanyManager->FLists.RemoveAll();
  578. //delete ItsCompanyManager;
  579. //ItsCompanyManager = NULL;
  580. }
  581. }
  582. //---------------------------------------------------------------------------
  583. void __fastcall TIFM0010M::FRAMEFacilityList1ColumnPropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText,
  584. bool &Error)
  585. {
  586. if (FRAMEFacilityList1->TvList->Controller->FocusedRow->IsFilterRow) return;
  587. int nIndex = m_pGDC1->FocusedRecordIndex;
  588. if (nIndex < 0) return;
  589. int nMemPtr = FRAMEFacilityList1->TvList->DataController->Values[nIndex][FRAMEFacilityList1->Column99->Index];
  590. TItsFacility *pObj = (TItsFacility*)nMemPtr;
  591. if (pObj->Completed == false)
  592. {
  593. //신규이거나 삭제인 경우 편집 내용에 따른 변화가 필요없다.
  594. return;
  595. }
  596. String sRfId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column03->Index]); // RFID_ID VARCHAR(50 BYTE) NOT NULL, '시설물 ID';
  597. String sRsceYn = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column06->Index]); // RSCE_YN CHAR(1 BYTE) DEFAULT 'N', '현장자산유무';
  598. String sModelNm = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column07->Index]); // MDL_NM VARCHAR(30 BYTE) '모델명';
  599. String sUseYear = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column08->Index]); // USE_YEAR NUMBER(3) '사용년수';
  600. String sTaktResn = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column13->Index]); // TAKT_RESN VARCHAR(100 BYTE) '반출사유';
  601. String sISTL_LCTN_ADDR = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column24->Index]);
  602. String sInwr = ""; // INWR_DT VARCHAR(14 BYTE) '입고일시';
  603. String sOtwr = ""; // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  604. String sIstl = ""; // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  605. String sTakt = ""; // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  606. String sTakn = ""; // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  607. String sAbdn = ""; // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  608. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column09->Index])) // INWR_DT VARCHAR(14 BYTE) '입고일시';
  609. {
  610. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column09->Index];
  611. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  612. }
  613. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column10->Index])) // OTWR_DT VARCHAR(14 BYTE) '출고일시';
  614. {
  615. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column10->Index];
  616. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  617. }
  618. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column11->Index])) // ISTL_DT VARCHAR(14 BYTE) '설치일시';
  619. {
  620. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column11->Index];
  621. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  622. }
  623. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column12->Index])) // TAKT_DT VARCHAR(14 BYTE) '반출일시';
  624. {
  625. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column12->Index];
  626. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  627. }
  628. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column14->Index])) // TAKN_DT VARCHAR(14 BYTE) '반입일시';
  629. {
  630. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column14->Index];
  631. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  632. }
  633. if (!VarIsNull(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column15->Index])) // ABDN_DT VARCHAR(14 BYTE) '폐기일시';
  634. {
  635. TDateTime dtTmp = m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column15->Index];
  636. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  637. }
  638. String sAmt = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column20->Index]); // AMT NUMBER(15), '금액';
  639. String sInsCmpId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column22->Index]); // ISTL_CMPY_ID VARCHAR(30 BYTE) '설치업체ID';
  640. String sPrcCmpId = VarToStr(m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column23->Index]); // PRDC_CMPY_ID VARCHAR(30 BYTE) '제조업체ID';
  641. TcxGridColumn *pColumn = FRAMEFacilityList1->TvList->Controller->FocusedColumn;
  642. if (pColumn == FRAMEFacilityList1->Column03)
  643. sRfId = DisplayValue;
  644. else
  645. if (pColumn == FRAMEFacilityList1->Column06)
  646. sRsceYn = DisplayValue;
  647. else
  648. if (pColumn == FRAMEFacilityList1->Column07)
  649. sModelNm = DisplayValue;
  650. else
  651. if (pColumn == FRAMEFacilityList1->Column08)
  652. sUseYear= DisplayValue;
  653. else
  654. if (pColumn == FRAMEFacilityList1->Column09)
  655. {
  656. TDateTime dtTmp = DisplayValue;
  657. sInwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  658. }
  659. else
  660. if (pColumn == FRAMEFacilityList1->Column10)
  661. {
  662. TDateTime dtTmp = DisplayValue;
  663. sOtwr = dtTmp.FormatString("YYYYMMDDHHNNSS");
  664. }
  665. else
  666. if (pColumn == FRAMEFacilityList1->Column11)
  667. {
  668. TDateTime dtTmp = DisplayValue;
  669. sIstl = dtTmp.FormatString("YYYYMMDDHHNNSS");
  670. }
  671. else
  672. if (pColumn == FRAMEFacilityList1->Column12)
  673. {
  674. TDateTime dtTmp = DisplayValue;
  675. sTakt = dtTmp.FormatString("YYYYMMDDHHNNSS");
  676. }
  677. else
  678. if (pColumn == FRAMEFacilityList1->Column13)
  679. {
  680. sTaktResn = DisplayValue;
  681. }
  682. else
  683. if (pColumn == FRAMEFacilityList1->Column14)
  684. {
  685. TDateTime dtTmp = DisplayValue;
  686. sTakn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  687. }
  688. else
  689. if (pColumn == FRAMEFacilityList1->Column15)
  690. {
  691. TDateTime dtTmp = DisplayValue;
  692. sAbdn = dtTmp.FormatString("YYYYMMDDHHNNSS");
  693. }
  694. else
  695. if (pColumn == FRAMEFacilityList1->Column20)
  696. sAmt = DisplayValue;
  697. else
  698. if (pColumn == FRAMEFacilityList1->Column22)
  699. {
  700. sInsCmpId = DisplayValue;
  701. }
  702. else
  703. if (pColumn == FRAMEFacilityList1->Column23)
  704. {
  705. sPrcCmpId = DisplayValue;
  706. }
  707. else
  708. if (pColumn == FRAMEFacilityList1->Column24)
  709. {
  710. sISTL_LCTN_ADDR = DisplayValue;
  711. }
  712. sInsCmpId = ITSUtil_GetCode(sInsCmpId); //마지막에 해준다.
  713. sPrcCmpId = ITSUtil_GetCode(sPrcCmpId); //마지막에 해준다.
  714. if (pObj->RFID_ID != sRfId ||
  715. pObj->RSCE_YN != sRsceYn ||
  716. pObj->MDL_NM != sModelNm ||
  717. pObj->USE_YEAR != sUseYear ||
  718. pObj->INWR_DT != sInwr ||
  719. pObj->OTWR_DT != sOtwr ||
  720. pObj->ISTL_DT != sIstl ||
  721. pObj->TAKT_DT != sTakt ||
  722. pObj->TAKT_RESN != sTaktResn ||
  723. pObj->TAKN_DT != sTakn ||
  724. pObj->ABDN_DT != sAbdn ||
  725. pObj->AMT != sAmt ||
  726. pObj->ISTL_CMPY_ID != sInsCmpId ||
  727. pObj->ISTL_LCTN_ADDR != sISTL_LCTN_ADDR ||
  728. pObj->MNFC_CMPY_ID != sPrcCmpId )
  729. {
  730. m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column01->Index] = FrmLang->lblModify->Caption;//"수정";
  731. pObj->EditMode = DB_UPDATE;
  732. }
  733. else
  734. {
  735. m_pGDC1->Values[nIndex][FRAMEFacilityList1->Column01->Index] = "-";
  736. pObj->EditMode = DB_INIT;
  737. }
  738. }
  739. //---------------------------------------------------------------------------