AssetsStatisticalStatementMapper.xml 80 KB

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