MaintenancePlanMapper.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  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 mp.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
  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 p.project_name AS projectName,
  130. p.id AS projectId,
  131. mp.id AS mtPlanId,
  132. l.id AS liftId,
  133. l.coordinate AS coordinate,
  134. l.registration_code AS registrationCode,
  135. l.use_company_code AS useCompanyCode,
  136. l.lift_type AS liftType,
  137. l.category AS category,
  138. l.lift_code AS liftCode,
  139. l.device_position AS devicePosition,
  140. ui.name AS workerName,
  141. mp.worker_id AS workerId,
  142. mp.plan_date AS planDate,
  143. mp.type AS maintenanceType,
  144. mp.status AS status
  145. FROM maintenance_plan mp
  146. LEFT JOIN project p ON mp.project_id = p.id
  147. <if test="request.currentRoleCode == 'REGION_DIRECTOR' ">
  148. LEFT JOIN project_user pu ON p.id = pu.project_id
  149. </if>
  150. LEFT JOIN lift l ON mp.lift_id = l.id
  151. LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
  152. WHERE mp.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  153. <choose>
  154. <when test="request.userId > 0 and request.currentRoleCode == 'REGION_DIRECTOR' ">
  155. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  156. </when>
  157. <when test="request.userId !=null">
  158. AND mp.worker_id = #{request.userId,jdbcType=BIGINT}
  159. </when>
  160. <otherwise/>
  161. </choose>
  162. <if test="request.status!=null and request.status!=''">
  163. AND mp.status = #{request.status,jdbcType=VARCHAR}
  164. </if>
  165. <if test="request.currentTime!=null">
  166. AND <![CDATA[ mp.plan_date = #{request.currentTime}]]>
  167. </if>
  168. <if test="request.beginTime!=null">
  169. AND <![CDATA[ mp.plan_date >= #{request.beginTime}]]>
  170. </if>
  171. <if test="request.endTime!=null">
  172. AND <![CDATA[ mp.plan_date <= #{request.endTime}]]>
  173. </if>
  174. </select>
  175. <!--app端 保养任务统计 (0:待保养、-1:超期) -->
  176. <select id="countPlanByWorkerId" resultType="cn.com.ty.lift.business.maintenance.dao.entity.model.MaintenanceCount"
  177. parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MaintenanceRecordRequest">
  178. SELECT t.plan_date,
  179. MAX(CASE t.status WHEN '0' THEN t.total ELSE 0 END) waitingMaintenance,
  180. MAX(CASE t.status WHEN '-1' THEN t.total ELSE 0 END) overdue
  181. FROM (
  182. SELECT mp.status,
  183. mp.plan_date,
  184. count(1) total
  185. FROM maintenance_plan mp
  186. LEFT JOIN project p ON mp.project_id = p.id
  187. <if test="request.currentRoleCode == 'REGION_DIRECTOR' ">
  188. LEFT JOIN project_user pu ON p.id = pu.project_id
  189. </if>
  190. LEFT JOIN lift l ON mp.lift_id = l.id
  191. LEFT JOIN user_info ui ON mp.worker_id = ui.user_id
  192. WHERE mp.mt_company_id = #{request.mtCompanyId,jdbcType=BIGINT}
  193. <choose>
  194. <when test="request.userId > 0 and request.currentRoleCode == 'REGION_DIRECTOR' ">
  195. AND pu.user_id = #{request.userId,jdbcType=BIGINT}
  196. </when>
  197. <when test="request.userId !=null">
  198. AND mp.worker_id = #{request.userId,jdbcType=BIGINT}
  199. </when>
  200. <otherwise/>
  201. </choose>
  202. <if test="request.beginTime!=null">
  203. AND <![CDATA[ mp.plan_date >= #{request.beginTime}]]>
  204. </if>
  205. <if test="request.endTime!=null">
  206. AND <![CDATA[ mp.plan_date <= #{request.endTime}]]>
  207. </if>
  208. GROUP BY plan_date,
  209. status
  210. ) t
  211. GROUP BY t.plan_date
  212. </select>
  213. <!--日常保养-计划超期:根据条件分页查询-->
  214. <select id="pagePlanByCondition" resultMap="maintenanceRecordResultMap" parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtPlanRequest">
  215. SELECT
  216. mp.*,
  217. li.use_company_code,
  218. li.device_position,
  219. li.registration_code,
  220. li.lift_type,
  221. li.category AS lift_category,
  222. pr.project_name,
  223. ui.`name` AS worker_name,
  224. mr.id AS mt_record_id,
  225. ifnull(mr.status, -3) AS record_status
  226. FROM
  227. maintenance_plan mp
  228. LEFT JOIN lift li ON li.id = mp.lift_id
  229. LEFT JOIN project pr ON pr.id = mp.project_id AND pr.mt_company_id = mp.mt_company_id
  230. LEFT JOIN user_info ui ON ui.user_id = mp.worker_id
  231. LEFT JOIN maintenance_record mr ON mr.mt_plan_id = mp.id
  232. WHERE mp.plan_date &lt; date_format(now(),'%Y-%m-%d') AND mp.work_date IS NULL
  233. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  234. AND mp.mt_company_id = #{cond.mtCompanyId}
  235. </if>
  236. <if test="cond.regionId != null and cond.regionId > 0">
  237. AND pr.region_id = #{cond.regionId}
  238. </if>
  239. <if test="cond.projectId != null and cond.projectId > 0">
  240. AND pr.id = #{cond.projectId}
  241. </if>
  242. <if test="cond.workerId != null and cond.workerId > 0">
  243. AND mp.worker_id = #{cond.workerId}
  244. </if>
  245. <if test="cond.planBegin != null">
  246. AND mp.plan_date &gt; #{cond.planBegin}
  247. </if>
  248. <if test="cond.planEnd != null">
  249. AND mp.plan_date &lt; #{cond.planEnd}
  250. </if>
  251. <if test="cond.workDate != null">
  252. AND mp.work_date = #{cond.workDate}
  253. </if>
  254. </select>
  255. <!--日常保养-计划超期:根据条件总计条数-->
  256. <select id="countPlanByCondition" resultType="java.lang.Long" parameterType="cn.com.ty.lift.business.maintenance.dao.entity.model.request.MtPlanRequest">
  257. SELECT
  258. count(*)
  259. FROM
  260. maintenance_plan mp
  261. WHERE mp.plan_date &lt; date_format(now(),'%Y-%m-%d') AND mp.work_date IS NULL
  262. <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
  263. AND mp.mt_company_id = #{cond.mtCompanyId}
  264. </if>
  265. </select>
  266. <select id="countWaitingMaintenanceByUser" resultType="java.lang.Long"
  267. parameterType="cn.com.ty.lift.business.common.CommonRequest">
  268. SELECT
  269. count(1)
  270. FROM maintenance_plan mp
  271. LEFT JOIN project_user pu ON pu.project_id = mp.project_id AND pu.mt_company_id = mp.mt_company_id
  272. WHERE mp.status = '0'
  273. AND mp.plan_date = current_date()
  274. <if test="request.userId != null and request.userId > 0">
  275. AND pu.user_id = #{request.userId}
  276. </if>
  277. <if test="request.mtCompanyId != null and request.mtCompanyId > 0">
  278. AND mp.mt_company_id = #{request.mtCompanyId}
  279. </if>
  280. </select>
  281. <select id="exportList" parameterType="java.util.List" resultType="java.util.Map">
  282. SELECT DATE_FORMAT(mp.plan_date,'%Y-%m-%d') AS planDate,
  283. l.registration_code AS registrationCode,
  284. l.device_position AS devicePosition,
  285. plr.plan_interval AS planInterval,
  286. p.project_name AS projectName,
  287. p.project_code AS projectCode,
  288. CASE pclr.lift_company_status
  289. WHEN '1' THEN '停保'
  290. WHEN '2' THEN '正常'
  291. WHEN '3' THEN '保养中'
  292. WHEN '4' THEN '维修中'
  293. WHEN '5' THEN '年检中'
  294. WHEN '6' THEN '大修中'
  295. END AS liftStatus,
  296. r.area_name AS regionName,
  297. ui.name AS workerName
  298. FROM project_lift_relevance plr
  299. LEFT JOIN platform_company_lift_relevance pclr
  300. ON plr.mt_company_id = pclr.mt_company_id AND plr.lift_id = pclr.lift_id
  301. LEFT JOIN lift l ON plr.lift_id = l.id
  302. LEFT JOIN project p ON plr.mt_company_id = p.mt_company_id AND plr.project_id = p.id
  303. LEFT JOIN maintenance_plan mp ON plr.mt_company_id = mp.mt_company_id AND plr.project_id = mp.project_id
  304. AND plr.lift_id = mp.lift_id
  305. LEFT JOIN user_info ui ON plr.worker_id = ui.user_id
  306. LEFT JOIN region r ON p.region_id = r.id
  307. <where>
  308. <if test="exportList != null and exportList.size > 0">
  309. AND mp.id IN
  310. <foreach collection="exportList" item="id" open="(" separator="," close=")">
  311. #{id}
  312. </foreach>
  313. </if>
  314. </where>
  315. </select>
  316. </mapper>