RepalBillMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  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.winhc.repal.repository.RepalBillMapper">
  4. <select id="getRepalBillPage" resultType="com.winhc.repal.entity.RepalBill" parameterType="com.winhc.repal.model.bo.BillPageBO">
  5. SELECT bill.* FROM REPAL_BILL AS bill
  6. <if test="!param2.allFlag">
  7. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS person ON person.REPAL_BILL_ID = bill.ID
  8. </if>
  9. <if test="param2.dynamicType != null">
  10. LEFT JOIN REPAL_REMIND_READ_INFO ri ON bill.id = ri.REPAL_BILL_ID AND ri.USER_ID = #{param2.userId}
  11. </if>
  12. <where>
  13. <if test="!param2.allFlag">
  14. AND person.USER_ID = #{param2.userId}
  15. AND person.DELETED = 0
  16. </if>
  17. AND bill.REPAL_BOOK_ID = #{param2.repalBookId}
  18. AND bill.REPAL_GROUP_ID = #{param2.repalGroupId}
  19. AND bill.DELETED = 0
  20. AND bill.REPAL_BILL_TYPE = #{param2.repalBillType}
  21. <if test="param2.overdueStatus != null">
  22. <if test="param2.overdueStatus == 1">
  23. AND bill.REPAL_BILL_STATUS = 1
  24. </if>
  25. <if test="param2.overdueStatus == 2">
  26. AND bill.REPAL_BILL_STATUS = 1 AND bill.END_DATE <![CDATA[<=]]> date_add(CURDATE(), interval 7 day) and bill.END_DATE >= CURDATE()
  27. </if>
  28. <if test="param2.overdueStatus == 3">
  29. AND bill.REPAL_BILL_STATUS = 2
  30. </if>
  31. <if test="param2.overdueStatus == 4">
  32. AND bill.REPAL_BILL_STATUS = 3
  33. </if>
  34. <if test="param2.overdueStatus == 5">
  35. AND bill.REPAL_BILL_STATUS = 4
  36. </if>
  37. </if>
  38. <if test="param2.diagnosisGrade != null">
  39. <if test='param2.diagnosisGrade == "E"'>
  40. AND (DIAGNOSIS_GRADE = '' OR DIAGNOSIS_GRADE IS NULL)
  41. </if>
  42. <if test='param2.diagnosisGrade != "E"'>
  43. AND bill.DIAGNOSIS_GRADE = #{param2.diagnosisGrade}
  44. </if>
  45. </if>
  46. <if test="param2.startDate != null">
  47. AND bill.END_DATE >= #{param2.startDate}
  48. </if>
  49. <if test="param2.endDate != null">
  50. AND bill.END_DATE <![CDATA[<=]]> #{param2.endDate}
  51. </if>
  52. <if test="param2.dynamicType != null">
  53. AND EXISTS (SELECT 1 FROM REPAL_REMIND_HISTORY his WHERE
  54. <if test="param2.dynamicType == 1">
  55. his.REMIND_TYPE = 'RISK' AND his.id > ri.RISK_REMIND_ID
  56. </if>
  57. <if test="param2.dynamicType == 2">
  58. his.REMIND_TYPE = 'FINANCE' AND his.id > ri.FINANCE_REMIND_ID
  59. </if>
  60. <if test="param2.dynamicType == 3">
  61. his.REMIND_TYPE = 'RANK' AND his.id > ri.RANK_REMIND_ID
  62. </if>
  63. <if test="param2.dynamicType == 4">
  64. his.REMIND_TYPE = 'OVERDUE' AND his.id > ri.OVERDUE_REMIND_ID
  65. </if>
  66. AND his.REPAL_BILL_ID = bill.ID)
  67. </if>
  68. </where>
  69. <if test="param2.sortedType != null">
  70. <if test="param2.sortedType == 1">
  71. ORDER BY bill.END_DATE, bill.ID
  72. </if>
  73. <if test="param2.sortedType == 2">
  74. ORDER BY bill.END_DATE DESC, bill.ID DESC
  75. </if>
  76. <if test="param2.sortedType == 3">
  77. ORDER BY bill.TOTAL_MONEY, bill.ID
  78. </if>
  79. <if test="param2.sortedType == 4">
  80. ORDER BY bill.TOTAL_MONEY DESC, bill.ID DESC
  81. </if>
  82. </if>
  83. <if test="param2.sortedType == null">
  84. ORDER BY bill.ID DESC
  85. </if>
  86. </select>
  87. <select id="getTotalMoneyByGroup" resultType="com.winhc.repal.model.bo.TotalMoneyBO" parameterType="com.winhc.repal.model.bo.BillPageBO">
  88. SELECT IFNULL(SUM(bill.TOTAL_MONEY),0) AS totalMoney, COUNT(bill.ID) AS totalCount FROM REPAL_BILL AS bill
  89. <if test="!allFlag">
  90. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS person ON person.REPAL_BILL_ID = bill.ID
  91. </if>
  92. <if test="dynamicType != null">
  93. LEFT JOIN REPAL_REMIND_READ_INFO ri ON bill.id = ri.REPAL_BILL_ID AND ri.USER_ID = #{userId}
  94. </if>
  95. <where>
  96. <if test="!allFlag">
  97. AND person.USER_ID = #{userId}
  98. AND person.DELETED = 0
  99. </if>
  100. AND bill.REPAL_BOOK_ID = #{repalBookId}
  101. AND bill.REPAL_GROUP_ID = #{repalGroupId}
  102. AND bill.DELETED = 0
  103. AND bill.REPAL_BILL_TYPE = #{repalBillType}
  104. <if test="overdueStatus != null">
  105. <if test="overdueStatus == 1">
  106. AND bill.REPAL_BILL_STATUS = 1
  107. </if>
  108. <if test="overdueStatus == 2">
  109. AND bill.REPAL_BILL_STATUS = 1 AND bill.END_DATE <![CDATA[<=]]> date_add(CURDATE(), interval 7 day) and bill.END_DATE >= CURDATE()
  110. </if>
  111. <if test="overdueStatus == 3">
  112. AND bill.REPAL_BILL_STATUS = 2
  113. </if>
  114. <if test="overdueStatus == 4">
  115. AND bill.REPAL_BILL_STATUS = 3
  116. </if>
  117. <if test="overdueStatus == 5">
  118. AND bill.REPAL_BILL_STATUS = 4
  119. </if>
  120. <if test="overdueStatus == 6">
  121. AND bill.REPAL_BILL_STATUS IN (1,2)
  122. </if>
  123. </if>
  124. <if test="diagnosisGrade != null">
  125. <if test='diagnosisGrade == "E"'>
  126. AND (DIAGNOSIS_GRADE = '' OR DIAGNOSIS_GRADE IS NULL)
  127. </if>
  128. <if test='diagnosisGrade != "E"'>
  129. AND bill.DIAGNOSIS_GRADE = #{diagnosisGrade}
  130. </if>
  131. </if>
  132. <if test="startDate != null">
  133. AND bill.END_DATE >= #{startDate}
  134. </if>
  135. <if test="endDate != null">
  136. AND bill.END_DATE <![CDATA[<=]]> #{endDate}
  137. </if>
  138. <if test="dynamicType != null">
  139. AND EXISTS (SELECT 1 FROM REPAL_REMIND_HISTORY his WHERE
  140. <if test="dynamicType == 1">
  141. his.REMIND_TYPE = 'RISK' AND his.id > ri.RISK_REMIND_ID
  142. </if>
  143. <if test="dynamicType == 2">
  144. his.REMIND_TYPE = 'FINANCE' AND his.id > ri.FINANCE_REMIND_ID
  145. </if>
  146. <if test="dynamicType == 3">
  147. his.REMIND_TYPE = 'RANK' AND his.id > ri.RANK_REMIND_ID
  148. </if>
  149. <if test="dynamicType == 4">
  150. his.REMIND_TYPE = 'OVERDUE' AND his.id > ri.OVERDUE_REMIND_ID
  151. </if>
  152. AND his.REPAL_BILL_ID = bill.ID)
  153. </if>
  154. </where>
  155. </select>
  156. <select id="searchPage" parameterType="com.winhc.repal.model.bo.SearchBillPageBO" resultType="com.winhc.repal.entity.RepalBill">
  157. SELECT
  158. DISTINCT
  159. bill.* FROM REPAL_BILL AS bill
  160. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS aPerson ON aPerson.REPAL_BILL_ID = bill.ID and bill.REPAL_BILL_TYPE = 1 and aPerson.DELETED = 0
  161. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS bPerson ON bPerson.REPAL_BILL_ID = bill.ID and bill.REPAL_BILL_TYPE = 2 and bPerson.DELETED = 0
  162. <where>
  163. <if test="param2.repalBillType != null">
  164. <if test="param2.repalBillType == 1">
  165. <if test="!param2.receivableFlag">
  166. (aPerson.USER_ID = #{param2.userId})
  167. </if>
  168. </if>
  169. <if test="param2.repalBillType == 2">
  170. <if test="!param2.receiptFlag">
  171. (bPerson.USER_ID = #{param2.userId})
  172. </if>
  173. </if>
  174. </if>
  175. <if test="param2.repalBillType == null">
  176. <if test="!param2.allFlag">
  177. <if test="!param2.receivableFlag and param2.receiptFlag">
  178. (aPerson.USER_ID = #{param2.userId} or bPerson.USER_ID is not null)
  179. </if>
  180. <if test="!param2.receiptFlag and param2.receivableFlag">
  181. (bPerson.USER_ID = #{param2.userId} or aPerson.USER_ID is not null)
  182. </if>
  183. </if>
  184. </if>
  185. <if test="param2.repalBillType != null">
  186. AND bill.REPAL_BILL_TYPE = #{param2.repalBillType}
  187. </if>
  188. AND bill.REPAL_BOOK_ID = #{param2.repalBookId}
  189. AND bill.REPAL_GROUP_ID = #{param2.repalGroupId}
  190. AND bill.DELETED = 0
  191. <if test="param2.statusFlag == 1">
  192. AND bill.REPAL_BILL_STATUS IN (1,2)
  193. </if>
  194. <if test='param2.keyword != null'>
  195. AND bill.CUSTOMER_NAME LIKE concat('%', #{param2.keyword}, '%')
  196. </if>
  197. </where>
  198. ORDER BY bill.ID DESC
  199. </select>
  200. <select id="getTotalMoneyByUser" resultType="com.winhc.repal.model.bo.TotalMoneyBO">
  201. SELECT COUNT(*) AS totalCount, IFNULL(SUM(bill.RECEIVABLE), 0) AS totalMoney FROM REPAL_RESPONSIBLE_PERSON AS person
  202. LEFT JOIN REPAL_BILL AS bill ON person.REPAL_BILL_ID = bill.ID
  203. WHERE person.USER_ID = #{userId} AND person.DELETED = 0
  204. <if test="repalBillStatus != null">
  205. AND bill.REPAL_BILL_STATUS = #{repalBillStatus}
  206. </if>
  207. AND bill.REPAL_GROUP_ID = #{repalGroupId}
  208. AND bill.REPAL_BOOK_ID = #{repalBookId}
  209. AND bill.REPAL_BILL_TYPE = #{repalGroupType}
  210. </select>
  211. <select id="getCustRepalBillPage" resultType="com.winhc.repal.entity.RepalBill">
  212. SELECT bill.* FROM REPAL_BILL AS bill
  213. <where>
  214. AND bill.CUSTOMER_ID = #{custId}
  215. AND bill.DELETED = 0
  216. </where>
  217. ORDER BY bill.ID DESC
  218. </select>
  219. <select id="getManageBillInfo" resultType="com.winhc.repal.model.bo.ManageBillInfoBO">
  220. select (SELECT count(*) FROM REPAL_BILL A WHERE
  221. REPAL_GROUP_ID = #{groupId}
  222. AND DELETED = 0
  223. AND REPAL_BILL_STATUS = 2
  224. AND REPAL_BILL_TYPE = 1
  225. <if test="!allFlag">
  226. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  227. </if>
  228. ) as totalOverdueCount,
  229. (SELECT IFNULL(sum(RECEIVABLE),0) FROM REPAL_BILL A
  230. WHERE REPAL_GROUP_ID = #{groupId}
  231. AND DELETED = 0
  232. AND REPAL_BILL_STATUS = 2
  233. AND REPAL_BILL_TYPE = 1
  234. <if test="!allFlag">
  235. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  236. </if>
  237. ) as totalOverdue,
  238. (SELECT IFNULL( sum( RECEIVABLE ), 0 ) FROM REPAL_BILL A
  239. WHERE REPAL_GROUP_ID = #{groupId}
  240. AND DELETED = 0
  241. AND REPAL_BILL_STATUS = 1
  242. AND REPAL_BILL_TYPE = 1
  243. AND END_DATE <![CDATA[<=]]> #{startTime}
  244. <if test="!allFlag">
  245. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  246. </if>
  247. ) as totalOverdueWeek,
  248. (SELECT count(*) FROM REPAL_BILL A
  249. WHERE
  250. REPAL_GROUP_ID = #{groupId}
  251. AND DELETED = 0
  252. AND REPAL_BILL_STATUS = 1
  253. AND REPAL_BILL_TYPE = 1
  254. AND END_DATE <![CDATA[<=]]> #{startTime}
  255. <if test="!allFlag">
  256. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  257. </if>
  258. ) as totalOverdueWeekCount,
  259. (SELECT IFNULL( sum( TOTAL_MONEY ), 0 ) FROM REPAL_BILL A
  260. WHERE
  261. REPAL_GROUP_ID = #{groupId}
  262. AND DELETED = 0
  263. AND REPAL_BILL_TYPE = 1
  264. AND REPAL_BILL_STATUS in (1,2)
  265. <if test="!allFlag">
  266. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  267. </if>
  268. ) as totalMoney from dual
  269. </select>
  270. <select id="getManageBillPage" resultType="com.winhc.repal.model.bo.RepalManageBillPageBO">
  271. SELECT
  272. A.ID AS repalBillId,
  273. A.REPAL_BOOK_ID AS repalBookId,
  274. B.REPAL_BOOK_NAME AS repalBookName,
  275. A.REPAL_BILL_STATUS AS repalBillStatus,
  276. A.END_DATE AS endDate,
  277. C.CUST_PROPERTY AS custProperty,
  278. C.CUST_NAME AS customerName,
  279. A.TOTAL_MONEY AS totalMoney,
  280. A.RECEIVABLE AS receivable
  281. FROM
  282. REPAL_BILL A
  283. LEFT JOIN REPAL_BOOK B ON A.REPAL_BOOK_ID = B.ID
  284. LEFT JOIN REPAL_CUSTOMER C ON A.CUSTOMER_ID = C.CUST_ID
  285. WHERE
  286. A.REPAL_GROUP_ID = #{groupId}
  287. AND A.DELETED = 0
  288. AND C.DELETED = 0
  289. AND A.REPAL_BILL_TYPE = 1
  290. AND ((A.REPAL_BILL_STATUS = 1
  291. AND A.END_DATE <![CDATA[<=]]> #{startTime}) or A.REPAL_BILL_STATUS = 2)
  292. <if test="!allFlag">
  293. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON D WHERE D.REPAL_BILL_ID = A.ID AND D.USER_ID = #{userId})
  294. </if>
  295. </select>
  296. <select id="getBillIdListByBookId" resultType="java.lang.Long">
  297. SELECT bill.ID FROM REPAL_BILL AS bill
  298. <if test="userId != null">
  299. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  300. </if>
  301. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.DELETED = 0
  302. <if test="userId != null">
  303. AND rPerson.USER_ID = #{userId}
  304. </if>
  305. </select>
  306. <select id="getBillGradeByBookId" resultType="java.lang.String">
  307. SELECT bill.DIAGNOSIS_GRADE FROM REPAL_BILL AS bill
  308. <if test="userId != null">
  309. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  310. </if>
  311. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.REPAL_BILL_TYPE = 1 AND bill.DELETED = 0
  312. <if test="start != null">
  313. AND bill.DIAGNOSIS_DATETIME >= #{start}
  314. </if>
  315. <if test="end != null">
  316. AND bill.DIAGNOSIS_DATETIME <![CDATA[<=]]>#{end}
  317. </if>
  318. <if test="userId != null">
  319. AND rPerson.USER_ID = #{userId}
  320. </if>
  321. </select>
  322. <select id="getBillTotal" resultType="com.winhc.repal.model.bo.HomeReceivableBO">
  323. SELECT
  324. <if test="repalBillStatus == null">
  325. IFNULL(SUM(bill.RECEIVABLE), 0) AS billMoney,
  326. IFNULL(SUM(bill.RECEIPT), 0) AS receiptMoney,
  327. IFNULL(SUM(bill.TOTAL_MONEY), 0) AS totalBillMoney,
  328. IFNULL(COUNT(bill.ID), 0) AS billCount
  329. </if>
  330. <if test="repalBillStatus == 2">
  331. IFNULL(SUM(bill.RECEIVABLE), 0) AS overdueTotal,
  332. IFNULL(COUNT(bill.ID), 0) AS overdueTotalCount
  333. </if>
  334. FROM REPAL_BILL AS bill
  335. <if test="userId != null">
  336. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  337. </if>
  338. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.DELETED = 0
  339. <if test="repalBillStatus == 2">
  340. AND bill.REPAL_BILL_STATUS = 2
  341. </if>
  342. <if test="repalBillStatus == null">
  343. AND bill.REPAL_BILL_STATUS IN (1, 2)
  344. </if>
  345. AND bill.REPAL_BILL_TYPE = #{repalBillType}
  346. <if test="userId != null">
  347. AND rPerson.USER_ID = #{userId}
  348. </if>
  349. <if test="start != null">
  350. AND bill.END_DATE >= #{start}
  351. </if>
  352. <if test="end != null">
  353. AND bill.END_DATE <![CDATA[<=]]>#{end}
  354. </if>
  355. </select>
  356. </mapper>