ReceivableMapper.xml 113 KB

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