AssetsStatisticalStatementMapper.xml 78 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  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.dayou.mapper.AssetsStatisticalStatementMapper">
  4. <!--资产台账查询SQL-->
  5. <sql id="assetsLedgerQuery">
  6. SELECT (@i := @i + 1) AS id,
  7. assets.id AS assetsId,
  8. assets.order_id AS orderId,
  9. statement.production_no AS statementNo,
  10. report.production_no AS reportNo,
  11. CASE report.production_type WHEN 'LETTER' THEN '意见函' WHEN 'CONSULT' THEN '咨询报告' WHEN 'REPORT' THEN '评估报告' ELSE '-' END AS productionType,
  12. report.valuation_basis_date AS valuationBasisDate,
  13. report.create_production_date AS createReportDate,
  14. COALESCE(report.assets_name, statement.assets_name, assets.name) AS projectName,
  15. IF(nodeInfo.state = 'CLOSED','项目终止',IF(nodeInfo.name IS NULL,IF(statement.production_no IS NULL, '撰写意见书', '撰写报告'),nodeInfo.name)) AS currentNodeName,
  16. assets.security AS security,
  17. assets.significant_assets_reorganization AS significantAssetsReorganization,
  18. assets.state_assets AS stateAssets,
  19. assets.foreign_assets_involved AS foreignAssetsInvolved,
  20. assets.dispense_benefit AS dispenseBenefit,
  21. manager.name AS clientManagerName,
  22. principal.name AS principalName,
  23. (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_id) AS customerName,
  24. (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
  25. assets.bailor AS bailor,
  26. assets.bailor_contact_tel AS bailorContactTel,
  27. GROUP_CONCAT(target.id SEPARATOR '; ') AS targetId,
  28. GROUP_CONCAT(target.purpose_name SEPARATOR '; ') AS purposeName,
  29. GROUP_CONCAT(target.type_name SEPARATOR '; ') AS valueTypeName,
  30. GROUP_CONCAT(target.targetTypename SEPARATOR '; ') AS targetTypename,
  31. GROUP_CONCAT(target.secTargetTypaName SEPARATOR '; ') AS secTargetTypaName,
  32. GROUP_CONCAT(target.evaluation_method_id SEPARATOR ', ') AS evaluationMethods,
  33. GROUP_CONCAT(target.defined_evaluation_method SEPARATOR '; ') AS definedEvaluationMethod,
  34. GROUP_CONCAT(target.choice_evaluation_method_id SEPARATOR ', ') AS choiceEvaluationMethods,
  35. GROUP_CONCAT(target.choice_defined_evaluation_method SEPARATOR '; ') AS choiceDefinedEvaluationMethod,
  36. GROUP_CONCAT(target.estimated_value SEPARATOR '; ') AS estimatedValue,
  37. fund.should_amount AS shouldAmount,
  38. fund.real_amount AS realAmount,
  39. report.signatory AS signatory,
  40. report.repertory_out_time AS repertoryOutTime,
  41. (
  42. SELECT user.name
  43. FROM work_flow_node_instance AS instance,
  44. work_task_record AS record,
  45. work_node AS node,
  46. user
  47. WHERE instance.id = record.instance_id
  48. AND record.handler_id = user.id
  49. AND node.id = instance.node_id
  50. AND instance.business_id = assets.id
  51. AND instance.business_sub_id = statement.production_no
  52. AND node.code = 'REVIEW_STATEMENT'
  53. AND instance.deleted = 0
  54. ) AS statementCheckerName,
  55. (
  56. SELECT user.name
  57. FROM work_flow_node_instance AS instance,
  58. work_task_record AS record,
  59. work_node AS node,
  60. user
  61. WHERE instance.id = record.instance_id
  62. AND record.handler_id = user.id
  63. AND node.id = instance.node_id
  64. AND instance.business_id = assets.id
  65. AND instance.business_sub_id = statement.production_no
  66. AND node.code = 'REEXAMINE_STATEMENT'
  67. AND instance.deleted = 0
  68. ) AS statementReCheckerName,
  69. (
  70. SELECT user.name
  71. FROM work_flow_node_instance AS instance,
  72. work_task_record AS record,
  73. work_node AS node,
  74. user
  75. WHERE instance.id = record.instance_id
  76. AND record.handler_id = user.id
  77. AND node.id = instance.node_id
  78. AND instance.business_id = assets.id
  79. AND instance.business_min_id = report.production_no
  80. AND node.code = 'CHECK_REPORT'
  81. AND instance.deleted = 0
  82. ) AS reportCheckerName,
  83. (
  84. SELECT user.name
  85. FROM work_flow_node_instance AS instance,
  86. work_task_record AS record,
  87. work_node AS node,
  88. user
  89. WHERE instance.id = record.instance_id
  90. AND record.handler_id = user.id
  91. AND node.id = instance.node_id
  92. AND instance.business_id = assets.id
  93. AND instance.business_min_id = report.production_no
  94. AND node.code = 'RECHECK_REPORT'
  95. AND instance.deleted = 0
  96. ) AS reportReCheckerName,
  97. (
  98. SELECT user.name
  99. FROM work_flow_node_instance AS instance,
  100. work_task_record AS record,
  101. work_node AS node,
  102. user
  103. WHERE instance.id = record.instance_id
  104. AND record.handler_id = user.id
  105. AND node.id = instance.node_id
  106. AND instance.business_id = assets.id
  107. AND instance.business_min_id = report.production_no
  108. AND node.code = 'FOURTH_CHECK_REPORT'
  109. AND instance.deleted = 0
  110. ) AS reportFourthCheckerName
  111. FROM (SELECT @i := 0) AS sort,assets
  112. LEFT JOIN (
  113. SELECT target.id,
  114. target.assets_id,
  115. purpose_name,
  116. vType.type_name,
  117. evaluation_method_id,
  118. defined_evaluation_method,
  119. choice_evaluation_method_id,
  120. choice_defined_evaluation_method,
  121. type.type_name AS targetTypename,
  122. secType.type_name AS secTargetTypaName,
  123. estimated_value,
  124. statement_no,
  125. report_no
  126. FROM assets_evaluation_target AS target
  127. LEFT JOIN assets_evaluation_target_purpose AS purpose ON evaluation_purpose_id = purpose.id
  128. LEFT JOIN assets_evaluation_target_type AS type ON evaluation_type_id = type.id
  129. LEFT JOIN assets_evaluation_target_type AS secType ON evaluation_type_sec_id = type.id
  130. LEFT JOIN assets_value_type AS vType ON assets_value_id = vType.id
  131. ) AS target ON assets.id = target.assets_id
  132. LEFT JOIN assets_production AS report ON report_no = report.production_no
  133. LEFT JOIN assets_production AS statement ON statement_no = statement.production_no
  134. LEFT JOIN user AS manager ON manager.id = assets.client_manager_id
  135. LEFT JOIN user AS principal ON principal.id = assets.principal_id
  136. LEFT JOIN order_fund AS fund ON fund.business_id = assets.id AND fund.business_type = 'ASSET_BUSINESS'
  137. LEFT JOIN (
  138. SELECT node.`name`,instance.business_id,instance.business_sub_id,instance.business_min_id,instance.state
  139. FROM work_flow_node_instance AS instance,
  140. work_node AS node
  141. WHERE instance.node_id = node.id
  142. AND node.deleted = 0
  143. AND instance.deleted = 0
  144. AND (instance.state = 'PENDING' OR instance.state = 'CLOSED' OR
  145. (instance.state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING'))
  146. ) AS nodeInfo ON nodeInfo.business_id = assets.id
  147. AND (IF(statement.production_no IS NULL, nodeInfo.business_sub_id IS NULL,
  148. statement.production_no = nodeInfo.business_sub_id))
  149. AND (IF(report.production_no IS NULL, nodeInfo.business_min_id IS NULL,
  150. report.production_no = nodeInfo.business_min_id))
  151. WHERE assets.deleted = 0
  152. <if test="dto != null and dto.keyWord != null and dto.keyWord != '' ">
  153. AND (
  154. assets.order_id LIKE CONCAT('%',#{dto.keyWord},'%') OR
  155. statement.assets_name LIKE CONCAT('%',#{dto.keyWord},'%') OR
  156. report.assets_name LIKE CONCAT('%',#{dto.keyWord},'%')
  157. )
  158. </if>
  159. <if test="dto != null and dto.clientManagerId">
  160. AND assets.client_manager_id = #{dto.clientManagerId}
  161. </if>
  162. <if test="dto != null and dto.principalId">
  163. AND assets.principal_id = #{dto.principalId}
  164. </if>
  165. <if test="dto != null and dto.departmentId != null">
  166. AND assets.department_id = #{dto.departmentId}
  167. </if>
  168. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  169. AND (assets.created BETWEEN #{dto.startTime} AND #{dto.endTime})
  170. </if>
  171. <if test="dto != null and dto.assetsBusinessGener">
  172. AND assets.assets_business_gener = #{dto.assetsBusinessGener}
  173. </if>
  174. GROUP BY statementNo,reportNo,assets.id
  175. ORDER BY assets.created DESC
  176. </sql>
  177. <!--获取资产台账-->
  178. <select id="getAssetsLedgerVO" resultType="com.dayou.vo.AssetsLedgerVO">
  179. <include refid="assetsLedgerQuery" />
  180. </select>
  181. <!--资产台账导出-->
  182. <select id="assetsLedgerVOExport" resultType="com.dayou.vo.AssetsLedgerVO">
  183. <include refid="assetsLedgerQuery" />
  184. </select>
  185. <sql id="assetsPerformanceDeductionQuery">
  186. SELECT
  187. department.id AS departmentId,
  188. department.name AS departmentName,
  189. COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore,
  190. COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore,
  191. COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore,
  192. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
  193. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
  194. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
  195. COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore,
  196. COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore,
  197. COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore,
  198. COALESCE (
  199. COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ),
  200. 0
  201. ) AS allMistakeScore
  202. FROM
  203. (
  204. SELECT
  205. department.id,
  206. department.name
  207. FROM
  208. department,
  209. sorted_department
  210. WHERE
  211. department.id = sorted_department.department_id
  212. AND department.deleted = 0
  213. AND sorted_department.business_type = 'ASSET_BUSINESS'
  214. ) AS department
  215. LEFT JOIN (
  216. SELECT
  217. department_id,
  218. assets.created,
  219. assets_production.id AS production_id
  220. FROM
  221. assets
  222. LEFT JOIN assets_production ON assets_production.business_id = assets.id
  223. AND assets_production.deleted = 0
  224. ) AS orderInfo ON department.id = orderInfo.department_id
  225. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  226. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审'
  227. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  228. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  229. </if>
  230. ) AS checkPer ON checkPer.production_id = orderInfo.production_id
  231. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  232. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审'
  233. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  234. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  235. </if>
  236. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  237. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  238. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '四审'
  239. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  240. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  241. </if>
  242. ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id
  243. <where>
  244. <if test="dto != null and dto.departmentId != null">
  245. AND department.id = #{dto.departmentId}
  246. </if>
  247. </where>
  248. GROUP BY department.id
  249. </sql>
  250. <!--评估部绩效扣分查询-->
  251. <select id="getAssetsPerformanceDeductionVO" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
  252. <include refid="assetsPerformanceDeductionQuery" />
  253. </select>
  254. <!--评估部绩效扣分导出-->
  255. <select id="assetsPerformanceDeductionVOExport" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
  256. <include refid="assetsPerformanceDeductionQuery" />
  257. </select>
  258. <!--查询错误详情SQL-->
  259. <sql id="assetsPerformanceDeductionDetailQuery">
  260. SELECT performance.id,
  261. assets.order_id AS orderId,
  262. assets.members AS members,
  263. production.assets_name AS projectName,
  264. customer.name AS customerName,
  265. production.production_no AS productionNo,
  266. (CASE production.production_type
  267. WHEN 'STATEMENT' THEN '意见书'
  268. WHEN 'LETTER' THEN '意见函'
  269. WHEN 'CONSULT' THEN '咨询报告'
  270. WHEN 'REPORT' THEN '评估报告'
  271. END) AS productionType,
  272. principal.name AS principalName,
  273. checker.name AS checkerName,
  274. (CASE #{dto.mistakeType}
  275. WHEN 'normal' THEN performance.normal_mistake
  276. WHEN 'hard' THEN performance.hard_mistake
  277. WHEN 'fatal' THEN performance.fatal_mistake
  278. ELSE '-'
  279. END) AS mistakeCount,
  280. production.evaluate_amount AS evaluateAmount,
  281. performance.modified AS checkTime,
  282. performance.reason AS reason
  283. FROM assets
  284. LEFT JOIN assets_production AS production ON assets.id = production.business_id
  285. LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id
  286. LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
  287. LEFT JOIN user AS principal ON principal.id = assets.principal_id
  288. LEFT JOIN user AS checker ON checker.id = performance.check_id
  289. WHERE assets.department_id = #{dto.departmentId}
  290. AND performance.check_loop = #{dto.checkLoop}
  291. AND (performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  292. <if test="dto.principalId != null">
  293. AND assets.principal_id = #{dto.principalId}
  294. </if>
  295. <if test="dto.mistakeType == 'normal' ">
  296. AND performance.normal_mistake > 0
  297. </if>
  298. <if test="dto.mistakeType == 'hard' ">
  299. AND performance.hard_mistake > 0
  300. </if>
  301. <if test="dto.mistakeType == 'fatal' ">
  302. AND performance.fatal_mistake > 0
  303. </if>
  304. </sql>
  305. <!--查询错误详情列表-->
  306. <select id="getAssetsPerformanceDeductionDetail" resultType="com.dayou.vo.AssetsPerformanceDeductionDetailVO">
  307. <include refid="assetsPerformanceDeductionDetailQuery" />
  308. </select>
  309. <!--错误详情列表导出-->
  310. <select id="assetsPerformanceDeductionDetailExport" resultType="com.dayou.vo.AssetsPerformanceDeductionDetailVO">
  311. <include refid="assetsPerformanceDeductionDetailQuery" />
  312. </select>
  313. <!--评估人员绩效扣分查询SQL-->
  314. <sql id="assetsPerformanceDeductionByUserQuery">
  315. SELECT user.id AS userId,
  316. user.userName,
  317. user.departmentId,
  318. user.departmentName,
  319. COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore,
  320. COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore,
  321. COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore,
  322. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
  323. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
  324. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
  325. COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) AS fourthCheckNormalMistakeScore,
  326. COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) AS fourthCheckHardMistakeScore,
  327. COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ) AS fourthCheckFatalMistakeScore,
  328. COALESCE (
  329. COALESCE ( SUM( checkPer.normal_mistake ), 0 ) + COALESCE ( SUM( checkPer.hard_mistake ), 0 ) + COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.normal_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.hard_mistake ), 0 ) + COALESCE ( SUM( fourthCheckPer.fatal_mistake ), 0 ),
  330. 0
  331. ) AS allMistakeScore
  332. FROM (SELECT user.id AS id,
  333. user.`name` AS userName,
  334. department.name AS departmentName,
  335. department.id AS departmentId
  336. FROM user,post,user_post,sorted_department,department
  337. WHERE `user`.id = user_post.user_id
  338. AND user_post.post_id = post.id
  339. AND post.department_id = sorted_department.department_id
  340. AND sorted_department.department_id = department.id
  341. AND sorted_department.deleted = 0
  342. AND user_post.deleted = 0
  343. AND sorted_department.business_type = 'ASSET_BUSINESS'
  344. GROUP BY user.id
  345. ) AS user
  346. LEFT JOIN (
  347. SELECT
  348. principal_id,
  349. assets.created,
  350. assets_production.id AS production_id
  351. FROM
  352. assets
  353. LEFT JOIN assets_production ON assets_production.business_id = assets.id
  354. AND assets_production.deleted = 0
  355. ) AS orderInfo ON user.id = orderInfo.principal_id
  356. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  357. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '初审'
  358. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  359. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  360. </if>
  361. ) AS checkPer ON checkPer.production_id = orderInfo.production_id
  362. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  363. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '复审'
  364. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  365. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  366. </if>
  367. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  368. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  369. business_production_performance WHERE business_type = 'ASSET_BUSINESS' AND check_loop = '四审'
  370. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  371. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  372. </if>
  373. ) AS fourthCheckPer ON fourthCheckPer.production_id = orderInfo.production_id
  374. <where>
  375. <if test="dto != null and dto.departmentId != null">
  376. AND user.departmentId = #{dto.departmentId}
  377. </if>
  378. <if test="dto != null and dto.userName != null">
  379. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  380. </if>
  381. </where>
  382. GROUP BY user.id
  383. </sql>
  384. <!--评估人员绩效扣分查询-->
  385. <select id="getAssetsPerformanceDeductionVOByEvaluator" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
  386. <include refid="assetsPerformanceDeductionByUserQuery" />
  387. </select>
  388. <!--评估人员绩效扣分导出-->
  389. <select id="assetsPerformanceDeductionVOByEvaluatorExport" resultType="com.dayou.vo.AssetsPerformanceDeductionVO">
  390. <include refid="assetsPerformanceDeductionByUserQuery" />
  391. </select>
  392. <!--评估部效率查询-->
  393. <select id="getAssetsEvaluateDepEfficiencyVO" resultType="com.dayou.vo.AssetsEvaluateEfficiencyVO">
  394. SELECT department.id AS departmentId,
  395. department.name AS departmentName,
  396. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodOrderVolume,
  397. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYOrderVolume,
  398. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND department_id = department.id) AS QoQOrderVolume,
  399. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodStatementVolume,
  400. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYStatementVolume,
  401. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND department_id = department.id) AS QoQStatementVolume,
  402. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodReportVolume,
  403. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYReportVolume,
  404. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND department_id = department.id) AS QoQReportVolume,
  405. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodShouldAmountSum,
  406. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYShouldAmountSum,
  407. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND department_id = department.id) AS QoQShouldAmountSum,
  408. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND department_id = department.id) AS currentPeriodRealAmountSum,
  409. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND department_id = department.id) AS YoYRealAmountSum,
  410. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND department_id = department.id) AS QoQRealAmountSum,
  411. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND department_id = department.id) AS totalRealAmountSum
  412. FROM
  413. (
  414. SELECT
  415. department.id,
  416. department.name
  417. FROM
  418. department,
  419. sorted_department
  420. WHERE
  421. department.id = sorted_department.department_id
  422. AND department.deleted = 0
  423. AND sorted_department.business_type = 'ASSET_BUSINESS'
  424. <if test="dto != null and dto.departmentId != null">
  425. AND department.id = #{dto.departmentId}
  426. </if>
  427. ) AS department
  428. GROUP BY department.id
  429. </select>
  430. <!--评估人员效率查询-->
  431. <select id="getAssetsEvaluatePerEfficiencyVO" resultType="com.dayou.vo.AssetsEvaluateEfficiencyVO">
  432. SELECT user.id AS userId,
  433. user.userName AS userName,
  434. user.departmentId AS departmentId,
  435. user.departmentName AS departmentName,
  436. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodOrderVolume,
  437. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYOrderVolume,
  438. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQOrderVolume,
  439. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodStatementVolume,
  440. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYStatementVolume,
  441. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQStatementVolume,
  442. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodReportVolume,
  443. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYReportVolume,
  444. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQReportVolume,
  445. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodShouldAmountSum,
  446. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYShouldAmountSum,
  447. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQShouldAmountSum,
  448. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodRealAmountSum,
  449. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYRealAmountSum,
  450. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND principal_id = user.id) AS QoQRealAmountSum,
  451. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND principal_id = user.id) AS totalRealAmountSum
  452. FROM
  453. (SELECT user.id AS id,
  454. user.`name` AS userName,
  455. department.name AS departmentName,
  456. department.id AS departmentId
  457. FROM user,post,user_post,sorted_department,department
  458. WHERE `user`.id = user_post.user_id
  459. AND user_post.post_id = post.id
  460. AND post.department_id = sorted_department.department_id
  461. AND sorted_department.department_id = department.id
  462. AND sorted_department.deleted = 0
  463. AND user_post.deleted = 0
  464. AND sorted_department.business_type = 'ASSET_BUSINESS'
  465. GROUP BY user.id
  466. ) AS user
  467. <where>
  468. <if test="dto != null and dto.departmentId != null">
  469. AND user.departmentId = #{dto.departmentId}
  470. </if>
  471. <if test="dto != null and dto.userName != null">
  472. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  473. </if>
  474. <if test="dto != null and dto.userName != null">
  475. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  476. </if>
  477. </where>
  478. GROUP BY user.id
  479. </select>
  480. <sql id="assetsEvaEffDetailQuery">
  481. SELECT
  482. assets.order_id AS orderId,
  483. assets.name AS projectName,
  484. customer.name AS customerName,
  485. (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
  486. (SELECT name FROM customer_linkman WHERE id = assets.clientele_contact_id) AS linkmanName,
  487. bailor,
  488. report.production_no AS reportNo,
  489. (SELECT name FROM user WHERE id = assets.principal_id) AS principalName,
  490. members,
  491. (SELECT name FROM user WHERE id = assets.client_manager_id) AS clientManagerName,
  492. (SELECT SUM(check_value) FROM assets_evaluation_target WHERE report_no = report.production_no AND deleted = 0) AS checkValueSum,
  493. statement.created AS writeStatementDate,
  494. report.created AS writeReportDate,
  495. order_fund.should_amount AS shouldAmount,
  496. order_fund.real_amount AS realAmount,
  497. nodeInfo.currentNodeName,
  498. nodeInfo.handlerName
  499. FROM assets
  500. LEFT JOIN user ON user.id = assets.principal_id
  501. LEFT JOIN customer_company AS customer ON customer.id = assets.clientele_id
  502. LEFT JOIN (SELECT nodeInstance.id AS currentNodeId,
  503. user.name AS handlerName,
  504. node.name AS currentNodeName,
  505. nodeInstance.business_id AS businessId,
  506. nodeInstance.business_sub_id,
  507. nodeInstance.business_min_id,
  508. nodeInstance.state
  509. FROM work_flow_node_instance AS nodeInstance,
  510. work_task_record AS record,
  511. user,
  512. work_node AS node
  513. WHERE (state = 'PENDING' OR( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ))
  514. AND nodeInstance.node_id = node.id
  515. AND record.handler_id = user.id
  516. AND nodeInstance.deleted = 0
  517. AND record.instance_id = nodeInstance.id
  518. AND nodeInstance.business_type = 'ASSET_BUSINESS'
  519. <if test="dto != null and dto.efficiencyType == 'order' or dto.efficiencyType == 'report'">
  520. AND nodeInstance.business_min_id IS NOT NULL
  521. </if>
  522. <if test="dto != null and dto.efficiencyType == 'statement'">
  523. AND nodeInstance.business_sub_id IS NOT NULL
  524. </if>
  525. ) AS nodeInfo ON nodeInfo.businessId = assets.id
  526. LEFT JOIN assets_production AS statement ON statement.business_id =nodeInfo.businessId AND statement.production_no = nodeInfo.business_sub_id AND statement.deleted = 0 AND statement.production_type = 'STATEMENT'
  527. LEFT JOIN assets_production AS report ON report.business_id =nodeInfo.businessId AND report.production_no = nodeInfo.business_min_id AND report.deleted = 0 AND report.production_type != 'STATEMENT'
  528. LEFT JOIN order_fund ON order_fund.business_id = assets.id AND business_type = 'ASSET_BUSINESS' AND order_fund.deleted = 0
  529. WHERE assets.deleted = 0
  530. <if test="dto != null and dto.customerId">
  531. AND assets.clientele_id = #{dto.customerId}
  532. </if>
  533. <if test="dto != null and dto.clienteleContactId">
  534. AND assets.clientele_contact_id = #{dto.clienteleContactId}
  535. </if>
  536. <if test="dto != null and dto.departmentId">
  537. AND assets.department_id = #{dto.departmentId}
  538. </if>
  539. <if test="dto != null and dto.marketDepartmentId">
  540. AND assets.market_department_id = #{dto.marketDepartmentId}
  541. </if>
  542. <if test="dto != null and dto.principalId != null">
  543. AND assets.principal_id = #{dto.principalId}
  544. </if>
  545. <if test="dto != null and dto.clientManagerId != null">
  546. AND assets.client_manager_id = #{dto.clientManagerId}
  547. </if>
  548. <if test="dto != null and dto.efficiencyType == 'order'">
  549. AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  550. </if>
  551. <if test="dto != null and dto.efficiencyType == 'statement'">
  552. AND statement.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  553. </if>
  554. <if test="dto != null and dto.efficiencyType == 'report'">
  555. AND report.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  556. </if>
  557. <if test="dto != null and dto.efficiencyType == 'should'">
  558. AND order_fund.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  559. AND order_fund.should_amount IS NOT NULL
  560. </if>
  561. <if test="dto != null and dto.efficiencyType == 'real'">
  562. AND order_fund.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  563. AND order_fund.real_amount IS NOT NULL
  564. </if>
  565. ORDER BY assets.created DESC
  566. </sql>
  567. <!--效率详情列表查询-->
  568. <select id="getAssetsEvaEffDetailVO" resultType="com.dayou.vo.AssetsEfficiencyDetailVO">
  569. <include refid="assetsEvaEffDetailQuery" />
  570. </select>
  571. <!--效率详情列表导出-->
  572. <select id="assetsEvaEffDetailVOExport" resultType="com.dayou.vo.AssetsEfficiencyDetailVO">
  573. <include refid="assetsEvaEffDetailQuery" />
  574. </select>
  575. <!--市场部效率查询-->
  576. <select id="getAssetsMarketDepEfficiencyVO" resultType="com.dayou.vo.AssetsMarketEfficiencyVO">
  577. SELECT department.id AS departmentId,
  578. department.name AS departmentName,
  579. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodOrderVolume,
  580. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYOrderVolume,
  581. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND market_department_id = department.id) AS QoQOrderVolume,
  582. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodStatementVolume,
  583. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYStatementVolume,
  584. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND market_department_id = department.id) AS QoQStatementVolume,
  585. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodReportVolume,
  586. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYReportVolume,
  587. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND market_department_id = department.id) AS QoQReportVolume,
  588. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodShouldAmountSum,
  589. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYShouldAmountSum,
  590. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND market_department_id = department.id) AS QoQShouldAmountSum,
  591. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodRealAmountSum,
  592. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYRealAmountSum,
  593. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND market_department_id = department.id) AS QoQRealAmountSum,
  594. (SELECT COUNT(assets.id) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.real_amount IS NOT NULL AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodRealAmountOrderCount,
  595. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND market_department_id = department.id) AS totalRealAmountSum
  596. FROM
  597. (
  598. SELECT department.name,
  599. department.id
  600. FROM assets,department
  601. WHERE assets.market_department_id = department.id
  602. <if test="dto != null and dto.departmentId != null">
  603. AND department.id = #{dto.departmentId}
  604. </if>
  605. GROUP BY department.id
  606. ) AS department
  607. GROUP BY department.id
  608. </select>
  609. <!--客户经理效率查询-->
  610. <select id="getAssetsMarketPerEfficiencyVO" resultType="com.dayou.vo.AssetsMarketEfficiencyVO">
  611. SELECT user.id AS userId,
  612. user.userName,
  613. user.departmentId,
  614. user.departmentName,
  615. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodOrderVolume,
  616. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYOrderVolume,
  617. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND client_manager_id = user.id) AS QoQOrderVolume,
  618. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodStatementVolume,
  619. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYStatementVolume,
  620. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND client_manager_id = user.id) AS QoQStatementVolume,
  621. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodReportVolume,
  622. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYReportVolume,
  623. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND client_manager_id = user.id) AS QoQReportVolume,
  624. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodShouldAmountSum,
  625. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYShouldAmountSum,
  626. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND client_manager_id = user.id) AS QoQShouldAmountSum,
  627. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodRealAmountSum,
  628. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYRealAmountSum,
  629. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND client_manager_id = user.id) AS QoQRealAmountSum,
  630. (SELECT COUNT(assets.id) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.real_amount IS NOT NULL AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodRealAmountOrderCount,
  631. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND client_manager_id = user.id) AS totalRealAmountSum
  632. FROM
  633. (
  634. SELECT user.name AS userName,
  635. user.id,
  636. department.id AS departmentId,
  637. department.name AS departmentName
  638. FROM assets,user,user_post,post,department
  639. WHERE assets.client_manager_id = user.id
  640. AND user.id = user_post.user_id
  641. AND user_post.post_id = post.id
  642. AND post.department_id = department.id
  643. GROUP BY user.id
  644. ) AS user
  645. <where>
  646. <if test="dto != null and dto.departmentId != null">
  647. AND user.departmentId = #{dto.departmentId}
  648. </if>
  649. <if test="dto != null and dto.userName != null">
  650. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  651. </if>
  652. </where>
  653. GROUP BY user.id
  654. </select>
  655. <!--资产客户效率查询-->
  656. <select id="getAssetsCustomerTotalEfficiencyVO" resultType="com.dayou.vo.AssetsCustomerEfficiencyVO">
  657. SELECT customer.id AS customerId,
  658. customer.name AS customerName,
  659. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentPeriodOrderVolume,
  660. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYOrderVolume,
  661. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQOrderVolume,
  662. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentPeriodStatementVolume,
  663. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYStatementVolume,
  664. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQStatementVolume,
  665. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentPeriodReportVolume,
  666. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYReportVolume,
  667. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQReportVolume,
  668. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentPeriodShouldAmountSum,
  669. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYShouldAmountSum,
  670. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQShouldAmountSum,
  671. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentPeriodRealAmountSum,
  672. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYRealAmountSum,
  673. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQRealAmountSum,
  674. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_id = customer.id) AS currentDiscountVolume,
  675. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_id = customer.id) AS YoYDiscountVolume,
  676. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_id = customer.id) AS QoQDiscountVolume,
  677. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND clientele_id = customer.id) AS totalRealAmountSum
  678. FROM
  679. (
  680. SELECT customer_company.id, customer_company.name
  681. FROM assets,customer_company
  682. WHERE customer_company.id = assets.clientele_id
  683. AND parent_id IS NULL
  684. AND customer_company.name != '个人客户'
  685. AND terminal = 0
  686. AND customer_company.deleted = 0
  687. AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  688. ORDER BY id DESC
  689. ) AS customer
  690. <where>
  691. <if test="dto != null and dto.customerId != null">
  692. AND customer.id = #{dto.customerId}
  693. </if>
  694. </where>
  695. GROUP BY customer.id
  696. </select>
  697. <!--资产客户效率值(客户经理)查询-->
  698. <select id="getAssetsCustomerManagerEfficiencyVO" resultType="com.dayou.vo.AssetsCustomerEfficiencyVO">
  699. SELECT customer.id AS customerId,
  700. customer.name AS customerName,
  701. customer.userId,
  702. customer.userName,
  703. customer.clientele_contact_id AS clienteleContactId,
  704. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentPeriodOrderVolume,
  705. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYOrderVolume,
  706. (SELECT COUNT(assets.id) FROM assets LEFT JOIN assets_production AS pro ON pro.business_id = assets.id AND production_type != 'STATEMENT' AND pro.deleted = 0 WHERE assets.deleted = 0 AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQOrderVolume,
  707. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentPeriodStatementVolume,
  708. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYStatementVolume,
  709. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQStatementVolume,
  710. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentPeriodReportVolume,
  711. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYReportVolume,
  712. (SELECT COUNT(production.id) FROM assets,assets_production AS production WHERE assets.deleted = 0 AND assets.id = production.business_id AND production_type != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = production_no AND deleted = 0) > 0 AND production.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQReportVolume,
  713. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentPeriodShouldAmountSum,
  714. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYShouldAmountSum,
  715. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQShouldAmountSum,
  716. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentPeriodRealAmountSum,
  717. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYRealAmountSum,
  718. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQRealAmountSum,
  719. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND clientele_contact_id = customer.clientele_contact_id) AS currentDiscountVolume,
  720. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND clientele_contact_id = customer.clientele_contact_id) AS YoYDiscountVolume,
  721. (SELECT COUNT(order_fund.real_amount) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND order_fund.discount > 0 AND business_type = 'ASSET_BUSINESS' AND assets.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND DATE_SUB(#{dto.endTime}, INTERVAL DATEDIFF(#{dto.endTime},#{dto.startTime}) DAY) AND clientele_contact_id = customer.clientele_contact_id) AS QoQDiscountVolume,
  722. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM assets, order_fund WHERE assets.deleted = 0 AND assets.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'ASSET_BUSINESS' AND clientele_contact_id = customer.clientele_contact_id) AS totalRealAmountSum
  723. FROM
  724. (
  725. SELECT user.id AS userId, user.name AS userName,par.id,par.name,customer_linkman.id AS clientele_contact_id
  726. FROM assets,customer_company AS sub,user,customer_linkman, customer_company AS par
  727. WHERE assets.clientele_contact_id = customer_linkman.id
  728. AND customer_linkman.client_manager_id = user.id
  729. AND customer_linkman.cc_id = sub.id
  730. AND sub.parent_id = par.id
  731. AND assets.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  732. ORDER BY id DESC
  733. ) AS customer
  734. <where>
  735. <if test="dto != null and dto.customerId != null">
  736. AND customer.id = #{dto.customerId}
  737. </if>
  738. <if test="dto != null and dto.userName != null">
  739. AND customer.userName LIKE CONCAT('%',#{dto.userName},'%')
  740. </if>
  741. </where>
  742. GROUP BY customer.clientele_contact_id
  743. </select>
  744. </mapper>