OrderItemMapper.xml 32 KB

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