InvReceivableMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.ydtech.modules.inv.dao.InvReceivableMapper">
  6. <resultMap id="BaseResultMap" type="com.ydtech.modules.inv.model.vo.ReceivableResultVo">
  7. </resultMap>
  8. <select id="getReceivableList" resultType="com.ydtech.modules.inv.model.vo.ReceivableResultVo">
  9. SELECT
  10. DATE_FORMAT( signing_time, '%d' ) AS DAY,
  11. DATE_FORMAT( signing_time, '%Y-%m' ) AS yearmonth,
  12. DATE_FORMAT( signing_time, '%Y-%m-%d' ),
  13. insurance_id,
  14. insurance_name,
  15. sum( jq_premium_tax ) AS jq_premium_tax,
  16. sum( jq_premium ) AS jq_premium,
  17. sum( sy_premium_tax ) AS sy_premium_tax,
  18. sum( sy_premium ) AS sy_premium,
  19. sum( taxamount ) AS taxamount,
  20. sum( non_car_premium_tax ) AS non_car_premium_tax,
  21. sum( non_car_premium ) AS non_car_premium,
  22. sum( premium ) AS premium,
  23. sum( non_copying ) AS non_copying,
  24. sum( jq_premium_tax + sy_premium_tax + non_car_premium_tax ) AS total_permium,
  25. sum( premium + non_copying ) AS total_receivable,
  26. sum( subsidy_amount ) AS subsidy_amount,
  27. sum( total_receivable_amount ) AS total_receivable_amount
  28. FROM
  29. inv_source
  30. WHERE
  31. signing_time BETWEEN #{startTime}
  32. AND #{endTime}
  33. and insurance_id = #{insuranceId}
  34. GROUP BY
  35. insurance_id,
  36. insurance_name,
  37. DATE_FORMAT( signing_time,'%Y-%m-%d'),
  38. DATE_FORMAT( signing_time, '%d' ),
  39. DATE_FORMAT( signing_time, '%Y-%m' )
  40. </select>
  41. <select id="getSigningSourceResult" resultType="com.ydtech.modules.inv.model.vo.SigningSourceResultVo">
  42. SELECT
  43. DATE_FORMAT( signing_time, '%m') as day,
  44. DATE_FORMAT( signing_time, '%Y-%m' ) as yearmonth,
  45. <if test="insuranceId != null and insuranceId != ''">
  46. insurance_name,
  47. </if>
  48. sum( jq_premium_tax ) as jq_premium_tax,
  49. sum(jq_premium) as jq_premium,
  50. sum(sy_premium_tax) as sy_premium_tax,
  51. sum(sy_premium) as sy_premium,
  52. sum(taxamount) as taxamount,
  53. sum(non_car_premium_tax) as non_car_premium_tax,
  54. sum(non_car_premium) as non_car_premium,
  55. sum(premium) as premium,
  56. sum(non_copying) as non_copying,
  57. sum(jq_premium_tax + sy_premium_tax + non_car_premium_tax) as written_premium,
  58. sum(premium + non_copying) as total_receivable,
  59. sum(receivable) as total_amount_receivable
  60. FROM
  61. inv_source
  62. WHERE
  63. signing_time BETWEEN #{startTime}
  64. AND #{endTime}
  65. <!--and insurance_id = '123'-->
  66. <if test="insuranceId != null and insuranceId != ''">
  67. and insurance_id = #{insuranceId}
  68. </if>
  69. GROUP BY
  70. <if test="insuranceId != null and insuranceId != ''">
  71. insurance_id,
  72. insurance_name,
  73. </if>
  74. DATE_FORMAT(
  75. signing_time,
  76. '%Y-%m'),
  77. DATE_FORMAT( signing_time, '%m')
  78. </select>
  79. <select id="getSigningSourceDayResult" resultType="com.ydtech.modules.inv.model.vo.SigningSourceResultVo">
  80. SELECT
  81. DATE_FORMAT( signing_time, '%d') as day,
  82. DATE_FORMAT( signing_time, '%Y-%m-%d' ) as yearmonth,
  83. insurance_name,
  84. sum( jq_premium_tax ) as jq_premium_tax,
  85. sum(jq_premium) as jq_premium,
  86. sum(sy_premium_tax) as sy_premium_tax,
  87. sum(sy_premium) as sy_premium,
  88. sum(taxamount) as taxamount,
  89. sum(non_car_premium_tax) as non_car_premium_tax,
  90. sum(non_car_premium) as non_car_premium,
  91. sum(premium) as premium,
  92. sum(non_copying) as non_copying,
  93. sum(jq_premium_tax + sy_premium_tax + non_car_premium_tax) as written_premium,
  94. sum(premium + non_copying) as total_receivable,
  95. sum(receivable) as total_amount_receivable
  96. FROM
  97. inv_source
  98. WHERE
  99. signing_time BETWEEN #{startTime}
  100. AND #{endTime}
  101. <if test="insuranceId != null and insuranceId != ''">
  102. and insurance_id = #{insuranceId}
  103. </if>
  104. GROUP BY
  105. insurance_id,
  106. insurance_name,
  107. DATE_FORMAT(
  108. signing_time,
  109. '%Y-%m-%d'),
  110. DATE_FORMAT( signing_time, '%d' )
  111. </select>
  112. <select id="getSettlementSourceResult" resultType="com.ydtech.modules.inv.model.vo.SettlementSourceDataVo">
  113. SELECT
  114. DATE_FORMAT( agency_settlement_time, '%m' ) AS DAY,
  115. DATE_FORMAT( agency_settlement_time, '%Y-%m' ) AS settlement_date,
  116. insurance_company,
  117. sum( jq_premium_tax + sy_premium_tax + non_car_premium_tax ) AS settlement_premium,
  118. sum( settlement_amount ) AS agent_commission
  119. FROM
  120. inv_settlement_source
  121. WHERE
  122. sign_date = #{signDate}
  123. AND
  124. agency_settlement_time BETWEEN #{startTime}
  125. AND #{endTime}
  126. GROUP BY
  127. insurance_company,
  128. DATE_FORMAT(
  129. agency_settlement_time,
  130. '%Y-%m'),
  131. DATE_FORMAT( agency_settlement_time, '%m' )
  132. </select>
  133. <select id="getInsureCompany" resultType="com.ydtech.modules.esm.model.EsmInsCompany">
  134. SELECT
  135. eic.*
  136. FROM
  137. esm_ins_company eic,
  138. ptl_agreement pa
  139. WHERE
  140. eic.id = pa.insurance_company_id
  141. GROUP BY
  142. eic.id
  143. </select>
  144. <select id="getMaxReceivable" resultType="HashMap">
  145. SELECT
  146. DATE_FORMAT(
  147. signing_time,
  148. '%Y-%m-%d') as yeatmonth,
  149. sum( receivable ) as receivable
  150. FROM
  151. inv_source
  152. WHERE
  153. signing_time BETWEEN #{startTime} and #{endTime}
  154. GROUP BY
  155. DATE_FORMAT(
  156. signing_time,
  157. '%Y-%m-%d')
  158. </select>
  159. <select id="getUnsettledProfitCalculation" resultType="HashMap">
  160. SELECT
  161. DATE_FORMAT(
  162. signing_time,
  163. '%Y-%m-%d') as yeatmonth,
  164. sum( receivable ) - sum(max_receivable) as unsettled_profit_calculation
  165. FROM
  166. inv_source
  167. WHERE
  168. clearing_state = 0 and
  169. signing_time BETWEEN '2024-01-01' and '2024-01-31'
  170. GROUP BY
  171. DATE_FORMAT(
  172. signing_time,
  173. '%Y-%m-%d')
  174. </select>
  175. <select id="getReceivableAndSettlementPage" resultType="com.ydtech.modules.inv.model.vo.ReceivableAndSettlementVo">
  176. SELECT
  177. a.operations_team,
  178. a.channel_classification,
  179. a.sign_date,
  180. a.channel,
  181. a.licenseno,
  182. a.insured_name,
  183. a.insurance_id,
  184. a.insurance_company,
  185. a.insurance_dept_id,
  186. a.insurance_dept,
  187. a.insurance_type,
  188. a.business_owner,
  189. a.jq_policy_id,
  190. a.jq_premium_tax,
  191. a.jq_premium,
  192. a.sy_policy_id,
  193. a.sy_premium_tax,
  194. a.sy_premium,
  195. a.non_car_policy_id,
  196. a.non_car_premium_tax,
  197. a.non_car_premium,
  198. a.agency_settlement_time,
  199. a.taxamount,
  200. a.jq_receivable_ratio,
  201. a.jq_premium_ratio,
  202. a.jq_non_copying_ratio,
  203. a.sy_receivable_ratio,
  204. a.sy_premium_ratio,
  205. a.sy_non_copying_ratio,
  206. a.non_car_receivable_ratio,
  207. a.non_car_premium_ratio,
  208. a.non_car_non_copying_ratio,
  209. a.premium,
  210. a.non_copying,
  211. a.receivable,
  212. a.subsidy_ratio,
  213. a.subsidy_amount,
  214. a.max_jq_receivable_ratio,
  215. a.max_sy_receivable_ratio,
  216. a.max_non_car_receivable_ratio,
  217. a.max_receivable,
  218. (a.total_receivable_amount + a.subsidy_amount) as total_receivable_amount,
  219. a.settlement_amount,
  220. ( CASE a.clearing_state WHEN 1 THEN '已结算' WHEN 0 THEN '未结算' WHEN 2 THEN '孤儿单' END ) AS clearing_state,
  221. ( CASE a.insurance_clearing_state WHEN 1 THEN '已结算' WHEN 0 THEN '未结算' END ) AS insurance_clearing_state
  222. FROM
  223. (
  224. SELECT
  225. *
  226. FROM
  227. (
  228. SELECT
  229. iss.operations_team,
  230. iss.channel_classification,
  231. ivs.signing_time AS sign_date,
  232. iss.channel,
  233. ivs.licenseno,
  234. ivs.insured_name,
  235. ivs.insurance_id,
  236. ivs.insurance_name AS insurance_company,
  237. ivs.insurance_dept_id,
  238. ivs.insurance_dept,
  239. ivs.risk AS insurance_type,
  240. iss.business_owner,
  241. ivs.jq_policy_id,
  242. ivs.jq_premium_tax,
  243. ivs.jq_premium,
  244. ivs.sy_policy_id,
  245. ivs.sy_premium_tax,
  246. ivs.sy_premium,
  247. ivs.non_car_policy_id,
  248. ivs.non_car_premium_tax,
  249. ivs.non_car_premium,
  250. iss.agency_settlement_time,
  251. ivs.taxamount,
  252. ivs.jq_receivable_ratio,
  253. ivs.jq_premium_ratio,
  254. ivs.jq_non_copying_ratio,
  255. ivs.sy_receivable_ratio,
  256. ivs.sy_premium_ratio,
  257. ivs.sy_non_copying_ratio,
  258. ivs.non_car_receivable_ratio,
  259. ivs.non_car_premium_ratio,
  260. ivs.non_car_non_copying_ratio,
  261. ivs.premium,
  262. ivs.non_copying,
  263. ivs.receivable,
  264. iss.subsidy_ratio,
  265. iss.subsidy_amount,
  266. ivs.max_jq_receivable_ratio,
  267. ivs.max_sy_receivable_ratio,
  268. ivs.max_non_car_receivable_ratio,
  269. ivs.max_receivable,
  270. ivs.total_receivable_amount,
  271. iss.settlement_amount,
  272. CASE
  273. WHEN DATEDIFF( NOW(), signing_time ) > 90 THEN
  274. 2 ELSE ivs.clearing_state
  275. END AS clearing_state,
  276. insurance_clearing_state
  277. FROM
  278. inv_source ivs
  279. LEFT JOIN inv_settlement_source iss ON ivs.licenseno = iss.licenseno
  280. AND ivs.jq_policy_id = iss.jq_policy_id
  281. AND ivs.sy_policy_id = iss.sy_policy_id
  282. AND ivs.non_car_policy_id = iss.non_car_policy_id
  283. ) a
  284. ) a
  285. WHERE
  286. 1 =1
  287. <if test="param.signDateStartTime != null and param.signDateStartTime != ''">
  288. and a.sign_date between #{param.signDateStartTime} and #{param.signDateEndTime}
  289. </if>
  290. <if test="param.agencySettlementTimeStartTime != null and param.agencySettlementTimeStartTime != ''">
  291. and a.agency_settlement_time between #{param.agencySettlementTimeStartTime} and #{param.agencySettlementTimeEndTime}
  292. </if>
  293. <if test="param.operationsTeam != null and param.operationsTeam != ''">
  294. and a.operations_team = #{param.operationsTeam}
  295. </if>
  296. <if test="param.channelClassification != null and param.channelClassification != ''">
  297. and a.channel_classification = #{param.channelClassification}
  298. </if>
  299. <if test="param.channel != null and param.channel != ''">
  300. and a.channel = #{param.channel}
  301. </if>
  302. <if test="param.licenseNo != null and param.licenseNo != ''">
  303. and a.licenseno = #{param.licenseNo}
  304. </if>
  305. <if test="param.insuredName != null and param.insuredName != ''">
  306. and a.insured_name = #{param.insuredName}
  307. </if>
  308. <if test="param.insuranceId != null and param.insuranceId != ''">
  309. and a.insurance_id = #{param.insuranceId}
  310. </if>
  311. <if test="param.insuranceDeptId != null and param.insuranceDeptId != ''">
  312. and a.insurance_dept_id = #{param.insuranceDeptId}
  313. </if>
  314. <if test="param.clearingState != null and param.clearingState != ''">
  315. and a.clearing_state = #{param.clearingState}
  316. </if>
  317. <if test="param.insuranceClearingState != null and param.insuranceClearingState != ''">
  318. and a.insurance_clearing_state = #{param.insuranceClearingState}
  319. </if>
  320. <if test="param.insuranceDept != null and param.insuranceDept != ''">
  321. and a.insurance_dept = #{param.insuranceDept}
  322. </if>
  323. <if test="param.insuranceType != null and param.insuranceType != ''">
  324. and a.insurance_type = #{param.insuranceType}
  325. </if>
  326. <if test="param.jqPolicyId != null and param.jqPolicyId != ''">
  327. and a.jq_policy_id = #{param.jqPolicyId}
  328. </if>
  329. <if test="param.syPolicyId != null and param.syPolicyId != ''">
  330. and a.sy_policy_id = #{param.syPolicyId}
  331. </if>
  332. <if test="param.nonCarPolicyId != null and param.nonCarPolicyId != ''">
  333. and a.non_car_policy_id = #{param.nonCarPolicyId}
  334. </if>
  335. </select>
  336. <delete id="deleteReceivable">
  337. delete from inv_source
  338. where id in (${ids})
  339. </delete>
  340. </mapper>