PreventMistakeMapper.xml 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  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.factory.web.mapper.pm.PreventMistakeMapper">
  4. <!--取得防错计划点检列表(审批通过的 防错计划)(计划当天点检状态,plan_status,0未完成 1已完成 2待重检) -->
  5. <select id="getPmPlanCheckList" resultType="com.factory.web.entity.pm.res.PmPlanCheckListRes">
  6. SELECT
  7. bp.id AS benteler_plan_id,
  8. bp.`name` AS benteler_plan_name,
  9. GROUP_CONCAT( uu.`name` ) AS check_person,
  10. bp.created_time,
  11. bp.pause_flag,
  12. ps.plan_status
  13. FROM
  14. benteler_plan bp,
  15. onsite_calendar oc,
  16. us_user uu,
  17. onsite_approval_plan oap,
  18. (
  19. SELECT c.benteler_plan_id,
  20. CASE
  21. WHEN c.count0 &gt; 0 THEN 0
  22. WHEN c.count1 &gt; 0 THEN 0
  23. WHEN (c.count2 + c.count4) = c.count THEN 1
  24. WHEN c.count3 &gt; 0 THEN 2
  25. ELSE -1
  26. END AS plan_status
  27. FROM (
  28. SELECT bp.id AS benteler_plan_id,
  29. SUM(CASE WHEN ot.`status` = 0 THEN 1 ELSE 0 END) AS count0,
  30. SUM(CASE WHEN ot.`status` = 1 THEN 1 ELSE 0 END) AS count1,
  31. SUM(CASE WHEN ot.`status` = 2 THEN 1 ELSE 0 END) AS count2,
  32. SUM(CASE WHEN ot.`status` = 3 THEN 1 ELSE 0 END) AS count3,
  33. SUM(CASE WHEN ot.`status` = 4 THEN 1 ELSE 0 END) AS count4,
  34. COUNT(*) AS count
  35. FROM benteler_plan bp,
  36. onsite_calendar oc,
  37. onsite_task ot
  38. WHERE bp.id = oc.benteler_plan_id
  39. AND oc.id = ot.onsite_calendar_id
  40. AND TO_DAYS(ot.task_time) = TO_DAYS(NOW())
  41. AND bp.plan_type = 2
  42. GROUP BY bp.id
  43. ) c
  44. ) ps
  45. WHERE
  46. bp.id = oc.benteler_plan_id
  47. AND oc.user_id = uu.id
  48. AND bp.id = oap.benteler_plan_id
  49. AND bp.id = ps.benteler_plan_id
  50. AND bp.plan_type = 2
  51. AND oap.approval_level = 2
  52. AND oap.`status` = 1
  53. <if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
  54. AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
  55. </if>
  56. <if test="req.planStatus != null">
  57. AND ps.plan_status = #{req.planStatus}
  58. </if>
  59. GROUP BY
  60. bp.id
  61. </select>
  62. <!-- 取得防错计划列表(查询所有的防错计划)(计划审批状态plan_status 0待质量经理审批、1待生产经理审批、2已驳回待修改、3审批通过) -->
  63. <select id="getPmPlanList" resultType="com.factory.web.entity.pm.res.PmPlanListRes">
  64. SELECT
  65. bp.id AS benteler_plan_id,
  66. bp.`name` AS benteler_plan_name,
  67. bp.created_time,
  68. bp.pause_flag,
  69. bp.plan_type,
  70. ps.plan_status
  71. FROM
  72. benteler_plan bp,
  73. (
  74. SELECT a.id,
  75. a.benteler_plan_id,
  76. a.approval_level,
  77. a.`status`,
  78. CASE
  79. WHEN a.approval_level = 2 AND a.`status` = 0 THEN 1
  80. WHEN a.approval_level = 2 AND a.`status` = 1 THEN 3
  81. WHEN a.approval_level = 2 AND a.`status` = 2 THEN 2
  82. WHEN a.approval_level = 1 AND a.`status` = 0 THEN 0
  83. WHEN a.approval_level = 1 AND a.`status` = 2 THEN 2
  84. ELSE -1
  85. END AS plan_status
  86. FROM onsite_approval_plan a,
  87. (
  88. SELECT
  89. bp.id AS benteler_plan_id,
  90. MAX( oap.approval_level ) AS approval_level
  91. FROM
  92. benteler_plan bp,
  93. onsite_approval_plan oap
  94. WHERE
  95. bp.id = oap.benteler_plan_id
  96. GROUP BY
  97. bp.id
  98. ) b
  99. WHERE a.benteler_plan_id = b.benteler_plan_id
  100. AND a.approval_level = b.approval_level
  101. ) ps
  102. WHERE
  103. bp.id = ps.benteler_plan_id
  104. AND ps.plan_status in (0, 1, 2)
  105. <if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
  106. AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
  107. </if>
  108. <if test="req.planType != null">
  109. AND bp.plan_type = #{req.planType}
  110. </if>
  111. </select>
  112. <!--取得防错计划当天任务信息-->
  113. <select id="getTaskList" resultType="com.factory.web.entity.pm.res.PmTaskListRes">
  114. SELECT bp.id AS benteler_plan_id,
  115. oc.id AS onsite_calendar_id,
  116. ot.id AS onsite_task_id,
  117. ot.`status`
  118. FROM benteler_plan bp,
  119. onsite_calendar oc,
  120. onsite_task ot
  121. WHERE bp.id = oc.benteler_plan_id
  122. AND oc.id = ot.onsite_calendar_id
  123. AND TO_DAYS(ot.task_time) = TO_DAYS(NOW())
  124. AND bp.id = #{req.bentelerPlanId}
  125. </select>
  126. <!--取得检查记录 -->
  127. <!-- 取得计划下的工作站和巡检项目 -->
  128. <select id="getPmWorkshopItemList" resultType="com.factory.web.entity.pm.res.PmCheckRecordListRes">
  129. SELECT oi.workshop_id,
  130. ow.ws_name,
  131. oi.id AS onsite_item_id,
  132. oi.item_content
  133. FROM onsite_item oi,
  134. onsite_workshop ow
  135. WHERE oi.workshop_id = ow.id
  136. AND ow.benteler_plan_id = #{req.bentelerPlanId}
  137. ORDER BY oi.workshop_id, oi.id
  138. </select>
  139. <!-- 取得一个月里巡检项目每天的检查结果 --><!-- 暂时取onsite_task的时间,如果取onsite_item_result的时间,会不会有第二天才处理头一天的任务的 -->
  140. <select id="getPmItemResultList" resultType="com.factory.web.entity.pm.res.PmCheckRecordRes">
  141. SELECT ot.task_time,
  142. oir.result
  143. FROM onsite_item_result oir,
  144. onsite_task ot,
  145. onsite_calendar oc
  146. WHERE oir.onsite_task_id = ot.id
  147. AND ot.onsite_calendar_id = oc.id
  148. AND oc.type_flag = #{req.typeFlag}
  149. <if test="req.yearMonth != null and req.yearMonth != ''">
  150. AND DATE_FORMAT(ot.task_time, '%Y-%m') = #{req.yearMonth}
  151. </if>
  152. AND oir.onsite_item_id = #{req.onsiteItemId}
  153. ORDER BY ot.task_time
  154. </select>
  155. <!--取得Pad端防错计划列表 -->
  156. <select id="getPmPlanListForPad" resultType="com.factory.web.entity.pm.res.PmPlanListForPadRes">
  157. SELECT ot.id AS onsite_task_id,
  158. ot.`status`,
  159. oc.benteler_plan_id,
  160. bp.`name` AS benteler_plan_name,
  161. oc.id AS onsite_calendar_id,
  162. oc.type_flag
  163. FROM onsite_task ot,
  164. onsite_calendar oc,
  165. benteler_plan bp
  166. WHERE ot.onsite_calendar_id = oc.id
  167. AND oc.benteler_plan_id = bp.id
  168. AND bp.pause_flag = 0
  169. <if test="req.type == 0"> <!-- 未完成 -->
  170. AND ot.`status` = 0
  171. </if>
  172. <if test="req.type == 1"> <!-- 已完成 -->
  173. AND ot.`status` in (1, 2, 4)
  174. </if>
  175. <if test="req.type == 2"> <!-- 待重检(不放行) -->
  176. AND ot.`status` = 3
  177. </if>
  178. AND TO_DAYS(ot.task_time) = TO_DAYS(NOW())
  179. AND oc.user_id = #{req.userId}
  180. -- GROUP BY ot.id
  181. </select>
  182. <!--取得审批人 -->
  183. <select id="getApprovalUser" resultType="com.factory.web.entity.pm.res.ApprovalUserRes">
  184. SELECT uur.user_id,
  185. ar.type,
  186. ar.approval_level
  187. FROM approval_rule ar,
  188. us_user_role uur
  189. WHERE ar.role_id = uur.role_id
  190. AND ar.approval_level = #{req.approvalLevel}
  191. AND ar.type = #{req.type}
  192. LIMIT 0,1
  193. </select>
  194. <!--取得今天每频次点检信息(今天的每频次点检人、点检时间)-->
  195. <select id="getPmCheckList" resultType="com.factory.web.entity.pm.res.PmCheckListRes">
  196. SELECT
  197. bp.id AS benteler_plan_id,
  198. oc.id AS onsite_calendar_id,
  199. oc.type_flag,
  200. uu.`name` AS check_person,
  201. ot.id AS onsite_task_id,
  202. MIN(oir.created_time) AS check_time
  203. FROM
  204. benteler_plan bp
  205. JOIN onsite_calendar oc ON (bp.id = oc.benteler_plan_id )
  206. JOIN us_user uu ON (oc.user_id = uu.id )
  207. LEFT JOIN onsite_task ot ON (oc.id = ot.onsite_calendar_id )
  208. LEFT JOIN onsite_item_result oir ON (ot.id = oir.onsite_task_id )
  209. WHERE TO_DAYS( ot.task_time ) = TO_DAYS( NOW( ) )
  210. AND bp.id = #{req.bentelerPlanId}
  211. GROUP BY
  212. ot.onsite_calendar_id
  213. </select>
  214. <!--取得不放行任务对应的工作站 -->
  215. <select id="getPmWorkshopNoGoList" resultType="com.factory.web.entity.pm.res.PmWorkshopNoGoListRes">
  216. SELECT DISTINCT ow.id AS workshop_id,
  217. ow.ws_name
  218. FROM onsite_item_result oir,
  219. onsite_item oi,
  220. onsite_workshop ow
  221. WHERE oir.onsite_item_id = oi.id
  222. AND oi.workshop_id = ow.id
  223. AND oir.result = 1
  224. AND ow.benteler_plan_id = #{req.bentelerPlanId}
  225. AND oir.onsite_task_id = #{req.onsiteTaskId}
  226. </select>
  227. <!-- 取得不放行任务对应的点检项目 -->
  228. <select id="getPmItemNoGoList" resultType="com.factory.web.entity.pm.res.PmItemNoGoListRes">
  229. SELECT
  230. oir.onsite_item_id,
  231. oi.item_content,
  232. oir.result
  233. FROM
  234. onsite_item_result oir,
  235. onsite_task ot,
  236. onsite_item oi
  237. WHERE
  238. oir.onsite_task_id = ot.id
  239. AND oir.onsite_item_id = oi.id
  240. AND ot.`status` = 3
  241. AND oir.result = 1
  242. AND oi.workshop_id = #{req.workshopId}
  243. AND oir.onsite_task_id = #{req.onsiteTaskId}
  244. </select>
  245. <!-- 取得不放行任务对应的审批人、审批意见、审批时间 -->
  246. <select id="getPmNoGoTaskAapproval" resultType="com.factory.web.entity.pm.res.PmNoGoTaskAapprovalRes">
  247. SELECT
  248. oat.approval_user_id,
  249. uu.`name` AS approval_person,
  250. oat.reason,
  251. oat.updated_time AS approval_time
  252. FROM
  253. onsite_task ot,
  254. onsite_approval_task oat,
  255. us_user uu
  256. WHERE
  257. ot.id = oat.onsite_task_id
  258. AND oat.approval_user_id = uu.id
  259. AND ot.`status` = 3
  260. AND oat.approval_level = 2
  261. AND oat.`status` = 2
  262. AND ot.id = #{req.onsiteTaskId}
  263. </select>
  264. <!--
  265. <select id="getPmItemNoGoList" resultType="com.factory.web.entity.pm.res.PmItemNoGoListRes">
  266. SELECT oir.onsite_item_id,
  267. oi.item_content,
  268. oat.approval_user_id,
  269. uu.`name` AS approval_person,
  270. oat.updated_time AS approval_time
  271. FROM onsite_item_result oir,
  272. onsite_task ot,
  273. onsite_item oi,
  274. onsite_approval_task oat,
  275. us_user uu
  276. WHERE oir.onsite_task_id = ot.id
  277. AND oir.onsite_item_id = oi.id
  278. AND ot.id = oat.onsite_task_id
  279. AND oat.approval_user_id = uu.id
  280. AND ot.`status` = 3
  281. AND oir.result = 1
  282. AND oat.approval_level = 2
  283. AND oat.`status` = 2
  284. AND oi.workshop_id = #{req.workshopId}
  285. AND oir.onsite_task_id = #{req.onsiteTaskId}
  286. </select>
  287. -->
  288. <!--取得审批人 -->
  289. <select id="getLatestApprovalInfo" resultType="com.factory.web.entity.pm.OnsiteApprovalPlan">
  290. SELECT oap.benteler_plan_id,
  291. oap.approval_level,
  292. oap.approval_user_id,
  293. oap.`status`,
  294. oap.reason,
  295. oap.updated_time
  296. FROM onsite_approval_plan oap,
  297. (
  298. SELECT oap.benteler_plan_id ,
  299. MAX(oap.approval_level) AS approval_level
  300. FROM onsite_approval_plan oap
  301. WHERE oap.benteler_plan_id = #{req.bentelerPlanId}
  302. ) a
  303. WHERE oap.benteler_plan_id = a.benteler_plan_id
  304. AND oap.approval_level = a.approval_level
  305. AND oap.benteler_plan_id = #{req.bentelerPlanId}
  306. </select>
  307. <!-- 取得计划下的点检项目数 -->
  308. <select id="getPmItemCount" resultType="int">
  309. SELECT COUNT(oi.id)
  310. FROM onsite_item oi,
  311. onsite_workshop ow
  312. WHERE oi.workshop_id = ow.id
  313. AND ow.benteler_plan_id = #{req.bentelerPlanId}
  314. </select>
  315. <!-- 取得计划下当前task的点检结果数 -->
  316. <select id="getPmItemResultCount" resultType="int">
  317. SELECT COUNT(oir.id)
  318. FROM onsite_item_result oir,
  319. onsite_item oi,
  320. onsite_workshop ow
  321. WHERE oir.onsite_item_id = oi.id
  322. AND oi.workshop_id = ow.id
  323. AND ow.benteler_plan_id = #{req.bentelerPlanId}
  324. AND oir.onsite_task_id = #{req.onsiteTaskId}
  325. </select>
  326. <!-- 取得工作站下的点检项目数 -->
  327. <select id="getPmWsItemCount" resultType="int">
  328. SELECT COUNT(oi.id)
  329. FROM onsite_item oi
  330. WHERE oi.workshop_id = #{req.workshopId}
  331. </select>
  332. <!-- 取得工作站下当前task的点检结果数 -->
  333. <select id="getPmWsItemResultCount" resultType="int">
  334. SELECT COUNT(oir.id)
  335. FROM onsite_item_result oir,
  336. onsite_item oi
  337. WHERE oir.onsite_item_id = oi.id
  338. AND oi.workshop_id = #{req.workshopId}
  339. AND oir.onsite_task_id = #{req.onsiteTaskId}
  340. </select>
  341. <!-- 取得防错放行 -->
  342. <select id="getPmReleaseList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
  343. SELECT oc.benteler_plan_id,
  344. bp.`name` AS benteler_plan_name,
  345. bp.plan_type,
  346. oat.approval_level,
  347. uu.`name` AS person,
  348. 1 AS method,
  349. oat.reason,
  350. oat.updated_time,
  351. ot.`status`,
  352. oc.type_flag,
  353. ot.id AS task_id
  354. FROM onsite_task ot,
  355. onsite_calendar oc,
  356. benteler_plan bp,
  357. onsite_approval_task oat,
  358. us_user uu
  359. WHERE ot.onsite_calendar_id = oc.id
  360. AND oc.benteler_plan_id = bp.id
  361. AND ot.id = oat.onsite_task_id
  362. AND oat.approval_user_id = uu.id
  363. AND oat.`status` = 1
  364. AND ot.`status` = 2
  365. AND DATE_FORMAT(ot.task_time, '%Y-%m-%d') = #{req.checkDate}
  366. </select>
  367. <!-- 取得防错重检 -->
  368. <select id="getPmRepeatList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
  369. SELECT oc.benteler_plan_id,
  370. bp.`name` AS benteler_plan_name,
  371. bp.plan_type,
  372. uu.`name` AS person,
  373. 2 AS method,
  374. ot.`status`,
  375. oc.type_flag,
  376. ot.id AS task_id
  377. FROM onsite_task ot,
  378. onsite_calendar oc,
  379. benteler_plan bp,
  380. us_user uu,
  381. (
  382. SELECT DISTINCT othb.onsite_task_id
  383. FROM onsite_task_his_blob othb,
  384. onsite_task ot
  385. WHERE othb.onsite_task_id = ot.id
  386. ) r
  387. WHERE ot.id = r.onsite_task_id
  388. AND ot.onsite_calendar_id = oc.id
  389. AND oc.benteler_plan_id = bp.id
  390. AND oc.user_id = uu.id
  391. AND DATE_FORMAT(ot.task_time, '%Y-%m-%d') = #{req.checkDate}
  392. </select>
  393. <!-- 取得防错工作站下的巡检项目和检查结果 -->
  394. <select id="getPmAbnormalItemList" resultType="com.factory.web.entity.pm.res.AbnormalItemRes">
  395. SELECT oir.onsite_item_id AS item_id,
  396. oi.item_content,
  397. oir.result
  398. FROM onsite_item_result oir,
  399. onsite_item oi
  400. WHERE oir.onsite_item_id = oi.id
  401. AND oir.onsite_task_id = #{req.taskId}
  402. AND oi.workshop_id = #{req.workshopId}
  403. </select>
  404. <!-- 取得首件放行 -->
  405. <select id="getFaReleaseList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
  406. SELECT fac.benteler_plan_id,
  407. bp.`name` AS benteler_plan_name,
  408. bp.plan_type,
  409. faat.approval_level,
  410. uu.`name` AS person,
  411. 1 AS method,
  412. faat.reason,
  413. faat.updated_time,
  414. fat.`status`,
  415. fac.type_flag,
  416. fat.id AS task_id
  417. FROM first_article_task fat,
  418. first_article_calendar fac,
  419. benteler_plan bp,
  420. first_article_approval_task faat,
  421. us_user uu
  422. WHERE fat.first_article_calendar_id = fac.id
  423. AND fac.benteler_plan_id = bp.id
  424. AND fat.id = faat.first_article_task_id
  425. AND faat.approval_user_id = uu.id
  426. AND faat.`status` = 1
  427. AND fat.`status` = 2
  428. AND DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
  429. </select>
  430. <!-- 取得首件重检 -->
  431. <select id="getFaRepeatList" resultType="com.factory.web.entity.pm.res.AbnormalTaskInfoRes">
  432. SELECT fac.benteler_plan_id,
  433. bp.`name` AS benteler_plan_name,
  434. bp.plan_type,
  435. uu.`name` AS person,
  436. 2 AS method,
  437. fat.`status`,
  438. fac.type_flag,
  439. fat.id AS task_id
  440. FROM first_article_task fat,
  441. first_article_calendar fac,
  442. benteler_plan bp,
  443. us_user uu,
  444. (
  445. SELECT DISTINCT fathb.first_article_task_id
  446. FROM first_article_task_his_blob fathb,
  447. first_article_task fat
  448. WHERE fathb.first_article_task_id = fat.id
  449. ) r
  450. WHERE fat.id = r.first_article_task_id
  451. AND fat.first_article_calendar_id = fac.id
  452. AND fac.benteler_plan_id = bp.id
  453. AND fac.user_id = uu.id
  454. AND DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
  455. </select>
  456. <!-- 取得首件工作站下的巡检项目 -->
  457. <select id="getFaAbnormalItemList" resultType="com.factory.web.entity.pm.res.AbnormalItemRes">
  458. SELECT
  459. fai.id AS item_id,
  460. fai.item_content,
  461. fai.item_standard,
  462. fai.prefix,
  463. fai.sno_start,
  464. fai.sno_end,
  465. fai.val_flag,
  466. fai.val_up,
  467. fai.val_down,
  468. fai.val_ok,
  469. fai.val_desc,
  470. fai.level_info,
  471. fai.product_info,
  472. fai.tool_id,
  473. fai.tool_desc,
  474. fai.first_flag,
  475. fai.two_hundred_flag,
  476. fai.catch_flag,
  477. fai.val_unit
  478. FROM
  479. first_article_item fai
  480. WHERE
  481. fai.workshop_id = #{req.workshopId}
  482. </select>
  483. <!-- 取得首件检查结果 -->
  484. <select id="getFaAbnormalItemResultList" resultType="com.factory.web.entity.pm.res.AbnormalItemResultRes">
  485. SELECT
  486. fair.prefix,
  487. fair.sno,
  488. fair.val,
  489. fair.val_desc,
  490. fair.result,
  491. fair.tool_desc
  492. FROM
  493. first_article_item_result fair,
  494. first_article_item fai
  495. WHERE
  496. fair.first_article_item_id = fai.id
  497. AND fair.first_article_task_id = #{req.taskId}
  498. AND fair.first_article_item_id = #{req.itemId}
  499. <if test="req.typeFlag == 0"> <!-- 首件 -->
  500. AND fai.first_flag = 1
  501. </if>
  502. <if test="req.typeFlag == 1"> <!-- 200件 -->
  503. AND fai.two_hundred_flag = 1
  504. </if>
  505. <if test="req.typeFlag == 2"> <!-- 中断 -->
  506. AND fai.catch_flag = 1
  507. </if>
  508. </select>
  509. </mapper>