ReceivableMapper.xml 117 KB

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