ReceivableMapper.xml 119 KB

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