MaintenancePlanMapper.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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.MaintenancePlanMapper" >
  4. <resultMap id="BaseResultMap" type="cn.com.ty.lift.business.maintenance.dao.entity.MaintenancePlan" >
  5. <id column="id" property="id" jdbcType="BIGINT" />
  6. <result column="lift_id" property="liftId" jdbcType="BIGINT" />
  7. <result column="mt_company_id" property="mtCompanyId" jdbcType="BIGINT" />
  8. <result column="project_id" property="projectId" jdbcType="BIGINT" />
  9. <result column="worker_id" property="workerId" jdbcType="BIGINT" />
  10. <result column="plan_date" property="planDate" jdbcType="TIMESTAMP" />
  11. <result column="work_date" property="workDate" jdbcType="TIMESTAMP" />
  12. <result column="count" property="count" jdbcType="INTEGER" />
  13. <result column="type" property="type" jdbcType="TINYINT" />
  14. <result column="status" property="status" jdbcType="TINYINT" />
  15. <result column="creator_id" property="creatorId" jdbcType="BIGINT" />
  16. <result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
  17. <result column="update_id" property="updateId" jdbcType="BIGINT" />
  18. <result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
  19. <result column="demand" property="demand" jdbcType="VARCHAR" />
  20. </resultMap>
  21. <resultMap id="maintenanceRecordResultMap" type="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MtPlanResponse"
  22. extends="BaseResultMap">
  23. <result column="lift_type" property="liftType" jdbcType="INTEGER" />
  24. <result column="lift_category" property="liftCategory" jdbcType="INTEGER" />
  25. <result column="project_name" property="projectName" jdbcType="VARCHAR" />
  26. <result column="use_company_code" property="useCompanyCode" jdbcType="VARCHAR" />
  27. <result column="registration_code" property="registrationCode" jdbcType="VARCHAR" />
  28. <result column="device_position" property="devicePosition" jdbcType="VARCHAR" />
  29. <result column="worker_name" property="workerName" jdbcType="VARCHAR" />
  30. <result column="mt_record_id" property="mtRecordId" jdbcType="BIGINT" />
  31. <result column="record_status" property="recordStatus" jdbcType="VARCHAR" />
  32. </resultMap>
  33. <sql id="Base_Column_List" >
  34. id, lift_id, mt_company_id, project_id, worker_id, plan_date, work_date, count, type,
  35. status
  36. </sql>
  37. <!-- 查询当天所有维保工的维保任务 -->
  38. <select id="queryMaintenanceTask" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceTask">
  39. SELECT count(1) AS num,
  40. mp.worker_id,
  41. ua.device_model,
  42. ua.device_flag
  43. FROM maintenance_plan mp
  44. LEFT JOIN user_account ua ON mp.worker_id = ua.user_id
  45. WHERE plan_date = current_date() AND mp.status = 0
  46. GROUP BY mp.worker_id, ua.device_model, ua.device_flag
  47. </select>
  48. <select id="findByCondition" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenancePlanResponse"
  49. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenancePlanRequest">
  50. SELECT
  51. mp.id AS id,
  52. if(isnull(mp.id), '0', '1') AS status,
  53. mp.plan_date AS planDate,
  54. l.id AS liftId,
  55. l.registration_code AS registrationCode,
  56. l.device_position AS devicePosition,
  57. plr.id AS relevanceId,
  58. plr.mt_company_id AS mtCompanyId,
  59. plr.worker_id AS workerId,
  60. plr.plan_interval AS planInterval,
  61. p.id AS projectId,
  62. p.project_name AS projectName,
  63. p.project_code AS projectCode,
  64. pclr.lift_company_status AS liftStatus,
  65. r.area_name AS regionName,
  66. ui.name AS workerName
  67. FROM
  68. project_lift_relevance plr
  69. LEFT JOIN platform_company_lift_relevance pclr ON plr.mt_company_id = pclr.mt_company_id AND plr.lift_id = pclr.lift_id
  70. LEFT JOIN lift l ON plr.lift_id = l.id
  71. LEFT JOIN project p ON plr.mt_company_id = p.mt_company_id AND plr.project_id = p.id
  72. LEFT JOIN (
  73. SELECT MIN(m.plan_date) plan_date,
  74. m.lift_id,
  75. m.id
  76. FROM maintenance_plan m
  77. LEFT JOIN project_lift_relevance p ON m.mt_company_id = p.mt_company_id
  78. AND p.project_id = m.project_id
  79. AND m.lift_id = p.lift_id
  80. WHERE m.STATUS = 0
  81. AND m.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  82. GROUP BY m.lift_id
  83. ) lmp ON lmp.lift_id = plr.lift_id
  84. LEFT JOIN maintenance_plan mp ON plr.mt_company_id = mp.mt_company_id
  85. AND plr.project_id = mp.project_id
  86. AND mp.STATUS = 0
  87. AND mp.plan_date = lmp.plan_date
  88. AND plr.lift_id = mp.lift_id
  89. LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
  90. LEFT JOIN region r ON p.region_id = r.id
  91. WHERE plr.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  92. AND pclr.lift_company_status != '1'
  93. <if test="request.projectId!=null and request.projectId > 0">
  94. AND p.id = #{request.projectId,jdbcType=BIGINT}
  95. </if>
  96. <if test="request.workerId!=null and request.workerId > 0">
  97. AND plr.worker_id = #{request.workerId,jdbcType=BIGINT}
  98. </if>
  99. <if test="request.regionId!=null and request.regionId > 0">
  100. AND p.region_id = #{request.regionId,jdbcType=BIGINT}
  101. </if>
  102. <if test="request.planInterval!=null and request.planInterval > 0">
  103. AND plr.plan_interval = #{request.planInterval,jdbcType=INTEGER}
  104. </if>
  105. <if test="request.beginTime!=null">
  106. AND <![CDATA[mp.plan_date > #{request.beginTime}]]>
  107. </if>
  108. <if test="request.endTime!=null">
  109. AND <![CDATA[mp.plan_date < #{request.endTime}]]>
  110. </if>
  111. <if test="request.registrationCode!=null and request.registrationCode!=''">
  112. AND l.registration_code LIKE #{request.registrationCode,jdbcType=VARCHAR}
  113. </if>
  114. ORDER BY planDate,plr.relevance_id
  115. </select>
  116. <select id="queryPlanListByIds" parameterType="java.util.Map" resultMap="BaseResultMap">
  117. SELECT <include refid="Base_Column_List"/>
  118. FROM maintenance_plan
  119. WHERE mt_company_id = #{paramMap.mtCompanyId,jdbcType=VARCHAR}
  120. AND plan_date BETWEEN #{paramMap.beginTime} AND #{paramMap.endTime}
  121. AND lift_id IN
  122. <foreach collection="paramMap.liftIdList" item="id" index="index" open="(" close=")" separator=",">
  123. #{id}
  124. </foreach>
  125. </select>
  126. <!--app端 保养任务列表 (0:待保养、-1:超期) -->
  127. <select id="findPlanByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.response.MaintenanceAppResponse"
  128. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  129. SELECT DISTINCT
  130. p.project_name AS projectName,
  131. p.id AS projectId,
  132. mp.id AS mtPlanId,
  133. l.id AS liftId,
  134. l.coordinate AS coordinate,
  135. l.registration_code AS registrationCode,
  136. l.use_company_code AS useCompanyCode,
  137. l.lift_type AS liftType,
  138. l.category AS category,
  139. l.lift_code AS liftCode,
  140. l.device_position AS devicePosition,
  141. ui.name AS workerName,
  142. mp.worker_id AS workerId,
  143. mp.plan_date AS planDate,
  144. mp.type AS maintenanceType,
  145. mp.status AS status
  146. FROM maintenance_plan mp
  147. LEFT JOIN project p ON mp.project_id = p.id
  148. <if test="request.currentRoleCode == 'REGION_DIRECTOR' or request.currentRoleCode == 'CLERK' or request.look == 1 ">
  149. LEFT JOIN project_user pu ON p.id = pu.project_id
  150. </if>
  151. LEFT JOIN lift l ON mp.lift_id = l.id
  152. LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
  153. WHERE mp.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  154. <choose>
  155. <when test="request.currentRoleCode == 'REGION_DIRECTOR' or request.currentRoleCode == 'CLERK' or request.look == 1 ">
  156. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  157. </when>
  158. <when test="request.userId !=null">
  159. AND mp.worker_id = #{request.userId,jdbcType=BIGINT}
  160. </when>
  161. <otherwise/>
  162. </choose>
  163. <if test="request.status!=null and request.status!=''">
  164. AND mp.status = #{request.status,jdbcType=VARCHAR}
  165. </if>
  166. <if test="request.currentTime!=null">
  167. AND <![CDATA[ mp.plan_date = #{request.currentTime}]]>
  168. </if>
  169. <if test="request.beginTime!=null">
  170. AND <![CDATA[ mp.plan_date >= #{request.beginTime}]]>
  171. </if>
  172. <if test="request.endTime!=null">
  173. AND <![CDATA[ mp.plan_date <= #{request.endTime}]]>
  174. </if>
  175. <if test="request.userId!=null">
  176. order by IF(mp.worker_id = ${request.userId}, 0, 1),mp.lift_id
  177. </if>
  178. </select>
  179. <!--app端 保养任务统计 (0:待保养、-1:超期) -->
  180. <select id="countPlanByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount"
  181. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  182. SELECT t.plan_date,
  183. MAX(CASE t.status WHEN '0' THEN t.total ELSE 0 END) waitingMaintenance,
  184. MAX(CASE t.status WHEN '-1' THEN t.total ELSE 0 END) overdue
  185. FROM (
  186. SELECT mp.status,
  187. mp.plan_date,
  188. count(1) total
  189. FROM maintenance_plan mp
  190. LEFT JOIN project p ON mp.project_id = p.id
  191. <if test="request.currentRoleCode == 'REGION_DIRECTOR' or request.currentRoleCode == 'CLERK' or request.look == 1">
  192. LEFT JOIN project_user pu ON p.id = pu.project_id
  193. </if>
  194. LEFT JOIN lift l ON mp.lift_id = l.id
  195. LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
  196. WHERE mp.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  197. <choose>
  198. <when test="request.currentRoleCode == 'REGION_DIRECTOR' or request.currentRoleCode == 'CLERK' or request.look == 1 ">
  199. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  200. </when>
  201. <when test="request.userId !=null">
  202. AND mp.worker_id = #{request.userId,jdbcType=BIGINT}
  203. </when>
  204. <otherwise/>
  205. </choose>
  206. <if test="request.beginTime!=null">
  207. AND <![CDATA[ mp.plan_date >= #{request.beginTime}]]>
  208. </if>
  209. <if test="request.endTime!=null">
  210. AND <![CDATA[ mp.plan_date <= #{request.endTime}]]>
  211. </if>
  212. GROUP BY plan_date,
  213. status
  214. ) t
  215. GROUP BY t.plan_date
  216. </select>
  217. <!--日常保养-计划超期:根据条件分页查询-->
  218. <select id="pagePlanByCondition" resultMap="maintenanceRecordResultMap" parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtPlanRequest">
  219. SELECT
  220. mp.*,
  221. li.use_company_code,
  222. li.device_position,
  223. li.registration_code,
  224. li.lift_type,
  225. li.category AS lift_category,
  226. pr.project_name,
  227. ui.`name` AS worker_name,
  228. mr.id AS mt_record_id,
  229. ifnull(mr.status, -3) AS record_status
  230. FROM
  231. maintenance_plan mp
  232. LEFT JOIN lift li ON li.id = mp.lift_id
  233. LEFT JOIN project pr ON pr.id = mp.project_id AND pr.mt_company_id = mp.mt_company_id
  234. LEFT JOIN user_info ui ON ui.user_id = mp.worker_id
  235. LEFT JOIN maintenance_record mr ON mr.mt_plan_id = mp.id
  236. WHERE mp.plan_date &lt; date_format(now(),'%Y-%m-%d') AND mp.work_date IS NULL
  237. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  238. AND mp.mt_company_id = #{cond.mtCompanyId}
  239. </if>
  240. <if test="cond.regionId != null and cond.regionId > 0">
  241. AND pr.region_id = #{cond.regionId}
  242. </if>
  243. <if test="cond.projectId != null and cond.projectId > 0">
  244. AND pr.id = #{cond.projectId}
  245. </if>
  246. <if test="cond.workerId != null and cond.workerId > 0">
  247. AND mp.worker_id = #{cond.workerId}
  248. </if>
  249. <if test="cond.planBegin != null">
  250. AND mp.plan_date &gt; #{cond.planBegin}
  251. </if>
  252. <if test="cond.planEnd != null">
  253. AND mp.plan_date &lt; #{cond.planEnd}
  254. </if>
  255. <if test="cond.workDate != null">
  256. AND mp.work_date = #{cond.workDate}
  257. </if>
  258. ORDER BY
  259. plan_date DESC,record_status
  260. </select>
  261. <!--日常保养-计划超期:根据条件总计条数-->
  262. <select id="countPlanByCondition" resultType="java.lang.Long" parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtPlanRequest">
  263. SELECT
  264. count(1)
  265. FROM
  266. maintenance_plan mp
  267. WHERE mp.plan_date &lt; date_format(now(),'%Y-%m-%d') AND mp.work_date IS NULL
  268. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  269. AND mp.mt_company_id = #{cond.mtCompanyId}
  270. </if>
  271. </select>
  272. <select id="countWaitingMaintenanceByUser" resultType="java.lang.Long"
  273. parameterType="cn.com.ty.lift.business.common.CommonRequest">
  274. SELECT
  275. count(1)
  276. FROM maintenance_plan mp
  277. <if test="request.currentRoleCode == 'REGION_DIRECTOR'">
  278. LEFT JOIN project_user pu ON pu.project_id = mp.project_id AND pu.mt_company_id = mp.mt_company_id
  279. </if>
  280. WHERE mp.status = '0'
  281. AND mp.plan_date = current_date()
  282. <if test="request.mtCompanyId != null and request.mtCompanyId > 0">
  283. AND mp.mt_company_id = #{request.mtCompanyId}
  284. </if>
  285. <choose>
  286. <when test="request.userId != null and request.currentRoleCode == 'REGION_DIRECTOR' ">
  287. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  288. </when>
  289. <when test="request.userId != null and request.currentRoleCode == 'ROLEMTWORK' ">
  290. AND mp.worker_id = #{request.userId,jdbcType=BIGINT}
  291. </when>
  292. <otherwise/>
  293. </choose>
  294. </select>
  295. <select id="exportList" parameterType="java.util.List" resultType="java.util.Map">
  296. SELECT DATE_FORMAT(mp.plan_date,'%Y-%m-%d') AS planDate,
  297. l.registration_code AS registrationCode,
  298. l.device_position AS devicePosition,
  299. plr.plan_interval AS planInterval,
  300. p.project_name AS projectName,
  301. p.project_code AS projectCode,
  302. CASE pclr.lift_company_status
  303. WHEN '1' THEN '停保'
  304. WHEN '2' THEN '正常'
  305. WHEN '3' THEN '保养中'
  306. WHEN '4' THEN '维修中'
  307. WHEN '5' THEN '年检中'
  308. WHEN '6' THEN '大修中'
  309. END AS liftStatus,
  310. r.area_name AS regionName,
  311. ui.name AS workerName
  312. FROM project_lift_relevance plr
  313. LEFT JOIN platform_company_lift_relevance pclr
  314. ON plr.mt_company_id = pclr.mt_company_id AND plr.lift_id = pclr.lift_id
  315. LEFT JOIN lift l ON plr.lift_id = l.id
  316. LEFT JOIN project p ON plr.mt_company_id = p.mt_company_id AND plr.project_id = p.id
  317. LEFT JOIN maintenance_plan mp ON plr.mt_company_id = mp.mt_company_id AND plr.project_id = mp.project_id
  318. AND plr.lift_id = mp.lift_id
  319. LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
  320. LEFT JOIN region r ON p.region_id = r.id
  321. <where>
  322. <if test="exportList != null and exportList.size > 0">
  323. AND mp.id IN
  324. <foreach collection="exportList" item="id" open="(" separator="," close=")">
  325. #{id}
  326. </foreach>
  327. </if>
  328. </where>
  329. </select>
  330. </mapper>