MaintenanceRecordMapper.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  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="cn.com.ty.lift.business.maintenance.dao.mapper.MaintenanceRecordMapper">
  4. <resultMap id="BaseResultMap" type="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MtRecordResponse">
  5. <id column="id" property="id" jdbcType="BIGINT"/>
  6. <result column="mt_plan_id" property="mtPlanId" jdbcType="BIGINT"/>
  7. <result column="lift_id" property="liftId" jdbcType="BIGINT"/>
  8. <result column="project_id" property="projectId" jdbcType="BIGINT"/>
  9. <result column="mt_company_id" property="mtCompanyId" jdbcType="BIGINT"/>
  10. <result column="worker_id" property="workerId" jdbcType="BIGINT"/>
  11. <result column="code" property="code" jdbcType="CHAR"/>
  12. <result column="lift_type" property="liftType" jdbcType="TINYINT"/>
  13. <result column="type" property="type" jdbcType="TINYINT"/>
  14. <result column="plan_date" property="planDate" jdbcType="TIMESTAMP"/>
  15. <result column="work_date" property="workDate" jdbcType="TIMESTAMP"/>
  16. <result column="stop_date" property="stopDate" jdbcType="TIMESTAMP"/>
  17. <result column="recovery_date" property="recoveryDate" jdbcType="TIMESTAMP"/>
  18. <result column="maintenance_advice" property="maintenanceAdvice" jdbcType="VARCHAR"/>
  19. <result column="maintenance_option" property="maintenanceOption" jdbcType="LONGVARCHAR"/>
  20. <result column="position" property="position" jdbcType="VARCHAR"/>
  21. <result column="status" property="status" jdbcType="TINYINT"/>
  22. <result column="is_regular" property="isRegular" jdbcType="TINYINT"/>
  23. <result column="creator_id" property="creatorId" jdbcType="BIGINT"/>
  24. <result column="create_date" property="createDate" jdbcType="TIMESTAMP"/>
  25. <result column="worker_id1" property="workerId1" jdbcType="BIGINT"/>
  26. <result column="is_repair" property="isRepair" jdbcType="TINYINT"/>
  27. <result column="repair_reason" property="repairReason" jdbcType="VARCHAR"/>
  28. <result column="signature_img1" property="signatureImg1" jdbcType="VARCHAR"/>
  29. <result column="signature_img2" property="signatureImg2" jdbcType="VARCHAR"/>
  30. <result column="sparepart" property="sparepart" jdbcType="LONGVARCHAR"/>
  31. <result column="parts_cost" property="partsCost" jdbcType="DECIMAL"/>
  32. <result column="man_cost" property="manCost" jdbcType="DECIMAL"/>
  33. <result column="safety_confirm" property="safetyConfirm" jdbcType="VARCHAR"/>
  34. <result column="has_evaluate" property="hasEvaluate" jdbcType="INTEGER"/>
  35. <result column="project_name" property="projectName" jdbcType="VARCHAR"/>
  36. <result column="project_code" property="projectCode" jdbcType="VARCHAR"/>
  37. <result column="use_company_code" property="useCompanyCode" jdbcType="VARCHAR"/>
  38. <result column="mt_company_name" property="mtCompanyName" jdbcType="VARCHAR"/>
  39. <result column="category" property="category" jdbcType="INTEGER"/>
  40. <result column="registration_code" property="registrationCode" jdbcType="VARCHAR"/>
  41. <result column="worker_name" property="workerName" jdbcType="VARCHAR"/>
  42. <result column="repair_diff" property="repairDiff" jdbcType="INTEGER"/>
  43. <result column="star_level" property="starLevel" jdbcType="INTEGER"/>
  44. <result column="device_position" property="devicePosition" jdbcType="VARCHAR"/>
  45. </resultMap>
  46. <sql id="Base_Column_List">
  47. id, mt_plan_id, lift_id, project_id, mt_company_id, worker_id, code, lift_type, type,
  48. plan_date, work_date, stop_date, recovery_date, maintenance_advice, maintenance_option, position, status,
  49. is_regular, creator_id, create_date, worker_id1, is_repair, repair_reason, signature_img1,
  50. signature_img2, sparepart, parts_cost, man_cost, safety_confirm
  51. </sql>
  52. <!--根据公司id和电梯id项目名称、项目id、电梯位置 -->
  53. <select id="findProjectByCompanyId"
  54. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceRecordResponse"
  55. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  56. SELECT l.id AS liftId,
  57. l.device_position AS devicePosition,
  58. p.project_name AS projectName,
  59. p.id AS projectId
  60. FROM project_lift_relevance plr
  61. LEFT JOIN project p ON plr.project_id = p.id
  62. LEFT JOIN lift l ON plr.lift_id = l.id
  63. WHERE 1 = 1
  64. <if test="request.mtCompanyId!=null and request.mtCompanyId!=''">
  65. AND plr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  66. </if>
  67. <if test="request.liftId!=null and request.liftId!=''">
  68. AND plr.lift_id = #{request.liftId,jdbcType=BIGINT}
  69. </if>
  70. </select>
  71. <!--根据公司id和电梯id获取上次保养信息 -->
  72. <select id="findRecordByCompanyId"
  73. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceRecordResponse"
  74. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  75. SELECT work_date AS workDate,
  76. type AS type,
  77. lift_id AS liftId
  78. FROM maintenance_record
  79. WHERE 1=1
  80. <if test="request.mtCompanyId!=null and request.mtCompanyId!=''">
  81. AND mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  82. </if>
  83. <if test="request.liftId!=null and request.liftId!=''">
  84. AND lift_id = #{request.liftId,jdbcType=BIGINT}
  85. </if>
  86. AND work_date = (SELECT max(work_date)
  87. FROM maintenance_record
  88. WHERE status > 1
  89. <if test="request.mtCompanyId!=null and request.mtCompanyId!=''">
  90. AND mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  91. </if>
  92. <if test="request.liftId!=null and request.liftId!=''">
  93. AND lift_id = #{request.liftId,jdbcType=BIGINT}
  94. </if>)
  95. </select>
  96. <!--app端 保养任务列表 (1:保养中、2:已完成) -->
  97. <select id="findRecordByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse"
  98. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  99. SELECT DISTINCT p.project_name AS projectName,
  100. p.id AS projectId,
  101. mr.id AS mtPlanId,
  102. mr.id AS recordId,
  103. l.id AS liftId,
  104. l.coordinate AS coordinate,
  105. l.registration_code AS registrationCode,
  106. l.use_company_code AS useCompanyCode,
  107. l.lift_type AS liftType,
  108. l.category AS category,
  109. l.lift_code AS liftCode,
  110. l.device_position AS devicePosition,
  111. ui.name AS workerName,
  112. mr.worker_id AS workerId,
  113. mr.worker_id1 AS workerId1,
  114. mr.plan_date AS planDate,
  115. mr.type AS maintenanceType,
  116. mr.status AS status,
  117. mr.has_evaluate AS hasEvaluate
  118. FROM maintenance_record mr
  119. LEFT JOIN project p ON mr.project_id = p.id
  120. <if test="request.currentRoleCode == 'REGION_DIRECTOR' or request.look == 1 ">
  121. LEFT JOIN project_user pu ON p.id = pu.project_id
  122. </if>
  123. LEFT JOIN lift l ON mr.lift_id = l.id
  124. LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
  125. WHERE mr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  126. <choose>
  127. <when test="request.currentRoleCode == 'REGION_DIRECTOR' or request.look == 1 ">
  128. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  129. </when>
  130. <when test="request.userId !=null">
  131. AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
  132. </when>
  133. <otherwise/>
  134. </choose>
  135. <if test="request.status!=null and request.status!=''">
  136. AND mr.status = #{request.status,jdbcType=VARCHAR}
  137. </if>
  138. <if test="request.currentTime!=null">
  139. AND <![CDATA[ date_format(mr.work_date, '%Y-%m-%d') = #{request.currentTime}]]>
  140. </if>
  141. <if test="request.beginTime!=null">
  142. AND <![CDATA[ date_format(mr.work_date, '%Y-%m-%d') >= #{request.beginTime}]]>
  143. </if>
  144. <if test="request.endTime!=null">
  145. AND <![CDATA[ date_format(mr.work_date, '%Y-%m-%d') <= #{request.endTime}]]>
  146. </if>
  147. </select>
  148. <!--app端 保养任务统计 (1:保养中、2:已完成) -->
  149. <select id="countRecordByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount"
  150. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  151. SELECT t.planDate,
  152. MAX(CASE t.status WHEN '1' THEN t.total ELSE 0 END) inProgress,
  153. MAX(CASE t.status WHEN '2' THEN t.total ELSE 0 END) complete
  154. FROM (
  155. SELECT mr.status,
  156. mr.work_date as planDate,
  157. count(1) total
  158. FROM maintenance_record mr
  159. LEFT JOIN project p ON mr.project_id = p.id
  160. <if test="request.currentRoleCode == 'REGION_DIRECTOR' or request.look == 1 ">
  161. LEFT JOIN project_user pu ON p.id = pu.project_id
  162. </if>
  163. LEFT JOIN lift l ON mr.lift_id = l.id
  164. LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
  165. WHERE mr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  166. <choose>
  167. <when test="request.currentRoleCode == 'REGION_DIRECTOR' or request.look == 1 ">
  168. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  169. </when>
  170. <when test="request.userId !=null">
  171. AND mr.worker_id1 = #{request.userId,jdbcType=BIGINT}
  172. </when>
  173. <otherwise/>
  174. </choose>
  175. <if test="request.beginTime!=null">
  176. AND <![CDATA[ date_format(mr.work_date, '%Y-%m-%d') >= #{request.beginTime}]]>
  177. </if>
  178. <if test="request.endTime!=null">
  179. AND <![CDATA[ date_format(mr.work_date, '%Y-%m-%d') <= #{request.endTime}]]>
  180. </if>
  181. GROUP BY planDate,
  182. status
  183. ) t
  184. GROUP BY t.planDate
  185. </select>
  186. <select id="findRecordByLiftId"
  187. resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.ScanRecordResponse"
  188. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  189. SELECT mr.id AS id,
  190. l.id AS liftId,
  191. l.registration_code AS registrationCode,
  192. p.project_name AS projectName,
  193. l.device_position AS devicePosition,
  194. l.lift_type AS liftType,
  195. ui.name AS workerName
  196. FROM maintenance_record mr
  197. LEFT JOIN lift l ON l.id = mr.lift_id
  198. LEFT JOIN project p ON mr.project_id = p.id
  199. LEFT JOIN user_info ui ON mr.worker_id = ui.user_id
  200. WHERE mr.lift_id = #{request.liftId,jdbcType=BIGINT} AND mr.status = '2'
  201. </select>
  202. <!--日常保养-保养单:根据条件分页查询-->
  203. <select id="pageRecordByCondition" resultMap="BaseResultMap"
  204. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  205. SELECT
  206. mr.*,
  207. li.use_company_code,
  208. li.registration_code,
  209. li.category,
  210. ui.`name` AS worker_name,
  211. pr.project_name,
  212. ifnull(ev.star_level, 0),
  213. TimeStampDiff(MINUTE ,mr.stop_date,mr.recovery_date) AS repair_diff
  214. FROM
  215. maintenance_record mr
  216. LEFT JOIN lift li ON mr.lift_id = li.id
  217. LEFT JOIN user_info ui ON mr.worker_id1 = ui.user_id
  218. LEFT JOIN project pr ON mr.project_id = pr.id AND pr.mt_company_id = mr.mt_company_id
  219. LEFT JOIN evaluation ev ON mr.id = ev.record_id
  220. WHERE ((status = '2' AND has_evaluate = '0') or (status = '2' AND has_evaluate = '1'))
  221. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  222. AND mr.mt_company_id = #{cond.mtCompanyId}
  223. </if>
  224. <if test="cond.regionId != null and cond.regionId > 0">
  225. AND pr.region_id = #{cond.regionId}
  226. </if>
  227. <if test="cond.projectId != null and cond.projectId > 0">
  228. AND pr.id = #{cond.projectId}
  229. </if>
  230. <if test="cond.workerId != null and cond.workerId > 0">
  231. AND mr.worker_id1 = #{cond.workerId}
  232. </if>
  233. <if test="cond.planBegin != null">
  234. AND mr.plan_date &gt; #{cond.planBegin}
  235. </if>
  236. <if test="cond.planEnd != null">
  237. AND mr.plan_date &lt; #{cond.planEnd}
  238. </if>
  239. <if test="cond.workDate != null">
  240. AND mr.work_date = #{cond.workDate}
  241. </if>
  242. </select>
  243. <!--日常保养-保养单:根据条件汇总条数-->
  244. <select id="countRecordByCondition" resultType="java.lang.Long"
  245. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  246. SELECT
  247. count(1)
  248. FROM
  249. maintenance_record mr
  250. WHERE ((status = '2' AND has_evaluate = '0') or (status = '2' AND has_evaluate = '1'))
  251. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  252. AND mr.mt_company_id = #{cond.mtCompanyId}
  253. </if>
  254. </select>
  255. <!--日常保养-保养单:根据id查询,带关联信息-->
  256. <select id="infoById" resultMap="BaseResultMap"
  257. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  258. SELECT
  259. mr.*,
  260. li.use_company_code,
  261. li.registration_code,
  262. li.device_position,
  263. li.category,
  264. mc.name AS mt_company_name,
  265. ui.`name` AS worker_name,
  266. pr.project_name,
  267. pr.project_code,
  268. ev.star_level,
  269. li.device_position,
  270. TimeStampDiff(MINUTE ,mr.stop_date,mr.recovery_date) AS repair_diff
  271. FROM
  272. maintenance_record mr
  273. LEFT JOIN lift li ON mr.lift_id = li.id
  274. LEFT JOIN user_info ui ON mr.worker_id1 = ui.user_id
  275. LEFT JOIN project pr ON mr.project_id = pr.id AND mr.mt_company_id = pr.mt_company_id
  276. LEFT JOIN evaluation ev ON mr.id = ev.record_id AND ev.source = 1
  277. LEFT JOIN maintenance_company mc ON mr.mt_company_id = mc.id
  278. <where>
  279. <if test="cond.id != null and cond.id > 0">
  280. mr.id = #{cond.id}
  281. </if>
  282. </where>
  283. </select>
  284. <!--日常保养-保养单:根据ids查询,带关联信息-->
  285. <select id="listByIds" resultMap="BaseResultMap"
  286. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  287. SELECT
  288. mr.*,
  289. li.use_company_code,
  290. li.registration_code,
  291. li.category,
  292. mc.name AS mt_company_name,
  293. ui.`name` AS worker_name,
  294. pr.project_name,
  295. pr.project_code,
  296. ev.star_level
  297. FROM
  298. maintenance_record mr
  299. LEFT JOIN lift li ON mr.lift_id = li.id
  300. LEFT JOIN user_info ui ON mr.worker_id1 = ui.user_id
  301. LEFT JOIN project pr ON mr.project_id = pr.id AND mr.mt_company_id = pr.mt_company_id
  302. LEFT JOIN evaluation ev ON mr.id = ev.record_id AND ev.source = 1
  303. LEFT JOIN maintenance_company mc ON mr.mt_company_id = mc.id
  304. <where>
  305. <if test="cond.id != null and cond.id > 0">
  306. mr.id = #{cond.id}
  307. </if>
  308. </where>
  309. </select>
  310. <select id="pageByLift" resultMap="BaseResultMap"
  311. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtRecordRequest">
  312. SELECT
  313. mr.*,
  314. li.use_company_code,
  315. li.registration_code,
  316. li.category,
  317. mc.name AS mt_company_name,
  318. ui.`name` AS worker_name,
  319. pr.project_name,
  320. pr.project_code,
  321. ev.star_level
  322. FROM
  323. maintenance_record mr
  324. LEFT JOIN lift li ON mr.lift_id = li.id
  325. LEFT JOIN user_info ui ON mr.worker_id1 = ui.user_id
  326. LEFT JOIN project pr ON mr.project_id = pr.id
  327. LEFT JOIN evaluation ev ON mr.id = ev.record_id
  328. LEFT JOIN maintenance_company mc ON mr.mt_company_id = mc.id
  329. <where>
  330. <if test="cond.liftId != null and cond.liftId > 0">
  331. AND mr.lift_id = #{cond.liftId}
  332. </if>
  333. <if test="cond.projectId != null and cond.projectId > 0">
  334. AND mr.project_id = #{cond.projectId}
  335. </if>
  336. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  337. AND mr.mt_company_id = #{cond.mtCompanyId}
  338. </if>
  339. </where>
  340. </select>
  341. <select id="queryMaintenanceTask" parameterType="java.lang.Long" resultType="cn.com.ty.lift.business.maintenance.dao.third.MaintenanceTask">
  342. SELECT mr.id,
  343. CASE mr.type
  344. WHEN '1' THEN '半月'
  345. WHEN '2' THEN '季度'
  346. WHEN '3' THEN '半年'
  347. WHEN '4' THEN '全年'
  348. END AS type,
  349. lc.code,
  350. mr.maintenance_option,
  351. mr.signature_img1,
  352. mr.maintenance_advice
  353. FROM maintenance_record mr
  354. LEFT JOIN lift_certificate lc ON mr.worker_id1 = lc.owner_id
  355. WHERE mr.mt_company_id = #{mtCompanyId}
  356. AND mr.lift_id = #{liftId}
  357. AND plan_date = current_date()
  358. </select>
  359. </mapper>