AgreementDataMapper.xml 15 KB

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