MajorStatisticalStatementMapper.xml 96 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  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.MajorStatisticalStatementMapper">
  4. <sql id="majorLedgerQuery">
  5. SELECT (@i := @i + 1) AS id,
  6. major.order_id AS orderId,
  7. report.report_no AS reportNo,
  8. department.name AS departmentName,
  9. major.name AS projectName,
  10. customer.name AS customerName,
  11. customer_sub.name AS customerSubName,
  12. manager.name AS clientManagerName,
  13. principal.name AS principalName,
  14. major.members AS members,
  15. major.owner AS owner,
  16. major.bailor AS bailor,
  17. major.bailor_contact_tel AS bailorContactTel,
  18. major.bailor_address AS bailorAddress,
  19. major.evaluate_aim AS evaluateAim,
  20. report.value_timing AS valueTiming,
  21. GROUP_CONCAT(target.located SEPARATOR ';') AS located,
  22. GROUP_CONCAT(target.land_use SEPARATOR ';') AS landUse,
  23. GROUP_CONCAT(target.build_acreage SEPARATOR ';') AS buildAcreage,
  24. GROUP_CONCAT(target.land_acreage SEPARATOR ';') AS landAcreage,
  25. GROUP_CONCAT(DATE(target.created) SEPARATOR ';') AS reconnaissanceDate,
  26. report.evaluate_price AS evaluatePrice,
  27. report.evaluate_amount AS evaluateAmount,
  28. fund.real_amount AS productionRealAmount,
  29. report.repertory_out_time AS repertoryOutTime,
  30. report.main_worker AS firstReporter,
  31. report.minor_worker AS secReporter,
  32. (
  33. SELECT user.name
  34. FROM work_flow_node_instance AS instance,
  35. work_task_record AS record,
  36. work_node AS node,
  37. user
  38. WHERE instance.id = record.instance_id
  39. AND record.handler_id = user.id
  40. AND node.id = instance.node_id
  41. AND instance.business_id = major.id
  42. AND instance.business_sub_id = statement.report_no
  43. AND node.code = 'RECHECK_STATEMENT'
  44. AND instance.deleted = 0
  45. ) AS secStatementChecker,
  46. (
  47. SELECT user.name
  48. FROM work_flow_node_instance AS instance,
  49. work_task_record AS record,
  50. work_node AS node,
  51. user
  52. WHERE instance.id = record.instance_id
  53. AND record.handler_id = user.id
  54. AND node.id = instance.node_id
  55. AND instance.business_id = major.id
  56. AND instance.business_sub_id = statement.report_no
  57. AND node.code = 'THIRD_CHECK_STATEMENT'
  58. AND instance.deleted = 0
  59. ) AS thirdStatementChecker,
  60. (
  61. SELECT user.name
  62. FROM work_flow_node_instance AS instance,
  63. work_task_record AS record,
  64. work_node AS node,
  65. user
  66. WHERE instance.id = record.instance_id
  67. AND record.handler_id = user.id
  68. AND node.id = instance.node_id
  69. AND instance.business_id = major.id
  70. AND instance.business_min_id = report.report_no
  71. AND node.code = 'RECHECK_REPORT'
  72. AND instance.deleted = 0
  73. ) AS secReportChecker,
  74. (
  75. SELECT user.name
  76. FROM work_flow_node_instance AS instance,
  77. work_task_record AS record,
  78. work_node AS node,
  79. user
  80. WHERE instance.id = record.instance_id
  81. AND record.handler_id = user.id
  82. AND node.id = instance.node_id
  83. AND instance.business_id = major.id
  84. AND instance.business_min_id = report.report_no
  85. AND node.code = 'THIRD_CHECK_REPORT'
  86. AND instance.deleted = 0
  87. ) AS thirdReportReChecker,
  88. major.remark AS comments
  89. FROM (SELECT @i := 0) AS sort,major
  90. LEFT JOIN major_target AS target ON target.major_id = major.id
  91. LEFT JOIN major_production AS statement ON statement.report_no = target.statement_no AND statement.production = 'STATEMENT'
  92. LEFT JOIN major_production AS report ON report.report_no = target.report_no AND report.production != 'STATEMENT'
  93. LEFT JOIN production_fund AS fund ON fund.production_no = report.report_no
  94. LEFT JOIN user AS manager ON manager.id = major.client_manager_id
  95. LEFT JOIN user AS principal ON principal.id = major.principal_id
  96. LEFT JOIN department ON department.id = major.department_id
  97. LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
  98. LEFT JOIN customer_company AS customer_sub ON customer_sub.id = major.clientele_sub_id
  99. LEFT JOIN (
  100. SELECT node.`name`,instance.business_id,instance.business_sub_id,instance.business_min_id,instance.state
  101. FROM work_flow_node_instance AS instance,
  102. work_node AS node
  103. WHERE instance.node_id = node.id
  104. AND node.deleted = 0
  105. AND instance.deleted = 0
  106. AND (instance.state = 'PENDING' OR instance.state = 'CLOSED' OR
  107. (instance.state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING'))
  108. ) AS nodeInfo ON nodeInfo.business_id = major.id
  109. AND (IF(report.report_no IS NULL, nodeInfo.business_min_id IS NULL,
  110. report.report_no = nodeInfo.business_min_id))
  111. WHERE major.deleted = 0
  112. <if test="dto != null and dto.keyWord != null and dto.keyWord != '' ">
  113. AND (
  114. major.order_id LIKE CONCAT('%',#{dto.keyWord},'%') OR
  115. major.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
  116. report.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
  117. report.report_no LIKE CONCAT('%',#{dto.keyWord},'%') OR
  118. principal.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
  119. major.business_object_type LIKE CONCAT('%',#{dto.keyWord},'%') OR
  120. major.allot_type LIKE CONCAT('%',#{dto.keyWord},'%') OR
  121. customer.name LIKE CONCAT('%',#{dto.keyWord},'%') OR
  122. customer_sub.name LIKE CONCAT('%',#{dto.keyWord},'%')
  123. )
  124. </if>
  125. <if test="dto != null and dto.clientManagerId">
  126. AND major.client_manager_id = #{dto.clientManagerId}
  127. </if>
  128. <if test="dto != null and dto.principalId">
  129. AND major.principal_id = #{dto.principalId}
  130. </if>
  131. <if test="dto != null and dto.departmentId != null">
  132. AND major.department_id = #{dto.departmentId}
  133. </if>
  134. <if test="dto != null and dto.memberId != null">
  135. AND JSON_CONTAINS(major.members, CAST(#{dto.memberId} AS JSON))
  136. </if>
  137. <if test="dto != null and dto.nodeCode != null">
  138. AND nodeInfo.node = #{dto.nodeCode}
  139. </if>
  140. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  141. AND (major.created BETWEEN #{dto.startTime} AND #{dto.endTime})
  142. </if>
  143. GROUP BY reportNo,major.id
  144. ORDER BY major.created DESC
  145. </sql>
  146. <!--查询大中型台账-->
  147. <select id="getMajorLedgerVO" resultType="com.dayou.vo.MajorLedgerVO">
  148. <include refid="majorLedgerQuery" />
  149. </select>
  150. <!--导出大中型台账-->
  151. <select id="exportMajorLedgerVO" resultType="com.dayou.vo.MajorLedgerVO">
  152. <include refid="majorLedgerQuery" />
  153. </select>
  154. <!--评估部绩效扣分查询-->
  155. <select id="getMajorPerformanceDeductionVO" resultType="com.dayou.vo.MajorPerformanceDeductionVO">
  156. SELECT
  157. department.id AS departmentId,
  158. department.name AS departmentName,
  159. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 AS reCheckNormalMistakeScore,
  160. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 AS reCheckHardMistakeScore,
  161. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 AS reCheckFatalMistakeScore,
  162. COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
  163. FROM
  164. (
  165. SELECT
  166. department.id,
  167. department.name
  168. FROM
  169. department,
  170. sorted_department
  171. WHERE
  172. department.id = sorted_department.department_id
  173. AND department.deleted = 0
  174. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  175. ) AS department
  176. LEFT JOIN (
  177. SELECT
  178. department_id,
  179. major.created,
  180. major_production.id AS production_id
  181. FROM
  182. major
  183. LEFT JOIN major_production ON major_production.major_id = major.id
  184. AND major_production.deleted = 0
  185. ) AS orderInfo ON department.id = orderInfo.department_id
  186. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  187. business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '复审'
  188. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  189. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  190. </if>
  191. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  192. <where>
  193. <if test="dto != null and dto.departmentId != null">
  194. AND department.id = #{dto.departmentId}
  195. </if>
  196. </where>
  197. GROUP BY department.id
  198. </select>
  199. <!--评估人员绩效扣分查询-->
  200. <select id="getMajorPerformanceDeductionVOByEvaluator" resultType="com.dayou.vo.MajorPerformanceDeductionVO">
  201. SELECT user.id AS userId,
  202. user.userName,
  203. user.departmentId,
  204. user.departmentName,
  205. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) * 3 AS reCheckNormalMistakeScore,
  206. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8 AS reCheckHardMistakeScore,
  207. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41 AS reCheckFatalMistakeScore,
  208. COALESCE ( (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
  209. FROM (SELECT user.id AS id,
  210. user.`name` AS userName,
  211. department.name AS departmentName,
  212. department.id AS departmentId
  213. FROM user,post,user_post,sorted_department,department
  214. WHERE `user`.id = user_post.user_id
  215. AND user_post.post_id = post.id
  216. AND post.department_id = sorted_department.department_id
  217. AND sorted_department.department_id = department.id
  218. AND sorted_department.deleted = 0
  219. AND user_post.deleted = 0
  220. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  221. GROUP BY user.id
  222. ) AS user
  223. LEFT JOIN (
  224. SELECT
  225. principal_id,
  226. major.created,
  227. major_production.id AS production_id
  228. FROM
  229. major
  230. LEFT JOIN major_production ON major_production.major_id = major.id
  231. AND major_production.deleted = 0
  232. ) AS orderInfo ON user.id = orderInfo.principal_id
  233. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  234. business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '复审'
  235. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  236. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  237. </if>
  238. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  239. <where>
  240. <if test="dto != null and dto.departmentId != null">
  241. AND user.departmentId = #{dto.departmentId}
  242. </if>
  243. <if test="dto != null and dto.userName != null">
  244. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  245. </if>
  246. </where>
  247. GROUP BY user.id
  248. </select>
  249. <!--根据部门id获取部门绩效扣分-->
  250. <select id="getMajorPerformanceDeductionVOByDepId" resultType="com.dayou.vo.MajorPerformanceDeductionVO">
  251. SELECT user.id AS userId,
  252. user.userName,
  253. user.departmentId,
  254. user.departmentName,
  255. COALESCE ( SUM( checkPer.normal_mistake ), 0 ) AS checkNormalMistakeScore,
  256. COALESCE ( SUM( checkPer.hard_mistake ), 0 ) AS checkHardMistakeScore,
  257. COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) AS checkFatalMistakeScore,
  258. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeScore,
  259. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeScore,
  260. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeScore,
  261. COALESCE ( (COALESCE ( SUM( checkPer.normal_mistake ), 0 ) * 3) + (COALESCE ( SUM( checkPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( checkPer.fatal_mistake ), 0 ) * 41) + (COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) *3 ) + (COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) * 8) + (COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) * 41) , 0) AS allMistakeScore
  262. FROM (SELECT user.id AS id,
  263. user.`name` AS userName,
  264. department.name AS departmentName,
  265. department.id AS departmentId
  266. FROM user,post,user_post,sorted_department,department
  267. WHERE `user`.id = user_post.user_id
  268. AND user_post.post_id = post.id
  269. AND post.department_id = sorted_department.department_id
  270. AND sorted_department.department_id = department.id
  271. AND sorted_department.deleted = 0
  272. AND user_post.deleted = 0
  273. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  274. GROUP BY user.id
  275. ) AS user
  276. LEFT JOIN (
  277. SELECT
  278. principal_id,
  279. major.created,
  280. major_production.id AS production_id
  281. FROM
  282. major
  283. LEFT JOIN major_production ON major_production.major_id = major.id
  284. AND major_production.deleted = 0
  285. ) AS orderInfo ON user.id = orderInfo.principal_id
  286. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  287. business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '初审'
  288. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  289. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  290. </if>
  291. ) AS checkPer ON checkPer.production_id = orderInfo.production_id
  292. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake FROM
  293. business_production_performance WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '复审'
  294. <if test="dto != null and dto.startTime != null and dto.endTime!= null">
  295. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  296. </if>
  297. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  298. <where>
  299. <if test="dto != null and dto.departmentId != null">
  300. AND user.departmentId = #{dto.departmentId}
  301. </if>
  302. <if test="dto != null and dto.userName != null">
  303. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  304. </if>
  305. </where>
  306. GROUP BY user.id
  307. </select>
  308. <!--获取每种错误类型的数量-->
  309. <select id="getMajorErrorTypeCountVO" resultType="com.dayou.vo.MajorErrorTypeCountVO">
  310. SELECT user.id AS userId,
  311. user.departmentId,
  312. user.userName,
  313. <if test="dto.mistakeType == 'normal'">
  314. (SELECT COUNT(per.id) FROM major
  315. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  316. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  317. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托书界定事项和报告描述不符','%')
  318. <if test="dto.checkType == 'dep'">
  319. AND check_loop = '初审'
  320. </if>
  321. <if test="dto.checkType == 'com'">
  322. AND check_loop != '初审'
  323. </if>
  324. ) AS errorTypeCount01,
  325. (SELECT COUNT(per.id) FROM major
  326. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  327. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  328. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','方位图有误','%')
  329. <if test="dto.checkType == 'dep'">
  330. AND check_loop = '初审'
  331. </if>
  332. <if test="dto.checkType == 'com'">
  333. AND check_loop != '初审'
  334. </if>
  335. ) AS errorTypeCount02,
  336. (SELECT COUNT(per.id) FROM major
  337. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  338. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  339. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','实景图有误','%')
  340. <if test="dto.checkType == 'dep'">
  341. AND check_loop = '初审'
  342. </if>
  343. <if test="dto.checkType == 'com'">
  344. AND check_loop != '初审'
  345. </if>
  346. ) AS errorTypeCount03,
  347. (SELECT COUNT(per.id) FROM major
  348. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  349. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  350. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','测算参数取值不充分','%')
  351. <if test="dto.checkType == 'dep'">
  352. AND check_loop = '初审'
  353. </if>
  354. <if test="dto.checkType == 'com'">
  355. AND check_loop != '初审'
  356. </if>
  357. ) AS errorTypeCount04,
  358. (SELECT COUNT(per.id) FROM major
  359. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  360. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  361. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价结果确定方式不恰当','%')
  362. <if test="dto.checkType == 'dep'">
  363. AND check_loop = '初审'
  364. </if>
  365. <if test="dto.checkType == 'com'">
  366. AND check_loop != '初审'
  367. </if>
  368. ) AS errorTypeCount05,
  369. (SELECT COUNT(per.id) FROM major
  370. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  371. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  372. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价方法表述不完整','%')
  373. <if test="dto.checkType == 'dep'">
  374. AND check_loop = '初审'
  375. </if>
  376. <if test="dto.checkType == 'com'">
  377. AND check_loop != '初审'
  378. </if>
  379. ) AS errorTypeCount06,
  380. (SELECT COUNT(per.id) FROM major
  381. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  382. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  383. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','实物、权益、区位描述缺项','%')
  384. <if test="dto.checkType == 'dep'">
  385. AND check_loop = '初审'
  386. </if>
  387. <if test="dto.checkType == 'com'">
  388. AND check_loop != '初审'
  389. </if>
  390. ) AS errorTypeCount07,
  391. (SELECT COUNT(per.id) FROM major
  392. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  393. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  394. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值定义表述不完整','%')
  395. <if test="dto.checkType == 'dep'">
  396. AND check_loop = '初审'
  397. </if>
  398. <if test="dto.checkType == 'com'">
  399. AND check_loop != '初审'
  400. </if>
  401. ) AS errorTypeCount08,
  402. (SELECT COUNT(per.id) FROM major
  403. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  404. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  405. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','非重要文字和数据录入错误','%')
  406. <if test="dto.checkType == 'dep'">
  407. AND check_loop = '初审'
  408. </if>
  409. <if test="dto.checkType == 'com'">
  410. AND check_loop != '初审'
  411. </if>
  412. ) AS errorTypeCount09
  413. </if>
  414. <if test="dto.mistakeType == 'hard'">
  415. (SELECT COUNT(per.id) FROM major
  416. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  417. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  418. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价结果价格有误','%')
  419. <if test="dto.checkType == 'dep'">
  420. AND check_loop = '初审'
  421. </if>
  422. <if test="dto.checkType == 'com'">
  423. AND check_loop != '初审'
  424. </if>
  425. ) AS errorTypeCount10,
  426. (SELECT COUNT(per.id) FROM major
  427. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  428. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  429. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','大小写不一致','%')
  430. <if test="dto.checkType == 'dep'">
  431. AND check_loop = '初审'
  432. </if>
  433. <if test="dto.checkType == 'com'">
  434. AND check_loop != '初审'
  435. </if>
  436. ) AS errorTypeCount11,
  437. (SELECT COUNT(per.id) FROM major
  438. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  439. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  440. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','面积错误','%')
  441. <if test="dto.checkType == 'dep'">
  442. AND check_loop = '初审'
  443. </if>
  444. <if test="dto.checkType == 'com'">
  445. AND check_loop != '初审'
  446. </if>
  447. ) AS errorTypeCount12,
  448. (SELECT COUNT(per.id) FROM major
  449. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  450. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  451. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托方函重要数据出错','%')
  452. <if test="dto.checkType == 'dep'">
  453. AND check_loop = '初审'
  454. </if>
  455. <if test="dto.checkType == 'com'">
  456. AND check_loop != '初审'
  457. </if>
  458. ) AS errorTypeCount13,
  459. (SELECT COUNT(per.id) FROM major
  460. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  461. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  462. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','委托人名称出错','%')
  463. <if test="dto.checkType == 'dep'">
  464. AND check_loop = '初审'
  465. </if>
  466. <if test="dto.checkType == 'com'">
  467. AND check_loop != '初审'
  468. </if>
  469. ) AS errorTypeCount14,
  470. (SELECT COUNT(per.id) FROM major
  471. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  472. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  473. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','假设限制条件错漏','%')
  474. <if test="dto.checkType == 'dep'">
  475. AND check_loop = '初审'
  476. </if>
  477. <if test="dto.checkType == 'com'">
  478. AND check_loop != '初审'
  479. </if>
  480. ) AS errorTypeCount15,
  481. (SELECT COUNT(per.id) FROM major
  482. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  483. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  484. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值定义表述错误','%')
  485. <if test="dto.checkType == 'dep'">
  486. AND check_loop = '初审'
  487. </if>
  488. <if test="dto.checkType == 'com'">
  489. AND check_loop != '初审'
  490. </if>
  491. ) AS errorTypeCount16,
  492. (SELECT COUNT(per.id) FROM major
  493. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  494. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  495. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告章节缺漏','%')
  496. <if test="dto.checkType == 'dep'">
  497. AND check_loop = '初审'
  498. </if>
  499. <if test="dto.checkType == 'com'">
  500. AND check_loop != '初审'
  501. </if>
  502. ) AS errorTypeCount17,
  503. (SELECT COUNT(per.id) FROM major
  504. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  505. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  506. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告出具日期错误','%')
  507. <if test="dto.checkType == 'dep'">
  508. AND check_loop = '初审'
  509. </if>
  510. <if test="dto.checkType == 'com'">
  511. AND check_loop != '初审'
  512. </if>
  513. ) AS errorTypeCount18,
  514. (SELECT COUNT(per.id) FROM major
  515. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  516. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  517. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','报告有效期错误','%')
  518. <if test="dto.checkType == 'dep'">
  519. AND check_loop = '初审'
  520. </if>
  521. <if test="dto.checkType == 'com'">
  522. AND check_loop != '初审'
  523. </if>
  524. ) AS errorTypeCount19,
  525. (SELECT COUNT(per.id) FROM major
  526. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  527. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  528. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','重要文字和数据录入错误','%')
  529. <if test="dto.checkType == 'dep'">
  530. AND check_loop = '初审'
  531. </if>
  532. <if test="dto.checkType == 'com'">
  533. AND check_loop != '初审'
  534. </if>
  535. ) AS errorTypeCount20
  536. </if>
  537. <if test="dto.mistakeType == 'fatal'">
  538. (SELECT COUNT(per.id) FROM major
  539. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  540. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  541. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价对象错误','%')
  542. <if test="dto.checkType == 'dep'">
  543. AND check_loop = '初审'
  544. </if>
  545. <if test="dto.checkType == 'com'">
  546. AND check_loop != '初审'
  547. </if>
  548. ) AS errorTypeCount21,
  549. (SELECT COUNT(per.id) FROM major
  550. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  551. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  552. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价目的错误','%')
  553. <if test="dto.checkType == 'dep'">
  554. AND check_loop = '初审'
  555. </if>
  556. <if test="dto.checkType == 'com'">
  557. AND check_loop != '初审'
  558. </if>
  559. ) AS errorTypeCount22,
  560. (SELECT COUNT(per.id) FROM major
  561. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  562. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  563. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','价值时点设定出错','%')
  564. <if test="dto.checkType == 'dep'">
  565. AND check_loop = '初审'
  566. </if>
  567. <if test="dto.checkType == 'com'">
  568. AND check_loop != '初审'
  569. </if>
  570. ) AS errorTypeCount23,
  571. (SELECT COUNT(per.id) FROM major
  572. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  573. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  574. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','登记状况错误','%')
  575. <if test="dto.checkType == 'dep'">
  576. AND check_loop = '初审'
  577. </if>
  578. <if test="dto.checkType == 'com'">
  579. AND check_loop != '初审'
  580. </if>
  581. ) AS errorTypeCount24,
  582. (SELECT COUNT(per.id) FROM major
  583. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  584. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  585. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','权利状况错误','%')
  586. <if test="dto.checkType == 'dep'">
  587. AND check_loop = '初审'
  588. </if>
  589. <if test="dto.checkType == 'com'">
  590. AND check_loop != '初审'
  591. </if>
  592. ) AS errorTypeCount25,
  593. (SELECT COUNT(per.id) FROM major
  594. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  595. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  596. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','利用状况错误','%')
  597. <if test="dto.checkType == 'dep'">
  598. AND check_loop = '初审'
  599. </if>
  600. <if test="dto.checkType == 'com'">
  601. AND check_loop != '初审'
  602. </if>
  603. ) AS errorTypeCount26,
  604. (SELECT COUNT(per.id) FROM major
  605. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  606. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  607. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','技术路线错误','%')
  608. <if test="dto.checkType == 'dep'">
  609. AND check_loop = '初审'
  610. </if>
  611. <if test="dto.checkType == 'com'">
  612. AND check_loop != '初审'
  613. </if>
  614. ) AS errorTypeCount27,
  615. (SELECT COUNT(per.id) FROM major
  616. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  617. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  618. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','关键参数取值错误','%')
  619. <if test="dto.checkType == 'dep'">
  620. AND check_loop = '初审'
  621. </if>
  622. <if test="dto.checkType == 'com'">
  623. AND check_loop != '初审'
  624. </if>
  625. ) AS errorTypeCount28,
  626. (SELECT COUNT(per.id) FROM major
  627. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  628. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  629. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','编造虚假案例','%')
  630. <if test="dto.checkType == 'dep'">
  631. AND check_loop = '初审'
  632. </if>
  633. <if test="dto.checkType == 'com'">
  634. AND check_loop != '初审'
  635. </if>
  636. ) AS errorTypeCount29,
  637. (SELECT COUNT(per.id) FROM major
  638. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  639. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  640. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','编造虚假照片','%')
  641. <if test="dto.checkType == 'dep'">
  642. AND check_loop = '初审'
  643. </if>
  644. <if test="dto.checkType == 'com'">
  645. AND check_loop != '初审'
  646. </if>
  647. ) AS errorTypeCount30,
  648. (SELECT COUNT(per.id) FROM major
  649. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  650. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  651. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','估价依据资料严重不全','%')
  652. <if test="dto.checkType == 'dep'">
  653. AND check_loop = '初审'
  654. </if>
  655. <if test="dto.checkType == 'com'">
  656. AND check_loop != '初审'
  657. </if>
  658. ) AS errorTypeCount31,
  659. (SELECT COUNT(per.id) FROM major
  660. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  661. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  662. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','评估结果严重失真超30%以上','%')
  663. <if test="dto.checkType == 'dep'">
  664. AND check_loop = '初审'
  665. </if>
  666. <if test="dto.checkType == 'com'">
  667. AND check_loop != '初审'
  668. </if>
  669. ) AS errorTypeCount32,
  670. (SELECT COUNT(per.id) FROM major
  671. INNER JOIN major_production AS pro ON pro.deleted = 0 AND pro.major_id = major.id
  672. INNER JOIN business_production_performance AS per ON per.deleted = 0 AND per.production_id = pro.id AND business_type = 'MAJOR_BUSINESS'
  673. WHERE major.principal_id = user.id AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND reason LIKE CONCAT('%','关键文字和数据错误','%')
  674. <if test="dto.checkType == 'dep'">
  675. AND check_loop = '初审'
  676. </if>
  677. <if test="dto.checkType == 'com'">
  678. AND check_loop != '初审'
  679. </if>
  680. ) AS errorTypeCount33
  681. </if>
  682. FROM (
  683. SELECT DISTINCT `user`.id AS id,
  684. `user`.`name` AS userName,
  685. department.id AS departmentId
  686. FROM
  687. `user`,
  688. post,
  689. user_post,
  690. sorted_department,
  691. department
  692. WHERE
  693. `user`.id = user_post.user_id
  694. AND user_post.post_id = post.id
  695. AND post.department_id = sorted_department.department_id
  696. AND sorted_department.department_id = department.id
  697. AND sorted_department.deleted = 0
  698. AND user_post.deleted = 0
  699. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  700. ) AS user
  701. <where>
  702. <if test="self == true">
  703. AND user.id = #{dto.userId}
  704. </if>
  705. <if test="dto != null and dto.departmentId != null and dep == true">
  706. AND user.departmentId = #{dto.departmentId}
  707. </if>
  708. <if test="dto != null and dto.userName != null">
  709. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  710. </if>
  711. </where>
  712. GROUP BY user.id
  713. </select>
  714. <sql id="majorErrorTypeDetailVOQuery">
  715. SELECT performance.id,
  716. major.order_id AS orderId,
  717. major.financial AS financial,
  718. major.members AS members,
  719. major.evaluate_aim AS evaluateAim,
  720. production.name AS projectName,
  721. customer.name AS customerName,
  722. production.report_no AS productionNo,
  723. (CASE production.production
  724. WHEN 'STATEMENT' THEN '意见书'
  725. WHEN 'LETTER' THEN '意见函'
  726. WHEN 'REPORT' THEN '评估报告'
  727. END) AS productionType,
  728. principal.name AS principalName,
  729. checker.name AS checkerName,
  730. (performance.normal_mistake + performance.hard_mistake + performance.fatal_mistake) AS mistakeCount,
  731. (performance.normal_mistake * 3 + performance.hard_mistake * 8 + performance.fatal_mistake * 41) AS mistakeScore,
  732. production.evaluate_amount AS evaluateAmount,
  733. performance.modified AS checkTime,
  734. performance.reason AS reason
  735. FROM major
  736. LEFT JOIN major_production AS production ON major.id = production.major_id
  737. LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id
  738. LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
  739. LEFT JOIN user AS principal ON principal.id = major.principal_id
  740. LEFT JOIN user AS checker ON checker.id = performance.check_id
  741. WHERE major.principal_id = #{dto.principalId}
  742. <if test="dto.checkType == 'dep'">
  743. AND check_loop = '初审'
  744. </if>
  745. <if test="dto.checkType == 'com'">
  746. AND check_loop != '初审'
  747. </if>
  748. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  749. AND reason LIKE CONCAT('%',#{dto.reason},'%')
  750. </sql>
  751. <!--查询错误类型详情列表-->
  752. <select id="getMajorErrorTypeDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
  753. <include refid="majorErrorTypeDetailVOQuery" />
  754. </select>
  755. <select id="exportMajorErrorTypeDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
  756. <include refid="majorErrorTypeDetailVOQuery" />
  757. </select>
  758. <!--查询错误详情SQL-->
  759. <sql id="majorPerformanceDeductionDetailQuery">
  760. SELECT performance.id,
  761. major.order_id AS orderId,
  762. major.financial AS financial,
  763. major.members AS members,
  764. major.evaluate_aim AS evaluateAim,
  765. production.name AS projectName,
  766. customer.name AS customerName,
  767. production.report_no AS productionNo,
  768. (CASE production.production
  769. WHEN 'STATEMENT' THEN '意见书'
  770. WHEN 'LETTER' THEN '意见函'
  771. WHEN 'REPORT' THEN '评估报告'
  772. END) AS productionType,
  773. principal.name AS principalName,
  774. checker.name AS checkerName,
  775. (CASE #{dto.mistakeType}
  776. WHEN 'normal' THEN performance.normal_mistake
  777. WHEN 'hard' THEN performance.hard_mistake
  778. WHEN 'fatal' THEN performance.fatal_mistake
  779. ELSE '-'
  780. END) AS mistakeCount,
  781. (CASE #{dto.mistakeType}
  782. WHEN 'normal' THEN performance.normal_mistake * 3
  783. WHEN 'hard' THEN performance.hard_mistake * 8
  784. WHEN 'fatal' THEN performance.fatal_mistake * 41
  785. ELSE '-'
  786. END) AS mistakeScore,
  787. production.evaluate_amount AS evaluateAmount,
  788. performance.modified AS checkTime,
  789. performance.reason AS reason
  790. FROM major
  791. LEFT JOIN major_production AS production ON major.id = production.major_id
  792. LEFT JOIN business_production_performance AS performance ON production.id = performance.production_id
  793. LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
  794. LEFT JOIN user AS principal ON principal.id = major.principal_id
  795. LEFT JOIN user AS checker ON checker.id = performance.check_id
  796. WHERE major.department_id = #{dto.departmentId}
  797. AND performance.check_loop = #{dto.checkLoop}
  798. AND (performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  799. <if test="dto.principalId != null">
  800. AND major.principal_id = #{dto.principalId}
  801. </if>
  802. <if test="dto.mistakeType == 'normal' ">
  803. AND performance.normal_mistake > 0
  804. </if>
  805. <if test="dto.mistakeType == 'hard' ">
  806. AND performance.hard_mistake > 0
  807. </if>
  808. <if test="dto.mistakeType == 'fatal' ">
  809. AND performance.fatal_mistake > 0
  810. </if>
  811. </sql>
  812. <!--查询错误详情列表-->
  813. <select id="getMajorPerformanceDeductionDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
  814. <include refid="majorPerformanceDeductionDetailQuery" />
  815. </select>
  816. <!--导出错误详情列表-->
  817. <select id="exportMajorPerformanceDeductionDetailVO" resultType="com.dayou.vo.MajorPerformanceDeductionDetailVO">
  818. <include refid="majorPerformanceDeductionDetailQuery" />
  819. </select>
  820. <!--评估部效率查询-->
  821. <!--大中型指定需要看了现场才算有效的接单数-->
  822. <select id="getMajorEvaluateDepEfficiencyVO" resultType="com.dayou.vo.MajorEvaluateEfficiencyVO">
  823. SELECT aim.evaluate_aim AS evaluateAim,
  824. aim.financial AS financial,
  825. (SELECT COUNT(major.id) FROM major LEFT JOIN major_target AS target ON target.major_id = major.id AND target.deleted = 0 WHERE target.created IS NULL AND major.deleted = 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  826. <if test="dto != null and dto.departmentId != null">
  827. AND department_id = #{dto.departmentId}
  828. </if>
  829. ) AS unSiteCount,
  830. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.informal_evaluate = 1 AND major.deleted = 0 AND major.targetCreated BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  831. <if test="dto != null and dto.departmentId != null">
  832. AND department_id = #{dto.departmentId}
  833. </if>
  834. ) AS informalEvaluateCount,
  835. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.informal_evaluate = 0 AND major.deleted = 0 AND major.targetCreated BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  836. <if test="dto != null and dto.departmentId != null">
  837. AND department_id = #{dto.departmentId}
  838. </if>
  839. ) AS unInformalEvaluateCount,
  840. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.targetCreated BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  841. <if test="dto != null and dto.departmentId != null">
  842. AND department_id = #{dto.departmentId}
  843. </if>
  844. ) AS YoYOrderVolume,
  845. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.targetCreated 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 major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  846. <if test="dto != null and dto.departmentId != null">
  847. AND department_id = #{dto.departmentId}
  848. </if>
  849. ) AS QoQOrderVolume,
  850. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  851. <if test="dto != null and dto.departmentId != null">
  852. AND department_id = #{dto.departmentId}
  853. </if>
  854. ) AS currentPeriodStatementVolume,
  855. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  856. <if test="dto != null and dto.departmentId != null">
  857. AND department_id = #{dto.departmentId}
  858. </if>
  859. ) AS YoYStatementVolume,
  860. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_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 major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  861. <if test="dto != null and dto.departmentId != null">
  862. AND department_id = #{dto.departmentId}
  863. </if>
  864. ) AS QoQStatementVolume,
  865. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  866. <if test="dto != null and dto.departmentId != null">
  867. AND department_id = #{dto.departmentId}
  868. </if>
  869. ) AS currentPeriodReportVolume,
  870. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  871. <if test="dto != null and dto.departmentId != null">
  872. AND department_id = #{dto.departmentId}
  873. </if>
  874. ) AS YoYReportVolume,
  875. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_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 major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  876. <if test="dto != null and dto.departmentId != null">
  877. AND department_id = #{dto.departmentId}
  878. </if>
  879. ) AS QoQReportVolume,
  880. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  881. <if test="dto != null and dto.departmentId != null">
  882. AND department_id = #{dto.departmentId}
  883. </if>
  884. ) AS currentPeriodShouldAmountSum,
  885. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  886. <if test="dto != null and dto.departmentId != null">
  887. AND department_id = #{dto.departmentId}
  888. </if>
  889. ) AS YoYShouldAmountSum,
  890. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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 major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  891. <if test="dto != null and dto.departmentId != null">
  892. AND department_id = #{dto.departmentId}
  893. </if>
  894. ) AS QoQShouldAmountSum,
  895. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  896. <if test="dto != null and dto.departmentId != null">
  897. AND department_id = #{dto.departmentId}
  898. </if>
  899. ) AS currentPeriodRealAmountSum,
  900. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  901. <if test="dto != null and dto.departmentId != null">
  902. AND department_id = #{dto.departmentId}
  903. </if>
  904. ) AS YoYRealAmountSum,
  905. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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 major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  906. <if test="dto != null and dto.departmentId != null">
  907. AND department_id = #{dto.departmentId}
  908. </if>
  909. ) AS QoQRealAmountSum,
  910. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  911. <if test="dto != null and dto.departmentId != null">
  912. AND department_id = #{dto.departmentId}
  913. </if>
  914. ) AS totalRealAmountSum,
  915. (SELECT COUNT(major.id) FROM major WHERE major.informal_evaluate = 1 AND major.deleted = 0 AND YEAR(major.created) = YEAR(CURDATE()) AND major.evaluate_aim = aim.evaluate_aim AND major.financial = aim.financial
  916. <if test="dto != null and dto.departmentId != null">
  917. AND department_id = #{dto.departmentId}
  918. </if>
  919. ) AS yearInformalEvaluateCount
  920. FROM
  921. (
  922. SELECT DISTINCT evaluate_aim,
  923. financial
  924. FROM major) AS aim
  925. GROUP BY aim.evaluate_aim,aim.financial
  926. </select>
  927. <!--评估人员效率查询-->
  928. <!--大中型指定需要看了现场才算有效的接单数-->
  929. <select id="getMajorEvaluatePerEfficiencyVO" resultType="com.dayou.vo.MajorEvaluateEfficiencyVO">
  930. SELECT user.id AS userId,
  931. user.userName AS userName,
  932. user.departmentId AS departmentId,
  933. user.departmentName AS departmentName,
  934. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.informal_evaluate = 1 AND major.deleted = 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND (principal_id = user.id OR JSON_CONTAINS(members, CAST(user.id AS JSON)))) AS informalEvaluateCount,
  935. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.informal_evaluate = 0 AND major.deleted = 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND (principal_id = user.id OR JSON_CONTAINS(members, CAST(user.id AS JSON)))) AS unInformalEvaluateCount,
  936. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND (principal_id = user.id OR JSON_CONTAINS(members, CAST(user.id AS JSON)))) AS YoYOrderVolume,
  937. (SELECT COUNT(major.id) FROM (SELECT major.*, major_target.created AS targetCreated FROM major, major_target WHERE major.id = major_target.major_id) AS major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.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 OR JSON_CONTAINS(members, CAST(user.id AS JSON)))) AS QoQOrderVolume,
  938. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodStatementVolume,
  939. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYStatementVolume,
  940. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_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 QoQStatementVolume,
  941. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodReportVolume,
  942. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYReportVolume,
  943. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_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 QoQReportVolume,
  944. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodShouldAmountSum,
  945. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYShouldAmountSum,
  946. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  947. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND principal_id = user.id) AS currentPeriodRealAmountSum,
  948. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND principal_id = user.id) AS YoYRealAmountSum,
  949. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  950. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND principal_id = user.id) AS totalRealAmountSum,
  951. (
  952. SELECT ROUND(SUM(TIMESTAMPDIFF(HOUR, start.created, end.created)) / COUNT(major.id) / 24, 2)
  953. FROM major
  954. INNER JOIN (
  955. SELECT major.id,node.`code`, instance.created
  956. FROM work_node AS node, work_flow_node_instance AS instance, major
  957. WHERE node.id = instance.node_id
  958. AND instance.business_id = major.id
  959. AND instance.deleted = 0
  960. AND node.`code` = 'WRITE_STATEMENT'
  961. AND business_type = 'MAJOR_BUSINESS'
  962. ) AS start ON major.id = start.id
  963. INNER JOIN (
  964. SELECT major.id,node.`code`, instance.created
  965. FROM work_node AS node, work_flow_node_instance AS instance, major
  966. WHERE node.id = instance.node_id
  967. AND instance.business_id = major.id
  968. AND instance.business_sub_id IS NOT NULL
  969. AND instance.deleted = 0
  970. AND node.`code` = 'STATEMENT_BOOKBINDING_STAMP'
  971. AND business_type = 'MAJOR_BUSINESS'
  972. ) AS end ON major.id = end.id
  973. WHERE principal_id = user.id
  974. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  975. ) AS statementAICPTime,
  976. (
  977. SELECT ROUND(SUM(TIMESTAMPDIFF(HOUR, start.created, end.created)) / COUNT(major.id) / 24, 2)
  978. FROM major
  979. INNER JOIN (
  980. SELECT major.id,node.`code`, instance.created
  981. FROM work_node AS node, work_flow_node_instance AS instance, major
  982. WHERE node.id = instance.node_id
  983. AND instance.business_id = major.id
  984. AND instance.deleted = 0
  985. AND node.`code` = 'WRITE_REPORT'
  986. AND business_type = 'MAJOR_BUSINESS'
  987. ) AS start ON major.id = start.id
  988. INNER JOIN (
  989. SELECT major.id,node.`code`, instance.created
  990. FROM work_node AS node, work_flow_node_instance AS instance, major
  991. WHERE node.id = instance.node_id
  992. AND instance.business_id = major.id
  993. AND instance.business_min_id IS NOT NULL
  994. AND instance.deleted = 0
  995. AND node.`code` = 'REPORT_BOOKBINDING_STAMP'
  996. AND business_type = 'MAJOR_BUSINESS'
  997. ) AS end ON major.id = end.id
  998. WHERE principal_id = user.id
  999. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1000. ) AS reportAICPTime,
  1001. (
  1002. SELECT ROUND(SUM(TIMESTAMPDIFF(HOUR, major.created, end.created)) / COUNT(major.id) / 24, 2)
  1003. FROM major
  1004. INNER JOIN (
  1005. SELECT major.id,node.`code`, instance.created
  1006. FROM work_node AS node, work_flow_node_instance AS instance, major
  1007. WHERE node.id = instance.node_id
  1008. AND instance.business_id = major.id
  1009. AND instance.deleted = 0
  1010. AND node.`code` = 'FORMAL_QUOTATION'
  1011. AND business_type = 'MAJOR_BUSINESS'
  1012. ) AS end ON major.id = end.id
  1013. WHERE principal_id = user.id
  1014. AND financial = 1
  1015. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1016. ) AS financialQuoteProcessingTime,
  1017. (
  1018. SELECT ROUND(SUM(TIMESTAMPDIFF(HOUR, major.created, end.created)) / COUNT(major.id) / 24, 2)
  1019. FROM major
  1020. INNER JOIN (
  1021. SELECT major.id,node.`code`, instance.created
  1022. FROM work_node AS node, work_flow_node_instance AS instance, major
  1023. WHERE node.id = instance.node_id
  1024. AND instance.business_id = major.id
  1025. AND instance.deleted = 0
  1026. AND node.`code` = 'FORMAL_QUOTATION'
  1027. AND business_type = 'MAJOR_BUSINESS'
  1028. ) AS end ON major.id = end.id
  1029. WHERE principal_id = user.id
  1030. AND financial = 1
  1031. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1032. ) AS unFinancialQuoteProcessingTime
  1033. FROM
  1034. (SELECT DISTINCT user.id AS id,
  1035. user.`name` AS userName,
  1036. department.name AS departmentName,
  1037. department.id AS departmentId
  1038. FROM user,post,user_post,sorted_department,department
  1039. WHERE `user`.id = user_post.user_id
  1040. AND user_post.post_id = post.id
  1041. AND post.department_id = sorted_department.department_id
  1042. AND sorted_department.department_id = department.id
  1043. AND sorted_department.deleted = 0
  1044. AND user_post.deleted = 0
  1045. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  1046. ) AS user
  1047. <where>
  1048. <if test="dto != null and dto.departmentId != null">
  1049. AND user.departmentId = #{dto.departmentId}
  1050. </if>
  1051. <if test="dto != null and dto.userName != null">
  1052. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  1053. </if>
  1054. </where>
  1055. GROUP BY user.id
  1056. </select>
  1057. <!--大中型指定需要看了现场才算有效的接单数-->
  1058. <sql id="majorEvaEffDetailQuery">
  1059. SELECT
  1060. major.order_id AS orderId,
  1061. financial,
  1062. major.name AS projectName,
  1063. customer.name AS customerName,
  1064. (SELECT customer_company.name FROM customer_company WHERE customer_company.id = clientele_sub_id) AS customerSubName,
  1065. (SELECT name FROM customer_linkman WHERE id = major.clientele_contact_id) AS linkmanName,
  1066. major.owner,
  1067. report.report_no AS reportNo,
  1068. (SELECT name FROM user WHERE id = major.principal_id) AS principalName,
  1069. members,
  1070. (SELECT name FROM user WHERE id = major.client_manager_id) AS clientManagerName,
  1071. (SELECT SUM(check_value) FROM major_target WHERE report_no = report.report_no AND deleted = 0) AS checkValueSum,
  1072. (SELECT SUM(build_acreage) FROM major_target WHERE report_no = report.report_no AND deleted = 0) AS buildAcreageSum,
  1073. evaluate_aim,
  1074. statement.production_time AS writeStatementDate,
  1075. report.production_time AS writeReportDate,
  1076. order_fund.should_amount AS shouldAmount,
  1077. order_fund.real_amount AS realAmount,
  1078. IF(state = 'CLOSED', '流程终止', nodeInfo.currentNodeName) AS currentNodeName,
  1079. IF(state = 'CLOSED', '-', nodeInfo.handlerName) AS handlerName
  1080. FROM major
  1081. LEFT JOIN user ON user.id = major.principal_id
  1082. LEFT JOIN customer_company AS customer ON customer.id = major.clientele_id
  1083. LEFT JOIN (SELECT nodeInstance.id AS currentNodeId,
  1084. user.name AS handlerName,
  1085. node.name AS currentNodeName,
  1086. nodeInstance.business_id AS businessId,
  1087. nodeInstance.business_sub_id,
  1088. nodeInstance.business_min_id,
  1089. nodeInstance.state
  1090. FROM work_flow_node_instance AS nodeInstance,
  1091. work_task_record AS record,
  1092. user,
  1093. work_node AS node
  1094. WHERE (state = 'PENDING' OR ( state = 'FINISHED' AND node.`code` = 'BUSINESS_ARCHIVING' ) OR state = 'CLOSED')
  1095. AND nodeInstance.node_id = node.id
  1096. AND record.handler_id = user.id
  1097. AND nodeInstance.deleted = 0
  1098. AND record.instance_id = nodeInstance.id
  1099. AND nodeInstance.business_type = 'MAJOR_BUSINESS'
  1100. <if test="dto != null and dto.efficiencyType == 'report'">
  1101. AND nodeInstance.business_min_id IS NOT NULL
  1102. </if>
  1103. <if test="dto != null and dto.efficiencyType == 'statement'">
  1104. AND nodeInstance.business_sub_id IS NOT NULL
  1105. </if>
  1106. ) AS nodeInfo ON nodeInfo.businessId = major.id
  1107. LEFT JOIN major_production AS statement ON statement.major_id =nodeInfo.businessId AND statement.report_no = nodeInfo.business_sub_id AND statement.deleted = 0 AND statement.production = 'STATEMENT'
  1108. LEFT JOIN major_production AS report ON report.major_id =nodeInfo.businessId AND report.report_no = nodeInfo.business_min_id AND report.deleted = 0 AND report.production != 'STATEMENT'
  1109. LEFT JOIN order_fund ON order_fund.business_id = major.id AND business_type = 'MAJOR_BUSINESS' AND order_fund.deleted = 0
  1110. WHERE major.deleted = 0
  1111. <if test="dto != null and dto.efficiencyType == 'order'">
  1112. # 看了现场才算接单,评估对象大于0
  1113. AND (SELECT COUNT(major_target.major_id) FROM major_target WHERE major_target.deleted = 0 AND major_target.major_id = major.id) > 0
  1114. </if>
  1115. <if test="dto != null and dto.customerId != null">
  1116. AND major.clientele_id = #{dto.customerId}
  1117. </if>
  1118. <if test="dto != null and dto.clienteleContactId != null">
  1119. AND major.clientele_contact_id = #{dto.clienteleContactId}
  1120. </if>
  1121. <if test="dto != null and dto.departmentId != null">
  1122. AND major.department_id = #{dto.departmentId}
  1123. </if>
  1124. <if test="dto != null and dto.evaluateAim != null and dto.financial != null">
  1125. AND major.evaluate_aim = #{dto.evaluateAim}
  1126. AND major.financial = #{dto.financial}
  1127. </if>
  1128. <if test="dto != null and dto.informalEvaluate != null">
  1129. AND major.informal_evaluate = #{dto.informalEvaluate}
  1130. </if>
  1131. <if test="dto != null and dto.marketDepartmentId != null">
  1132. AND major.market_department_id = #{dto.marketDepartmentId}
  1133. </if>
  1134. <if test="dto != null and dto.principalId != null">
  1135. AND (major.principal_id = #{dto.principalId}
  1136. <if test="dto != null and dto.memberId != null">
  1137. OR JSON_CONTAINS(major.members, CAST(#{dto.memberId} AS JSON))
  1138. </if>)
  1139. </if>
  1140. <if test="dto != null and dto.clientManagerId != null">
  1141. AND major.client_manager_id = #{dto.clientManagerId}
  1142. </if>
  1143. <if test="dto != null and dto.efficiencyType == 'order'">
  1144. AND (SELECT major_target.created FROM major_target WHERE major_target.major_id = major.id AND deleted = 0 LIMIT 1) BETWEEN #{dto.startTime} AND #{dto.endTime}
  1145. </if>
  1146. <if test="dto != null and dto.efficiencyType == 'marketOrder'">
  1147. # 市场筛选条件不一样
  1148. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1149. </if>
  1150. <if test="dto != null and dto.efficiencyType == 'statement'">
  1151. AND statement.production_time BETWEEN #{dto.startTime} AND #{dto.endTime}
  1152. </if>
  1153. <if test="dto != null and dto.efficiencyType == 'report'">
  1154. AND report.production_time BETWEEN #{dto.startTime} AND #{dto.endTime}
  1155. </if>
  1156. <if test="dto != null and dto.efficiencyType == 'should'">
  1157. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1158. AND order_fund.should_amount IS NOT NULL
  1159. </if>
  1160. <if test="dto != null and dto.efficiencyType == 'real'">
  1161. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1162. AND order_fund.real_amount IS NOT NULL
  1163. </if>
  1164. <if test="dto != null and dto.efficiencyType == 'unSite'">
  1165. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1166. # unSite是未看现场数,评估对象为0则没看现场
  1167. AND (SELECT COUNT(major_target.major_id) FROM major_target WHERE major_target.deleted = 0 AND major_target.major_id = major.id) = 0
  1168. </if>
  1169. ORDER BY major.created DESC
  1170. </sql>
  1171. <!--效率详情列表查询-->
  1172. <select id="getMajorEfficiencyDetailVO" resultType="com.dayou.vo.MajorEfficiencyDetailVO">
  1173. <include refid="majorEvaEffDetailQuery" />
  1174. </select>
  1175. <!--效率详情列表导出-->
  1176. <select id="exportMajorEfficiencyDetailVO" resultType="com.dayou.vo.MajorEfficiencyDetailVO">
  1177. <include refid="majorEvaEffDetailQuery" />
  1178. </select>
  1179. <!--项目部绩效查询-->
  1180. <select id="getMajorDepPerformanceOverviewVO" resultType="com.dayou.vo.MajorDepPerformanceOverviewVO">
  1181. SELECT department.departmentId,
  1182. department.departmentName,
  1183. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.department_id = department.departmentId) AS outputValue,
  1184. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND major.department_id = department.departmentId) AS orderVolume,
  1185. (
  1186. SELECT ROUND(SUM(TIMESTAMPDIFF(HOUR, major.created, end.created)) / COUNT(major.id) / 24, 2)
  1187. FROM major
  1188. INNER JOIN (
  1189. SELECT major.id,node.`code`, instance.created
  1190. FROM work_node AS node, work_flow_node_instance AS instance, major
  1191. WHERE node.id = instance.node_id
  1192. AND instance.business_id = major.id
  1193. AND instance.deleted = 0
  1194. AND node.`code` = 'FORMAL_QUOTATION'
  1195. AND business_type = 'MAJOR_BUSINESS'
  1196. ) AS end ON major.id = end.id
  1197. WHERE department_id = department.departmentId
  1198. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1199. ) AS quoteProcessingTime,
  1200. COALESCE ( SUM( reCheckPer.normal_mistake ), 0 ) AS reCheckNormalMistakeCount,
  1201. COALESCE ( SUM( reCheckPer.hard_mistake ), 0 ) AS reCheckHardMistakeCount,
  1202. COALESCE ( SUM( reCheckPer.fatal_mistake ), 0 ) AS reCheckFatalMistakeCount,
  1203. (SELECT ROUND(SUM((
  1204. IF
  1205. ((target.evaluate_value * 10000) > production.evaluate_amount,
  1206. (target.evaluate_value * 10000) / production.evaluate_amount,
  1207. production.evaluate_amount / (target.evaluate_value * 10000))
  1208. )) / COUNT(major.id), 2)
  1209. FROM
  1210. major,
  1211. major_target AS target,
  1212. major_production AS production
  1213. WHERE major.deleted = 0
  1214. AND major.id = target.major_id
  1215. AND target.report_no = production.report_no
  1216. AND department_id = department.departmentId
  1217. AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime}
  1218. ) AS quotationAccuracy
  1219. FROM (
  1220. SELECT DISTINCT
  1221. department.name AS departmentName,
  1222. department.id AS departmentId
  1223. FROM sorted_department,department
  1224. WHERE sorted_department.department_id = department.id
  1225. AND sorted_department.deleted = 0
  1226. AND sorted_department.business_type = 'MAJOR_BUSINESS'
  1227. ) AS department
  1228. LEFT JOIN (
  1229. SELECT
  1230. department_id,
  1231. major.created,
  1232. major_production.id AS production_id
  1233. FROM
  1234. major
  1235. LEFT JOIN major_production ON major_production.major_id = major.id
  1236. AND major_production.deleted = 0
  1237. ) AS orderInfo ON department.departmentId = orderInfo.department_id
  1238. LEFT JOIN ( SELECT production_id, fatal_mistake, hard_mistake, normal_mistake
  1239. FROM
  1240. business_production_performance
  1241. WHERE business_type = 'MAJOR_BUSINESS' AND check_loop = '复审'
  1242. AND (business_production_performance.modified BETWEEN #{dto.startTime} AND #{dto.endTime})
  1243. ) AS reCheckPer ON reCheckPer.production_id = orderInfo.production_id
  1244. GROUP BY department.departmentId
  1245. </select>
  1246. <!--市场部效率查询-->
  1247. <select id="getMajorsMarketDepEfficiencyVO" resultType="com.dayou.vo.MajorMarketEfficiencyVO">
  1248. SELECT department.id AS departmentId,
  1249. department.name AS departmentName,
  1250. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodOrderVolume,
  1251. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.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,
  1252. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.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,
  1253. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodStatementVolume,
  1254. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYStatementVolume,
  1255. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_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 market_department_id = department.id) AS QoQStatementVolume,
  1256. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodReportVolume,
  1257. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND market_department_id = department.id) AS YoYReportVolume,
  1258. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_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 market_department_id = department.id) AS QoQReportVolume,
  1259. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodShouldAmountSum,
  1260. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1261. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1262. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodRealAmountSum,
  1263. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1264. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1265. (SELECT COUNT(major.id) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.real_amount IS NOT NULL AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND market_department_id = department.id) AS currentPeriodRealAmountOrderCount,
  1266. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND market_department_id = department.id) AS totalRealAmountSum
  1267. FROM
  1268. (
  1269. SELECT department.name,
  1270. department.id
  1271. FROM major,department
  1272. WHERE major.market_department_id = department.id
  1273. <if test="dto != null and dto.departmentId != null">
  1274. AND department.id = #{dto.departmentId}
  1275. </if>
  1276. GROUP BY department.id
  1277. ) AS department
  1278. GROUP BY department.id
  1279. ORDER BY currentPeriodOrderVolume DESC
  1280. </select>
  1281. <select id="getMajorMarketPerEfficiencyVO" resultType="com.dayou.vo.MajorMarketEfficiencyVO">
  1282. SELECT user.id AS userId,
  1283. user.userName,
  1284. user.departmentId,
  1285. user.departmentName,
  1286. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodOrderVolume,
  1287. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.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,
  1288. (SELECT COUNT(major.id) FROM major LEFT JOIN major_production AS pro ON pro.major_id = major.id AND production != 'STATEMENT' AND pro.deleted = 0 WHERE major.deleted = 0 AND major.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,
  1289. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodStatementVolume,
  1290. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYStatementVolume,
  1291. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production = 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_sub_id = report_no AND deleted = 0) > 0 AND production.production_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 client_manager_id = user.id) AS QoQStatementVolume,
  1292. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodReportVolume,
  1293. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_time BETWEEN DATE_SUB(#{dto.startTime}, INTERVAL 1 YEAR) AND DATE_SUB(#{dto.endTime}, INTERVAL 1 YEAR) AND client_manager_id = user.id) AS YoYReportVolume,
  1294. (SELECT COUNT(production.id) FROM major,major_production AS production WHERE major.deleted = 0 AND major.id = production.major_id AND production != 'STATEMENT' AND production.deleted = 0 AND (SELECT COUNT(id) FROM work_flow_node_instance WHERE business_min_id = report_no AND deleted = 0) > 0 AND production.production_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 client_manager_id = user.id) AS QoQReportVolume,
  1295. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodShouldAmountSum,
  1296. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1297. (SELECT COALESCE(SUM(order_fund.should_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1298. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodRealAmountSum,
  1299. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1300. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.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,
  1301. (SELECT COUNT(major.id) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.real_amount IS NOT NULL AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND major.created BETWEEN #{dto.startTime} AND #{dto.endTime} AND client_manager_id = user.id) AS currentPeriodRealAmountOrderCount,
  1302. (SELECT COALESCE(SUM(order_fund.real_amount),0) FROM major, order_fund WHERE major.deleted = 0 AND major.id = order_fund.business_id AND order_fund.deleted = 0 AND business_type = 'MAJOR_BUSINESS' AND client_manager_id = user.id) AS totalRealAmountSum
  1303. FROM
  1304. (
  1305. SELECT user.name AS userName,
  1306. user.id,
  1307. department.id AS departmentId,
  1308. department.name AS departmentName
  1309. FROM major,user,user_post,post,department
  1310. WHERE major.client_manager_id = user.id
  1311. AND user.id = user_post.user_id
  1312. AND user_post.post_id = post.id
  1313. AND post.department_id = department.id
  1314. GROUP BY user.id
  1315. ) AS user
  1316. <where>
  1317. <if test="dto != null and dto.departmentId != null">
  1318. AND user.departmentId = #{dto.departmentId}
  1319. </if>
  1320. <if test="dto != null and dto.userName != null">
  1321. AND user.userName LIKE CONCAT('%',#{dto.userName},'%')
  1322. </if>
  1323. </where>
  1324. GROUP BY user.id
  1325. order by currentPeriodOrderVolume DESC
  1326. </select>
  1327. </mapper>