OrderItemMapper.xml 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  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, sub_unit_id, unit_id,pack_box,box, piece,
  9. sys.f_remove_zero(item_qty) as item_qty, price_std, amt_std, price_sale, item_amt, price_discount, non_std_code, out_status,
  10. sys.f_remove_zero(outing_qty) as outing_qty, outing_amt, sys.f_remove_zero(out_qty) as out_qty, out_amt,
  11. sys.f_remove_zero(return_qty) as return_qty, return_amt, remarks, flg_valid, cp_id, wh_id,
  12. fact_price,fact_amt,disc_amt,use_place
  13. </sql>
  14. <sql id="Base_Column_List_Response">
  15. t.item_id, t.order_id, t.item_index, t.sku_id, sys.f_remove_zero(t.item_qty) as item_qty, t.price_std, t.amt_std, t.price_sale, t.item_amt, t.price_discount, t.non_std_code,
  16. t.out_status, sys.f_remove_zero(t.outing_qty) as outing_qty, t.outing_amt, sys.f_remove_zero(t.out_qty) as out_qty, t.out_amt,
  17. sys.f_remove_zero(t.return_qty) as return_qty, t.return_amt, t.remarks, t.flg_valid, t.cp_id, t.wh_id
  18. ,t.box,t.piece,t.sub_unit_id,t.unit_id,t.pack_box,
  19. t.fact_price,t.fact_amt,t.disc_amt,t,use_place
  20. </sql>
  21. <!-- 通用查询映射结果 -->
  22. <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.sale.OrderItem">
  23. <id column="item_id" property="itemId"/>
  24. <result column="order_id" property="orderId" typeHandler="UuidTypeHandler"/>
  25. <result column="item_index" property="itemIndex"/>
  26. <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
  27. <result column="unit_id" property="unitId" typeHandler="UuidTypeHandler"/>
  28. <result column="sub_unit_id" property="subUnitId" typeHandler="UuidTypeHandler"/>
  29. <result column="pack_box" property="packBox"/>
  30. <result column="box" property="box"/>
  31. <result column="piece" property="piece"/>
  32. <result column="item_qty" property="itemQty"/>
  33. <result column="price_std" property="priceStd"/>
  34. <result column="amt_std" property="amtStd"/>
  35. <result column="price_sale" property="priceSale"/>
  36. <result column="item_amt" property="itemAmt"/>
  37. <result column="price_discount" property="priceDiscount"/>
  38. <result column="non_std_code" property="nonStdCode"/>
  39. <result column="out_status" property="outStatus"/>
  40. <result column="outing_qty" property="outingQty"/>
  41. <result column="outing_amt" property="outingAmt"/>
  42. <result column="out_qty" property="outQty"/>
  43. <result column="out_amt" property="outAmt"/>
  44. <result column="return_qty" property="returnQty"/>
  45. <result column="return_amt" property="returnAmt"/>
  46. <result column="remarks" property="remarks"/>
  47. <result column="flg_valid" property="flgValid"/>
  48. <result column="cp_id" property="cpId"/>
  49. <result column="wh_id" property="whId"/>
  50. <result column="decimalPlaces" property="decimalPlaces"/>
  51. <result column="fact_price" property="factPrice"/>
  52. <result column="fact_amt" property="factAmt"/>
  53. <result column="disc_amt" property="discAmt"/>
  54. <result column="use_place" property="usePlace"/>
  55. </resultMap>
  56. <!-- 通用查询映射结果 -->
  57. <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.sale.OrderItemResponse">
  58. <id column="item_id" property="itemId"/>
  59. <result column="order_id" property="orderId" typeHandler="UuidTypeHandler"/>
  60. <result column="item_index" property="itemIndex"/>
  61. <result column="sku_id" property="skuId" typeHandler="UuidTypeHandler"/>
  62. <result column="unit_id" property="unitId" typeHandler="UuidTypeHandler"/>
  63. <result column="sub_unit_id" property="subUnitId" typeHandler="UuidTypeHandler"/>
  64. <result column="pack_box" property="packBox"/>
  65. <result column="item_qty" property="itemQty"/>
  66. <result column="price_std" property="priceStd"/>
  67. <result column="amt_std" property="amtStd"/>
  68. <result column="price_sale" property="priceSale"/>
  69. <result column="item_amt" property="itemAmt"/>
  70. <result column="price_discount" property="priceDiscount"/>
  71. <result column="non_std_code" property="nonStdCode"/>
  72. <result column="out_status" property="outStatus"/>
  73. <result column="outing_qty" property="outingQty"/>
  74. <result column="outing_amt" property="outingAmt"/>
  75. <result column="out_qty" property="outQty"/>
  76. <result column="out_amt" property="outAmt"/>
  77. <result column="return_qty" property="returnQty"/>
  78. <result column="return_amt" property="returnAmt"/>
  79. <result column="remarks" property="remarks"/>
  80. <result column="flg_valid" property="flgValid"/>
  81. <result column="cp_id" property="cpId"/>
  82. <result column="wh_id" property="whId"/>
  83. <result column="wh_name" property="whName"/>
  84. <result column="order_no" property="orderNo"/>
  85. <result column="brand_name" property="brandName"/>
  86. <result column="short_name" property="shortName"/>
  87. <result column="sku_images" property="skuImages" typeHandler="JsonTypeHandler"/>
  88. <result column="transferableQuantity" property="transferableQuantity"/>
  89. <result column="skuImages" property="skuImages" typeHandler="JsonTypeHandler"/>
  90. <result column="decimalPlaces" property="decimalPlaces"/>
  91. <result column="fact_price" property="factPrice"/>
  92. <result column="fact_amt" property="factAmt"/>
  93. <result column="disc_amt" property="discAmt"/>
  94. <result column="use_place" property="usePlace"/>
  95. </resultMap>
  96. <!-- 通用条件列 -->
  97. <sql id="Condition">
  98. <where>
  99. <if test="orderId != null and orderId != ''">
  100. AND t.order_id = #{orderId}::uuid
  101. </if>
  102. <if test="itemIndex != null">
  103. AND t.item_index = #{itemIndex}
  104. </if>
  105. <if test="skuId != null and skuId != ''">
  106. AND t.sku_id = #{skuId}
  107. </if>
  108. <if test="itemQty != null">
  109. AND t.item_qty = #{itemQty}
  110. </if>
  111. <if test="priceStd != null">
  112. AND t.price_std = #{priceStd}
  113. </if>
  114. <if test="amtStd != null">
  115. AND t.amt_std = #{amtStd}
  116. </if>
  117. <if test="priceSale != null">
  118. AND t.price_sale = #{priceSale}
  119. </if>
  120. <if test="itemAmt != null">
  121. AND t.item_amt = #{itemAmt}
  122. </if>
  123. <if test="priceDiscount != null">
  124. AND t.price_discount = #{priceDiscount}
  125. </if>
  126. <if test="nonStdCode != null and nonStdCode != ''">
  127. AND t.non_std_code = #{nonStdCode}
  128. </if>
  129. <if test="outStatus != null and outStatus != ''">
  130. AND t.out_status = #{outStatus}
  131. </if>
  132. <if test="outingQty != null">
  133. AND t.outing_qty = #{outingQty}
  134. </if>
  135. <if test="outingAmt != null">
  136. AND t.outing_amt = #{outingAmt}
  137. </if>
  138. <if test="outQty != null">
  139. AND t.out_qty = #{outQty}
  140. </if>
  141. <if test="outAmt != null">
  142. AND t.out_amt = #{outAmt}
  143. </if>
  144. <if test="returnQty != null">
  145. AND t.return_qty = #{returnQty}
  146. </if>
  147. <if test="returnAmt != null">
  148. AND t.return_amt = #{returnAmt}
  149. </if>
  150. <if test="remarks != null and remarks != ''">
  151. AND t.remarks = #{remarks}
  152. </if>
  153. <if test="flgValid != null">
  154. AND t.flg_valid = #{flgValid}
  155. </if>
  156. <if test="cpId != null">
  157. AND t.cp_id = #{cpId}
  158. </if>
  159. </where>
  160. </sql>
  161. <sql id="idsForeach">
  162. <!-- 根据主键itemId批量操作 -->
  163. WHERE item_id in
  164. <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
  165. #{item}
  166. </foreach>
  167. </sql>
  168. <!-- 查询表t_psi_order_item,(条件查询+分页)列表 -->
  169. <select id="selectByCond" resultMap="BaseResultMapResponse">
  170. SELECT t.item_id,
  171. t.order_id,
  172. t.item_index,
  173. t.sku_id,
  174. tmgs.sku_code as "skuCode",
  175. tmgs.sku_model as "skuModel",
  176. tmgs.sku_name as "skuName",
  177. tmgs.sku_images,
  178. tmgb.brand_name,
  179. tmgb.short_name,
  180. dkic_b.f_box_piece(u2.unit_name,ul.unit_name,t.box,t.piece) AS "boxPiece",
  181. t.pack_box,
  182. t.box,
  183. t.piece,
  184. sys.f_remove_zero(t.item_qty) as item_qty,
  185. t.price_std,
  186. t.amt_std,
  187. t.price_sale,
  188. t.item_amt,
  189. t.price_discount,
  190. t.fact_price,
  191. t.fact_amt,
  192. t.disc_amt,
  193. t.use_place,
  194. t.non_std_code,
  195. t.out_status,
  196. sys.f_remove_zero(t.outing_qty) as outing_qty,
  197. t.outing_amt,
  198. sys.f_remove_zero(t.out_qty) as out_qty,
  199. t.out_amt,
  200. sys.f_remove_zero(t.return_qty) as return_qty,
  201. t.return_amt,
  202. t.remarks,
  203. t.wh_id,
  204. tmw.wh_name
  205. ,ul.decimal_places as "decimalPlaces"
  206. ,t.unit_id
  207. ,t.sub_unit_id
  208. ,ul.unit_name as "unitName"
  209. ,u2.unit_name as "subUnitName"
  210. FROM dkic_b.t_psi_order_item as t
  211. inner join dkic_b.t_mst_goods_sku tmgs on t.sku_id = tmgs.sku_id
  212. LEFT JOIN dkic_b.t_mst_unit AS ul ON tmgs.unit_id = ul.unit_id
  213. LEFT JOIN dkic_b.t_mst_unit AS u2 ON tmgs.sub_unit_id = u2.unit_id
  214. inner join dkic_b.t_mst_goods_brand tmgb on tmgb.brand_id = tmgs.brand_id
  215. left join dkic_b.t_mst_warehouse tmw on tmw.wh_id = t.wh_id
  216. <include refid="Condition"/>
  217. order by t.item_index
  218. <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
  219. limit #{end} offset #{start}
  220. </if>
  221. </select>
  222. <!-- 查询表t_psi_order_item,(条件查询)个数 -->
  223. <select id="countByCond" resultType="Long">
  224. SELECT
  225. count(1)
  226. FROM dkic_b.t_psi_order_item as t
  227. <include refid="Condition"/>
  228. </select>
  229. <!-- 根据主键查询表t_psi_order_item的一行数据 -->
  230. <select id="selectById" resultMap="BaseResultMapResponse">
  231. SELECT
  232. <include refid="Base_Column_List_Response"/>
  233. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where t.unit_id = ul.unit_id) as "decimalPlaces"
  234. FROM dkic_b.t_psi_order_item t
  235. WHERE t.item_id = #{id}::uuid
  236. </select>
  237. <!-- 根据主键锁定表t_psi_order_item的一行数据 -->
  238. <select id="selectByIdForUpdate" resultMap="BaseResultMap">
  239. SELECT
  240. <include refid="Base_Column_List"/>
  241. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where dkic_b.t_psi_order_item.unit_id = ul.unit_id) as "decimalPlaces"
  242. FROM dkic_b.t_psi_order_item
  243. WHERE item_id = #{id}::uuid
  244. for update
  245. </select>
  246. <!-- 根据主表主键锁定表t_psi_order_item的一行数据 -->
  247. <select id="selectByZIdForUpdate" resultMap="BaseResultMap">
  248. SELECT
  249. <include refid="Base_Column_List"/>
  250. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where dkic_b.t_psi_order_item.unit_id = ul.unit_id) as "decimalPlaces"
  251. FROM dkic_b.t_psi_order_item
  252. WHERE order_id = #{id}::uuid
  253. for update
  254. </select>
  255. <!-- 根据主键锁定表t_psi_order_item的多行数据 -->
  256. <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
  257. SELECT
  258. <include refid="Base_Column_List"/>
  259. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where dkic_b.t_psi_order_item.unit_id = ul.unit_id) as "decimalPlaces"
  260. FROM dkic_b.t_psi_order_item
  261. <include refid="idsForeach"/>
  262. for update
  263. </select>
  264. <insert id="insertBatch">
  265. insert into dkic_b.t_psi_order_item
  266. (
  267. <trim suffixOverrides=",">
  268. order_id,
  269. item_index,
  270. sku_id,
  271. item_qty,
  272. price_std,
  273. amt_std,
  274. price_sale,
  275. item_amt,
  276. price_discount,
  277. non_std_code,
  278. out_status,
  279. outing_qty,
  280. outing_amt,
  281. out_qty,
  282. out_amt,
  283. return_qty,
  284. return_amt,
  285. remarks,
  286. cp_id,
  287. wh_id,
  288. </trim>
  289. )
  290. values
  291. <foreach collection="list" index="index" item="item" separator=",">
  292. (
  293. <trim suffixOverrides=",">
  294. #{item.orderId}::uuid,
  295. #{item.itemIndex},
  296. #{item.skuId}::uuid,
  297. #{item.itemQty},
  298. #{item.priceStd},
  299. #{item.amtStd},
  300. #{item.priceSale},
  301. #{item.itemAmt},
  302. #{item.priceDiscount},
  303. #{item.nonStdCode},
  304. #{item.outStatus},
  305. #{item.outingQty},
  306. #{item.outingAmt},
  307. #{item.outQty},
  308. #{item.outAmt},
  309. #{item.returnQty},
  310. #{item.returnAmt},
  311. #{item.remarks},
  312. #{item.cpId},
  313. #{item.whId},
  314. </trim>
  315. )
  316. </foreach>
  317. </insert>
  318. <delete id="deleteById">
  319. DELETE FROM dkic_b.t_psi_order_item
  320. WHERE item_id = #{id}::UUID;
  321. </delete>
  322. <!-- 根据条件进行查询(出库用) -->
  323. <select id="selectByCondForOut" resultMap="BaseResultMapResponse">
  324. SELECT t.item_id as "fromItemId",
  325. t.order_id as "fromId",
  326. t.item_index,
  327. t.sku_id,
  328. tmgs.sku_code as "skuCode",
  329. tmgs.sku_model as "skuModel",
  330. tmgs.sku_name as "skuName",
  331. tmgs.sku_images AS "skuImages",
  332. t.pack_box ,
  333. sys.f_remove_zero(t.item_qty) as "orderQty",
  334. t.box,
  335. t.piece,
  336. sys.f_remove_zero(t.item_qty - t.outing_qty - t.out_qty) as "canOutingQty",
  337. sys.f_remove_zero(t.item_qty - t.outing_qty - t.out_qty) as outing_qty,
  338. -- (t.item_qty - t.outing_qty - t.out_qty)/t.pack_box as "outingBox",
  339. -- (t.item_qty - t.outing_qty - t.out_qty)%t.pack_box as "outingPiece",
  340. case
  341. when t.sub_unit_id ISNULL
  342. then 0
  343. else
  344. floor((T.item_qty - T.outing_qty - T.out_qty) / T.pack_box)
  345. end AS "outingBox",
  346. case
  347. when t.sub_unit_id ISNULL
  348. then floor(T.item_qty - T.outing_qty - T.out_qty)
  349. else
  350. floor((T.item_qty - T.outing_qty - T.out_qty) % T.pack_box)
  351. end AS "outingPiece",
  352. case
  353. when t.sub_unit_id ISNULL
  354. then dkic_b.f_box_piece(u2.unit_name, ul.unit_name, 0,
  355. floor(T.item_qty - T.outing_qty - T.out_qty)::INT)
  356. else
  357. dkic_b.f_box_piece(u2.unit_name, ul.unit_name,
  358. floor((T.item_qty - T.outing_qty - T.out_qty) / T.pack_box)::INT,
  359. floor((T.item_qty - T.outing_qty - T.out_qty) % T.pack_box)::INT)
  360. end AS "thisOutBoxPiece",
  361. t.price_sale as "priceOut",
  362. t.price_sale * (t.item_qty - t.outing_qty - t.out_qty) as outing_amt,
  363. t.non_std_code,
  364. t.remarks,
  365. t.wh_id,
  366. t.unit_id,
  367. t.sub_unit_id,
  368. tmw.wh_name,
  369. tpi.inv_id as "invId",
  370. sys.f_remove_zero(tpi.inv_qty) as "invQty",
  371. sys.f_remove_zero(tpi.usable_qty) as "usableQty"
  372. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where t.unit_id = ul.unit_id) as "decimalPlaces"
  373. ,ul.unit_name as "unitName"
  374. ,u2.unit_name as "subUnitName"
  375. ,dkic_b.f_box_piece(u2.unit_name,ul.unit_name,t.box,t.piece) as "boxPiece"
  376. FROM dkic_b.t_psi_order_item as t
  377. inner join dkic_b.t_mst_goods_sku tmgs on t.sku_id = tmgs.sku_id
  378. left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = t.wh_id
  379. left join dkic_b.t_psi_inventory as tpi
  380. on tpi.sku_id = t.sku_id and tpi.non_std_code = t.non_std_code
  381. and tpi.wh_id = t.wh_id and tpi.cp_id = t.cp_id
  382. LEFT JOIN dkic_b.t_mst_unit AS ul ON t.unit_id = ul.unit_id
  383. LEFT JOIN dkic_b.t_mst_unit AS u2 ON t.sub_unit_id = u2.unit_id
  384. where t.flg_valid
  385. and t.item_qty > t.outing_qty
  386. and t.order_id = #{orderId}::uuid
  387. order by t.item_index
  388. </select>
  389. <!-- 根据条件进行查询(退货用) -->
  390. <select id="selectByCondForReturn" resultMap="BaseResultMapResponse">
  391. SELECT tpobi.out_id as "sOutId",
  392. tpobi.item_id as "sOutItemId",
  393. t.order_id as "sOrderId",
  394. t.item_id as "sOrderItemId",
  395. t.sku_id,
  396. tmgs.sku_code as "skuCode",
  397. tmgs.sku_model as "skuModel",
  398. tmgs.sku_name as "skuName",
  399. tpobi.out_qty as "outboundOutQty",
  400. sys.f_remove_zero(tpobi.out_qty - tpobi.return_qty) as "canReturnQty",
  401. - sys.f_remove_zero(tpobi.out_qty - tpobi.return_qty) as outing_qty,
  402. t.price_sale as "priceOut",
  403. - t.price_sale * (tpobi.out_qty - tpobi.return_qty) as outing_amt,
  404. tpobi.inv_id as "invId",
  405. 0 as out_qty,
  406. 0 as out_amt,
  407. t.non_std_code,
  408. tpobi.remarks,
  409. t.wh_id,
  410. tmw.wh_name
  411. ,(select ul.decimal_places from dkic_b.t_mst_unit ul where tpobi.unit_id = ul.unit_id) as "decimalPlaces"
  412. ,tpobi.pack_box
  413. ,tpobi.unit_id
  414. ,tpobi.sub_unit_id
  415. ,ul.unit_name as "unitName"
  416. ,u2.unit_name as "subUnitName"
  417. ,dkic_b.f_box_piece(u2.unit_name,ul.unit_name,tpobi.outing_box,tpobi.outing_piece) AS "outingBoxPiece"
  418. ,dkic_b.f_box_piece(u2.unit_name,ul.unit_name,tpobi.out_box,tpobi.out_piece) AS "outBoxPiece"
  419. FROM dkic_b.t_psi_outbound_item as tpobi
  420. inner join dkic_b.t_psi_order_item as t on t.item_id = tpobi.from_item_id
  421. inner join dkic_b.t_mst_goods_sku tmgs on t.sku_id = tmgs.sku_id
  422. left join dkic_b.t_mst_warehouse as tmw on tmw.wh_id = t.wh_id
  423. LEFT JOIN dkic_b.t_mst_unit AS ul ON tpobi.unit_id = ul.unit_id
  424. LEFT JOIN dkic_b.t_mst_unit AS u2 ON tpobi.sub_unit_id = u2.unit_id
  425. where tpobi.flg_valid
  426. and tpobi.out_type = '出库类型-销售出库'
  427. and tpobi.out_qty > tpobi.return_qty
  428. and t.order_id = #{orderId}::uuid
  429. order by t.item_index
  430. </select>
  431. <!-- 根据id修改-->
  432. <update id="updateById" parameterType="com.dk.mdm.model.pojo.sale.OrderItem">
  433. update dkic_b.t_psi_order_item
  434. <set>
  435. <if test=" et!=null and et.itemIndex != null">
  436. item_index = #{et.itemIndex,jdbcType=INTEGER},
  437. </if>
  438. <if test=" et!=null and et.skuId != null">
  439. sku_id = #{et.skuId,typeHandler=UuidTypeHandler},
  440. </if>
  441. <if test=" et!=null and et.itemQty != null">
  442. item_qty = #{et.itemQty,jdbcType=NUMERIC},
  443. </if>
  444. <if test=" et!=null and et.priceStd != null">
  445. price_std = #{et.priceStd,jdbcType=NUMERIC},
  446. </if>
  447. <if test=" et!=null and et.amtStd != null">
  448. amt_std = #{et.amtStd,jdbcType=NUMERIC},
  449. </if>
  450. <if test=" et!=null and et.priceSale != null">
  451. price_sale = #{et.priceSale,jdbcType=NUMERIC},
  452. </if>
  453. <if test=" et!=null and et.itemAmt != null">
  454. item_amt = #{et.itemAmt,jdbcType=NUMERIC},
  455. </if>
  456. <if test=" et!=null and et.priceDiscount != null">
  457. price_discount = #{et.priceDiscount,jdbcType=NUMERIC},
  458. </if>
  459. <if test=" et!=null and et.nonStdCode != null">
  460. non_std_code = #{et.nonStdCode,jdbcType=VARCHAR},
  461. </if>
  462. <if test=" et!=null and et.outStatus != null">
  463. out_status = #{et.outStatus,jdbcType=VARCHAR},
  464. </if>
  465. <if test=" et!=null and et.outingQty != null">
  466. outing_qty = outing_qty + #{et.outingQty,jdbcType=NUMERIC},
  467. </if>
  468. <if test=" et!=null and et.outingAmt != null">
  469. outing_amt = outing_amt + #{et.outingAmt,jdbcType=NUMERIC},
  470. </if>
  471. <if test=" et!=null and et.outQty != null">
  472. out_qty = out_qty + #{et.outQty,jdbcType=NUMERIC},
  473. </if>
  474. <if test=" et!=null and et.outAmt != null">
  475. out_amt = out_amt + #{et.outAmt,jdbcType=NUMERIC},
  476. </if>
  477. <if test=" et!=null and et.returnQty != null">
  478. return_qty = #{et.returnQty,jdbcType=NUMERIC},
  479. </if>
  480. <if test=" et!=null and et.returnAmt != null">
  481. return_amt = #{et.returnAmt,jdbcType=NUMERIC},
  482. </if>
  483. <if test=" et!=null and et.remarks != null">
  484. remarks = #{et.remarks,jdbcType=VARCHAR},
  485. </if>
  486. <if test=" et!=null and et.flgValid != null">
  487. flg_valid = #{et.flgValid,jdbcType=BOOLEAN},
  488. </if>
  489. <if test=" et!=null and et.cpId != null">
  490. cp_id = #{et.cpId,jdbcType=INTEGER},
  491. </if>
  492. <if test=" et!=null and et.cpId != null">
  493. fact_price = #{et.factPrice,jdbcType=NUMERIC},
  494. </if>
  495. <if test=" et!=null and et.cpId != null">
  496. fact_amt = #{et.factAmt,jdbcType=NUMERIC},
  497. </if>
  498. <if test=" et!=null and et.cpId != null">
  499. disc_amt = #{et.discAmt,jdbcType=NUMERIC},
  500. </if>
  501. <if test=" et!=null and et.usePlace != null">
  502. use_place = #{et.usePlace,jdbcType=VARCHAR},
  503. </if>
  504. </set>
  505. where item_id = #{et.itemId,typeHandler=UuidTypeHandler}
  506. and item_qty >=(out_qty + outing_qty)
  507. </update>
  508. <!--修改退货信息 -->
  509. <update id="updateReturnMessage" parameterType="com.dk.mdm.model.pojo.sale.OrderItem">
  510. update dkic_b.t_psi_order_item
  511. <set>
  512. <if test=" returnQty != null">
  513. return_qty = return_qty + #{returnQty,jdbcType=NUMERIC},
  514. </if>
  515. <if test=" returnAmt != null">
  516. return_amt = return_amt + #{returnAmt,jdbcType=NUMERIC},
  517. </if>
  518. </set>
  519. where item_id = #{itemId,typeHandler=UuidTypeHandler}
  520. and item_qty >= return_qty
  521. </update>
  522. <!-- 通用条件列 -->
  523. <sql id="Condition_pur">
  524. <where>
  525. <if test="orderNo != null">
  526. AND tpo.order_no like concat('%', my_ex.likequery(#{orderNo}) , '%')
  527. </if>
  528. <if test="orderId != null and orderId != ''">
  529. AND t.order_id = #{orderId}::uuid
  530. </if>
  531. <if test="itemIndex != null">
  532. AND t.item_index = #{itemIndex}
  533. </if>
  534. <if test="skuId != null and skuId != ''">
  535. AND t.sku_id = #{skuId}
  536. </if>
  537. <if test="itemQty != null">
  538. AND t.item_qty = #{itemQty}
  539. </if>
  540. <if test="priceStd != null">
  541. AND t.price_std = #{priceStd}
  542. </if>
  543. <if test="amtStd != null">
  544. AND t.amt_std = #{amtStd}
  545. </if>
  546. <if test="priceSale != null">
  547. AND t.price_sale = #{priceSale}
  548. </if>
  549. <if test="itemAmt != null">
  550. AND t.item_amt = #{itemAmt}
  551. </if>
  552. <if test="priceDiscount != null">
  553. AND t.price_discount = #{priceDiscount}
  554. </if>
  555. <if test="nonStdCode != null and nonStdCode != ''">
  556. AND t.non_std_code = #{nonStdCode}
  557. </if>
  558. <if test="outStatus != null and outStatus != ''">
  559. AND t.out_status = #{outStatus}
  560. </if>
  561. <if test="outingQty != null">
  562. AND t.outing_qty = #{outingQty}
  563. </if>
  564. <if test="outingAmt != null">
  565. AND t.outing_amt = #{outingAmt}
  566. </if>
  567. <if test="outQty != null">
  568. AND t.out_qty = #{outQty}
  569. </if>
  570. <if test="outAmt != null">
  571. AND t.out_amt = #{outAmt}
  572. </if>
  573. <if test="returnQty != null">
  574. AND t.return_qty = #{returnQty}
  575. </if>
  576. <if test="returnAmt != null">
  577. AND t.return_amt = #{returnAmt}
  578. </if>
  579. <if test="remarks != null and remarks != ''">
  580. AND t.remarks = #{remarks}
  581. </if>
  582. <if test="flgValid != null">
  583. AND t.flg_valid = #{flgValid}
  584. </if>
  585. <if test="cpId != null">
  586. AND t.cp_id = #{cpId}
  587. </if>
  588. </where>
  589. </sql>
  590. <!-- 查询表t_psi_order_item,(条件查询+分页)列表 -->
  591. <select id="purchaseBasedOnSaleSelectByCond" resultMap="BaseResultMapResponse">
  592. SELECT t.item_id,
  593. t.order_id,
  594. tpo.order_no,
  595. t.item_index,
  596. t.sku_id,
  597. tmgs.sku_code as "skuCode",
  598. tmgs.sku_model as "skuModel",
  599. tmgs.sku_name as "skuName",
  600. sys.f_remove_zero(t.item_qty) as item_qty,
  601. t.price_std,
  602. t.amt_std,
  603. t.price_sale,
  604. t.item_amt,
  605. t.price_discount,
  606. t.fact_price,
  607. t.fact_amt,
  608. t.disc_amt,
  609. t.use_place,
  610. t.non_std_code,
  611. t.out_status,
  612. sys.f_remove_zero(t.outing_qty) as outing_qty,
  613. t.outing_amt,
  614. sys.f_remove_zero(t.out_qty) as out_qty,
  615. t.out_amt,
  616. sys.f_remove_zero(t.return_qty) as return_qty,
  617. t.return_amt,
  618. t.remarks,
  619. t.item_qty - coalesce(sumQty,0) as "transferableQuantity"
  620. ,ul.decimal_places as "decimalPlaces"
  621. ,t.box
  622. ,t.piece
  623. ,t.pack_box
  624. ,t.unit_id
  625. ,t.sub_unit_id
  626. ,ul.unit_name as "unitName"
  627. ,u2.unit_name as "subUnitName"
  628. ,dkic_b.f_box_piece(u2.unit_name,ul.unit_name,t.box,t.piece) as "boxPiece"
  629. FROM dkic_b.t_psi_order_item as t
  630. left join dkic_b.t_psi_order as tpo on tpo.order_id = t.order_id
  631. inner join dkic_b.t_mst_goods_sku tmgs on t.sku_id = tmgs.sku_id
  632. left join dkic_b.t_mst_unit ul on t.unit_id = ul.unit_id
  633. left join dkic_b.t_mst_unit u2 on t.sub_unit_id = u2.unit_id
  634. left join(select from_item_id,sum(item_qty) as sumQty from dkic_b.t_psi_purchase_item
  635. group by from_item_id) as pi on pi.from_item_id = t.item_id
  636. <where>
  637. t.item_qty - coalesce(sumQty,0) > 0
  638. <if test="orderNo != null">
  639. AND tpo.order_no like concat('%', my_ex.likequery(#{orderNo}) , '%')
  640. </if>
  641. </where>
  642. order by t.item_id
  643. <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
  644. limit #{end} offset #{start}
  645. </if>
  646. </select>
  647. <!-- 查询表t_psi_order_item,(条件查询+分页)列表 -->
  648. <select id="purchaseBasedOnSaleContByCond" resultType="Long">
  649. SELECT count(1)
  650. FROM dkic_b.t_psi_order_item as t
  651. left join dkic_b.t_psi_order as tpo on tpo.order_id = t.order_id
  652. inner join dkic_b.t_mst_goods_sku tmgs on t.sku_id = tmgs.sku_id
  653. left join(select from_item_id,sum(item_qty) as sumQty from dkic_b.t_psi_purchase_item
  654. group by from_item_id) as pi on pi.from_item_id = t.item_id
  655. <where>
  656. t.item_qty - coalesce(sumQty,0) > 0
  657. <if test="orderNo != null">
  658. AND tpo.order_no like concat('%', my_ex.likequery(#{orderNo}) , '%')
  659. </if>
  660. </where>
  661. <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
  662. limit #{end} offset #{start}
  663. </if>
  664. </select>
  665. </mapper>