ContractMapper.xml 27 KB

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