保单信息.sql 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement_policy_information() -- 创建主存储过程
  2. IS
  3. BEGIN
  4. INSERT INTO shanglifeecif.insurancearrangement(
  5. iaid ,--'保单ID',
  6. policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  7. pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  8. pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  9. norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  10. payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  11. applicantscustid ,-- '投保人 上游客户号,再找到individualid',
  12. appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  13. appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  14. insuredscustid ,-- '主被保险人 游客户号',
  15. insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  16. inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  17. productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  18. policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  19. payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  20. agrmntage ,--保险期限
  21. created_by ,-- '创建人',
  22. created_time -- '创建时间',
  23. )
  24. SELECT
  25. row_number()over(),
  26. CONTNO,--policyno ,-- '保险单号 INSURANCEINFO.CONTNO',
  27. CVALIDATE,--pindate ,-- '起保日期 POLICY_INFORMATION.CVALIDATE',
  28. ENDDATE,--pmdate ,-- '终保日期 POLICY_INFORMATION.ENDDATE',
  29. PAYCOUNT,--norenewal ,-- '续保次数 POLICY_INFORMATION.PAYCOUNT',
  30. PAYINTV,--payment ,-- '缴费方式 POLICY_INFORMATION.PAYINTV',
  31. CUSTOMERNO,--applicantid ,-- '投保人 根据POLICY_INFORMATION.CUSTOMERNO关联individual上游客户号,再找到individualid',
  32. NAME,--appname ,-- '投保人名称 POLICY_INFORMATION.NAME',
  33. IDNO,--appcertid ,-- '投保人证件号码 POLICY_INFORMATION.IDNO',
  34. insuredno,--insuredid ,-- '主被保险人 insuredno',
  35. INSUREDNAME,--insname ,-- '主被保险人名称 POLICY_INFORMATION.INSUREDNAME',
  36. INSUREDIDNO,--inscertid ,-- '主被保险人证件号码 POLICY_INFORMATION.INSUREDIDNO',
  37. RISKCODE,--productid ,-- '险种代码 POLICY_INFORMATION.RISKCODE',
  38. SALECOM,--policybelong ,-- '业绩归属 POLICY_INFORMATION.SALECOM',
  39. PAYENDYEAR,--payendyear ,-- '缴费年期 POLICY_INFORMATION.PAYENDYEAR',
  40. case
  41. when security ='终身' then 42720
  42. when security = '至100周岁' then 36500
  43. when security = '至80周岁' then 29200
  44. when security = '70年' then 25550
  45. when security = '至70周岁' then 25550
  46. when security = '至65周岁' then 23725
  47. when security = '至60周岁' then 21900
  48. when security = '30年' then 10950
  49. when security = '20年' then 7300
  50. when security = '10年' then 3650
  51. when security = '6年' then 2190
  52. when security = '5年' then 1825
  53. when security = '1年' then 365
  54. when security = '180天' then 180
  55. when security = '6月' then 180
  56. when security = '90天' then 90
  57. when security = '3月' then 90
  58. when security = '1月' then 30
  59. when security = '30天' then 30
  60. when security = '15天' then 15
  61. when security = '7天' then 7
  62. end,
  63. 'admin',
  64. sysdate()
  65. FROM policy_information
  66. --更新险种大类
  67. UPDATE shanglifeecif.insurancearrangement a SET (
  68. risk_categories,
  69. risk_categories_name
  70. ) = (
  71. select
  72. b.kindcode,
  73. (CASE b.kindcode
  74. WHEN 'A' THEN '意外伤害险'
  75. WHEN 'U' THEN '万能保险'
  76. WHEN 'R' THEN '年金保险'
  77. WHEN 'S' THEN '重疾保险'
  78. WHEN 'L' THEN '人寿保险'
  79. WHEN 'H' THEN '健康险'
  80. END) AS kindname
  81. from lmriskapp b WHERE a.productid = b.riskcode
  82. ) WHERE 1=1;
  83. --更新投保人和被保人id 因为 scustid有重复所以需要去下重
  84. UPDATE shanglifeecif.insurancearrangement a SET (
  85. applicantid --'投保人ID',
  86. ) = (
  87. select
  88. c.indid
  89. from (
  90. select
  91. row_number()over(PARTITION BY b.scustid) rn,
  92. b.indid,
  93. b.scustid
  94. from shanglifeecif.individual b
  95. ) c
  96. WHERE c.scustid = a.applicantscustid and c.rn=1
  97. ) WHERE 1=1 ;
  98. UPDATE shanglifeecif.insurancearrangement a SET (
  99. insuredid --'投保人ID',
  100. ) = (
  101. select
  102. c.indid
  103. from (
  104. select
  105. row_number()over(PARTITION BY b.scustid) rn,
  106. b.indid,
  107. b.scustid
  108. from shanglifeecif.individual b
  109. ) c
  110. WHERE c.scustid = a.insuredscustid and c.rn=1
  111. ) WHERE 1=1 ;
  112. --更新INSURANCEINFO 表中的信息
  113. UPDATE shanglifeecif.insurancearrangement a SET (
  114. pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  115. pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  116. padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  117. policystate ,--INSURANCEINFO,appflag
  118. prem ,-- '总保费 INSURANCEINFO.PREM',
  119. productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  120. agentchannel -- '代理渠道 INSURANCEINFO.SELLTYPE',
  121. ) = (
  122. select
  123. PRTNO,--pano ,-- '投保单号 INSURANCEINFO.PRTNO',
  124. SIGNDATE,--pisdate ,-- '签单日期 INSURANCEINFO.SIGNDATE',
  125. POLAPPLYDATE,--padate ,-- '投保日期 INSURANCEINFO.POLAPPLYDATE',
  126. appflag,--policystate ,--INSURANCEINFO,appflag
  127. PREM,--prem ,-- '总保费 INSURANCEINFO.PREM',
  128. RISKNAME,--productname ,-- '险种名称 INSURANCEINFO.RISKNAME'
  129. SELLTYPE--agentchannel ,-- '代理渠道 INSURANCEINFO.SELLTYPE',
  130. from INSURANCEINFO b
  131. where b.contno = a.policyno
  132. ) WHERE 1=1 ;
  133. END;
  134. /
  135. DROP TABLE IF EXISTS shanglifeecif.insurancearrangement_health_tmp;
  136. CREATE TABLE shanglifeecif.insurancearrangement_health_tmp(
  137. id string,
  138. orderid string DEFAULT NULL COMMENT '用于分组的排序号',
  139. contno string DEFAULT NULL COMMENT '保单号',
  140. AGENTGROUP string DEFAULT NULL COMMENT '承保分公司',--pwcomp ,-- '承保分公司 HEALTH_INSURANCE_LISTING.AGENTGROUPAREA 营业区HEALTH_INSURANCE_LISTING.AGENTGROUP 营业部',
  141. SALECHANNELS string DEFAULT NULL COMMENT '销售渠道',--schannel ,-- '销售渠道 HEALTH_INSURANCE_LISTING.SALECHANNELS 1 2 3 4 5',
  142. AMNT string DEFAULT NULL COMMENT '总保额',--risk ,-- '总保额 HEALTH_INSURANCE_LISTING.AMNT(测试环境中,此表保单数据量较其他表如:POLICY_INFORMATION,INSURANCEINFO 缺少至少一个数据量级)',
  143. AGENTCODE string DEFAULT NULL COMMENT'业务员名称'--spname ,-- '业务员名称 HEALTH_INSURANCE_LISTING.AGENTCODE',
  144. ) COMMENT '保单处理个险承保清单自助分析 数据临时表 '
  145. STORED AS ES
  146. with shard number 10
  147. replication 1;
  148. CREATE OR REPLACE PROCEDURE shanglifeecif.up_insurancearrangement_health_insurance_listing() -- 创建主存储过程
  149. IS
  150. BEGIN
  151. --清空临时表数据
  152. delete from shanglifeecif.insurancearrangement_health_tmp;
  153. --初始化临时表
  154. insert into shanglifeecif.insurancearrangement_health_tmp (
  155. id,
  156. orderid,
  157. contno,
  158. agentgroup,
  159. SALECHANNELS,
  160. AMNT,
  161. AGENTCODE
  162. ) select
  163. row_number()over(),
  164. row_number()over(PARTITION BY contno),
  165. contno,
  166. agentgroup,
  167. SALECHANNELS,
  168. AMNT,
  169. AGENTCODE
  170. from HEALTH_INSURANCE_LISTING
  171. --根据临时表更新insurancearrangement 表
  172. UPDATE shanglifeecif.insurancearrangement a SET (
  173. pwcomp ,-- '承保分公司 HEALTH_INSURANCE_LISTING.AGENTGROUPAREA 营业区HEALTH_INSURANCE_LISTING.AGENTGROUP 营业部',
  174. schannel ,-- '销售渠道 HEALTH_INSURANCE_LISTING.SALECHANNELS 1 2 3 4 5',
  175. risk ,-- '总保额 HEALTH_INSURANCE_LISTING.AMNT(测试环境中,此表保单数据量较其他表如:POLICY_INFORMATION,INSURANCEINFO 缺少至少一个数据量级)',
  176. spname -- '业务员名称 HEALTH_INSURANCE_LISTING.AGENTCODE',
  177. ) = (
  178. select
  179. b.AGENTGROUP,--pwcomp ,-- '承保分公司 HEALTH_INSURANCE_LISTING.AGENTGROUPAREA 营业区HEALTH_INSURANCE_LISTING.AGENTGROUP 营业部',
  180. b.SALECHANNELS,--schannel ,-- '销售渠道 HEALTH_INSURANCE_LISTING.SALECHANNELS 1 2 3 4 5',
  181. b.AMNT,--risk ,-- '总保额 HEALTH_INSURANCE_LISTING.AMNT(测试环境中,此表保单数据量较其他表如:POLICY_INFORMATION,INSURANCEINFO 缺少至少一个数据量级)',
  182. b.AGENTCODE--spname ,-- '业务员名称 HEALTH_INSURANCE_LISTING.AGENTCODE',
  183. from shanglifeecif.insurancearrangement_health_tmp b
  184. where b.contno = a.policyno
  185. and b.orderid = 1
  186. ) WHERE 1=1 ;
  187. END;
  188. /
  189. CREATE OR REPLACE PROCEDURE shanglifeecif.up_insurancearrangement_other() -- 创建主存储过程
  190. IS
  191. BEGIN
  192. UPDATE shanglifeecif.insurancearrangement a SET (
  193. policytype -- '保单类型',
  194. ) = (
  195. select
  196. c.CONTTYPE
  197. from (
  198. select
  199. row_number()over(PARTITION BY b.contno) rn,
  200. b.CONTTYPE,
  201. b.contno
  202. from PERSONAL_INSURANCE b
  203. ) c
  204. WHERE c.contno = a.policyno and c.rn=1
  205. ) WHERE 1=1 ;
  206. UPDATE shanglifeecif.insurancearrangement a SET (
  207. poservice -- '是否保全',
  208. ) = (
  209. SELECT
  210. IF(count(b.CONTNO) >0,1,0)
  211. FROM AUDIT_EDORLIST b
  212. where b.contno = a.policyno
  213. ) WHERE 1=1 ;
  214. UPDATE shanglifeecif.insurancearrangement a SET (
  215. soinsured-- '被保人数',
  216. ) = (
  217. SELECT
  218. PEOPLES3
  219. FROM HEALTH_GROUP_LISTING b
  220. where b.contno = a.policyno
  221. ) WHERE 1=1 ;
  222. END;
  223. /
  224. CREATE OR REPLACE PROCEDURE shanglifeecif.init_insurancearrangement() -- 创建主存储过程
  225. IS
  226. BEGIN
  227. --根据policy_information 更新保单表
  228. shanglifeecif.init_insurancearrangement_policy_information();
  229. --根据health_insurance_listing 更新相关字段
  230. shanglifeecif.up_insurancearrangement_health_insurance_listing();
  231. --其他标的字段 更新
  232. shanglifeecif.up_insurancearrangement_other();
  233. END;
  234. /
  235. BEGIN
  236. shanglifeecif.init_insurancearrangement();
  237. end