AgreementDataMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.ydtech.modules.largescreen.dao.AgreementDataMapper">
  4. <select id="getCompanySumData" parameterType="com.ydtech.modules.largescreen.model.query.DataQuery" resultType="com.ydtech.modules.largescreen.model.AgreementData">
  5. SELECT
  6. pa.insurance_company_id,
  7. pa.insurance_company,
  8. COALESCE(SUM(jqpremium), 0) AS jqPremium,
  9. COALESCE(SUM(sypremium), 0) AS syPremium,
  10. COALESCE(SUM(taxamount), 0) AS taxPremium,
  11. COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
  12. COALESCE(COUNT(iac.id), 0) as sumOrderNum
  13. FROM
  14. ptl_agreement pa
  15. LEFT JOIN
  16. ins_area_company iac on iac.agreement_id = pa.id
  17. <!-- <if test="orderStatus != null and orderStatus != ''">-->
  18. <!-- and iac.orderstatus = #{orderStatus}-->
  19. <!-- </if>-->
  20. and iac.orderstatus = 3
  21. <if test="startDate != null and startDate != ''">
  22. and iac.createtime BETWEEN #{startDate} and #{endDate}
  23. </if>
  24. GROUP BY
  25. pa.insurance_company_id, pa.insurance_company
  26. order by
  27. sumPremium desc
  28. </select>
  29. <select id="getOrderStatusData" parameterType="com.ydtech.modules.largescreen.model.query.DataQuery" resultType="com.ydtech.modules.largescreen.model.OrderStatusData">
  30. SELECT
  31. iac.orderstatus as orderStatusCode,
  32. COALESCE(SUM(jqpremium), 0) AS jqPremium,
  33. COALESCE(SUM(sypremium), 0) AS syPremium,
  34. COALESCE(SUM(taxamount), 0) AS taxPremium,
  35. COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
  36. COALESCE(COUNT(iac.id), 0) as sumOrderNum
  37. FROM
  38. ins_area_company iac
  39. WHERE
  40. 1=1
  41. <if test="orderStatus != null and orderStatus != ''">
  42. and iac.orderstatus = #{orderStatus}
  43. </if>
  44. <if test="startDate != null and startDate != ''">
  45. and iac.createtime BETWEEN #{startDate} and #{endDate}
  46. </if>
  47. <if test="companyId != null and companyId != ''">
  48. and iac.company_id = #{companyId}
  49. </if>
  50. GROUP BY
  51. iac.orderstatus
  52. order by
  53. sumPremium desc
  54. </select>
  55. <select id="getMapData" parameterType="com.ydtech.modules.largescreen.model.query.DataQuery" resultType="com.ydtech.modules.largescreen.model.MapData">
  56. SELECT
  57. sd.id as deptId,
  58. sd.NAME as deptName,
  59. sd.city as areaId,
  60. COALESCE(SUM(jqpremium), 0) AS jqPremium,
  61. COALESCE(SUM(sypremium), 0) AS syPremium,
  62. COALESCE(SUM(taxamount), 0) AS taxPremium,
  63. COALESCE(SUM(jqpremium) + SUM(sypremium), 0) AS sumPremium,
  64. COALESCE(COUNT(iac.id), 0) as sumOrderNum
  65. FROM
  66. sys_dept sd
  67. LEFT JOIN
  68. ins_orders io on (io.userid like CONCAT(sd.id,'%') or io.operatorid = CONCAT(sd.id,'%')) and orderstatus = 3
  69. LEFT JOIN
  70. ins_area_company iac on iac.orderno = io.orderno and iac.orderstatus = 3
  71. <if test="startDate != null and startDate != ''">
  72. and iac.createtime BETWEEN #{startDate} and #{endDate}
  73. </if>
  74. WHERE
  75. sd.comlevel = 3
  76. AND
  77. sd.id != 9991401
  78. group by
  79. sd.id
  80. order by
  81. sumPremium desc
  82. </select>
  83. <select id="getOrderNumber" parameterType="com.ydtech.modules.largescreen.model.query.DataQuery" resultType="Integer">
  84. SELECT
  85. count( orderno )
  86. FROM
  87. ins_orders
  88. WHERE
  89. 1=1
  90. <if test="startDate != null and startDate != ''">
  91. and createtime BETWEEN #{startDate} and #{endDate}
  92. </if>
  93. </select>
  94. <select id="getCompanys" resultType="com.ydtech.modules.largescreen.model.CompanyData">
  95. SELECT
  96. insurance_company_id AS company_id,
  97. insurance_company AS company_name
  98. FROM
  99. ptl_agreement
  100. GROUP BY
  101. insurance_company_id,
  102. insurance_company
  103. </select>
  104. <select id="getAgreements" resultType="com.ydtech.modules.largescreen.model.Agreement">
  105. SELECT
  106. id,
  107. insurance_company_id as company_id,
  108. agreement_code,
  109. agreement_name
  110. FROM
  111. ptl_agreement
  112. </select>
  113. <select id="getCompanyDataById" resultType="com.ydtech.modules.largescreen.model.CompanyInfoData">
  114. SELECT
  115. jqpremium,
  116. COALESCE ( COUNT( iac.id ), 0 ) AS sumOrderNum ,
  117. COALESCE ( SUM( jqpremium ), 0 ) AS jqSumPremium,
  118. COALESCE ( SUM( sypremium ), 0 ) AS sySumPremium,
  119. COALESCE ( SUM( taxamount ), 0 ) AS taxSumPremium
  120. FROM
  121. ins_orders io
  122. left join
  123. ins_area_company iac on iac.orderno = io.orderno and iac.orderstatus = 3
  124. <if test="startDate != null and startDate != ''">
  125. and iac.createtime BETWEEN #{startDate} and #{endDate}
  126. </if>
  127. WHERE
  128. io.company_id = #{companyId}
  129. AND
  130. productid= #{productId}
  131. GROUP BY
  132. jqpremium
  133. ORDER BY
  134. jqpremium desc
  135. </select>
  136. <select id="insuranceCompanyBusinessSituation" resultType="com.ydtech.modules.largescreen.model.InsuranceCompanyBusinessSituation">
  137. SELECT
  138. ivs.insurance_id,
  139. ivs.insurance_name,
  140. ivs.insurance_dept,
  141. SUM(ivs.jq_premium) AS jq_premium,
  142. SUM(ivs.sy_premium) AS sy_premium,
  143. SUM(ivs.non_car_premium) AS non_car_premium,
  144. SUM(ivs.jq_premium * ivs.jq_premium_ratio) AS jq_commission,
  145. SUM(ivs.sy_premium * ivs.sy_premium_ratio) AS sy_commission,
  146. SUM(ivs.non_car_premium * ivs.non_car_premium_ratio) AS non_car_commission,
  147. SUM(ivs.jq_premium * ivs.jq_receivable_ratio) AS jq_receivable_commission,
  148. SUM(ivs.sy_premium * ivs.sy_receivable_ratio) AS sy_receivable_commission,
  149. SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio) AS non_car_receivable_commission,
  150. SUM(COALESCE(iss.subsidy_amount, 0)) as subsidy_amount,
  151. SUM(ivs.jq_premium * iss.compulsory_export_ratio) AS jq_compulsory_premium,
  152. SUM(ivs.sy_premium * iss.commercial_export_ratio) AS sy_compulsory_premium,
  153. SUM(ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_compulsory_premium,
  154. SUM(ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) AS jq_profit,
  155. SUM(ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) AS sy_profit,
  156. SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_profit,
  157. SUM(
  158. (ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) +
  159. (ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) +
  160. (ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) +
  161. iss.subsidy_amount
  162. ) AS profit
  163. FROM
  164. inv_source ivs
  165. LEFT JOIN
  166. inv_settlement_source iss ON iss.licenseno = ivs.licenseno
  167. WHERE
  168. 1=1
  169. <if test="insuranceDept != null and insuranceDept != ''">
  170. AND ivs.insurance_dept like ('%${insuranceDept}%')
  171. </if>
  172. <if test="signStartTime != null and signEndTime != ''">
  173. and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
  174. </if>
  175. <if test="insuranceId != null and insuranceId != ''">
  176. AND ivs.insurance_id = #{insuranceId}
  177. </if>
  178. GROUP BY
  179. ivs.insurance_id,
  180. ivs.insurance_name,
  181. ivs.insurance_dept
  182. </select>
  183. <select id="channelBusinessSituation" resultType="com.ydtech.modules.largescreen.model.InsuranceCompanyBusinessSituation">
  184. SELECT
  185. ivs.insurance_id,
  186. ivs.insurance_name,
  187. ivs.insurance_dept,
  188. iss.channel,
  189. SUM(ivs.jq_premium) AS jq_premium,
  190. SUM(ivs.sy_premium) AS sy_premium,
  191. SUM(ivs.non_car_premium) AS non_car_premium,
  192. SUM(ivs.jq_premium * ivs.jq_premium_ratio) AS jq_commission,
  193. SUM(ivs.sy_premium * ivs.sy_premium_ratio) AS sy_commission,
  194. SUM(ivs.non_car_premium * ivs.non_car_premium_ratio) AS non_car_commission,
  195. SUM(ivs.jq_premium * ivs.jq_receivable_ratio) AS jq_receivable_commission,
  196. SUM(ivs.sy_premium * ivs.sy_receivable_ratio) AS sy_receivable_commission,
  197. SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio) AS non_car_receivable_commission,
  198. SUM(COALESCE(iss.subsidy_amount, 0)) as subsidy_amount,
  199. SUM(ivs.jq_premium * iss.compulsory_export_ratio) AS jq_compulsory_premium,
  200. SUM(ivs.sy_premium * iss.commercial_export_ratio) AS sy_compulsory_premium,
  201. SUM(ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_compulsory_premium,
  202. SUM(ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) AS jq_profit,
  203. SUM(ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) AS sy_profit,
  204. SUM(ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) AS non_car_profit,
  205. SUM(
  206. (ivs.jq_premium * ivs.jq_receivable_ratio - ivs.jq_premium * iss.compulsory_export_ratio) +
  207. (ivs.sy_premium * ivs.sy_receivable_ratio - ivs.sy_premium * iss.commercial_export_ratio) +
  208. (ivs.non_car_premium * ivs.non_car_receivable_ratio - ivs.non_car_premium * iss.non_vehicle_export_ratio) +
  209. iss.subsidy_amount
  210. ) AS profit
  211. FROM
  212. inv_source ivs
  213. LEFT JOIN
  214. inv_settlement_source iss ON iss.licenseno = ivs.licenseno
  215. WHERE
  216. 1=1
  217. <if test="insuranceDept != null and insuranceDept != ''">
  218. AND ivs.insurance_dept like ('%${insuranceDept}%')
  219. </if>
  220. <if test="signStartTime != null and signEndTime != ''">
  221. and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
  222. </if>
  223. <if test="insuranceId != null and insuranceId != ''">
  224. AND ivs.insurance_id = #{insuranceId}
  225. </if>
  226. <if test="channel != null and channel != ''">
  227. AND iss.channel like ('%${channel}%')
  228. </if>
  229. GROUP BY
  230. ivs.insurance_id,
  231. ivs.insurance_name,
  232. ivs.insurance_dept,
  233. iss.channel
  234. </select>
  235. <select id="channelSettlement" resultType="com.ydtech.modules.largescreen.model.ChannelSettlements">
  236. SELECT
  237. ivs.insurance_id,
  238. insurance_name,
  239. insurance_dept,
  240. SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN jq_premium * max_jq_receivable_ratio ELSE 0 END ) AS jq_receivable_commission,
  241. SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN sy_premium * max_sy_receivable_ratio ELSE 0 END ) AS sy_receivable_commission,
  242. SUM( CASE WHEN clearing_state_over = 0 OR clearing_state_over = 1 OR clearing_state_over = 2 THEN non_car_premium * max_non_car_receivable_ratio ELSE 0 END ) AS non_car_receivable_commission,
  243. SUM( CASE WHEN clearing_state_over = 1 THEN ivs.jq_premium * iss.compulsory_export_ratio ELSE 0 END ) AS jq_compulsory_premium,
  244. SUM( CASE WHEN clearing_state_over = 1 THEN ivs.sy_premium * iss.commercial_export_ratio ELSE 0 END ) AS sy_compulsory_premium,
  245. SUM( CASE WHEN clearing_state_over = 1 THEN ivs.non_car_premium * iss.non_vehicle_export_ratio ELSE 0 END ) AS non_car_compulsory_premium,
  246. SUM( CASE WHEN clearing_state_over = 0 THEN ivs.jq_premium * ivs.max_jq_receivable_ratio ELSE 0 END ) AS jq_profit,
  247. SUM( CASE WHEN clearing_state_over = 0 THEN ivs.sy_premium * ivs.max_sy_receivable_ratio ELSE 0 END ) AS sy_profit,
  248. SUM( CASE WHEN clearing_state_over = 0 THEN ivs.non_car_premium * ivs.max_non_car_receivable_ratio ELSE 0 END ) AS non_car_profit,
  249. SUM( CASE WHEN clearing_state_over = 2 THEN ivs.jq_premium * ivs.max_jq_receivable_ratio ELSE 0 END ) AS jq_orphan_profit,
  250. SUM( CASE WHEN clearing_state_over = 2 THEN ivs.sy_premium * ivs.max_sy_receivable_ratio ELSE 0 END ) AS sy_orphan_profit,
  251. SUM( CASE WHEN clearing_state_over = 2 THEN ivs.non_car_premium * ivs.max_non_car_receivable_ratio ELSE 0 END ) AS non_car_orphan_profit
  252. FROM
  253. ( SELECT *, CASE WHEN DATEDIFF( NOW(), signing_time ) > 90 THEN 2 ELSE inv_source.clearing_state END AS clearing_state_over FROM inv_source ) ivs
  254. LEFT JOIN inv_settlement_source iss ON ivs.licenseno = iss.licenseno
  255. WHERE
  256. 1=1
  257. <if test="insuranceDept != null and insuranceDept != ''">
  258. AND ivs.insurance_dept like ('%${insuranceDept}%')
  259. </if>
  260. <if test="signStartTime != null and signEndTime != ''">
  261. and ivs.signing_time BETWEEN #{signStartTime} and #{signEndTime}
  262. </if>
  263. <if test="insuranceId != null and insuranceId != ''">
  264. AND ivs.insurance_id = #{insuranceId}
  265. </if>
  266. group by ivs.insurance_id,insurance_name,insurance_dept
  267. </select>
  268. <select id="getTotalReceivableAmount" resultType="com.ydtech.modules.largescreen.model.InvInsuranceCompanySettlements">
  269. SELECT
  270. insurance_id,
  271. insurance_name,
  272. insurance_dept,
  273. sum( total_receivable_amount ) AS amount_receivable
  274. FROM
  275. inv_source
  276. WHERE
  277. signing_time BETWEEN #{startTime}
  278. AND #{endTime}
  279. GROUP BY
  280. insurance_id,
  281. insurance_name,
  282. insurance_dept
  283. </select>
  284. </mapper>