ContractMapper.xml 30 KB

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