SaleOrderMapper.xml 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.zkqy.business.mapper.SaleOrderMapper">
  6. <resultMap type="com.zkqy.business.domain.SaleOrder" id="SaleOrderResult">
  7. <result property="id" column="id"/>
  8. <result property="saleNo" column="sale_no"/>
  9. <result property="saleCustomNo" column="sale_custom_no"/>
  10. <result property="saleDate" column="sale_date"/>
  11. <result property="saleEstimatedTime" column="sale_estimated_time"/>
  12. <result property="saleLeadTime" column="sale_lead_time"/>
  13. <result property="saleProductsNo" column="sale_products_no"/>
  14. <result property="saleAmounts" column="sale_amounts"/>
  15. <result property="saleAmountInWords" column="sale_amount_in_words"/>
  16. <result property="salePayType" column="sale_pay_type"/>
  17. <result property="saleOrderEstimatedTime" column="sale_order_estimated_time"/>
  18. <result property="saleOrderTechnologyNo" column="sale_order_technology_no"/>
  19. <result property="salesman" column="salesman"/>
  20. <result property="saleLeader" column="sale_leader"/>
  21. <result property="finance" column="finance"/>
  22. <result property="production" column="production"/>
  23. <result property="saleApprover" column="sale_approver"/>
  24. <result property="status" column="status"/>
  25. <result property="orderType" column="order_type"/>
  26. <result property="remark" column="remark"/>
  27. <result property="createById" column="create_by_id"/>
  28. <result property="createBy" column="create_by"/>
  29. <result property="createTime" column="create_time"/>
  30. <result property="updateById" column="update_by_id"/>
  31. <result property="updateBy" column="update_by"/>
  32. <result property="updateTime" column="update_time"/>
  33. <result property="delFlag" column="del_flag"/>
  34. <result property="taskProcessKey" column="task_process_key"/>
  35. <result property="taskNodeKey" column="task_node_key"/>
  36. <result property="processKey" column="process_key"/>
  37. <result property="earnestMoney" column="earnest_money"/>
  38. <result property="deliveryDate" column="delivery_date"/>
  39. <result property="lotNumber" column="lot_number"/>
  40. <result property="completionTime" column="completion_time"/>
  41. <result property="processingUnit" column="processing_unit"/>
  42. <result property="contactPerson" column="contact_person"/>
  43. <result property="address" column="address"/>
  44. <result property="materialType" column="material_type"/>
  45. <result property="outsourceSalePayType" column="outsource_sale_pay_type"/>
  46. <result property="oldInventoryState" column="old_inventory_state"/>
  47. </resultMap>
  48. <sql id="selectSaleOrderVo">
  49. select id,
  50. sale_no,
  51. sale_custom_no,
  52. sale_date,
  53. sale_estimated_time,
  54. sale_lead_time,
  55. sale_products_no,
  56. sale_amounts,
  57. sale_amount_in_words,
  58. sale_pay_type,
  59. sale_order_estimated_time,
  60. sale_order_technology_no,
  61. salesman,
  62. sale_leader,
  63. finance,
  64. production,
  65. sale_approver,
  66. status,
  67. order_type,
  68. remark,
  69. create_by_id,
  70. create_by,
  71. create_time,
  72. update_by_id,
  73. update_by,
  74. update_time,
  75. del_flag,
  76. task_process_key,
  77. task_node_key,
  78. process_key,
  79. earnest_money,
  80. delivery_date,
  81. lot_number,
  82. completion_time,
  83. processing_unit,
  84. contact_person,
  85. address,
  86. material_type,
  87. outsource_sale_pay_type,
  88. old_inventory_state
  89. from {DBNAME}.sale_order
  90. </sql>
  91. <select id="selectSaleOrderList" parameterType="com.zkqy.business.domain.SaleOrder" resultMap="SaleOrderResult">
  92. <include refid="selectSaleOrderVo"/>
  93. where del_flag = '0'
  94. <if test="saleNo != null and saleNo != ''">and sale_no = #{saleNo}</if>
  95. <if test="saleCustomNo != null and saleCustomNo != ''">and sale_custom_no = #{saleCustomNo}</if>
  96. <if test="saleDate != null and saleDate != ''">and sale_date = #{saleDate}</if>
  97. <if test="saleEstimatedTime != null ">and sale_estimated_time = #{saleEstimatedTime}</if>
  98. <if test="saleLeadTime != null and saleLeadTime != ''">and sale_lead_time = #{saleLeadTime}</if>
  99. <if test="saleProductsNo != null and saleProductsNo != ''">and sale_products_no = #{saleProductsNo}</if>
  100. <if test="saleAmounts != null ">and sale_amounts = #{saleAmounts}</if>
  101. <if test="saleAmountInWords != null and saleAmountInWords != ''">and sale_amount_in_words =
  102. #{saleAmountInWords}
  103. </if>
  104. <if test="salePayType != null and salePayType != ''">and sale_pay_type = #{salePayType}</if>
  105. <if test="saleOrderEstimatedTime != null and saleOrderEstimatedTime != ''">and sale_order_estimated_time =
  106. #{saleOrderEstimatedTime}
  107. </if>
  108. <if test="saleOrderTechnologyNo != null and saleOrderTechnologyNo != ''">and sale_order_technology_no =
  109. #{saleOrderTechnologyNo}
  110. </if>
  111. <if test="salesman != null and salesman != ''">and salesman = #{salesman}</if>
  112. <if test="saleLeader != null and saleLeader != ''">and sale_leader = #{saleLeader}</if>
  113. <if test="finance != null and finance != ''">and finance = #{finance}</if>
  114. <if test="production != null and production != ''">and production = #{production}</if>
  115. <if test="saleApprover != null and saleApprover != ''">and sale_approver = #{saleApprover}</if>
  116. <if test="status != null and status != ''">and status = #{status}</if>
  117. <if test="orderType != null and orderType != ''">and order_type = #{orderType}</if>
  118. <if test="createById != null ">and create_by_id = #{createById}</if>
  119. <if test="updateById != null ">and update_by_id = #{updateById}</if>
  120. <if test="taskProcessKey != null and taskProcessKey != ''">and task_process_key = #{taskProcessKey}</if>
  121. <if test="taskNodeKey != null and taskNodeKey != ''">and task_node_key = #{taskNodeKey}</if>
  122. <if test="processKey != null and processKey != ''">and process_key = #{processKey}</if>
  123. <if test="earnestMoney != null and earnestMoney != ''">and earnest_money = #{earnestMoney}</if>
  124. <if test="deliveryDate != null and deliveryDate != ''">and delivery_date = #{deliveryDate}</if>
  125. </select>
  126. <select id="selectSaleOrderById" parameterType="Long" resultMap="SaleOrderResult">
  127. <include refid="selectSaleOrderVo"/>
  128. where id = #{id}
  129. </select>
  130. <select id="selectSaleOrderByNo" parameterType="string" resultType="map">
  131. SELECT sale.sale_no AS saleNo,
  132. cus.custom_name AS customName,
  133. tz.delivery_date AS deliveryDate,
  134. tz.dispatch_note_remark AS dispatchNoteRemark
  135. FROM {DBNAME}.sale_order AS sale
  136. LEFT JOIN {DBNAME}.customer AS cus ON sale.sale_custom_no = cus.custom_no
  137. LEFT JOIN {DBNAME}.product_invoice AS tz ON tz.sale_order_no = sale.sale_no
  138. WHERE
  139. sale.sale_no = #{saleOrderNo}
  140. </select>
  141. <insert id="insertSaleOrder" parameterType="com.zkqy.business.domain.SaleOrder" useGeneratedKeys="true"
  142. keyProperty="id">
  143. insert into {DBNAME}.sale_order
  144. <trim prefix="(" suffix=")" suffixOverrides=",">
  145. <if test="saleNo != null">sale_no,</if>
  146. <if test="saleCustomNo != null">sale_custom_no,</if>
  147. <if test="saleDate != null">sale_date,</if>
  148. <if test="saleEstimatedTime != null">sale_estimated_time,</if>
  149. <if test="saleLeadTime != null">sale_lead_time,</if>
  150. <if test="saleProductsNo != null">sale_products_no,</if>
  151. <if test="saleAmounts != null">sale_amounts,</if>
  152. <if test="saleAmountInWords != null">sale_amount_in_words,</if>
  153. <if test="salePayType != null">sale_pay_type,</if>
  154. <if test="saleOrderEstimatedTime != null">sale_order_estimated_time,</if>
  155. <if test="saleOrderTechnologyNo != null">sale_order_technology_no,</if>
  156. <if test="salesman != null">salesman,</if>
  157. <if test="saleLeader != null">sale_leader,</if>
  158. <if test="finance != null">finance,</if>
  159. <if test="production != null">production,</if>
  160. <if test="saleApprover != null">sale_approver,</if>
  161. <if test="status != null">status,</if>
  162. <if test="orderType != null">order_type,</if>
  163. <if test="remark != null">remark,</if>
  164. <if test="createById != null">create_by_id,</if>
  165. <if test="createBy != null">create_by,</if>
  166. <if test="createTime != null">create_time,</if>
  167. <if test="taskProcessKey != null">task_process_key,</if>
  168. <if test="taskNodeKey != null">task_node_key,</if>
  169. <if test="processKey != null">process_key,</if>
  170. <if test="earnestMoney != null">earnest_money,</if>
  171. <if test="deliveryDate != null">delivery_date,</if>
  172. <if test="lotNumber != null">lot_number,</if>
  173. <if test="completionTime != null">completion_time,</if>
  174. <if test="processingUnit != null">processing_unit,</if>
  175. <if test="contactPerson != null">contact_person,</if>
  176. <if test="address != null">address,</if>
  177. <if test="materialType != null">material_type,</if>
  178. <if test="outsourceSalePayType != null">outsource_sale_pay_type,</if>
  179. del_flag
  180. </trim>
  181. <trim prefix="values (" suffix=")" suffixOverrides=",">
  182. <if test="saleNo != null">#{saleNo},</if>
  183. <if test="saleCustomNo != null">#{saleCustomNo},</if>
  184. <if test="saleDate != null">#{saleDate},</if>
  185. <if test="saleEstimatedTime != null">#{saleEstimatedTime},</if>
  186. <if test="saleLeadTime != null">#{saleLeadTime},</if>
  187. <if test="saleProductsNo != null">#{saleProductsNo},</if>
  188. <if test="saleAmounts != null">#{saleAmounts},</if>
  189. <if test="saleAmountInWords != null">#{saleAmountInWords},</if>
  190. <if test="salePayType != null">#{salePayType},</if>
  191. <if test="saleOrderEstimatedTime != null">#{saleOrderEstimatedTime},</if>
  192. <if test="saleOrderTechnologyNo != null">#{saleOrderTechnologyNo},</if>
  193. <if test="salesman != null">#{salesman},</if>
  194. <if test="saleLeader != null">#{saleLeader},</if>
  195. <if test="finance != null">#{finance},</if>
  196. <if test="production != null">#{production},</if>
  197. <if test="saleApprover != null">#{saleApprover},</if>
  198. <if test="status != null">#{status},</if>
  199. <if test="orderType != null">#{orderType},</if>
  200. <if test="remark != null">#{remark},</if>
  201. <if test="createById != null">#{createById},</if>
  202. <if test="createBy != null">#{createBy},</if>
  203. <if test="createTime != null">#{createTime},</if>
  204. <if test="taskProcessKey != null">#{taskProcessKey},</if>
  205. <if test="taskNodeKey != null">#{taskNodeKey},</if>
  206. <if test="processKey != null">#{processKey},</if>
  207. <if test="earnestMoney != null">#{earnestMoney},</if>
  208. <if test="deliveryDate != null">#{deliveryDate},</if>
  209. <if test="lotNumber != null">#{lotNumber},</if>
  210. <if test="completionTime != null">#{completionTime},</if>
  211. <if test="processingUnit != null">#{processingUnit},</if>
  212. <if test="contactPerson != null">#{contactPerson},</if>
  213. <if test="address != null">#{address},</if>
  214. <if test="materialType != null">#{materialType},</if>
  215. <if test="outsourceSalePayType != null">#{outsourceSalePayType},</if>
  216. '0'
  217. </trim>
  218. </insert>
  219. <update id="updateSaleOrder" parameterType="com.zkqy.business.domain.SaleOrder">
  220. update {DBNAME}.sale_order
  221. <trim prefix="SET" suffixOverrides=",">
  222. <if test="saleNo != null">sale_no = #{saleNo},</if>
  223. <if test="saleCustomNo != null">sale_custom_no = #{saleCustomNo},</if>
  224. <if test="saleDate != null">sale_date = #{saleDate},</if>
  225. <if test="saleEstimatedTime != null">sale_estimated_time = #{saleEstimatedTime},</if>
  226. <if test="saleLeadTime != null">sale_lead_time = #{saleLeadTime},</if>
  227. <if test="saleProductsNo != null">sale_products_no = #{saleProductsNo},</if>
  228. <if test="saleAmounts != null">sale_amounts = #{saleAmounts},</if>
  229. <if test="saleAmountInWords != null">sale_amount_in_words = #{saleAmountInWords},</if>
  230. <if test="salePayType != null">sale_pay_type = #{salePayType},</if>
  231. <if test="saleOrderEstimatedTime != null">sale_order_estimated_time = #{saleOrderEstimatedTime},</if>
  232. <if test="saleOrderTechnologyNo != null">sale_order_technology_no = #{saleOrderTechnologyNo},</if>
  233. <if test="salesman != null">salesman = #{salesman},</if>
  234. <if test="saleLeader != null">sale_leader = #{saleLeader},</if>
  235. <if test="finance != null">finance = #{finance},</if>
  236. <if test="production != null">production = #{production},</if>
  237. <if test="saleApprover != null">sale_approver = #{saleApprover},</if>
  238. <if test="status != null">status = #{status},</if>
  239. <if test="orderType != null">order_type = #{orderType},</if>
  240. <if test="remark != null">remark = #{remark},</if>
  241. <if test="createById != null">create_by_id = #{createById},</if>
  242. <if test="updateById != null">update_by_id = #{updateById},</if>
  243. <if test="updateBy != null">update_by = #{updateBy},</if>
  244. <if test="updateTime != null">update_time = #{updateTime},</if>
  245. <if test="taskProcessKey != null">task_process_key = #{taskProcessKey},</if>
  246. <if test="taskNodeKey != null">task_node_key = #{taskNodeKey},</if>
  247. <if test="processKey != null">process_key = #{processKey},</if>
  248. <if test="earnestMoney != null">earnest_money = #{earnestMoney},</if>
  249. <if test="deliveryDate != null">delivery_date = #{deliveryDate},</if>
  250. <if test="lotNumber != null">lot_number = #{lotNumber},</if>
  251. <if test="completionTime != null">completion_time = #{completionTime},</if>
  252. <if test="processingUnit != null">processing_unit = #{processingUnit},</if>
  253. <if test="contactPerson != null">contact_person = #{contactPerson},</if>
  254. <if test="address != null">address = #{address},</if>
  255. <if test="materialType != null">material_type = #{materialType},</if>
  256. <if test="outsourceSalePayType != null">outsource_sale_pay_type = #{outsourceSalePayType},</if>
  257. </trim>
  258. where id = #{id}
  259. </update>
  260. <delete id="deleteSaleOrderById" parameterType="Long">
  261. delete
  262. from sale_order
  263. where id = #{id}
  264. </delete>
  265. <update id="deleteSaleOrderByIds" parameterType="String">
  266. update {DBNAME}.sale_order set del_flag = '2' where id in
  267. <foreach item="id" collection="list" open="(" separator="," close=")">
  268. #{id}
  269. </foreach>
  270. </update>
  271. <select id="selectSaleOrderBySaleNo" parameterType="String" resultMap="SaleOrderResult">
  272. <include refid="selectSaleOrderVo"/>
  273. where sale_no = #{saleNo} and del_flag = '0'
  274. </select>
  275. <update id="batchUpdateSaleOrder" parameterType="com.zkqy.business.domain.vo.SaleOrderVO">
  276. update {DBNAME}.sale_order
  277. <trim prefix="SET" suffixOverrides=",">
  278. <if test="salesman != null">salesman = #{salesman},</if>
  279. <if test="saleLeader != null">sale_leader = #{saleLeader},</if>
  280. <if test="finance != null">finance = #{finance},</if>
  281. <if test="production != null">production = #{production},</if>
  282. <if test="saleApprover != null">sale_approver = #{saleApprover},</if>
  283. <if test="status != null">status = #{status},</if>
  284. <if test="orderType != null">order_type = #{orderType},</if>
  285. </trim>
  286. where id in
  287. <foreach item="id" collection="idList" open="(" separator="," close=")">
  288. #{id}
  289. </foreach>
  290. </update>
  291. <update id="updateSaleOrderBatch">
  292. <foreach collection="list" item="item" index="index" open="" close="" separator=";">
  293. update {DBNAME}.sale_order
  294. <set>
  295. lot_number=#{item.lotNumber}
  296. </set>
  297. where sale_no =#{item.saleNo}
  298. </foreach>
  299. </update>
  300. <update id="updateSaleOrderBySaleNo">
  301. update {DBNAME}.sale_order
  302. <trim prefix="SET" suffixOverrides=",">
  303. <if test="lotNumber != null">lot_number = #{lotNumber},</if>
  304. <if test="status != null">status = #{status},</if>
  305. <if test="oldInventoryState != null">old_inventory_state = #{oldInventoryState},</if>
  306. </trim>
  307. where sale_no = #{saleNo}
  308. </update>
  309. <select id="selectCustomerIdBySaleNo" resultType="long">
  310. SELECT c.id
  311. FROM {DBNAME}.sale_order so
  312. LEFT JOIN {DBNAME}.customer c
  313. ON so.sale_custom_no = c.custom_no
  314. WHERE
  315. so.sale_no = #{saleNo}
  316. AND so.del_flag = '0'
  317. AND c.del_flag = '0'
  318. </select>
  319. <select id="saleOrderList" resultType="com.zkqy.business.domain.vo.SaleOrderVO">
  320. SELECT
  321. so.id,
  322. so.sale_no,
  323. so.sale_date,
  324. c.custom_name,
  325. so.sale_order_estimated_time,
  326. so.sale_lead_time,
  327. so.sale_amount_in_words,
  328. so.sale_pay_type,
  329. so.salesman,
  330. so.sale_leader,
  331. so.finance,
  332. so.production,
  333. so.sale_approver,
  334. so.status,
  335. so.order_type,
  336. so.delivery_date,
  337. so.remark,
  338. so.old_inventory_state
  339. FROM
  340. {DBNAME}.sale_order so left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no
  341. where so.del_flag = '0' and c.del_flag = '0'
  342. <if test="queryParam != null and queryParam != ''">
  343. AND CONCAT(
  344. IFNULL( so.sale_no, '' ),
  345. IFNULL( c.custom_name, '' ),
  346. IFNULL( so.sale_lead_time, '' ))
  347. LIKE concat('%', #{queryParam}, '%')
  348. </if>
  349. <if test="createById != null ">and so.create_by_id = #{createById}</if>
  350. <if test="orderType != null">and so.order_type = #{orderType}</if>
  351. <choose>
  352. <when test="saleOrderTechnologyNo =='retailOrder'">
  353. and so.sale_order_technology_no = 'retailOrder'
  354. </when>
  355. <when test="saleOrderTechnologyNo =='processingOrder'">
  356. and so.sale_order_technology_no = 'processingOrder'
  357. </when>
  358. <otherwise>
  359. and so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  360. </otherwise>
  361. </choose>
  362. <if test="status!=null and status!='' and status=='100'">
  363. and so.status!=6
  364. </if>
  365. <if test="status!=null and status!='' and status=='200'">
  366. and so.status=6
  367. </if>
  368. order by so.id desc
  369. </select>
  370. <select id="selectOutsourceOrderList" resultType="com.zkqy.business.domain.vo.SaleOrderVO">
  371. <include refid="selectSaleOrderVo"/>
  372. where del_flag = '0' and sale_order_technology_no = 'outsourceOrder'
  373. <if test="saleNo != null and saleNo != ''">and sale_no = #{saleNo}</if>
  374. <if test="salesman != null and salesman != ''">and salesman = #{salesman}</if>
  375. <if test="processingUnit != null and processingUnit != ''">and processing_unit = #{processingUnit}</if>
  376. <if test="contactPerson != null and contactPerson != ''">and contact_person = #{contactPerson}</if>
  377. <if test="address != null and address != ''">and address = #{address}</if>
  378. <if test="createById != null ">and create_by_id = #{createById}</if>
  379. <if test="orderType != null">and order_type = #{orderType}</if>
  380. order by id desc
  381. </select>
  382. <update id="deleteSaleOrderBySaleNo">
  383. update {DBNAME}.sale_order set del_flag = '2' where sale_no in
  384. <foreach collection="list" item="saleNo" open="(" close=")" separator=",">
  385. #{saleNo}
  386. </foreach>
  387. </update>
  388. <select id="printOutsourceOrderList" resultType="com.zkqy.business.domain.vo.SaleProductsVo">
  389. select
  390. a.* ,
  391. b.productUnitPrice
  392. from
  393. (
  394. SELECT
  395. p.id as productId,
  396. p.product_name as productName,
  397. p.product_specifications as productSpecifications,
  398. por.lot_num as lotNumber,
  399. count(box_num) as boxNum,
  400. TRUNCATE(sum(por.suttle),2) as productNumber,
  401. por.product_colour as productColour,
  402. por.notice_number as noticeNumber,
  403. pi.sale_order_no as saleNo,
  404. p.product_no as productNo,
  405. por.levels as productLevel
  406. FROM
  407. {DBNAME}.product_outbound_record por
  408. left join {DBNAME}.production p on p.id = por.product_id
  409. LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number
  410. WHERE
  411. por.del_flag = '0'
  412. AND pi.notice_number = #{noticeNumber}
  413. and por.id not in
  414. (select outbound_record_id from {DBNAME}.product_outbound_record_batch where del_flag = '0' and notice_number = #{noticeNumber})
  415. group by por.product_id,por.levels,por.lot_num,por.product_colour
  416. ) as a left join
  417. (
  418. SELECT
  419. sp.product_no as productNo,
  420. sp.product_unit_price as productUnitPrice,
  421. CONCAT(m.materie_encoding,m.materie_color_number) as productColour
  422. FROM
  423. {DBNAME}.sale_order so
  424. LEFT JOIN {DBNAME}.sale_products sp ON so.sale_no = sp.sale_order_no
  425. AND sp.del_flag = '0'
  426. left join {DBNAME}.production p on sp.product_no = p.product_no and p.del_flag = '0'
  427. left join {DBNAME}.materiel m on m.materiel_code = sp.colour_number and m.del_flag = '0'
  428. where so.del_flag = '0'
  429. and so.sale_no = #{saleNo}
  430. ) as b on a.productNo = b.productNo and a.productColour = b.productColour
  431. </select>
  432. <!-- <select id="aa">-->
  433. <!-- SELECT-->
  434. <!-- so.sale_custom_no,-->
  435. <!-- COUNT(*) AS order_count,-->
  436. <!-- s1.weight-->
  437. <!-- FROM-->
  438. <!-- sale_order so-->
  439. <!-- LEFT JOIN (-->
  440. <!-- SELECT TRUNCATE-->
  441. <!-- ( sum( sp.product_number ), 2 ) AS weight,-->
  442. <!-- so.sale_custom_no-->
  443. <!-- FROM-->
  444. <!-- sale_products sp-->
  445. <!-- LEFT JOIN sale_order so ON sp.sale_order_no = so.sale_no-->
  446. <!-- AND so.del_flag = '0'-->
  447. <!-- AND sale_no IN (-->
  448. <!-- SELECT-->
  449. <!-- sale_no-->
  450. <!-- FROM-->
  451. <!-- sale_order-->
  452. <!-- WHERE-->
  453. <!-- sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )-->
  454. <!-- AND sale_custom_no IN ( 16, 15, 14 ))-->
  455. <!-- WHERE-->
  456. <!-- sp.del_flag = '0'-->
  457. <!-- GROUP BY-->
  458. <!-- so.sale_custom_no-->
  459. <!-- ) s1 ON so.sale_custom_no = s1.sale_custom_no-->
  460. <!-- WHERE-->
  461. <!-- so.del_flag = '0'-->
  462. <!-- GROUP BY-->
  463. <!-- so.sale_custom_no-->
  464. <!-- ORDER BY-->
  465. <!-- order_count DESC-->
  466. <!-- LIMIT 10;-->
  467. <!-- </select>-->
  468. <select id="saleOrderTop10List" parameterType="string" resultType="map">
  469. SELECT
  470. so.sale_custom_no as customerNo,
  471. c.custom_name as customerName,
  472. COUNT(*) AS orderCount,
  473. s1.weight
  474. FROM
  475. {DBNAME}.sale_order so
  476. LEFT JOIN
  477. (
  478. SELECT TRUNCATE( sum( sp.product_number ), 2 ) AS weight,so.sale_custom_no FROM {DBNAME}.sale_products sp LEFT JOIN {DBNAME}.sale_order so ON sp.sale_order_no = so.sale_no AND so.del_flag ='0'
  479. AND sale_no IN (SELECT sale_no FROM {DBNAME}.sale_order WHERE sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' ) and del_flag = '0' AND sale_custom_no IN
  480. <foreach collection="list" item="customerNo" open="(" separator="," close=")">
  481. #{customerNo}
  482. </foreach>
  483. ) WHERE
  484. sp.del_flag = '0' GROUP BY so.sale_custom_no
  485. ) s1 ON so.sale_custom_no = s1.sale_custom_no
  486. left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no and c.del_flag = '0'
  487. WHERE
  488. so.del_flag = '0' and so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  489. GROUP BY
  490. so.sale_custom_no
  491. ORDER BY
  492. orderCount DESC
  493. LIMIT 10
  494. </select>
  495. <select id="saleRetailOrderTop10List" parameterType="string" resultType="map">
  496. SELECT
  497. so.sale_custom_no as customerNo,
  498. c.custom_name as customerName,
  499. COUNT(*) AS orderCount,
  500. sum(por.suttle) as weight
  501. FROM
  502. {DBNAME}.sale_order so
  503. LEFT JOIN {DBNAME}.product_invoice pi ON so.sale_no = pi.sale_order_no AND pi.del_flag = '0'
  504. left join {DBNAME}.product_outbound_record por on por.notice_number = pi.notice_number AND por.del_flag = '0'
  505. left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no and c.del_flag = '0'
  506. WHERE
  507. so.sale_order_technology_no = 'retailOrder'
  508. AND so.del_flag = '0'
  509. and so.`status` = '6'
  510. AND so.sale_custom_no IN
  511. <foreach collection="list" item="customerNo" open="(" separator="," close=")">
  512. #{customerNo}
  513. </foreach>
  514. group by so.sale_custom_no
  515. </select>
  516. <!-- <select id="saleRetailOrderTop10List" parameterType="string" resultType="map">-->
  517. <!-- SELECT-->
  518. <!-- so.sale_custom_no as customerNo,-->
  519. <!-- c.custom_name as customerName,-->
  520. <!-- COUNT(*) AS orderCount,-->
  521. <!-- por.weight-->
  522. <!-- FROM-->
  523. <!-- {DBNAME}.sale_order so left join {DBNAME}.product_invoice pi on so.sale_no = pi.sale_order_no-->
  524. <!-- left join-->
  525. <!-- (-->
  526. <!-- select sum(por.suttle) as weight,por.notice_number from {DBNAME}.product_outbound_record por-->
  527. <!-- left join {DBNAME}.product_invoice pi on por.notice_number = pi.notice_number and pi.del_flag = '0'-->
  528. <!-- where por.del_flag = '0' group by pi.customer_id-->
  529. <!-- ) as por on por.notice_number = pi.notice_number-->
  530. <!-- left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no and c.del_flag = '0'-->
  531. <!-- WHERE-->
  532. <!-- pi.del_flag = '0'-->
  533. <!-- and so.sale_order_technology_no = 'retailOrder'-->
  534. <!-- AND so.del_flag = '0'-->
  535. <!-- and so.`status` = '6'-->
  536. <!-- AND so.sale_custom_no IN-->
  537. <!-- <foreach collection="list" item="customerNo" open="(" separator="," close=")">-->
  538. <!-- #{customerNo}-->
  539. <!-- </foreach>-->
  540. <!-- group by so.sale_custom_no-->
  541. <!-- </select>-->
  542. <select id="saleOrderTop10CustomerNoList" resultType="string">
  543. SELECT
  544. sale_custom_no as customerNo
  545. FROM
  546. {DBNAME}.sale_order
  547. WHERE
  548. del_flag = '0'
  549. GROUP BY
  550. sale_custom_no
  551. ORDER BY
  552. COUNT(*) DESC
  553. LIMIT 10
  554. </select>
  555. <select id="selectSaleOrderCountByCustomerNo" resultType="map">
  556. SELECT
  557. COUNT(*) AS orderCount,
  558. so.sale_custom_no as customerNo,
  559. c.custom_name as customerName
  560. FROM
  561. {DBNAME}.sale_order so left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no and c.del_flag = '0'
  562. WHERE
  563. so.del_flag = '0'
  564. AND so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' ) and so.sale_custom_no = #{customerNo}
  565. <if test="timeType == 'days'">
  566. and DATE( so.sale_date ) = #{timeParam}
  567. </if>
  568. <if test="timeType == 'months'">
  569. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  570. </if>
  571. <if test="timeType == 'quarters'">
  572. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  573. </if>
  574. <if test="timeType == 'years'">
  575. and YEAR ( so.sale_date ) = #{timeParam}
  576. </if>
  577. -- group by so.sale_custom_no
  578. </select>
  579. <select id="selectRetailOrderCountByCustomerNo" resultType="map">
  580. SELECT
  581. COUNT(*) AS orderCount,
  582. so.sale_custom_no AS customerNo,
  583. c.custom_name as customerName
  584. FROM
  585. {DBNAME}.sale_order so left join {DBNAME}.customer c on so.sale_custom_no = c.custom_no and c.del_flag = '0'
  586. WHERE
  587. so.del_flag = '0'
  588. AND so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  589. and so.`status` = '6'
  590. and so.sale_custom_no = #{customerNo}
  591. <if test="timeType == 'days'">
  592. and DATE( so.sale_date ) = #{timeParam}
  593. </if>
  594. <if test="timeType == 'months'">
  595. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  596. </if>
  597. <if test="timeType == 'quarters'">
  598. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  599. </if>
  600. <if test="timeType == 'years'">
  601. and YEAR ( so.sale_date ) = #{timeParam}
  602. </if>
  603. -- group by so.sale_custom_no
  604. </select>
  605. <select id="selectSaleOrderProductCountByCustomerNo" resultType="map">
  606. SELECT
  607. p.id as productId,
  608. p.product_name as productName,
  609. TRUNCATE(sum(sp.product_number),2) as weight,
  610. CONCAT(m.materie_encoding,m.materie_color_number) as productColour,
  611. so.sale_custom_no as customerNo
  612. FROM
  613. {DBNAME}.sale_order so
  614. LEFT JOIN {DBNAME}.sale_products sp ON so.sale_no = sp.sale_order_no AND sp.del_flag = '0'
  615. left join {DBNAME}.production p on sp.product_no = p.product_no and p.del_flag = '0'
  616. left join {DBNAME}.materiel m on m.materiel_code = sp.colour_number and m.del_flag = '0'
  617. where so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' ) and so.del_flag = '0' and so.sale_custom_no = #{customerNo}
  618. <if test="timeType == 'days'">
  619. and DATE( so.sale_date ) = #{timeParam}
  620. </if>
  621. <if test="timeType == 'months'">
  622. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  623. </if>
  624. <if test="timeType == 'quarters'">
  625. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  626. </if>
  627. <if test="timeType == 'years'">
  628. and YEAR ( so.sale_date ) = #{timeParam}
  629. </if>
  630. group by sp.product_no,sp.colour_number
  631. -- ,so.sale_custom_no
  632. </select>
  633. <select id="selectRetailOrderProductCountByCustomerNo" resultType="map">
  634. SELECT
  635. por.product_id as productId,
  636. p.product_name as productName,
  637. TRUNCATE(sum(por.suttle),2) as weight,
  638. por.product_colour as productColour,
  639. so.sale_custom_no as customerNo
  640. FROM
  641. {DBNAME}.sale_order so
  642. LEFT JOIN {DBNAME}.product_invoice pi ON so.sale_no = pi.sale_order_no and pi.del_flag = '0'
  643. left join {DBNAME}.product_outbound_record por on por.notice_number = pi.notice_number and por.del_flag = '0'
  644. left join {DBNAME}.production p on p.id = por.product_id
  645. where so.sale_order_technology_no = 'retailOrder' and so.del_flag = '0' and so.`status` = '6' and so.sale_custom_no = #{customerNo}
  646. <if test="timeType == 'days'">
  647. and DATE( so.sale_date ) = #{timeParam}
  648. </if>
  649. <if test="timeType == 'months'">
  650. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  651. </if>
  652. <if test="timeType == 'quarters'">
  653. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  654. </if>
  655. <if test="timeType == 'years'">
  656. and YEAR ( so.sale_date ) = #{timeParam}
  657. </if>
  658. group by por.product_id,por.product_colour
  659. -- ,so.sale_custom_no
  660. </select>
  661. <select id="selectMaxProductCountByproductType" resultType="map">
  662. SELECT
  663. productIno.*,
  664. TRUNCATE(sum(weight1),2) as weight
  665. FROM
  666. (
  667. SELECT
  668. so.sale_no as saleNo,
  669. por.product_id as productId,
  670. p.product_name as productName,
  671. TRUNCATE(sum(por.suttle),2) as weight1,
  672. por.product_colour as productColour,
  673. DATE( so.sale_date ) AS days,
  674. DATE_FORMAT( so.sale_date, '%Y-%m' ) AS months,
  675. CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) AS quarters,
  676. YEAR ( so.sale_date ) AS years
  677. FROM
  678. {DBNAME}.sale_order so
  679. LEFT JOIN {DBNAME}.product_invoice pi ON so.sale_no = pi.sale_order_no AND pi.del_flag = '0'
  680. left join {DBNAME}.product_outbound_record por on por.notice_number = pi.notice_number and por.del_flag = '0'
  681. left join {DBNAME}.production p on p.id = por.product_id
  682. where so.sale_order_technology_no = 'retailOrder' and so.del_flag = '0' and so.`status` = '6' and p.product_type = #{productType}
  683. group by por.product_id,por.product_colour,por.notice_number
  684. UNION ALL
  685. SELECT
  686. sp.sale_order_no as saleNo,
  687. p.id as productId,
  688. p.product_name as productName,
  689. sp.product_number as weight1,
  690. CONCAT(m.materie_encoding,m.materie_color_number) as productColour,
  691. DATE( so.sale_date ) AS days,
  692. DATE_FORMAT( so.sale_date, '%Y-%m' ) AS months,
  693. CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) AS quarters,
  694. YEAR ( so.sale_date ) AS years
  695. FROM
  696. {DBNAME}.sale_order so left join {DBNAME}.sale_products sp on so.sale_no = sp.sale_order_no and sp.del_flag = '0'
  697. left join {DBNAME}.production p on sp.product_no = p.product_no and p.del_flag = '0'
  698. left join {DBNAME}.materiel m on m.materiel_code = sp.colour_number and m.del_flag = '0'
  699. WHERE
  700. so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  701. AND so.del_flag = '0'
  702. AND so.`status` = '6' and p.product_type = #{productType}
  703. ) as productIno
  704. <where>
  705. <if test="timeType == 'days'">
  706. days = #{timeParam}
  707. </if>
  708. <if test="timeType == 'months'">
  709. months = #{timeParam}
  710. </if>
  711. <if test="timeType == 'quarters'">
  712. quarters = #{timeParam}
  713. </if>
  714. <if test="timeType == 'years'">
  715. years = #{timeParam}
  716. </if>
  717. </where>
  718. group by productId,productColour
  719. ORDER BY weight DESC
  720. LIMIT 10;
  721. </select>
  722. <select id="saleOrderProductCountBySalesman" resultType="map">
  723. SELECT
  724. TRUNCATE( sum( sp.product_number ), 2 ) AS weight,
  725. so.create_by_id as saleId
  726. FROM {DBNAME}.sale_products sp LEFT JOIN {DBNAME}.sale_order so ON sp.sale_order_no = so.sale_no AND so.del_flag ='0'
  727. WHERE sp.del_flag = '0' AND so.sale_no
  728. IN (SELECT sale_no FROM {DBNAME}.sale_order WHERE sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' ) and del_flag = '0' )
  729. <if test="timeType == 'days'">
  730. and DATE( so.sale_date ) = #{timeParam}
  731. </if>
  732. <if test="timeType == 'months'">
  733. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  734. </if>
  735. <if test="timeType == 'quarters'">
  736. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  737. </if>
  738. <if test="timeType == 'years'">
  739. and YEAR ( so.sale_date ) = #{timeParam}
  740. </if>
  741. group by so.create_by_id
  742. </select>
  743. <select id="retailOrderProductCountBySalesman" resultType="map">
  744. SELECT
  745. TRUNCATE(sum( por.suttle ),2) AS weight,
  746. so.create_by_id as saleId
  747. FROM
  748. {DBNAME}.product_outbound_record por
  749. LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number AND pi.del_flag = '0'
  750. left join {DBNAME}.sale_order so on pi.sale_order_no = so.sale_no and so.del_flag = '0' and so.`status` = '6' and so.sale_order_technology_no = 'retailOrder'
  751. WHERE
  752. por.del_flag = '0'
  753. <if test="timeType == 'days'">
  754. and DATE( so.sale_date ) = #{timeParam}
  755. </if>
  756. <if test="timeType == 'months'">
  757. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  758. </if>
  759. <if test="timeType == 'quarters'">
  760. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  761. </if>
  762. <if test="timeType == 'years'">
  763. and YEAR ( so.sale_date ) = #{timeParam}
  764. </if>
  765. GROUP BY
  766. so.create_by_id
  767. </select>
  768. <select id="saleOrderCountBySalesman" resultType="map">
  769. SELECT
  770. count( 1 ) as orderCount,
  771. create_by_id as saleId
  772. FROM
  773. {DBNAME}.sale_order
  774. WHERE
  775. del_flag = '0'
  776. AND sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  777. <if test="timeType == 'days'">
  778. and DATE( sale_date ) = #{timeParam}
  779. </if>
  780. <if test="timeType == 'months'">
  781. and DATE_FORMAT( sale_date, '%Y-%m' ) = #{timeParam}
  782. </if>
  783. <if test="timeType == 'quarters'">
  784. and CONCAT(YEAR ( sale_date ),'-',QUARTER ( sale_date )) = #{timeParam}
  785. </if>
  786. <if test="timeType == 'years'">
  787. and YEAR ( sale_date ) = #{timeParam}
  788. </if>
  789. GROUP BY
  790. create_by_id
  791. </select>
  792. <select id="retailOrderCountBySalesman" resultType="map">
  793. SELECT
  794. count( 1 ) as orderCount,
  795. create_by_id as saleId
  796. FROM
  797. {DBNAME}.sale_order
  798. WHERE
  799. del_flag = '0'
  800. AND `status` = '6'
  801. AND sale_order_technology_no = 'retailOrder'
  802. <if test="timeType == 'days'">
  803. and DATE( sale_date ) = #{timeParam}
  804. </if>
  805. <if test="timeType == 'months'">
  806. and DATE_FORMAT( sale_date, '%Y-%m' ) = #{timeParam}
  807. </if>
  808. <if test="timeType == 'quarters'">
  809. and CONCAT(YEAR ( sale_date ),'-',QUARTER ( sale_date )) = #{timeParam}
  810. </if>
  811. <if test="timeType == 'years'">
  812. and YEAR ( sale_date ) = #{timeParam}
  813. </if>
  814. GROUP BY
  815. create_by_id
  816. </select>
  817. <select id="saleOrderProductWeightByProductType" resultType="map">
  818. SELECT
  819. TRUNCATE(sum(sp.product_number),2) as weight,
  820. p.product_type as productType
  821. FROM
  822. {DBNAME}.sale_order so left join {DBNAME}.sale_products sp on so.sale_no = sp.sale_order_no and sp.del_flag = '0'
  823. left join {DBNAME}.production p on p.product_no = sp.product_no and p.del_flag = '0'
  824. WHERE
  825. so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  826. AND so.del_flag = '0'
  827. AND so.`status` = '6'
  828. group by p.product_type
  829. </select>
  830. <select id="retailOrderProductWeightByProductType" resultType="map">
  831. SELECT
  832. TRUNCATE(sum( por.suttle ),2) AS weight,
  833. p.product_type as productType
  834. FROM
  835. {DBNAME}.product_outbound_record por
  836. LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number AND pi.del_flag = '0'
  837. left join {DBNAME}.sale_order so on pi.sale_order_no = so.sale_no and so.del_flag = '0' and so.`status` = '6' and so.sale_order_technology_no = 'retailOrder'
  838. left join {DBNAME}.production p on p.id = por.product_id
  839. where por.del_flag = '0'
  840. group by p.product_type
  841. </select>
  842. <select id="saleOrderSaleVolume" resultType="map">
  843. SELECT
  844. IFNULL(TRUNCATE( sum( sp.product_number ), 2 ),0) AS weight
  845. FROM
  846. {DBNAME}.sale_order so left join {DBNAME}.sale_products sp on so.sale_no = sp.sale_order_no and sp.del_flag = '0'
  847. left join {DBNAME}.production p on p.product_no = sp.product_no and p.del_flag = '0'
  848. WHERE
  849. so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  850. AND so.del_flag = '0'
  851. AND so.`status` = '6'
  852. and p.product_type = #{productType}
  853. <if test="timeType == 'days'">
  854. and DATE( so.sale_date ) = #{timeParam}
  855. </if>
  856. <if test="timeType == 'months'">
  857. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  858. </if>
  859. <if test="timeType == 'quarters'">
  860. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  861. </if>
  862. <if test="timeType == 'years'">
  863. and YEAR ( so.sale_date ) = #{timeParam}
  864. </if>
  865. </select>
  866. <select id="retailOrderSaleVolume" resultType="map">
  867. SELECT
  868. IFNULL(TRUNCATE( sum( por.suttle ), 2 ),0) AS weight
  869. FROM
  870. {DBNAME}.product_outbound_record por
  871. LEFT JOIN {DBNAME}.product_invoice pi ON por.notice_number = pi.notice_number AND pi.del_flag = '0'
  872. left join {DBNAME}.sale_order so on pi.sale_order_no = so.sale_no and so.del_flag = '0' and so.`status` = '6' and so.sale_order_technology_no = 'retailOrder'
  873. left join {DBNAME}.production p on p.id = por.product_id
  874. where por.del_flag = '0'
  875. and p.product_type = #{productType}
  876. <if test="timeType == 'days'">
  877. and DATE( so.sale_date ) = #{timeParam}
  878. </if>
  879. <if test="timeType == 'months'">
  880. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  881. </if>
  882. <if test="timeType == 'quarters'">
  883. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  884. </if>
  885. <if test="timeType == 'years'">
  886. and YEAR ( so.sale_date ) = #{timeParam}
  887. </if>
  888. </select>
  889. <select id="productionVolume" resultType="map">
  890. SELECT
  891. IFNULL(TRUNCATE( sum( pwr.suttle ), 2 ),0) AS weight
  892. FROM
  893. {DBNAME}.product_warehousing_record pwr
  894. left join {DBNAME}.production p ON p.id = pwr.product_id
  895. WHERE
  896. pwr.del_flag = '0'
  897. and p.product_type = #{productType}
  898. <if test="timeType == 'days'">
  899. and DATE( pwr.warehousing_time ) = #{timeParam}
  900. </if>
  901. <if test="timeType == 'months'">
  902. and DATE_FORMAT( pwr.warehousing_time, '%Y-%m' ) = #{timeParam}
  903. </if>
  904. <if test="timeType == 'quarters'">
  905. and CONCAT(YEAR ( pwr.warehousing_time ),'-',QUARTER ( pwr.warehousing_time )) = #{timeParam}
  906. </if>
  907. <if test="timeType == 'years'">
  908. and YEAR ( pwr.warehousing_time ) = #{timeParam}
  909. </if>
  910. </select>
  911. <select id="saleOrderRanking" resultType="map">
  912. select a.* from
  913. (
  914. SELECT
  915. so.sale_no as saleNo,
  916. por.product_id as productId,
  917. p.product_name as productName,
  918. TRUNCATE(sum(por.suttle),2) as weight,
  919. por.product_colour as productColour,
  920. DATE( so.sale_date ) AS days,
  921. DATE_FORMAT( so.sale_date, '%Y-%m' ) AS months,
  922. CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) AS quarters,
  923. YEAR ( so.sale_date ) AS years
  924. FROM
  925. {DBNAME}.sale_order so
  926. LEFT JOIN {DBNAME}.product_invoice pi ON so.sale_no = pi.sale_order_no AND pi.del_flag = '0'
  927. left join {DBNAME}.product_outbound_record por on por.notice_number = pi.notice_number and por.del_flag = '0'
  928. left join {DBNAME}.production p on p.id = por.product_id
  929. where so.sale_order_technology_no = 'retailOrder' and so.del_flag = '0' and so.`status` = '6'
  930. group by so.sale_no
  931. UNION ALL
  932. SELECT
  933. sp.sale_order_no as saleNo,
  934. p.id as productId,
  935. p.product_name as productName,
  936. sum(sp.product_number) as weight,
  937. CONCAT(m.materie_encoding,m.materie_color_number) as productColour,
  938. DATE( so.sale_date ) AS days,
  939. DATE_FORMAT( so.sale_date, '%Y-%m' ) AS months,
  940. CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) AS quarters,
  941. YEAR ( so.sale_date ) AS years
  942. FROM
  943. {DBNAME}.sale_order so left join {DBNAME}.sale_products sp on so.sale_no = sp.sale_order_no and sp.del_flag = '0'
  944. left join {DBNAME}.production p on sp.product_no = p.product_no and p.del_flag = '0'
  945. left join {DBNAME}.materiel m on m.materiel_code = sp.colour_number and m.del_flag = '0'
  946. WHERE
  947. so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  948. AND so.del_flag = '0'
  949. group by so.sale_no
  950. ) as a
  951. <where>
  952. <if test="timeType == 'days'">
  953. days = #{timeParam}
  954. </if>
  955. <if test="timeType == 'months'">
  956. months = #{timeParam}
  957. </if>
  958. <if test="timeType == 'quarters'">
  959. quarters = #{timeParam}
  960. </if>
  961. <if test="timeType == 'years'">
  962. years = #{timeParam}
  963. </if>
  964. </where>
  965. ORDER BY weight DESC
  966. LIMIT 10
  967. </select>
  968. <select id="retailFastSellingProduct" resultType="map">
  969. SELECT
  970. por.product_id as productId,
  971. p.product_name as productName,
  972. TRUNCATE(sum(por.suttle),2) as weight,
  973. por.product_colour as productColour,
  974. p.product_specifications as spec
  975. FROM
  976. {DBNAME}.sale_order so
  977. LEFT JOIN {DBNAME}.product_invoice pi ON so.sale_no = pi.sale_order_no AND pi.del_flag = '0'
  978. left join {DBNAME}.product_outbound_record por on por.notice_number = pi.notice_number and por.del_flag = '0'
  979. left join {DBNAME}.production p on p.id = por.product_id
  980. where so.sale_order_technology_no = 'retailOrder' and so.del_flag = '0' and so.`status` = '6'
  981. <if test="timeType == 'days'">
  982. and DATE( so.sale_date ) = #{timeParam}
  983. </if>
  984. <if test="timeType == 'months'">
  985. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  986. </if>
  987. <if test="timeType == 'quarters'">
  988. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  989. </if>
  990. <if test="timeType == 'years'">
  991. and YEAR ( so.sale_date ) = #{timeParam}
  992. </if>
  993. group by por.product_id,por.product_colour
  994. </select>
  995. <select id="saleFastSellingProduct" resultType="map">
  996. SELECT
  997. p.id as productId,
  998. p.product_name as productName,
  999. TRUNCATE(sum(sp.product_number),2) as weight,
  1000. CONCAT(m.materie_encoding,m.materie_color_number) as productColour,
  1001. p.product_specifications as spec
  1002. FROM
  1003. {DBNAME}.sale_order so
  1004. LEFT JOIN {DBNAME}.sale_products sp ON sp.sale_order_no = so.sale_no AND sp.del_flag = '0'
  1005. left join {DBNAME}.production p on sp.product_no = p.product_no and p.del_flag = '0'
  1006. left join {DBNAME}.materiel m on sp.colour_number = m.materiel_code and m.del_flag = '0'
  1007. WHERE
  1008. so.del_flag = '0'
  1009. AND so.sale_order_technology_no NOT IN ( 'retailOrder', 'outsourceOrder', 'processingOrder' )
  1010. <if test="timeType == 'days'">
  1011. and DATE( so.sale_date ) = #{timeParam}
  1012. </if>
  1013. <if test="timeType == 'months'">
  1014. and DATE_FORMAT( so.sale_date, '%Y-%m' ) = #{timeParam}
  1015. </if>
  1016. <if test="timeType == 'quarters'">
  1017. and CONCAT(YEAR ( so.sale_date ),'-',QUARTER ( so.sale_date )) = #{timeParam}
  1018. </if>
  1019. <if test="timeType == 'years'">
  1020. and YEAR ( so.sale_date ) = #{timeParam}
  1021. </if>
  1022. group by sp.product_no,sp.colour_number
  1023. </select>
  1024. </mapper>