RepairRecordMapper.xml 95 KB

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