application-oracle-query.yml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. mq:
  2. manifest:
  3. header:
  4. insert: >
  5. INSERT INTO TXN_MQ_MANIFEST_HEADER
  6. (
  7. HEADER_ID, TRANSACTION_ID, MSP_SHORTNAME, FILE_COUNT, NOTIFICATION_SENT, TAIL_RECEIVED, CATEGORY, UPLOAD_BY, UPLOAD_DATETIME
  8. )
  9. VALUES (
  10. MQ_MANIFEST_HEADER_SEQ.NEXTVAL, :transactionID, :mspShortName, :fileCount, 'N', 'N', :category, :uploadedBy, :uploadDateTime
  11. )
  12. query: >
  13. SELECT HEADER_ID AS headerID, TRANSACTION_ID AS transactionID, MSP_SHORTNAME AS mspShortName, FILE_COUNT AS fileCount,
  14. CATEGORY AS category, NOTIFICATION_SENT AS notificationSent, NOTIFICATION_DATETIME AS notificationDateTime,
  15. TAIL_RECEIVED AS tailReceived, UPLOAD_BY AS uploadedBy, UPLOAD_DATETIME AS UploadDateTime
  16. FROM TXN_MQ_MANIFEST_HEADER
  17. WHERE HEADER_ID = :headerID
  18. count: >
  19. SELECT COUNT(*) FROM TXN_MQ_MANIFEST_HEADER WHERE TAIL_RECEIVED = 'N' AND HEADER_ID = :headerID
  20. trailer:
  21. update: >
  22. UPDATE TXN_MQ_MANIFEST_HEADER SET TAIL_RECEIVED = 'Y' WHERE HEADER_ID = :headerID
  23. file:
  24. insert: >
  25. INSERT INTO TXN_MQ_MANIFEST_FILE (file_id, header_id, transaction_id, filename, filetype, filesize, checksum, upload_datetime)
  26. VALUES (
  27. MQ_MANIFEST_FILE_SEQ.NEXTVAL, :headerID, :transactionID, :fileName, :fileType, :fileSize, :checksum, :uploadDateTime
  28. )
  29. status: >
  30. SELECT FILE_ID AS fileID,
  31. HEADER_ID AS headerID,
  32. TRANSACTION_ID AS transactionID,
  33. FILENAME,
  34. PROCESS_FLAG AS processFlag,
  35. STATUS,
  36. ERROR_DETAILS AS errorDetails
  37. FROM TXN_MQ_MANIFEST_FILE
  38. WHERE HEADER_ID = :headerID
  39. AND PROCESS_FLAG = 'Y'
  40. query: >
  41. SELECT A.FILE_ID as fileID,
  42. A.HEADER_ID AS headerID,
  43. A.TRANSACTION_ID AS transactionID,
  44. A.FILENAME,
  45. A.FILETYPE,
  46. A.FILESIZE,
  47. A.CHECKSUM,
  48. A.UPLOAD_DATETIME AS uploadDateTime,
  49. A.PROCESS_FLAG AS processFlag,
  50. A.STATUS,
  51. A.ERROR_DETAILS AS errorDetails
  52. FROM TXN_MQ_MANIFEST_FILE A INNER JOIN TXN_MQ_MANIFEST_HEADER B ON A.HEADER_ID = B.HEADER_ID
  53. WHERE B.HEADER_ID = :headerID
  54. unprocessed: >
  55. SELECT A.FILE_COUNT - COUNT(B.HEADER_ID) AS UNPROCESSED_COUNT
  56. FROM TXN_MQ_MANIFEST_HEADER A
  57. INNER JOIN TXN_MQ_MANIFEST_FILE B ON A.HEADER_ID = B.HEADER_ID
  58. WHERE A.HEADER_ID = :headerID
  59. GROUP BY A.HEADER_ID
  60. status: >
  61. UPDATE TXN_MQ_MANIFEST_FILE SET PROCESS_FLAG = 'Y', STATUS = :status, ERROR_DETAILS = :errorDetail, PROCESS_DATETIME = :processDateTime
  62. WHERE FILE_ID = :fileID
  63. upload:
  64. status: >
  65. select count(*) from txn_mq_manifest_header h
  66. where
  67. file_count=(
  68. select count(*) from txn_mq_manifest_file
  69. where header_id=h.header_id and process_flag='Y')
  70. and header_id=:headerID
  71. report: >
  72. select h.header_id as headerID, h.msp_shortname as mspShortName, h.upload_by as uploadedBy, h.upload_datetime as uploadDateTime,
  73. sum(case when status='ACCEPTED' then 1 else 0 end) as acceptedFileCount,
  74. sum(case when status='REJECTED' then 1 else 0 end) as rejectedFileCount
  75. from
  76. txn_mq_manifest_header h, txn_mq_manifest_file f
  77. where
  78. f.header_id = h.header_id and h.header_id=:headerID
  79. GROUP BY h.header_id, h.upload_datetime
  80. notif.status: >
  81. UPDATE TXN_MQ_MANIFEST_HEADER SET NOTIFICATION_SENT = 'Y', NOTIFICATION_DATETIME = :dateTime WHERE HEADER_ID = :headerID
  82. notif.stale: >
  83. SELECT HEADER_ID FROM TXN_MQ_MANIFEST_HEADER WHERE NOTIFICATION_SENT = 'N' AND UPLOAD_DATETIME < CURRENT_DATE
  84. filter-by.status: >
  85. select * from txn_mq_manifest_file where status=:status and header_id=:headerID
  86. meter:
  87. daily:
  88. insert: >
  89. INSERT INTO TXN_METER_DATA_DAILY (
  90. METER_DATA_ID, FILE_ID, SEIN, INTERVAL, READING_DATETIME,
  91. KWD, KWD_CHANNEL_STATUS, KWD_INTERVAL_STATUS,
  92. KWHD, KWHD_CHANNEL_STATUS, KWHD_INTERVAL_STATUS,
  93. KVARHD, KVARHD_CHANNEL_STATUS, KVARHD_INTERVAL_STATUS,
  94. KWR, KWR_CHANNEL_STATUS, KWR_INTERVAL_STATUS,
  95. KWHR, KWHR_CHANNEL_STATUS, KWHR_INTERVAL_STATUS,
  96. KVARHR, KVARHR_CHANNEL_STATUS, KVARHR_INTERVAL_STATUS,
  97. VAN, VAN_CHANNEL_STATUS, VAN_INTERVAL_STATUS,
  98. VBN, VBN_CHANNEL_STATUS, VBN_INTERVAL_STATUS,
  99. VCN, VCN_CHANNEL_STATUS, VCN_INTERVAL_STATUS,
  100. IAN, IAN_CHANNEL_STATUS, IAN_INTERVAL_STATUS,
  101. IBN, IBN_CHANNEL_STATUS, IBN_INTERVAL_STATUS,
  102. ICN, ICN_CHANNEL_STATUS, ICN_INTERVAL_STATUS,
  103. PF, PF_CHANNEL_STATUS, PF_INTERVAL_STATUS,
  104. ESTIMATION_FLAG, MSP_SHORTNAME, CATEGORY, CREATED_DATE_TIME)
  105. VALUES (
  106. MQ_DATA_DAILY_SEQ.NEXTVAL, :fileID, :sein, :interval, :readingDateTime,
  107. :kwd, :kwdChannelStatus, :kwdIntervalStatus,
  108. :kwhd, :kwhdChannelStatus, :kwhdIntervalStatus,
  109. :kvarhd, :kvarhdChannelStatus, :kvarhdIntervalStatus,
  110. :kwr, :kwrChannelStatus, :kwrIntervalStatus,
  111. :kwhr, :kwhrChannelStatus, :kwhrIntervalStatus,
  112. :kvarhr, :kvarhrChannelStatus, :kvarhrIntervalStatus,
  113. :van, :vanChannelStatus, :vanIntervalStatus,
  114. :vbn, :vbnChannelStatus, :vbnIntervalStatus,
  115. :vcn, :vcnChannelStatus, :vcnIntervalStatus,
  116. :ian, :ianChannelStatus, :ianIntervalStatus,
  117. :ibn, :ibnChannelStatus, :ibnIntervalStatus,
  118. :icn, :icnChannelStatus, :icnIntervalStatus,
  119. :pf, :pfChannelStatus, :pfIntervalStatus,
  120. :estimationFlag, :mspShortName, :uploadType, :createdDateTime)
  121. monthly:
  122. insert: >
  123. INSERT INTO TXN_METER_DATA_MONTHLY (
  124. METER_DATA_ID, FILE_ID, SEIN, INTERVAL, READING_DATETIME,
  125. KWD, KWD_CHANNEL_STATUS, KWD_INTERVAL_STATUS,
  126. KWHD, KWHD_CHANNEL_STATUS, KWHD_INTERVAL_STATUS,
  127. KVARHD, KVARHD_CHANNEL_STATUS, KVARHD_INTERVAL_STATUS,
  128. KWR, KWR_CHANNEL_STATUS, KWR_INTERVAL_STATUS,
  129. KWHR, KWHR_CHANNEL_STATUS, KWHR_INTERVAL_STATUS,
  130. KVARHR, KVARHR_CHANNEL_STATUS, KVARHR_INTERVAL_STATUS,
  131. VAN, VAN_CHANNEL_STATUS, VAN_INTERVAL_STATUS,
  132. VBN, VBN_CHANNEL_STATUS, VBN_INTERVAL_STATUS,
  133. VCN, VCN_CHANNEL_STATUS, VCN_INTERVAL_STATUS,
  134. IAN, IAN_CHANNEL_STATUS, IAN_INTERVAL_STATUS,
  135. IBN, IBN_CHANNEL_STATUS, IBN_INTERVAL_STATUS,
  136. ICN, ICN_CHANNEL_STATUS, ICN_INTERVAL_STATUS,
  137. PF, PF_CHANNEL_STATUS, PF_INTERVAL_STATUS,
  138. ESTIMATION_FLAG, MSP_SHORTNAME, CATEGORY, CREATED_DATE_TIME)
  139. VALUES (
  140. MQ_DATA_MONTHLY_SEQ.NEXTVAL, :fileID, :sein, :interval, :readingDateTime,
  141. :kwd, :kwdChannelStatus, :kwdIntervalStatus,
  142. :kwhd, :kwhdChannelStatus, :kwhdIntervalStatus,
  143. :kvarhd, :kvarhdChannelStatus, :kvarhdIntervalStatus,
  144. :kwr, :kwrChannelStatus, :kwrIntervalStatus,
  145. :kwhr, :kwhrChannelStatus, :kwhrIntervalStatus,
  146. :kvarhr, :kvarhrChannelStatus, :kvarhrIntervalStatus,
  147. :van, :vanChannelStatus, :vanIntervalStatus,
  148. :vbn, :vbnChannelStatus, :vbnIntervalStatus,
  149. :vcn, :vcnChannelStatus, :vcnIntervalStatus,
  150. :ian, :ianChannelStatus, :ianIntervalStatus,
  151. :ibn, :ibnChannelStatus, :ibnIntervalStatus,
  152. :icn, :icnChannelStatus, :icnIntervalStatus,
  153. :pf, :pfChannelStatus, :pfIntervalStatus,
  154. :estimationFlag, :mspShortName, :uploadType, :createdDateTime)
  155. bcq:
  156. manifest: >
  157. INSERT INTO TXN_BCQ_UPLOAD_FILE (
  158. FILE_ID,
  159. TRANSACTION_ID,
  160. FILE_NAME,
  161. FILE_SIZE,
  162. SUBMITTED_DATE,
  163. VALIDATION_STATUS)
  164. VALUES (HIBERNATE_SEQUENCE.NEXTVAL, ?, ?, ?, ?, ?)
  165. header:
  166. insert: >
  167. INSERT INTO TXN_BCQ_HEADER (
  168. HEADER_ID,
  169. FILE_ID,
  170. SELLING_MTN,
  171. BILLING_ID,
  172. BUYING_PARTICIPANT_USER_ID,
  173. BUYING_PARTICIPANT_NAME,
  174. BUYING_PARTICIPANT_SHORT_NAME,
  175. SELLING_PARTICIPANT_USER_ID,
  176. SELLING_PARTICIPANT_NAME,
  177. SELLING_PARTICIPANT_SHORT_NAME,
  178. STATUS,
  179. TRADING_DATE,
  180. DEADLINE_DATE,
  181. UPDATED_VIA,
  182. CREATED_DATE,
  183. MODIFIED_DATE)
  184. VALUES (NEXTVAL('HIBERNATE_SEQUENCE'),
  185. :fileId, :sellingMtn, :billingId,
  186. :buyingParticipantUserId, :buyingParticipantName, :buyingParticipantShortName,
  187. :sellingParticipantUserId, :sellingParticipantName, :sellingParticipantShortName,
  188. :status, :tradingDate, :deadlineDate, :updatedVia,
  189. now(), now())
  190. status:
  191. update: >
  192. UPDATE TXN_BCQ_HEADER SET
  193. STATUS = :status,
  194. MODIFIED_DATE = now()
  195. WHERE HEADER_ID = :headerId
  196. update-settlement: >
  197. UPDATE TXN_BCQ_HEADER SET
  198. STATUS = :status,
  199. UPDATED_VIA = :updatedVia,
  200. MODIFIED_DATE = now()
  201. WHERE HEADER_ID = :headerId
  202. select-by-status-and-deadlinedate-plus-days: >
  203. SELECT
  204. HEADER_ID
  205. FROM TXN_BCQ_HEADER
  206. WHERE
  207. STATUS = :status AND
  208. (DEADLINE_DATE + (:plusDays || ' day') :: interval) :: date <= current_date;
  209. list:
  210. header-join-file: >
  211. TXN_BCQ_HEADER A INNER JOIN TXN_BCQ_UPLOAD_FILE B ON A.FILE_ID = B.FILE_ID
  212. sub-select:
  213. transaction-id: >
  214. (SELECT STRING_AGG(D.TRANSACTION_ID, ', ' ORDER BY D.SUBMITTED_DATE)
  215. FROM TXN_BCQ_HEADER C INNER JOIN TXN_BCQ_UPLOAD_FILE D ON C.FILE_ID = D.FILE_ID
  216. WHERE A.SELLING_MTN = C.SELLING_MTN
  217. AND A.BILLING_ID = C.BILLING_ID
  218. AND A.TRADING_DATE = C.TRADING_DATE
  219. AND C.STATUS != 'VOID')
  220. submitted-date: >
  221. (SELECT STRING_AGG(TO_CHAR(D.SUBMITTED_DATE, 'YYYY-DD-MM hh:MI AM'), ', ' ORDER BY D.SUBMITTED_DATE)
  222. FROM TXN_BCQ_HEADER C INNER JOIN TXN_BCQ_UPLOAD_FILE D ON C.FILE_ID = D.FILE_ID
  223. WHERE A.SELLING_MTN = C.SELLING_MTN
  224. AND A.BILLING_ID = C.BILLING_ID
  225. AND A.TRADING_DATE = C.TRADING_DATE
  226. AND C.STATUS != 'VOID')
  227. deadline-date: >
  228. (SELECT STRING_AGG(TO_CHAR(C.DEADLINE_DATE, 'YYYY-DD-MM'), ', ' ORDER BY D.SUBMITTED_DATE)
  229. FROM TXN_BCQ_HEADER C INNER JOIN TXN_BCQ_UPLOAD_FILE D ON C.FILE_ID = D.FILE_ID
  230. WHERE A.SELLING_MTN = C.SELLING_MTN
  231. AND A.BILLING_ID = C.BILLING_ID
  232. AND A.TRADING_DATE = C.TRADING_DATE
  233. AND C.STATUS != 'VOID')
  234. status: >
  235. (SELECT STRING_AGG(C.STATUS, ', ' ORDER BY D.SUBMITTED_DATE)
  236. FROM TXN_BCQ_HEADER C INNER JOIN TXN_BCQ_UPLOAD_FILE D ON C.FILE_ID = D.FILE_ID
  237. WHERE A.SELLING_MTN = C.SELLING_MTN
  238. AND A.BILLING_ID = C.BILLING_ID
  239. AND A.TRADING_DATE = C.TRADING_DATE
  240. AND C.STATUS != 'VOID')
  241. updated-via: >
  242. (SELECT STRING_AGG(COALESCE(C.UPDATED_VIA, ' '), ', ' ORDER BY D.SUBMITTED_DATE)
  243. FROM TXN_BCQ_HEADER C INNER JOIN TXN_BCQ_UPLOAD_FILE D ON C.FILE_ID = D.FILE_ID
  244. WHERE A.SELLING_MTN = C.SELLING_MTN
  245. AND A.BILLING_ID = C.BILLING_ID
  246. AND A.TRADING_DATE = C.TRADING_DATE
  247. AND C.STATUS != 'VOID')
  248. unique: >
  249. HEADER_ID IN(
  250. SELECT
  251. DISTINCT ON (SELLING_MTN, BILLING_ID, TRADING_DATE) HEADER_ID
  252. FROM TXN_BCQ_HEADER A
  253. INNER JOIN TXN_BCQ_UPLOAD_FILE B
  254. ON A.FILE_ID = B.FILE_ID
  255. ORDER BY
  256. SELLING_MTN,
  257. BILLING_ID,
  258. TRADING_DATE,
  259. SUBMITTED_DATE DESC)
  260. data:
  261. insert: >
  262. INSERT INTO TXN_BCQ_DATA (
  263. BCQ_DATA_ID,
  264. BCQ_HEADER_ID,
  265. REFERENCE_MTN,
  266. START_TIME,
  267. END_TIME,
  268. BCQ)
  269. VALUES (HIBERNATE_SEQUENCE.NEXTVAL, ?, ?, ?, ?, ?)
  270. report:
  271. flattened: >
  272. SELECT
  273. header.selling_participant_name || ' (' ||
  274. header.selling_participant_short_name || ')' as selling_participant,
  275. header.buying_participant_name || ' (' ||
  276. header.buying_participant_short_name || ')' as buying_participant,
  277. header.selling_mtn,
  278. header.billing_id,
  279. header.trading_date,
  280. file.transaction_id,
  281. file.submitted_date,
  282. header.deadline_date,
  283. header.status,
  284. header.updated_via,
  285. data.reference_mtn,
  286. data.end_time,
  287. data.bcq
  288. FROM txn_bcq_data data
  289. INNER JOIN txn_bcq_header header ON data.header_id = header.header_id
  290. INNER JOIN txn_bcq_upload_file file ON header.file_id = file.file_id
  291. WHERE header.status != 'VOID'
  292. event:
  293. insert: >
  294. INSERT INTO TXN_BCQ_SPECIAL_EVENT (
  295. EVENT_ID,
  296. DEADLINE_DATE,
  297. REMARKS,
  298. CREATED_DATE)
  299. VALUES (NEXTVAL('HIBERNATE_SEQUENCE'), :deadlineDate, :remarks, now())
  300. trading-date:
  301. insert: >
  302. INSERT INTO TXN_BCQ_EVENT_TRADING_DATE (
  303. EVENT_ID,
  304. TRADING_DATE)
  305. VALUES (?, ?)
  306. participant:
  307. insert: >
  308. INSERT INTO TXN_BCQ_EVENT_PARTICIPANT (
  309. EVENT_ID,
  310. TRADING_PARTICIPANT,
  311. PARTICIPANT_NAME)
  312. VALUES (?, ?, ?)
  313. validate: >
  314. SELECT DISTINCT
  315. ep.trading_participant,
  316. etd.trading_date,
  317. count(1) OVER (PARTITION BY date_trunc('day', etd.trading_date), ep.trading_participant) AS trading_date_count
  318. FROM txn_bcq_special_event se
  319. INNER JOIN txn_bcq_event_participant ep
  320. ON se.event_id = ep.event_id
  321. INNER JOIN txn_bcq_event_trading_date etd
  322. ON se.event_id = etd.event_id
  323. WHERE se.deadline_date >= :dateToday
  324. AND ep.trading_participant IN (:tradingParticipants)
  325. AND date_trunc('day', etd.trading_date) IN (:tradingDates)
  326. ORDER BY etd.trading_date asc
  327. list: >
  328. SELECT
  329. se.event_id,
  330. se.created_date,
  331. se.deadline_date,
  332. se.remarks,
  333. ARRAY_AGG(DISTINCT ep.participant_name || ' (' || ep.trading_participant || ')') AS trading_participants,
  334. ARRAY_AGG(DISTINCT etd.trading_date) AS trading_dates
  335. FROM txn_bcq_special_event se
  336. INNER JOIN txn_bcq_event_participant ep
  337. ON se.event_id = ep.event_id
  338. INNER JOIN txn_bcq_event_trading_date etd
  339. ON se.event_id = etd.event_id
  340. GROUP BY se.event_id, se.deadline_date, se.remarks
  341. ORDER BY se.created_date DESC;