ContractMapper.xml 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  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 (SELECT t1.*,
  7. IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
  8. CASE
  9. WHEN (IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) - t1.sumClaimMoney) &lt;= 0 THEN
  10. 20
  11. WHEN t1.sumClaimMoney = 0 THEN
  12. 0
  13. ELSE 10
  14. END AS refundStatusNew,
  15. (t1.amount - t1.settledAmount) as unsettledAmount
  16. FROM (SELECT t1.*,
  17. c.name customerName,
  18. us.nick_name salesmanName,
  19. us.user_id salesmanId,
  20. (SELECT IFNULL(SUM(cc.contract_money), 0)
  21. FROM claim_contract cc
  22. JOIN claim cl ON cc.claim_id = cl.id
  23. WHERE cl.confirm_status = 1
  24. and cc.contract_id = t1.id) AS sumClaimMoney,
  25. po.produce_status,
  26. IFNULL(t3.quantity, 0) AS waitStockQuantity,
  27. IFNULL(t3.receipt_quantity, 0) AS receiptStockQuantity,
  28. IFNULL(
  29. (SELECT sum(pod.finish_quantity * cp.price)
  30. FROM contract_product cp
  31. JOIN production_order_detail pod ON pod.contract_detail_id = cp.id
  32. WHERE cp.contract_id = t1.id)
  33. , 0) AS settledAmount,
  34. po.delivery_period as prodDeliveryPeriod,
  35. IFNULL(t4.deliverQuantity, 0),
  36. IFNULL(t4.notDeliverQuantity, 0)
  37. FROM contract t1
  38. left join customer c on t1.buy_corporation_id = c.id
  39. left join sys_user us on c.user_id = us.user_id
  40. LEFT JOIN production_order po ON po.contract_id = t1.id
  41. LEFT JOIN (SELECT pod.contract_id,
  42. IFNULL(sum(swd.quantity), 0) AS quantity,
  43. IFNULL(sum(swd.receipt_quantity), 0) AS receipt_quantity
  44. FROM production_order_detail pod
  45. JOIN stock_wait_details swd ON swd.prod_task_id = pod.id
  46. GROUP BY pod.contract_id) t3 ON t3.contract_id = t1.id
  47. LEFT JOIN (SELECT t1.contract_id,
  48. t1.quantity,
  49. t1.deliverQuantity,
  50. (t1.quantity - t1.deliverQuantity) notDeliverQuantity
  51. FROM (SELECT cp.contract_id,
  52. IFNULL(sum(cp.quantity), 0) AS quantity,
  53. IFNULL(sum(cor.quantity), 0) AS deliverQuantity
  54. FROM contract_product cp
  55. LEFT JOIN contract_outbound_records cor ON cp.id = cor.contract_product_id
  56. LEFT JOIN contract_outbound_info coi ON cor.record_id = coi.id
  57. WHERE coi.`status` in (30, 60)
  58. GROUP BY cp.contract_id) t1) t4 ON t4.contract_id = t1.id) t1
  59. GROUP BY t1.id) t1
  60. ${ew.customSqlSegment}
  61. </select>
  62. <select id="getHeadStatistic" resultType="java.util.Map">
  63. SELECT IFNULL(SUM(t1.amountCNY), 0) AS sumAmount,
  64. IFNULL(SUM(sumClaimMoney), 0) AS sumClaimMoney,
  65. count(1) AS `count`,
  66. IFNULL(GROUP_CONCAT(DISTINCT t1.buy_corporation_id ), "") AS customerList
  67. FROM (SELECT t1.*,
  68. IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) AS amountCNY,
  69. CASE
  70. WHEN (IFNULL(t1.amount, 0) * IFNULL(t1.rate, 0) - t1.sumClaimMoney) &lt;= 0 THEN
  71. 20
  72. WHEN t1.sumClaimMoney = 0 THEN
  73. 0
  74. ELSE 10
  75. END AS refundStatusNew
  76. FROM (SELECT t1.*,
  77. (SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
  78. FROM claim_contract cc
  79. left join claim c on cc.claim_id = c.id
  80. LEFT JOIN account_running_water arw on c.business_id = arw.id
  81. WHERE cc.contract_id = t1.id) AS sumClaimMoney,
  82. c.name customerName,
  83. us.nick_name salesmanName,
  84. us.user_id salesmanId
  85. FROM contract t1
  86. left join customer c on t1.buy_corporation_id = c.id
  87. left join sys_user us on c.user_id = us.user_id) t1) t1
  88. ${ew.customSqlSegment}
  89. </select>
  90. <select id="getProfitClearingPage" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
  91. SELECT t1.*,
  92. if(t1.amount &lt; t1.sumPurchaseContractMoney, 1, 0) AS isLoss
  93. from (SELECT t1.id AS contractId,
  94. us1.nick_name userName,
  95. t1.*,
  96. (select IFNULL(SUM(amount), 0)
  97. from ehsd_purchase
  98. where data_resource_id = t1.id
  99. and `status` in (10, 30, 60)) as sumPurchaseContractMoney
  100. FROM contract t1
  101. LEFT JOIN customer cu
  102. on t1.buy_corporation_id = cu.id and cu.del_flag = 0
  103. LEFT JOIN sys_user us1
  104. ON cu.user_id = us1.user_id and us1.del_flag = 0) t1 ${ew.customSqlSegment}
  105. </select>
  106. <select id="getProfitBudgetPage" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
  107. SELECT t1.*,
  108. if(t1.amount &lt; t1.sumPurchaseContractMoney, 1, 0) AS isLoss
  109. FROM (SELECT (SELECT GROUP_CONCAT(id) FROM contract_product WHERE contract_id = t1.id) AS contractProductIds,
  110. t1.id AS contractId,
  111. t1.`code`,
  112. t1.buy_corporation_id,
  113. us1.nick_name userName,
  114. t1.amount,
  115. t1.currency,
  116. t1.currency_rate_json,
  117. t1.rate AS rate,
  118. t1.create_time,
  119. t2.id,
  120. t2.trailer_fee_currency,
  121. t2.trailer_fee,
  122. t2.customs_fee_currency,
  123. t2.customs_fee,
  124. t2.agency_fee_currency,
  125. t2.agency_fee,
  126. t2.port_mixed_fee_currency,
  127. t2.port_mixed_fee,
  128. t2.inspection_red_pack_currency,
  129. t2.inspection_red_pack,
  130. t2.commission_currency,
  131. t2.commission,
  132. t2.other_currency,
  133. t2.other,
  134. IFNULL(t1.budget_money, 0) AS budgetMoney,
  135. cu.NAME customerName,
  136. t1.is_settled,
  137. t1.is_change,
  138. t1.status,
  139. t1.is_show,
  140. (SELECT IFNULL(SUM(amount), 0)
  141. FROM ehsd_purchase
  142. WHERE data_resource_id = t1.id
  143. AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney
  144. FROM contract t1
  145. LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
  146. LEFT JOIN customer cu ON t1.buy_corporation_id = cu.id
  147. AND cu.del_flag = 0
  148. LEFT JOIN sys_user us1 ON cu.user_id = us1.user_id
  149. AND us1.del_flag = 0) t1
  150. ${ew.customSqlSegment}
  151. </select>
  152. <select id="getProfitBudgetHeadStatistic" resultType="com.fjhx.sale.entity.contract.vo.ContractBudgetVo">
  153. SELECT t1.*,
  154. if(t1.amount &lt; t1.sumPurchaseContractMoney, 1, 0) AS isLoss
  155. FROM (SELECT t1.id AS contractId,
  156. t1.amount,
  157. t1.currency,
  158. t1.currency_rate_json,
  159. t1.rate AS rate,
  160. t2.*,
  161. t1.is_settled,
  162. t1.is_change,
  163. t1.status,
  164. t1.is_show,
  165. us1.nick_name,
  166. t1.code,
  167. (SELECT IFNULL(SUM(amount), 0)
  168. FROM ehsd_purchase
  169. WHERE data_resource_id = t1.id
  170. AND `status` IN (10, 30, 60)) AS sumPurchaseContractMoney
  171. FROM contract t1
  172. LEFT JOIN contract_budget t2 ON t1.id = t2.contract_id
  173. LEFT JOIN customer cu on t1.buy_corporation_id = cu.id and cu.del_flag = 0
  174. LEFT JOIN sys_user us1 ON cu.user_id = us1.user_id and us1.del_flag = 0) t1
  175. ${ew.customSqlSegment}
  176. </select>
  177. <select id="getNoPackContractByCustomerId" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  178. SELECT
  179. *
  180. FROM
  181. (
  182. SELECT
  183. t1.*,
  184. t2.quantity AS cpQuantity,
  185. ( SELECT IFNULL( SUM( pd.pack_quantity * pdd.quantity ), 0 ) FROM pack_detail_product pdd LEFT JOIN pack_detail
  186. pd ON pdd.pack_detail_id = pd.id WHERE pdd.contract_product_id = t2.id ) AS sumPackQuantity
  187. FROM
  188. contract t1
  189. LEFT JOIN contract_product t2 ON t1.id = t2.contract_id
  190. join production_order po on po.contract_id = t1.id and po.produce_status = 2
  191. <where>
  192. <if test="customerId neq null and customerId neq '' ">
  193. buy_corporation_id = #{customerId}
  194. </if>
  195. </where>
  196. ) t1
  197. WHERE t1.sumPackQuantity &lt; t1.cpQuantity
  198. AND t1.`status`=30
  199. GROUP BY t1.id
  200. </select>
  201. <select id="getSalesTotal" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  202. SELECT
  203. SUM( amount ) AS sumAmount,
  204. SUM( contractCount ) AS contractCount
  205. FROM
  206. (
  207. SELECT
  208. SUM( amount * rate ) amount,
  209. count(*) contractCount
  210. FROM
  211. contract
  212. WHERE
  213. buy_corporation_id = #{id}
  214. AND STATUS BETWEEN 0
  215. AND 87
  216. AND is_show != 1
  217. AND is_change = 0
  218. AND del_flag = 0
  219. GROUP BY
  220. buy_corporation_id UNION ALL
  221. SELECT
  222. SUM( amount * rate ) amount,
  223. count(*) contractCount
  224. FROM
  225. sample
  226. WHERE
  227. buy_corporation_id = #{id}
  228. AND STATUS BETWEEN 0
  229. AND 87
  230. AND is_show != 1
  231. AND is_change = 0
  232. AND del_flag = 0
  233. GROUP BY
  234. buy_corporation_id
  235. ) t1
  236. </select>
  237. <select id="getSalesTotalList" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  238. SELECT
  239. *
  240. FROM
  241. (
  242. SELECT
  243. currency,
  244. sell_corporation_id,
  245. id,
  246. "外销合同" AS type,
  247. create_time,
  248. create_user,
  249. `code`,
  250. buy_corporation_id,
  251. advance_ratio,
  252. amount,
  253. rate,
  254. amount * rate AS amountCNY,
  255. (SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
  256. FROM claim_contract cc
  257. LEFT JOIN claim c ON cc.claim_id = c.id
  258. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  259. WHERE cc.contract_id = t1.id) AS sumClaimMoney
  260. FROM contract t1
  261. WHERE buy_corporation_id = #{id}
  262. AND STATUS BETWEEN 0
  263. AND 87
  264. AND is_show != 1
  265. AND is_change = 0
  266. AND del_flag = 0 UNION ALL
  267. SELECT
  268. currency,
  269. sell_corporation_id,
  270. id,
  271. "样品单" AS type,
  272. create_time,
  273. create_user,
  274. `code`,
  275. buy_corporation_id, advance_ratio, amount, rate, amount * rate AS amountCNY, (
  276. SELECT
  277. IFNULL( SUM ( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  278. FROM
  279. claim_contract cc
  280. LEFT JOIN claim c ON cc.claim_id = c.id
  281. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  282. WHERE
  283. cc.contract_id = t1.id
  284. ) AS sumClaimMoney
  285. FROM
  286. sample t1
  287. WHERE
  288. buy_corporation_id = #{id}
  289. AND STATUS BETWEEN 0
  290. AND 87
  291. AND is_show != 1
  292. AND is_change = 0
  293. AND del_flag = 0
  294. ) t1
  295. </select>
  296. <select id="getAmount" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  297. SELECT
  298. SUM(amount) amount,
  299. DATE_FORMAT(create_time,'%Y-%m') time
  300. FROM
  301. contract
  302. WHERE
  303. buy_corporation_id = #{id}
  304. and (DATE_FORMAT(create_time,'%Y-%m') >= #{beginTime} and #{endTime} >= DATE_FORMAT(create_time,'%Y-%m'))
  305. GROUP BY
  306. TIME
  307. </select>
  308. <select id="contractStatistics" resultType="com.fjhx.sale.entity.sale.vo.SaleQuotationVo">
  309. SELECT COUNT(*) count,
  310. ifnull(c.`status`,-1) status,
  311. ifnull(DATE_FORMAT(sq.create_time,'%Y-%m'),-1) time
  312. FROM
  313. customer c
  314. left JOIN contract sq
  315. ON sq.buy_corporation_id = c.id
  316. ${ew.customSqlSegment}
  317. </select>
  318. <select id="countrySalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  319. SELECT sum(cc.amount) amount,
  320. COUNT(cc.buy_country_id) count,
  321. ai.name countryName
  322. FROM
  323. contract cc
  324. LEFT JOIN customize_area ai
  325. ON cc.buy_country_id = ai.id
  326. ${ew.customSqlSegment}
  327. </select>
  328. <select id="customSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  329. SELECT sum(cc.amount) amount,
  330. bc.name corporationName
  331. FROM contract cc
  332. LEFT JOIN customer bc ON cc.buy_corporation_id = bc.id
  333. ${ew.customSqlSegment}
  334. </select>
  335. <select id="salesmanSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  336. SELECT SUM(cc.amount) amount,
  337. su.nick_name userName
  338. FROM contract cc
  339. LEFT JOIN sys_user su ON cc.create_user = su.user_id
  340. ${ew.customSqlSegment}
  341. </select>
  342. <select id="productSalesStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  343. SELECT SUM(cp.amount) amount,
  344. pi.name productName
  345. FROM contract_product cp
  346. LEFT JOIN product_info pi ON cp.product_id = pi.id
  347. ${ew.customSqlSegment}
  348. </select>
  349. <select id="salesVolumeStatistics" resultType="com.fjhx.sale.entity.contract.dto.ContractDto">
  350. SELECT SUM(cp.quantity) quantity,
  351. pi.name productName
  352. FROM contract_product cp
  353. LEFT JOIN product_info pi ON cp.product_id = pi.id
  354. ${ew.customSqlSegment}
  355. </select>
  356. <select id="getAccountRunningWaterByContractId"
  357. resultType="com.fjhx.account.entity.account.vo.AccountRunningWaterVo">
  358. SELECT arw.id,
  359. arw.create_time,
  360. ap.type,
  361. arw.currency,
  362. pad.money amount,
  363. pad.remark remarks,
  364. am.`name` accountManagementName,
  365. am.account_opening accountManagementOpening,
  366. arw.`name`,
  367. arw.status
  368. FROM contract c
  369. JOIN purchase p ON p.data_resource_id = c.id AND p.del_flag = 0
  370. JOIN pay_detail `pad` ON pad.purchase_id = p.id AND pad.del_flag = 0
  371. JOIN pay pa ON pad.pay_id = pa.id AND pa.del_flag = 0
  372. JOIN account_payment ap ON ap.business_id = pa.id AND ap.del_flag = 0
  373. JOIN account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
  374. LEFT JOIN account_management am
  375. ON arw.account_management_id = am.id AND am.del_flag = 0
  376. WHERE c.id = #{contractId}
  377. UNION ALL
  378. SELECT arw.id,
  379. arw.create_time,
  380. ap.type,
  381. arw.currency,
  382. arfd.amount,
  383. arfd.remarks,
  384. am.`name` accountManagementName,
  385. am.account_opening accountManagementOpening,
  386. arw.`name`,
  387. arw.status
  388. FROM contract c
  389. JOIN account_request_funds_detail arfd
  390. ON arfd.contract_id = c.id AND arfd.del_flag = 0
  391. JOIN account_payment ap
  392. ON ap.business_id = arfd.account_request_funds_id AND ap.del_flag = 0
  393. JOIN account_running_water arw ON arw.business_id = ap.id AND arw.del_flag = 0
  394. LEFT JOIN account_management am
  395. ON arw.account_management_id = am.id AND am.del_flag = 0
  396. WHERE c.id = #{contractId}
  397. group by arfd.id
  398. UNION ALL
  399. SELECT arw.id,
  400. arw.create_time,
  401. 30 type,
  402. arw.currency,
  403. clc.money,
  404. arw.remarks,
  405. am.`name` accountManagementName,
  406. am.account_opening accountManagementOpening,
  407. arw.`name`,
  408. arw.status
  409. FROM account_running_water arw
  410. JOIN claim cl ON cl.business_id = arw.id
  411. JOIN claim_contract clc ON clc.claim_id = cl.id
  412. JOIN contract c ON clc.contract_id = c.id
  413. LEFT JOIN account_management am
  414. ON arw.account_management_id = am.id AND am.del_flag = 0
  415. WHERE arw.del_flag = 0
  416. AND c.id = #{contractId}
  417. </select>
  418. <select id="getContractAndSamplePagez" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  419. SELECT
  420. *
  421. FROM
  422. (
  423. SELECT
  424. t1.id,
  425. t1.sell_corporation_id,
  426. t1.contract_type,
  427. 1 AS dataType,
  428. t1.`code`,
  429. t1.buy_corporation_id,
  430. t1.version,
  431. t1.amount,
  432. t1.create_user,
  433. t1.create_time,
  434. t1.refund_status,
  435. t1.`status`,
  436. (SELECT IFNULL(SUM(IFNULL(cc.money, 0) * IFNULL(arw.rate, 1)), 0)
  437. FROM claim_contract cc
  438. LEFT JOIN claim c ON cc.claim_id = c.id
  439. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  440. WHERE cc.contract_id = t1.id) AS sumClaimMoney,
  441. (SELECT IFNULL(SUM(cc.contract_money), 0)
  442. FROM claim_contract cc
  443. LEFT JOIN claim c ON cc.claim_id = c.id
  444. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  445. WHERE cc.contract_id = t1.id) AS sumContractClaimMoney,
  446. t1.currency
  447. FROM contract t1
  448. WHERE t1.`status` >= 30
  449. AND t1.`status` &lt; 88
  450. AND t1.is_show != 1
  451. AND t1.is_change = 0
  452. UNION
  453. SELECT
  454. t1.id, t1.sell_corporation_id, 3 AS contract_type, 2 AS dataType, t1.`code`, t1.buy_corporation_id, t1.versions AS version, t1.amount, t1.create_user, t1.create_time, IF( sumClaimMoney >= t1.amount, 20, IF ( sumClaimMoney != 0, 10, 0 ) ) AS refund_status, t1.`status`, t1.sumClaimMoney, t1.sumContractClaimMoney, t1.currency
  455. FROM
  456. (
  457. SELECT
  458. t1.*, (
  459. SELECT
  460. IFNULL( SUM ( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  461. FROM
  462. claim_contract cc
  463. LEFT JOIN claim c ON cc.claim_id = c.id
  464. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  465. WHERE
  466. cc.contract_id = t1.id
  467. ) AS sumClaimMoney, (
  468. SELECT
  469. IFNULL( SUM (cc.contract_money), 0 )
  470. FROM
  471. claim_contract cc
  472. LEFT JOIN claim c ON cc.claim_id = c.id
  473. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  474. WHERE
  475. cc.contract_id = t1.id
  476. ) AS sumContractClaimMoney
  477. FROM
  478. sample t1
  479. WHERE
  480. t1.`status` >= 30
  481. AND t1.`status` &lt; 88
  482. AND t1.is_show != 1
  483. AND t1.is_change = 0
  484. ) AS t1) t1
  485. ${ew.customSqlSegment}
  486. </select>
  487. <update id="updateContract" parameterType="com.fjhx.sale.entity.contract.po.Contract">
  488. update contract
  489. <set>
  490. <if test="id != null">id = #{id},</if>
  491. <if test="status != null">status = #{status},</if>
  492. <if test="isChange != null">is_change = #{isChange},</if>
  493. <if test="isShow != null">is_show = #{isShow},</if>
  494. <if test="oldContractId != null">old_contract_id = #{oldContractId},</if>
  495. <if test="approvedDate != null">approved_date = DATE_FORMAT(NOW(),'%Y-%m-%d %H:%m:%s'),</if>
  496. update_time = sysdate()
  497. </set>
  498. where id = #{upId}
  499. </update>
  500. <select id="getExportCopyList" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  501. SELECT * FROM (SELECT
  502. t1.*,
  503. CASE
  504. WHEN t1.purchaseAmountCNY &lt; t1.amountCNY AND t1.sumClaimMoney &lt; t1.amountCNY THEN 10
  505. WHEN t1.purchaseAmountCNY &lt; t1.amountCNY AND t1.sumClaimMoney >= t1.amountCNY THEN 20
  506. WHEN t1.purchaseAmountCNY >= t1.amountCNY AND t1.sumClaimMoney &lt; t1.amountCNY THEN 30
  507. WHEN t1.purchaseAmountCNY >= t1.amountCNY AND t1.sumClaimMoney >= t1.amountCNY THEN 40
  508. ELSE 88
  509. END AS orderStatus
  510. FROM
  511. (
  512. SELECT
  513. t1.*,
  514. IFNULL( t1.amount * t1.rate, 0 ) AS amountCNY,
  515. <if test="documentaryType neq null ">
  516. (SELECT count(1) FROM ehsd_purchase p LEFT JOIN ehsd_documentary pd ON p.id = pd.business_id WHERE p.data_resource_id = t1.id AND pd.documentary_type = #{documentaryType}) AS documentaryCount,
  517. </if>
  518. IFNULL(t1.advance_ratio,0)*IFNULL(t1.amount,0)/100 AS earnest,
  519. ( SELECT create_time FROM claim_contract WHERE contract_id = t1.id ORDER BY create_time ASC LIMIT 1) AS claimTime,
  520. ( SELECT count( 1 ) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id ) AS purchaseCount,
  521. ( SELECT IFNULL(SUM(amount*rate),0) FROM ehsd_purchase WHERE `status` = 30 AND data_resource_id = t1.id) AS
  522. purchaseAmountCNY,
  523. ( SELECT count( 1 ) FROM pack_detail WHERE FIND_IN_SET( contract_ids, t1.id ) AND shipment_status = 1 ) AS
  524. packCount,
  525. (
  526. SELECT
  527. IFNULL( SUM( IFNULL( cc.money, 0 ) * IFNULL( arw.rate, 1 )), 0 )
  528. FROM
  529. claim_contract cc
  530. LEFT JOIN claim c ON cc.claim_id = c.id
  531. LEFT JOIN account_running_water arw ON c.business_id = arw.id
  532. WHERE
  533. cc.contract_id = t1.id
  534. ) AS sumClaimMoney,
  535. cus.nick_name as salesmanName
  536. FROM
  537. contract t1
  538. left join customer cu on t1.buy_corporation_id = cu.id
  539. left join sys_user cus on cu.user_id = cus.user_id
  540. WHERE t1.`status` = 30
  541. ) t1
  542. ) t1
  543. ${ew.customSqlSegment}
  544. </select>
  545. <select id="getContractProductInfo" resultType="com.fjhx.item.entity.product.bo.ProductAnalysisBo">
  546. SELECT cp.product_id,
  547. count(DISTINCT (cp.contract_id)) AS orderCount,
  548. IFNULL(sum(cp.quantity), 0) AS saleQuantity,
  549. IFNULL(sum(cp.price * cp.quantity * c.rate), 0) AS saleAmount,
  550. IFNULL(min(cp.price * c.rate), 0) AS saleMinPrice,
  551. IFNULL(max(cp.price * c.rate), 0) AS saleMaxPrice
  552. FROM contract_product cp
  553. LEFT JOIN contract c ON cp.contract_id = c.id
  554. ${ew.customSqlSegment}
  555. </select>
  556. <select id="getPurchaseProductInfo" resultType="com.fjhx.item.entity.product.bo.ProductAnalysisBo">
  557. SELECT epp.product_id,
  558. IFNULL(sum(epp.quantity), 0) AS purchasesQuantity,
  559. IFNULL(sum(epp.price * epp.quantity * ep.rate), 0) AS purchasesAmount,
  560. IFNULL(min(epp.price * ep.rate), 0) AS purchasesMinPrice,
  561. IFNULL(max(epp.price * ep.rate), 0) AS purchasesMaxPrice
  562. FROM ehsd_purchase_product epp
  563. LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
  564. ${ew.customSqlSegment}
  565. </select>
  566. <select id="getProductPriceInfo" resultType="com.fjhx.sale.entity.contract.vo.ContractProductVo">
  567. SELECT cp.*,
  568. c.currency,
  569. c.code contractCode,
  570. c.is_settled
  571. FROM contract_product cp
  572. LEFT JOIN contract c ON cp.contract_id = c.id
  573. ${ew.customSqlSegment}
  574. </select>
  575. <select id="getProductionOrderCount" resultType="java.lang.Long">
  576. SELECT COUNT(1)
  577. FROM production_order po
  578. ${ew.customSqlSegment}
  579. </select>
  580. <delete id="removeProductionOrderByContractId">
  581. --生产订单
  582. DELETE
  583. FROM production_order
  584. WHERE contract_id = #{contractId};
  585. </delete>
  586. <delete id="removeProductionOrderDetailByContractId">
  587. --生产任务
  588. DELETE
  589. FROM production_order_detail
  590. WHERE contract_id = #{contractId};
  591. </delete>
  592. <delete id="removeMaterialPreparationoByContractId">
  593. --备料
  594. DELETE
  595. FROM material_preparation
  596. WHERE contract_id = #{contractId};
  597. </delete>
  598. <update id="setProductionOrderConfirmStatus">
  599. UPDATE production_order
  600. SET confirm_status = #{confirmStatus}
  601. WHERE id = #{id}
  602. </update>
  603. <update id="setProdOrderProdStatusByContractId">
  604. UPDATE production_order
  605. SET produce_status = #{produceStatus}
  606. WHERE contract_id = #{contractId}
  607. </update>
  608. <update id="setProdTaskProdStatusByContractId">
  609. UPDATE production_order_detail
  610. SET produce_status = #{produceStatus}
  611. WHERE contract_id = #{contractId}
  612. </update>
  613. <select id="detail" resultType="com.fjhx.sale.entity.contract.vo.ContractVo">
  614. SELECT c.*,
  615. IFNULL(sum(cc.contract_money), 0) as sumClaimMoney,
  616. (SELECT IFNULL(sum(swd.receipt_quantity * cp.price), 0)
  617. FROM contract_product cp
  618. LEFT JOIN stock_wait_details swd ON swd.contract_detail_id = cp.id
  619. WHERE cp.contract_id = c.id) AS shipmentAmount
  620. FROM contract c
  621. LEFT JOIN claim_contract cc ON cc.contract_id = c.id
  622. WHERE c.id = #{id}
  623. </select>
  624. </mapper>