FinanceReportMapper.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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.form.mapper.FinanceReportMapper">
  4. <select id="subjectBalance" resultType="com.fjhx.form.entity.SubjectBalanceBo">
  5. SELECT cib.id,
  6. t1.account_subjects_id AS subjects_id,
  7. t1.subjects_calculate_item_ids,
  8. t1.subjects_code,
  9. t1.subjects_name,
  10. t1.calculate_item_str,
  11. sum(t1.tradeAmount) AS trade_amount,
  12. cib.month1_amount,
  13. cib.month2_amount,
  14. cib.month3_amount,
  15. cib.month4_amount,
  16. cib.month5_amount,
  17. cib.month6_amount,
  18. cib.month7_amount,
  19. cib.month8_amount,
  20. cib.month9_amount,
  21. cib.month10_amount,
  22. cib.month11_amount,
  23. cib.month12_amount,
  24. cib.year_begin_borrow_amount
  25. FROM (SELECT ccd.id,
  26. ccd.account_subjects_id,
  27. IF(cc.trade_type = 10, cc.apply_time, ap.expenses_time) AS expenses_time,
  28. IF(cc.trade_type = 10, ccd.money, - ccd.money) AS tradeAmount,
  29. asj.subjects_code,
  30. asj.subjects_name,
  31. asj.sort,
  32. t2.calculate_item_ids,
  33. t2.calculate_item_types,
  34. t2.calculate_item_names,
  35. CONCAT(ccd.account_subjects_id, '-', t2.calculate_item_type_ids) AS subjects_calculate_item_ids,
  36. CONCAT(asj.subjects_name, ' - ',
  37. REPLACE(t2.calculate_item_names, ',', ' - ')) AS calculate_item_str
  38. FROM cost_control cc
  39. JOIN cost_control_detail ccd ON ccd.cost_control_id = cc.id
  40. LEFT JOIN account_payment ap ON ap.business_id = cc.id
  41. LEFT JOIN account_subjects asj ON ccd.account_subjects_id = asj.id
  42. LEFT JOIN (SELECT cci.cost_control_detail_id,
  43. GROUP_CONCAT(cci.business_id) AS calculate_item_ids,
  44. GROUP_CONCAT(cci.type) AS calculate_item_types,
  45. GROUP_CONCAT(cciv.calculate_item_name) AS calculate_item_names,
  46. GROUP_CONCAT(cci.type, '-', cci.business_id SEPARATOR '-') AS calculate_item_type_ids
  47. FROM cost_calculate_item cci
  48. JOIN calculate_item_view cciv
  49. ON FIND_IN_SET(cci.type, cciv.calculate_item_type)
  50. AND cci.business_id = cciv.calculate_item_id
  51. GROUP BY cci.cost_control_detail_id) t2 ON t2.cost_control_detail_id = ccd.id
  52. WHERE (cc.trade_type = 10 OR ap.`status` = 10)
  53. AND cc.`status` IN (30, 60)) t1
  54. LEFT JOIN calculate_item_balance cib
  55. ON cib.id_str = t1.subjects_calculate_item_ids and cib.year = YEAR ( t1.expenses_time )
  56. ${ew.customSqlSegment}
  57. GROUP BY t1.subjects_calculate_item_ids
  58. ORDER BY t1.sort ASC
  59. </select>
  60. <select id="getRemitDetailPage" resultType="com.fjhx.form.entity.RemitDetailVo">
  61. SELECT arw.id,
  62. arw.transaction_time AS transactionTime,
  63. am.`alias` AS accountAliasName,
  64. IF(NOT t1.remarks IS NULL, t1.remarks, t2.remarks) AS remark,
  65. arw.opposite_subject_name AS oppositeSubjectName1,
  66. arw.sale_expense_category AS saleGroupExpenseCategory,
  67. IF(arw.`status` = 10, arw.amount, 0) AS incomeAmount,
  68. IF(arw.`status` = 20, arw.amount, 0) AS expenditureAmount,
  69. arw.account_remainder AS balanceAmount,
  70. t2.supplier_names AS supplierName,
  71. t1.customerShortName AS customerShortName,
  72. t1.contract_codes AS contractCode,
  73. t2.subject_name AS subjectName,
  74. t2.calculate_item_type1 AS calculateItemType1,
  75. t2.calculate_item_type2 AS calculateItemType2,
  76. t2.calculate_item_name1 AS calculateItemName1,
  77. t2.calculate_item_name2 AS calculateItemName2,
  78. t2.opposite_subject_code AS oppositeSubjectCode,
  79. t2.opposite_subject_name AS oppositeSubjectName,
  80. t2.calculate_item_str AS calculateItemStr,
  81. am.jd_subject_code AS bankSubjectCode,
  82. am.jd_subject_name AS bankSubjectName,
  83. t2.subject_calculate_item_str AS subjectCalculateItemStr,
  84. cc.voucher_no AS voucherNo,
  85. t1.belongType AS belongType
  86. FROM account_running_water arw
  87. JOIN account_management am ON arw.account_management_id = am.id
  88. LEFT JOIN cost_control cc ON arw.cost_control_id = cc.id
  89. LEFT JOIN (SELECT cod.cost_control_id,
  90. GROUP_CONCAT(DISTINCT sui.`name` ) AS supplier_names,
  91. GROUP_CONCAT(DISTINCT asj.jd_subject_code) AS opposite_subject_code,
  92. GROUP_CONCAT(DISTINCT asj.jd_subject_name) AS opposite_subject_name,
  93. GROUP_CONCAT(DISTINCT asj.subjects_name) AS subject_name,
  94. GROUP_CONCAT(DISTINCT cci_1.calculate_item_type1) AS calculate_item_type1,
  95. GROUP_CONCAT(DISTINCT cci_1.calculate_item_name1) AS calculate_item_name1,
  96. GROUP_CONCAT(DISTINCT cci_1.calculate_item_type2) AS calculate_item_type2,
  97. GROUP_CONCAT(DISTINCT cci_1.calculate_item_name2) AS calculate_item_name2,
  98. GROUP_CONCAT(DISTINCT cci_1.calculate_item_str) AS calculate_item_str,
  99. GROUP_CONCAT(DISTINCT asj.subjects_name, CONCAT(' - ', cci_1.calculate_item_name1),
  100. IF(cci_1.calculate_item_name2 is null, '',
  101. CONCAT(' - ', cci_1.calculate_item_name2))) AS subject_calculate_item_str,
  102. GROUP_CONCAT(cod.remark) AS remarks
  103. FROM cost_control_detail cod
  104. LEFT JOIN supplier_info sui ON cod.supplier_id = sui.id
  105. LEFT JOIN account_subjects asj ON cod.account_subjects_id = asj.id
  106. LEFT JOIN (SELECT cci.cost_control_detail_id,
  107. GROUP_CONCAT(CONCAT_WS('---', cci.type,
  108. IFNULL(civ.calculate_item_code, ''),
  109. civ.calculate_item_name) SEPARATOR '||') AS calculate_item_str,
  110. GROUP_CONCAT(CASE WHEN cci.sort = 1 THEN cci.business_id END) AS calculate_item_id1,
  111. GROUP_CONCAT(CASE WHEN cci.sort = 1 THEN cci.type END) AS calculate_item_type1,
  112. GROUP_CONCAT(CASE WHEN cci.sort = 1 THEN civ.calculate_item_name END) AS calculate_item_name1,
  113. GROUP_CONCAT(CASE WHEN cci.sort = 2 THEN cci.business_id END) AS calculate_item_id2,
  114. GROUP_CONCAT(CASE WHEN cci.sort = 2 THEN cci.type END) AS calculate_item_type2,
  115. GROUP_CONCAT(CASE WHEN cci.sort = 2 THEN civ.calculate_item_name END) AS calculate_item_name2
  116. FROM cost_calculate_item cci
  117. LEFT JOIN calculate_item_view civ
  118. ON cci.business_id = civ.calculate_item_id
  119. AND
  120. FIND_IN_SET(cci.type, civ.calculate_item_type)
  121. GROUP BY cci.cost_control_detail_id) cci_1
  122. on cci_1.cost_control_detail_id = cod.id
  123. GROUP BY cod.cost_control_id) t2 ON t2.cost_control_id = cc.id
  124. LEFT JOIN (SELECT cl.business_id,
  125. cl.amount,
  126. GROUP_CONCAT(c.`code`) AS contract_codes,
  127. cu.`name` AS customerName,
  128. cu.short_name AS customerShortName,
  129. GROUP_CONCAT(c.remark) AS contract_remarks,
  130. GROUP_CONCAT(IF(c.belong_type = 1, "归属工厂",
  131. IF(c.belong_type = 2, "归属业务", c.belong_type))) AS belongType,
  132. GROUP_CONCAT(cu.`name`, ' 订单号:', c.`code`, ' 订单金额:', c.currency, ' ',
  133. c.amount) AS remarks
  134. FROM claim cl
  135. JOIN claim_contract clo ON clo.claim_id = cl.id
  136. LEFT JOIN contract c ON clo.contract_id = c.id
  137. LEFT JOIN customer cu ON c.buy_corporation_id = cu.id
  138. GROUP BY cl.id) t1 ON t1.business_id = arw.id
  139. ${ew.customSqlSegment}
  140. </select>
  141. <select id="getAccountsPayablePage" resultType="com.fjhx.form.entity.AccountsPayableVo">
  142. SELECT t1.id_str,
  143. t1.supplier_id,
  144. t1.warehouse_id,
  145. CONCAT(
  146. '{',
  147. GROUP_CONCAT(
  148. '"',
  149. date_format(t1.account_period, '%c'),
  150. '":',
  151. '{"arrivalAmount":',
  152. IFNULL(t1.arrival_amount, 0),
  153. ',"arrivalAdjustAmount":',
  154. IFNULL(t1.arrival_adjust_amount, 0),
  155. ',"backAmount":',
  156. IFNULL(t1.back_amount, 0),
  157. ',"taxAmount":',
  158. IFNULL(t1.tax_amount, 0),
  159. ',"paymentAmount":',
  160. IFNULL(t1.payment_amount, 0),
  161. '}'
  162. ),
  163. '}'
  164. ) AS dataJson
  165. FROM (SELECT t1.id_str,
  166. t1.supplier_id,
  167. t1.warehouse_id,
  168. t1.account_period AS account_period,
  169. sum(arrival_amount) AS arrival_amount,
  170. sum(back_amount) AS back_amount,
  171. sum(arrival_adjust_amount) AS arrival_adjust_amount,
  172. sum(amount) AS amount,
  173. sum(amount_including_tax) AS amount_including_tax,
  174. sum(payment_amount) AS payment_amount,
  175. (sum(amount_including_tax) - sum(amount)) AS tax_amount
  176. FROM (SELECT CONCAT(ep.sell_corporation_id, '-', sj.warehouse_id) AS id_str,
  177. ep.sell_corporation_id as supplier_id,
  178. sj.warehouse_id,
  179. sjd.account_period,
  180. IF
  181. (
  182. sj.type =
  183. 104,
  184. epp.price *
  185. sjd.quantity,
  186. 0) AS arrival_amount,
  187. IF
  188. (
  189. sj.type =
  190. 6,
  191. epp.price *
  192. sjd.quantity,
  193. 0) AS back_amount,
  194. ad.adjust_amount AS arrival_adjust_amount,
  195. epp.price * sjd.quantity AS amount,
  196. epp.price_including_tax * sjd.quantity AS amount_including_tax,
  197. NULL AS payment_amount
  198. FROM stock_journal_details sjd
  199. LEFT JOIN arrival_detail ad ON sjd.arrival_detail_id = ad.id
  200. LEFT JOIN ehsd_purchase_product epp ON sjd.purchase_detail_id = epp.id
  201. JOIN stock_journal sj ON sjd.stock_journal_id = sj.id
  202. JOIN ehsd_purchase ep ON sjd.purchase_id = ep.id
  203. UNION ALL
  204. SELECT CONCAT(ccd.supplier_id, '-', sj.warehouse_id) AS id_str,
  205. ccd.supplier_id,
  206. sj.warehouse_id,
  207. ccd.account_period,
  208. NULL AS arrival_amount,
  209. NULL AS back_amount,
  210. NULL AS arrival_adjust_amount,
  211. NULL AS amount,
  212. NULL AS amount_including_tax,
  213. ccd.money AS payment_amount
  214. FROM cost_control_detail ccd
  215. JOIN stock_journal_details sjd
  216. ON FIND_IN_SET(sjd.id, ccd.stock_journal_details_ids)
  217. JOIN stock_journal sj ON sjd.stock_journal_id = sj.id
  218. WHERE sjd.settle_status = 1) t1
  219. WHERE
  220. YEAR ( t1.account_period ) = #{year}
  221. GROUP BY
  222. t1.id_str,
  223. date_format( t1.account_period, '%Y-%m' )) AS t1
  224. GROUP BY t1.id_str
  225. </select>
  226. </mapper>