GoodsSkuMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  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.mst.GoodsSkuMapper">
  4. <!-- 通用设置 -->
  5. <!-- 通用查询列 -->
  6. <sql id="Base_Column_List">
  7. sku_id, sku_code, sku_name, sku_model, brand_id, category_id, unit_id, sub_unit_id, conversion_factor
  8. , series_id, sku_spec, price_purchase, price_standard, price_wholesale, price_limited, price_other,sku_images
  9. , remarks, flg_valid, cp_id, op_create_time, op_create_user_id, op_update_time, op_update_user_id
  10. , op_app_code, op_timestamp, op_db_user, warning_upper_limit, warning_lower_limit
  11. </sql>
  12. <!-- 更新预警信息 -->
  13. <update id="saveWarningList">
  14. <foreach collection="list" item="item" index="index" separator=";">
  15. UPDATE dkic_b.t_mst_goods_sku
  16. SET warning_lower_limit = #{item.warningLowerLimit}, warning_upper_limit = #{item.warningUpperLimit}
  17. WHERE sku_id = #{item.skuId}::uuid
  18. </foreach>
  19. </update>
  20. <!-- 通用查询映射结果 -->
  21. <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.GoodsSku">
  22. <id column="sku_id" property="skuId"/>
  23. <result column="sku_code" property="skuCode"/>
  24. <result column="sku_name" property="skuName"/>
  25. <result column="sku_model" property="skuModel"/>
  26. <result column="brand_id" property="brandId" typeHandler="UuidTypeHandler"/>
  27. <result column="category_id" property="categoryId" typeHandler="UuidTypeHandler"/>
  28. <result column="unit_id" property="unitId" typeHandler="UuidTypeHandler"/>
  29. <result column="sub_unit_id" property="subUnitId" typeHandler="UuidTypeHandler"/>
  30. <result column="conversion_factor" property="conversionFactor"/>
  31. <result column="series_id" property="seriesId" typeHandler="UuidTypeHandler"/>
  32. <result column="sku_spec" property="skuSpec"/>
  33. <result column="price_purchase" property="pricePurchase"/>
  34. <result column="price_standard" property="priceStandard"/>
  35. <result column="price_wholesale" property="priceWholesale"/>
  36. <result column="price_limited" property="priceLimited"/>
  37. <result column="price_other" property="priceOther"/>
  38. <result column="sku_images" property="skuImages" typeHandler="JsonTypeHandler"/>
  39. <result column="warning_lower_limit" property="warningLowerLimit"/>
  40. <result column="warning_upper_limit" property="warningUpperLimit"/>
  41. <result column="remarks" property="remarks"/>
  42. <result column="flg_valid" property="flgValid"/>
  43. <result column="flg_sub_unit" property="flgSubUnit"/>
  44. <result column="flg_opening_inv" property="flgOpeningInv"/>
  45. <result column="flg_price" property="flgPrice"/>
  46. <result column="cp_id" property="cpId"/>
  47. <result column="op_create_time" property="opCreateTime" typeHandler="TimestampTypeHandler"/>
  48. <result column="op_create_user_id" property="opCreateUserId" typeHandler="UuidTypeHandler"/>
  49. <result column="op_update_time" property="opUpdateTime" typeHandler="TimestampTypeHandler"/>
  50. <result column="op_update_user_id" property="opUpdateUserId" typeHandler="UuidTypeHandler"/>
  51. <result column="op_app_code" property="opAppCode"/>
  52. <result column="op_timestamp" property="opTimestamp" typeHandler="TimestampTypeHandler"/>
  53. <result column="op_db_user" property="opDbUser"/>
  54. <result column="decimalPlaces" property="decimalPlaces"/>
  55. </resultMap>
  56. <sql id="Base_Column_List_JOIN">
  57. tmgs.price_other,tmgs.sku_id, tmgs.sku_code, tmgs.sku_name, tmgs.sku_model, tmgs.brand_id, tmgs.category_id, tmgs.unit_id, tmgs.sub_unit_id,
  58. tmgs.conversion_factor, tmgs.series_id, tmgs.sku_spec, tmgs.price_purchase, tmgs.price_standard,
  59. tmgs.pack_box, tmgs.price_wholesale, tmgs.price_limited, tmgs.price_other,tmgs.sku_images, tmgs.remarks, tmgs.flg_valid, tmgs.flg_sub_unit, tmgs.flg_opening_inv, tmgs.flg_price, tmgs.cp_id,
  60. tmgs.warning_lower_limit, tmgs.warning_upper_limit
  61. </sql>
  62. <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mst.GoodsSkuResponse">
  63. <id column="sku_id" property="skuId"/>
  64. <result column="sku_code" property="skuCode"/>
  65. <result column="sku_name" property="skuName"/>
  66. <result column="sku_model" property="skuModel"/>
  67. <result column="brand_id" property="brandId" typeHandler="UuidTypeHandler"/>
  68. <result column="category_id" property="categoryId" typeHandler="UuidTypeHandler"/>
  69. <result column="unit_id" property="unitId" typeHandler="UuidTypeHandler"/>
  70. <result column="sub_unit_id" property="subUnitId" typeHandler="UuidTypeHandler"/>
  71. <result column="conversion_factor" property="conversionFactor"/>
  72. <result column="series_id" property="seriesId" typeHandler="UuidTypeHandler"/>
  73. <result column="sku_spec" property="skuSpec"/>
  74. <result column="price_purchase" property="pricePurchase"/>
  75. <result column="price_standard" property="priceStandard"/>
  76. <result column="price_wholesale" property="priceWholesale"/>
  77. <result column="price_other" property="priceOther"/>
  78. <result column="price_limited" property="priceLimited"/>
  79. <result column="price_other" property="priceOther"/>
  80. <result column="pack_box" property="packBox"/>
  81. <result column="sku_images" property="skuImages" typeHandler="JsonTypeHandler"/>
  82. <result column="remarks" property="remarks"/>
  83. <result column="flg_valid" property="flgValid"/>
  84. <result column="cp_id" property="cpId"/>
  85. <result column="inventoryCount" property="inventoryCount"/>
  86. <result column="subUnitName" property="subUnitName"/>
  87. <result column="unitName" property="unitName"/>
  88. <result column="wh_id" property="whId" typeHandler="UuidTypeHandler"/>
  89. <result column="wh_name" property="whName"/>
  90. <result column="non_std_code" property="nonStdCode"/>
  91. <result column="inv_qty" property="invQty"/>
  92. <result column="cost_price" property="costPrice"/>
  93. <result column="priceInto" property="priceInto"/>
  94. <result column="intoQty" property="intoQty"/>
  95. <result column="decimalPlaces" property="decimalPlaces"/>
  96. <result column="intoing_box" property="box" />
  97. <result column="intoing_piece" property="piece" />
  98. <result column="warning_lower_limit" property="warningLowerLimit"/>
  99. <result column="warning_upper_limit" property="warningUpperLimit"/>
  100. </resultMap>
  101. <!-- 通用条件列 -->
  102. <sql id="Condition">
  103. <where>
  104. <if test="skuCode != null and skuCode != ''">
  105. AND tmgs.sku_code = #{skuCode}
  106. </if>
  107. <if test="skuName != null and skuName != ''">
  108. AND tmgs.sku_name = #{skuName}
  109. </if>
  110. <if test="skuModel != null and skuModel != ''">
  111. AND tmgs.sku_model = #{skuModel}
  112. </if>
  113. <if test="brandId != null and brandId != ''">
  114. AND tmgs.brand_id = #{brandId}::uuid
  115. </if>
  116. <if test="skuId != null and skuId != ''">
  117. AND tmgs.sku_id = #{skuId}::uuid
  118. </if>
  119. <if test="categoryId != null and categoryId != ''">
  120. AND tmgs.category_id = #{categoryId}::uuid
  121. </if>
  122. <if test="unitId != null and unitId != ''">
  123. AND tmgs.unit_id = #{unitId}::uuid
  124. </if>
  125. <if test="subUnitId != null and subUnitId != ''">
  126. AND tmgs.sub_unit_id = #{subUnitId}::uuid
  127. </if>
  128. <if test="conversionFactor != null">
  129. AND tmgs.conversion_factor = #{conversionFactor}
  130. </if>
  131. <if test="seriesId != null and seriesId != ''">
  132. AND tmgs.series_id = #{seriesId}::uuid
  133. </if>
  134. <if test="skuSpec != null and skuSpec != ''">
  135. AND tmgs.sku_spec = #{skuSpec}
  136. </if>
  137. <if test="pricePurchase != null">
  138. AND tmgs.price_purchase = #{pricePurchase}
  139. </if>
  140. <if test="priceStandard != null">
  141. AND tmgs.price_standard = #{priceStandard}
  142. </if>
  143. <if test="priceWholesale != null">
  144. AND tmgs.price_wholesale = #{priceWholesale}
  145. </if>
  146. <if test="priceLimited != null">
  147. AND tmgs.price_limited = #{priceLimited}
  148. </if>
  149. <if test="skuImages != null and skuImages != ''">
  150. AND tmgs.sku_images = #{skuImages}
  151. </if>
  152. <if test="remarks != null and remarks != ''">
  153. AND tmgs.remarks = #{remarks}
  154. </if>
  155. <if test="flgValid != null">
  156. AND tmgs.flg_valid = #{flgValid}
  157. </if>
  158. <if test="flgValidList != null and flgValidList.size>0">
  159. AND tmgs.flg_valid =any(#{flgValidList, typeHandler=BooleanListTypeHandler})
  160. </if>
  161. <if test="goodsBrandList != null and goodsBrandList.size>0">
  162. AND tmgs.brand_id =any(#{goodsBrandList, typeHandler=UuidListTypeHandler})
  163. </if>
  164. <if test="cpId != null">
  165. AND tmgs.cp_id = #{cpId}
  166. </if>
  167. <if test="brandIds != null">
  168. AND EXISTS (
  169. SELECT 1
  170. FROM unnest(string_to_array(#{brandIds}, ',')) AS brand_uuid
  171. WHERE brand_uuid::uuid = tmgs.brand_id
  172. )
  173. </if>
  174. <if test="searchText !=null">
  175. AND (tmgs.sku_name LIKE concat('%', my_ex.likequery(#{searchText}), '%')
  176. or tmgs.sku_model LIKE concat('%', my_ex.likequery(#{searchText}), '%'))
  177. </if>
  178. </where>
  179. </sql>
  180. <sql id="idsForeach">
  181. <!-- 根据主键skuId批量操作 -->
  182. WHERE sku_id in
  183. <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
  184. #{item}
  185. </foreach>
  186. </sql>
  187. <!-- 查询表t_mst_goods_sku,(条件查询+分页)列表 -->
  188. <select id="selectByCond" resultMap="BaseResultMapResponse">
  189. SELECT
  190. <include refid="Base_Column_List_JOIN"/>
  191. ,tmgb.short_name AS "shortName"
  192. ,tmgb.brand_name AS "brandName",tmgsr.series_name AS "seriesName"
  193. ,tmgus.unit_name as "subUnitName"
  194. ,tmgu.unit_name as "unitName"
  195. ,tmgu.decimal_places as "decimalPlaces"
  196. ,COALESCE((SELECT sum(tpi.usable_qty) from dkic_b.t_psi_inventory tpi where tpi.sku_id = tmgs.sku_id and tpi.cp_id = #{cpId} ),0) AS "usableQty"
  197. FROM dkic_b.t_mst_goods_sku tmgs
  198. left join dkic_b.t_mst_unit as tmgu on tmgs.unit_id = tmgu.unit_id
  199. left join dkic_b.t_mst_unit as tmgus on tmgs.sub_unit_id = tmgus.unit_id
  200. LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id = tmgs.brand_id
  201. LEFT JOIN dkic_b.t_mst_goods_series tmgsr ON tmgsr.series_id = tmgs.series_id
  202. <include refid="Condition"/>
  203. order by tmgs.op_create_time desc
  204. <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
  205. limit #{end} offset #{start}
  206. </if>
  207. </select>
  208. <!-- 查询表t_mst_goods_sku,(条件查询)个数 -->
  209. <select id="countByCond" resultType="Long">
  210. SELECT
  211. count(1)
  212. FROM dkic_b.t_mst_goods_sku tmgs
  213. LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id = tmgs.brand_id
  214. LEFT JOIN dkic_b.t_mst_goods_series tmgsr ON tmgsr.series_id = tmgs.series_id
  215. <include refid="Condition"/>
  216. </select>
  217. <!-- 根据主键查询表t_mst_goods_sku的一行数据 -->
  218. <select id="selectById" resultMap="BaseResultMapResponse">
  219. SELECT
  220. <include refid="Base_Column_List_JOIN"/>
  221. ,tmgb.brand_name AS "brandName"
  222. ,tmgc.cat_name AS "catName"
  223. ,tmu.unit_name AS "unitName"
  224. ,tmu.decimal_places as "decimalPlaces"
  225. ,subtmu.unit_name AS "subUnitName"
  226. ,tmgsr.series_name AS "seriesName"
  227. ,(SELECT count(1) FROM dkic_b.t_psi_inventory tsic WHERE tsic.sku_id = tmgs.sku_id ) AS inventoryCount
  228. ,tpiid.wh_id,
  229. tpiid.wh_name,
  230. tpiid.non_std_code,
  231. tpiid.inv_qty as "intoQty",
  232. tpiid.cost_price as "priceInto",
  233. tpiid.intoing_box,
  234. tpiid.intoing_piece
  235. FROM dkic_b.t_mst_goods_sku tmgs
  236. LEFT JOIN (
  237. SELECT
  238. tpii.sku_id,
  239. tpii.intoing_box,
  240. tpii.intoing_piece,
  241. tmwitem.wh_id,
  242. tmwitem.wh_name,
  243. tpivt.non_std_code,
  244. tpivt.inv_qty,
  245. tpii.cost_price
  246. FROM
  247. dkic_b.t_psi_inbound_item tpii
  248. LEFT JOIN dkic_b.t_psi_inventory tpivt ON tpii.inv_id = tpivt.inv_id
  249. LEFT JOIN dkic_b.t_mst_warehouse tmwitem ON tpivt.wh_id = tmwitem.wh_id
  250. WHERE
  251. tpii.into_type = '入库类型-期初入库'
  252. ) tpiid ON tpiid.sku_id = tmgs.sku_id
  253. LEFT JOIN dkic_b.t_mst_goods_brand tmgb ON tmgb.brand_id = tmgs.brand_id
  254. LEFT JOIN dkic_b.t_mst_goods_category tmgc ON tmgc.cat_id = tmgs.category_id
  255. LEFT JOIN dkic_b.t_mst_unit tmu ON tmu.unit_id = tmgs.unit_id
  256. LEFT JOIN dkic_b.t_mst_unit subtmu ON subtmu.unit_id = tmgs.sub_unit_id
  257. LEFT JOIN dkic_b.t_mst_goods_series tmgsr ON tmgsr.series_id = tmgs.series_id
  258. WHERE tmgs.sku_id = #{id}::uuid
  259. </select>
  260. <!-- 根据主键锁定表t_mst_goods_sku的一行数据 -->
  261. <select id="selectByIdForUpdate" resultMap="BaseResultMap">
  262. SELECT
  263. <include refid="Base_Column_List"/>
  264. FROM dkic_b.t_mst_goods_sku
  265. WHERE sku_id = #{skuId}
  266. for update
  267. </select>
  268. <!-- 根据主键锁定表t_mst_goods_sku的多行数据 -->
  269. <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
  270. SELECT
  271. <include refid="Base_Column_List"/>
  272. FROM dkic_b.t_mst_goods_sku
  273. <include refid="idsForeach"/>
  274. for update
  275. </select>
  276. <insert id="insertBatch">
  277. insert into dkic_b.t_mst_goods_sku
  278. (
  279. <trim suffixOverrides=",">
  280. sku_code,
  281. sku_name,
  282. sku_model,
  283. brand_id,
  284. category_id,
  285. unit_id,
  286. sub_unit_id,
  287. conversion_factor,
  288. series_id,
  289. sku_spec,
  290. price_purchase,
  291. price_standard,
  292. price_wholesale,
  293. price_limited,
  294. sku_images,
  295. remarks,
  296. cp_id,
  297. op_app_code,
  298. warning_lower_limit,
  299. warning_upper_limit
  300. </trim>
  301. )
  302. values
  303. <foreach collection="list" index="index" item="item" separator=",">
  304. (
  305. <trim suffixOverrides=",">
  306. #{item.skuCode},
  307. #{item.skuName},
  308. #{item.skuModel},
  309. #{item.brandId}::uuid,
  310. #{item.categoryId}::uuid,
  311. #{item.unitId}::uuid,
  312. #{item.subUnitId}::uuid,
  313. #{item.conversionFactor},
  314. #{item.seriesId}::uuid,
  315. #{item.skuSpec},
  316. #{item.pricePurchase},
  317. #{item.priceStandard},
  318. #{item.priceWholesale},
  319. #{item.priceLimited},
  320. #{item.skuImages},
  321. #{item.remarks},
  322. #{item.cpId},
  323. #{item.opAppCode},
  324. #{item.warningLowerLimit},
  325. #{item.warningUpperLimit}
  326. </trim>
  327. )
  328. </foreach>
  329. </insert>
  330. </mapper>