ContractMapper.xml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  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. t1.rate AS rate,
  42. t2.*,
  43. IFNULL(t1.budget_money,0)AS budgetMoney
  44. FROM
  45. contract t1
  46. LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
  47. ${ew.customSqlSegment}
  48. </select>
  49. <select id="getNoPackContractByCustomerId" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  50. SELECT
  51. *
  52. FROM
  53. (
  54. SELECT
  55. t1.*,
  56. t2.quantity AS cpQuantity,
  57. ( SELECT IFNULL( SUM( quantity ), 0 ) FROM pack_detail_product WHERE contract_product_id = t2.id ) AS sumPackQuantity
  58. FROM
  59. contract t1
  60. LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
  61. <where>
  62. <if test="customerId neq null and customerId neq '' ">
  63. buy_corporation_id = #{customerId}
  64. </if>
  65. </where>
  66. ) t1
  67. WHERE t1.sumPackQuantity &lt; t1.cpQuantity
  68. AND t1.`status`=30
  69. GROUP BY t1.id
  70. </select>
  71. <select id="getSalesTotal" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  72. SELECT
  73. SUM(amount) amount,
  74. currency,
  75. count(*) contractCount
  76. FROM
  77. contract
  78. WHERE
  79. buy_corporation_id = #{id} and status = 30 and del_flag = 0
  80. GROUP BY
  81. buy_corporation_id
  82. </select>
  83. <select id="getAmount" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  84. SELECT
  85. SUM(amount) amount,
  86. DATE_FORMAT(create_time,'%Y-%m') time
  87. FROM
  88. contract
  89. WHERE
  90. buy_corporation_id = #{id}
  91. and (DATE_FORMAT(create_time,'%Y-%m') >= #{beginTime} and #{endTime} >= DATE_FORMAT(create_time,'%Y-%m'))
  92. GROUP BY
  93. TIME
  94. </select>
  95. <select id="contractStatistics" resultType="com.fjhx.sale.entity.sale.vo.SaleQuotationVo">
  96. SELECT
  97. COUNT(*) count,
  98. ifnull(c.`status`,-1) status,
  99. ifnull(DATE_FORMAT(sq.create_time,'%Y-%m'),-1) time
  100. FROM
  101. bytesailing_customer.customer c
  102. left JOIN contract sq ON sq.buy_corporation_id = c.id
  103. ${ew.customSqlSegment}
  104. </select>
  105. <select id="countrySalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  106. SELECT
  107. sum(cc.amount) amount,
  108. COUNT(cc.buy_country_id) count,
  109. ai.name countryName
  110. FROM
  111. contract cc
  112. LEFT JOIN bytesailing_base.customize_area ai ON cc.buy_country_id = ai.id
  113. ${ew.customSqlSegment}
  114. </select>
  115. <select id="customSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  116. SELECT
  117. sum(cc.amount) amount,
  118. bc.name corporationName
  119. FROM
  120. contract cc
  121. LEFT JOIN bytesailing_customer.customer bc ON cc.buy_corporation_id = bc.id
  122. ${ew.customSqlSegment}
  123. </select>
  124. <select id="salesmanSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  125. SELECT
  126. SUM(cc.amount) amount,
  127. su.nick_name userName
  128. FROM
  129. contract cc
  130. LEFT JOIN bytesailing_base.sys_user su ON cc.create_user = su.user_id
  131. ${ew.customSqlSegment}
  132. </select>
  133. <select id="productSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  134. SELECT
  135. SUM(cp.amount) amount,
  136. pi.name productName
  137. FROM
  138. contract_product cp
  139. LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
  140. ${ew.customSqlSegment}
  141. </select>
  142. <select id="salesVolumeStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  143. SELECT SUM(cp.quantity) quantity,
  144. pi.name productName
  145. FROM contract_product cp
  146. LEFT JOIN bytesailing_item.product_info pi ON cp.product_id = pi.id
  147. ${ew.customSqlSegment}
  148. </select>
  149. <select id="getAccountRunningWaterByContractId"
  150. resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
  151. SELECT arw.id,
  152. arw.create_time,
  153. ap.type,
  154. arw.currency,
  155. pad.money amount,
  156. pad.remark remarks,
  157. am.`name` accountManagementName,
  158. am.account_opening accountManagementOpening,
  159. arw.`name`,
  160. arw.status
  161. FROM contract c
  162. JOIN bytesailing_purchase.purchase p ON p.data_resource_id = c.id AND p.del_flag = 0
  163. JOIN bytesailing_purchase.pay_detail `pad` ON pad.purchase_id = p.id AND pad.del_flag = 0
  164. JOIN bytesailing_purchase.pay pa ON pad.pay_id = pa.id AND pa.del_flag = 0
  165. JOIN bytesailing_account.account_payment ap ON ap.business_id = pa.id AND ap.del_flag = 0
  166. JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
  167. LEFT JOIN bytesailing_account.account_management am
  168. ON arw.account_management_id = am.id AND am.del_flag = 0
  169. WHERE c.id = #{contractId}
  170. UNION ALL
  171. SELECT arw.id,
  172. arw.create_time,
  173. ap.type,
  174. arw.currency,
  175. arfd.amount,
  176. arfd.remarks,
  177. am.`name` accountManagementName,
  178. am.account_opening accountManagementOpening,
  179. arw.`name`,
  180. arw.status
  181. FROM contract c
  182. JOIN bytesailing_account.account_request_funds_detail arfd
  183. ON arfd.contract_id = c.id AND arfd.del_flag = 0
  184. JOIN bytesailing_account.account_payment ap
  185. ON ap.business_id = arfd.account_request_funds_id AND ap.del_flag = 0
  186. JOIN bytesailing_account.account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
  187. LEFT JOIN bytesailing_account.account_management am
  188. ON arw.account_management_id = am.id AND am.del_flag = 0
  189. WHERE c.id = #{contractId}
  190. UNION ALL
  191. SELECT arw.id,
  192. arw.create_time,
  193. 30 type,
  194. arw.currency,
  195. clc.money,
  196. arw.remarks,
  197. am.`name` accountManagementName,
  198. am.account_opening accountManagementOpening,
  199. arw.`name`,
  200. arw.status
  201. FROM bytesailing_account.account_running_water arw
  202. JOIN claim cl ON cl.business_id = arw.id
  203. JOIN claim_contract clc ON clc.claim_id = cl.id
  204. JOIN contract c ON clc.contract_id = c.id
  205. LEFT JOIN bytesailing_account.account_management am
  206. ON arw.account_management_id = am.id AND am.del_flag = 0
  207. WHERE arw.del_flag = 0
  208. AND c.id = #{contractId}
  209. </select>
  210. <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  211. SELECT
  212. *
  213. FROM
  214. (
  215. SELECT
  216. t1.id,
  217. t1.sell_corporation_id,
  218. t1.contract_type,
  219. 1 AS dataType,
  220. t1.`code`,
  221. t1.buy_corporation_id,
  222. t1.version,
  223. t1.amount,
  224. t1.create_user,
  225. t1.create_time,
  226. t1.refund_status,
  227. t1.`status`,
  228. (
  229. SELECT
  230. IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  231. FROM
  232. claim_contract cc
  233. LEFT JOIN claim c ON cc.claim_id = c.id
  234. LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
  235. WHERE
  236. cc.contract_id = t1.id
  237. ) AS sumClaimMoney
  238. FROM
  239. contract t1
  240. WHERE
  241. t1.`status` >= 30
  242. AND t1.`status` &lt; 88 UNION
  243. SELECT
  244. t1.id,
  245. t1.sell_corporation_id,
  246. 3 AS contract_type,
  247. 2 AS dataType,
  248. t1.`code`,
  249. t1.buy_corporation_id,
  250. t1.versions AS version,
  251. t1.amount,
  252. t1.create_user,
  253. t1.create_time,
  254. IF
  255. ( sumClaimMoney >= t1.amount, 20, IF ( sumClaimMoney != 0, 10, 0 ) ) AS refund_status,
  256. t1.`status`,
  257. t1.sumClaimMoney
  258. FROM
  259. (
  260. SELECT
  261. t1.*,
  262. (
  263. SELECT
  264. IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  265. FROM
  266. claim_contract cc
  267. LEFT JOIN claim c ON cc.claim_id = c.id
  268. LEFT JOIN bytesailing_account.account_running_water arw ON c.business_id = arw.id
  269. WHERE
  270. cc.contract_id = t1.id
  271. ) AS sumClaimMoney
  272. FROM
  273. sample t1
  274. WHERE
  275. t1.`status` >= 30
  276. AND t1.`status` &lt; 88
  277. ) AS t1
  278. ) t1
  279. ${ew.customSqlSegment}
  280. </select>
  281. <update id="updateContract" parameterType="com.fjhx.sale.entity.contract.po.Contract">
  282. update contract
  283. <set>
  284. <if test="id != null">id = #{id},</if>
  285. <if test="status != null">status = #{status},</if>
  286. <if test="isChange != null">is_change = #{isChange},</if>
  287. <if test="isShow != null">is_show = #{isShow},</if>
  288. <if test="oldContractId != null">old_contract_id = #{oldContractId},</if>
  289. <if test="approvedDate != null">approved_date = DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s'),</if>
  290. update_time = sysdate()
  291. </set>
  292. where id = #{upId}
  293. </update>
  294. </mapper>