RepalBillMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373
  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 NOT IN (3,4)
  107. </if>
  108. <if test="overdueStatus == 2">
  109. AND bill.REPAL_BILL_STATUS = 2
  110. </if>
  111. <if test="overdueStatus == 3">
  112. AND bill.REPAL_BILL_STATUS = 3
  113. </if>
  114. <if test="overdueStatus == 4">
  115. AND bill.REPAL_BILL_STATUS = 4
  116. </if>
  117. </if>
  118. <if test="diagnosisGrade != null">
  119. <if test='diagnosisGrade == "E"'>
  120. AND (DIAGNOSIS_GRADE = '' OR DIAGNOSIS_GRADE IS NULL)
  121. </if>
  122. <if test='diagnosisGrade != "E"'>
  123. AND bill.DIAGNOSIS_GRADE = #{diagnosisGrade}
  124. </if>
  125. </if>
  126. <if test="startDate != null">
  127. AND bill.END_DATE >= #{startDate}
  128. </if>
  129. <if test="endDate != null">
  130. AND bill.END_DATE <![CDATA[<=]]> #{endDate}
  131. </if>
  132. <if test="dynamicType != null">
  133. AND EXISTS (SELECT 1 FROM REPAL_REMIND_HISTORY his WHERE
  134. <if test="dynamicType == 1">
  135. his.REMIND_TYPE = 'RISK' AND his.id > ri.RISK_REMIND_ID
  136. </if>
  137. <if test="dynamicType == 2">
  138. his.REMIND_TYPE = 'FINANCE' AND his.id > ri.FINANCE_REMIND_ID
  139. </if>
  140. <if test="dynamicType == 3">
  141. his.REMIND_TYPE = 'RANK' AND his.id > ri.RANK_REMIND_ID
  142. </if>
  143. <if test="dynamicType == 4">
  144. his.REMIND_TYPE = 'OVERDUE' AND his.id > ri.OVERDUE_REMIND_ID
  145. </if>
  146. AND his.REPAL_BILL_ID = bill.ID)
  147. </if>
  148. </where>
  149. </select>
  150. <select id="searchPage" parameterType="com.winhc.repal.model.bo.SearchBillPageBO" resultType="com.winhc.repal.entity.RepalBill">
  151. SELECT bill.* FROM REPAL_BILL AS bill
  152. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS aPerson ON aPerson.REPAL_BILL_ID = bill.ID and bill.REPAL_BILL_TYPE = 1 and aPerson.DELETED = 0
  153. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS bPerson ON bPerson.REPAL_BILL_ID = bill.ID and bill.REPAL_BILL_TYPE = 2 and bPerson.DELETED = 0
  154. <where>
  155. <if test="param2.repalBillType != null">
  156. <if test="param2.repalBillType == 1">
  157. <if test="!param2.receivableFlag">
  158. (aPerson.USER_ID = #{param2.userId})
  159. </if>
  160. </if>
  161. <if test="param2.repalBillType == 2">
  162. <if test="!param2.receiptFlag">
  163. (bPerson.USER_ID = #{param2.userId})
  164. </if>
  165. </if>
  166. </if>
  167. <if test="param2.repalBillType == null">
  168. <if test="!param2.allFlag">
  169. <if test="!param2.receivableFlag and param2.receiptFlag">
  170. (aPerson.USER_ID = #{param2.userId} or bPerson.USER_ID is not null)
  171. </if>
  172. <if test="!param2.receiptFlag and param2.receivableFlag">
  173. (bPerson.USER_ID = #{param2.userId} or aPerson.USER_ID is not null)
  174. </if>
  175. </if>
  176. </if>
  177. <if test="param2.repalBillType != null">
  178. AND bill.REPAL_BILL_TYPE = #{param2.repalBillType}
  179. </if>
  180. AND bill.REPAL_BOOK_ID = #{param2.repalBookId}
  181. AND bill.REPAL_GROUP_ID = #{param2.repalGroupId}
  182. AND bill.DELETED = 0
  183. <if test='param2.keyword != null'>
  184. AND bill.CUSTOMER_NAME LIKE concat('%', #{param2.keyword}, '%')
  185. </if>
  186. </where>
  187. ORDER BY bill.ID DESC
  188. </select>
  189. <!-- <select id="getTotalMoneyByGroup" resultType="com.winhc.repal.model.bo.TotalMoneyBO">-->
  190. <!-- SELECT COUNT(*) AS totalCount, IFNULL(SUM(RECEIVABLE),0) AS totalMoney FROM REPAL_BILL-->
  191. <!-- WHERE REPAL_GROUP_ID = #{repalGroupId}-->
  192. <!-- <if test="repalBillStatus != null">-->
  193. <!-- AND REPAL_BILL_STATUS = #{repalBillStatus}-->
  194. <!-- </if>-->
  195. <!-- AND REPAL_BILL_TYPE = #{repalBillType}-->
  196. <!-- AND REPAL_BOOK_ID = #{repalBookId}-->
  197. <!-- </select>-->
  198. <select id="getTotalMoneyByUser" resultType="com.winhc.repal.model.bo.TotalMoneyBO">
  199. SELECT COUNT(*) AS totalCount, IFNULL(SUM(bill.RECEIVABLE), 0) AS totalMoney FROM REPAL_RESPONSIBLE_PERSON AS person
  200. LEFT JOIN REPAL_BILL AS bill ON person.REPAL_BILL_ID = bill.ID
  201. WHERE person.USER_ID = #{userId} AND person.DELETED = 0
  202. <if test="repalBillStatus != null">
  203. AND bill.REPAL_BILL_STATUS = #{repalBillStatus}
  204. </if>
  205. AND bill.REPAL_GROUP_ID = #{repalGroupId}
  206. AND bill.REPAL_BOOK_ID = #{repalBookId}
  207. AND bill.REPAL_BILL_TYPE = #{repalGroupType}
  208. </select>
  209. <select id="getCustRepalBillPage" resultType="com.winhc.repal.entity.RepalBill">
  210. SELECT bill.* FROM REPAL_BILL AS bill
  211. <where>
  212. AND bill.CUSTOMER_ID = #{custId}
  213. AND bill.DELETED = 0
  214. </where>
  215. ORDER BY bill.ID DESC
  216. </select>
  217. <select id="getManageBillInfo" resultType="com.winhc.repal.model.bo.ManageBillInfoBO">
  218. select (SELECT count(*) FROM REPAL_BILL A WHERE
  219. REPAL_GROUP_ID = #{groupId}
  220. AND DELETED = 0
  221. AND REPAL_BILL_STATUS = 2
  222. AND REPAL_BILL_TYPE = 1
  223. <if test="!allFlag">
  224. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  225. </if>
  226. ) as totalOverdueCount,
  227. (SELECT IFNULL(sum(RECEIVABLE),0) FROM REPAL_BILL A
  228. WHERE REPAL_GROUP_ID = #{groupId}
  229. AND DELETED = 0
  230. AND REPAL_BILL_STATUS = 2
  231. AND REPAL_BILL_TYPE = 1
  232. <if test="!allFlag">
  233. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  234. </if>
  235. ) as totalOverdue,
  236. (SELECT IFNULL( sum( RECEIVABLE ), 0 ) FROM REPAL_BILL A
  237. WHERE REPAL_GROUP_ID = #{groupId}
  238. AND DELETED = 0
  239. AND REPAL_BILL_STATUS = 1
  240. AND REPAL_BILL_TYPE = 1
  241. AND END_DATE <![CDATA[<=]]> #{startTime}
  242. <if test="!allFlag">
  243. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  244. </if>
  245. ) as totalOverdueWeek,
  246. (SELECT count(*) FROM REPAL_BILL A
  247. WHERE
  248. REPAL_GROUP_ID = #{groupId}
  249. AND DELETED = 0
  250. AND REPAL_BILL_STATUS = 1
  251. AND REPAL_BILL_TYPE = 1
  252. AND END_DATE <![CDATA[<=]]> #{startTime}
  253. <if test="!allFlag">
  254. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  255. </if>
  256. ) as totalOverdueWeekCount,
  257. (SELECT IFNULL( sum( TOTAL_MONEY ), 0 ) FROM REPAL_BILL A
  258. WHERE
  259. REPAL_GROUP_ID = #{groupId}
  260. AND DELETED = 0
  261. AND REPAL_BILL_TYPE = 1
  262. AND REPAL_BILL_STATUS in (1,2)
  263. <if test="!allFlag">
  264. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON B WHERE B.REPAL_BILL_ID = A.ID AND B.USER_ID = #{userId})
  265. </if>
  266. ) as totalMoney from dual
  267. </select>
  268. <select id="getManageBillPage" resultType="com.winhc.repal.model.bo.RepalManageBillPageBO">
  269. SELECT
  270. A.ID AS repalBillId,
  271. A.REPAL_BOOK_ID AS repalBookId,
  272. B.REPAL_BOOK_NAME AS repalBookName,
  273. A.REPAL_BILL_STATUS AS repalBillStatus,
  274. A.END_DATE AS endDate,
  275. C.CUST_PROPERTY AS custProperty,
  276. C.CUST_NAME AS customerName,
  277. A.TOTAL_MONEY AS totalMoney,
  278. A.RECEIVABLE AS receivable
  279. FROM
  280. REPAL_BILL A
  281. LEFT JOIN REPAL_BOOK B ON A.REPAL_BOOK_ID = B.ID
  282. LEFT JOIN REPAL_CUSTOMER C ON A.CUSTOMER_ID = C.CUST_ID
  283. WHERE
  284. A.REPAL_GROUP_ID = #{groupId}
  285. AND A.DELETED = 0
  286. AND C.DELETED = 0
  287. AND A.REPAL_BILL_TYPE = 1
  288. AND ((A.REPAL_BILL_STATUS = 1
  289. AND A.END_DATE <![CDATA[<=]]> #{startTime}) or A.REPAL_BILL_STATUS = 2)
  290. <if test="!allFlag">
  291. AND EXISTS ( SELECT 1 FROM REPAL_RESPONSIBLE_PERSON D WHERE D.REPAL_BILL_ID = A.ID AND D.USER_ID = #{userId})
  292. </if>
  293. </select>
  294. <select id="getBillIdListByBookId" resultType="java.lang.Long">
  295. SELECT bill.ID FROM REPAL_BILL AS bill
  296. <if test="userId != null">
  297. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  298. </if>
  299. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.DELETED = 0
  300. <if test="userId != null">
  301. AND rPerson.USER_ID = #{userId}
  302. </if>
  303. </select>
  304. <select id="getBillGradeByBookId" resultType="java.lang.String">
  305. SELECT bill.DIAGNOSIS_GRADE FROM REPAL_BILL AS bill
  306. <if test="userId != null">
  307. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  308. </if>
  309. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.REPAL_BILL_TYPE = 1 AND bill.DELETED = 0
  310. <if test="start != null">
  311. AND bill.DIAGNOSIS_DATETIME >= #{start}
  312. </if>
  313. <if test="end != null">
  314. AND bill.DIAGNOSIS_DATETIME <![CDATA[<=]]>#{end}
  315. </if>
  316. <if test="userId != null">
  317. AND rPerson.USER_ID = #{userId}
  318. </if>
  319. </select>
  320. <select id="getBillTotal" resultType="com.winhc.repal.model.bo.HomeReceivableBO">
  321. SELECT
  322. <if test="repalBillStatus == null">
  323. IFNULL(SUM(bill.RECEIVABLE), 0) AS billMoney,
  324. IFNULL(SUM(bill.RECEIPT), 0) AS receiptMoney,
  325. IFNULL(SUM(bill.TOTAL_MONEY), 0) AS totalBillMoney,
  326. IFNULL(COUNT(bill.ID), 0) AS billCount
  327. </if>
  328. <if test="repalBillStatus == 2">
  329. IFNULL(SUM(bill.RECEIVABLE), 0) AS overdueTotal,
  330. IFNULL(COUNT(bill.ID), 0) AS overdueTotalCount
  331. </if>
  332. FROM REPAL_BILL AS bill
  333. <if test="userId != null">
  334. LEFT JOIN REPAL_RESPONSIBLE_PERSON AS rPerson ON bill.ID = rPerson.REPAL_BILL_ID
  335. </if>
  336. WHERE bill.REPAL_BOOK_ID = #{repalBookId} AND bill.DELETED = 0
  337. <if test="repalBillStatus == 2">
  338. AND bill.REPAL_BILL_STATUS = 2
  339. </if>
  340. <if test="repalBillStatus == null">
  341. AND bill.REPAL_BILL_STATUS IN (1, 2)
  342. </if>
  343. AND bill.REPAL_BILL_TYPE = #{repalBillType}
  344. <if test="userId != null">
  345. AND rPerson.USER_ID = #{userId}
  346. </if>
  347. <if test="start != null">
  348. AND bill.END_DATE >= #{start}
  349. </if>
  350. <if test="end != null">
  351. AND bill.END_DATE <![CDATA[<=]]>#{end}
  352. </if>
  353. </select>
  354. </mapper>