FirstArticleMapper.xml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  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.fa.FirstArticleMapper">
  4. <!--取得首件计划点检列表(审批通过的 首件计划)(计划当天点检状态,plan_status,0未完成 1已完成 2待重检) -->
  5. <select id="getFaPlanCheckList" resultType="com.factory.web.entity.fa.res.FaPlanListRes">
  6. SELECT
  7. temp.benteler_plan_id,temp.benteler_plan_name,temp.created_time,temp.pause_flag,temp.check_person,
  8. <![CDATA[
  9. CASE
  10. WHEN temp.count0 > 0 THEN 0
  11. WHEN temp.count2 > 0 THEN 2
  12. WHEN temp.count1 > 0 THEN 1
  13. ELSE -1
  14. END AS plan_status
  15. ]]>
  16. FROM (
  17. SELECT
  18. bp.id AS benteler_plan_id,
  19. bp.`name` AS benteler_plan_name,
  20. GROUP_CONCAT( uu.username ) AS check_person,
  21. bp.created_time,
  22. bp.pause_flag,
  23. <!-- 未完成 已完成 待重检-->
  24. SUM(IF(fat.`status` = 0 or fat.`status` = 1, 1,0)) AS count0,
  25. SUM(IF(fat.`status` = 2 or fat.`status` = 4, 1,0)) AS count1,
  26. SUM(IF(fat.`status` = 3, 1,0)) AS count2
  27. FROM
  28. benteler_plan bp
  29. join onsite_approval_plan oap on bp.id = oap.benteler_plan_id AND oap.approval_level = 2 AND oap.`status` = 1
  30. left join first_article_calendar fac on bp.id = fac.benteler_plan_id
  31. left join us_user uu on (fac.principal_one_id = uu.id or fac.principal_two_id = uu.id)
  32. left join first_article_task fat on fac.id = fat.first_article_calendar_id and TO_DAYS(fat.task_time) =
  33. TO_DAYS(NOW())
  34. WHERE
  35. bp.deleted= 0 and (bp.`status` = 4 or bp.`status` = 3) <!-- 审核通过已生效计划 -->
  36. AND bp.plan_type = 1
  37. <if test="req.bentelerPlanName != null and req.bentelerPlanName != ''">
  38. AND bp.`name` LIKE CONCAT('%', #{req.bentelerPlanName}, '%')
  39. </if>
  40. group by bp.id
  41. ) temp
  42. <where>
  43. <choose>
  44. <when test="req.planStatus != null and req.planStatus==0">
  45. temp.count0 > 0
  46. </when>
  47. <when test="req.planStatus != null and req.planStatus==2">
  48. temp.count2 > 0
  49. </when>
  50. <when test="req.planStatus != null and req.planStatus==1">
  51. temp.count1 > 0
  52. </when>
  53. </choose>
  54. </where>
  55. order by temp.benteler_plan_id desc
  56. </select>
  57. <!--取得Pad端首件计划列表 -->
  58. <select id="getFaPlanListForPad" resultType="com.factory.web.entity.fa.res.FaPlanListForPadRes">
  59. <if test="req.type == 0"> <!-- 未完成 -->
  60. SELECT DISTINCT fac.benteler_plan_id,
  61. bp.`name` AS benteler_plan_name,
  62. fat.type_flag
  63. </if>
  64. <if test="req.type == 1 || req.type == 2"><!-- 已完成 --><!-- 待重检(不放行) -->
  65. SELECT fat.id AS first_article_task_id,
  66. fat.`status`,
  67. fac.benteler_plan_id,
  68. bp.`name` AS benteler_plan_name,
  69. fac.id AS first_article_calendar_id,
  70. fat.type_flag
  71. </if>
  72. <![CDATA[
  73. FROM first_article_task fat,
  74. first_article_calendar fac,
  75. benteler_plan bp
  76. WHERE fat.first_article_calendar_id = fac.id
  77. AND fac.benteler_plan_id = bp.id
  78. AND bp.pause_flag = 0 and bp.`status`= 4 AND bp.deleted = 0
  79. AND fat.type_flag <> 2]]>
  80. <!-- 0 初始化 1 待审核状态 2放行 3 不通过 4 员工提交直接通过 -->
  81. <if test="req.type == 0"> <!-- 未完成 -->
  82. AND fat.`status` = 0
  83. </if>
  84. <if test="req.type == 1"> <!-- 已完成 -->
  85. AND fat.`status` in (1, 2, 4)
  86. </if>
  87. <if test="req.type == 2"> <!-- 待重检(不放行) -->
  88. AND fat.`status` = 3
  89. </if>
  90. <if test="req.typeFlag != null"><!-- 0表示首件 1表示200件 -->
  91. AND fat.type_flag = #{req.typeFlag}
  92. </if>
  93. AND TO_DAYS(fat.task_time) = TO_DAYS(NOW())
  94. AND (fac.principal_one_id = #{req.userId} or fac.principal_two_id = #{req.userId} )
  95. and (
  96. DATE_FORMAT(now(), '%w') = 1
  97. and exists(select i.prefix from first_article_item i
  98. where i.workshop_id in (select id from first_article_workshop
  99. where benteler_plan_id = fac.benteler_plan_id) and i.prefix = 'W')
  100. or exists(select i.prefix from first_article_item i
  101. where i.workshop_id in (select id from first_article_workshop
  102. where benteler_plan_id = fac.benteler_plan_id) and i.prefix != 'W'))
  103. <if test="req.type == 0"> <!-- 未完成 -->
  104. group by fac.benteler_plan_id
  105. </if>
  106. order by fat.id desc
  107. </select>
  108. <!--取得Pad端工作站列表 -->
  109. <select id="getFaWorkshopListForPad" resultType="com.factory.web.entity.fa.FirstArticleWorkshop">
  110. SELECT DISTINCT faw.id,
  111. faw.ws_name,
  112. faw.pl_name,
  113. faw.benteler_plan_id
  114. FROM first_article_workshop faw,
  115. first_article_item fai
  116. WHERE faw.id = fai.workshop_id
  117. AND faw.benteler_plan_id = #{req.bentelerPlanId}
  118. <if test="req.typeFlag == 0"> <!-- 首件 -->
  119. AND fai.first_flag = 1
  120. </if>
  121. <if test="req.typeFlag == 1"> <!-- 200件 -->
  122. AND fai.two_hundred_flag = 1
  123. </if>
  124. <if test="req.typeFlag == 2"> <!-- 中断 -->
  125. AND fai.catch_flag = 1
  126. </if>
  127. AND ((DATE_FORMAT(now(), '%w') = 1 and fai.prefix = 'W') or fai.prefix != 'W')
  128. </select>
  129. <!--取得Pad端巡检项目列表 -->
  130. <select id="getFaItemListForPad" resultType="com.factory.web.entity.fa.res.FaItemListForPadRes">
  131. SELECT
  132. fai.id,
  133. fai.workshop_id,
  134. fai.item_content,
  135. fai.item_standard,
  136. fai.prefix,
  137. fai.sno_start,
  138. fai.sno_end,
  139. fai.val_flag,
  140. fai.val_up,
  141. fai.val_down,
  142. fai.val_ok,
  143. fai.val_desc,
  144. fai.level_info,
  145. fai.product_info,
  146. fai.tool_id,
  147. fai.tool_desc,
  148. fai.first_flag,
  149. fai.two_hundred_flag,
  150. fai.catch_flag,
  151. fai.val_unit
  152. FROM
  153. first_article_item fai
  154. WHERE
  155. fai.workshop_id = #{req.workshopId}
  156. <if test="req.typeFlag == 0"> <!-- 首件 -->
  157. AND fai.first_flag = 1
  158. </if>
  159. <if test="req.typeFlag == 1"> <!-- 200件 -->
  160. AND fai.two_hundred_flag = 1
  161. </if>
  162. <if test="req.typeFlag == 2"> <!-- 中断 -->
  163. AND fai.catch_flag = 1
  164. </if>
  165. and ((DATE_FORMAT(now(), '%w') = 1 and fai.prefix = 'W') or fai.prefix != 'W')
  166. </select>
  167. <!--取得不放行任务对应的工作站 -->
  168. <select id="getFaWorkshopNoGoList" resultType="com.factory.web.entity.fa.res.FaWorkshopNoGoListRes">
  169. SELECT DISTINCT faw.id AS workshop_id,
  170. faw.ws_name,
  171. faw.pl_name,
  172. faw.benteler_plan_id bentelerPlanId
  173. FROM first_article_item_result fair,
  174. first_article_item fai,
  175. first_article_workshop faw
  176. WHERE fair.first_article_item_id = fai.id
  177. AND fai.workshop_id = faw.id
  178. AND fair.result_bak = 1
  179. AND faw.benteler_plan_id = #{req.bentelerPlanId}
  180. AND fair.first_article_task_id = #{req.firstArticleTaskId}
  181. </select>
  182. <!-- 取得不放行任务对应的点检项目 -->
  183. <select id="getFaItemNoGoList" resultType="com.factory.web.entity.fa.res.FaItemNoGoListRes">
  184. SELECT fair.id,
  185. fair.first_article_task_id,
  186. fair.first_article_item_id,
  187. fair.sno,
  188. fair.val AS val_check,
  189. fair.val_desc AS val_desc_check,
  190. fair.result,
  191. fair.tool_desc AS tool_desc_check,
  192. fair.abnormal,
  193. fair.order_number,
  194. fai.workshop_id,
  195. fai.item_content,
  196. fai.item_standard,
  197. fai.prefix,
  198. fai.sno_start,
  199. fai.sno_end,
  200. fai.val_flag,
  201. fai.val_up,
  202. fai.val_down,
  203. fai.val_ok,
  204. fai.val_desc,
  205. fai.level_info,
  206. fai.product_info,
  207. fai.tool_id,
  208. fai.tool_desc,
  209. fai.first_flag,
  210. fai.two_hundred_flag,
  211. fai.catch_flag,
  212. fai.val_unit
  213. FROM first_article_item_result fair,
  214. first_article_task fat,
  215. first_article_item fai
  216. WHERE fair.first_article_task_id = fat.id
  217. AND fair.first_article_item_id = fai.id
  218. AND fat.`status` = 3
  219. AND fair.result_bak = 1
  220. AND fai.workshop_id = #{req.workshopId}
  221. AND fair.first_article_task_id = #{req.firstArticleTaskId}
  222. </select>
  223. <!-- 取得任务(首件、200件都是后台生成的任务,每个用户、计划、当天、类型(首件或200件))对应的应该是一个task。中断的task可以随便提交,所以要取状态是0初始化的,用户是-1这个userId不用传 -->
  224. <!-- 查询首件或200件task,传bentelerPlanId、typeFlag、userId -->
  225. <!-- 查询中断task,传bentelerPlanId、typeFlag、status=0初始化 -->
  226. <select id="getFaTaskInfo" resultType="com.factory.web.entity.fa.FirstArticleTask">
  227. SELECT fat.id,
  228. fat.`status`,
  229. fat.first_article_calendar_id as firstArticleCalendarId
  230. FROM first_article_task fat,
  231. first_article_calendar fac
  232. WHERE fat.first_article_calendar_id = fac.id
  233. AND fac.benteler_plan_id = #{req.bentelerPlanId}
  234. <choose>
  235. <when test="req.taskId != null">
  236. and fat.id = #{req.taskId}
  237. </when>
  238. <otherwise>
  239. AND fat.type_flag = #{req.typeFlag}
  240. </otherwise>
  241. </choose>
  242. <if test="req.userId != null">
  243. AND (fac.principal_one_id = #{req.userId} OR fac.principal_two_id = #{req.userId})
  244. </if>
  245. <if test="req.status != null">
  246. AND fat.`status` = #{req.status}
  247. </if>
  248. AND TO_DAYS(fat.task_time) = TO_DAYS(NOW())
  249. </select>
  250. <!-- 查询中断最新的task -->
  251. <select id="getFaTaskInfoCatchLatest" resultType="com.factory.web.entity.fa.FirstArticleTask">
  252. SELECT fat.id, fat.`status`
  253. FROM first_article_task fat,
  254. first_article_calendar fac
  255. WHERE fat.first_article_calendar_id = fac.id
  256. AND fac.benteler_plan_id = #{req.bentelerPlanId}
  257. AND TO_DAYS(fat.task_time) = TO_DAYS(NOW())
  258. AND fat.type_flag = 2
  259. <choose>
  260. <when test="req.taskId!=null">
  261. and fat.id=#{req.taskId}
  262. </when>
  263. <otherwise>
  264. and fat.`status`=0
  265. </otherwise>
  266. </choose>
  267. ORDER BY fat.id DESC
  268. LIMIT 1
  269. </select>
  270. <!-- 取得不放行任务对应的审批人、审批意见、审批时间 -->
  271. <select id="getFaNoGoTaskAapproval" resultType="com.factory.web.entity.fa.res.FaNoGoTaskAapprovalRes">
  272. SELECT faat.approval_user_id,
  273. IFNULL(uu.username,'系统自动审批') AS approval_person,
  274. faat.reason,
  275. faat.updated_time AS approval_time
  276. FROM first_article_task fat
  277. join first_article_approval_task faat on fat.id = faat.first_article_task_id
  278. left join us_user uu on faat.approval_user_id = uu.id
  279. WHERE fat.`status` = 3
  280. <!-- AND faat.approval_level = 2 -->
  281. AND faat.`status` = 2
  282. AND fat.id = #{req.firstArticleTaskId}
  283. order by faat.approval_level desc
  284. limit 1
  285. </select>
  286. <!-- 取得首件、200件、中断每天的点检记录 -->
  287. <!--
  288. <select id="getFaItemResultList" resultType="com.factory.web.entity.fa.FirstArticleItemResult">
  289. SELECT fair.sno,
  290. fair.result,
  291. fair.val,
  292. fair.val_desc,
  293. fair.prefix,
  294. fair.tool_desc
  295. FROM first_article_item_result fair,
  296. first_article_task fat,
  297. first_article_calendar fac
  298. WHERE fair.first_article_task_id = fat.id
  299. AND fat.first_article_calendar_id = fac.id
  300. AND fair.first_article_item_id = #{req.firstArticleItemId}
  301. AND DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
  302. AND fac.type_flag = #{req.typeFlag}
  303. </select>
  304. -->
  305. <select id="getFaItemResultList" resultType="com.factory.web.entity.fa.FirstArticleItemResult">
  306. SELECT fair.sno,
  307. fair.result,
  308. fair.val,
  309. fair.val_desc,
  310. fair.prefix,
  311. fair.tool_desc,
  312. fair.abnormal,
  313. fair.order_number
  314. FROM first_article_item_result fair,
  315. first_article_task fat,
  316. first_article_item fai
  317. WHERE fair.first_article_task_id = fat.id
  318. AND fair.first_article_item_id = fai.id
  319. AND fair.first_article_item_id = #{req.firstArticleItemId}
  320. AND DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
  321. AND fat.type_flag = #{req.typeFlag}
  322. <if test="req.typeFlag == 0"> <!-- 首件 -->
  323. AND fai.first_flag = 1
  324. </if>
  325. <if test="req.typeFlag == 1"> <!-- 200件 -->
  326. AND fai.two_hundred_flag = 1
  327. </if>
  328. <if test="req.typeFlag == 2"> <!-- 中断 -->
  329. AND fai.catch_flag = 1
  330. </if>
  331. and ((DATE_FORMAT(now(), '%w') = 1 and fai.prefix = 'W') or fai.prefix != 'W')
  332. </select>
  333. <!-- 取得计划下的点检项目数 -->
  334. <select id="getFaItemCount" resultType="int">
  335. SELECT COUNT(fai.id)
  336. FROM first_article_item fai,
  337. first_article_workshop faw
  338. WHERE fai.workshop_id = faw.id
  339. AND faw.benteler_plan_id = #{req.bentelerPlanId}
  340. </select>
  341. <!-- 取得计划下当前task的点检结果数 -->
  342. <select id="getFaItemResultCount" resultType="int">
  343. SELECT COUNT(fair.id)
  344. FROM first_article_item_result fair,
  345. first_article_item fai,
  346. first_article_workshop faw
  347. WHERE fair.first_article_item_id = fai.id
  348. AND fai.workshop_id = faw.id
  349. AND faw.benteler_plan_id = #{req.bentelerPlanId}
  350. AND fair.first_article_task_id = #{req.firstArticleTaskId}
  351. </select>
  352. <!-- 取得工作站下的点检项目数 -->
  353. <select id="getFaWsItemCount" resultType="int">
  354. SELECT COUNT(fai.id)
  355. FROM first_article_item fai
  356. WHERE fai.workshop_id = #{req.workshopId}
  357. </select>
  358. <!-- 取得工作站下当前task的点检结果数 -->
  359. <select id="getFaWsItemResultCount" resultType="int">
  360. SELECT COUNT(fair.id)
  361. FROM first_article_item_result fair,
  362. first_article_item fai
  363. WHERE fair.first_article_item_id = fai.id
  364. AND fai.workshop_id = #{req.workshopId}
  365. AND fair.first_article_task_id = #{req.firstArticleTaskId}
  366. </select>
  367. <!--取得用户列表 -->
  368. <select id="getUserList" resultType="com.factory.web.entity.fa.res.UserListRes">
  369. SELECT DISTINCT
  370. uu.id,
  371. uu.username,
  372. uu.`name`
  373. FROM us_user uu,
  374. us_user_role uur
  375. WHERE uu.id = uur.user_id
  376. AND uu.`lock` = 0
  377. AND uu.del_flag = 0
  378. <if test="req.roleIds != null and req.roleIds.size()>0">
  379. AND uur.role_id in
  380. <foreach collection="req.roleIds" item="roleId" open="(" close=")" separator=",">
  381. #{roleId}
  382. </foreach>
  383. </if>
  384. </select>
  385. <!-- 判断当前检查项目是否是放行 -->
  386. <select id="getFaItemReleaseCount" resultType="int">
  387. SELECT COUNT(*)
  388. FROM first_article_item_result fair,
  389. first_article_task fat
  390. WHERE fair.first_article_task_id = fat.id
  391. AND fat.`status` = 2
  392. AND fair.result = 1
  393. AND fair.first_article_item_id = #{req.firstArticleItemId}
  394. AND DATE_FORMAT(fat.task_time, '%Y-%m-%d') = #{req.checkDate}
  395. </select>
  396. <!-- 获取放行记录 FirstArticleApprovalTask-->
  397. <select id="getFaItemRelease" resultType="com.factory.web.entity.fa.FirstArticleApprovalTask">
  398. select approval.*,
  399. result.result,
  400. uu.username as approvalUserName
  401. from first_article_item_result result,
  402. first_article_task task,
  403. first_article_approval_task approval,
  404. us_user uu
  405. where result.first_article_item_id = #{req.firstArticleItemId}
  406. and result.first_article_task_id = task.id
  407. and approval.first_article_task_id = task.id
  408. and DATE_FORMAT(task.task_time, '%Y-%m-%d') = #{req.checkDate}
  409. and uu.id = approval.approval_user_id
  410. group by approval.id,task.id
  411. order by approval.created_time desc
  412. </select>
  413. <!--取得点检人 -->
  414. <!--
  415. <select id="getFaCalendarList" resultType="com.factory.web.entity.fa.res.FaCalendarRes">
  416. SELECT DISTINCT fac.type_flag,
  417. fat.task_time,
  418. uu.username AS check_person
  419. FROM first_article_task fat,
  420. first_article_calendar fac,
  421. us_user uu
  422. WHERE fat.first_article_calendar_id = fac.id
  423. AND fac.user_id = uu.id
  424. AND fat.task_time = #{req.checkDate}
  425. </select>
  426. -->
  427. <select id="getFaCalendarList" resultType="com.factory.web.entity.fa.res.FaCalendarRes">
  428. select fat.type_flag as type_flag,
  429. (
  430. select uu2.username
  431. from us_user uu2
  432. where uu2.id = fat.submit_user_id) check_person,
  433. fat.submit_time taskTime
  434. from first_article_task fat,
  435. first_article_calendar fac
  436. where fac.benteler_plan_id = #{req.bentelerPlanId}
  437. and fat.first_article_calendar_id = fac.id
  438. and fat.task_time = #{req.checkDate}
  439. group by fat.type_flag
  440. </select>
  441. <!-- 取得重检项目下(result_bak = 1),未完成重检(result = -1)的item_result数量,如果重检了result会变成0或1 -->
  442. <select id="getFaRepeatItemResultCount" resultType="int">
  443. SELECT COUNT(fair.id)
  444. FROM first_article_item_result fair,
  445. first_article_item fai
  446. WHERE fair.first_article_item_id = fai.id
  447. AND fair.result_bak = 1
  448. AND fair.result = -1
  449. AND fai.workshop_id = #{req.workshopId}
  450. AND fair.first_article_task_id = #{req.firstArticleTaskId}
  451. </select>
  452. <!--取得Pad端中断任务列表 -->
  453. <select id="getFaBreakTaskForPad" resultType="com.factory.web.entity.fa.res.FaTaskResForPad">
  454. SELECT
  455. DISTINCT fat.id firstArticleTaskId,
  456. fac.id firstArticleCalendarId,
  457. fat.`status`,
  458. fat.task_time taskTime,
  459. fat.type_flag typeFlag
  460. FROM
  461. benteler_plan bp
  462. join onsite_approval_plan oap on bp.id = oap.benteler_plan_id AND oap.approval_level = 2 AND oap.`status` = 1
  463. join first_article_calendar fac on bp.id = fac.benteler_plan_id
  464. join first_article_task fat on fac.id = fat.first_article_calendar_id and TO_DAYS(fat.task_time) = TO_DAYS(NOW())
  465. where bp.`status` = 4 and bp.id = #{req.bentelerPlanId}
  466. <if test="req.typeFlag !=null">
  467. AND fat.type_flag = #{req.typeFlag}
  468. </if>
  469. <if test="req.status !=null">
  470. AND fat.`status` = #{req.status}
  471. </if>
  472. order by fat.id desc
  473. </select>
  474. </mapper>