RepairRecordMapper.xml 82 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350
  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.repair.mapper.RepairRecordMapper">
  4. <resultMap type="com.repair.model.vo.RepairRecordCountVo" id="repairRecordCountMap">
  5. <result property="Incomplete" column="Incomplete"/>
  6. <result property="Confirmed" column="Confirmed"/>
  7. <result property="Finished" column="Finished"/>
  8. </resultMap>
  9. <select id="queryRepairRecordCount" resultType="com.repair.model.vo.RepairRecordCountVo"
  10. resultMap="repairRecordCountMap">
  11. SELECT COUNT(IF(maintenance_state &lt; 7,1, NULL)) Incomplete,COUNT(IF(maintenance_state=4,1, NULL))
  12. Confirmed,COUNT(IF(maintenance_state &gt;=7 ,1, NULL)) Finished FROM `repair_record`
  13. <where>
  14. and deleted = 0
  15. <if test="userId != null and userId != ''">
  16. and user_id = #{userId}
  17. </if>
  18. </where>
  19. </select>
  20. <resultMap type="com.repair.model.vo.MyRepairRecordVo" id="repairRecordOwnMap">
  21. <result property="id" column="id"/>
  22. <result property="recordNo" column="record_no"/>
  23. <result property="reportTime" column="report_time"/>
  24. <result property="userName" column="user_name"/>
  25. <result property="userPhone" column="user_phone"/>
  26. <result property="areaName" column="area_name"/>
  27. <result property="address" column="address"/>
  28. <result property="articleName" column="article_name"/>
  29. <result property="descript" column="description"/>
  30. <result property="image" column="image"/>
  31. <result property="stateId" column="state_id"/>
  32. <result property="price" column="price"/>
  33. <result property="maintenancerName" column="maintenancer_name"/>
  34. <result property="maintenancerPhone" column="maintenancer_phone"/>
  35. <result property="timeoutDispStr" column="timeout_disp_str"/>
  36. <result property="timeoutReceStr" column="timeout_rece_str"/>
  37. <result property="voice" column="voice"/>
  38. <result property="voiceLength" column="voice_length"/>
  39. <result property="finishVoice" column="finish_voice"/>
  40. <result property="finishVoiceLength" column="finish_voice_length"/>
  41. </resultMap>
  42. <select id="queryMyRepairRecordList" resultType="com.repair.model.vo.MyRepairRecordVo"
  43. resultMap="repairRecordOwnMap">
  44. select
  45. case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  46. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  47. rdr.receiving_time) and rr.maintenance_state &lt;= 7 and rr.is_duty = 0 when true then '超时未接'
  48. else null end as timeout_disp_str,
  49. case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  50. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  51. minute) &lt;= rdv.finish_time) and rr.maintenance_state &lt;= 7 and rr.is_duty = 0 when true then '维修超时'
  52. else null end as timeout_rece_str,
  53. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.price,
  54. rr.maintenancer_name,rr.maintenancer_phone,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id
  55. as area_name,rr.address,rr.description,rat.name as article_name,rr.image,rr.maintenance_state as state_id from
  56. repair_record rr
  57. left join repair_article_type rat on rat.id = rr.article_id
  58. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  59. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  60. <where>
  61. and rr.deleted = 0
  62. <if test="stateStr != null and stateStr != ''">
  63. and rr.maintenance_state ${stateStr}
  64. </if>
  65. <if test="userId != null and userId != ''">
  66. and rr.user_id = #{userId}
  67. </if>
  68. </where>
  69. GROUP BY rr.id
  70. order by rr.report_time DESC
  71. </select>
  72. <resultMap type="com.repair.model.vo.MaintenanceTechnicianVo" id="repairRecordTechnicianMap">
  73. <result property="receivingCount" column="receiving_count"/>
  74. <result property="maintenanceCount" column="maintenance_count"/>
  75. <result property="timeoutCount" column="timeout_count"/>
  76. <result property="examineCount" column="examine_count"/>
  77. </resultMap>
  78. <select id="queryRepairTechnicianCount" resultType="com.repair.model.vo.MaintenanceTechnicianVo"
  79. resultMap="repairRecordTechnicianMap">
  80. select (select Count(*) from repair_record rr
  81. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id and rdr.receiving_time is null and rdr.users_id = #{userId}
  82. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state = 1) as receiving_count ,
  83. (select Count(*) from repair_record rr2
  84. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr2.id and rdv.is_lose_efficacy = 0
  85. where rr2.maintenance_state = 2 and rr2.school_id = #{schoolId} and rr2.deleted = 0) as maintenance_count,
  86. (select Count(*) as cs from (select rr3.*
  87. from repair_record rr3
  88. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.users_id = #{userId} and rdr.record_id = rr3.id and
  89. rdr.is_lose_efficacy = 0
  90. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= #{dateNow} and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  91. where rr3.is_duty = 0 and rr3.school_id = #{schoolId} and rr3.maintenance_state &lt;= 7 and rr3.deleted = 0
  92. UNION
  93. select rr4.* from repair_record rr4
  94. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr4.id and
  95. rdv.is_lose_efficacy = 0
  96. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= #{dateNow} and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  97. where rr4.is_duty = 0 and rr4.school_id = #{schoolId} and rr4.maintenance_state &lt;= 7 and rr4.deleted = 0) c) as timeout_count,
  98. (select Count(*) as sh from (
  99. select rr5.* from repair_record rr5
  100. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.user_id = #{userId} and rcr.record_id = rr5.id and
  101. rcr.approval_statu = 2
  102. where rr5.maintenance_state = 6 and rr5.school_id = #{schoolId} and rr5.deleted = 0
  103. UNION ALL
  104. select rr.* from repair_record rr
  105. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.user_id = #{userId} and rtr.record_id = rr.id and
  106. rtr.approval_statu = 2
  107. where rr.maintenance_state = 5 and rr.school_id = #{schoolId} and rr.deleted = 0) a) as examine_count
  108. </select>
  109. <resultMap type="com.repair.model.vo.RepairTechnicianVo" id="repairRecordTechnicianDataMap">
  110. <result property="id" column="id"/>
  111. <result property="recordNo" column="record_no"/>
  112. <result property="reportTime" column="report_time"/>
  113. <result property="userName" column="user_name"/>
  114. <result property="userPhone" column="user_phone"/>
  115. <result property="areaName" column="area_name"/>
  116. <result property="address" column="address"/>
  117. <result property="articleName" column="article_name"/>
  118. <result property="description" column="description"/>
  119. <result property="image" column="image"/>
  120. <result property="state" column="state"/>
  121. <result property="maintenanceState" column="maintenance_state"/>
  122. <result property="timeoutStr" column="timeout_str"/>
  123. <result property="maintenanceTimeout" column="maintenance_timeout"/>
  124. <result property="maintenancerName" column="maintenancer_name"/>
  125. <result property="maintenancerPhone" column="maintenancer_phone"/>
  126. <result property="voice" column="voice"/>
  127. <result property="voiceLength" column="voice_length"/>
  128. <result property="finishVoice" column="finish_voice"/>
  129. <result property="finishVoiceLength" column="finish_voice_length"/>
  130. <result property="price" column="price"/>
  131. </resultMap>
  132. <!--待接单-->
  133. <select id="queryPendingOrderList" resultType="com.repair.model.vo.RepairTechnicianVo"
  134. resultMap="repairRecordTechnicianDataMap">
  135. select case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= #{dateNow} and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time) and rr.is_duty = 0 when true then '超时未接' else null end as timeout_str,
  136. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name,rr.description,rr.image,'待接单' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price
  137. from repair_record rr
  138. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.users_id = #{userId} and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0 and rdr.receiving_time is null
  139. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  140. where rr.maintenance_state = 1 and rr.deleted = 0 and rr.school_id = #{schoolId}
  141. order by rr.report_time DESC
  142. </select>
  143. <!--维修中-->
  144. <select id="queryRepairOrderList" resultType="com.repair.model.vo.RepairTechnicianVo"
  145. resultMap="repairRecordTechnicianDataMap">
  146. select case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= #{dateNow} and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time) and rr.is_duty = 0 when true then '维修超时' else null end as timeout_str,
  147. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'维修中' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price
  148. from repair_record rr
  149. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  150. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  151. where rr.maintenance_state = 2 and rr.deleted = 0 and rr.school_id = #{schoolId}
  152. order by rr.report_time DESC
  153. </select>
  154. <!--已超时-->
  155. <select id="queryTimeoutOrderList" resultType="com.repair.model.vo.RepairTechnicianVo"
  156. resultMap="repairRecordTechnicianDataMap">
  157. SELECT case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time) when true then '超时未接' else null end as timeout_str,case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time) when true then '维修超时' else null end as maintenance_timeout,rat.name as article_name,t.* FROM (
  158. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  159. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.users_id = #{userId} and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  160. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  161. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.school_id = #{schoolId} and rr.deleted = 0
  162. UNION
  163. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  164. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  165. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  166. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.school_id = #{schoolId} and rr.deleted = 0) t
  167. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.users_id = #{userId} and rdr.record_id = t.id and rdr.is_lose_efficacy = 0
  168. left join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = t.id and rdv.is_lose_efficacy = 0
  169. left join repair_article_type rat on rat.deleted = 0 and rat.id = t.article_id
  170. order by t.report_time desc
  171. </select>
  172. <!--待审核-->
  173. <select id="queryExamineOrderList" resultType="com.repair.model.vo.RepairTechnicianVo"
  174. resultMap="repairRecordTechnicianDataMap">
  175. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'协作审核' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  176. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.user_id = #{userId} and rcr.record_id = rr.id and rcr.approval_statu = 2
  177. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  178. where rr.maintenance_state = 6 and rr.deleted = 0 and rr.school_id = #{schoolId}
  179. UNION ALL
  180. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'转单审核' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  181. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.user_id = #{userId} and rtr.record_id = rr.id and rtr.approval_statu = 2
  182. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  183. where rr.maintenance_state = 5 and rr.deleted = 0 and rr.school_id = #{schoolId}
  184. </select>
  185. <resultMap type="com.repair.model.vo.RepairManageCountVo" id="repairManageCountMap">
  186. <result property="dispatchCount" column="dispatch_count"/>
  187. <result property="maintenanceCount" column="maintenance_count"/>
  188. <result property="logisticsCount" column="logistics_count"/>
  189. <result property="examineCount" column="examine_count"/>
  190. <result property="finishedCount" column="finished_count"/>
  191. <result property="canceledCount" column="canceled_count"/>
  192. <result property="closedCount" column="closed_count"/>
  193. <result property="timeoutCount" column="timeout_count"/>
  194. </resultMap>
  195. <select id="queryManageCount" resultType="com.repair.model.vo.RepairManageCountVo" resultMap="repairManageCountMap">
  196. select
  197. (select Count(*) from (select rdr.users_id from repair_record rr
  198. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  199. and rr.maintenance_state = 1
  200. where rr.deleted = 0 and rr.maintenance_state = 1
  201. <if test="keyWord != null and keyWord != ''">
  202. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%'
  203. #{keyWord} '%')
  204. </if>
  205. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  206. and rr.report_time between #{startTime} and #{endTime}
  207. </if>
  208. <if test="schoolId != null and schoolId != ''">
  209. and rr.school_id = #{schoolId}
  210. </if>
  211. ) t
  212. <if test="maintenanceName != null and maintenanceName != ''">
  213. where t.users_id in (select id from repair_user where user_name like '%' #{maintenanceName} '%' and deleted = 0)
  214. </if>) as dispatch_count,
  215. (select Count(*) from (select rdv.user_id from repair_record rr
  216. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0 and
  217. rr.maintenance_state = 2
  218. where rr.deleted = 0 and rr.maintenance_state = 2
  219. <if test="keyWord != null and keyWord != ''">
  220. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%'
  221. #{keyWord} '%')
  222. </if>
  223. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  224. and rr.report_time between #{startTime} and #{endTime}
  225. </if>
  226. <if test="schoolId != null and schoolId != ''">
  227. and rr.school_id = #{schoolId}
  228. </if>
  229. ) t
  230. <if test="maintenanceName != null and maintenanceName != ''">
  231. where t.user_id in (select id from repair_user where user_name like '%' #{maintenanceName} '%' and deleted = 0)
  232. </if>) as maintenance_count,
  233. (select Count(*) from repair_record rr
  234. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  235. <if test="maintenanceName != null and maintenanceName != ''">
  236. and rdr.users_id in (select id from repair_user where user_name like '%' #{maintenanceName} '%' and deleted = 0)
  237. </if>
  238. where rr.deleted = 0 and rr.maintenance_state = 3
  239. <if test="keyWord != null and keyWord != ''">
  240. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%' #{keyWord}
  241. '%')
  242. </if>
  243. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  244. and rr.report_time between #{startTime} and #{endTime}
  245. </if>
  246. <if test="schoolId != null and schoolId != ''">
  247. and rr.school_id = #{schoolId}
  248. </if>
  249. ) as logistics_count,
  250. (select Count(*) from repair_record where deleted = 0 and (maintenance_state = 5 or maintenance_state = 6)
  251. <if test="keyWord != null and keyWord != ''">
  252. and (area_id like '%' #{keyWord} '%' or user_name like '%' #{keyWord} '%' or user_phone like '%' #{keyWord}
  253. '%')
  254. </if>
  255. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  256. and report_time between #{startTime} and #{endTime}
  257. </if>
  258. <if test="schoolId != null and schoolId != ''">
  259. and school_id = #{schoolId}
  260. </if>
  261. <if test="maintenanceName != null and maintenanceName != ''">
  262. and maintenancer_name like '%' #{maintenanceName}
  263. </if>) as examine_count,
  264. (select Count(*) from repair_record rr
  265. where rr.deleted = 0 and rr.maintenance_state = 7
  266. <if test="keyWord != null and keyWord != ''">
  267. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%' #{keyWord}
  268. '%')
  269. </if>
  270. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  271. and rr.report_time between #{startTime} and #{endTime}
  272. </if>
  273. <if test="schoolId != null and schoolId != ''">
  274. and rr.school_id = #{schoolId}
  275. </if>
  276. <if test="maintenanceName != null and maintenanceName != ''">
  277. and rr.maintenancer_name like '%' #{maintenanceName}
  278. </if>
  279. ) as finished_count,
  280. (select Count(*) from repair_record rr
  281. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  282. <if test="maintenanceName != null and maintenanceName != ''">
  283. and rdr.users_id in (select id from repair_user where user_name like '%' #{maintenanceName} '%' and deleted = 0)
  284. </if>
  285. where rr.deleted = 0 and rr.maintenance_state = 8
  286. <if test="keyWord != null and keyWord != ''">
  287. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%' #{keyWord}
  288. '%')
  289. </if>
  290. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  291. and rr.report_time between #{startTime} and #{endTime}
  292. </if>
  293. <if test="schoolId != null and schoolId != ''">
  294. and rr.school_id = #{schoolId}
  295. </if>
  296. <if test="maintenanceName != null and maintenanceName != ''">
  297. and rr.maintenancer_name like '%' #{maintenanceName} '%'
  298. </if>
  299. ) as canceled_count,
  300. (select Count(*) from repair_record rr
  301. where rr.deleted = 0 and rr.maintenance_state = 9
  302. <if test="keyWord != null and keyWord != ''">
  303. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%' #{keyWord}
  304. '%')
  305. </if>
  306. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  307. and rr.report_time between #{startTime} and #{endTime}
  308. </if>
  309. <if test="schoolId != null and schoolId != ''">
  310. and rr.school_id = #{schoolId}
  311. </if>
  312. <if test="maintenanceName != null and maintenanceName != ''">
  313. and rr.maintenancer_name like '%' #{maintenanceName} '%'
  314. </if>) as closed_count,
  315. (SELECT count(*) as cs FROM (
  316. select rdr.users_id as
  317. user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id
  318. as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from
  319. repair_record rr
  320. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  321. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  322. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  323. rdr.receiving_time)
  324. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0
  325. <if test="keyWord != null and keyWord != ''">
  326. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%'
  327. #{keyWord} '%')
  328. </if>
  329. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  330. and rr.report_time between #{startTime} and #{endTime}
  331. </if>
  332. <if test="schoolId != null and schoolId != ''">
  333. and rr.school_id = #{schoolId}
  334. </if>
  335. UNION
  336. select
  337. rdv.user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id
  338. as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from
  339. repair_record rr
  340. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  341. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  342. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  343. minute) &lt;= rdv.finish_time)
  344. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0
  345. <if test="keyWord != null and keyWord != ''">
  346. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like '%'
  347. #{keyWord} '%')
  348. </if>
  349. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  350. and rr.report_time between #{startTime} and #{endTime}
  351. </if>
  352. <if test="schoolId != null and schoolId != ''">
  353. and rr.school_id = #{schoolId}
  354. </if>
  355. ) t
  356. <if test="maintenanceName != null and maintenanceName != ''">
  357. where t.user_id in (select id from repair_user where user_name like '%' #{maintenanceName} '%' and deleted = 0)
  358. </if>
  359. ) as timeout_count
  360. </select>
  361. <!--管理端工单分页数据-->
  362. <resultMap type="com.repair.model.vo.RepairRecordPageVo" id="repairRecordPageMap">
  363. <result property="id" column="id"/>
  364. <result property="recordNo" column="record_no"/>
  365. <result property="schoolId" column="school_id"/>
  366. <result property="userName" column="user_name"/>
  367. <result property="userPhone" column="user_phone"/>
  368. <result property="articleName" column="article_name"/>
  369. <result property="areaName" column="area_name"/>
  370. <result property="description" column="description"/>
  371. <result property="reportTime" column="report_time"/>
  372. <result property="maintenancerName" column="maintenancer_name"/>
  373. <result property="details" column="details"/>
  374. <result property="rdvName" column="rdvName"/>
  375. <result property="rdrName" column="rdrName"/>
  376. <result property="userId" column="user_id"/>
  377. </resultMap>
  378. <!--除已超时外的其他数据获取方式-->
  379. <select id="queryNotTimeout" resultType="com.repair.model.vo.RepairRecordPageVo" resultMap="repairRecordPageMap">
  380. select * from (select rr.school_id,rr.user_id,1 as details,rr.id,rr.record_no,rr.area_id as
  381. area_name,rr.user_name,rr.user_phone,rat.name as
  382. article_name,
  383. rr.description,rr.report_time,rr.maintenancer_name,rr.maintenance_state,(select user_name from repair_user where
  384. id = rdv.user_id and deleted = 0) as rdvName,(select user_name from repair_user where id = rdr.users_id and
  385. deleted = 0) as rdrName
  386. from repair_record rr
  387. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0 and
  388. rdv.finish_time is null and rr.maintenance_state = 2
  389. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  390. and rdr.receiving_time is null and rr.maintenance_state = 1
  391. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  392. <where>
  393. and rr.deleted = 0
  394. <if test="schoolId != null and schoolId != ''">
  395. and rr.school_id = #{schoolId}
  396. </if>
  397. <if test="stateStr != null and stateStr != ''">
  398. and (rr.maintenance_state ${stateStr}
  399. </if>
  400. <if test="stateStr == null or stateStr == ''">
  401. and rr.maintenance_state != 4
  402. </if>
  403. <if test="keyWord != null and keyWord != ''">
  404. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like
  405. '%' #{keyWord} '%')
  406. </if>
  407. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  408. and rr.report_time between #{startTime} and #{endTime}
  409. </if>
  410. </where>) t
  411. <if test="maintenanceName != null and maintenanceName != ''">
  412. where t.maintenancer_name like '%' #{maintenanceName} '%' or t.rdvName like '%' #{maintenanceName} '%' or t.rdrName like '%' #{maintenanceName} '%'
  413. </if>
  414. order by t.report_time desc
  415. </select>
  416. <resultMap type="com.repair.model.vo.RepairRecordTimeoutPageVo" id="repairRecordTimeoutPageMap">
  417. <result property="id" column="id"/>
  418. <result property="recordNo" column="record_no"/>
  419. <result property="schoolId" column="school_id"/>
  420. <result property="userName" column="user_name"/>
  421. <result property="userPhone" column="user_phone"/>
  422. <result property="articleName" column="article_name"/>
  423. <result property="areaName" column="area_name"/>
  424. <result property="description" column="description"/>
  425. <result property="reportTime" column="report_time"/>
  426. <result property="maintenancerName" column="maintenancer_name"/>
  427. <result property="details" column="details"/>
  428. <result property="maintenanceState" column="maintenance_state"/>
  429. <result property="timeoutStr" column="timeout_str"/>
  430. <result property="maintenanceTimeout" column="maintenance_timeout"/>
  431. <result property="userId" column="user_id"/>
  432. </resultMap>
  433. <!--#已超时获取方式-->
  434. <select id="queryTimeout" resultType="com.repair.model.vo.RepairRecordTimeoutPageVo"
  435. resultMap="repairRecordTimeoutPageMap">
  436. select * from (select t.school_id,t.user_id,t.details,t.id,t.record_no,t.area_name,t.user_name,t.user_phone,rat.name as
  437. article_name,t.description,t.report_time,t.maintenance_state,ru.user_name as maintenancer_name,ru.user_phone as
  438. maintenancer_phone,
  439. case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  440. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  441. rdr.receiving_time) when true then '超时未接' else null end as timeout_str,
  442. case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  443. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  444. minute) &lt;= rdv.finish_time) when true then '维修超时' else null end as maintenance_timeout
  445. FROM (
  446. select rr.school_id,rdr.users_id as user_id,1 as details,rr.id,rr.record_no,rr.area_id as
  447. area_name,rr.user_name,rr.user_phone,rr.price,rr.maintenance_state,rr.article_id,rr.report_time,rr.description
  448. from repair_record rr
  449. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  450. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  451. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  452. rdr.receiving_time)
  453. <where>
  454. and rr.deleted = 0 and rr.is_duty = 0 and rr.maintenance_state &lt;= 7
  455. <if test="keyWord != null and keyWord != ''">
  456. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like
  457. '%' #{keyWord} '%')
  458. </if>
  459. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  460. and rr.report_time between #{startTime} and #{endTime}
  461. </if>
  462. <if test="schoolId != null and schoolId != ''">
  463. and rr.school_id = #{schoolId}
  464. </if>
  465. </where>
  466. UNION
  467. select rr.school_id,rdv.user_id,1 as details,rr.id,rr.record_no,rr.area_id as
  468. area_name,rr.user_name,rr.user_phone,rr.price,rr.maintenance_state,rr.article_id,rr.report_time,rr.description
  469. from repair_record rr
  470. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  471. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  472. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  473. minute) &lt;= rdv.finish_time)
  474. <where>
  475. and rr.deleted = 0 and rr.is_duty = 0 and rr.maintenance_state &lt;= 7
  476. <if test="keyWord != null and keyWord != ''">
  477. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like
  478. '%' #{keyWord} '%')
  479. </if>
  480. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  481. and rr.report_time between #{startTime} and #{endTime}
  482. </if>
  483. <if test="schoolId != null and schoolId != ''">
  484. and rr.school_id = #{schoolId}
  485. </if>
  486. </where>
  487. ) t
  488. left join repair_dispatch_record rdr on rdr.users_id =t.user_id and rdr.deleted = 0 and rdr.record_id = t.id and
  489. rdr.is_lose_efficacy = 0
  490. left join repair_receiving rdv on rdv.user_id =t.user_id and rdv.deleted = 0 and rdv.record_id = t.id and
  491. rdv.is_lose_efficacy = 0
  492. left join repair_article_type rat on rat.deleted = 0 and rat.id = t.article_id
  493. left join repair_user ru on ru.deleted = 0 and ru.id = t.user_id) d
  494. <if test="maintenanceName != null and maintenanceName != ''">
  495. where d.maintenancer_name like '%' #{maintenanceName} '%'
  496. </if>
  497. order by d.report_time desc
  498. </select>
  499. <!--#获取待处理池数据-->
  500. <resultMap type="com.repair.model.vo.pendingOrderVo" id="repairPendingOrderMap">
  501. <result property="id" column="id"/>
  502. <result property="recordNo" column="record_no"/>
  503. <result property="reportTime" column="report_time"/>
  504. <result property="userName" column="user_name"/>
  505. <result property="userPhone" column="user_phone"/>
  506. <result property="areaName" column="area_name"/>
  507. <result property="address" column="address"/>
  508. <result property="articleName" column="article_name"/>
  509. <result property="description" column="description"/>
  510. <result property="image" column="image"/>
  511. <result property="state" column="state"/>
  512. <result property="voice" column="voice"/>
  513. <result property="voiceLength" column="voice_length"/>
  514. <result property="finishVoice" column="finish_voice"/>
  515. <result property="finishVoiceLength" column="finish_voice_length"/>
  516. </resultMap>
  517. <select id="queryPendingOrder" resultType="com.repair.model.vo.pendingOrderVo" resultMap="repairPendingOrderMap">
  518. select * from (select (select Count(*) from repair_dispatch_record where is_lose_efficacy = 0 and record_id = rr.id and receiving_time is null) as disp_count,rr.id,rr.record_no,
  519. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name,rr.description,rr.image,'待接单' as state
  520. from repair_record rr
  521. left join repair_article_type rat on rat.id = rr.article_id
  522. where rr.maintenance_state = 1 and rr.deleted = 0 and rr.school_id = #{schoolId}) t where t.disp_count &lt;= 0
  523. order by t.report_time desc
  524. </select>
  525. <!--郭师傅维修 团队工单 头部数量-->
  526. <resultMap type="com.repair.model.vo.TeamWorkCountVo" id="teamWorkOrderMap">
  527. <result property="examineCount" column="examine_count"/>
  528. <result property="receivingCount" column="receiving_count"/>
  529. <result property="maintenanceCount" column="maintenance_count"/>
  530. <result property="finishedCount" column="finished_count"/>
  531. <result property="logisticsCount" column="logistics_count"/>
  532. <result property="timeoutCount" column="timeout_count"/>
  533. <result property="closedCount" column="closed_count"/>
  534. </resultMap>
  535. <select id="queryTeamWorkCount" resultType="com.repair.model.vo.TeamWorkCountVo" resultMap="teamWorkOrderMap">
  536. select
  537. (select Count(*) as sh from (
  538. select rr5.* from repair_record rr5
  539. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.record_id = rr5.id and
  540. rcr.approval_statu = 2
  541. where rr5.maintenance_state = 6 and rr5.school_id = #{schoolId} and rr5.deleted = 0
  542. UNION ALL
  543. select rr.* from repair_record rr
  544. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.record_id = rr.id and
  545. rtr.approval_statu = 2
  546. where rr.maintenance_state = 5 and rr.school_id = #{schoolId} and rr.deleted = 0) a) as examine_count,
  547. (select Count(*) from repair_record rr1
  548. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr1.id and
  549. rdr.is_lose_efficacy = 0 and rdr.receiving_time is null
  550. where rr1.maintenance_state = 1 and rr1.school_id = #{schoolId} and rr1.deleted = 0) as receiving_count,
  551. (select Count(*) from repair_record rr2
  552. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr2.id and
  553. rdv.is_lose_efficacy = 0
  554. where rr2.maintenance_state = 2 and rr2.school_id = #{schoolId} and rr2.deleted = 0) as maintenance_count,
  555. (select Count(*) from repair_record rr7
  556. where rr7.deleted = 0 and rr7.school_id = #{schoolId} and rr7.maintenance_state = 7) as finished_count,
  557. (select Count(*) from repair_record rr9
  558. where rr9.deleted = 0 and rr9.school_id = #{schoolId} and rr9.maintenance_state = 3) as logistics_count,
  559. (SELECT count(*) as cs FROM (
  560. select rdr.users_id as user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  561. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  562. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  563. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}
  564. UNION
  565. select rdv.user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  566. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  567. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  568. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}) t) as timeout_count,
  569. (select Count(*) from repair_record rr8
  570. where rr8.deleted = 0 and rr8.school_id = #{schoolId} and rr8.maintenance_state = 9) as closed_count
  571. </select>
  572. <!--待审核-->
  573. <select id="queryTeamWorkExamine" resultType="com.repair.model.vo.RepairTechnicianVo"
  574. resultMap="repairRecordTechnicianDataMap">
  575. select rr5.id,rr5.record_no,rr5.report_time,rr5.user_name,rr5.user_phone,rr5.area_id as area_name,rr5.address,rat.name as article_name ,rr5.description,rr5.image,'协作审核' as state,rr5.maintenancer_name,rr5.maintenancer_phone,rr5.price from repair_record rr5
  576. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.record_id = rr5.id and rcr.approval_statu = 2
  577. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr5.article_id
  578. where rr5.maintenance_state = 6 and rr5.school_id = #{schoolId} and rr5.deleted = 0
  579. UNION ALL
  580. select rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'转单审核' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  581. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.record_id = rr.id and rtr.approval_statu = 2
  582. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  583. where rr.maintenance_state = 5 and rr.school_id = #{schoolId} and rr.deleted = 0
  584. </select>
  585. <!--待接单-->
  586. <select id="queryTeamWorkPending" resultType="com.repair.model.vo.RepairTechnicianVo"
  587. resultMap="repairRecordTechnicianDataMap">
  588. select case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= #{dateNow} and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time) when true then '超时未接' else null end as timeout_str,
  589. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name,rr.description,rr.image,'待接单' as state,(select user_name from repair_user where deleted = 0 and id = rdr.users_id) as maintenancer_name,rr.maintenancer_phone,rr.price
  590. from repair_record rr
  591. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  592. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  593. where rr.maintenance_state = 1 and rr.school_id = #{schoolId} and rr.deleted = 0
  594. order by rr.report_time DESC
  595. </select>
  596. <!--维修中-->
  597. <select id="queryTeamWorkMaintenance" resultType="com.repair.model.vo.RepairTechnicianVo"
  598. resultMap="repairRecordTechnicianDataMap">
  599. select case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= #{dateNow} and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time) when true then '维修超时' else null end as timeout_str,
  600. rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'维修中' as state,(select user_name from repair_user where deleted = 0 and id = rdv.user_id) as maintenancer_name,rr.maintenancer_phone,rr.price
  601. from repair_record rr
  602. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  603. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  604. where rr.maintenance_state = 2 and rr.school_id = #{schoolId} and rr.deleted = 0
  605. order by rr.report_time DESC
  606. </select>
  607. <!--已完成-->
  608. <select id="queryTeamWorkFinished" resultType="com.repair.model.vo.RepairTechnicianVo"
  609. resultMap="repairRecordTechnicianDataMap">
  610. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'已完成' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  611. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  612. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state = 7
  613. order by rr.report_time DESC
  614. </select>
  615. <!--待处理-->
  616. <select id="queryTeamWorkLogistics" resultType="com.repair.model.vo.RepairTechnicianVo"
  617. resultMap="repairRecordTechnicianDataMap">
  618. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'待处理' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  619. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  620. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state = 3
  621. order by rr.report_time DESC
  622. </select>
  623. <!--已超时-->
  624. <select id="queryTeamWorkTimeout" resultType="com.repair.model.vo.RepairTechnicianVo"
  625. resultMap="repairRecordTechnicianDataMap">
  626. SELECT t.voice,t.voice_length,t.finish_voice,t.finish_voice_length,ru.user_name as maintenancer_name,ru.user_phone as maintenancer_phone,case ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time) when true then '超时未接' else null end as timeout_str,case ((date_add(rdv.receiving_time, interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time) when true then '维修超时' else null end as maintenance_timeout,rat.name as article_name,
  627. t.id,t.maintenance_state,t.record_no,t.report_time,t.user_name,t.user_phone,t.area_name,t.address,t.description,t.image,t.price FROM (
  628. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rdr.users_id as user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  629. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  630. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  631. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}
  632. UNION
  633. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rdv.user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  634. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  635. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  636. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}) t
  637. left join repair_dispatch_record rdr on rdr.users_id =t.user_id and rdr.deleted = 0 and rdr.record_id = t.id and rdr.is_lose_efficacy = 0
  638. left join repair_receiving rdv on rdv.user_id =t.user_id and rdv.deleted = 0 and rdv.record_id = t.id and rdv.is_lose_efficacy = 0
  639. left join repair_article_type rat on rat.deleted = 0 and rat.id = t.article_id
  640. left join repair_user ru on ru.deleted = 0 and ru.id = t.user_id
  641. order by t.report_time desc
  642. </select>
  643. <!--已关单-->
  644. <select id="queryTeamWorkClosed" resultType="com.repair.model.vo.RepairTechnicianVo"
  645. resultMap="repairRecordTechnicianDataMap">
  646. select rr.voice,rr.voice_length,rr.finish_voice,rr.finish_voice_length,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rat.name as article_name ,rr.description,rr.image,'已关单' as state,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  647. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  648. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state = 9
  649. order by rr.report_time DESC
  650. </select>
  651. <!-- 报表导出获取除已超时外的其他数据获取方式-->
  652. <select id="queryNotTimeoutReportExport" resultType="com.repair.model.vo.ReportExportVo">
  653. select rr.user_id,1 as details,rr.id,rr.record_no,rr.area_id as area_name,rr.user_name,rr.user_phone,rat.name as
  654. article_name,
  655. rr.description,rr.report_time,rr.maintenancer_name,rr.maintenance_state
  656. from repair_record rr
  657. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  658. <where>
  659. and rr.deleted = 0
  660. <if test="schoolId != null and schoolId != ''">
  661. and rr.school_id = #{schoolId}
  662. </if>
  663. <if test="stateStr != null and stateStr != ''">
  664. and (rr.maintenance_state ${stateStr}
  665. </if>
  666. <if test="keyWord != null and keyWord != ''">
  667. and (rr.area_id like '%' #{keyWord} '%' or rr.user_name like '%' #{keyWord} '%' or rr.user_phone like
  668. '%' #{keyWord} '%')
  669. </if>
  670. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  671. and rr.report_time between #{startTime} and #{endTime}
  672. </if>
  673. </where>
  674. order by rr.report_time desc
  675. </select>
  676. <!-- 报表导出获取除已超时数据获取方式-->
  677. <select id="queryTimeoutReportExport" resultType="com.repair.model.vo.ReportExportVo">
  678. SELECT * FROM (
  679. select rr3.user_id,1 as details,rr3.id,rr3.record_no,rr3.area_id as
  680. area_name,rr3.user_name,rr3.user_phone,rat.name as article_name,
  681. rr3.description,rr3.report_time,rr3.maintenancer_name,rr3.maintenance_state
  682. from repair_record rr3
  683. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr3.article_id
  684. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr3.id and
  685. rdr.is_lose_efficacy = 0
  686. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  687. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  688. rdr.receiving_time)
  689. <where>
  690. and rr3.deleted = 0 and rr3.is_duty = 0 and rr3.maintenance_state &lt;= 7
  691. <if test="keyWord != null and keyWord != ''">
  692. and (rr3.area_id like '%' #{keyWord} '%' or rr3.user_name like '%' #{keyWord} '%' or rr3.user_phone like
  693. '%' #{keyWord} '%')
  694. </if>
  695. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  696. and rr3.report_time between #{startTime} and #{endTime}
  697. </if>
  698. <if test="schoolId != null and schoolId != ''">
  699. and rr3.school_id = #{schoolId}
  700. </if>
  701. </where>
  702. UNION ALL
  703. select rr4.user_id,1 as details,rr4.id,rr4.record_no,rr4.area_id as
  704. area_name,rr4.user_name,rr4.user_phone,rat.name as
  705. article_name,
  706. rr4.description,rr4.report_time,rr4.maintenancer_name,rr4.maintenance_state
  707. from repair_record rr4
  708. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr4.article_id
  709. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr4.id and
  710. rdv.is_lose_efficacy = 0
  711. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  712. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  713. minute) &lt;= rdv.finish_time)
  714. <where>
  715. and rr4.deleted = 0 and rr4.is_duty = 0 and rr4.maintenance_state &lt;= 7
  716. <if test="keyWord != null and keyWord != ''">
  717. and (rr4.area_id like '%' #{keyWord} '%' or rr4.user_name like '%' #{keyWord} '%' or rr4.user_phone like
  718. '%' #{keyWord} '%')
  719. </if>
  720. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  721. and rr4.report_time between #{startTime} and #{endTime}
  722. </if>
  723. <if test="schoolId != null and schoolId != ''">
  724. and rr4.school_id = #{schoolId}
  725. </if>
  726. </where>
  727. ) t
  728. order by t.report_time desc
  729. </select>
  730. <!--维修师傅首页头部数量-->
  731. <resultMap type="com.repair.model.vo.MasterHomepageVo" id="masterHomepageMap">
  732. <result property="workCount" column="work_count"/>
  733. <result property="processCount" column="process_count"/>
  734. <result property="finishCount" column="finish_count"/>
  735. <result property="timeoutCount" column="timeout_count"/>
  736. </resultMap>
  737. <!--说明:-->
  738. <!--#work_count 工单数:维修师傅的工单总数,只计算维修师傅的接单数,待接单不用计算进去-->
  739. <!--#process_count 处理中:维修中没有完成的工单,包含维修中,待接单,待审核-->
  740. <!--#finish_count 已完成:已取消 已完成 已关单-->
  741. <!--#timeout_count 已超时:包含接单超时 维修超时-->
  742. <select id="queryMasterHomeCount" resultType="com.repair.model.vo.MasterHomepageVo" resultMap="masterHomepageMap">
  743. select
  744. (select count(*) from repair_receiving rc
  745. inner join repair_record rr on rr.deleted = 0 and rr.school_id = #{schoolId} and rr.id = rc.record_id
  746. where rc.deleted = 0 and rc.user_id = #{userId}) as work_count,
  747. (select
  748. (select Count(*) as rc from repair_record rr
  749. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id and rdr.users_id = #{userId}
  750. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state = 1) +
  751. (select Count(*) as wx from repair_record rr2
  752. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr2.id and
  753. rdv.is_lose_efficacy = 0
  754. where rr2.maintenance_state = 2 and rr2.school_id = #{schoolId} and rr2.deleted = 0) +
  755. (select Count(*) as sh from (
  756. select rr5.* from repair_record rr5
  757. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.user_id = #{userId} and rcr.record_id = rr5.id and
  758. rcr.approval_statu = 2
  759. where rr5.maintenance_state = 6 and rr5.deleted = 0 and rr5.school_id = #{schoolId}
  760. UNION ALL
  761. select rr.* from repair_record rr
  762. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.user_id = #{userId} and rtr.record_id = rr.id and
  763. rtr.approval_statu = 2
  764. where rr.maintenance_state = 5 and rr.deleted = 0 and rr.school_id = #{schoolId}) a) as process_count) as process_count,
  765. (select Count(*) from repair_record rr
  766. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id and rdr.users_id = #{userId}
  767. where rr.deleted = 0 and rr.school_id = #{schoolId} and rr.maintenance_state >= 7) as finish_count,
  768. (select Count(*) as cs from (select rr3.*
  769. from repair_record rr3
  770. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.users_id = #{userId} and rdr.record_id = rr3.id and
  771. rdr.is_lose_efficacy = 0
  772. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  773. where rr3.maintenance_state &lt;= 7 and rr3.is_duty = 0 and rr3.school_id = #{schoolId} and rr3.deleted = 0
  774. UNION
  775. select rr4.* from repair_record rr4
  776. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.user_id = #{userId} and rdv.record_id = rr4.id and
  777. rdv.is_lose_efficacy = 0
  778. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  779. where rr4.maintenance_state &lt;= 7 and rr4.is_duty = 0 and rr4.school_id = #{schoolId} and rr4.deleted = 0) c) as timeout_count
  780. </select>
  781. <!--后勤人员和郭师傅首页头部数量-->
  782. <!--说明:-->
  783. <!--#work_count 工单数:对应校区的工单总数,只计算对应人员校区的接单数,待接单不用计算进去-->
  784. <!--#process_count 处理中:维修中没有完成的工单,包含维修中,待接单,待审核-->
  785. <!--#finish_count 已完成:已取消 已完成 已关单-->
  786. <!--#timeout_count 已超时:包含接单超时 维修超时-->
  787. <select id="queryLogisticHomeCount" resultType="com.repair.model.vo.MasterHomepageVo" resultMap="masterHomepageMap">
  788. select
  789. (select Count(*) from repair_receiving rc
  790. inner join repair_record rr on rr.deleted = 0 and rr.school_id = #{schoolId} and rr.id = rc.record_id
  791. where rc.deleted = 0) as work_count,
  792. (select
  793. (select Count(*) as rc from repair_record rr
  794. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  795. where rr.deleted = 0 and rr.maintenance_state = 1 and rr.school_id = #{schoolId}) +
  796. (select Count(*) as wx from repair_record rr2
  797. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr2.id and
  798. rdv.is_lose_efficacy = 0
  799. where rr2.maintenance_state = 2 and rr2.deleted = 0 and rr2.school_id = #{schoolId}) +
  800. (select Count(*) as sh from (
  801. select rr5.* from repair_record rr5
  802. inner join repair_collaborate_record rcr on rcr.deleted = 0 and rcr.record_id = rr5.id and
  803. rcr.approval_statu = 2
  804. where rr5.maintenance_state = 6 and rr5.deleted = 0 and rr5.school_id = #{schoolId}
  805. UNION
  806. select rr.* from repair_record rr
  807. inner join repair_transfer_record rtr on rtr.deleted = 0 and rtr.record_id = rr.id and
  808. rtr.approval_statu = 2
  809. where rr.maintenance_state = 5 and rr.deleted = 0 and rr.school_id = #{schoolId}) a) as process_count) as process_count,
  810. (select Count(*) from repair_record rr
  811. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  812. where rr.deleted = 0 and rr.maintenance_state >= 7 and rr.school_id = #{schoolId}) as finish_count,
  813. (SELECT count(*) as cs FROM (
  814. select rdr.users_id as user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  815. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  816. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= rdr.receiving_time)
  817. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}
  818. UNION
  819. select rdv.user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from repair_record rr
  820. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  821. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= rdv.finish_time)
  822. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0 and rr.school_id = #{schoolId}) t) as timeout_count
  823. </select>
  824. <resultMap type="com.repair.model.vo.RepairCampusRecordVo" id="repairCampusMap">
  825. <result property="id" column="id"/>
  826. <result property="price" column="price"/>
  827. <result property="schoolId" column="school_id"/>
  828. <result property="maintenanceState" column="maintenance_state"/>
  829. </resultMap>
  830. <select id="repairCampusTotal" resultType="com.repair.model.vo.RepairCampusRecordVo" resultMap="repairCampusMap">
  831. SELECT rr.id,rr.price,rr.school_id,rr.maintenance_state
  832. FROM `repair_record` rr
  833. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.receiving_time is null and rdr.record_id = rr.id and rr.maintenance_state = 1
  834. left join repair_receiving rre on rre.deleted = 0 and rre.is_lose_efficacy = 0 and rre.finish_time is null and rre.record_id = rr.id and rr.maintenance_state = 2
  835. where rr.deleted = 0
  836. </select>
  837. <select id="repairCampus" resultType="com.repair.model.vo.RepairCampusRecordVo" resultMap="repairCampusMap">
  838. SELECT rr.id,rr.price,rr.school_id,rr.maintenance_state
  839. FROM `repair_record` rr
  840. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.receiving_time is
  841. null and rdr.record_id = rr.id and rr.maintenance_state = 1
  842. left join repair_receiving rre on rre.deleted = 0 and rre.is_lose_efficacy = 0 and rre.finish_time is null and
  843. rre.record_id = rr.id and rr.maintenance_state = 2
  844. <where>
  845. and rr.deleted = 0
  846. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  847. and rr.report_time between #{startTime} and #{endTime}
  848. </if>
  849. </where>
  850. </select>
  851. <select id="repairAreaTotal" resultType="com.repair.model.vo.RepairAreaVo">
  852. SELECT row_number() over ( ORDER BY ra.area_name ) AS id, ra.*
  853. FROM (SELECT count(rr.area_id) AS orders_total,
  854. rs.`name` AS school_name,
  855. rr.area_id AS area_name,
  856. (SELECT COUNT(area_id)
  857. FROM `repair_record`
  858. WHERE price > 0
  859. AND rr.area_id = area_id
  860. AND deleted = 0) AS orders_compensation,
  861. (SELECT COUNT(area_id)
  862. FROM `repair_record`
  863. WHERE (price IS NULL OR price = 0)
  864. AND rr.area_id = area_id
  865. AND deleted = 0) AS orders_gratis,
  866. SUM(rr.price) AS total_price
  867. FROM `repair_record` rr
  868. LEFT JOIN repair_school rs ON rs.deleted = 0
  869. AND rr.school_id = rs.id
  870. where rr.deleted = 0
  871. GROUP BY rr.area_id) ra
  872. </select>
  873. <select id="repairArea" resultType="com.repair.model.vo.RepairAreaVo">
  874. SELECT row_number() over ( ORDER BY ra.area_name ) AS id, ra.*
  875. FROM (SELECT count(rr.area_id) AS orders_total,
  876. rs.`name` AS school_name,
  877. rr.area_id AS area_name,
  878. (SELECT COUNT(area_id)
  879. FROM `repair_record`
  880. <where>
  881. AND price > 0
  882. AND rr.area_id = area_id
  883. AND deleted = 0
  884. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  885. and report_time between #{startTime} and #{endTime}
  886. </if>
  887. </where>
  888. ) AS orders_compensation,
  889. (SELECT COUNT(area_id)
  890. FROM `repair_record`
  891. <where>
  892. AND (price IS NULL OR price = 0)
  893. AND rr.area_id = area_id
  894. AND deleted = 0
  895. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  896. and report_time between #{startTime} and #{endTime}
  897. </if>
  898. </where>
  899. ) AS orders_gratis,
  900. SUM(rr.price) AS total_price
  901. FROM `repair_record` rr
  902. LEFT JOIN repair_school rs ON rs.deleted = 0
  903. AND rr.school_id = rs.id
  904. <where>
  905. AND rr.deleted=0
  906. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  907. and report_time between #{startTime} and #{endTime}
  908. </if>
  909. </where>
  910. GROUP BY rr.area_id) ra
  911. </select>
  912. <select id="maintenanceGoodsTotal" resultType="com.repair.model.vo.MaintenanceGoodsVo">
  913. SELECT row_number() over ( ORDER BY wx.article_name ) AS id, wx.*
  914. FROM (SELECT rat.`name` AS article_name,
  915. count(rr.article_id) AS orders_total,
  916. (SELECT COUNT(article_id)
  917. FROM `repair_record`
  918. WHERE price > 0
  919. AND rr.article_id = article_id
  920. AND deleted = 0) AS orders_compensation,
  921. (SELECT COUNT(article_id)
  922. FROM `repair_record`
  923. WHERE (price IS NULL OR price = 0)
  924. AND rr.article_id = article_id
  925. AND deleted = 0) AS orders_gratis,
  926. SUM(rr.price) AS total_price
  927. FROM `repair_record` rr
  928. LEFT JOIN repair_article_type rat ON rat.deleted = 0
  929. AND rr.article_id = rat.id
  930. WHERE rr.deleted = 0
  931. GROUP BY rr.article_id) wx
  932. </select>
  933. <select id="maintenanceGoods" resultType="com.repair.model.vo.MaintenanceGoodsVo">
  934. SELECT row_number() over ( ORDER BY wx.article_name ) AS id, wx.*
  935. FROM (SELECT rat.`name` AS article_name,
  936. count(rr.article_id) AS orders_total,
  937. (SELECT COUNT(article_id)
  938. FROM `repair_record`
  939. <where>
  940. and price > 0 AND rr.article_id = article_id AND deleted = 0
  941. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  942. and report_time between #{startTime} and #{endTime}
  943. </if>
  944. </where>
  945. ) AS orders_compensation,
  946. (SELECT COUNT(article_id)
  947. FROM `repair_record`
  948. <where>
  949. and (price IS NULL OR price = 0)
  950. AND rr.article_id = article_id
  951. AND deleted = 0
  952. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  953. and report_time between #{startTime} and #{endTime}
  954. </if>
  955. </where>
  956. ) AS orders_gratis,
  957. SUM(rr.price) AS total_price
  958. FROM `repair_record` rr
  959. LEFT JOIN repair_article_type rat ON rat.deleted = 0
  960. AND rr.article_id = rat.id
  961. <where>
  962. and rr.deleted = 0
  963. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  964. and report_time between #{startTime} and #{endTime}
  965. </if>
  966. </where>
  967. GROUP BY rr.article_id) wx
  968. </select>
  969. <select id="repairAreaExport" resultType="com.repair.model.vo.RepairAreaVo">
  970. SELECT row_number() over ( ORDER BY ra.area_name ) AS id, ra.*
  971. FROM (SELECT count(rr.area_id) AS orders_total,
  972. rs.`name` AS school_name,
  973. rr.area_id AS area_name,
  974. (SELECT COUNT(area_id)
  975. FROM `repair_record`
  976. <where>
  977. AND price > 0
  978. AND rr.area_id = area_id
  979. AND deleted = 0
  980. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  981. and report_time between #{startTime} and #{endTime}
  982. </if>
  983. </where>
  984. ) AS orders_compensation,
  985. (SELECT COUNT(area_id)
  986. FROM `repair_record`
  987. <where>
  988. AND (price IS NULL OR price = 0)
  989. AND rr.area_id = area_id
  990. AND deleted = 0
  991. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  992. and report_time between #{startTime} and #{endTime}
  993. </if>
  994. </where>
  995. ) AS orders_gratis,
  996. SUM(rr.price) AS total_price
  997. FROM `repair_record` rr
  998. LEFT JOIN repair_school rs ON rs.deleted = 0
  999. AND rr.school_id = rs.id
  1000. <where>
  1001. AND rr.deleted=0
  1002. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1003. and report_time between #{startTime} and #{endTime}
  1004. </if>
  1005. </where>
  1006. GROUP BY rr.area_id) ra
  1007. </select>
  1008. <select id="maintenanceGoodsExport" resultType="com.repair.model.vo.MaintenanceGoodsVo">
  1009. SELECT row_number() over ( ORDER BY wx.article_name ) AS id, wx.*
  1010. FROM (SELECT rat.`name` AS article_name,
  1011. count(rr.article_id) AS orders_total,
  1012. (SELECT COUNT(article_id)
  1013. FROM `repair_record`
  1014. <where>
  1015. and price > 0 AND rr.article_id = article_id AND deleted = 0
  1016. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1017. and report_time between #{startTime} and #{endTime}
  1018. </if>
  1019. </where>
  1020. ) AS orders_compensation,
  1021. (SELECT COUNT(article_id)
  1022. FROM `repair_record`
  1023. <where>
  1024. and (price IS NULL OR price = 0)
  1025. AND rr.article_id = article_id
  1026. AND deleted = 0
  1027. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1028. and report_time between #{startTime} and #{endTime}
  1029. </if>
  1030. </where>
  1031. ) AS orders_gratis,
  1032. SUM(rr.price) AS total_price
  1033. FROM `repair_record` rr
  1034. LEFT JOIN repair_article_type rat ON rat.deleted = 0
  1035. AND rr.article_id = rat.id
  1036. <where>
  1037. and rr.deleted = 0
  1038. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1039. and report_time between #{startTime} and #{endTime}
  1040. </if>
  1041. </where>
  1042. GROUP BY rr.article_id) wx
  1043. </select>
  1044. <!--报修详情-->
  1045. <resultMap type="com.repair.model.vo.DetailsVo" id="detailDatasMap">
  1046. <result property="id" column="id"/>
  1047. <result property="maintenanceState" column="maintenance_state"/>
  1048. <result property="recordNo" column="record_no"/>
  1049. <result property="reportTime" column="report_time"/>
  1050. <result property="userName" column="user_name"/>
  1051. <result property="userPhone" column="user_phone"/>
  1052. <result property="areaName" column="area_name"/>
  1053. <result property="address" column="address"/>
  1054. <result property="articleName" column="article_name"/>
  1055. <result property="description" column="description"/>
  1056. <result property="voice" column="voice"/>
  1057. <result property="voiceLength" column="voice_length"/>
  1058. <result property="finishVoice" column="finish_voice"/>
  1059. <result property="finishVoiceLength" column="finish_voice_length"/>
  1060. <result property="image" column="image"/>
  1061. <result property="maintenancerName" column="maintenancer_name"/>
  1062. <result property="maintenancerPhone" column="maintenancer_phone"/>
  1063. <result property="price" column="price"/>
  1064. </resultMap>
  1065. <select id="queryDetailData" resultType="com.repair.model.vo.DetailsVo" resultMap="detailDatasMap">
  1066. select rr.id,rr.maintenance_state,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id as
  1067. area_name,rr.address,rat.name as article_name,rr.description,rr.voice,rr.voice_length,
  1068. rr.finish_voice,finish_voice_length,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price
  1069. from repair_record rr
  1070. left join repair_article_type rat on rat.deleted = 0 and rat.id = rr.article_id
  1071. where rr.deleted = 0
  1072. <if test="recordId != null and recordId != ''">
  1073. and rr.id = #{recordId}
  1074. </if>
  1075. </select>
  1076. <select id="repairAnalysis" resultType="com.repair.model.vo.RepairAnalysisVo">
  1077. SELECT
  1078. (SELECT COUNT(*) FROM repair_record
  1079. <where>
  1080. AND deleted = 0
  1081. and (maintenance_state in (5,6))
  1082. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1083. and report_time between #{startTime} and #{endTime}
  1084. </if>
  1085. </where>
  1086. ) as check_count ,
  1087. (SELECT COUNT(*) FROM repair_record rr
  1088. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  1089. and rr.maintenance_state = 1
  1090. <where>
  1091. AND rr.deleted = 0
  1092. and rr.maintenance_state = 1
  1093. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1094. and rr.report_time between #{startTime} and #{endTime}
  1095. </if>
  1096. </where>
  1097. ) as receiving_count ,
  1098. (SELECT COUNT(*) FROM repair_record rr
  1099. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0 and
  1100. rr.maintenance_state = 2
  1101. <where>
  1102. AND rr.deleted = 0
  1103. and rr.maintenance_state = 2
  1104. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1105. and rr.report_time between #{startTime} and #{endTime}
  1106. </if>
  1107. </where>
  1108. ) as maintain_count ,
  1109. (SELECT COUNT(*) FROM repair_record
  1110. <where>
  1111. AND deleted = 0
  1112. and maintenance_state = 7
  1113. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1114. and report_time between #{startTime} and #{endTime}
  1115. </if>
  1116. </where>
  1117. ) as accomplish_count ,
  1118. (SELECT COUNT(*) FROM repair_record
  1119. <where>
  1120. AND deleted = 0
  1121. and maintenance_state = 9
  1122. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1123. and report_time between #{startTime} and #{endTime}
  1124. </if>
  1125. </where>
  1126. ) as shut_count ,
  1127. (SELECT COUNT(*) FROM repair_record
  1128. <where>
  1129. AND deleted = 0
  1130. and maintenance_state = 8
  1131. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1132. and report_time between #{startTime} and #{endTime}
  1133. </if>
  1134. </where>
  1135. ) as cancel_count ,
  1136. (SELECT COUNT(*) FROM repair_record
  1137. <where>
  1138. AND deleted = 0
  1139. and maintenance_state = 3
  1140. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1141. and report_time between #{startTime} and #{endTime}
  1142. </if>
  1143. </where>
  1144. ) as dispose_count ,
  1145. (SELECT COUNT(*) FROM repair_record
  1146. <where>
  1147. AND deleted = 0
  1148. and maintenance_state = 4
  1149. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1150. and report_time between #{startTime} and #{endTime}
  1151. </if>
  1152. </where>
  1153. )
  1154. as affirm_count
  1155. </select>
  1156. <select id="queryTimeOut" resultType="java.lang.Integer">
  1157. SELECT count(*) FROM (
  1158. select rdr.users_id as
  1159. user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id
  1160. as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from
  1161. repair_record rr
  1162. inner join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.record_id = rr.id and rdr.is_lose_efficacy = 0
  1163. and ((date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;= NOW() and
  1164. rdr.receiving_time is null) or date_add(rdr.assigned_time , interval rdr.acceptance_assess_time minute) &lt;=
  1165. rdr.receiving_time)
  1166. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0
  1167. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1168. and rr.report_time between #{startTime} and #{endTime}
  1169. </if>
  1170. UNION
  1171. select
  1172. rdv.user_id,rr.maintenance_state,rr.article_id,rr.id,rr.record_no,rr.report_time,rr.user_name,rr.user_phone,rr.area_id
  1173. as area_name,rr.address,rr.description,rr.image,rr.maintenancer_name,rr.maintenancer_phone,rr.price from
  1174. repair_record rr
  1175. inner join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0
  1176. and ((date_add(rdv.receiving_time , interval rdv.maintenance_assess_time minute) &lt;= NOW() and
  1177. rdv.maintenance_assess_time is null) or date_add(rdv.receiving_time , interval rdv.maintenance_assess_time
  1178. minute) &lt;= rdv.finish_time)
  1179. where rr.is_duty = 0 and rr.maintenance_state &lt;= 7 and rr.deleted = 0
  1180. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1181. and rr.report_time between #{startTime} and #{endTime}
  1182. </if>
  1183. ) t
  1184. </select>
  1185. <select id="repairSummarizing" resultType="com.repair.model.vo.RepairSummarizingVo">
  1186. SELECT
  1187. (SELECT COUNT(*) FROM repair_record
  1188. <where>
  1189. AND deleted = 0
  1190. and (maintenance_state in (5,6))
  1191. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1192. and report_time between #{startTime} and #{endTime}
  1193. </if>
  1194. </where>
  1195. ) as check_count ,
  1196. (SELECT COUNT(*) FROM repair_record rr
  1197. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id
  1198. and rr.maintenance_state = 1
  1199. <where>
  1200. AND rr.deleted = 0
  1201. and rr.maintenance_state = 1
  1202. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1203. and rr.report_time between #{startTime} and #{endTime}
  1204. </if>
  1205. </where>
  1206. ) as receiving_count ,
  1207. (SELECT COUNT(*) FROM repair_record rr
  1208. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0 and
  1209. rr.maintenance_state = 2
  1210. <where>
  1211. AND rr.deleted = 0
  1212. and rr.maintenance_state = 2
  1213. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1214. and rr.report_time between #{startTime} and #{endTime}
  1215. </if>
  1216. </where>
  1217. ) as maintain_count ,
  1218. (SELECT COUNT(*) FROM repair_record
  1219. <where>
  1220. AND deleted = 0
  1221. and maintenance_state = 7
  1222. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1223. and report_time between #{startTime} and #{endTime}
  1224. </if>
  1225. </where>
  1226. ) as accomplish_count ,
  1227. (SELECT COUNT(*) FROM repair_record
  1228. <where>
  1229. AND deleted = 0
  1230. and maintenance_state = 9
  1231. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1232. and report_time between #{startTime} and #{endTime}
  1233. </if>
  1234. </where>
  1235. ) as shut_count ,
  1236. (SELECT COUNT(*) FROM repair_record
  1237. <where>
  1238. AND deleted = 0
  1239. and maintenance_state = 8
  1240. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1241. and report_time between #{startTime} and #{endTime}
  1242. </if>
  1243. </where>
  1244. ) as cancel_count ,
  1245. (SELECT COUNT(*) FROM repair_record
  1246. <where>
  1247. AND deleted = 0
  1248. and maintenance_state = 3
  1249. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1250. and report_time between #{startTime} and #{endTime}
  1251. </if>
  1252. </where>
  1253. ) as dispose_count ,
  1254. (SELECT COUNT(*) FROM repair_record
  1255. <where>
  1256. AND deleted = 0
  1257. and maintenance_state = 4
  1258. <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
  1259. and report_time between #{startTime} and #{endTime}
  1260. </if>
  1261. </where>
  1262. )
  1263. as affirm_count
  1264. </select>
  1265. <select id="repairTotalData" resultType="com.repair.model.vo.RepairTotalDataVo">
  1266. select (SELECT COUNT(*)
  1267. FROM repair_record
  1268. where deleted = 0
  1269. and (maintenance_state in (5, 6))) as check_count,
  1270. (SELECT COUNT(*)
  1271. FROM repair_record rr
  1272. left join repair_dispatch_record rdr on rdr.deleted = 0 and rdr.is_lose_efficacy = 0 and rdr.record_id = rr.id and rr.maintenance_state = 1
  1273. where rr.deleted = 0
  1274. and rr.maintenance_state = 1) as receiving_count,
  1275. (SELECT COUNT(*)
  1276. FROM repair_record rr
  1277. left join repair_receiving rdv on rdv.deleted = 0 and rdv.record_id = rr.id and rdv.is_lose_efficacy = 0 and rr.maintenance_state = 2
  1278. where rr.deleted = 0
  1279. and rr.maintenance_state = 2) as maintain_count,
  1280. (SELECT COUNT(*)
  1281. FROM repair_record
  1282. where deleted = 0
  1283. and maintenance_state = 7) as accomplish_count,
  1284. (SELECT COUNT(*)
  1285. FROM repair_record
  1286. where deleted = 0
  1287. and maintenance_state = 9) as shut_count,
  1288. (SELECT COUNT(*)
  1289. FROM repair_record
  1290. where deleted = 0
  1291. and maintenance_state = 8) as cancel_count,
  1292. (SELECT COUNT(*)
  1293. FROM repair_record
  1294. where deleted = 0
  1295. and maintenance_state = 3) as dispose_count,
  1296. (SELECT COUNT(*)
  1297. FROM repair_record
  1298. where deleted = 0
  1299. and maintenance_state = 4)
  1300. as affirm_count
  1301. </select>
  1302. </mapper>