duhongyu месяцев назад: 9
Родитель
Сommit
1fe74a46e1
1 измененных файлов с 32 добавлено и 11 удалено
  1. 32 11
      hjzx-mapper/src/main/resources/mapper/report/ReportMapper.xml

+ 32 - 11
hjzx-mapper/src/main/resources/mapper/report/ReportMapper.xml

@@ -377,21 +377,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
377 377
 	</select>
378 378
 
379 379
 	<select id="selectRegionOrderCount"  parameterType="String" resultMap="RegionOrderResult">
380
+		WITH RECURSIVE AreaCTE AS (
380 381
 		SELECT
381
-		a.id region,
382
-		a.name  AS name,
383
-		COUNT(wo.workordercode) number ,
382
+		id AS root_id,
383
+		id AS child_id,
384
+		name AS root_name,
385
+		parent_id
386
+		FROM sys_area
387
+		WHERE   type=#{type} and parent_id=#{area}
388
+		UNION ALL
389
+		SELECT
390
+		a.root_id,
391
+		s.id AS child_id,
392
+		a.root_name,
393
+		s.parent_id
394
+		FROM sys_area s
395
+		INNER JOIN AreaCTE a ON s.parent_id = a.child_id
396
+		)
397
+		SELECT
398
+		a.root_id AS region,
399
+		a.root_name AS name,
400
+		COUNT(wo.workordercode) AS number,
384 401
 		COUNT(DISTINCT wo.call_id) AS callNumber,
385 402
 		COUNT(DISTINCT lv.workordercode) AS visitNumber,
386 403
 		CONCAT(
387 404
 		COALESCE(
388
-		ROUND(AVG(CASE WHEN lv.myd >0 and lv.myd<![CDATA[<]]> 3 THEN 1 ELSE 0 END) * 100, 2),
405
+		ROUND(
406
+		AVG(CASE WHEN lv.myd > 0 AND lv.myd <![CDATA[<]]>  3 THEN 1 ELSE 0 END) * 100,
407
+		2
408
+		),
389 409
 		0
390 410
 		),
391 411
 		'%'
392 412
 		) AS mydRate
393
-		FROM sys_area a
394
-		LEFT JOIN wo_workorderbase wo ON a.id = wo.area
413
+		FROM AreaCTE a
414
+		LEFT JOIN wo_workorderbase wo
415
+		ON a.child_id = wo.area
395 416
 		<if test="time != null and time !='' ">
396 417
 			and YEAR(wo.createtime) = YEAR(CURRENT_DATE)
397 418
 			AND ${time}(wo.createtime) = ${time}(CURRENT_DATE)
@@ -407,12 +428,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
407 428
 		MAX(visit_id) AS visit_id
408 429
 		FROM wo_visitlog
409 430
 		GROUP BY workordercode
410
-		) v2 ON v1.workordercode = v2.workordercode
431
+		) v2
432
+		ON v1.workordercode = v2.workordercode
411 433
 		AND v1.visit_id = v2.visit_id
412
-		) lv ON wo.workordercode = lv.workordercode
413
-		where 1=1
414
-		 and  a.type=#{type} and a.parent_id=#{area}
415
-		GROUP BY a.id ;
434
+		) lv
435
+		ON wo.workordercode = lv.workordercode
436
+		GROUP BY a.root_id, a.root_name;
416 437
 	</select>
417 438
 	<select id="selectTelephoneData"  parameterType="String" resultMap="RecordDateViewResult">
418 439
 		select count(1) total,