O
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.

268 lines
10 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year 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.quote.mapper.QuoteGroupDetailMapper">
  4. <select id="queryQuoteGroupDetail" resultType="com.xujie.sys.modules.quote.entity.QuoteGroupDetail">
  5. select qd.id,
  6. qd.quote_id,
  7. qd.site,
  8. qd.bu_no,
  9. qd.quote_no,
  10. qd.version_no,
  11. qd.item_no,
  12. qd.part_id,
  13. pp.part_no,
  14. pp.part_desc,
  15. qd.internal_inquiry_no,
  16. qd.qty,
  17. qd.quote_count,
  18. qd.status,
  19. qd.part_cost,
  20. qd.adjust_part_cost,
  21. qd.labour_cost,
  22. qd.adjust_labour_cost,
  23. qd.fabricate_cost,
  24. qd.adjust_fabricate_cost,
  25. qd.tool_cost,
  26. qd.adjust_tool_cost,
  27. qd.machine_cost,
  28. qd.adjust_machine_cost,
  29. qd.other_cost,
  30. qd.manage_cost,
  31. qd.total_cost,
  32. qd.profit_rate,
  33. qd.profit_amount,
  34. qd.total_price,
  35. qd.unit_price,
  36. qd.tax_rate,
  37. qd.tax_total_price,
  38. qd.tax_unit_price,
  39. qd.remark,
  40. qd.active,
  41. qd.create_by,
  42. qd.create_date,
  43. qd.update_by,
  44. qd.update_date,
  45. qd.pack_cost,
  46. qd.shipping_cost,
  47. qd.process_time,
  48. qd.yield,
  49. qd.bom_un_yield,
  50. qd.bom_yield,
  51. qd.parent_attrition_rate,
  52. qd.child_attrition_rate,
  53. qd.adjust_bom_un_yield,
  54. qd.quote_cost,
  55. qd.adjust_quote_cost,
  56. qd.quote_total_cost,
  57. qd.quote_profit_rate,
  58. qd.quote_profit_amount,
  59. qd.quote_total_price,
  60. qd.quote_unit_price,
  61. qd.quote_tax_rate,
  62. qd.quote_tax_total_price,
  63. qd.quote_tax_unit_price,
  64. qd.currency1,
  65. qd.exchange_rate1,
  66. qd.currency2,
  67. qd.exchange_rate2,
  68. qd.moq,
  69. qd.currency_total_cost1,
  70. qd.currency_total_cost2,
  71. qd.quote_currency_total_cost1,
  72. qd.quote_currency_total_cost2,
  73. qd.type,
  74. qd.current_quote_detail_item_no,
  75. qd.cost_model,
  76. CASE
  77. WHEN ((qd.currency1 = 'USD' AND qd.exchange_rate1 > 0) OR
  78. (qd.currency2 = 'USD' AND qd.exchange_rate2 > 0))
  79. THEN
  80. (qd.total_cost /
  81. CASE
  82. WHEN qd.currency1 = 'USD' THEN qd.exchange_rate1
  83. ELSE qd.exchange_rate2
  84. END)
  85. ELSE NULL
  86. END AS totalCostUSD,
  87. CASE
  88. WHEN qd.qty >= 250000 AND
  89. ((qd.currency1 = 'USD' AND qd.exchange_rate1 > 0) OR
  90. (qd.currency2 = 'USD' AND qd.exchange_rate2 > 0))
  91. THEN
  92. ((qd.adjust_bom_un_yield + qd.adjust_labour_cost + qd.adjust_fabricate_cost +
  93. qd.adjust_machine_cost) /
  94. CASE
  95. WHEN qd.currency1 = 'USD' THEN qd.exchange_rate1
  96. ELSE qd.exchange_rate2
  97. END) * qd.quote_profit_rate / 100
  98. ELSE NULL
  99. END AS weighted,
  100. CASE
  101. WHEN qd.qty >= 5000000 AND
  102. ((qd.currency1 = 'USD' AND qd.exchange_rate1 > 0) OR
  103. (qd.currency2 = 'USD' AND qd.exchange_rate2 > 0))
  104. THEN
  105. ((qd.adjust_bom_un_yield + qd.adjust_labour_cost + qd.adjust_fabricate_cost +
  106. qd.adjust_machine_cost) /
  107. CASE
  108. WHEN qd.currency1 = 'USD' THEN qd.exchange_rate1
  109. ELSE qd.exchange_rate2
  110. END) * qd.quote_profit_rate / 100 - 1.5
  111. ELSE NULL
  112. END AS weighted2,
  113. bdp.decimal_place
  114. from plm_quote_group_detail qd
  115. left join part pp on qd.part_id = pp.id
  116. left join bu_decimal_place bdp on bdp.site = qd.site and bdp.bu_no = qd.bu_no
  117. <where>
  118. <if test="id != null">
  119. and qd.id = #{id}
  120. </if>
  121. <if test="quoteId != null">
  122. and qd.quote_id = #{quoteId}
  123. </if>
  124. <if test="quoteNo != null and quoteNo != ''">
  125. and qd.quote_no = #{quoteNo}
  126. </if>
  127. <if test="site != null and site != ''">
  128. and qd.site = #{site}
  129. </if>
  130. <if test="buNo != null and buNo != ''">
  131. and qd.bu_no = #{buNo}
  132. </if>
  133. <if test="versionNo != null and versionNo != ''">
  134. and qd.version_no = #{versionNo}
  135. </if>
  136. </where>
  137. order by qd.id desc
  138. </select>
  139. <select id="queryQuoteGroupDetailByPage" resultType="com.xujie.sys.modules.quote.entity.QuoteGroupDetail">
  140. select qd.id,
  141. qd.quote_id,
  142. qd.site,
  143. qd.bu_no,
  144. qd.quote_no,
  145. qd.version_no,
  146. qd.item_no,
  147. qd.part_id,
  148. pp.part_no,
  149. pp.part_desc,
  150. qd.internal_inquiry_no,
  151. qd.qty,
  152. qd.quote_count,
  153. qd.status,
  154. qd.part_cost,
  155. qd.adjust_part_cost,
  156. qd.labour_cost,
  157. qd.adjust_labour_cost,
  158. qd.fabricate_cost,
  159. qd.adjust_fabricate_cost,
  160. qd.tool_cost,
  161. qd.adjust_tool_cost,
  162. qd.machine_cost,
  163. qd.adjust_machine_cost,
  164. qd.other_cost,
  165. qd.manage_cost,
  166. qd.total_cost,
  167. qd.profit_rate,
  168. qd.profit_amount,
  169. qd.total_price,
  170. qd.unit_price,
  171. qd.tax_rate,
  172. qd.tax_total_price,
  173. qd.tax_unit_price,
  174. qd.remark,
  175. qd.active,
  176. qd.create_by,
  177. qd.create_date,
  178. qd.update_by,
  179. qd.update_date,
  180. qd.pack_cost,
  181. qd.shipping_cost,
  182. qd.process_time,
  183. qd.yield,
  184. qd.bom_un_yield,
  185. qd.bom_yield,
  186. qd.parent_attrition_rate,
  187. qd.child_attrition_rate,
  188. qd.adjust_bom_un_yield,
  189. qd.quote_cost,
  190. qd.adjust_quote_cost,
  191. qd.quote_total_cost,
  192. qd.quote_profit_rate,
  193. qd.quote_profit_amount,
  194. qd.quote_total_price,
  195. qd.quote_unit_price,
  196. qd.quote_tax_rate,
  197. qd.quote_tax_total_price,
  198. qd.quote_tax_unit_price,
  199. qd.currency1,
  200. qd.exchange_rate1,
  201. qd.currency2,
  202. qd.exchange_rate2,
  203. qd.moq,
  204. qd.currency_total_cost1,
  205. qd.currency_total_cost2,
  206. qd.quote_currency_total_cost1,
  207. qd.quote_currency_total_cost2,
  208. qd.type,
  209. qd.current_quote_detail_item_no,
  210. qd.cost_model,
  211. CASE
  212. WHEN qd.qty >= 250000 AND
  213. ((qd.currency1 = 'USD' AND qd.exchange_rate1 > 0) OR
  214. (qd.currency2 = 'USD' AND qd.exchange_rate2 > 0))
  215. THEN
  216. ((qd.adjust_bom_un_yield + qd.adjust_labour_cost + qd.adjust_fabricate_cost +
  217. qd.adjust_machine_cost) /
  218. CASE
  219. WHEN qd.currency1 = 'USD' THEN qd.exchange_rate1
  220. ELSE qd.exchange_rate2
  221. END) * qd.quote_profit_rate / 100
  222. ELSE NULL
  223. END AS weighted,
  224. CASE
  225. WHEN qd.qty >= 5000000 AND
  226. ((qd.currency1 = 'USD' AND qd.exchange_rate1 > 0) OR
  227. (qd.currency2 = 'USD' AND qd.exchange_rate2 > 0))
  228. THEN
  229. ((qd.adjust_bom_un_yield + qd.adjust_labour_cost + qd.adjust_fabricate_cost +
  230. qd.adjust_machine_cost) /
  231. CASE
  232. WHEN qd.currency1 = 'USD' THEN qd.exchange_rate1
  233. ELSE qd.exchange_rate2
  234. END) * qd.quote_profit_rate / 100 - 1.5
  235. ELSE NULL
  236. END AS weighted2
  237. from plm_quote_group_detail qd
  238. left join part pp on qd.part_id = pp.id
  239. <where>
  240. <if test="params.quoteId != null">
  241. and qd.quote_id = #{params.quoteId}
  242. </if>
  243. <if test="params.quoteNo != null and params.quoteNo != ''">
  244. and qd.quote_no = #{params.quoteNo}
  245. </if>
  246. <if test="params.site != null and params.site != ''">
  247. and qd.site = #{params.site}
  248. </if>
  249. <if test="params.buNo != null and params.buNo != ''">
  250. and qd.bu_no = #{params.buNo}
  251. </if>
  252. <if test="params.versionNo != null and params.versionNo != ''">
  253. and qd.version_no = #{params.versionNo}
  254. </if>
  255. </where>
  256. order by qd.id desc
  257. </select>
  258. <select id="queryItemNo" resultType="java.lang.Integer">
  259. select ISNULL(max(item_no),0)+1 from plm_quote_group_detail where quote_id = #{quoteId}
  260. </select>
  261. <select id="getPartYield" resultType="java.math.BigDecimal">
  262. select dbo.get_part_yield(#{site},#{partNo})
  263. </select>
  264. </mapper>