VMSM540MF.cpp 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <IOUtils.hpp>
  4. #include "ITSSkinF.h"
  5. #include "ITSUtilF.h"
  6. #include "AppGlobalF.h"
  7. #pragma hdrstop
  8. #include "VMSM540MF.h"
  9. #include "FrmVmsMsgFormMngrF.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "cxButtons"
  13. #pragma link "cxCalendar"
  14. #pragma link "cxContainer"
  15. #pragma link "cxControls"
  16. #pragma link "cxDropDownEdit"
  17. #pragma link "cxEdit"
  18. #pragma link "cxGraphics"
  19. #pragma link "cxGroupBox"
  20. #pragma link "cxLabel"
  21. #pragma link "cxLookAndFeelPainters"
  22. #pragma link "cxLookAndFeels"
  23. #pragma link "cxMaskEdit"
  24. #pragma link "cxPC"
  25. #pragma link "cxPCdxBarPopupMenu"
  26. #pragma link "cxSpinEdit"
  27. #pragma link "cxSplitter"
  28. #pragma link "cxTextEdit"
  29. #pragma link "cxTimeEdit"
  30. #pragma link "dxSkinBlack"
  31. #pragma link "dxSkinBlue"
  32. #pragma link "dxSkinCaramel"
  33. #pragma link "dxSkinCoffee"
  34. #pragma link "dxSkinDarkRoom"
  35. #pragma link "dxSkinDarkSide"
  36. #pragma link "dxSkinFoggy"
  37. #pragma link "dxSkinGlassOceans"
  38. #pragma link "dxSkiniMaginary"
  39. #pragma link "dxSkinLilian"
  40. #pragma link "dxSkinLiquidSky"
  41. #pragma link "dxSkinLondonLiquidSky"
  42. #pragma link "dxSkinMcSkin"
  43. #pragma link "dxSkinMoneyTwins"
  44. #pragma link "dxSkinOffice2007Black"
  45. #pragma link "dxSkinOffice2007Blue"
  46. #pragma link "dxSkinOffice2007Green"
  47. #pragma link "dxSkinOffice2007Pink"
  48. #pragma link "dxSkinOffice2007Silver"
  49. #pragma link "dxSkinOffice2010Black"
  50. #pragma link "dxSkinOffice2010Blue"
  51. #pragma link "dxSkinOffice2010Silver"
  52. #pragma link "dxSkinsCore"
  53. #pragma link "dxSkinscxPCPainter"
  54. #pragma link "dxSkinSeven"
  55. #pragma link "dxSkinSharp"
  56. #pragma link "dxSkinSilver"
  57. #pragma link "dxSkinStardust"
  58. #pragma link "cxRadioGroup"
  59. #pragma link "cxClasses"
  60. #pragma link "cxCustomData"
  61. #pragma link "cxData"
  62. #pragma link "cxDataStorage"
  63. #pragma link "cxDBData"
  64. #pragma link "cxFilter"
  65. #pragma link "cxGrid"
  66. #pragma link "cxGridCustomTableView"
  67. #pragma link "cxGridCustomView"
  68. #pragma link "cxGridDBTableView"
  69. #pragma link "cxGridLevel"
  70. #pragma link "cxGridTableView"
  71. #pragma link "cxStyles"
  72. #pragma link "cxCheckBox"
  73. #pragma link "cxImage"
  74. #pragma link "cxButtonEdit"
  75. #pragma link "cxBlobEdit"
  76. #pragma link "VmsDesignerF"
  77. #pragma link "cxCalc"
  78. #pragma resource "*.dfm"
  79. TVMSM540M *VMSM540M = NULL;
  80. //---------------------------------------------------------------------------
  81. __fastcall TVMSM540M::TVMSM540M(TComponent* Owner)
  82. : TForm(Owner)
  83. {
  84. ITSSkin_Load(this);
  85. ////CMM_LoadForm(g_sFormsDir, this);
  86. FTitle = Caption;
  87. m_bSelected = false;
  88. PnlOrg->ParentColor = false;
  89. PnlCopy1->ParentColor = false;
  90. PnlOrg->Color = clBlack;
  91. PnlCopy1->Color = clBlack;
  92. //PnlCopyForm1->ParentColor = false;
  93. //PnlCopyForm1->Color = clBlack;
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TVMSM540M::CommClose()
  97. {
  98. try {
  99. ////CMM_SaveForm(g_sFormsDir, this);
  100. SAFE_DELETE(m_pEdtDesigner1);
  101. CComm_Terminate();
  102. }
  103. catch(...) {
  104. }
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TVMSM540M::FormShow(TObject *Sender)
  108. {
  109. int nResult = CComm_Initialize((long)Handle, g_AppCfg.PRCS_ID, "P04010", 0);
  110. m_pEdtDesigner1 = new TVmsFormDesigner(PnlCopyForm1);
  111. m_pEdtDesigner1->ApplicationHandle = (long)Handle;
  112. FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors)
  113. {
  114. m_pEdtDesigner1->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL);
  115. }
  116. FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors)
  117. {
  118. m_pEdtDesigner1->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL);
  119. }
  120. FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames)
  121. {
  122. m_pEdtDesigner1->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM);
  123. }
  124. Refresh();
  125. FormInit();
  126. TmrShow->Enabled = true;
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TVMSM540M::FormInit()
  130. {
  131. if (!CenterCommManager) {
  132. CenterCommManager = new TCenterCommManager();
  133. }
  134. CenterCommManager->LoadFromDb(g_AppCfg.PRCS_ID);
  135. FCommCtrlTarget = CenterCommManager->FLists.Find("24"); // 긴급문안등록
  136. if (FVmsFormType == FORM_TYPE_EMER) {
  137. GrpMessage->Caption = "▶ 메시지 수동표출 *** 긴급메시지";
  138. }
  139. else {
  140. GrpMessage->Caption = "▶ 메시지 수동표출 *** 홍보메시지";
  141. }
  142. TDateTime dtEnd = Now() + ((double)1 / (double)24);
  143. DtStrDate->Date = Now();
  144. DtEndDate->Date = dtEnd;
  145. DtStrTime->Time = Now();
  146. DtEndTime->Time = dtEnd;
  147. BtnSaveMessage->Enabled = false;
  148. ChkCopy1->Checked = false;
  149. ChkCopy1->Enabled = false;
  150. BtnCenter->Enabled = false;
  151. BtnFit->Enabled = false;
  152. if (FVmsModlKind == "F1824_16") {
  153. GrpOrg->Caption = "▶ 폼 원본 (F1824_16) - " + FVmsFormId;
  154. GrpCopy1->Caption = "▶ 복사할 모듈 폼 (F2026_16)";
  155. formW = 384;
  156. formH = 288;
  157. copyW1 = 416;
  158. copyH1 = 320;
  159. FVmsModlKind_1 = "F2026_16";
  160. }
  161. else
  162. if (FVmsModlKind == "F2026_16") {
  163. GrpOrg->Caption = "▶ 폼 원본 (F2026_16)";
  164. GrpCopy1->Caption = "▶ 복사할 모듈 폼 (F1824_16)";
  165. formW = 416;
  166. formH = 320;
  167. copyW1 = 384;
  168. copyH1 = 288;
  169. FVmsModlKind_1 = "F1824_16";
  170. }
  171. PnlOrg->Width = formW+4;
  172. PnlOrg->Height= formH+4;
  173. PnlCopy1->Width = copyW1+4;
  174. PnlCopy1->Height= copyH1+4;
  175. ImgOrg->Width = formW;
  176. ImgOrg->Height = formH;
  177. ImgOrg->Picture->Bitmap->Width = formW;
  178. ImgOrg->Picture->Bitmap->Height = formH;
  179. ImgOrg->Picture->Bitmap->Assign(ImgForm->Picture->Bitmap);
  180. //ImgCopy1->Picture->Bitmap->Assign(ImgForm->Picture->Bitmap);
  181. m_pEdtDesigner1->Clear();
  182. m_pEdtDesigner1->SizeType = FVmsModlKind;
  183. m_pEdtDesigner1->SetSize(copyW1, copyH1);
  184. m_pEdtDesigner1->SetPos(0, 0);
  185. m_pEdtDesigner1->BkColorCode = FBkColorCode;
  186. m_pEdtDesigner1->SetBkColor(m_pEdtDesigner1->BkColorCode);
  187. m_pEdtDesigner1->EditMode = false;
  188. m_pEdtDesigner1->Show();
  189. m_pObj1 = m_pEdtDesigner1->AddObject(odtBmp);
  190. if (!m_pObj1) {
  191. String errMsg = "폼 복사 객체 처리 중에 오류가 발생했습니다.";
  192. Application->MessageBox(errMsg.c_str(), L"폼 복사 객체 추가 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  193. return;
  194. }
  195. m_pObj1->ObjSeq = 1;
  196. m_pObj1->ObjId = "1";
  197. m_pObj1->ObjKind = FORM_OBJ_KIND_IMAGE;
  198. m_pObj1->ObjType = m_pObj1->ObjKind;
  199. m_pObj1->ObjSize = 0;
  200. m_pObj1->ObjSize = ImgForm->Picture->Bitmap->Width * ImgForm->Picture->Bitmap->Height;
  201. m_pObj1->BkColorCode = m_pEdtDesigner1->BkColorCode;
  202. m_pObj1->Blink = false;
  203. m_pObj1->Tag = "N";
  204. m_pObj1->Text = "폼이미지";
  205. m_pObj1->ImageId = m_pObj1->ObjId;
  206. m_pObj1->SetSize(copyW1, copyH1);
  207. m_pObj1->GetImage()->AutoSize= false;
  208. m_pObj1->GetImage()->Stretch = true;
  209. m_pObj1->GetImage()->Width = copyW1;
  210. m_pObj1->GetImage()->Height = copyH1;
  211. m_pObj1->SetSize(copyW1, copyH1);
  212. m_pObj1->SetPos(0, 0);
  213. //m_pObj1->GetImage()->Picture->Bitmap->Assign(ImgForm->Picture->Bitmap);
  214. m_pObj1->GetImage()->Picture->LoadFromFile(FImageFileName);
  215. //m_pObj1->GetImage()->Center = true;
  216. if (m_pObj1->Left < 0) m_pObj1->Left = 0;
  217. if (m_pObj1->Top < 0) m_pObj1->Top = 0;
  218. m_pObj1->Show();
  219. m_pObj1->BringToFront();
  220. ChkCopy1->Checked = true;
  221. ChkCopy1->Enabled = true;
  222. BtnCenter->Enabled = true;
  223. BtnFit->Enabled = true;
  224. m_pGDC = TvList->DataController;
  225. CMM_ClearGridTableView(TvList);
  226. TvList->BeginUpdate();
  227. try {
  228. VmsCtlrManager->FLists.Lock();
  229. FillVmsListByModlType(FVmsModlKind, FVmsFormId);
  230. FillVmsListByModlType(FVmsModlKind_1, "");
  231. }
  232. __finally
  233. {
  234. VmsCtlrManager->FLists.UnLock();
  235. TvList->EndUpdate();
  236. TvList->DataController->GotoFirst();
  237. TvList->DataController->FocusedRecordIndex = 0;
  238. }
  239. }
  240. //---------------------------------------------------------------------------
  241. void __fastcall TVMSM540M::FillVmsListByModlType(String AModlType, String AFormId)
  242. {
  243. int nRow = 0;
  244. FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists)
  245. {
  246. if (pObj->USE_YN != "Y") continue;
  247. if (pObj->VMS_MODL_KIND != AModlType) continue;
  248. nRow = m_pGDC->AppendRecord();
  249. m_pGDC->Values[nRow][ColumnSel->Index] = true;
  250. m_pGDC->Values[nRow][Column00->Index] = "-";
  251. m_pGDC->Values[nRow][Column01->Index] = pObj->VMS_CTLR_ID;
  252. m_pGDC->Values[nRow][Column02->Index] = pObj->VMS_NM;
  253. m_pGDC->Values[nRow][Column03->Index] = pObj->VMS_TYPE_NM;
  254. m_pGDC->Values[nRow][Column11->Index] = pObj->LCS_CTLR_ID;
  255. m_pGDC->Values[nRow][Column12->Index] = pObj->VMS_MODL_KIND;
  256. m_pGDC->Values[nRow][Column13->Index] = AFormId;
  257. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  258. }
  259. }
  260. //---------------------------------------------------------------------------
  261. void __fastcall TVMSM540M::UpdateVmsFormId(String AModlType, String AFormId)
  262. {
  263. try {
  264. TvList->BeginUpdate();
  265. try {
  266. for(int nRow = 0; nRow < m_pGDC->RecordCount; nRow++) {
  267. String sVmsModlKind = VarToStr(m_pGDC->Values[nRow][Column12->Index]);
  268. if (AModlType == sVmsModlKind) {
  269. m_pGDC->Values[nRow][Column13->Index] = AFormId;
  270. }
  271. }
  272. }
  273. catch(Exception &e) {
  274. }
  275. }
  276. __finally {
  277. TvList->EndUpdate();
  278. }
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TVMSM540M::TmrShowTimer(TObject *Sender)
  282. {
  283. TmrShow->Enabled = false;
  284. }
  285. //---------------------------------------------------------------------------
  286. void __fastcall TVMSM540M::BtnCloseClick(TObject *Sender)
  287. {
  288. Close();
  289. }
  290. //---------------------------------------------------------------------------
  291. void __fastcall TVMSM540M::FormClose(TObject *Sender, TCloseAction &Action)
  292. {
  293. CommClose();
  294. VMSM540M = NULL;
  295. Action = caFree;
  296. }
  297. //---------------------------------------------------------------------------
  298. void __fastcall TVMSM540M::BtnCenterClick(TObject *Sender)
  299. {
  300. m_pObj1->GetImage()->AutoSize= false;
  301. m_pObj1->GetImage()->Stretch = false;
  302. m_pObj1->GetImage()->Center = true;
  303. EdFocus->SetFocus();
  304. }
  305. //---------------------------------------------------------------------------
  306. void __fastcall TVMSM540M::BtnFitClick(TObject *Sender)
  307. {
  308. m_pObj1->GetImage()->AutoSize= false;
  309. m_pObj1->GetImage()->Stretch = true;
  310. m_pObj1->GetImage()->Transparent = false;
  311. EdFocus->SetFocus();
  312. }
  313. //---------------------------------------------------------------------------
  314. int __fastcall TVMSM540M::GetImageFileSize(String AFileName)
  315. {
  316. int nImageSize = 0;
  317. TMemoryStream *pPicStream = new TMemoryStream();
  318. try {
  319. try {
  320. pPicStream->LoadFromFile(AFileName);
  321. nImageSize = pPicStream->Size;
  322. }
  323. catch(Exception &e) {
  324. String errMsg = "이미지 파일 처리 중에 오류가 발생했습니다.\r\n" + e.Message;
  325. Application->MessageBox(errMsg.c_str(), L"이미지 파일 크기 확인 실패", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  326. return nImageSize;
  327. }
  328. }
  329. __finally {
  330. SAFE_DELETE(pPicStream);
  331. }
  332. return nImageSize;
  333. }
  334. //---------------------------------------------------------------------------
  335. void __fastcall TVMSM540M::BtnSaveClick(TObject *Sender)
  336. {
  337. if (!ChkCopy1->Checked) {
  338. String errMsg = "폼을 복사 할 모듈이 선택 되지 않았습니다.\r\n복사할 모듈 폼에서 '폼 저장' 을 체크해 주세요.";
  339. Application->MessageBox(errMsg.c_str(), L"모듈 폼 복사 추가", MB_OK|MB_ICONERROR|MB_APPLMODAL);
  340. return;
  341. }
  342. m_pEdtDesigner1->GetVmsFormImage(ImgCopy1);
  343. VMS_FORM_ID_1 = FrmVmsMsgFormMngr->GetNextVmsFormId(FVmsFormType);
  344. PICT_VMS_FORM_OBJ_ID_1 = FrmVmsMsgFormMngr->GetNewVmsFormPictObjId();
  345. String imageFileName;
  346. String saveDirPath = TPath::GetTempPath() + "VMS\\";
  347. ForceDirectories(saveDirPath.c_str());
  348. imageFileName = saveDirPath + VMS_FORM_ID_1 + "_8.bmp";
  349. ImgCopy1->Picture->SaveToFile(imageFileName);
  350. int nImageSize = GetImageFileSize(imageFileName);
  351. if (!FrmVmsMsgFormMngr->InsertVmsSymbLib(PICT_VMS_FORM_OBJ_ID_1, VMS_FORM_ID_1, "B", nImageSize, copyW1, copyH1, "Y", imageFileName)) {
  352. Application->MessageBox(L"VMS 모듈 폼 오브젝트 추가 실패\r\nVMS 모듈 폼 정보를 복사 추가 하는데 실패 하였습니다.",
  353. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  354. return;
  355. }
  356. bool bResult = false;
  357. ITSDb_GetConnection()->BeginTrans();
  358. bResult = SaveVmsForm(VMS_FORM_ID_1, FVmsModlKind_1, ImgCopy1);
  359. if (bResult) {
  360. bResult = SaveVmsFormObject(VMS_FORM_ID_1, FVmsModlKind_1, PICT_VMS_FORM_OBJ_ID_1, copyW1, copyH1, ChkBlinking1->Checked ? "Y" : "N");
  361. }
  362. if (bResult) {
  363. ITSDb_GetConnection()->CommitTrans();
  364. Application->MessageBox(L"VMS 모듈 폼 복사 추가\r\nVMS 모듈 폼 정보를 복사 추가 하였습니다.",
  365. FTitle.c_str(),
  366. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  367. GrpCopy1->Caption = GrpCopy1->Caption + " - " + VMS_FORM_ID_1;
  368. UpdateVmsFormId(FVmsModlKind_1, VMS_FORM_ID_1);
  369. BtnSave->Enabled = false;
  370. BtnSaveMessage->Enabled = true;
  371. }
  372. else {
  373. ITSDb_GetConnection()->RollbackTrans();
  374. Application->MessageBox(L"VMS 모듈 폼 복사 추가 실패\r\nVMS 모듈 폼 정보를 복사 추가 하는데 실패 하였습니다.",
  375. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  376. }
  377. }
  378. //---------------------------------------------------------------------------
  379. bool __fastcall TVMSM540M::SaveVmsForm(String AVMS_FORM_ID, String AVMS_MODL_KIND, TImage *AImgForm)
  380. {
  381. String sQry;
  382. TADOQuery *pADO = NULL;
  383. String VMS_FORM_ID = AVMS_FORM_ID;
  384. String VMS_MODL_KIND = AVMS_MODL_KIND;
  385. String VMS_FORM_TYPE = FVmsFormType;
  386. String VMS_FORM_NM = FVmsFormNm;
  387. String DSPL_EFF = FDsplEff;
  388. int DSPL_HR = FDsplHr;
  389. String BACK_CLR = FBkColorCode;
  390. String OPER_ID = g_AppCfg.OPER_ID;
  391. if (BACK_CLR == "0") BACK_CLR = "00";
  392. sQry = "MERGE INTO TB_VMS_FORM L \r\n"
  393. "USING (SELECT :p01 AS VMS_FORM_ID, \r\n"
  394. " :p02 AS VMS_MODL_KIND, \r\n"
  395. " :p03 AS VMS_FORM_TYPE, \r\n"
  396. " :p04 AS VMS_FORM_NM, \r\n"
  397. " :p05 AS DSPL_EFF, \r\n"
  398. " :p06 AS DSPL_HR, \r\n"
  399. " :p07 AS BACK_CLR, \r\n"
  400. " :p08 AS OPER_ID \r\n"
  401. " FROM DUAL) M \r\n"
  402. " ON (L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  403. "WHEN MATCHED THEN \r\n"
  404. " UPDATE SET L.VMS_MODL_KIND = M.VMS_MODL_KIND, \r\n"
  405. " L.VMS_FORM_TYPE = M.VMS_FORM_TYPE, \r\n"
  406. " L.VMS_FORM_NM = M.VMS_FORM_NM, \r\n"
  407. " L.DSPL_EFF = M.DSPL_EFF, \r\n"
  408. " L.DSPL_HR = M.DSPL_HR, \r\n"
  409. " L.BACK_CLR = M.BACK_CLR, \r\n"
  410. " L.CHNGR_ID = M.OPER_ID, \r\n"
  411. " L.CHG_DT = SYSDATE \r\n"
  412. "WHEN NOT MATCHED THEN \r\n"
  413. " INSERT (VMS_FORM_ID, \r\n"
  414. " VMS_MODL_KIND, \r\n"
  415. " VMS_FORM_TYPE, \r\n"
  416. " VMS_FORM_NM, \r\n"
  417. " DSPL_EFF, \r\n"
  418. " DSPL_HR, \r\n"
  419. " BACK_CLR, \r\n"
  420. " RGSTR_ID, \r\n"
  421. " REG_DT ) \r\n"
  422. " VALUES (M.VMS_FORM_ID, \r\n"
  423. " M.VMS_MODL_KIND, \r\n"
  424. " M.VMS_FORM_TYPE, \r\n"
  425. " M.VMS_FORM_NM, \r\n"
  426. " M.DSPL_EFF, \r\n"
  427. " M.DSPL_HR, \r\n"
  428. " M.BACK_CLR, \r\n"
  429. " M.OPER_ID, \r\n"
  430. " SYSDATE ) \r\n";
  431. TMemoryStream *dataStream = new TMemoryStream();
  432. AImgForm->Picture->Bitmap->SaveToStream(dataStream);
  433. try {
  434. try {
  435. pADO = new TADOQuery(NULL);
  436. pADO->Close();
  437. pADO->Connection = ITSDb_GetConnection();
  438. ITSDb_SQLText(pADO, sQry);
  439. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  440. pADO->Parameters->ParamByName("p02")->Value = VMS_MODL_KIND;
  441. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_TYPE;
  442. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_NM;
  443. pADO->Parameters->ParamByName("p05")->DataType = ftString;
  444. pADO->Parameters->ParamByName("p05")->Value = DSPL_EFF;
  445. pADO->Parameters->ParamByName("p06")->Value = DSPL_HR;
  446. pADO->Parameters->ParamByName("p07")->DataType = ftString;
  447. pADO->Parameters->ParamByName("p07")->Value = BACK_CLR;
  448. pADO->Parameters->ParamByName("p08")->DataType = ftString;
  449. pADO->Parameters->ParamByName("p08")->Value = OPER_ID;
  450. ITSDb_SQLExec(pADO);
  451. sQry = "UPDATE TB_VMS_FORM \r\n"
  452. " SET VMS_FORM_IMG = :p02 \r\n"
  453. " WHERE VMS_FORM_ID = :p01 \r\n";
  454. ITSDb_SQLText(pADO, sQry);
  455. ITSDb_SQLBind(pADO, "p01", VMS_FORM_ID);
  456. if (dataStream->Size == 0) {
  457. ITSDb_SQLBind(pADO, "p01", "");
  458. }
  459. else {
  460. pADO->Parameters->ParamByName("p02")->LoadFromStream(dataStream, ftBlob);
  461. }
  462. ITSDb_SQLExec(pADO);
  463. return true;
  464. }
  465. catch(EDatabaseError &E) {
  466. DBERRORMSG("TVMSM540M::SaveVmsForm", String(E.ClassName()), E.Message, sQry);
  467. return false;
  468. }
  469. catch(Exception &e)
  470. {
  471. DBERRORMSG("TVMSM540M::SaveVmsForm", String(e.ClassName()), e.Message, sQry);
  472. return false;
  473. }
  474. }
  475. __finally
  476. {
  477. if (pADO)
  478. {
  479. pADO->Close();
  480. delete pADO;
  481. }
  482. if (dataStream) delete dataStream;
  483. dataStream = NULL;
  484. }
  485. return true;
  486. }
  487. //---------------------------------------------------------------------------
  488. bool __fastcall TVMSM540M::SaveVmsFormObject(String AVMS_FORM_ID, String AVMS_MODL_KIND, String AVMS_FORM_OBJ_ID, int AWdth, int AHght, String AFORM_OBJ_BLNK_YN)
  489. {
  490. String sQry;
  491. TADOQuery *pADO = NULL;
  492. String VMS_FORM_ID = AVMS_FORM_ID;
  493. int SN = 1;
  494. String VMS_FORM_OBJ_KIND = FORM_OBJ_KIND_IMAGE;
  495. String VMS_FORM_OBJ_ID = AVMS_FORM_OBJ_ID;
  496. String BACK_CLR = "00";
  497. int FORM_OBJ_PSTN_X = 0;
  498. int FORM_OBJ_PSTN_Y = 0;
  499. int FORM_OBJ_DSPL_WDTH = AWdth;
  500. int FORM_OBJ_DSPL_HGHT = AHght;
  501. String FORM_OBJ_BLNK_YN = AFORM_OBJ_BLNK_YN;
  502. try {
  503. try {
  504. pADO = new TADOQuery(NULL);
  505. pADO->Close();
  506. pADO->Connection = ITSDb_GetConnection();
  507. // 폼 오브젝트 구성정보 저장
  508. sQry = "INSERT INTO TB_VMS_FORM_VMS_FORM_OBJ ( \r\n"
  509. " VMS_FORM_ID, \r\n"
  510. " SN, \r\n"
  511. " VMS_FORM_OBJ_KIND, \r\n"
  512. " VMS_FORM_OBJ_ID, \r\n"
  513. " BACK_CLR, \r\n"
  514. " FORM_OBJ_PSTN_X, \r\n"
  515. " FORM_OBJ_PSTN_Y, \r\n"
  516. " FORM_OBJ_DSPL_WDTH, \r\n"
  517. " FORM_OBJ_DSPL_HGHT, \r\n"
  518. " FORM_OBJ_BLNK_YN ) \r\n"
  519. " VALUES ( \r\n"
  520. " :p01, \r\n"
  521. " :p02, \r\n"
  522. " :p03, \r\n"
  523. " :p04, \r\n"
  524. " :p05, \r\n"
  525. " :p06, \r\n"
  526. " :p07, \r\n"
  527. " :p08, \r\n"
  528. " :p09, \r\n"
  529. " :p10 ) \r\n";
  530. ITSDb_SQLText(pADO, sQry);
  531. pADO->Parameters->ParamByName("p01")->Value = VMS_FORM_ID;
  532. pADO->Parameters->ParamByName("p02")->Value = SN;
  533. pADO->Parameters->ParamByName("p03")->Value = VMS_FORM_OBJ_KIND;
  534. pADO->Parameters->ParamByName("p04")->Value = VMS_FORM_OBJ_ID;
  535. pADO->Parameters->ParamByName("p05")->Value = BACK_CLR;
  536. pADO->Parameters->ParamByName("p06")->Value = FORM_OBJ_PSTN_X;
  537. pADO->Parameters->ParamByName("p07")->Value = FORM_OBJ_PSTN_Y;
  538. pADO->Parameters->ParamByName("p08")->Value = FORM_OBJ_DSPL_WDTH;
  539. pADO->Parameters->ParamByName("p09")->Value = FORM_OBJ_DSPL_HGHT;
  540. pADO->Parameters->ParamByName("p10")->Value = FORM_OBJ_BLNK_YN;
  541. ITSDb_SQLExec(pADO);
  542. }
  543. catch(EDatabaseError &E) {
  544. DBERRORMSG("TVMSM540M::SaveVmsFormObject", String(E.ClassName()), E.Message, sQry);
  545. return false;
  546. }
  547. catch(Exception &e) {
  548. DBERRORMSG("TVMSM540M::SaveVmsFormObject", String(e.ClassName()), e.Message, sQry);
  549. return false;
  550. }
  551. }
  552. __finally {
  553. if (pADO) {
  554. pADO->Close();
  555. delete pADO;
  556. }
  557. }
  558. return true;
  559. }
  560. //---------------------------------------------------------------------------
  561. void __fastcall TVMSM540M::BtnAllSelectClick(TObject *Sender)
  562. {
  563. TcxButton *pBtn = (TcxButton*)Sender;
  564. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  565. }
  566. //---------------------------------------------------------------------------
  567. void __fastcall TVMSM540M::BtnSaveMessageClick(TObject *Sender)
  568. {
  569. int nSelCnt = GetSelListItems();
  570. if (0 == nSelCnt)
  571. {
  572. Application->MessageBox(L"VMS가 선택되지 않았거나 선택된 VMS에서 VMS 폼 ID 정보가 없습니다.\r\nVMS 목록에서 선택한 VMS와 VMS 폼 ID를 확인 하십시요.",
  573. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  574. CxList->SetFocus();
  575. return;
  576. }
  577. FStrDay = DtStrDate->Date.FormatString("yyyymmdd");
  578. FStrTime = DtStrTime->DateTime.FormatString("HHnn");
  579. FEndDay = DtEndDate->Date.FormatString("yyyymmdd");
  580. FEndTime = DtEndTime->DateTime.FormatString("HHnn");
  581. String sStrTime = FStrDay + FStrTime;
  582. String sEndTime = FEndDay + FEndTime;
  583. if (sStrTime > sEndTime) {
  584. Application->MessageBox(L"표출 시작시각이 표출 종료시각 보다 큽니다.",
  585. FTitle.c_str(),
  586. MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  587. ActiveControl = DtStrDate;
  588. return;
  589. }
  590. FWeek = "";
  591. FWeek = FWeek + (ChkWeek0->Checked ? "1" : "0");
  592. FWeek = FWeek + (ChkWeek1->Checked ? "1" : "0");
  593. FWeek = FWeek + (ChkWeek2->Checked ? "1" : "0");
  594. FWeek = FWeek + (ChkWeek3->Checked ? "1" : "0");
  595. FWeek = FWeek + (ChkWeek4->Checked ? "1" : "0");
  596. FWeek = FWeek + (ChkWeek5->Checked ? "1" : "0");
  597. FWeek = FWeek + (ChkWeek6->Checked ? "1" : "0");
  598. bool bResult;
  599. if (FVmsFormType == FORM_TYPE_EMER) {
  600. if (Application->MessageBox(L"[[[ 메시지 수동표출 *** 긴급메시지 *** ]]]\r\n긴급메시지를 수동으로 표출하는 경우 현재 메시지가 단독으로 표출됩니다.\r\n긴급메시지 수동표출을 진행하시겠습니까?",
  601. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  602. }
  603. BtnSaveMessage->Enabled = false;
  604. ITSDb_GetConnection()->BeginTrans();
  605. if (FVmsFormType == FORM_TYPE_EMER) {
  606. FCommCtrlTarget = CenterCommManager->FLists.Find("24"); // 긴급문안등록
  607. bResult = SaveEmerForm();
  608. }
  609. else {
  610. FCommCtrlTarget = CenterCommManager->FLists.Find("22"); // VMS표출문안 등록 알림
  611. bResult = SavePubrForm();
  612. }
  613. if (!bResult) {
  614. ITSDb_GetConnection()->RollbackTrans();
  615. return;
  616. }
  617. ITSDb_GetConnection()->CommitTrans();
  618. if (FVmsFormType == FORM_TYPE_PUBR) {
  619. if (FCommCtrlTarget != NULL) {
  620. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  621. int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT);
  622. if (VERR_NONE == sendResult) {
  623. }
  624. Sleep(200);
  625. }
  626. }
  627. }
  628. // OK
  629. Application->MessageBox(L"VMS 메시지 수동표출을 정상적으로 저장 하였습니다",
  630. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  631. }
  632. //---------------------------------------------------------------------------
  633. bool __fastcall TVMSM540M::SavePubrForm()
  634. {
  635. String sQry;
  636. TADOQuery *pADO = NULL;
  637. try {
  638. TvList->BeginUpdate();
  639. int nRows = TvList->ViewData->RecordCount;
  640. try {
  641. pADO = new TADOQuery(NULL);
  642. pADO->Close();
  643. pADO->Connection = ITSDb_GetConnection();
  644. #if 0
  645. sQry = "INSERT INTO TB_VMS_PUBRL_FORM ( \r\n"
  646. " VMS_CTLR_ID, \r\n"
  647. " VMS_FORM_ID, \r\n"
  648. " DSPL_BGN_YMD, \r\n"
  649. " DSPL_FNSH_YMD, \r\n"
  650. " DSPL_WEEK, \r\n"
  651. " DSPL_BGN_HM, \r\n"
  652. " DSPL_FNSH_HM, \r\n"
  653. " RGSTR_ID, \r\n"
  654. " REG_DT ) \r\n"
  655. " VALUES ( \r\n"
  656. " :p01, \r\n"
  657. " :p02, \r\n"
  658. " :p03, \r\n"
  659. " :p04, \r\n"
  660. " :p05, \r\n"
  661. " :p06, \r\n"
  662. " :p07, \r\n"
  663. " :p08, \r\n"
  664. " SYSDATE ) \r\n";
  665. #else
  666. sQry = "MERGE INTO TB_VMS_PUBRL_FORM L \r\n"
  667. "USING (SELECT \r\n"
  668. " :p01 AS VMS_CTLR_ID, \r\n"
  669. " :p02 AS VMS_FORM_ID, \r\n"
  670. " :p03 AS DSPL_BGN_YMD, \r\n"
  671. " :p04 AS DSPL_FNSH_YMD, \r\n"
  672. " :p05 AS DSPL_WEEK, \r\n"
  673. " :p06 AS DSPL_BGN_HM, \r\n"
  674. " :p07 AS DSPL_FNSH_HM, \r\n"
  675. " :p08 AS RGSTR_ID, \r\n"
  676. " SYSDATE AS REG_DT \r\n"
  677. " FROM DUAL) M \r\n"
  678. " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n"
  679. " AND L.VMS_FORM_ID = M.VMS_FORM_ID) \r\n"
  680. "WHEN MATCHED THEN \r\n"
  681. " UPDATE SET \r\n"
  682. " L.DSPL_BGN_YMD = M.DSPL_BGN_YMD, \r\n"
  683. " L.DSPL_FNSH_YMD = M.DSPL_FNSH_YMD, \r\n"
  684. " L.DSPL_WEEK = M.DSPL_WEEK, \r\n"
  685. " L.DSPL_BGN_HM = M.DSPL_BGN_HM, \r\n"
  686. " L.DSPL_FNSH_HM = M.DSPL_FNSH_HM, \r\n"
  687. " L.CHNGR_ID = M.RGSTR_ID, \r\n"
  688. " L.CHG_DT = M.REG_DT \r\n"
  689. "WHEN NOT MATCHED THEN \r\n"
  690. " INSERT ( \r\n"
  691. " VMS_CTLR_ID, \r\n"
  692. " VMS_FORM_ID, \r\n"
  693. " DSPL_BGN_YMD, \r\n"
  694. " DSPL_FNSH_YMD, \r\n"
  695. " DSPL_WEEK, \r\n"
  696. " DSPL_BGN_HM, \r\n"
  697. " DSPL_FNSH_HM, \r\n"
  698. " RGSTR_ID, \r\n"
  699. " REG_DT ) \r\n"
  700. " VALUES ( \r\n"
  701. " M.VMS_CTLR_ID, \r\n"
  702. " M.VMS_FORM_ID, \r\n"
  703. " M.DSPL_BGN_YMD, \r\n"
  704. " M.DSPL_FNSH_YMD, \r\n"
  705. " M.DSPL_WEEK, \r\n"
  706. " M.DSPL_BGN_HM, \r\n"
  707. " M.DSPL_FNSH_HM, \r\n"
  708. " M.RGSTR_ID, \r\n"
  709. " M.REG_DT ) \r\n";
  710. #endif
  711. ITSDb_SQLText(pADO, sQry);
  712. for (int ii = 0; ii < nRows; ii++) {
  713. String VMS_FORM_ID;
  714. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  715. bool bSelected = (bool)ARow->Values[ColumnSel->Index];
  716. if (bSelected) {
  717. VMS_FORM_ID = VarToStr(ARow->Values[Column13->Index]);
  718. if (VMS_FORM_ID == "") {
  719. continue;
  720. }
  721. }
  722. String VMS_CTLR_ID = VarToStr(ARow->Values[Column01->Index]);
  723. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  724. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  725. pADO->Parameters->ParamByName("p03")->Value = FStrDay;
  726. pADO->Parameters->ParamByName("p04")->Value = FEndDay;
  727. pADO->Parameters->ParamByName("p05")->Value = FWeek;
  728. pADO->Parameters->ParamByName("p06")->Value = FStrTime;
  729. pADO->Parameters->ParamByName("p07")->Value = FEndTime;
  730. pADO->Parameters->ParamByName("p08")->Value = g_AppCfg.OPER_ID;
  731. ITSDb_SQLExec(pADO);
  732. }
  733. }
  734. catch(EDatabaseError &E) {
  735. DBERRORMSG("TVMSM540M::SavePubrForm", String(E.ClassName()), E.Message, sQry);
  736. return false;
  737. }
  738. catch(Exception &e)
  739. {
  740. DBERRORMSG("TVMSM540M::SavePubrForm", String(e.ClassName()), e.Message, sQry);
  741. return false;
  742. }
  743. }
  744. __finally {
  745. TvList->EndUpdate();
  746. if (pADO) {
  747. pADO->Close();
  748. delete pADO;
  749. }
  750. }
  751. return true;
  752. }
  753. //---------------------------------------------------------------------------
  754. bool __fastcall TVMSM540M::SaveEmerForm()
  755. {
  756. String sQry;
  757. TADOQuery *pADO = NULL;
  758. try {
  759. TvList->BeginUpdate();
  760. int nRows = TvList->ViewData->RecordCount;
  761. try {
  762. pADO = new TADOQuery(NULL);
  763. pADO->Close();
  764. pADO->Connection = ITSDb_GetConnection();
  765. #if 0
  766. sQry = "INSERT INTO TB_VMS_EMGNC_FORM ( \r\n"
  767. " VMS_CTLR_ID, \r\n"
  768. " VMS_FORM_ID, \r\n"
  769. " DSPL_BGN_DT, \r\n"
  770. " DSPL_FNSH_DT, \r\n"
  771. " RGSTR_ID, \r\n"
  772. " REG_DT ) \r\n"
  773. " VALUES ( \r\n"
  774. " :p01, \r\n"
  775. " :p02, \r\n"
  776. " :p03, \r\n"
  777. " :p04, \r\n"
  778. " :p08, \r\n"
  779. " SYSDATE ) \r\n";
  780. #else
  781. sQry = "MERGE INTO TB_VMS_EMGNC_FORM L \r\n"
  782. "USING (SELECT \r\n"
  783. " :p01 AS VMS_CTLR_ID, \r\n"
  784. " :p02 AS VMS_FORM_ID, \r\n"
  785. " :p03 AS DSPL_BGN_DT, \r\n"
  786. " :p04 AS DSPL_FNSH_DT, \r\n"
  787. " :p08 AS RGSTR_ID, \r\n"
  788. " SYSDATE AS REG_DT \r\n"
  789. " FROM DUAL) M \r\n"
  790. " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n"
  791. " AND L.VMS_FORM_ID = M.VMS_FORM_ID \r\n"
  792. " AND TO_CHAR(L.DSPL_BGN_DT, \r\n"
  793. " 'YYYYMMDDHH24MISS') = M.DSPL_BGN_DT) \r\n"
  794. "WHEN MATCHED THEN \r\n"
  795. " UPDATE SET \r\n"
  796. " L.DSPL_FNSH_DT = \r\n"
  797. " TO_DATE(M.DSPL_FNSH_DT, 'YYYYMMDDHH24MISS'), \r\n"
  798. " L.RGSTR_ID = M.RGSTR_ID, \r\n"
  799. " L.REG_DT = M.REG_DT \r\n"
  800. "WHEN NOT MATCHED THEN \r\n"
  801. " INSERT ( \r\n"
  802. " VMS_CTLR_ID, \r\n"
  803. " VMS_FORM_ID, \r\n"
  804. " DSPL_BGN_DT, \r\n"
  805. " DSPL_FNSH_DT, \r\n"
  806. " RGSTR_ID, \r\n"
  807. " REG_DT ) \r\n"
  808. " VALUES ( \r\n"
  809. " M.VMS_CTLR_ID, \r\n"
  810. " M.VMS_FORM_ID, \r\n"
  811. " TO_DATE(M.DSPL_BGN_DT, 'YYYYMMDDHH24MISS'), \r\n"
  812. " TO_DATE(M.DSPL_FNSH_DT, 'YYYYMMDDHH24MISS'), \r\n"
  813. " M.RGSTR_ID, \r\n"
  814. " M.REG_DT ) \r\n";
  815. #endif
  816. ITSDb_SQLText(pADO, sQry);
  817. for (int ii = 0; ii < nRows; ii++) {
  818. String VMS_FORM_ID;
  819. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  820. bool bSelected = (bool)ARow->Values[ColumnSel->Index];
  821. if (bSelected) {
  822. VMS_FORM_ID = VarToStr(ARow->Values[Column13->Index]);
  823. if (VMS_FORM_ID == "") {
  824. continue;
  825. }
  826. }
  827. String VMS_CTLR_ID = VarToStr(ARow->Values[Column01->Index]);
  828. pADO->Parameters->ParamByName("p01")->Value = VMS_CTLR_ID;
  829. pADO->Parameters->ParamByName("p02")->Value = VMS_FORM_ID;
  830. pADO->Parameters->ParamByName("p03")->Value = FStrDay + FStrTime + "00";
  831. pADO->Parameters->ParamByName("p04")->Value = FEndDay + FEndTime + "00";
  832. pADO->Parameters->ParamByName("p08")->Value = g_AppCfg.OPER_ID;
  833. ITSDb_SQLExec(pADO);
  834. if (FCommCtrlTarget != NULL) {
  835. FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) {
  836. int sendResult = CComm_VmsNotiRegEmgnMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT, VMS_CTLR_ID);
  837. if (VERR_NONE == sendResult) {
  838. }
  839. Sleep(200);
  840. }
  841. }
  842. }
  843. }
  844. catch(EDatabaseError &E) {
  845. DBERRORMSG("TVMSM540M::SaveEmerForm", String(E.ClassName()), E.Message, sQry);
  846. return false;
  847. }
  848. catch(Exception &e)
  849. {
  850. DBERRORMSG("TVMSM540M::SaveEmerForm", String(e.ClassName()), e.Message, sQry);
  851. return false;
  852. }
  853. }
  854. __finally {
  855. TvList->EndUpdate();
  856. if (pADO) {
  857. pADO->Close();
  858. delete pADO;
  859. }
  860. }
  861. return true;
  862. }
  863. //---------------------------------------------------------------------------
  864. int __fastcall TVMSM540M::GetSelListItems()
  865. {
  866. int nSelected = 0;
  867. try {
  868. bool bSelected;
  869. TvList->BeginUpdate();
  870. int nRows = TvList->ViewData->RecordCount;
  871. for (int ii = 0; ii < nRows; ii++) {
  872. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  873. bSelected = (bool)ARow->Values[ColumnSel->Index];
  874. if (bSelected) {
  875. String sVmsFormId = VarToStr(ARow->Values[Column13->Index]);
  876. if (sVmsFormId != "") {
  877. nSelected++;
  878. }
  879. }
  880. }
  881. }
  882. __finally {
  883. TvList->EndUpdate();
  884. }
  885. return nSelected;
  886. }
  887. //---------------------------------------------------------------------------