You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

741 lines
31 KiB

3 months ago
2 months ago
3 months ago
3 months ago
1 month ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
2 months ago
3 months ago
2 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
2 months ago
2 months ago
3 months ago
3 months ago
2 months ago
3 months ago
3 months ago
3 months ago
2 months ago
3 months ago
3 months ago
3 months ago
  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.xujie.sys.modules.sampletracking.mapper.SampleProofTrackingMapper">
  4. <select id="searchProofTracking" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingData">
  5. SELECT
  6. t.id as tracking_id,
  7. t.site,
  8. t.project_id,
  9. t.project_part_id,
  10. t.proofing_id,
  11. t.proofing_no,
  12. t.proofing_status,
  13. t.project_phase,
  14. COALESCE(NULLIF(LTRIM(RTRIM(t.project_category)), ''),
  15. NULLIF(LTRIM(RTRIM(pp.project_category)), ''),
  16. NULLIF(LTRIM(RTRIM(p.project_category)), '')) AS project_category,
  17. t.tracker,
  18. t.engineer,
  19. t.priority_level,
  20. t.proofing_number,
  21. t.plan_start_date,
  22. t.required_delivery_date,
  23. t.baseline,
  24. CASE
  25. WHEN t.baseline IS NULL OR latest_delivery_package.delivery_package_actual_date IS NULL THEN NULL
  26. ELSE DATEDIFF(DAY, latest_delivery_package.delivery_package_actual_date, t.baseline)
  27. END AS deliveryVariance,
  28. t.actuality_delivery_date,
  29. t.comments,
  30. t.remark,
  31. t.create_date,
  32. t.create_by,
  33. t.update_date,
  34. t.update_by,
  35. p.project_no,
  36. p.project_name,
  37. p.project_desc,
  38. p.customer_no,
  39. p.bu_no,
  40. p.c_project_region,
  41. p.project_manager,
  42. p.project_owner,
  43. COALESCE(NULLIF(LTRIM(RTRIM(p.project_owner)), ''),
  44. NULLIF(LTRIM(RTRIM(pp.project_owner)), '')) AS pic,
  45. p.need_date,
  46. pp.test_part_no,
  47. pp.part_desc,
  48. pp.final_part_no,
  49. pp.part_type,
  50. pp.dry_wet_type AS dryWetType,
  51. pp.status as part_status,
  52. pp.build_date,
  53. c.customer_desc,
  54. dbo.get_bu_desc(p.site, p.bu_no) as bu_desc
  55. FROM plm_proofing_information_tracking t
  56. OUTER APPLY (
  57. SELECT TOP 1 pv.actual_date AS delivery_package_actual_date
  58. FROM plm_proofing_process_value pv
  59. WHERE pv.tracking_id = t.id
  60. AND pv.process_code = 'deliveryPackage'
  61. ORDER BY pv.update_date DESC, pv.create_date DESC
  62. ) latest_delivery_package
  63. LEFT JOIN plm_project_info_tracking p ON t.project_id = p.id
  64. LEFT JOIN plm_project_part_tracking pp ON t.project_part_id = pp.id
  65. LEFT JOIN plm_customer_information c ON p.site = c.site AND p.customer_no = c.customer_no
  66. <where>
  67. <if test="query.userName != null and query.userName != ''">
  68. p.site in (select site from eam_access_site where username = #{query.userName})
  69. and (p.site + '-' + p.bu_no) in (select * from dbo.query_bu(#{query.userName}))
  70. </if>
  71. <if test="query.site != null and query.site != ''">
  72. and t.site = #{query.site}
  73. </if>
  74. <if test="query.buNo != null and query.buNo != ''">
  75. and p.bu_no = CASE
  76. WHEN CHARINDEX('_', #{query.buNo}) > 0
  77. THEN SUBSTRING(#{query.buNo}, CHARINDEX('_', #{query.buNo}) + 1, LEN(#{query.buNo}))
  78. ELSE #{query.buNo}
  79. END
  80. </if>
  81. <if test="query.projectNo != null and query.projectNo != ''">
  82. and (
  83. UPPER(p.project_no) like '%' + UPPER(#{query.projectNo}) + '%'
  84. or p.project_no in (select value from CKT_MES_II_REAL.dbo.SplitString(#{query.projectNo}, ','))
  85. )
  86. </if>
  87. <if test="query.projectDesc != null and query.projectDesc != ''">
  88. and UPPER(p.project_desc) like '%' + UPPER(#{query.projectDesc}) + '%'
  89. </if>
  90. <if test="query.testPartNo != null and query.testPartNo != ''">
  91. and (
  92. UPPER(pp.test_part_no) like '%' + UPPER(#{query.testPartNo}) + '%'
  93. or pp.test_part_no in (select value from CKT_MES_II_REAL.dbo.SplitString(#{query.testPartNo}, ','))
  94. )
  95. </if>
  96. <if test="query.partDesc != null and query.partDesc != ''">
  97. and UPPER(pp.part_desc) like '%' + UPPER(#{query.partDesc}) + '%'
  98. </if>
  99. <if test="query.dryWetType != null and query.dryWetType != ''">
  100. and pp.dry_wet_type = #{query.dryWetType}
  101. </if>
  102. <if test="query.customerNo != null and query.customerNo != ''">
  103. and UPPER(p.customer_no) like '%' + UPPER(#{query.customerNo}) + '%'
  104. </if>
  105. <if test="query.customerDesc != null and query.customerDesc != ''">
  106. and UPPER(c.customer_desc) like '%' + UPPER(#{query.customerDesc}) + '%'
  107. </if>
  108. <if test="query.proofingNo != null and query.proofingNo != ''">
  109. and UPPER(t.proofing_no) like '%' + UPPER(#{query.proofingNo}) + '%'
  110. </if>
  111. <if test="query.proofingStatus != null and query.proofingStatus != ''">
  112. and t.proofing_status = #{query.proofingStatus}
  113. </if>
  114. <if test="query.projectPartSyncFlag != null and query.projectPartSyncFlag != ''">
  115. <!-- 同步判定规则:ID < 100000 视为已对齐到 NPI 正式数据。 -->
  116. <choose>
  117. <when test='query.projectPartSyncFlag == "Y"'>
  118. and t.project_part_id is not null
  119. and t.project_part_id &lt; 100000
  120. </when>
  121. <otherwise>
  122. and t.project_part_id &gt;= 100000
  123. </otherwise>
  124. </choose>
  125. </if>
  126. <if test="query.proofSyncFlag != null and query.proofSyncFlag != ''">
  127. <!-- 打样同步优先按 proofing_id 判定;为空时回退 tracking id 保持与前端显示一致。 -->
  128. <choose>
  129. <when test='query.proofSyncFlag == "Y"'>
  130. and ISNULL(t.proofing_id, t.id) &lt; 100000
  131. </when>
  132. <otherwise>
  133. and ISNULL(t.proofing_id, t.id) &gt;= 100000
  134. </otherwise>
  135. </choose>
  136. </if>
  137. <if test="query.projectCategory != null and query.projectCategory != ''">
  138. and p.project_category = #{query.projectCategory}
  139. </if>
  140. <if test="query.startDate != null">
  141. and t.plan_start_date >= #{query.startDate,jdbcType=DATE}
  142. </if>
  143. <if test="query.endDate != null">
  144. and #{query.endDate,jdbcType=DATE} >= t.plan_start_date
  145. </if>
  146. </where>
  147. order by t.create_date desc
  148. </select>
  149. <select id="selectProofTrackingById" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingData">
  150. SELECT
  151. id as tracking_id,
  152. site,
  153. project_id,
  154. project_part_id,
  155. proofing_id,
  156. proofing_no,
  157. proofing_status,
  158. project_phase,
  159. project_category,
  160. tracker,
  161. engineer,
  162. priority_level,
  163. proofing_number,
  164. plan_start_date,
  165. required_delivery_date,
  166. baseline,
  167. actuality_delivery_date,
  168. comments,
  169. remark,
  170. create_date,
  171. create_by,
  172. update_date,
  173. update_by
  174. FROM plm_proofing_information_tracking
  175. WHERE id = #{trackingId}
  176. </select>
  177. <select id="selectProjectInfoTrackingIdBySiteBuAndProjectNo" resultType="java.lang.Integer">
  178. SELECT TOP 1 id
  179. FROM plm_project_info_tracking
  180. WHERE site = #{site}
  181. AND bu_no = #{buNo}
  182. AND UPPER(LTRIM(RTRIM(project_no))) = UPPER(#{projectNo})
  183. ORDER BY
  184. CASE WHEN id &lt; 100000 THEN 0 ELSE 1 END,
  185. id DESC
  186. </select>
  187. <select id="selectProjectPartTrackingIdBySiteProjectAndPartNo" resultType="java.lang.Integer">
  188. SELECT TOP 1 id
  189. FROM plm_project_part_tracking
  190. WHERE site = #{site}
  191. AND project_id = #{projectId}
  192. AND UPPER(LTRIM(RTRIM(test_part_no))) = UPPER(#{testPartNo})
  193. ORDER BY
  194. CASE WHEN id &lt; 100000 THEN 0 ELSE 1 END,
  195. id DESC
  196. </select>
  197. <insert id="insertProjectInfoTrackingFromNpi">
  198. INSERT INTO plm_project_info_tracking
  199. (id, site, bu_no, project_no, ori_project_id, project_category, project_name, project_desc, status, project_source,
  200. customer_no, final_customer_id, priority, customer_remark, remark, need_date, parent_project_no, c_project_region,
  201. project_manager, project_owner, engineer, c_quality_engineer1, c_quality_engineer2, c_quality_engineer3,
  202. c_quality_engineer4, c_quality_engineer5, c_quality_engineer6, c_manufacture_engineer, doc_engineer,
  203. ipqc_hard_tag, c_quality_engineer7, doc_engineer2, project_creation_date, project_close_date,
  204. create_date, create_by, update_date, update_by)
  205. SELECT
  206. p.id,
  207. p.site,
  208. p.bu_no,
  209. p.project_no,
  210. p.ori_project_id,
  211. p.project_category,
  212. p.project_name,
  213. p.project_desc,
  214. ISNULL(p.status, N'草稿'),
  215. p.project_source,
  216. p.customer_no,
  217. p.final_customer_id,
  218. p.priority,
  219. '',
  220. p.remark,
  221. p.need_date,
  222. '',
  223. p.c_project_region,
  224. p.project_manager,
  225. p.project_owner,
  226. p.engineer,
  227. p.c_quality_engineer1,
  228. p.c_quality_engineer2,
  229. p.c_quality_engineer3,
  230. p.c_quality_engineer4,
  231. p.c_quality_engineer5,
  232. p.c_quality_engineer6,
  233. p.c_manufacture_engineer,
  234. p.doc_engineer,
  235. p.ipqc_hard_tag,
  236. p.c_quality_engineer7,
  237. p.doc_engineer2,
  238. p.project_creation_date,
  239. p.project_close_date,
  240. GETDATE(),
  241. #{operateUser},
  242. GETDATE(),
  243. #{operateUser}
  244. FROM plm_project_info p
  245. WHERE p.id = #{projectId}
  246. AND NOT EXISTS (
  247. SELECT 1
  248. FROM plm_project_info_tracking t
  249. WHERE t.id = p.id
  250. )
  251. </insert>
  252. <insert id="insertProjectPartTrackingFromNpi">
  253. INSERT INTO plm_project_part_tracking
  254. (id, site, project_id, test_part_no, part_type, dry_wet_type, part_desc, part_spec, material_number, final_part_desc,
  255. create_date, create_by, update_date, update_by, part_name, final_part_no, base_no, rev_no,
  256. project_manager, project_owner, build_date, c_quality_engineer1, c_quality_engineer2, c_quality_engineer3,
  257. c_manufacture_engineer, close_date, engineer, status, priority, project_category, need_date, doc_engineer,
  258. c_quality_engineer4, c_quality_engineer5, c_quality_engineer6, customer_no, ipqc_hard_tag, c_quality_engineer7, doc_engineer2, remark)
  259. SELECT
  260. pp.id,
  261. pp.site,
  262. pp.project_id,
  263. pp.test_part_no,
  264. pp.part_type,
  265. pp.dry_wet_type,
  266. pp.part_desc,
  267. pp.part_spec,
  268. pp.material_number,
  269. pp.final_part_desc,
  270. GETDATE(),
  271. #{operateUser},
  272. GETDATE(),
  273. #{operateUser},
  274. pp.part_name,
  275. pp.final_part_no,
  276. pp.base_no,
  277. pp.rev_no,
  278. pp.project_manager,
  279. pp.project_owner,
  280. pp.build_date,
  281. pp.c_quality_engineer1,
  282. pp.c_quality_engineer2,
  283. pp.c_quality_engineer3,
  284. pp.c_manufacture_engineer,
  285. pp.close_date,
  286. pp.engineer,
  287. ISNULL(pp.status, N'草稿'),
  288. pp.priority,
  289. pp.project_category,
  290. pp.need_date,
  291. pp.doc_engineer,
  292. pp.c_quality_engineer4,
  293. pp.c_quality_engineer5,
  294. pp.c_quality_engineer6,
  295. pp.customer_no,
  296. pp.ipqc_hard_tag,
  297. pp.c_quality_engineer7,
  298. pp.doc_engineer2,
  299. pp.remark
  300. FROM plm_project_part pp
  301. WHERE pp.project_id = #{projectId}
  302. AND pp.id = #{projectPartId}
  303. AND NOT EXISTS (
  304. SELECT 1
  305. FROM plm_project_part_tracking t
  306. WHERE t.id = pp.id
  307. )
  308. </insert>
  309. <insert id="insertProjectInfoFromOneKey">
  310. <selectKey keyProperty="projectId" resultType="int" order="BEFORE">
  311. SELECT ISNULL(MAX(CASE WHEN id >= 100000 THEN id END), 100000) + 1
  312. FROM plm_project_info_tracking WITH (TABLOCKX, HOLDLOCK)
  313. </selectKey>
  314. INSERT INTO plm_project_info_tracking
  315. (id, site, bu_no, project_no, ori_project_id, project_category, project_name, project_desc, status, project_source,
  316. customer_no, final_customer_id, priority, customer_remark, remark, need_date, parent_project_no, c_project_region,
  317. project_manager, project_owner, engineer, c_quality_engineer1, c_quality_engineer2, c_quality_engineer3,
  318. c_quality_engineer4, c_quality_engineer5, c_quality_engineer6, c_manufacture_engineer, doc_engineer,
  319. ipqc_hard_tag, c_quality_engineer7, doc_engineer2, project_creation_date, project_close_date,
  320. create_date, create_by, update_date, update_by)
  321. VALUES
  322. (#{projectId}, #{site}, #{buNo}, #{projectNo}, #{oriProjectId}, #{projectCategory}, #{projectName}, #{projectDesc}, #{projectStatus}, #{projectSource},
  323. #{customerNo}, #{finalCustomerId}, #{priorityLevel}, #{customerRemark}, #{remark}, #{needDate,jdbcType=DATE}, #{parentProjectNo}, #{cProjectRegion},
  324. #{projectManager}, #{projectOwner}, #{engineer}, #{cQualityEngineer1}, #{cQualityEngineer2}, #{cQualityEngineer3},
  325. #{cQualityEngineer4}, #{cQualityEngineer5}, #{cQualityEngineer6}, #{cManufactureEngineer}, #{docEngineer},
  326. #{ipqcHardTag}, #{cQualityEngineer7}, #{docEngineer2}, #{projectCreationDate,jdbcType=DATE}, #{projectCloseDate,jdbcType=DATE},
  327. GETDATE(), #{createBy}, GETDATE(), #{updateBy})
  328. </insert>
  329. <insert id="insertProjectPartFromOneKey">
  330. <selectKey keyProperty="projectPartId" resultType="int" order="BEFORE">
  331. SELECT ISNULL(MAX(CASE WHEN id >= 100000 THEN id END), 100000) + 1
  332. FROM plm_project_part_tracking WITH (TABLOCKX, HOLDLOCK)
  333. </selectKey>
  334. INSERT INTO plm_project_part_tracking
  335. (id, site, project_id, test_part_no, part_type, dry_wet_type, part_desc, part_spec, material_number, final_part_desc,
  336. create_date, create_by, update_date, update_by, part_name, final_part_no, base_no, rev_no,
  337. project_manager, project_owner, build_date, c_quality_engineer1, c_quality_engineer2, c_quality_engineer3,
  338. c_manufacture_engineer, close_date, engineer, status, priority, project_category, need_date, doc_engineer,
  339. c_quality_engineer4, c_quality_engineer5, c_quality_engineer6, customer_no, ipqc_hard_tag, c_quality_engineer7, doc_engineer2, remark)
  340. VALUES
  341. (#{projectPartId}, #{site}, #{projectId}, #{testPartNo}, #{partType}, #{dryWetType}, #{partDesc}, #{partSpec}, #{materialNumber}, #{finalPartDesc},
  342. GETDATE(), #{createBy}, GETDATE(), #{updateBy}, #{partName}, #{finalPartNo}, #{baseNo}, #{revNo},
  343. #{projectManager}, #{projectOwner}, #{buildDate,jdbcType=DATE}, #{cQualityEngineer1}, #{cQualityEngineer2}, #{cQualityEngineer3},
  344. #{cManufactureEngineer}, #{closeDate,jdbcType=DATE}, #{engineer}, #{partStatus}, #{priorityLevel}, #{projectCategory}, #{needDate,jdbcType=DATE}, #{docEngineer},
  345. #{cQualityEngineer4}, #{cQualityEngineer5}, #{cQualityEngineer6}, #{customerNo}, #{ipqcHardTag}, #{cQualityEngineer7}, #{docEngineer2}, #{remark})
  346. </insert>
  347. <insert id="insertProofTracking">
  348. <selectKey keyProperty="trackingId" resultType="int" order="BEFORE">
  349. SELECT CASE
  350. WHEN #{trackingId,jdbcType=INTEGER} IS NOT NULL AND #{trackingId,jdbcType=INTEGER} > 0
  351. THEN #{trackingId,jdbcType=INTEGER}
  352. ELSE (
  353. SELECT ISNULL(MAX(CASE WHEN id >= 100000 THEN id END), 100000) + 1
  354. FROM plm_proofing_information_tracking WITH (TABLOCKX, HOLDLOCK)
  355. )
  356. END
  357. </selectKey>
  358. INSERT INTO plm_proofing_information_tracking
  359. (id, site, project_id, project_part_id, proofing_id, proofing_no, proofing_status, project_phase, project_category,
  360. tracker, engineer, priority_level, proofing_number, plan_start_date, required_delivery_date, baseline, actuality_delivery_date,
  361. comments, remark, create_date, create_by, update_date, update_by)
  362. VALUES
  363. (#{trackingId}, #{site}, #{projectId}, #{projectPartId}, #{proofingId}, #{proofingNo}, #{proofingStatus}, #{projectPhase}, #{projectCategory},
  364. #{tracker}, #{engineer}, #{priorityLevel}, #{proofingNumber}, #{planStartDate,jdbcType=DATE}, #{requiredDeliveryDate,jdbcType=DATE}, #{baseline,jdbcType=DATE}, #{actualityDeliveryDate,jdbcType=DATE},
  365. #{comments}, #{remark}, GETDATE(), #{createBy}, GETDATE(), #{updateBy})
  366. </insert>
  367. <update id="updateProofTrackingPlanDates">
  368. UPDATE plm_proofing_information_tracking
  369. SET comments = #{comments,jdbcType=NVARCHAR},
  370. update_date = GETDATE(),
  371. update_by = #{updateBy}
  372. WHERE id = #{trackingId}
  373. </update>
  374. <select id="selectProcessValuesByTrackingIds" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessValueData">
  375. SELECT
  376. tracking_id AS trackingId,
  377. site,
  378. process_code AS processCode,
  379. plan_date AS planDate,
  380. actual_date AS actualDate,
  381. process_status AS status,
  382. create_by AS createBy,
  383. update_by AS updateBy
  384. FROM plm_proofing_process_value
  385. WHERE tracking_id IN
  386. <foreach collection="trackingIds" item="trackingId" open="(" separator="," close=")">
  387. #{trackingId}
  388. </foreach>
  389. </select>
  390. <select id="selectProcessValueByTrackingAndCode" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessValueData">
  391. SELECT
  392. tracking_id AS trackingId,
  393. site,
  394. process_code AS processCode,
  395. plan_date AS planDate,
  396. actual_date AS actualDate,
  397. process_status AS status,
  398. create_by AS createBy,
  399. update_by AS updateBy
  400. FROM plm_proofing_process_value
  401. WHERE tracking_id = #{trackingId}
  402. AND process_code = #{processCode}
  403. </select>
  404. <update id="updateProcessValue">
  405. UPDATE plm_proofing_process_value
  406. SET actual_date = #{actualDate,jdbcType=DATE},
  407. process_status = #{status},
  408. update_date = GETDATE(),
  409. update_by = #{updateBy}
  410. WHERE tracking_id = #{trackingId}
  411. AND process_code = #{processCode}
  412. </update>
  413. <insert id="insertProcessValue">
  414. INSERT INTO plm_proofing_process_value
  415. (tracking_id, site, process_code, plan_date, actual_date, process_status, create_date, create_by, update_date, update_by)
  416. VALUES
  417. (#{trackingId}, #{site}, #{processCode}, #{planDate,jdbcType=DATE}, #{actualDate,jdbcType=DATE}, #{status}, GETDATE(), #{createBy}, GETDATE(), #{updateBy})
  418. </insert>
  419. <update id="finishProofing">
  420. UPDATE plm_proofing_information_tracking
  421. SET proofing_status = N'打样完成',
  422. actuality_delivery_date = ISNULL(#{actualityDeliveryDate,jdbcType=DATE}, GETDATE()),
  423. update_date = GETDATE(),
  424. update_by = #{updateBy}
  425. WHERE id = #{trackingId}
  426. </update>
  427. <delete id="deleteProofTrackingLogByTrackingId">
  428. DELETE FROM plm_proofing_information_tracking_log
  429. WHERE tracking_id = #{trackingId}
  430. </delete>
  431. <delete id="deleteProcessValuesByTrackingId">
  432. DELETE FROM plm_proofing_process_value
  433. WHERE tracking_id = #{trackingId}
  434. </delete>
  435. <delete id="deleteProofTrackingByTrackingId">
  436. DELETE FROM plm_proofing_information_tracking
  437. WHERE id = #{trackingId}
  438. </delete>
  439. <update id="updateTrackingProofingInfo">
  440. UPDATE plm_proofing_information_tracking
  441. SET proofing_id = #{proofingId},
  442. proofing_no = #{proofingNo},
  443. proofing_number = #{proofingNumber},
  444. plan_start_date = #{planStartDate,jdbcType=DATE},
  445. required_delivery_date = #{requiredDeliveryDate,jdbcType=DATE},
  446. project_phase = #{projectPhase},
  447. proofing_status = #{proofingStatus},
  448. update_date = GETDATE(),
  449. update_by = #{updateBy}
  450. WHERE id = #{trackingId}
  451. </update>
  452. <update id="updateTrackingBaseInfo">
  453. UPDATE plm_proofing_information_tracking
  454. SET project_phase = #{projectPhase},
  455. project_category = #{projectCategory},
  456. proofing_no = #{proofingNo},
  457. proofing_status = #{proofingStatus},
  458. proofing_number = #{proofingNumber},
  459. plan_start_date = #{planStartDate,jdbcType=DATE},
  460. required_delivery_date = #{requiredDeliveryDate,jdbcType=DATE},
  461. baseline = #{baseline,jdbcType=DATE},
  462. tracker = #{tracker},
  463. engineer = #{engineer},
  464. priority_level = #{priorityLevel},
  465. remark = #{remark,jdbcType=NVARCHAR},
  466. update_date = GETDATE(),
  467. update_by = #{updateBy}
  468. WHERE id = #{trackingId}
  469. </update>
  470. <update id="updateTrackingRequiredDeliveryDate">
  471. UPDATE plm_proofing_information_tracking
  472. SET required_delivery_date = #{requiredDeliveryDate,jdbcType=DATE},
  473. update_date = GETDATE(),
  474. update_by = #{updateBy}
  475. WHERE id = #{trackingId}
  476. </update>
  477. <update id="updateTrackingBaselineWhenEmpty">
  478. UPDATE plm_proofing_information_tracking
  479. SET baseline = #{baseline,jdbcType=DATE},
  480. update_date = GETDATE(),
  481. update_by = #{updateBy}
  482. WHERE id = #{trackingId}
  483. AND baseline IS NULL
  484. </update>
  485. <update id="updateTrackingComments">
  486. UPDATE plm_proofing_information_tracking
  487. SET comments = #{comments,jdbcType=NVARCHAR},
  488. update_date = GETDATE(),
  489. update_by = #{updateBy}
  490. WHERE id = #{trackingId}
  491. </update>
  492. <select id="selectTrackingForProofing" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingData">
  493. SELECT
  494. t.id as tracking_id,
  495. t.site,
  496. t.project_id,
  497. t.project_part_id,
  498. t.proofing_id,
  499. t.proofing_no,
  500. t.proofing_status,
  501. t.project_phase,
  502. COALESCE(NULLIF(LTRIM(RTRIM(t.project_category)), ''),
  503. NULLIF(LTRIM(RTRIM(pp.project_category)), ''),
  504. NULLIF(LTRIM(RTRIM(p.project_category)), '')) AS project_category,
  505. t.tracker,
  506. t.engineer,
  507. t.priority_level,
  508. t.proofing_number,
  509. t.plan_start_date,
  510. t.required_delivery_date,
  511. t.baseline,
  512. t.actuality_delivery_date,
  513. t.comments,
  514. t.remark,
  515. t.create_date,
  516. t.create_by,
  517. t.update_date,
  518. t.update_by,
  519. p.project_no,
  520. p.project_name,
  521. p.project_desc,
  522. p.customer_no,
  523. p.bu_no,
  524. pp.test_part_no,
  525. pp.part_desc,
  526. pp.final_part_no,
  527. pp.dry_wet_type AS dryWetType
  528. FROM plm_proofing_information_tracking t
  529. LEFT JOIN plm_project_info_tracking p ON t.project_id = p.id
  530. LEFT JOIN plm_project_part_tracking pp ON t.project_part_id = pp.id
  531. WHERE t.id = #{trackingId}
  532. </select>
  533. <insert id="insertTrackingFromPart">
  534. <selectKey keyProperty="trackingId" resultType="int" order="BEFORE">
  535. SELECT ISNULL(MAX(CASE WHEN id >= 100000 THEN id END), 100000) + 1
  536. FROM plm_proofing_information_tracking WITH (TABLOCKX, HOLDLOCK)
  537. </selectKey>
  538. INSERT INTO plm_proofing_information_tracking
  539. (id, site, project_id, project_part_id, proofing_id, proofing_no, proofing_status, project_phase, project_category,
  540. tracker, engineer, priority_level, proofing_number, plan_start_date, required_delivery_date, actuality_delivery_date,
  541. comments, remark, create_date, create_by, update_date, update_by)
  542. SELECT
  543. #{trackingId},
  544. pp.site,
  545. pp.project_id,
  546. pp.id,
  547. NULL,
  548. NULL,
  549. N'草稿',
  550. 'Sample',
  551. ISNULL(pp.project_category, p.project_category),
  552. ISNULL(pp.project_owner, ''),
  553. ISNULL(pp.engineer, ''),
  554. ISNULL(pp.priority, p.priority),
  555. 1,
  556. GETDATE(),
  557. NULL,
  558. NULL,
  559. NULL,
  560. NULL,
  561. GETDATE(), #{createBy}, GETDATE(), #{updateBy}
  562. FROM plm_project_part_tracking pp
  563. LEFT JOIN plm_project_info_tracking p ON pp.project_id = p.id
  564. WHERE pp.site = #{site}
  565. AND pp.project_id = #{projectId}
  566. AND pp.id = #{projectPartId}
  567. </insert>
  568. <select id="selectProofingByNo" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingData">
  569. SELECT TOP 1 id AS proofing_id, proofing_no, site
  570. FROM plm_proofing_information_tracking
  571. WHERE proofing_no = #{proofingNo}
  572. AND site = #{site}
  573. </select>
  574. <select id="getSampleDocumentTypeIds" resultType="string">
  575. SELECT document_type_id
  576. FROM bu_document_list_definition
  577. WHERE site = #{site}
  578. AND bu_no = #{buNo}
  579. AND project_category = #{projectCategory}
  580. AND project_phase = 'Sample'
  581. </select>
  582. <select id="countProofDocumentExists" resultType="java.lang.Integer">
  583. SELECT COUNT(1)
  584. FROM plm_document_list_definition
  585. WHERE site = #{site}
  586. AND proofing_id = #{proofingId}
  587. AND project_id = #{projectId}
  588. AND test_part_id = #{projectPartId}
  589. AND document_type_id = #{documentTypeId}
  590. </select>
  591. <insert id="insertProofDocument">
  592. INSERT INTO plm_document_list_definition
  593. (site, proofing_id, test_part_id, project_id, created_by, manual_flag, uploaded_flag, create_date, document_type_id)
  594. VALUES
  595. (#{site}, #{proofingId}, #{projectPartId}, #{projectId}, #{createBy}, 'N', 'N', GETDATE(), #{documentTypeId})
  596. </insert>
  597. <select id="getProcessHistory" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessLogData">
  598. SELECT
  599. id,
  600. tracking_id,
  601. process_code,
  602. process_name,
  603. old_status,
  604. new_status,
  605. old_plan_date,
  606. new_plan_date,
  607. old_actual_date,
  608. new_actual_date,
  609. change_type,
  610. remark,
  611. changed_by,
  612. changed_date
  613. FROM plm_proofing_information_tracking_log
  614. WHERE tracking_id = #{trackingId}
  615. <if test="processCode != null and processCode != ''">
  616. AND process_code = #{processCode}
  617. </if>
  618. ORDER BY changed_date DESC, id DESC
  619. </select>
  620. <insert id="saveProcessLog">
  621. INSERT INTO plm_proofing_information_tracking_log
  622. (tracking_id, process_code, process_name, old_status, new_status, old_plan_date, new_plan_date,
  623. old_actual_date, new_actual_date, change_type, remark, changed_by, changed_date)
  624. VALUES
  625. (#{trackingId}, #{processCode}, #{processName}, #{oldStatus}, #{newStatus}, #{oldPlanDate,jdbcType=DATE},
  626. #{newPlanDate,jdbcType=DATE}, #{oldActualDate,jdbcType=DATE}, #{newActualDate,jdbcType=DATE},
  627. #{changeType}, #{remark}, #{changedBy}, GETDATE())
  628. </insert>
  629. <select id="selectProcessColumnsBySiteAndBu" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessColumnData">
  630. SELECT
  631. site,
  632. bu_no AS buNo,
  633. process_code AS code,
  634. process_label AS label,
  635. plan_field AS planField,
  636. actual_field AS actualField,
  637. status_field AS statusField,
  638. sort_no AS sortNo,
  639. active_flag AS activeFlag
  640. FROM plm_proofing_process_column_config
  641. WHERE site = #{site}
  642. AND bu_no = #{buNo}
  643. AND active_flag = 'Y'
  644. ORDER BY sort_no, process_code
  645. </select>
  646. <select id="selectProcessColumnsBySiteAndBuAll" resultType="com.xujie.sys.modules.sampletracking.data.ProofTrackingProcessColumnData">
  647. SELECT
  648. site,
  649. bu_no AS buNo,
  650. process_code AS code,
  651. process_label AS label,
  652. plan_field AS planField,
  653. actual_field AS actualField,
  654. status_field AS statusField,
  655. sort_no AS sortNo,
  656. active_flag AS activeFlag
  657. FROM plm_proofing_process_column_config
  658. WHERE site = #{site}
  659. AND bu_no = #{buNo}
  660. ORDER BY sort_no, process_code
  661. </select>
  662. <select id="selectConfiguredBuNosForSite" resultType="string">
  663. SELECT DISTINCT bu_no
  664. FROM plm_proofing_process_column_config
  665. WHERE bu_no != '*'
  666. AND site = #{site}
  667. ORDER BY bu_no
  668. </select>
  669. <update id="updateProcessColumnConfig">
  670. UPDATE plm_proofing_process_column_config
  671. SET sort_no = #{sortNo},
  672. active_flag = #{activeFlag},
  673. update_date = GETDATE(),
  674. update_by = #{updateBy}
  675. WHERE site = #{site}
  676. AND bu_no = #{buNo}
  677. AND process_code = #{processCode}
  678. </update>
  679. <delete id="deleteProcessColumnConfigBySiteAndBu">
  680. DELETE FROM plm_proofing_process_column_config
  681. WHERE site = #{site}
  682. AND bu_no = #{buNo}
  683. </delete>
  684. <delete id="deleteProcessColumnConfigBySiteBuAndCodes">
  685. DELETE FROM plm_proofing_process_column_config
  686. WHERE site = #{site}
  687. AND bu_no = #{buNo}
  688. AND process_code IN
  689. <foreach collection="processCodes" item="code" open="(" separator="," close=")">
  690. #{code}
  691. </foreach>
  692. </delete>
  693. <insert id="insertProcessColumnConfig">
  694. INSERT INTO plm_proofing_process_column_config
  695. (site, bu_no, process_code, process_label, plan_field, actual_field, status_field, sort_no, active_flag,
  696. create_date, create_by, update_date, update_by)
  697. VALUES
  698. (#{site}, #{buNo}, #{code}, #{label}, #{planField}, #{actualField}, #{statusField}, #{sortNo}, #{activeFlag},
  699. GETDATE(), #{createBy}, GETDATE(), #{updateBy})
  700. </insert>
  701. </mapper>