MaintenancePlanMapper.xml 15 KB

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