KwoTradeOrderMapper.xml 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  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.sckw.order.dao.KwoTradeOrderMapper">
  4. <resultMap id="mainEntityMap" type="com.sckw.order.model.dto.OrderListResDTO">
  5. <id column="tOrderId" property="tOrderId"/>
  6. <result column="status" property="status"/>
  7. <result column="tOrderNo" property="tOrderNo"/>
  8. <result column="procureEntId" property="procureEntId"/>
  9. <result column="procureFirmName" property="procureFirmName"/>
  10. <result column="supplyEntId" property="supplyEntId"/>
  11. <result column="supplyFirmName" property="supplyFirmName"/>
  12. <result column="trading" property="trading"/>
  13. <result column="deliveryType" property="deliveryType"/>
  14. <result column="pickupType" property="pickupType"/>
  15. <result column="source" property="source"/>
  16. <result column="contractId" property="contractId"/>
  17. <result column="contractNo" property="contractNo"/>
  18. <result column="goodsId" property="goodsId"/>
  19. <result column="unitPrice" property="unitPrice"/>
  20. <result column="price" property="price"/>
  21. <result column="amount" property="amount"/>
  22. <result column="entrustAmount" property="entrustAmount"/>
  23. <result column="actualAmount" property="actualAmount"/>
  24. <result column="startTime" property="startTime"/>
  25. <result column="endTime" property="endTime"/>
  26. <result column="remark" property="remark"/>
  27. <result column="unit" property="unit"/>
  28. <result column="createBy" property="createBy"/>
  29. <result column="createTime" property="createTime"/>
  30. <collection property="loadAddresses" ofType="com.sckw.order.model.dto.LoadAddressDTO">
  31. <id column="loadAddressId" property="loadAddressId"/>
  32. <result column="loadName" property="loadName"/>
  33. <result column="loadCityName" property="loadCityName"/>
  34. <result column="loadDetailAddress" property="loadDetailAddress"/>
  35. </collection>
  36. <collection property="unloadAddresses" ofType="com.sckw.order.model.dto.UnloadAddressDTO">
  37. <id column="unloadAddressId" property="unloadAddressId"/>
  38. <result column="unloadName" property="unloadName"/>
  39. <result column="unloadCityName" property="unloadCityName"/>
  40. <result column="unloadDetailAddress" property="unloadDetailAddress"/>
  41. </collection>
  42. </resultMap>
  43. <sql id="Query_Column_List_Accept_Carriage">
  44. a.id AS tOrderId,
  45. a.status AS status,
  46. a.t_order_no AS tOrderNo,
  47. d.ent_id AS procureEntId,
  48. d.firm_name AS procureFirmName,
  49. e.ent_id AS supplyEntId,
  50. e.firm_name AS supplyFirmName,
  51. a.trading AS trading,
  52. a.delivery_type AS deliveryType,
  53. a.pickup_type AS pickupType,
  54. a.source AS source,
  55. f.contract_id AS contractId,
  56. f.contract_no AS contractNo,
  57. g.goods_id AS goodsId,
  58. g.unit_price AS unitPrice,
  59. a.price AS price,
  60. a.amount AS amount,
  61. a.entrust_amount AS entrustAmount,
  62. a.actual_amount AS actualAmount,
  63. a.start_time AS startTime,
  64. a.end_time AS endTime,
  65. a.remark AS remark,
  66. a.unit AS unit,
  67. a.create_by AS createBy,
  68. a.create_time AS createTime
  69. </sql>
  70. <select id="tradeOrderSelect" resultMap="mainEntityMap">
  71. SELECT
  72. <include refid="Query_Column_List_Accept_Carriage">
  73. </include>
  74. FROM kwo_trade_order a
  75. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
  76. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
  77. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  78. LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
  79. <where>
  80. a.del_flag = 0
  81. -- 数据权限匹配
  82. <choose>
  83. <when test="entIds == null or entIds.size == 0">
  84. <if test="query.isMain == 0">
  85. and (
  86. <if test="query.orderType == 1">
  87. <if test="query.entId != null">
  88. d.top_ent_id = #{query.entId}
  89. </if>
  90. <if test="authUserIds != null and authUserIds.size() > 0">
  91. and d.contacts_id in
  92. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  93. #{authUserId}
  94. </foreach>
  95. or d.create_by in
  96. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  97. #{authUserId}
  98. </foreach>
  99. </if>
  100. </if>
  101. <if test="query.orderType == 2">
  102. <if test="query.entId != null">
  103. e.top_ent_id = #{query.entId}
  104. </if>
  105. <if test="authUserIds != null and authUserIds.size() > 0">
  106. and e.contacts_id in
  107. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  108. #{authUserId}
  109. </foreach>
  110. or e.create_by in
  111. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  112. #{authUserId}
  113. </foreach>
  114. </if>
  115. </if>
  116. )
  117. </if>
  118. <if test="query.isMain == 1">
  119. and (
  120. <if test="query.orderType == 1">
  121. <if test="query.entId != null">
  122. d.top_ent_id = #{query.entId}
  123. </if>
  124. </if>
  125. <if test="query.orderType == 2">
  126. <if test="query.entId != null">
  127. e.top_ent_id = #{query.entId}
  128. </if>
  129. </if>
  130. )
  131. </if>
  132. </when>
  133. <otherwise>
  134. and a.ent_id in <foreach collection="entIds" separator="," open="(" close=")" item="item">
  135. #{item}
  136. </foreach>
  137. </otherwise>
  138. </choose>
  139. -- 状态匹配
  140. <if test="query.status != null">
  141. and a.status =#{query.status}
  142. <if test="query.status == 0">
  143. -- 草稿状态只能创建订单的人能看
  144. and a.create_by = #{query.userId}
  145. </if>
  146. </if>
  147. <if test="query.status == null">
  148. -- 非草稿状态or草稿状态且是当前人
  149. and (
  150. a.status != 0
  151. or (a.status = 0 and a.create_by = #{query.userId})
  152. )
  153. </if>
  154. -- 关键词匹配
  155. <if test="query.keywords != null and query.keywords != ''">
  156. and (
  157. a.t_order_no like concat('%', #{query.keywords}, '%')
  158. or d.firm_name like concat('%', #{query.keywords}, '%')
  159. or e.firm_name like concat('%', #{query.keywords}, '%')
  160. <if test="goodIds != null and goodIds.size() > 0">
  161. or g.goods_id in
  162. <foreach collection="goodIds" item="goodId" open="(" close=")" separator=",">
  163. #{goodId}
  164. </foreach>
  165. </if>
  166. )
  167. </if>
  168. <if test="query.startCreateTime != null ">
  169. and a.create_time &gt;= #{query.startCreateTime}
  170. </if>
  171. <if test="query.endCreateTime != null ">
  172. and a.create_time &lt;= #{query.endCreateTime}
  173. </if>
  174. <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
  175. and a.id in (
  176. SELECT t_order_id from kwo_trade_order_address where del_flag = 0
  177. <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
  178. and address_type = 1
  179. and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
  180. </if>
  181. <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
  182. and address_type = 2
  183. and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
  184. </if>
  185. )
  186. </if>
  187. <if test="query.trading != null and query.trading != ''">
  188. and a.trading =#{query.trading}
  189. </if>
  190. <if test="query.source != null and query.source != ''">
  191. and a.source =#{query.source}
  192. </if>
  193. <if test="query.deliveryType != null and query.deliveryType != ''">
  194. and a.delivery_type =#{query.deliveryType}
  195. </if>
  196. <if test="query.deliveryType != null and query.deliveryType != ''">
  197. and a.delivery_type =#{query.deliveryType}
  198. </if>
  199. <if test="query.pickupType != null and query.pickupType != ''">
  200. and a.pickup_type =#{query.pickupType}
  201. </if>
  202. </where>
  203. ORDER BY a.create_time DESC
  204. </select>
  205. <select id="tradeOrderExport" resultMap="mainEntityMap">
  206. SELECT
  207. <include refid="Query_Column_List_Accept_Carriage">
  208. </include>
  209. FROM kwo_trade_order a
  210. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
  211. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
  212. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  213. LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
  214. <where>
  215. a.del_flag = 0
  216. -- 数据权限匹配
  217. <if test="query.isMain == 0">
  218. and (
  219. <if test="query.orderType == 1">
  220. <if test="query.entId != null">
  221. d.top_ent_id = #{query.entId}
  222. </if>
  223. <if test="authUserIds != null and authUserIds.size() > 0">
  224. and d.contacts_id in
  225. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  226. #{authUserId}
  227. </foreach>
  228. or d.create_by in
  229. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  230. #{authUserId}
  231. </foreach>
  232. </if>
  233. </if>
  234. <if test="query.orderType == 2">
  235. <if test="query.entId != null">
  236. e.top_ent_id = #{query.entId}
  237. </if>
  238. <if test="authUserIds != null and authUserIds.size() > 0">
  239. and e.contacts_id in
  240. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  241. #{authUserId}
  242. </foreach>
  243. or e.create_by in
  244. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  245. #{authUserId}
  246. </foreach>
  247. </if>
  248. </if>
  249. )
  250. </if>
  251. <if test="query.isMain == 1">
  252. and (
  253. <if test="query.orderType == 1">
  254. <if test="query.entId != null">
  255. d.top_ent_id = #{query.entId}
  256. </if>
  257. </if>
  258. <if test="query.orderType == 2">
  259. <if test="query.entId != null">
  260. e.top_ent_id = #{query.entId}
  261. </if>
  262. </if>
  263. )
  264. </if>
  265. -- 状态匹配
  266. <if test="query.status != null">
  267. and a.status =#{query.status}
  268. <if test="query.status == 0">
  269. -- 草稿状态只能创建订单的人能看
  270. and a.create_by = #{query.userId}
  271. </if>
  272. </if>
  273. <if test="query.status == null">
  274. -- 非草稿状态or草稿状态且是当前人
  275. and (
  276. a.status != 0
  277. or (a.status = 0 and a.create_by = #{query.userId})
  278. )
  279. </if>
  280. -- 关键词匹配
  281. <if test="query.keywords != null and query.keywords != ''">
  282. and (
  283. a.t_order_no like concat('%', #{query.keywords}, '%')
  284. or d.firm_name like concat('%', #{query.keywords}, '%')
  285. or e.firm_name like concat('%', #{query.keywords}, '%')
  286. <if test="goodIds != null and goodIds.size() > 0">
  287. or g.goods_id in
  288. <foreach collection="goodIds" item="goodId" open="(" close=")" separator=",">
  289. #{goodId}
  290. </foreach>
  291. </if>
  292. )
  293. </if>
  294. <if test="query.startCreateTime != null ">
  295. and a.create_time &gt;= #{query.startCreateTime}
  296. </if>
  297. <if test="query.endCreateTime != null ">
  298. and a.create_time &lt;= #{query.endCreateTime}
  299. </if>
  300. <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
  301. and a.id in (
  302. SELECT t_order_id from kwo_trade_order_address where del_flag = 0
  303. <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
  304. and address_type = 1
  305. and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
  306. </if>
  307. <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
  308. and address_type = 2
  309. and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
  310. </if>
  311. )
  312. </if>
  313. <if test="query.trading != null and query.trading != ''">
  314. and a.trading =#{query.trading}
  315. </if>
  316. <if test="query.source != null and query.source != ''">
  317. and a.source =#{query.source}
  318. </if>
  319. <if test="query.deliveryType != null and query.deliveryType != ''">
  320. and a.delivery_type =#{query.deliveryType}
  321. </if>
  322. <if test="query.deliveryType != null and query.deliveryType != ''">
  323. and a.delivery_type =#{query.deliveryType}
  324. </if>
  325. -- 指定贸易订单id导出
  326. <if test="ids != null and ids.size() > 0">
  327. and a.id in
  328. <foreach collection="ids" item="item" open="(" close=")" separator=",">
  329. #{item}
  330. </foreach>
  331. <if test="query.orderType == 1">
  332. <if test="query.entId != null">
  333. d.top_ent_id = #{query.entId}
  334. </if>
  335. </if>
  336. <if test="query.orderType == 2">
  337. <if test="query.entId != null">
  338. e.top_ent_id = #{query.entId}
  339. </if>
  340. </if>
  341. </if>
  342. </where>
  343. ORDER BY a.create_time DESC
  344. </select>
  345. <select id="tradeOrderStatementList" resultMap="mainEntityMap">
  346. SELECT
  347. <include refid="Query_Column_List_Accept_Carriage">
  348. </include>
  349. FROM kwo_trade_order a
  350. LEFT JOIN kwo_trade_order_address b ON a.id = b.t_order_id
  351. AND b.address_type = "1" AND b.del_flag = 0
  352. LEFT JOIN kwo_trade_order_address c ON a.id = c.t_order_id
  353. AND c.address_type = "2" AND c.del_flag = 0
  354. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
  355. AND d.unit_type = "1" AND d.del_flag = 0
  356. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
  357. AND e.unit_type = "2" AND e.del_flag = 0
  358. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  359. LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
  360. <where>
  361. a.status = 5 and a.associate_statement <![CDATA[ <> ]]> 1 and a.del_flag = 0
  362. <if test="query.orderType == 1">
  363. <if test="query.entId != null">
  364. and d.top_ent_id = #{query.entId}
  365. </if>
  366. </if>
  367. <if test="query.orderType == 2">
  368. <if test="query.entId != null">
  369. and e.top_ent_id = #{query.entId}
  370. </if>
  371. </if>
  372. <if test="excludeIds != null and excludeIds.size() > 0">
  373. and a.id not in
  374. <foreach collection="excludeIds" item="item" open="(" close=")" separator=",">
  375. #{item}
  376. </foreach>
  377. </if>
  378. <if test="goodIds != null and goodIds.size() > 0">
  379. and g.goods_id in
  380. <foreach collection="goodIds" item="goodId" open="(" close=")" separator=",">
  381. #{goodId}
  382. </foreach>
  383. </if>
  384. <if test="query.procureEntId != null ">
  385. and d.ent_id = #{query.procureEntId}
  386. </if>
  387. <if test="query.trading != null and query.trading != ''">
  388. and a.trading =#{query.trading}
  389. </if>
  390. <if test="query.startTime != null ">
  391. and a.start_time &gt;= #{query.startTime}
  392. </if>
  393. <if test="query.endTime != null ">
  394. and a.end_time &lt;= #{query.endTime}
  395. </if>
  396. </where>
  397. ORDER BY a.create_time DESC
  398. </select>
  399. <select id="tradeOrderContractList" resultMap="mainEntityMap">
  400. SELECT
  401. <include refid="Query_Column_List_Accept_Carriage">
  402. </include>
  403. FROM kwo_trade_order a
  404. LEFT JOIN kwo_trade_order_address b ON a.id = b.t_order_id
  405. AND b.address_type = "1" AND b.del_flag = 0
  406. LEFT JOIN kwo_trade_order_address c ON a.id = c.t_order_id
  407. AND c.address_type = "2" AND c.del_flag = 0
  408. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
  409. AND d.unit_type = "1" AND d.del_flag = 0
  410. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
  411. AND e.unit_type = "2" AND e.del_flag = 0
  412. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  413. LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
  414. <where>
  415. a.del_flag = 0
  416. <if test="query.orderType == 1">
  417. <if test="query.entId != null">
  418. and d.top_ent_id = #{query.entId}
  419. </if>
  420. </if>
  421. <if test="query.orderType == 2">
  422. <if test="query.entId != null">
  423. and e.top_ent_id = #{query.entId}
  424. </if>
  425. </if>
  426. <if test="contractIds != null and contractIds.size() > 0">
  427. and f.contract_id in
  428. <foreach collection="contractIds" item="item" open="(" close=")" separator=",">
  429. #{item}
  430. </foreach>
  431. </if>
  432. </where>
  433. ORDER BY f.contract_id, a.create_time DESC
  434. </select>
  435. <select id="workbenchPurchaseList" resultType="com.sckw.order.model.dto.WorkbenchPurchaseDTO">
  436. SELECT
  437. a.id as tOrderId, a.amount as amount, a.unit as unit, a.create_time as createTime,
  438. g.goods_id as goodsId, d.firm_name as procureFirmName
  439. FROM kwo_trade_order a
  440. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
  441. AND d.unit_type = "1" AND d.del_flag = 0
  442. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  443. <where>
  444. a.del_flag = 0
  445. <if test="procureTopEntId != null">
  446. and d.top_ent_id = #{procureTopEntId}
  447. </if>
  448. <if test="excludeStatuses != null and excludeStatuses.size() > 0">
  449. and a.status not in
  450. <foreach collection="excludeStatuses" item="item" open="(" close=")" separator=",">
  451. #{item}
  452. </foreach>
  453. </if>
  454. </where>
  455. ORDER BY a.create_time DESC LIMIT 10;
  456. </select>
  457. <select id="tradeOrderStatistic" resultType="com.sckw.core.model.vo.TableTop">
  458. SELECT a.status AS `value`, COUNT(a.status) AS total
  459. FROM kwo_trade_order a
  460. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
  461. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
  462. LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
  463. <where>
  464. a.del_flag = 0
  465. -- 数据权限匹配
  466. <if test="query.isMain == 0">
  467. and (
  468. <if test="query.orderType == 1">
  469. <if test="query.entId != null">
  470. d.top_ent_id = #{query.entId}
  471. </if>
  472. <if test="authUserIds != null and authUserIds.size() > 0">
  473. and d.contacts_id in
  474. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  475. #{authUserId}
  476. </foreach>
  477. or d.create_by in
  478. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  479. #{authUserId}
  480. </foreach>
  481. </if>
  482. </if>
  483. <if test="query.orderType == 2">
  484. <if test="query.entId != null">
  485. e.top_ent_id = #{query.entId}
  486. </if>
  487. <if test="authUserIds != null and authUserIds.size() > 0">
  488. and e.contacts_id in
  489. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  490. #{authUserId}
  491. </foreach>
  492. or e.create_by in
  493. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  494. #{authUserId}
  495. </foreach>
  496. </if>
  497. </if>
  498. )
  499. </if>
  500. <if test="query.isMain == 1">
  501. and (
  502. <if test="query.orderType == 1">
  503. <if test="query.entId != null">
  504. d.top_ent_id = #{query.entId}
  505. </if>
  506. </if>
  507. <if test="query.orderType == 2">
  508. <if test="query.entId != null">
  509. e.top_ent_id = #{query.entId}
  510. </if>
  511. </if>
  512. )
  513. </if>
  514. -- 状态匹配
  515. <if test="query.status != null">
  516. and a.status =#{query.status}
  517. <if test="query.status == 0">
  518. -- 草稿状态只能创建订单的人能看
  519. and a.create_by = #{query.userId}
  520. </if>
  521. </if>
  522. <if test="query.status == null">
  523. -- 非草稿状态or草稿状态且是当前人
  524. and (
  525. a.status != 0
  526. or (a.status = 0 and a.create_by = #{query.userId})
  527. )
  528. </if>
  529. -- 关键词匹配
  530. <if test="query.keywords != null and query.keywords != ''">
  531. and (
  532. a.t_order_no like concat('%', #{query.keywords}, '%')
  533. or d.firm_name like concat('%', #{query.keywords}, '%')
  534. or e.firm_name like concat('%', #{query.keywords}, '%')
  535. <if test="goodIds != null and goodIds.size() > 0">
  536. or g.goods_id in
  537. <foreach collection="goodIds" item="goodId" open="(" close=")" separator=",">
  538. #{goodId}
  539. </foreach>
  540. </if>
  541. )
  542. </if>
  543. <if test="query.startCreateTime != null ">
  544. and a.create_time &gt;= #{query.startCreateTime}
  545. </if>
  546. <if test="query.endCreateTime != null ">
  547. and a.create_time &lt;= #{query.endCreateTime}
  548. </if>
  549. <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
  550. and a.id in (
  551. SELECT t_order_id from kwo_trade_order_address where del_flag = 0
  552. <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
  553. and address_type = 1
  554. and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
  555. </if>
  556. <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
  557. and address_type = 2
  558. and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
  559. </if>
  560. )
  561. </if>
  562. <if test="query.trading != null and query.trading != ''">
  563. and a.trading =#{query.trading}
  564. </if>
  565. <if test="query.source != null and query.source != ''">
  566. and a.source =#{query.source}
  567. </if>
  568. <if test="query.deliveryType != null and query.deliveryType != ''">
  569. and a.delivery_type =#{query.deliveryType}
  570. </if>
  571. <if test="query.deliveryType != null and query.deliveryType != ''">
  572. and a.delivery_type =#{query.deliveryType}
  573. </if>
  574. </where>
  575. GROUP BY a.status
  576. </select>
  577. <select id="appStatistic" resultType="com.sckw.order.model.vo.res.TradeOrderAppStatisticVO">
  578. SELECT a.status AS `value`, COUNT(a.status) AS total
  579. FROM kwo_trade_order a
  580. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
  581. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
  582. <where>
  583. a.del_flag = 0
  584. -- 数据权限匹配
  585. <if test="query.isMain == 0">
  586. and (
  587. <if test="query.orderType == 1">
  588. <if test="query.entId != null">
  589. d.top_ent_id = #{query.entId}
  590. </if>
  591. <if test="authUserIds != null and authUserIds.size() > 0">
  592. and d.contacts_id in
  593. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  594. #{authUserId}
  595. </foreach>
  596. </if>
  597. </if>
  598. <if test="query.orderType == 2">
  599. <if test="query.entId != null">
  600. e.top_ent_id = #{query.entId}
  601. </if>
  602. <if test="authUserIds != null and authUserIds.size() > 0">
  603. and e.contacts_id in
  604. <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
  605. #{authUserId}
  606. </foreach>
  607. </if>
  608. </if>
  609. )
  610. </if>
  611. <if test="query.isMain == 1">
  612. and (
  613. <if test="query.orderType == 1">
  614. <if test="query.entId != null">
  615. d.top_ent_id = #{query.entId}
  616. </if>
  617. </if>
  618. <if test="query.orderType == 2">
  619. <if test="query.entId != null">
  620. e.top_ent_id = #{query.entId}
  621. </if>
  622. </if>
  623. )
  624. </if>
  625. <if test="query.orderType == 1">
  626. <if test="query.entId != null">
  627. and d.top_ent_id = #{query.entId}
  628. </if>
  629. </if>
  630. <if test="query.orderType == 2">
  631. <if test="query.entId != null">
  632. and e.top_ent_id = #{query.entId}
  633. </if>
  634. </if>
  635. -- 状态匹配
  636. <if test="statuses != null and statuses.size() > 0">
  637. and a.status in
  638. <foreach collection="statuses" item="item" open="(" close=")" separator=",">
  639. #{item}
  640. </foreach>
  641. </if>
  642. </where>
  643. GROUP BY a.status
  644. </select>
  645. <select id="getOrderStsInfo" resultType="com.sckw.order.model.dto.WorkbenchOrderStsDTO">
  646. SELECT SUM(a.amount) AS orderAmount, SUM(a.price) AS orderPrice,
  647. SUM(a.actual_amount) AS orderActualAmount
  648. FROM kwo_trade_order a
  649. LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
  650. AND d.unit_type = "1" AND d.del_flag = 0
  651. LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
  652. AND e.unit_type = "2" AND e.del_flag = 0
  653. <where>
  654. a.del_flag = 0
  655. <if test="query.unit != null and query.unit != ''">
  656. and a.unit =#{query.unit}
  657. </if>
  658. <if test="query.startCreateTime != null ">
  659. and a.create_time &gt;= #{query.startCreateTime}
  660. </if>
  661. <if test="query.endCreateTime != null ">
  662. and a.create_time &lt;= #{query.endCreateTime}
  663. </if>
  664. <if test="excludeStatuses != null and excludeStatuses.size() > 0">
  665. and a.status not in
  666. <foreach collection="excludeStatuses" item="item" open="(" close=")" separator=",">
  667. #{item}
  668. </foreach>
  669. </if>
  670. <if test="query.orderType == 1">
  671. <if test="query.entId != null">
  672. and d.top_ent_id = #{query.entId}
  673. </if>
  674. </if>
  675. <if test="query.orderType == 2">
  676. <if test="query.entId != null">
  677. and e.top_ent_id = #{query.entId}
  678. </if>
  679. </if>
  680. </where>
  681. </select>
  682. <select id="getMaxOrderNoByDate" resultType="java.lang.String">
  683. SELECT MAX(t_order_no)
  684. FROM kwo_trade_order
  685. WHERE create_time &gt;= #{date};
  686. </select>
  687. <select id="getOrderNumByTopEntId" resultType="com.sckw.order.api.model.TradeOrderCountStatisticsDTO">
  688. SELECT u.unit_type AS orderType,
  689. COUNT(*) AS num
  690. FROM kwo_trade_order o
  691. LEFT JOIN kwo_trade_order_unit u
  692. ON o.id = u.t_order_id
  693. <where>
  694. o.del_flag = 0 AND o.status NOT IN (0, 2) AND u.del_flag = 0
  695. <if test="topEntId != null ">
  696. and u.top_ent_id = #{topEntId}
  697. </if>
  698. <if test="enterpriseIds != null and enterpriseIds.size() > 0">
  699. and o.ent_id in
  700. <foreach collection="enterpriseIds" item="item" open="(" close=")" separator=",">
  701. #{item}
  702. </foreach>
  703. </if>
  704. </where>
  705. GROUP BY u.unit_type
  706. </select>
  707. <select id="workbenchExcel" resultType="com.sckw.order.model.dto.WbTOrderExcelStsResDTO">
  708. SELECT DATE_FORMAT(create_time, #{item.dateFormat}) AS formatDate,
  709. SUM(CASE
  710. WHEN #{item.stsFactorsOne} = 1 THEN price
  711. WHEN #{item.stsFactorsOne} = 2 THEN 1
  712. ELSE 0
  713. END) AS stsFactorsOneValue,
  714. SUM(CASE
  715. WHEN #{item.stsFactorsTwo} = 1 THEN price
  716. WHEN #{item.stsFactorsTwo} = 2 THEN 1
  717. ELSE 0
  718. END) AS stsFactorsTwoValue
  719. FROM kwo_trade_order
  720. WHERE
  721. id IN (SELECT t_order_id
  722. FROM kwo_trade_order_unit
  723. WHERE del_flag = 0
  724. AND unit_type = #{item.unitType}
  725. AND top_ent_id = #{item.topEntId})
  726. AND create_time >= #{item.startTime}
  727. AND status NOT IN (0, 2)
  728. AND del_flag = 0
  729. GROUP BY DATE_FORMAT(create_time, #{item.dateFormat});
  730. </select>
  731. </mapper>