crss-metering-pg-query.yml 13 KB

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