ContractMapper.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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.fjhx.sale.mapper.contract.ContractMapper">
  4. <select id="getPage" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  5. SELECT *
  6. FROM
  7. (SELECT t1.*,
  8. IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
  9. CASE
  10. WHEN ( IFNULL( t1.amount, 0 ) * IFNULL( t1.rate, 0 ) - t1.sumClaimMoney ) &lt;= 0 THEN
  11. 20
  12. WHEN t1.sumClaimMoney = 0 THEN
  13. 0
  14. ELSE 10
  15. END AS refundStatusNew
  16. FROM (SELECT t1.*,
  17. (SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
  18. FROM claim_contract cc
  19. left join claim c on cc.claim_id = c.id
  20. LEFT JOIN bytesailing_account.account_running_water arw on c.business_id = arw.id
  21. WHERE cc.contract_id = t1.id) AS sumClaimMoney
  22. FROM contract t1) t1) t1
  23. ${ew.customSqlSegment}
  24. </select>
  25. <select id="getProfitClearingPage" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
  26. SELECT t1.id AS contractId,
  27. t1.*
  28. FROM contract t1
  29. ${ew.customSqlSegment}
  30. </select>
  31. <select id="getProfitBudgetPage" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
  32. SELECT
  33. (select GROUP_CONCAT(id) from contract_product WHERE contract_id = t1.id) AS contractProductIds,
  34. t1.id AS contractId,
  35. t1.`code`,
  36. t1.buy_corporation_id ,
  37. t1.user_name,
  38. t1.amount,
  39. t1.currency,
  40. t1.currency_rate_json,
  41. t2.*
  42. FROM
  43. contract t1
  44. LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
  45. ${ew.customSqlSegment}
  46. </select>
  47. <select id="getNoPackContractByCustomerId" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  48. SELECT
  49. *
  50. FROM
  51. (
  52. SELECT
  53. t1.*,
  54. t2.quantity AS cpQuantity,
  55. ( SELECT IFNULL( SUM( quantity ), 0 ) FROM pack_detail_product WHERE contract_product_id = t2.id ) AS sumPackQuantity
  56. FROM
  57. contract t1
  58. LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
  59. <where>
  60. <if test="customerId neq null and customerId neq '' ">
  61. buy_corporation_id = #{customerId}
  62. </if>
  63. </where>
  64. ) t1
  65. WHERE t1.sumPackQuantity &lt; t1.cpQuantity
  66. AND t1.`status`=30
  67. GROUP BY t1.id
  68. </select>
  69. <select id="getSalesTotal" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  70. SELECT
  71. SUM(amount) amount,
  72. currency,
  73. count(*) contractCount
  74. FROM
  75. contract
  76. WHERE
  77. buy_corporation_id = #{id} and status = 30 and del_flag = 0
  78. GROUP BY
  79. buy_corporation_id
  80. </select>
  81. <select id="getAmount" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  82. SELECT
  83. SUM(amount) amount,
  84. DATE_FORMAT(create_time,'%Y-%m') time
  85. FROM
  86. contract
  87. WHERE
  88. buy_corporation_id = #{id}
  89. and (DATE_FORMAT(create_time,'%Y-%m') >= #{beginTime} and #{endTime} >= DATE_FORMAT(create_time,'%Y-%m'))
  90. GROUP BY
  91. TIME
  92. </select>
  93. <select id="contractStatistics" resultType="com.fjhx.sale.entity.sale.vo.SaleQuotationVo">
  94. SELECT
  95. COUNT(*) count,
  96. ifnull(c.`status`,-1) status,
  97. ifnull(DATE_FORMAT(sq.create_time,'%Y-%m'),-1) time
  98. FROM
  99. bytesailing_customer.customer c
  100. left JOIN contract sq ON sq.buy_corporation_id = c.id
  101. ${ew.customSqlSegment}
  102. </select>
  103. <select id="countrySalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  104. SELECT
  105. sum(cc.amount) amount,
  106. COUNT(cc.buy_country_id) count,
  107. ai.name countryName
  108. FROM
  109. contract cc
  110. LEFT JOIN bytesailing_base.customize_area ai ON cc.buy_country_id = ai.id
  111. ${ew.customSqlSegment}
  112. </select>
  113. <select id="customSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  114. SELECT
  115. sum(cc.amount) amount,
  116. bc.name corporationName
  117. FROM
  118. contract cc
  119. LEFT JOIN bytesailing_customer.customer bc ON cc.buy_corporation_id = bc.id
  120. ${ew.customSqlSegment}
  121. </select>
  122. <select id="salesmanSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  123. SELECT
  124. SUM(cc.amount) amount,
  125. su.nick_name userName
  126. FROM
  127. contract cc
  128. LEFT JOIN bytesailing_base.sys_user su ON cc.create_user = su.user_id
  129. ${ew.customSqlSegment}
  130. </select>
  131. <select id="productSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  132. SELECT
  133. SUM(cp.amount) amount,
  134. pi.name productName
  135. FROM
  136. contract_product cp
  137. LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
  138. ${ew.customSqlSegment}
  139. </select>
  140. <select id="salesVolumeStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  141. SELECT SUM(cp.quantity) quantity,
  142. pi.name productName
  143. FROM contract_product cp
  144. LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
  145. ${ew.customSqlSegment}
  146. </select>
  147. <select id="getAccountRunningWaterByContractId"
  148. resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
  149. SELECT arw.id,
  150. arw.create_time,
  151. ap.type,
  152. arw.currency,
  153. arw.amount,
  154. arw.remarks,
  155. am.`name` accountManagementName,
  156. am.account_opening accountManagementOpening,
  157. arw.`name`
  158. FROM contract c
  159. JOIN bytesailing_purchase.purchase p ON p.data_resource_id = c.id
  160. JOIN bytesailing_purchase.pay_detail pad
  161. ON pad.purchase_id = p.id
  162. JOIN bytesailing_purchase.pay pa ON pad.pay_id = pa.id
  163. JOIN bytesailing_account.account_payment ap ON ap.business_id = pa.id
  164. JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id
  165. LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
  166. WHERE
  167. c.id = #{contractId}
  168. UNION ALL
  169. SELECT arw.id,
  170. arw.create_time,
  171. ap.type,
  172. arw.currency,
  173. arw.amount,
  174. arw.remarks,
  175. am.`name` accountManagementName,
  176. am.account_opening accountManagementOpening,
  177. arw.`name`
  178. FROM contract c
  179. JOIN bytesailing_account.account_request_funds_detail arfd ON arfd.contract_id = c.id
  180. JOIN bytesailing_account.account_payment ap ON ap.business_id = arfd.account_request_funds_id
  181. JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id
  182. LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
  183. WHERE c.id = #{contractId}
  184. UNION ALL
  185. SELECT arw.id,
  186. arw.create_time,
  187. 30 type,
  188. arw.currency,
  189. clc.money,
  190. arw.remarks,
  191. am.`name` accountManagementName,
  192. am.account_opening accountManagementOpening,
  193. arw.`name`
  194. FROM bytesailing_account.account_running_water arw
  195. JOIN claim cl ON cl.business_id = arw.id
  196. JOIN claim_contract clc ON clc.claim_id = cl.id
  197. JOIN contract c ON clc.contract_id = c.id
  198. LEFT JOIN bytesailing_account.account_management am ON arw.account_management_id = am.id
  199. WHERE c.id = #{contractId}
  200. </select>
  201. <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  202. SELECT
  203. t1.id,
  204. t1.sell_corporation_id,
  205. t1.contract_type,
  206. 1 as dataType,
  207. t1.`code`,
  208. t1.buy_corporation_id,
  209. t1.version,
  210. t1.amount,
  211. t1.create_user,
  212. t1.create_time,
  213. t1.refund_status,
  214. t1.`status`,
  215. (
  216. SELECT
  217. IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  218. FROM
  219. claim_contract cc
  220. LEFT JOIN claim c ON cc.claim_id = c.id
  221. LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
  222. WHERE
  223. cc.contract_id = t1.id
  224. ) AS sumClaimMoney
  225. FROM
  226. contract t1
  227. ${ew.customSqlSegment}
  228. UNION
  229. SELECT
  230. t1.id,
  231. t1.sell_corporation_id,
  232. 3 AS contract_type,
  233. 2 AS dataType,
  234. t1.`code`,
  235. t1.buy_corporation_id,
  236. t1.versions AS version,
  237. t1.amount,
  238. t1.create_user,
  239. t1.create_time,
  240. IF ( sumClaimMoney >= t1.amount, 20, IF ( sumClaimMoney != 0, 10, 0 ) ) AS refund_status,
  241. t1.`status`,
  242. t1.sumClaimMoney
  243. FROM
  244. (
  245. SELECT
  246. t1.*,
  247. (
  248. SELECT
  249. IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  250. FROM
  251. claim_contract cc
  252. LEFT JOIN claim c ON cc.claim_id = c.id
  253. LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
  254. WHERE
  255. cc.contract_id = t1.id
  256. ) AS sumClaimMoney
  257. FROM
  258. sample t1
  259. ) AS t1
  260. ${ew.customSqlSegment}
  261. </select>
  262. </mapper>