ReceivableMapper.xml 110 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136
  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.jzg.organization.mapper.ReceivableMapper">
  4. <resultMap id="InsPlyIncomeResultMap" type="com.jzg.commons.entity.finance.po.InsPlyIncome">
  5. <result column="order_no" property="orderNo"/>
  6. <result column="dept_id" property="deptId"/>
  7. <result column="dept_name" property="deptName"/>
  8. <!-- 其他字段可不写,会自动映射 -->
  9. </resultMap>
  10. <select id="getAuditedOrder" resultMap="InsPlyIncomeResultMap">
  11. SELECT
  12. iop.order_no,
  13. ioci.license_no,
  14. io.company_id,
  15. iop.jq_policy_no,
  16. iop.sy_policy_no,
  17. iop.jy_policy_no,
  18. ioc.jq_premium,
  19. ioc.sy_premium,
  20. ioc.jy_premium,
  21. ioc.tax_premium,
  22. sd.id AS dept_id,
  23. sd.NAME AS dept_name,
  24. ifo.jq_commission_ratio as jq_supervise_costs_proportion,
  25. ifo.sy_commission_ratio as sy_supervise_costs_proportion,
  26. ifo.jy_commission_ratio as jy_supervise_costs_proportion,
  27. ifo.jq_commission_premium as jq_supervise_costs_premiums,
  28. ifo.sy_commission_premium as sy_supervise_costs_premiums,
  29. ifo.jy_commission_premium as jy_supervise_costs_premiums,
  30. ifo.jq_follow_ratio as jq_other_costs_proportion,
  31. ifo.sy_follow_ratio as sy_other_costs_proportion,
  32. ifo.jy_follow_ratio as jy_other_costs_proportion,
  33. ifo.jq_follow_premium as jq_other_costs_premiums,
  34. ifo.sy_follow_premium as sy_other_costs_premiums,
  35. ifo.jy_follow_premium as jy_other_costs_premiums,
  36. ifo.jq_receivable_premium,
  37. ifo.sy_receivable_premium,
  38. ifo.jy_receivable_premium,
  39. eic.name_simple,
  40. pa.id AS agreement_id,
  41. pa.agreement_name,
  42. pa.agreement_type,
  43. io.product_id,
  44. io.product_name,
  45. io.pay_time,
  46. io.signing_time,
  47. ifa.audit_status
  48. FROM
  49. ins_orders io
  50. LEFT JOIN ins_orders_policy iop ON io.id = iop.order_no AND iop.is_delete = 0
  51. LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no AND ioci.is_delete = 0
  52. LEFT JOIN ins_orders_costs ioc ON io.id = ioc.order_no AND ioc.is_delete = 0
  53. LEFT JOIN ins_fee_orders ifo ON io.id = ifo.order_no AND ifo.is_delete = 0
  54. LEFT JOIN esm_ins_company eic ON io.company_id = eic.id AND eic.is_delete = 0
  55. LEFT JOIN sys_user su ON su.mobile = io.real_quote_user_id AND su.is_delete = 0
  56. LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id AND suji.is_delete = 0
  57. LEFT JOIN sys_dept sd ON suji.dept_id = sd.id AND sd.is_delete = 0
  58. LEFT JOIN ptl_agreement pa ON io.agreement_id = pa.id AND pa.is_delete = 0
  59. LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id AND ifa.is_delete = 0
  60. <where>
  61. io.is_delete = 0
  62. AND io.id = #{orderNo}
  63. <if test="orderStatus != null and orderStatus != ''">
  64. AND io.order_status = #{orderStatus}
  65. </if>
  66. <if test="auditStatus != null and auditStatus != ''">
  67. AND ifa.audit_status = #{auditStatus}
  68. </if>
  69. <if test="agreementType != null and agreementType != ''">
  70. AND pa.agreement_type = #{agreementType}
  71. </if>
  72. </where>
  73. </select>
  74. <select id="getUnauditedOrder" resultMap="InsPlyIncomeResultMap">
  75. SELECT
  76. iop.order_no,
  77. ioci.license_no,
  78. io.company_id,
  79. iop.jq_policy_no,
  80. iop.sy_policy_no,
  81. iop.jy_policy_no,
  82. ioc.jq_premium,
  83. ioc.sy_premium,
  84. ioc.jy_premium,
  85. ioc.tax_premium,
  86. sd.id AS dept_id,
  87. sd.NAME AS dept_name,
  88. ifo.jq_commission_ratio as jq_supervise_costs_proportion,
  89. ifo.sy_commission_ratio as sy_supervise_costs_proportion,
  90. ifo.jy_commission_ratio as jy_supervise_costs_proportion,
  91. ifo.jq_commission_premium as jq_supervise_costs_premiums,
  92. ifo.sy_commission_premium as sy_supervise_costs_premiums,
  93. ifo.jy_commission_premium as jy_supervise_costs_premiums,
  94. ifo.jq_follow_ratio as jq_other_costs_proportion,
  95. ifo.sy_follow_ratio as sy_other_costs_proportion,
  96. ifo.jy_follow_ratio as jy_other_costs_proportion,
  97. ifo.jq_follow_premium as jq_other_costs_premiums,
  98. ifo.sy_follow_premium as sy_other_costs_premiums,
  99. ifo.jy_follow_premium as jy_other_costs_premiums,
  100. ifo.jq_receivable_premium,
  101. ifo.sy_receivable_premium,
  102. ifo.jy_receivable_premium,
  103. eic.name_simple,
  104. pa.id AS agreement_id,
  105. pa.agreement_name,
  106. pa.agreement_type,
  107. io.product_id,
  108. io.product_name,
  109. io.pay_time,
  110. io.signing_time,
  111. ifa.audit_status
  112. FROM
  113. ins_orders io
  114. LEFT JOIN ins_orders_policy iop ON io.id = iop.order_no AND iop.is_delete = 0
  115. LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no AND ioci.is_delete = 0
  116. LEFT JOIN ins_orders_costs ioc ON io.id = ioc.order_no AND ioc.is_delete = 0
  117. LEFT JOIN ins_fee_orders ifo ON io.id = ifo.order_no AND ifo.is_delete = 0
  118. LEFT JOIN esm_ins_company eic ON io.company_id = eic.id AND eic.is_delete = 0
  119. LEFT JOIN sys_user su ON su.mobile = io.real_quote_user_id AND su.is_delete = 0
  120. LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id AND suji.is_delete = 0
  121. LEFT JOIN sys_dept sd ON suji.dept_id = sd.id AND sd.is_delete = 0
  122. LEFT JOIN ptl_agreement pa ON io.agreement_id = pa.id AND pa.is_delete = 0
  123. LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id AND ifa.is_delete = 0
  124. <where>
  125. io.is_delete = 0
  126. AND io.id = #{orderNo}
  127. AND io.order_status = #{orderStatus}
  128. </where>
  129. </select>
  130. <select id="getUnauditedOrderList" resultMap="InsPlyIncomeResultMap">
  131. SELECT
  132. iop.order_no,
  133. ioci.license_no,
  134. io.company_id,
  135. iop.jq_policy_no,
  136. iop.sy_policy_no,
  137. iop.jy_policy_no,
  138. ioc.jq_premium,
  139. ioc.sy_premium,
  140. ioc.jy_premium,
  141. ioc.tax_premium,
  142. sd.id AS dept_id,
  143. sd.NAME AS dept_name,
  144. ifo.jq_commission_ratio as jq_supervise_costs_proportion,
  145. ifo.sy_commission_ratio as sy_supervise_costs_proportion,
  146. ifo.jy_commission_ratio as jy_supervise_costs_proportion,
  147. ifo.jq_commission_premium as jq_supervise_costs_premiums,
  148. ifo.sy_commission_premium as sy_supervise_costs_premiums,
  149. ifo.jy_commission_premium as jy_supervise_costs_premiums,
  150. ifo.jq_follow_ratio as jq_other_costs_proportion,
  151. ifo.sy_follow_ratio as sy_other_costs_proportion,
  152. ifo.jy_follow_ratio as jy_other_costs_proportion,
  153. ifo.jq_follow_premium as jq_other_costs_premiums,
  154. ifo.sy_follow_premium as sy_other_costs_premiums,
  155. ifo.jy_follow_premium as jy_other_costs_premiums,
  156. ifo.jq_receivable_premium,
  157. ifo.sy_receivable_premium,
  158. ifo.jy_receivable_premium,
  159. eic.name_simple,
  160. pa.id AS agreement_id,
  161. pa.agreement_name,
  162. pa.agreement_type,
  163. io.product_id,
  164. io.product_name,
  165. io.pay_time,
  166. io.signing_time,
  167. ifa.audit_status,
  168. io.docking_person as contact_person,
  169. io.docking_person_phone as contact_person_phone,
  170. pa.system_code
  171. FROM
  172. ins_orders io
  173. LEFT JOIN ins_orders_policy iop ON io.id = iop.order_no AND iop.is_delete = 0
  174. LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no AND ioci.is_delete = 0
  175. LEFT JOIN ins_orders_costs ioc ON io.id = ioc.order_no AND ioc.is_delete = 0
  176. LEFT JOIN ins_fee_orders ifo ON io.id = ifo.order_no AND ifo.is_delete = 0
  177. LEFT JOIN esm_ins_company eic ON io.company_id = eic.id AND eic.is_delete = 0
  178. LEFT JOIN sys_user su ON su.mobile = io.real_quote_user_id AND su.is_delete = 0
  179. LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id AND suji.is_delete = 0
  180. LEFT JOIN sys_dept sd ON suji.dept_id = sd.id AND sd.is_delete = 0
  181. LEFT JOIN ptl_agreement pa ON io.agreement_id = pa.id AND pa.is_delete = 0
  182. LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id AND ifa.is_delete = 0
  183. <where>
  184. io.is_delete = 0
  185. and io.system_code = #{systemCode}
  186. <if test="orderNo != null and orderNo.size > 0">
  187. AND io.id in
  188. <foreach collection="orderNo" item="id" open="(" separator="," close=")">
  189. #{id}
  190. </foreach>
  191. </if>
  192. AND io.order_status = #{orderStatus}
  193. <if test="auditStatus != null and auditStatus != ''">
  194. AND ifa.audit_status = #{auditStatus}
  195. </if>
  196. </where>
  197. </select>
  198. <!-- modify by lipf, 2026年5月18日14:56:29 和业务沟通后,业务王文琦,想要将开过票的订单也显示出来 -->
  199. <sql id="query">
  200. SELECT
  201. io.real_quote_user_id,
  202. io.real_quote_user_id as real_quote_user_name,
  203. io.signing_time,
  204. date(io.signing_time ) as sign_date,
  205. year(io.signing_time) as sign_year,
  206. ipi.id,
  207. io.id as 'orderNo',
  208. io.company_name,
  209. ipi.dept_name,
  210. ipi.agreement_name,
  211. ipi.agreement_id,
  212. io.product_name,
  213. io.entry_status,
  214. CASE io.entry_status
  215. WHEN 1 THEN '车险出单'
  216. WHEN 2 THEN '代客录单'
  217. WHEN 3 THEN '补录订单'
  218. ELSE ''
  219. END AS order_type,
  220. ipi.license_no,
  221. -- 1. 总应收金额 (修复了多余的右括号)
  222. (COALESCE(ipi.jq_receivable_premium, 0) + COALESCE(ipi.sy_receivable_premium, 0) + COALESCE(ipi.jy_receivable_premium, 0)) AS receivableAmount,
  223. -- 2. 总应收手续费 (为最后一个字段补充了默认值 0)
  224. (COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0)) AS superviseCostsPremiums,
  225. -- 3. 总应收跟单费 (修复了括号位置错误,并为最后一个字段补充了默认值 0)
  226. (COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0)) AS otherCostsPremiums,
  227. (COALESCE(ipi.jq_supervise_costs_proportion, 0) + COALESCE(ipi.jq_other_costs_proportion, 0)) AS jqTotalProportion,
  228. (COALESCE(ipi.sy_supervise_costs_proportion, 0) + COALESCE(ipi.sy_other_costs_proportion, 0)) AS syTotalProportion,
  229. (COALESCE(ipi.jy_supervise_costs_proportion, 0) + COALESCE(ipi.jy_other_costs_proportion, 0)) AS jyTotalProportion,
  230. ipi.jq_supervise_costs_premiums,
  231. ipi.sy_supervise_costs_premiums,
  232. ipi.jy_supervise_costs_premiums,
  233. ipi.jq_other_costs_premiums,
  234. ipi.sy_other_costs_premiums,
  235. ipi.jy_other_costs_premiums,
  236. COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums,0) as jyTotalPremiums,
  237. io.product_name,
  238. iocui.name AS insuredPerson,
  239. ipi.jq_premium,
  240. ipi.sy_premium,
  241. ipi.jy_premium,
  242. ipi.tax_premium,
  243. ipi.jq_receivable_premium,
  244. ipi.sy_receivable_premium,
  245. ipi.jy_receivable_premium,
  246. ipi.jq_supervise_costs_proportion,
  247. ipi.sy_supervise_costs_proportion,
  248. ipi.jy_supervise_costs_proportion,
  249. ipi.jq_other_costs_proportion,
  250. ipi.sy_other_costs_proportion,
  251. ipi.jy_other_costs_proportion,
  252. ipi.business_source,
  253. ipi.settlement_status,
  254. ipi.add_type,
  255. ior1.start_date as jq_start_date,
  256. ior2.start_date as sy_start_date,
  257. io.product_name AS productName,
  258. iop.jq_policy_no, -- 交强保单号
  259. iop.sy_policy_no, -- 商业保单号
  260. iop.jy_policy_no, -- 非车险保单号
  261. io.company_name,
  262. io.company_id,
  263. ipi.create_time,
  264. ipi.create_by,
  265. ipi.update_time,
  266. ipi.update_by,
  267. io.docking_person,
  268. eic.name_simple as companyNameSimple, ipi.contact_person , ipi.contact_person_phone
  269. FROM
  270. ins_ply_income ipi
  271. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  272. LEFT JOIN ins_orders_car_user_info iocui ON ipi.order_no = iocui.order_no and iocui.policy_person_type = '3' AND iocui.is_delete = 0
  273. LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507' AND ior1.is_delete = 0
  274. LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
  275. LEFT JOIN ins_orders_policy iop ON ipi.order_no = iop.order_no AND iop.is_delete = 0
  276. LEFT JOIN esm_ins_company eic on ipi.company_id = eic.id AND eic.is_delete = 0
  277. where
  278. ipi.is_delete = 0
  279. </sql>
  280. <!-- 查询应收订单总额 lipf 2026年6月4日10:22:57 -->
  281. <select id="queryAllTotalReceivablePremiumByOrderNo" resultType="java.math.BigDecimal">
  282. SELECT
  283. sum(COALESCE(ipi.jq_receivable_premium, 0) + COALESCE(ipi.sy_receivable_premium, 0) + COALESCE(ipi.jy_receivable_premium, 0) )
  284. from
  285. ins_ply_income ipi
  286. <where>
  287. ipi.order_no in
  288. <foreach collection="orders" item="order" open="(" separator="," close=")">
  289. #{order}
  290. </foreach>
  291. </where>
  292. </select>
  293. <!--根据保司id和订单号进行过滤 2026年5月12日15:06:40 lipf -->
  294. <select id="queryIncomeDatasByOrderIds" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
  295. <include refid="query"/>
  296. <if test="companyId != null and companyId != ''">
  297. AND io.company_id = #{companyId}
  298. </if>
  299. <if test="orderNos != null and orderNos.size() > 0">
  300. AND io.id in
  301. <foreach collection="orderNos" item="id" open="(" separator="," close=")">
  302. #{id}
  303. </foreach>
  304. </if>
  305. ORDER BY ipi.create_time DESC
  306. </select>
  307. <select id="getReceivablePage" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
  308. <include refid="query"/>
  309. and ipi.system_code = #{receivableQueryVo.systemCode}
  310. <if test="receivableQueryVo.invoiceId != null and receivableQueryVo.invoiceId != ''" >
  311. AND ipi.id in (
  312. select ipiil.income_id from ins_ply_income_invoice_link ipiil where ipiil.invoice_id = #{receivableQueryVo.invoiceId} and ipiil.is_delete = 0
  313. )
  314. </if>
  315. <if test="receivableQueryVo.typeAttr != null and receivableQueryVo.typeAttr != ''">
  316. AND io.real_quote_user_id in (select su.username from sys_user_jzg_info_salesman sujis
  317. left join sys_user_jzg_info suji on sujis.sys_user_jzg_info_id = suji.id and suji.is_delete = 0
  318. left join sys_user su on su.id = suji.user_id and su.is_delete = 0
  319. where sujis.type_attr =#{receivableQueryVo.typeAttr})
  320. </if>
  321. <if test = "receivableQueryVo.agreementType != null and receivableQueryVo.agreementType != ''">
  322. AND ipi.agreement_type = #{receivableQueryVo.agreementType}
  323. </if>
  324. <if test = "receivableQueryVo.ids != null and receivableQueryVo.ids.size > 0">
  325. AND ipi.id in
  326. <foreach collection="receivableQueryVo.ids" item="id" open="(" separator="," close=")">
  327. #{id}
  328. </foreach>
  329. </if>
  330. <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
  331. AND ipi.jy_premium != 0
  332. </if>
  333. <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
  334. AND ipi.license_no LIKE CONCAT('%', #{receivableQueryVo.licenseNo}, '%')
  335. </if>
  336. <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
  337. AND ipi.company_id = #{receivableQueryVo.companyId}
  338. </if>
  339. <if test="receivableQueryVo.businessSource != null and receivableQueryVo.businessSource != ''">
  340. AND ipi.business_source = #{receivableQueryVo.businessSource}
  341. </if>
  342. <if test="receivableQueryVo.settlementStatus != null and receivableQueryVo.settlementStatus != ''">
  343. AND ipi.settlement_status = #{receivableQueryVo.settlementStatus}
  344. </if>
  345. <if test="receivableQueryVo.addType != null and receivableQueryVo.addType != ''">
  346. AND ipi.add_type = #{receivableQueryVo.addType}
  347. </if>
  348. <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
  349. AND ipi.order_no = #{receivableQueryVo.orderNo}
  350. </if>
  351. <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
  352. AND ipi.agreement_id = #{receivableQueryVo.agreementId}
  353. </if>
  354. <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
  355. AND ipi.dept_id = #{receivableQueryVo.deptId}
  356. </if>
  357. <if test="receivableQueryVo.productId!= null and receivableQueryVo.productId!= ''">
  358. AND ipi.product_id = #{receivableQueryVo.productId}
  359. </if>
  360. <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
  361. AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and #{receivableQueryVo.signingTimeEnd}
  362. </if>
  363. <if test="receivableQueryVo.insuredName != null and receivableQueryVo.insuredName != ''">
  364. AND iocui.name = #{receivableQueryVo.insuredName}
  365. </if>
  366. <if test="receivableQueryVo.orderType != null and receivableQueryVo.orderType != ''">
  367. AND io.entry_status = #{receivableQueryVo.orderType}
  368. </if>
  369. <if test="receivableQueryVo.productName != null and receivableQueryVo.productName != ''">
  370. AND io.product_name = #{receivableQueryVo.productName}
  371. </if>
  372. <if test="receivableQueryVo.jqPolicyNo != null and receivableQueryVo.jqPolicyNo != ''">
  373. AND iop.jq_policy_no = #{receivableQueryVo.jqPolicyNo}
  374. </if>
  375. <if test="receivableQueryVo.syPolicyNo != null and receivableQueryVo.syPolicyNo != ''">
  376. AND iop.sy_policy_no = #{receivableQueryVo.syPolicyNo}
  377. </if>
  378. <if test="receivableQueryVo.jyPolicyNo != null and receivableQueryVo.jyPolicyNo != ''">
  379. AND iop.jy_policy_no = #{receivableQueryVo.jyPolicyNo}
  380. </if>
  381. <if test="receivableQueryVo.dockingPerson != null and receivableQueryVo.dockingPerson != ''">
  382. AND io.docking_person = #{receivableQueryVo.dockingPerson}
  383. </if>
  384. <if test="receivableQueryVo.jqStartDate != null and receivableQueryVo.jqStartDate != ''">
  385. AND ior1.start_date between #{receivableQueryVo.jqStartDate} and #{receivableQueryVo.jqEndDate}
  386. </if>
  387. <if test="receivableQueryVo.syStartDate != null and receivableQueryVo.syStartDate != ''">
  388. AND ior2.start_date between #{receivableQueryVo.syStartDate} and #{receivableQueryVo.syStartDate}
  389. </if>
  390. ORDER BY ipi.create_time DESC
  391. </select>
  392. <select id="getReceivableList" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
  393. <include refid="query"/>
  394. and ipi.system_code = #{receivableQueryVo.systemCode}
  395. <if test="receivableQueryVo.invoiceId != null and receivableQueryVo.invoiceId != ''" >
  396. AND ipi.id in (
  397. select ipiil.income_id from ins_ply_income_invoice_link ipiil where ipiil.invoice_id = #{receivableQueryVo.invoiceId} and ipiil.is_delete = 0
  398. )
  399. </if>
  400. <if test="receivableQueryVo.typeAttr != null and receivableQueryVo.typeAttr != ''">
  401. AND io.real_quote_user_id in (select su.username from sys_user_jzg_info_salesman sujis
  402. left join sys_user_jzg_info suji on sujis.sys_user_jzg_info_id = suji.id and suji.is_delete = 0
  403. left join sys_user su on su.id = suji.user_id and su.is_delete = 0
  404. where sujis.type_attr =#{receivableQueryVo.typeAttr})
  405. </if>
  406. <if test = "receivableQueryVo.agreementType != null and receivableQueryVo.agreementType != ''">
  407. AND ipi.agreement_type = #{receivableQueryVo.agreementType}
  408. </if>
  409. <if test = "receivableQueryVo.ids != null and receivableQueryVo.ids.size > 0">
  410. AND ipi.id in
  411. <foreach collection="receivableQueryVo.ids" item="id" open="(" separator="," close=")">
  412. #{id}
  413. </foreach>
  414. </if>
  415. <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
  416. AND ipi.supervise_settlement = 0
  417. </if>
  418. <if test="receivableQueryVo.queryType!= null and receivableQueryVo.queryType == 2">
  419. AND ipi.other_settlement = 0
  420. </if>
  421. <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
  422. AND ipi.jy_premium != 0
  423. AND ipi.jy_supervise_settlement = 0
  424. AND ipi.jy_other_settlement = 0
  425. </if>
  426. <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
  427. AND ipi.license_no LIKE CONCAT('%', #{receivableQueryVo.licenseNo}, '%')
  428. </if>
  429. <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
  430. AND ipi.company_id = #{receivableQueryVo.companyId}
  431. </if>
  432. <if test="receivableQueryVo.businessSource != null and receivableQueryVo.businessSource != ''">
  433. AND ipi.business_source = #{receivableQueryVo.businessSource}
  434. </if>
  435. <if test="receivableQueryVo.settlementStatus != null and receivableQueryVo.settlementStatus != ''">
  436. AND ipi.settlement_status = #{receivableQueryVo.settlementStatus}
  437. </if>
  438. <if test="receivableQueryVo.addType != null and receivableQueryVo.addType != ''">
  439. AND ipi.add_type = #{receivableQueryVo.addType}
  440. </if>
  441. <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
  442. AND ipi.order_no = #{receivableQueryVo.orderNo}
  443. </if>
  444. <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
  445. AND ipi.agreement_id = #{receivableQueryVo.agreementId}
  446. </if>
  447. <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
  448. AND ipi.dept_id = #{receivableQueryVo.deptId}
  449. </if>
  450. <if test="receivableQueryVo.productId!= null and receivableQueryVo.productId!= ''">
  451. AND ipi.product_id = #{receivableQueryVo.productId}
  452. </if>
  453. <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
  454. AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and #{receivableQueryVo.signingTimeEnd}
  455. </if>
  456. <if test="receivableQueryVo.insuredName != null and receivableQueryVo.insuredName != ''">
  457. AND iocui.name = #{receivableQueryVo.insuredName}
  458. </if>
  459. <if test="receivableQueryVo.orderType != null and receivableQueryVo.orderType != ''">
  460. AND io.entry_status = #{receivableQueryVo.orderType}
  461. </if>
  462. <if test="receivableQueryVo.productName != null and receivableQueryVo.productName != ''">
  463. AND io.product_name = #{receivableQueryVo.productName}
  464. </if>
  465. <if test="receivableQueryVo.jqPolicyNo != null and receivableQueryVo.jqPolicyNo != ''">
  466. AND iop.jq_policy_no = #{receivableQueryVo.jqPolicyNo}
  467. </if>
  468. <if test="receivableQueryVo.syPolicyNo != null and receivableQueryVo.syPolicyNo != ''">
  469. AND iop.sy_policy_no = #{receivableQueryVo.syPolicyNo}
  470. </if>
  471. <if test="receivableQueryVo.jyPolicyNo != null and receivableQueryVo.jyPolicyNo != ''">
  472. AND iop.jy_policy_no = #{receivableQueryVo.jyPolicyNo}
  473. </if>
  474. <if test="receivableQueryVo.dockingPerson != null and receivableQueryVo.dockingPerson != ''">
  475. AND io.docking_person = #{receivableQueryVo.dockingPerson}
  476. </if>
  477. <if test="receivableQueryVo.jqStartDate != null and receivableQueryVo.jqStartDate != ''">
  478. AND ior1.start_date between #{receivableQueryVo.jqStartDate} and #{receivableQueryVo.jqEndDate}
  479. </if>
  480. <if test="receivableQueryVo.syStartDate != null and receivableQueryVo.syStartDate != ''">
  481. AND ior2.start_date between #{receivableQueryVo.syStartDate} and #{receivableQueryVo.syStartDate}
  482. </if>
  483. ORDER BY ipi.create_time DESC
  484. </select>
  485. <select id="getSuperviseJyExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseJyExcelDto">
  486. SELECT
  487. ipi.signing_time as signingTime,
  488. ipi.order_no as orderNo,
  489. ipi.company_name as companyName,
  490. ipi.dept_name as deptName,
  491. ipi.agreement_name as agreementName,
  492. io.entry_status as entryStatus,
  493. ipi.license_no as licenseNo,
  494. (COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0) ) as receivableAmount,
  495. io.product_name as productName,
  496. iocui.name AS insuredPerson,
  497. ipi.jy_premium as jqPremium,
  498. ipi.jy_supervise_costs_proportion as jqSuperviseCostsProportion,
  499. ipi.jy_policy_no as jyPolicyNo,
  500. ior1.start_date as jqStartDate,
  501. ior2.start_date as syStartDate,
  502. ipi.create_time as createTime,
  503. ipi.contact_person as contactPerson
  504. FROM
  505. ins_ply_income ipi
  506. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  507. LEFT JOIN ins_orders_car_user_info iocui ON ipi.order_no = iocui.order_no and iocui.policy_person_type = '3' AND iocui.is_delete = 0
  508. LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507' AND ior1.is_delete = 0
  509. LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
  510. <where>
  511. ipi.is_delete = 0
  512. AND ipi.system_code = #{receivableQueryVo.systemCode}
  513. AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id AND ipil.is_delete = 0 )
  514. <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
  515. AND ipi.supervise_settlement = 0
  516. </if>
  517. <if test="receivableQueryVo.queryType!= null and receivableQueryVo.queryType == 2">
  518. AND ipi.other_settlement = 1
  519. </if>
  520. <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
  521. AND ipi.jy_premium != 0
  522. </if>
  523. <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
  524. AND ipi.license_no LIKE CONCAT('%', #{receivableQueryVo.licenseNo}, '%')
  525. </if>
  526. <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
  527. AND ipi.company_id = #{receivableQueryVo.companyId}
  528. </if>
  529. <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
  530. AND ipi.order_no = #{receivableQueryVo.orderNo}
  531. </if>
  532. <if test="receivableQueryVo.orderNos != null and receivableQueryVo.orderNos != ''">
  533. AND ipi.order_no IN
  534. <foreach collection="receivableQueryVo.orderNos" item="orderNo" open="(" separator="," close=")">
  535. #{orderNo}
  536. </foreach>
  537. </if>
  538. <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
  539. AND ipi.agreement_id = #{receivableQueryVo.agreementId}
  540. </if>
  541. <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
  542. AND ipi.dept_id = #{receivableQueryVo.deptId}
  543. </if>
  544. <if test="receivableQueryVo.productId!= null and receivableQueryVo.productId!= ''">
  545. AND ipi.product_id = #{receivableQueryVo.productId}
  546. </if>
  547. <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
  548. AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and #{receivableQueryVo.signingTimeEnd}
  549. </if>
  550. <if test="receivableQueryVo.agreementType != null and receivableQueryVo.agreementType != ''">
  551. AND ipi.agreement_type = #{receivableQueryVo.agreementType}
  552. </if>
  553. </where>
  554. ORDER BY ipi.create_time DESC
  555. </select>
  556. <select id="superviseSettlementExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementExcelDto">
  557. select
  558. ipiis.id as settlementId,
  559. ipiis.invoice_id as invoiceId,
  560. io.company_id,
  561. io.company_name,
  562. ipii.invoice_type,
  563. ipii.invoice_party,
  564. ipii.tax_point,
  565. ipiis.actual_received_amount,
  566. ipii.receivable_supervise_premium,
  567. ipiis.receive_payment_date,
  568. ipiis.create_by ,
  569. ipiis.create_time
  570. FROM
  571. ins_ply_income_invoice_settlement ipiis
  572. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiis.invoice_id AND ipii.is_delete = 0
  573. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  574. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  575. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  576. left join ptl_agreement agree on io.agreement_id = agree.id AND agree.is_delete = 0
  577. <where>
  578. ipiis.is_delete = 0
  579. AND ipiis.system_code = #{settlementQueryVo.systemCode}
  580. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  581. AND ipiis.id IN
  582. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  583. #{settlementId}
  584. </foreach>
  585. </if>
  586. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  587. AND ipii.invoice_type IN
  588. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  589. #{invoiceType}
  590. </foreach>
  591. </if>
  592. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  593. AND io.company_id = #{settlementQueryVo.companyId}
  594. </if>
  595. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  596. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  597. </if>
  598. <if test="settlementQueryVo.invoiceRiskType != null and settlementQueryVo.invoiceRiskType != ''">
  599. AND ipii.invoice_risk_type = #{settlementQueryVo.invoiceRiskType}
  600. </if>
  601. <if test="settlementQueryVo.status != null and settlementQueryVo.status != ''">
  602. AND ipii.status = #{settlementQueryVo.status}
  603. </if>
  604. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  605. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  606. </if>
  607. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  608. AND (agree.agreement_type = #{settlementQueryVo.agreementType} or agree.agreement_type is null)
  609. </if>
  610. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  611. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  612. </if>
  613. <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
  614. AND ipiis.id = #{settlementQueryVo.settlementId}
  615. </if>
  616. <if test="settlementQueryVo.settlementDateStart != null and settlementQueryVo.settlementDateStart != ''">
  617. AND ipiis.create_time >= date(#{settlementQueryVo.settlementDateStart})
  618. </if>
  619. <if test="settlementQueryVo.settlementDateEndStr != null and settlementQueryVo.settlementDateEndStr != ''">
  620. AND ipiis.create_time &lt;= date(#{settlementQueryVo.settlementDateEndStr})
  621. </if>
  622. </where>
  623. group by
  624. ipiis.id ,
  625. ipiis.invoice_id,
  626. io.company_id,
  627. io.company_name,
  628. ipii.invoice_type,
  629. ipii.invoice_party,
  630. ipii.tax_point,
  631. ipiis.actual_received_amount,
  632. ipii.receivable_supervise_premium,
  633. ipiis.receive_payment_date,
  634. ipiis.create_by ,
  635. ipiis.create_time
  636. order by ipiis.create_time desc
  637. </select>
  638. <select id="platformSettlementExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementExcelDto">
  639. SELECT
  640. ipiis.id AS settlementId,
  641. GROUP_CONCAT(DISTINCT ipiis.invoice_id SEPARATOR ',') AS invoiceId,
  642. GROUP_CONCAT(DISTINCT io.company_id SEPARATOR ',') AS company_id,
  643. GROUP_CONCAT(DISTINCT io.company_name SEPARATOR ',') AS company_name,
  644. GROUP_CONCAT(DISTINCT ipii.invoice_type SEPARATOR ',') AS invoice_type,
  645. GROUP_CONCAT(DISTINCT ipii.invoice_party SEPARATOR ',') AS invoice_party,
  646. GROUP_CONCAT(DISTINCT ipii.tax_point SEPARATOR ',') AS tax_point,
  647. GROUP_CONCAT(DISTINCT ipi.order_no SEPARATOR ',') AS orderNo,
  648. MAX(ipiis.actual_received_amount) AS actual_received_amount,
  649. MAX(ipiis.receive_payment_date) AS receive_payment_date,
  650. MAX(ipiis.create_by) AS create_by,
  651. MAX(ipiis.create_time) AS create_time
  652. FROM ins_ply_income_invoice_settlement ipiis
  653. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiis.invoice_id AND ipii.is_delete = 0
  654. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  655. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  656. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  657. LEFT JOIN ptl_agreement agree ON io.agreement_id = agree.id AND agree.is_delete = 0
  658. <where>
  659. ipiis.is_delete = 0
  660. AND ipiis.system_code = #{settlementQueryVo.systemCode}
  661. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  662. AND ipiis.id IN
  663. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  664. #{settlementId}
  665. </foreach>
  666. </if>
  667. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  668. AND ipii.invoice_type IN
  669. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  670. #{invoiceType}
  671. </foreach>
  672. </if>
  673. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  674. AND io.company_id = #{settlementQueryVo.companyId}
  675. </if>
  676. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  677. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  678. </if>
  679. <if test="settlementQueryVo.invoiceRiskType != null and settlementQueryVo.invoiceRiskType != ''">
  680. AND ipii.invoice_risk_type = #{settlementQueryVo.invoiceRiskType}
  681. </if>
  682. <if test="settlementQueryVo.status != null and settlementQueryVo.status != ''">
  683. AND ipii.status = #{settlementQueryVo.status}
  684. </if>
  685. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  686. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  687. </if>
  688. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  689. AND (agree.agreement_type = #{settlementQueryVo.agreementType} or agree.agreement_type is null)
  690. </if>
  691. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  692. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  693. </if>
  694. <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
  695. AND ipiis.id = #{settlementQueryVo.settlementId}
  696. </if>
  697. <if test="settlementQueryVo.settlementDateStart != null and settlementQueryVo.settlementDateStart != ''">
  698. AND ipiis.create_time >= date(#{settlementQueryVo.settlementDateStart})
  699. </if>
  700. <if test="settlementQueryVo.settlementDateEndStr != null and settlementQueryVo.settlementDateEndStr != ''">
  701. AND ipiis.create_time &lt;= date(#{settlementQueryVo.settlementDateEndStr})
  702. </if>
  703. </where>
  704. GROUP BY ipiis.id
  705. order by ipiis.create_time desc
  706. </select>
  707. <select id="followSettlementExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementExcelDto">
  708. SELECT
  709. ipiis.id AS settlementId,
  710. GROUP_CONCAT(DISTINCT ipiis.invoice_id SEPARATOR ',') AS invoiceId,
  711. GROUP_CONCAT(DISTINCT ipii.company_id SEPARATOR ',') AS company_id,
  712. GROUP_CONCAT(DISTINCT eic.name SEPARATOR ',') AS company_name,
  713. GROUP_CONCAT(DISTINCT ipii.invoice_type SEPARATOR ',') AS invoice_type,
  714. GROUP_CONCAT(DISTINCT ipii.invoice_party SEPARATOR ',') AS invoice_party,
  715. GROUP_CONCAT(DISTINCT ipii.tax_point SEPARATOR ',') AS tax_point,
  716. GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') AS settlement_payment_reason,
  717. MAX(COALESCE(ipiis.settlement_payment_difference, 0)) AS settlement_payment_difference,
  718. MAX(COALESCE(ipiis.actual_received_amount, 0)) AS actual_received_amount,
  719. MAX(ipiis.receive_payment_date) AS receive_payment_date,
  720. MAX(ipiis.create_by) AS create_by,
  721. MAX(ipiis.create_time) AS create_time
  722. FROM ins_ply_income_invoice_settlement ipiis
  723. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiis.invoice_id AND ipii.is_delete = 0
  724. LEFT JOIN ins_ply_follow_invoice_link link ON link.invoice_id = ipiis.invoice_id AND link.is_delete = 0
  725. LEFT JOIN ins_fee_follow_order fo ON fo.id = link.follow_id AND fo.is_delete = 0
  726. LEFT JOIN esm_ins_company eic ON ipii.company_id = eic.id AND eic.is_delete = 0
  727. <where>
  728. ipiis.is_delete = 0
  729. AND ipiis.system_code = #{settlementQueryVo.systemCode}
  730. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  731. AND ipiis.id IN
  732. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  733. #{settlementId}
  734. </foreach>
  735. </if>
  736. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  737. AND ipii.invoice_type IN
  738. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  739. #{invoiceType}
  740. </foreach>
  741. </if>
  742. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  743. AND ipii.company_id = #{settlementQueryVo.companyId}
  744. </if>
  745. <if test="settlementQueryVo.partnerCompanyId != null and settlementQueryVo.partnerCompanyId != ''">
  746. AND fo.partner_company_id = #{settlementQueryVo.partnerCompanyId}
  747. </if>
  748. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  749. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  750. </if>
  751. <if test="settlementQueryVo.invoiceRiskType != null and settlementQueryVo.invoiceRiskType != ''">
  752. AND ipii.invoice_risk_type = #{settlementQueryVo.invoiceRiskType}
  753. </if>
  754. <if test="settlementQueryVo.status != null and settlementQueryVo.status != ''">
  755. AND ipii.status = #{settlementQueryVo.status}
  756. </if>
  757. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  758. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  759. </if>
  760. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  761. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  762. </if>
  763. <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
  764. AND ipiis.id = #{settlementQueryVo.settlementId}
  765. </if>
  766. <if test="settlementQueryVo.settlementDateStart != null and settlementQueryVo.settlementDateStart != ''">
  767. AND ipiis.create_time >= date(#{settlementQueryVo.settlementDateStart})
  768. </if>
  769. <if test="settlementQueryVo.settlementDateEndStr != null and settlementQueryVo.settlementDateEndStr != ''">
  770. AND ipiis.create_time &lt;= date(#{settlementQueryVo.settlementDateEndStr})
  771. </if>
  772. </where>
  773. GROUP BY ipiis.id
  774. order by ipiis.create_time desc
  775. </select>
  776. <select id="followSettlementDetailExcel" resultType="com.jzg.commons.entity.finance.vo.InvoiceRecordResult">
  777. SELECT
  778. ipii.id,
  779. ipii.company_id,
  780. ipii.invoice_no,
  781. ipii.invoice_type,
  782. ipii.invoice_risk_type,
  783. CASE
  784. WHEN ipii.invoice_party = '1' THEN
  785. '我方开票' ELSE '保司开票'
  786. END as invoice_party,
  787. ipii.overinflated_amount,
  788. ipii.receivable_supervise_premium,
  789. ipii.tax_point,
  790. ipii.create_time,
  791. ipii.create_by,
  792. ipii.update_time,
  793. ipii.update_by,
  794. eic.name as company_name,
  795. eic.name_simple as companyNameSimple,
  796. sum( ipiis.actual_received_amount ) AS actual_received_amount,
  797. ipii.status,
  798. ipii.payment_reason,
  799. GROUP_CONCAT(DISTINCT iffo.year SEPARATOR ',') AS year,
  800. GROUP_CONCAT(DISTINCT iffo.month SEPARATOR ',') AS month,
  801. iffo.partner_company_id,
  802. ( select cp.name from esm_ins_company cp where cp.id = iffo.partner_company_id) as partner_company_name
  803. FROM
  804. ins_ply_income_invoice ipii
  805. LEFT JOIN ins_ply_follow_invoice_link ipfii ON ipii.id = ipfii.invoice_id AND ipfii.is_delete = 0
  806. LEFT JOIN ins_fee_follow_order iffo ON iffo.id = ipfii.follow_id AND iffo.is_delete = 0
  807. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
  808. LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
  809. <where>
  810. ipii.is_delete = 0
  811. AND ipii.system_code = #{settlementQueryVo.systemCode}
  812. <if test="settlementQueryVo.invoicePerson != null and settlementQueryVo.invoicePerson != ''">
  813. AND ipiis.create_by like concat('%',#{settlementQueryVo.invoicePerson},'%')
  814. </if>
  815. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  816. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  817. </if>
  818. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  819. AND ipii.id = #{settlementQueryVo.invoiceId}
  820. </if>
  821. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  822. AND ipii.company_id = #{settlementQueryVo.companyId}
  823. </if>
  824. <!-- 这里重复了invoiceParty判断,可以删掉重复的if标签 -->
  825. <if test="settlementQueryVo.status != null and settlementQueryVo.status != ''">
  826. AND ipii.status = #{settlementQueryVo.status}
  827. </if>
  828. <if test="settlementQueryVo.partnerCompanyId != null and settlementQueryVo.partnerCompanyId != ''">
  829. AND iffo.partner_company_id = #{settlementQueryVo.partnerCompanyId}
  830. </if>
  831. <!-- 严重逻辑错误:时间字段对比了金额字段 -->
  832. <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != '' and settlementQueryVo.settlementTimeEnd != null and settlementQueryVo.settlementTimeEnd != '' ">
  833. AND ipiis.create_time between #{settlementQueryVo.settlementTimeStart} and #{settlementQueryVo.settlementTimeEnd}
  834. </if>
  835. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  836. AND ipii.invoice_type IN
  837. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  838. #{invoiceType}
  839. </foreach>
  840. </if>
  841. </where>
  842. <if test="settlementQueryVo.settlementStatus != null and settlementQueryVo.settlementStatus != ''">
  843. HAVING CASE
  844. WHEN ipii.receivable_supervise_premium = SUM(ipiis.actual_received_amount) THEN '1'
  845. ELSE '0'
  846. END = #{settlementQueryVo.settlementStatus}
  847. </if>
  848. GROUP BY
  849. ipii.id,
  850. ipii.receivable_supervise_premium,
  851. ipii.invoice_type,
  852. ipii.company_id,
  853. ipii.invoice_party,
  854. iffo.partner_company_id
  855. ORDER BY ipii.create_time DESC
  856. </select>
  857. <select id="getSuperviseSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
  858. select ipi.contact_person, ipi.contact_person_phone,
  859. io.company_name as companyName,
  860. io.signing_time as signingTime,
  861. ipii.id as invoiceId,
  862. ipii.status as status,
  863. ipi.license_no as licenseNo,
  864. io.product_name as productName,
  865. ipii.invoice_type as invoiceType,
  866. ipii.invoice_party as invoiceParty,
  867. ipii.tax_point as taxPoint,
  868. (COALESCE(ipi.jq_supervise_costs_premiums,0) + COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0) ) as receivableSuperviseCosts,
  869. ipi.jq_premium as jqPremium,
  870. ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
  871. ipi.jq_policy_no as jqPolicyNo,
  872. ipi.sy_premium as syPremium,
  873. ipi.sy_supervise_costs_proportion as sySuperviseCostsProportion,
  874. ipi.sy_policy_no as syPolicyNo,
  875. ipi.jy_premium as jyPremium,
  876. ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
  877. ipi.jy_policy_no as jyPolicyNo,
  878. ipi.tax_premium as taxPremium
  879. FROM ins_ply_income_invoice ipii
  880. LEFT JOIN ins_ply_income_invoice_link ipil ON ipii.id = ipil.invoice_id AND ipil.is_delete = 0
  881. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  882. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  883. <where>
  884. ipii.is_delete = 0
  885. AND ipii.system_code = #{settlementQueryVo.systemCode}
  886. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  887. AND ipii.invoice_type IN
  888. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  889. #{invoiceType}
  890. </foreach>
  891. </if>
  892. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  893. AND ipii.id = #{settlementQueryVo.invoiceId}
  894. </if>
  895. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  896. AND ipi.company_id = #{settlementQueryVo.companyId}
  897. </if>
  898. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  899. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  900. </if>
  901. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  902. AND ipi.agreement_type = #{settlementQueryVo.agreementType}
  903. </if>
  904. </where>
  905. </select>
  906. <select id="getPlatFormSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
  907. select ipi.contact_person, ipi.contact_person_phone,
  908. ipiis.id as settlementId,
  909. ipiis.invoice_id as invoiceId,
  910. io.company_name as companyName,
  911. io.signing_time as signingTime,
  912. ipii.status as status,
  913. ipi.license_no as licenseNo,
  914. io.product_name as productName,
  915. ipii.invoice_type as invoiceType,
  916. ipii.invoice_party as invoiceParty,
  917. ipii.tax_point as taxPoint,
  918. COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0) AS receivableSuperviseCosts,
  919. ipi.jq_premium as jqPremium,
  920. ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
  921. ipi.jq_policy_no as jqPolicyNo,
  922. ipi.sy_premium as syPremium,
  923. ipi.sy_supervise_costs_proportion as sySuperviseCostsProportion,
  924. ipi.sy_policy_no as syPolicyNo,
  925. ipi.jy_premium as jyPremium,
  926. ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
  927. ipi.jy_policy_no as jyPolicyNo,
  928. ipi.tax_premium as taxPremium,
  929. ipii.create_by as invoicePerson,
  930. ipii.create_time as invoiceTime,
  931. ipiis.create_by as settlementPerson,
  932. ipiis.create_time as settlementTime
  933. FROM
  934. ins_ply_income_invoice ipii
  935. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
  936. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  937. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  938. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  939. <where>
  940. ipii.is_delete = 0
  941. AND ipii.system_code = #{settlementQueryVo.systemCode}
  942. <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
  943. AND ipiis.id = #{settlementQueryVo.settlementId}
  944. </if>
  945. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  946. AND ipiis.id IN
  947. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  948. #{settlementId}
  949. </foreach>
  950. </if>
  951. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  952. AND ipii.invoice_type IN
  953. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  954. #{invoiceType}
  955. </foreach>
  956. </if>
  957. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  958. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  959. </if>
  960. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  961. AND ipi.company_id = #{settlementQueryVo.companyId}
  962. </if>
  963. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  964. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  965. </if>
  966. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  967. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  968. </if>
  969. <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != ''">
  970. AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
  971. </if>
  972. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  973. AND ipi.agreement_type = #{settlementQueryVo.agreementType}
  974. </if>
  975. </where>
  976. </select>
  977. <select id="getSuperviseSettlementDetailJyExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailJyExcelDto">
  978. select
  979. ipiis.id as settlementId,
  980. ipiis.invoice_id as invoiceId,
  981. ipi.company_name as companyName,
  982. ipi.signing_time as signingTime,
  983. ipii.status as status,
  984. ipi.license_no as licenseNo,
  985. io.product_name as productName,
  986. ipii.invoice_type as invoiceType,
  987. ipii.invoice_party as invoiceParty,
  988. ipii.tax_point as taxPoint,
  989. (COALESCE(ipi.jq_supervise_costs_premiums,0) + COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0)) as receivableSuperviseCosts,
  990. ipi.jy_premium as jqPremium,
  991. ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
  992. ipi.jy_policy_no as jqPolicyNo,
  993. ipi.sy_policy_no as syPolicyNo,
  994. ipii.create_by as invoicePerson,
  995. ipii.create_time as invoiceTime,
  996. ipiis.create_by as settlementPerson,
  997. ipiis.create_time as settlementTime
  998. FROM
  999. ins_ply_income_invoice ipii
  1000. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
  1001. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  1002. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  1003. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  1004. <where>
  1005. ipii.is_delete = 0
  1006. AND ipii.system_code = #{settlementQueryVo.systemCode}
  1007. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  1008. AND ipiis.id IN
  1009. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  1010. #{settlementId}
  1011. </foreach>
  1012. </if>
  1013. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  1014. AND ipii.invoice_type IN
  1015. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1016. #{invoiceType}
  1017. </foreach>
  1018. </if>
  1019. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  1020. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  1021. </if>
  1022. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  1023. AND ipi.company_id = #{settlementQueryVo.companyId}
  1024. </if>
  1025. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  1026. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  1027. </if>
  1028. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  1029. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  1030. </if>
  1031. <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != ''">
  1032. AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
  1033. </if>
  1034. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  1035. AND ipi.agreement_type = #{settlementQueryVo.agreementType}
  1036. </if>
  1037. </where>
  1038. ORDER BY ipi.create_time DESC
  1039. </select>
  1040. <select id="getOtherExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportOtherExcelDto">
  1041. SELECT
  1042. ipi.signing_time as signingTime,
  1043. ipi.order_no as orderNo,
  1044. ipi.company_name as companyName,
  1045. ipi.dept_name as deptName,
  1046. ipi.agreement_name as agreementName,
  1047. io.entry_status as entryStatus,
  1048. ipi.license_no as licenseNo,
  1049. (COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0) ) as receivableAmount,
  1050. io.product_name as productName,
  1051. iocui.name AS insuredPerson,
  1052. ipi.jq_premium as jqPremium,
  1053. ipi.jq_other_costs_proportion as jqSuperviseCostsProportion,
  1054. ipi.jq_policy_no as jqPolicyNo,
  1055. ior1.start_date as jqStartDate,
  1056. ipi.sy_premium as syPremium,
  1057. ipi.sy_other_costs_proportion as syqSuperviseCostsProportion,
  1058. ipi.sy_policy_no as syPolicyNo,
  1059. ior2.start_date as syStartDate,
  1060. ipi.tax_premium as taxPremium,
  1061. ipi.create_time as createTime,
  1062. ipi.contact_person as contactPerson
  1063. FROM ins_ply_income ipi
  1064. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  1065. LEFT JOIN ins_orders_car_user_info iocui ON ipi.order_no = iocui.order_no and iocui.policy_person_type = '3' AND iocui.is_delete = 0
  1066. LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507' AND ior1.is_delete = 0
  1067. LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
  1068. <where>
  1069. ipi.is_delete = 0
  1070. AND ipi.system_code = #{receivableQueryVo.systemCode}
  1071. <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
  1072. AND ipi.supervise_settlement = 0
  1073. </if>
  1074. <if test="receivableQueryVo.queryType!= null and receivableQueryVo.queryType == 2">
  1075. AND ipi.other_settlement = 1
  1076. </if>
  1077. <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
  1078. AND ipi.jy_premium != 0
  1079. </if>
  1080. <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
  1081. AND ipi.license_no = #{receivableQueryVo.licenseNo}
  1082. </if>
  1083. <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
  1084. AND ipi.order_no = #{receivableQueryVo.orderNo}
  1085. </if>
  1086. <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
  1087. AND ipi.company_id = #{receivableQueryVo.companyId}
  1088. </if>
  1089. <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
  1090. AND ipi.dept_id = #{receivableQueryVo.deptId}
  1091. </if>
  1092. <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
  1093. AND ipi.agreement_id = #{receivableQueryVo.agreementId}
  1094. </if>
  1095. <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
  1096. AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and #{receivableQueryVo.signingTimeEnd}
  1097. </if>
  1098. </where>
  1099. ORDER BY ipi.create_time DESC
  1100. </select>
  1101. <select id="getOtherJyExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportOtherJyExcelDto">
  1102. SELECT
  1103. ipi.signing_time as signingTime,
  1104. ipi.order_no as orderNo,
  1105. ipi.company_name as companyName,
  1106. ipi.dept_name as deptName,
  1107. ipi.agreement_name as agreementName,
  1108. io.entry_status as entryStatus,
  1109. ipi.license_no as licenseNo,
  1110. (COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0) ) as receivableAmount,
  1111. ipi.product_name as productName,
  1112. iocui.name AS insuredPerson,
  1113. ipi.jy_premium as jyPremium,
  1114. ipi.jy_other_costs_proportion as jySuperviseCostsProportion,
  1115. ipi.jy_policy_no as jyPolicyNo,
  1116. ior1.start_date as jqStartDate,
  1117. ior2.start_date as syStartDate,
  1118. ipi.create_time as createTime
  1119. FROM ins_ply_income ipi
  1120. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  1121. LEFT JOIN ins_orders_car_user_info iocui ON ipi.order_no = iocui.order_no and iocui.policy_person_type = '3' AND iocui.is_delete = 0
  1122. LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507' AND ior1.is_delete = 0
  1123. LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
  1124. <where>
  1125. ipi.is_delete = 0
  1126. AND ipi.system_code = #{receivableQueryVo.systemCode}
  1127. <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
  1128. AND ipi.supervise_settlement = 0
  1129. </if>
  1130. <if test="receivableQueryVo.queryType!= null and receivableQueryVo.queryType == 2">
  1131. AND ipi.other_settlement = 1
  1132. </if>
  1133. <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
  1134. AND ipi.jy_premium != 0
  1135. </if>
  1136. <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
  1137. AND ipi.license_no = #{receivableQueryVo.licenseNo}
  1138. </if>
  1139. <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
  1140. AND ipi.order_no = #{receivableQueryVo.orderNo}
  1141. </if>
  1142. <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
  1143. AND ipi.company_id = #{receivableQueryVo.companyId}
  1144. </if>
  1145. <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
  1146. AND ipi.dept_id = #{receivableQueryVo.deptId}
  1147. </if>
  1148. <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
  1149. AND ipi.agreement_id = #{receivableQueryVo.agreementId}
  1150. </if>
  1151. <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
  1152. AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and #{receivableQueryVo.signingTimeEnd}
  1153. </if>
  1154. </where>
  1155. ORDER BY ipi.create_time DESC
  1156. </select>
  1157. <select id="getOtherSettlementExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportOtherSettlementExcelDto">
  1158. select
  1159. ipiis.id as settlementId,
  1160. ipiis.invoice_id as invoiceId,
  1161. ipi.company_name as companyName,
  1162. ipii.invoice_type as invoiceType,
  1163. ipii.invoice_party as invoiceParty,
  1164. ipii.tax_point as taxPoint,
  1165. ipiis.actual_received_amount as actualReceivedAmount,
  1166. ipiis.receive_payment_date as receivePaymentDate,
  1167. ipiis.create_by as createBy,
  1168. ipiis.create_time as createTime
  1169. FROM
  1170. ins_ply_income_invoice_settlement ipiis
  1171. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiis.invoice_id AND ipii.is_delete = 0
  1172. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  1173. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  1174. <where>
  1175. ipiis.is_delete = 0
  1176. AND ipiis.system_code = #{settlementQueryVo.systemCode}
  1177. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  1178. AND ipiis.id IN
  1179. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  1180. #{settlementId}
  1181. </foreach>
  1182. </if>
  1183. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  1184. AND ipii.invoice_type IN
  1185. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1186. #{invoiceType}
  1187. </foreach>
  1188. </if>
  1189. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  1190. AND ipii.agreement_type = #{settlementQueryVo.agreementType}
  1191. </if>
  1192. </where>
  1193. </select>
  1194. <select id="getOtherSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportOtherSettlementDetailExcelDto">
  1195. select
  1196. ipiis.id as settlementId,
  1197. ipiis.invoice_id as invoiceId,
  1198. ipi.company_name as companyName,
  1199. ipi.signing_time as signingTime,
  1200. ipii.status as status,
  1201. ipi.license_no as licenseNo,
  1202. io.product_name as productName,
  1203. ipii.invoice_type as invoiceType,
  1204. ipii.invoice_party as invoiceParty,
  1205. ipii.tax_point as taxPoint,
  1206. (COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0) ) as receivableOtherCosts,
  1207. ipi.jq_premium as jqPremium,
  1208. ipi.jq_other_costs_proportion as jqOtherCostsProportion,
  1209. ipi.jq_policy_no as jqPolicyNo,
  1210. ipi.sy_premium as syPremium,
  1211. ipi.sy_other_costs_proportion as syOtherCostsProportion,
  1212. ipi.sy_policy_no as syPolicyNo,
  1213. ipi.tax_premium as taxPremium,
  1214. ipii.create_by as invoicePerson,
  1215. ipii.create_time as invoiceTime,
  1216. ipiis.create_by as settlementPerson,
  1217. ipiis.create_time as settlementTime
  1218. FROM
  1219. ins_ply_income_invoice ipii
  1220. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
  1221. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  1222. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  1223. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  1224. <where>
  1225. ipii.is_delete = 0
  1226. AND ipii.system_code = #{settlementQueryVo.systemCode}
  1227. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  1228. AND ipiis.id IN
  1229. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  1230. #{settlementId}
  1231. </foreach>
  1232. </if>
  1233. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  1234. AND ipii.invoice_type IN
  1235. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1236. #{invoiceType}
  1237. </foreach>
  1238. </if>
  1239. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  1240. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  1241. </if>
  1242. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  1243. AND ipi.company_id = #{settlementQueryVo.companyId}
  1244. </if>
  1245. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  1246. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  1247. </if>
  1248. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  1249. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  1250. </if>
  1251. <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != ''">
  1252. AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
  1253. </if>
  1254. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  1255. AND ipi.agreement_type = #{settlementQueryVo.agreementType}
  1256. </if>
  1257. </where>
  1258. </select>
  1259. <select id="getOtherSettlementDetailJyExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportOtherSettlementDetailJyExcelDto">
  1260. select
  1261. ipiis.id as settlementId,
  1262. ipiis.invoice_id as invoiceId,
  1263. ipi.company_name as companyName,
  1264. ipi.signing_time as signingTime,
  1265. ipii.status as status,
  1266. ipi.license_no as licenseNo,
  1267. io.product_name as productName,
  1268. ipii.invoice_type as invoiceType,
  1269. ipii.invoice_party as invoiceParty,
  1270. ipii.tax_point as taxPoint,
  1271. (COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0) ) as receivableSuperviseCosts,
  1272. ipi.jy_premium as jqPremium,
  1273. ipi.jy_other_costs_proportion as jqOtherCostsProportion,
  1274. ipi.jy_policy_no as jqPolicyNo,
  1275. ipi.sy_policy_no as syPolicyNo,
  1276. ipii.create_by as invoicePerson,
  1277. ipii.create_time as invoiceTime,
  1278. ipiis.create_by as settlementPerson,
  1279. ipiis.create_time as settlementTime
  1280. FROM
  1281. ins_ply_income_invoice ipii
  1282. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
  1283. LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
  1284. LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
  1285. LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
  1286. <where>
  1287. ipii.is_delete = 0
  1288. AND ipii.system_code = #{settlementQueryVo.systemCode}
  1289. <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
  1290. AND ipiis.id IN
  1291. <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
  1292. #{settlementId}
  1293. </foreach>
  1294. </if>
  1295. <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
  1296. AND ipii.invoice_type IN
  1297. <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1298. #{invoiceType}
  1299. </foreach>
  1300. </if>
  1301. <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
  1302. AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
  1303. </if>
  1304. <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
  1305. AND ipi.company_id = #{settlementQueryVo.companyId}
  1306. </if>
  1307. <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
  1308. AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
  1309. </if>
  1310. <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
  1311. AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
  1312. </if>
  1313. <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != ''">
  1314. AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
  1315. </if>
  1316. <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
  1317. AND ipi.agreement_type = #{settlementQueryVo.agreementType}
  1318. </if>
  1319. </where>
  1320. </select>
  1321. <select id="getReceivableCompany" resultType="com.jzg.commons.entity.po.EsmInsCompany">
  1322. SELECT
  1323. eic.id,
  1324. eic.company_code,
  1325. eic.`name`
  1326. FROM
  1327. ins_ply_income ipi
  1328. LEFT JOIN esm_ins_company eic ON ipi.company_id = eic.id AND eic.is_delete = 0
  1329. <where>
  1330. ipi.is_delete = 0
  1331. AND ipi.id IN
  1332. <foreach collection="invoicingVo.incomeIds" item="id" open="(" separator="," close=")">
  1333. #{id}
  1334. </foreach>
  1335. </where>
  1336. GROUP BY
  1337. eic.company_code,
  1338. eic.`name`,
  1339. eic.id
  1340. </select>
  1341. <!-- 根据应收订单的编号,查询应收记录 lipf 2026年5月30日10:25:14 -->
  1342. <select id="queryIncomeByIds" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
  1343. SELECT ipi.* FROM ins_ply_income ipi
  1344. <where>
  1345. ipi.is_delete = 0
  1346. AND ipi.id IN
  1347. <foreach collection="invoicingVo.incomeIds" item="id" open="(" separator="," close=")">
  1348. #{id}
  1349. </foreach>
  1350. </where>
  1351. </select>
  1352. <select id="invoicingCheck" resultType="java.lang.Integer">
  1353. SELECT count(id) AS count
  1354. FROM ins_ply_income_invoice_link
  1355. <where>
  1356. is_delete = 0
  1357. <if test="invoicingVo.incomeIds != null and invoicingVo.incomeIds.size > 0">
  1358. AND income_id IN
  1359. <foreach collection="invoicingVo.incomeIds"
  1360. item="id" open="(" separator="," close=")">
  1361. #{id}
  1362. </foreach>
  1363. </if>
  1364. <if test="invoicingVo.invoiceType != null and invoicingVo.invoiceType != ''">
  1365. AND invoice_type = #{invoicingVo.invoiceType}
  1366. </if>
  1367. </where>
  1368. </select>
  1369. <!-- 查询订单绑定的发票信息 lipf 2026年5月21日11:56:19 -->
  1370. <select id="queryIncomeBindInvoice" resultType="com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceLink">
  1371. SELECT * FROM
  1372. ins_ply_income_invoice_link ipiil
  1373. <where>
  1374. ipiil.is_delete = 0
  1375. AND ipiil.income_id IN
  1376. <foreach collection="invoicingVo.incomeIds" item="id" open="(" separator="," close=")">
  1377. #{id}
  1378. </foreach>
  1379. </where>
  1380. </select>
  1381. <select id="getJqSumReceivable" resultType="java.util.Map">
  1382. SELECT
  1383. sum( jq_commission_premium ) AS jqCommissionPremium,
  1384. sum( sy_commission_premium ) AS syCommissionPremium,
  1385. sum( jy_commission_premium ) AS jyCommissionPremium,
  1386. sum( jq_follow_premium ) AS jqFollowPremium,
  1387. sum( sy_follow_premium ) AS syFollowPremium,
  1388. sum( jy_follow_premium ) AS jyFollowPremium
  1389. FROM
  1390. ins_fee_orders
  1391. <where>
  1392. is_delete = 0
  1393. AND order_no IN
  1394. <foreach collection="orderNos" item="id" open="(" separator="," close=")">
  1395. #{id}
  1396. </foreach>
  1397. </where>
  1398. </select>
  1399. <select id="getIncomeJqSumReceivable" resultType="java.util.Map">
  1400. SELECT
  1401. sum( jq_supervise_costs_premiums ) AS jqCommissionPremium,
  1402. sum( sy_supervise_costs_premiums ) AS syCommissionPremium,
  1403. sum( jy_supervise_costs_premiums ) AS jyCommissionPremium,
  1404. sum( jq_other_costs_premiums ) AS jqFollowPremium,
  1405. sum( sy_other_costs_premiums ) AS syFollowPremium,
  1406. sum( jy_other_costs_premiums ) AS jyFollowPremium
  1407. FROM
  1408. ins_ply_income
  1409. <where>
  1410. is_delete = 0
  1411. AND order_no IN
  1412. <foreach collection="orderNos" item="id" open="(" separator="," close=")">
  1413. #{id}
  1414. </foreach>
  1415. </where>
  1416. </select>
  1417. <select id="getInvoiceRecordList" resultType="com.jzg.commons.entity.finance.vo.InvoiceRecordResult">
  1418. SELECT
  1419. ipii.id,
  1420. ipii.company_id,
  1421. ipii.invoice_no,
  1422. ipii.invoice_type,
  1423. ipii.invoice_risk_type,
  1424. CASE
  1425. WHEN ipii.invoice_party = '1' THEN
  1426. '我方开票' ELSE '保司开票'
  1427. END as invoice_party,
  1428. ipii.overinflated_amount,
  1429. ipii.receivable_supervise_premium,
  1430. ipii.tax_point,
  1431. ipii.create_time,
  1432. ipii.create_by,
  1433. ipii.update_time,
  1434. ipii.update_by,
  1435. eic.name as company_name,
  1436. eic.name_simple as companyNameSimple,
  1437. sum( ipiis.actual_received_amount ) AS actual_received_amount,
  1438. GROUP_CONCAT(DISTINCT ipiis.settlement_payment_reason SEPARATOR ',') AS settlement_payment_reason,
  1439. ipii.status,
  1440. ipii.payment_reason
  1441. FROM
  1442. ins_ply_income_invoice ipii
  1443. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
  1444. LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
  1445. <where>
  1446. ipii.is_delete = 0 AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
  1447. <if test="invoiceRecordQueryVo.accountsReceivable != null and invoiceRecordQueryVo.accountsReceivable != ''">
  1448. AND ipii.invoice_risk_type = #{invoiceRecordQueryVo.accountsReceivable}
  1449. </if>
  1450. <if test="invoiceRecordQueryVo.recordId != null and invoiceRecordQueryVo.recordId != ''">
  1451. AND ipii.id = #{invoiceRecordQueryVo.recordId}
  1452. </if>
  1453. <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
  1454. AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
  1455. </if>
  1456. <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
  1457. AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
  1458. </if>
  1459. <if test="invoiceRecordQueryVo.invoiceTypes != null and invoiceRecordQueryVo.invoiceTypes != ''">
  1460. AND ipii.invoice_type IN
  1461. <foreach collection="invoiceRecordQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1462. #{invoiceType}
  1463. </foreach>
  1464. </if>
  1465. <if test="invoiceRecordQueryVo.invoiceParty != null and invoiceRecordQueryVo.invoiceParty != ''">
  1466. AND ipii.invoice_party = #{invoiceRecordQueryVo.invoiceParty}
  1467. </if>
  1468. <if test="invoiceRecordQueryVo.companyNameSimple != null and invoiceRecordQueryVo.companyNameSimple != ''">
  1469. AND eic.id = #{invoiceRecordQueryVo.companyNameSimple}
  1470. </if>
  1471. </where>
  1472. <if test="invoiceRecordQueryVo.settlementStatus != null and invoiceRecordQueryVo.settlementStatus != ''">
  1473. HAVING CASE
  1474. WHEN ipii.receivable_supervise_premium = SUM(ipiis.actual_received_amount) THEN '1'
  1475. ELSE '0'
  1476. END = #{invoiceRecordQueryVo.settlementStatus}
  1477. </if>
  1478. GROUP BY
  1479. ipii.id,
  1480. ipii.receivable_supervise_premium,
  1481. ipii.invoice_type,
  1482. ipii.company_id,
  1483. ipii.invoice_party
  1484. ORDER BY ipii.create_time DESC
  1485. </select>
  1486. <select id="getFollowInvoiceRecordList" resultType="com.jzg.commons.entity.finance.vo.InvoiceRecordResult">
  1487. SELECT
  1488. ipii.id,
  1489. ipii.company_id,
  1490. ipii.invoice_no,
  1491. ipii.invoice_type,
  1492. ipii.invoice_risk_type,
  1493. CASE
  1494. WHEN ipii.invoice_party = '1' THEN
  1495. '我方开票' ELSE '保司开票'
  1496. END as invoice_party,
  1497. ipii.overinflated_amount,
  1498. ipii.receivable_supervise_premium,
  1499. ipii.tax_point,
  1500. ipii.create_time,
  1501. ipii.create_by,
  1502. ipii.update_time,
  1503. ipii.update_by,
  1504. eic.name as company_name,
  1505. eic.name_simple as companyNameSimple,
  1506. sum( ipiis.actual_received_amount ) AS actual_received_amount,
  1507. ipii.status,
  1508. ipii.payment_reason,
  1509. GROUP_CONCAT(DISTINCT iffo.year SEPARATOR ',') AS year,
  1510. GROUP_CONCAT(DISTINCT iffo.month SEPARATOR ',') AS month,
  1511. iffo.partner_company_id,
  1512. ( select cp.name from esm_ins_company cp where cp.id = iffo.partner_company_id) as partner_company_name
  1513. FROM
  1514. ins_ply_income_invoice ipii
  1515. LEFT JOIN ins_ply_follow_invoice_link ipfii ON ipii.id = ipfii.invoice_id AND ipfii.is_delete = 0
  1516. LEFT JOIN ins_fee_follow_order iffo ON iffo.id = ipfii.follow_id AND iffo.is_delete = 0
  1517. LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
  1518. LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
  1519. <where>
  1520. ipii.is_delete = 0
  1521. AND ipii.system_code = #{invoiceRecordQueryVo.systemCode}
  1522. <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
  1523. AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
  1524. </if>
  1525. <if test="invoiceRecordQueryVo.accountsReceivable != null and invoiceRecordQueryVo.accountsReceivable != ''">
  1526. AND ipii.invoice_risk_type = #{invoiceRecordQueryVo.accountsReceivable}
  1527. </if>
  1528. <if test="invoiceRecordQueryVo.recordId != null and invoiceRecordQueryVo.recordId != ''">
  1529. AND ipii.id = #{invoiceRecordQueryVo.recordId}
  1530. </if>
  1531. <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
  1532. AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
  1533. </if>
  1534. <if test="invoiceRecordQueryVo.invoiceTypes != null and invoiceRecordQueryVo.invoiceTypes != ''">
  1535. AND ipii.invoice_type IN
  1536. <foreach collection="invoiceRecordQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1537. #{invoiceType}
  1538. </foreach>
  1539. </if>
  1540. <if test="invoiceRecordQueryVo.invoiceParty != null and invoiceRecordQueryVo.invoiceParty != ''">
  1541. AND ipii.invoice_party = #{invoiceRecordQueryVo.invoiceParty}
  1542. </if>
  1543. <if test="invoiceRecordQueryVo.companyNameSimple != null and invoiceRecordQueryVo.companyNameSimple != ''">
  1544. AND eic.id = #{invoiceRecordQueryVo.companyNameSimple}
  1545. </if>
  1546. </where>
  1547. <if test="invoiceRecordQueryVo.settlementStatus != null and invoiceRecordQueryVo.settlementStatus != ''">
  1548. HAVING CASE
  1549. WHEN ipii.receivable_supervise_premium = SUM(ipiis.actual_received_amount) THEN '1'
  1550. ELSE '0'
  1551. END = #{invoiceRecordQueryVo.settlementStatus}
  1552. </if>
  1553. GROUP BY
  1554. ipii.id,
  1555. ipii.receivable_supervise_premium,
  1556. ipii.invoice_type,
  1557. ipii.company_id,
  1558. ipii.invoice_party,
  1559. iffo.partner_company_id
  1560. ORDER BY ipii.create_time DESC
  1561. </select>
  1562. <!-- 基础结果集映射 -->
  1563. <resultMap id="BaseResultMap" type="com.jzg.commons.entity.finance.dto.CompanySuperviseSettlementReportDto">
  1564. <result column="company_id" property="companyId"/>
  1565. <result column="company_name" property="companyName"/>
  1566. <result column="total_receivable" property="totalReceivable"/>
  1567. <result column="total_follow_fee" property="totalFollowFee"/>
  1568. <result column="supervise_fee" property="superviseFee"/>
  1569. <result column="follow_fee" property="followFee"/>
  1570. <result column="invoiced_amount" property="invoicedAmount"/>
  1571. <result column="settled_amount" property="settledAmount"/>
  1572. <result column="un_invoiced_amount" property="unInvoicedAmount"/>
  1573. <result column="un_settled_amount" property="unSettledAmount"/>
  1574. </resultMap>
  1575. <!-- 优化:一次性查询所有公司数据,替代递归查库 -->
  1576. <select id="selectAllCompanies" resultMap="BaseResultMap">
  1577. SELECT
  1578. eic.id as company_id,
  1579. eic.parent_id,
  1580. eic.name as company_name,
  1581. COALESCE(SUM(COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0) ), 0) as total_receivable,
  1582. COALESCE(SUM(COALESCE(ipi.jq_supervise_costs_premiums,0) + COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0) ), 0) as supervise_fee,
  1583. COALESCE(SUM(COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) +COALESCE(ipi.jy_other_costs_premiums,0) ), 0) as follow_fee,
  1584. COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
  1585. COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
  1586. COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
  1587. FROM
  1588. esm_ins_company eic
  1589. LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{agreementType} AND ipi.is_delete = 0
  1590. LEFT JOIN (
  1591. SELECT
  1592. ipiil.income_id,
  1593. ipii.invoice_time,
  1594. SUM(ipii.receivable_supervise_premium) as total_invoice,
  1595. SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
  1596. SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
  1597. FROM ins_ply_income_invoice_link ipiil
  1598. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiil.invoice_id AND ipii.is_delete = 0
  1599. <where>
  1600. ipiil.is_delete = 0
  1601. <if test="invoiceTypes != null and invoiceTypes.size() > 0">
  1602. AND ipii.invoice_type IN
  1603. <foreach item="item" collection="invoiceTypes" separator="," open="(" close=")">
  1604. #{item}
  1605. </foreach>
  1606. </if>
  1607. <if test="status != null and status != ''">
  1608. AND ipii.status = #{status}
  1609. </if>
  1610. </where>
  1611. GROUP BY ipiil.income_id, ipii.invoice_time
  1612. ) invoice_summary ON invoice_summary.income_id = ipi.id
  1613. LEFT JOIN (
  1614. SELECT
  1615. ifo.order_no,
  1616. SUM(DISTINCT (COALESCE(ifo.jq_commission_premium,0) + COALESCE(ifo.sy_commission_premium,0) + COALESCE(ifo.jy_commission_premium,0) )) as total_commission
  1617. FROM ins_fee_orders ifo
  1618. WHERE ifo.is_delete = 0
  1619. GROUP BY ifo.order_no
  1620. ) fee_summary ON ipi.order_no = fee_summary.order_no
  1621. <where>
  1622. eic.is_delete = 0
  1623. <if test="companyId != null and companyId != ''">
  1624. AND eic.id = #{companyId}
  1625. </if>
  1626. <if test="startTime != null and startTime != ''">
  1627. AND ipi.signing_time BETWEEN #{startTime} AND #{endTime}
  1628. AND (
  1629. invoice_summary.invoice_time BETWEEN #{startTime} AND #{endTime}
  1630. OR invoice_summary.invoice_time IS NULL
  1631. )
  1632. </if>
  1633. </where>
  1634. GROUP BY eic.id, eic.name, eic.parent_id
  1635. </select>
  1636. <select id="selectAllCompanyReports" resultMap="BaseResultMap">
  1637. SELECT
  1638. eic.id AS company_id,
  1639. eic.parent_id AS parent_id,
  1640. eic.NAME AS company_name,
  1641. COALESCE ( SUM( COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0) ), 0 ) AS total_receivable,
  1642. COALESCE ( SUM( COALESCE(ipi.jq_supervise_costs_premiums,0) + COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0) ), 0 ) AS supervise_fee,
  1643. COALESCE ( SUM( COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0) ), 0 ) AS follow_fee,
  1644. COALESCE ( SUM( invoice_summary.total_invoice ), 0 ) AS invoiced_amount,
  1645. COALESCE ( SUM( invoice_summary.settled_invoice ), 0 ) AS settled_amount,
  1646. COALESCE ( SUM( invoice_summary.unsettled_invoice ), 0 ) AS un_settled_amount
  1647. FROM
  1648. esm_ins_company eic
  1649. LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id AND ipi.agreement_type = #{queryVo.agreementType} AND ipi.is_delete = 0
  1650. LEFT JOIN (
  1651. SELECT
  1652. ipiil.income_id,
  1653. SUM( ipii.receivable_supervise_premium ) AS total_invoice,
  1654. SUM( CASE WHEN ipii.STATUS = 1 THEN ipii.receivable_supervise_premium ELSE 0 END ) AS settled_invoice,
  1655. SUM( CASE WHEN ipii.STATUS = 0 THEN ipii.receivable_supervise_premium ELSE 0 END ) AS unsettled_invoice
  1656. FROM
  1657. ins_ply_income_invoice_link ipiil
  1658. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiil.invoice_id AND ipii.is_delete = 0
  1659. <where>
  1660. ipiil.is_delete = 0
  1661. <if test="queryVo.invoiceTypes != null and queryVo.invoiceTypes.size() > 0">
  1662. AND ipii.invoice_type IN
  1663. <foreach item="item" collection="queryVo.invoiceTypes" separator="," open="(" close=")">
  1664. #{item}
  1665. </foreach>
  1666. </if>
  1667. </where>
  1668. GROUP BY
  1669. ipiil.income_id
  1670. ) invoice_summary ON invoice_summary.income_id = ipi.id
  1671. <where>
  1672. eic.is_delete = 0
  1673. <if test="queryVo.companyId != null and queryVo.companyId != ''">
  1674. AND eic.id = #{queryVo.companyId}
  1675. </if>
  1676. </where>
  1677. GROUP BY
  1678. eic.id,
  1679. eic.parent_id,
  1680. eic.name
  1681. </select>
  1682. <!-- 获取根级保险公司(parent_id为0) -->
  1683. <select id="selectRootCompanies" resultMap="BaseResultMap">
  1684. SELECT
  1685. eic.id as company_id,
  1686. eic.name as company_name,
  1687. COALESCE(SUM(COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0) ), 0) as total_receivable,
  1688. COALESCE(SUM(COALESCE(ipi.jq_supervise_costs_premiums,0) +COALESCE(ipi.sy_supervise_costs_premiums,0) +COALESCE(ipi.jy_supervise_costs_premiums,0) ), 0) as supervise_fee,
  1689. COALESCE(SUM(COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0)), 0) as follow_fee,
  1690. COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
  1691. COALESCE(SUM(fee_summary.total_commission) - SUM(invoice_summary.total_invoice), 0) as un_invoiced_amount,
  1692. COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
  1693. COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
  1694. FROM
  1695. esm_ins_company eic
  1696. LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{settlementReportQueryVo.agreementType} AND ipi.is_delete = 0
  1697. LEFT JOIN (
  1698. SELECT
  1699. ipiil.income_id,
  1700. ipii.invoice_time,
  1701. SUM(ipii.receivable_supervise_premium) as total_invoice,
  1702. SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
  1703. SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
  1704. FROM ins_ply_income_invoice_link ipiil
  1705. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiil.invoice_id AND ipii.is_delete = 0
  1706. <where>
  1707. ipiil.is_delete = 0
  1708. <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0">
  1709. AND ipii.invoice_type IN
  1710. <foreach item="item" collection="settlementReportQueryVo.invoiceTypes" separator="," open="(" close=")">
  1711. #{item}
  1712. </foreach>
  1713. </if>
  1714. <if test="settlementReportQueryVo.status != null and settlementReportQueryVo.status != ''">
  1715. AND ipii.status = #{settlementReportQueryVo.status}
  1716. </if>
  1717. </where>
  1718. GROUP BY ipiil.income_id, ipii.invoice_time
  1719. ) invoice_summary ON invoice_summary.income_id = ipi.id
  1720. LEFT JOIN (
  1721. SELECT
  1722. ifo.order_no,
  1723. SUM(DISTINCT (COALESCE(ifo.jq_commission_premium,0) + COALESCE(ifo.sy_commission_premium,0) + COALESCE(ifo.jy_commission_premium,0) )) as total_commission
  1724. FROM ins_fee_orders ifo
  1725. WHERE ifo.is_delete = 0
  1726. GROUP BY ifo.order_no
  1727. ) fee_summary ON ipi.order_no = fee_summary.order_no
  1728. <where>
  1729. eic.parent_id = 0
  1730. AND eic.is_delete = 0
  1731. <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
  1732. AND eic.id = #{settlementReportQueryVo.companyId}
  1733. </if>
  1734. <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
  1735. AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1736. AND (
  1737. invoice_summary.invoice_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1738. OR invoice_summary.invoice_time IS NULL
  1739. )
  1740. </if>
  1741. </where>
  1742. GROUP BY
  1743. eic.id,
  1744. eic.name
  1745. </select>
  1746. <!-- 获取子公司 -->
  1747. <select id="selectChildrenByParentId" resultMap="BaseResultMap">
  1748. SELECT
  1749. eic.id as company_id,
  1750. eic.name as company_name,
  1751. COALESCE(SUM(COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0) ), 0) as total_receivable,
  1752. COALESCE(SUM(COALESCE(ipi.jq_supervise_costs_premiums,0) +COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0) ), 0) as supervise_fee,
  1753. COALESCE(SUM(invoice_summary.total_invoice), 0) as invoiced_amount,
  1754. COALESCE(SUM(invoice_summary.settled_invoice), 0) as settled_amount,
  1755. COALESCE(SUM(invoice_summary.unsettled_invoice), 0) as un_settled_amount
  1756. FROM
  1757. esm_ins_company eic
  1758. LEFT JOIN ins_ply_income ipi ON eic.id = ipi.company_id and ipi.agreement_type = #{settlementReportQueryVo.agreementType} AND ipi.is_delete = 0
  1759. LEFT JOIN (
  1760. SELECT
  1761. ipiil.income_id,
  1762. SUM(ipii.receivable_supervise_premium) as total_invoice,
  1763. SUM(CASE WHEN ipii.status = 1 THEN ipii.receivable_supervise_premium ELSE 0 END) as settled_invoice,
  1764. SUM(CASE WHEN ipii.status = 0 THEN ipii.receivable_supervise_premium ELSE 0 END) as unsettled_invoice
  1765. FROM ins_ply_income_invoice_link ipiil
  1766. LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiil.invoice_id AND ipii.is_delete = 0
  1767. <where>
  1768. ipiil.is_delete = 0
  1769. <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0">
  1770. AND ipii.invoice_type IN
  1771. <foreach item="item" collection="settlementReportQueryVo.invoiceTypes" separator="," open="(" close=")">
  1772. #{item}
  1773. </foreach>
  1774. </if>
  1775. <if test="settlementReportQueryVo.status != null and settlementReportQueryVo.status != ''">
  1776. AND ipii.status = #{settlementReportQueryVo.status}
  1777. </if>
  1778. </where>
  1779. GROUP BY ipiil.income_id
  1780. ) invoice_summary ON invoice_summary.income_id = ipi.id
  1781. <where>
  1782. eic.is_delete = 0
  1783. AND eic.parent_id = #{parentId}
  1784. <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
  1785. AND eic.id = #{settlementReportQueryVo.companyId}
  1786. </if>
  1787. <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
  1788. AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1789. AND (invoice_summary.invoiceTime BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1790. OR invoice_summary.invoiceTime IS NULL)
  1791. </if>
  1792. <if test="settlementReportQueryVo.status != null and settlementReportQueryVo.status != ''">
  1793. AND ipi.status = #{settlementReportQueryVo.status}
  1794. </if>
  1795. </where>
  1796. GROUP BY
  1797. eic.id,
  1798. eic.name
  1799. </select>
  1800. <select id="getSuperviseAmount" resultType="com.jzg.commons.entity.finance.dto.InvoiceAmountDto">
  1801. SELECT
  1802. eic.id AS companyId,
  1803. eic.name AS companyName,
  1804. SUM(COALESCE(ifo.jq_commission_premium, 0) + COALESCE(ifo.sy_commission_premium, 0) + COALESCE(ifo.jy_commission_premium, 0)) AS superviseAmount
  1805. FROM
  1806. esm_ins_company eic
  1807. LEFT JOIN ptl_agreement pa ON pa.company_id = CAST(eic.id AS CHAR) COLLATE utf8mb4_general_ci AND pa.is_delete = 0
  1808. LEFT JOIN ins_fee_orders ifo ON pa.id = ifo.agreement_id AND ifo.is_delete = 0
  1809. WHERE eic.is_delete = 0
  1810. GROUP BY
  1811. eic.id, eic.name
  1812. ORDER BY eic.name
  1813. </select>
  1814. <!-- invoice 表是income表 聚合得到的,因此,不能将income left jion invoide, 后对invoice的金额进行求和 2026年6月22日15:39:34 -->
  1815. <select id="getReceiverSettlementReport" resultType="com.jzg.commons.entity.finance.dto.ReceiverSettlementReportDto">
  1816. SELECT
  1817. ipi.contact_person AS receiver,
  1818. ipi.company_id,
  1819. SUM(COALESCE(ipi.jq_supervise_costs_premiums,0) +COALESCE(ipi.sy_supervise_costs_premiums,0) +COALESCE(ipi.jy_supervise_costs_premiums,0) ) AS superviseFee,
  1820. SUM(COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) +COALESCE(ipi.jy_other_costs_premiums,0) ) AS followFee,
  1821. SUM(
  1822. (COALESCE(ipi.jq_supervise_costs_premiums,0) + COALESCE(ipi.sy_supervise_costs_premiums,0) + COALESCE(ipi.jy_supervise_costs_premiums,0)) +
  1823. (COALESCE(ipi.jq_other_costs_premiums,0) + COALESCE(ipi.sy_other_costs_premiums,0) + COALESCE(ipi.jy_other_costs_premiums,0))
  1824. ) AS totalReceivable,
  1825. --SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledSuperviseFee,
  1826. -- SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledFollowFee,
  1827. -- SUM(CASE WHEN ipii.`status` = 1 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS settledAmount,
  1828. -- SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledSuperviseFee
  1829. -- ,SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type in (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledFollowFee,
  1830. -- SUM(CASE WHEN ipii.`status` = 0 AND ipii.invoice_type IN (5,6) THEN ipii.receivable_supervise_premium ELSE 0 END) AS unSettledAmount,
  1831. GROUP_CONCAT(distinct ipii.id) as invoice_ids
  1832. FROM
  1833. ins_ply_income ipi
  1834. LEFT JOIN ins_ply_income_invoice_link ipil ON ipi.id = ipil.income_id AND ipil.is_delete = 0
  1835. LEFT JOIN ins_ply_income_invoice ipii
  1836. ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
  1837. <if test="settlementReportQueryVo.invoiceTypes != null and settlementReportQueryVo.invoiceTypes.size() > 0" >
  1838. and ipii.invoice_type in
  1839. <foreach collection="settlementReportQueryVo.invoiceTypes" item="id" open="(" separator="," close=")">
  1840. #{id}
  1841. </foreach>
  1842. </if>
  1843. <where>
  1844. ipi.is_delete = 0
  1845. AND ipi.agreement_type = '1'
  1846. AND ipi.system_code = #{settlementReportQueryVo.systemCode}
  1847. <if test="settlementReportQueryVo.companyId != null and settlementReportQueryVo.companyId != ''">
  1848. AND ipi.company_id = #{settlementReportQueryVo.companyId}
  1849. </if>
  1850. <if test="settlementReportQueryVo.receiver != null and settlementReportQueryVo.receiver != ''">
  1851. AND ipi.contact_person = #{settlementReportQueryVo.receiver}
  1852. </if>
  1853. <if test="settlementReportQueryVo.startTime != null and settlementReportQueryVo.startTime != ''">
  1854. AND ipi.signing_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1855. AND (ipii.invoice_time BETWEEN #{settlementReportQueryVo.startTime} AND #{settlementReportQueryVo.endTime}
  1856. OR ipii.invoice_time IS NULL)
  1857. </if>
  1858. </where>
  1859. GROUP BY
  1860. ipi.contact_person,
  1861. ipi.company_id
  1862. </select>
  1863. <!-- 根据发票序号查询结算明细 lipf 2026年5月15日10:58:36 -->
  1864. <select id="queryInvoiceSettlementByInvoiceId"
  1865. resultType="com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement">
  1866. select * from ins_ply_income_invoice_settlement ipiis
  1867. <where>
  1868. ipiis.is_delete = 0
  1869. AND ipiis.invoice_id = #{invoiceId}
  1870. </where>
  1871. </select>
  1872. <select id="queryCumulativeAccountsReceivable"
  1873. resultType="com.jzg.commons.entity.finance.dto.CompanySuperviseSettlementReportDto">
  1874. select
  1875. ipi.id,
  1876. eic.parent_id,
  1877. ipi.company_id,
  1878. ipi.system_code,
  1879. sum(COALESCE(ipi.jq_supervise_costs_premiums, 0)+ COALESCE(ipi.sy_supervise_costs_premiums,0)+coalesce(ipi.jy_supervise_costs_premiums,0 )+COALESCE(ipi.jq_other_costs_premiums, 0)+ COALESCE(ipi.sy_other_costs_premiums,0)+coalesce(ipi.jy_other_costs_premiums,0 )) as totalReceivable ,
  1880. sum(COALESCE(ipi.jq_supervise_costs_premiums, 0)+ COALESCE(ipi.sy_supervise_costs_premiums,0)+coalesce(ipi.jy_supervise_costs_premiums,0 )+COALESCE(ipi.jq_other_costs_premiums, 0)+ COALESCE(ipi.sy_other_costs_premiums,0)+coalesce(ipi.jy_other_costs_premiums,0 )) as totalFollowFee,
  1881. sum(COALESCE(ipi.jq_supervise_costs_premiums, 0)+ COALESCE(ipi.sy_supervise_costs_premiums,0)+coalesce(ipi.jy_supervise_costs_premiums,0 )) as superviseFee,
  1882. sum(COALESCE(ipi.jq_other_costs_premiums, 0)+ COALESCE(ipi.sy_other_costs_premiums,0)+coalesce(ipi.jy_other_costs_premiums,0 )) as followFee
  1883. from
  1884. ins_ply_income ipi
  1885. left join esm_ins_company eic on eic.id = ipi.company_id AND eic.is_delete = 0
  1886. <where>
  1887. ipi.is_delete = 0
  1888. and ipi.system_code = #{systemCode}
  1889. <if test="vo.agreementType != null and vo.agreementType != ''">
  1890. AND ipi.agreement_type = #{vo.agreementType}
  1891. </if>
  1892. <if test="vo.signingStartTime != null and vo.signingStartTime != '' and vo.signingEndTime != null and vo.signingEndTime != ''">
  1893. AND DATE(ipi.signing_time) between #{vo.signingStartTime} and #{vo.signingEndTime}
  1894. </if>
  1895. <if test="vo.startTime != null and vo.startTime != '' and vo.endTime != null and vo.endTime != ''">
  1896. AND DATE(ipi.create_time) between #{vo.startTime} and #{vo.endTime}
  1897. </if>
  1898. </where>
  1899. group by
  1900. ipi.id,
  1901. eic.parent_id,
  1902. ipi.company_id,
  1903. ipi.system_code
  1904. having company_id is not null
  1905. </select>
  1906. <!-- 查询已开票金额 lipf 2026年6月1日17:58:42 -->
  1907. <select id="queryInvoicedAmount" resultType="com.jzg.organization.entity.dto.CalRes">
  1908. select
  1909. a.company_id as companyId,
  1910. sum(a.amount) as amount,
  1911. sum(a.overinflatedAmount) as overinflatedAmount
  1912. from
  1913. (
  1914. select
  1915. ipii.company_id,
  1916. COALESCE(ipii.receivable_supervise_premium) as amount,
  1917. COALESCE(ipii.overinflated_amount) as overinflatedAmount
  1918. from
  1919. ins_ply_income_invoice ipii
  1920. where
  1921. ipii.is_delete = 0
  1922. and ipii.id in (
  1923. select
  1924. ipiil.invoice_id
  1925. from
  1926. ins_ply_income_invoice_link ipiil
  1927. <where>
  1928. ipiil.is_delete = 0
  1929. AND ipiil.income_id in (
  1930. select
  1931. ipi.id
  1932. from
  1933. ins_ply_income ipi
  1934. where
  1935. ipi.is_delete = 0
  1936. and ipi.system_code = #{systemCode}
  1937. <if test="agreementType != null and agreementType != ''">
  1938. AND ipi.agreement_type = #{agreementType}
  1939. </if>
  1940. )
  1941. <if test="invoiceType != null and !invoiceType.isEmpty()">
  1942. AND ipii.invoice_type IN
  1943. <foreach collection="invoiceType" item="item" open="(" separator="," close=")">
  1944. ${item}
  1945. </foreach>
  1946. </if>
  1947. <if test="invoiceStartDate != null and invoiceStartDate != ''">
  1948. AND ipii.invoice_time >= CAST('${invoiceStartDate}' AS DATETIME)
  1949. </if>
  1950. <if test="invoiceEndDate != null and invoiceEndDate != ''">
  1951. AND ipii.invoice_time &lt; CAST('${invoiceEndDate}' AS DATETIME)
  1952. </if>
  1953. </where>
  1954. )
  1955. ) a
  1956. group by a.company_id
  1957. </select>
  1958. <!-- 查询已结算金额 lipf 2026年6月1日18:12:08 modify by lipf 2026年6月24日19:10:53 添加distinct ins.id 按照结算记录的值进行去重。 因为私有开票是按照公司维度开票,的所以 同一个 ins.id 关联的 ipi.icompany_id 肯定是一样的 -->
  1959. <select id="querySettledAmount" resultType="com.jzg.organization.entity.dto.CalRes">
  1960. select
  1961. a.company_id ,
  1962. sum(COALESCE(a.actual_received_amount, 0)) as settlement,sum(a.overinflatedAmount) overinflatedAmount
  1963. from
  1964. (
  1965. select distinct ins.id,
  1966. ipi.company_id ,
  1967. COALESCE(ins.actual_received_amount, 0) as actual_received_amount,
  1968. COALESCE(ins.settlement_payment_difference,0) as overinflatedAmount
  1969. from ins_ply_income_invoice_settlement ins
  1970. inner join ins_ply_income_invoice inc
  1971. on ins.invoice_id = inc.id
  1972. AND inc.is_delete = 0
  1973. inner join ins_ply_income_invoice_link link
  1974. on link.invoice_id = inc.id
  1975. AND link.is_delete = 0
  1976. inner join ins_ply_income ipi
  1977. on link.income_id = ipi.id
  1978. AND ipi.is_delete = 0
  1979. <where>
  1980. ins.is_delete = 0
  1981. <if test="settledStartDate != null">
  1982. AND ins.receive_payment_date >= #{settledStartDate}
  1983. </if>
  1984. <if test="settledEndDate != null">
  1985. AND ins.receive_payment_date &lt; #{settledEndDate}
  1986. </if>
  1987. <if test="agreementType != null and agreementType != ''">
  1988. AND ipi.agreement_type = #{agreementType}
  1989. </if>
  1990. <if test="invoiceTypes != null and invoiceTypes.size() > 0">
  1991. AND inc.invoice_type IN
  1992. <foreach collection="invoiceTypes" item="invoiceType" open="(" separator="," close=")">
  1993. #{invoiceType}
  1994. </foreach>
  1995. </if>
  1996. </where>
  1997. ) a
  1998. group by a.company_id
  1999. </select>
  2000. <select id="queryFollowIncome" resultType="com.jzg.commons.entity.finance.dto.InsPlyIncomeDto">
  2001. SELECT
  2002. a.*,
  2003. date(a.signing_time ) as sign_date,
  2004. year(a.signing_time) as sign_year,
  2005. month(a.signing_time) as sign_month,
  2006. b.partner_company_id,
  2007. (SELECT eic.name FROM esm_ins_company eic WHERE b.partner_company_id = eic.id AND eic.is_delete = 0) AS partnerCompanyName,
  2008. (SELECT eic.name FROM esm_ins_company eic WHERE a.company_id = eic.id AND eic.is_delete = 0) AS companyName
  2009. FROM ins_ply_income a
  2010. LEFT JOIN ptl_agreement b ON a.agreement_id = b.id AND b.is_delete = 0
  2011. <where>
  2012. a.is_delete=0
  2013. AND a.agreement_type = 2
  2014. <if test="query.startYear != null and query.endYear != null">
  2015. AND YEAR(a.signing_time) BETWEEN #{query.startYear} AND #{query.endYear}
  2016. </if>
  2017. <if test="query.systemCode != null">
  2018. AND a.system_code = #{query.systemCode}
  2019. </if>
  2020. <if test="query.companyId != null and query.companyId != ''">
  2021. AND a.company_id = #{query.companyId}
  2022. </if>
  2023. <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
  2024. AND a.create_time between #{query.startTime} and #{query.endTime}
  2025. </if>
  2026. <if test="query.companyIdList != null and query.companyIdList.size() > 0" >
  2027. AND a.company_id in
  2028. <foreach collection="query.companyIdList" item="item" open="(" separator="," close=")">
  2029. #{item}
  2030. </foreach>
  2031. </if>
  2032. </where>
  2033. </select>
  2034. <!-- 查询发票结算的金额 2026年6月22日15:48:33 lipf -->
  2035. <select id="querySettledAmountByInvoiceIds" resultType="com.jzg.commons.entity.finance.vo.InsPlyIncomeInvoiceSettlementVo">
  2036. select
  2037. sum(ipiis.actual_received_amount ) as actual_received_amount,
  2038. sum(ipiis.settlement_payment_difference ) as settlement_payment_difference
  2039. from
  2040. ins_ply_income_invoice_settlement ipiis
  2041. <where>
  2042. <if test="invoiceIdList != null and invoiceIdList.size() > 0">
  2043. and ipiis.invoice_id in
  2044. <foreach collection="invoiceIdList" item="item" open="(" separator="," close=")">
  2045. ${item}
  2046. </foreach>
  2047. </if>
  2048. </where>
  2049. </select>
  2050. <select id="selectPlatformCompanySettlementReport" resultType="com.jzg.commons.entity.finance.vo.PlatformCompanyFeeVO">
  2051. SELECT
  2052. ipi.company_id,
  2053. io.docking_person as contact_person ,
  2054. io.docking_person_phone as contact_person_phone,
  2055. SUM(COALESCE(ipi.jq_receivable_premium,0) + COALESCE(ipi.sy_receivable_premium,0) + COALESCE(ipi.jy_receivable_premium,0)) AS totalReceivable,
  2056. group_concat(distinct sett.id) as settle_idsStr
  2057. FROM ins_ply_income ipi
  2058. LEFT JOIN ins_ply_income_invoice_link ipil ON ipi.id = ipil.income_id AND ipil.is_delete = 0
  2059. LEFT JOIN ins_ply_income_invoice ipii ON ipil.invoice_id = ipii.id AND ipii.is_delete = 0
  2060. LEFT JOIN ins_ply_income_invoice_settlement sett ON ipii.id = sett.invoice_id AND sett.is_delete = 0
  2061. left join ins_orders io on ipi.order_no = io.id
  2062. <where>
  2063. ipi.is_delete = 0 and ipi.agreement_type = 1
  2064. <if test="query.companyId != null and query.companyId != ''">
  2065. AND ipi.company_id = #{query.companyId}
  2066. </if>
  2067. <if test="query.contactPersonPhone != null and query.contactPersonPhone != ''">
  2068. AND io.docking_person_phone LIKE CONCAT('%', #{query.contactPersonPhone}, '%')
  2069. </if>
  2070. <if test="query.contactPerson != null and query.contactPerson != ''">
  2071. AND io.docking_person LIKE CONCAT('%', #{query.contactPerson}, '%')
  2072. </if>
  2073. -- 跟单订单创建时间范围
  2074. <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
  2075. AND ipi.create_time BETWEEN #{query.startTime} AND #{query.endTime}
  2076. </if>
  2077. -- 开票时间范围
  2078. <if test="query.invoiceStartTime != null and query.invoiceStartTime != '' and query.invoiceEndTime != null and query.invoiceEndTime != ''">
  2079. AND ipii.invoice_time BETWEEN #{query.invoiceStartTime} AND #{query.invoiceEndTime}
  2080. </if>
  2081. -- 结算创建时间范围(子查询过滤结算时间)
  2082. <if test="query.settlementStartTime != null and query.settlementStartTime != '' and query.settlementEndTime != null and query.settlementEndTime != ''">
  2083. AND sett.create_time BETWEEN #{query.settlementStartTime} AND #{query.settlementEndTime}
  2084. </if>
  2085. </where>
  2086. GROUP BY ipi.company_id, io.docking_person,io.docking_person_phone
  2087. order by settle_idsStr desc
  2088. </select>
  2089. </mapper>