OrderItemMapper.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  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.dk.mdm.mapper.sale.OrderItemMapper">
  4. <!-- 通用设置 -->
  5. <!-- 通用查询列 -->
  6. <sql id="Base_Column_List">
  7. item_id
  8. , order_id, item_index, sku_id, item_qty, price_std, amt_std, price_sale, item_amt, price_discount, non_std_code, out_status, outing_qty, outing_amt, out_qty, out_amt, return_qty, return_amt, remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id, op_app_code, op_timestamp, op_db_user
  9. </sql>
  10. <!-- 通用查询映射结果 -->
  11. <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.sale.OrderItem">
  12. <id column="item_id" property="itemId"/>
  13. <result column="order_id" property="orderId" typeHandler="UuidTypeHandler"/>
  14. <result column="item_index" property="itemIndex"/>
  15. <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
  16. <result column="item_qty" property="itemQty"/>
  17. <result column="price_std" property="priceStd"/>
  18. <result column="amt_std" property="amtStd"/>
  19. <result column="price_sale" property="priceSale"/>
  20. <result column="item_amt" property="itemAmt"/>
  21. <result column="price_discount" property="priceDiscount"/>
  22. <result column="non_std_code" property="nonStdCode"/>
  23. <result column="out_status" property="outStatus"/>
  24. <result column="outing_qty" property="outingQty"/>
  25. <result column="outing_amt" property="outingAmt"/>
  26. <result column="out_qty" property="outQty"/>
  27. <result column="out_amt" property="outAmt"/>
  28. <result column="return_qty" property="returnQty"/>
  29. <result column="return_amt" property="returnAmt"/>
  30. <result column="remarks" property="remarks"/>
  31. <result column="flg_valid" property="flgValid"/>
  32. <result column="cp_id" property="cpId"/>
  33. <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
  34. <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
  35. <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
  36. <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
  37. <result column="op_app_code" property="opAppCode"/>
  38. <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
  39. <result column="op_db_user" property="opDbUser"/>
  40. </resultMap>
  41. <!-- 通用查询映射结果 -->
  42. <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.sale.OrderItemResponse">
  43. <id column="item_id" property="itemId"/>
  44. <result column="order_id" property="orderId" typeHandler="UuidTypeHandler"/>
  45. <result column="item_index" property="itemIndex"/>
  46. <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
  47. <result column="item_qty" property="itemQty"/>
  48. <result column="price_std" property="priceStd"/>
  49. <result column="amt_std" property="amtStd"/>
  50. <result column="price_sale" property="priceSale"/>
  51. <result column="item_amt" property="itemAmt"/>
  52. <result column="price_discount" property="priceDiscount"/>
  53. <result column="non_std_code" property="nonStdCode"/>
  54. <result column="out_status" property="outStatus"/>
  55. <result column="outing_qty" property="outingQty"/>
  56. <result column="outing_amt" property="outingAmt"/>
  57. <result column="out_qty" property="outQty"/>
  58. <result column="out_amt" property="outAmt"/>
  59. <result column="return_qty" property="returnQty"/>
  60. <result column="return_amt" property="returnAmt"/>
  61. <result column="remarks" property="remarks"/>
  62. <result column="flg_valid" property="flgValid"/>
  63. <result column="cp_id" property="cpId"/>
  64. <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
  65. <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
  66. <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
  67. <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
  68. <result column="op_app_code" property="opAppCode"/>
  69. <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
  70. <result column="op_db_user" property="opDbUser"/>
  71. </resultMap>
  72. <!-- 通用条件列 -->
  73. <sql id="Condition">
  74. <where>
  75. <if test="orderId != null and orderId != ''">
  76. AND tpoi.order_id = #{orderId}::uuid
  77. </if>
  78. <if test="itemIndex != null">
  79. AND tpoi.item_index = #{itemIndex}
  80. </if>
  81. <if test="skuId != null and skuId != ''">
  82. AND tpoi.sku_id = #{skuId}
  83. </if>
  84. <if test="itemQty != null">
  85. AND tpoi.item_qty = #{itemQty}
  86. </if>
  87. <if test="priceStd != null">
  88. AND tpoi.price_std = #{priceStd}
  89. </if>
  90. <if test="amtStd != null">
  91. AND tpoi.amt_std = #{amtStd}
  92. </if>
  93. <if test="priceSale != null">
  94. AND tpoi.price_sale = #{priceSale}
  95. </if>
  96. <if test="itemAmt != null">
  97. AND tpoi.item_amt = #{itemAmt}
  98. </if>
  99. <if test="priceDiscount != null">
  100. AND tpoi.price_discount = #{priceDiscount}
  101. </if>
  102. <if test="nonStdCode != null and nonStdCode != ''">
  103. AND tpoi.non_std_code = #{nonStdCode}
  104. </if>
  105. <if test="outStatus != null and outStatus != ''">
  106. AND tpoi.out_status = #{outStatus}
  107. </if>
  108. <if test="outingQty != null">
  109. AND tpoi.outing_qty = #{outingQty}
  110. </if>
  111. <if test="outingAmt != null">
  112. AND tpoi.outing_amt = #{outingAmt}
  113. </if>
  114. <if test="outQty != null">
  115. AND tpoi.out_qty = #{outQty}
  116. </if>
  117. <if test="outAmt != null">
  118. AND tpoi.out_amt = #{outAmt}
  119. </if>
  120. <if test="returnQty != null">
  121. AND tpoi.return_qty = #{returnQty}
  122. </if>
  123. <if test="returnAmt != null">
  124. AND tpoi.return_amt = #{returnAmt}
  125. </if>
  126. <if test="remarks != null and remarks != ''">
  127. AND tpoi.remarks = #{remarks}
  128. </if>
  129. <if test="flgValid != null">
  130. AND tpoi.flg_valid = #{flgValid}
  131. </if>
  132. <if test="cpId != null">
  133. AND tpoi.cp_id = #{cpId}
  134. </if>
  135. </where>
  136. </sql>
  137. <sql id="idsForeach">
  138. <!-- 根据主键itemId批量操作 -->
  139. WHERE item_id in
  140. <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
  141. #{item}
  142. </foreach>
  143. </sql>
  144. <!-- 查询表t_psi_order_item,(条件查询+分页)列表 -->
  145. <select id="selectByCond" resultMap="BaseResultMapResponse">
  146. SELECT tpoi.item_id,
  147. tpoi.order_id,
  148. tpoi.item_index,
  149. tpoi.sku_id,
  150. tmgs.sku_code as "skuCode",
  151. tmgs.sku_model as "skuModel",
  152. tmgs.sku_name as "skuName",
  153. tpoi.item_qty,
  154. tpoi.price_std,
  155. tpoi.amt_std,
  156. tpoi.price_sale,
  157. tpoi.item_amt,
  158. tpoi.price_discount,
  159. tpoi.non_std_code,
  160. tpoi.out_status,
  161. tpoi.outing_qty,
  162. tpoi.outing_amt,
  163. tpoi.out_qty,
  164. tpoi.out_amt,
  165. tpoi.return_qty,
  166. tpoi.return_amt,
  167. tpoi.remarks
  168. FROM dkic_b.t_psi_order_item as tpoi
  169. inner join dkic_b.t_mst_goods_sku tmgs on tpoi.sku_id = tmgs.sku_id
  170. <include refid="Condition"/>
  171. order by tpoi.item_index
  172. <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
  173. limit #{end} offset #{start}
  174. </if>
  175. </select>
  176. <!-- 查询表t_psi_order_item,(条件查询)个数 -->
  177. <select id="countByCond" resultType="Long">
  178. SELECT
  179. count(1)
  180. FROM t_psi_order_item
  181. <include refid="Condition"/>
  182. </select>
  183. <!-- 根据主键查询表t_psi_order_item的一行数据 -->
  184. <select id="selectById" resultMap="BaseResultMap">
  185. SELECT
  186. <include refid="Base_Column_List"/>
  187. FROM t_psi_order_item
  188. WHERE item_id = #{itemId}::uuid
  189. </select>
  190. <!-- 根据主键锁定表t_psi_order_item的一行数据 -->
  191. <select id="selectByIdForUpdate" resultMap="BaseResultMap">
  192. SELECT
  193. <include refid="Base_Column_List"/>
  194. FROM t_psi_order_item
  195. WHERE item_id = #{itemId}
  196. for update
  197. </select>
  198. <!-- 根据主键锁定表t_psi_order_item的多行数据 -->
  199. <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
  200. SELECT
  201. <include refid="Base_Column_List"/>
  202. FROM t_psi_order_item
  203. <include refid="idsForeach"/>
  204. for update
  205. </select>
  206. <insert id="insertBatch">
  207. insert into t_psi_order_item
  208. (
  209. <trim suffixOverrides=",">
  210. order_id,
  211. item_index,
  212. sku_id,
  213. item_qty,
  214. price_std,
  215. amt_std,
  216. price_sale,
  217. item_amt,
  218. price_discount,
  219. non_std_code,
  220. out_status,
  221. outing_qty,
  222. outing_amt,
  223. out_qty,
  224. out_amt,
  225. return_qty,
  226. return_amt,
  227. remarks,
  228. cp_id,
  229. op_app_code,
  230. </trim>
  231. )
  232. values
  233. <foreach collection="list" index="index" item="item" separator=",">
  234. (
  235. <trim suffixOverrides=",">
  236. #{item.orderId}::uuid,
  237. #{item.itemIndex},
  238. #{item.skuId}::uuid,
  239. #{item.itemQty},
  240. #{item.priceStd},
  241. #{item.amtStd},
  242. #{item.priceSale},
  243. #{item.itemAmt},
  244. #{item.priceDiscount},
  245. #{item.nonStdCode},
  246. #{item.outStatus},
  247. #{item.outingQty},
  248. #{item.outingAmt},
  249. #{item.outQty},
  250. #{item.outAmt},
  251. #{item.returnQty},
  252. #{item.returnAmt},
  253. #{item.remarks},
  254. #{item.cpId},
  255. #{item.opAppCode},
  256. </trim>
  257. )
  258. </foreach>
  259. </insert>
  260. <delete id="deleteById">
  261. DELETE
  262. FROM dkic_b.t_psi_order_item
  263. WHERE item_id = #{id}::UUID;
  264. </delete>
  265. <!-- 根据条件进行查询(出库用) -->
  266. <select id="selectByCondForOut" resultMap="BaseResultMapResponse">
  267. SELECT tpoi.item_id as "fromItemId",
  268. tpoi.order_id as "fromId",
  269. tpoi.item_index,
  270. tpoi.sku_id,
  271. tmgs.sku_code as "skuCode",
  272. tmgs.sku_model as "skuModel",
  273. tmgs.sku_name as "skuName",
  274. tpoi.item_qty as "orderQty",
  275. tpoi.item_qty - tpoi.outing_qty as "canOutingQty",
  276. tpoi.item_qty - tpoi.outing_qty as outing_qty,
  277. tpoi.price_sale as "priceOut",
  278. tpoi.price_sale * (tpoi.item_qty - tpoi.outing_qty) as outing_amt,
  279. tpoi.non_std_code,
  280. tpoi.remarks,
  281. tpi.inv_id as "invId",
  282. tpi.wh_id as "whId",
  283. tpi.inv_qty as "invQty",
  284. tpi.usable_qty as "usableQty",
  285. tmw.wh_name as "whName"
  286. FROM dkic_b.t_psi_order_item as tpoi
  287. inner join dkic_b.t_mst_goods_sku tmgs on tpoi.sku_id = tmgs.sku_id
  288. left join dkic_b.t_psi_inventory as tpi
  289. on tpi.sku_id = tpoi.sku_id and tpi.non_std_code = tpoi.non_std_code and
  290. tpi.cp_id = tpoi.cp_id
  291. left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = tpi.wh_id
  292. where tpoi.order_id = #{orderId}::uuid
  293. order by tpoi.item_index
  294. </select>
  295. </mapper>