ContractMapper.xml 30 KB

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