wangbo 3 years ago
parent
commit
1e6a9bab43

+ 11 - 6
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java

@@ -295,7 +295,7 @@ public class WorkOrderStatisticsController {
     @RequestMapping(value = "dispatchTimesStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "派单次数统计")
     public AjaxMessage<List<Map<String,Object>>> dispatchTimesStatistics(
-            @ApiParam(value = "场景ID", required = true) @RequestParam(required = true) int scenesId,
+            @ApiParam(value = "场景ID", required = true) @RequestParam(required = true) String scenesId,
             @ApiParam(value = "设备ID", required = true) @RequestParam(required = true) int id,
             @ApiParam(value = "设备或场景标识(1:设备;2:场景)", required = true) @RequestParam(required = true) int sort,
             @ApiParam(value = "统计类型:0-按月统计,1-按年统计,2-自定义统计", required = true) @RequestParam(required = true) int statsType,
@@ -340,17 +340,22 @@ public class WorkOrderStatisticsController {
                 }
                 break;
         }
-        workOrderManageDto.setScenesId(scenesId);
+        List<String> idsList = null;
         workOrderManageDto.setStartDate(startDate);
         workOrderManageDto.setEndDate(endDate);
          if(sort==1){
            workOrderManageDto.setDeviceId(id);
-        }
-        if(statsType ==0 || statsType ==2){
-            statistics =  workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto);
+           idsList = new ArrayList<String>();
+           String [] ids = scenesId.split(",");
+           idsList = Arrays.asList(ids);
+        } else if (sort ==2){
+             workOrderManageDto.setScenesId(Integer.parseInt(scenesId));
+         }
+        if(statsType ==0 || statsType ==2) {
+            statistics = workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto, idsList);
         }
         else if(statsType == 1){
-            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto);
+            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto,idsList);
         }
         return new AjaxMessage<>(ResultStatus.OK, statistics);
     }

+ 2 - 2
operation_manager/src/main/java/com/huaxu/order/dao/WorkOrderManageMapper.java

@@ -97,12 +97,12 @@ public interface WorkOrderManageMapper {
     /**
      * 派单次数月统计
      */
-    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto, @Param("list") List<String> list);
 
     /**
      * 派单次数年统计
      */
-    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto, @Param("list") List<String> list);
 
     /**
      * 待处理权限

+ 2 - 2
operation_manager/src/main/java/com/huaxu/order/service/WorkOrderManageService.java

@@ -134,12 +134,12 @@ public interface WorkOrderManageService {
     /**
      * 判单次数月统计
      */
-    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto) throws ParseException;
+    List<Map<String,Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto,List<String> list) throws ParseException;
 
     /**
      * 判单次数年统计
      */
-    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto) throws ParseException;
+    List<Map<String,Object>> dispatchTimesYearStatistics( WorkOrderManageDto workOrderManageDto,List<String> list) throws ParseException;
 
 
     /**

+ 4 - 4
operation_manager/src/main/java/com/huaxu/order/service/impl/WorkOrderManageServiceImpl.java

@@ -254,10 +254,10 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto) throws ParseException {
+    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto,List<String> idsList) throws ParseException {
         int days = differentDaysByMillisecond(workOrderManageDto.getStartDate(),workOrderManageDto.getEndDate());
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto);
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto,idsList);
         for(int i=0; i<days; i++) {
             String strDate =  subDay(workOrderManageDto.getStartDate(),i);
             Map<String, Object> data = new HashMap<>();
@@ -275,9 +275,9 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto) throws ParseException {
+    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto, List<String> idsList) throws ParseException {
         int months = differentMonths(workOrderManageDto.getStartDate(),workOrderManageDto.getEndDate());
-        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto);
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto,idsList);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
         for(int i=0; i<months; i++) {
             String strDate = workOrderManageDto.getStartDate().substring(0, 4) + String.format("-%02d", i + 1);

+ 18 - 2
operation_manager/src/main/resources/mapper/order/WorkOrderManageMapper.xml

@@ -1203,7 +1203,15 @@
       from sc_work_order_manage t1
       where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
       and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
-      and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+      <if test="list == null">
+        and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+      </if>
+      <if test="list != null">
+        and t1.scenes_id in
+        <foreach collection="list" item="item" open="(" close=")" separator=",">
+          #{item,jdbcType=INTEGER}
+        </foreach>
+      </if>
       <if test="order.deviceId != null">
         and device_id = #{order.deviceId,jdbcType=INTEGER}
       </if>
@@ -1215,7 +1223,15 @@
     from sc_work_order_manage t1
     where t1.send_time &gt;= date_format(#{order.startDate,jdbcType=VARCHAR},'%Y-%m-%d')
     and t1.send_time &lt; date_format(#{order.endDate,jdbcType=VARCHAR},'%Y-%m-%d')
-    and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+    <if test="list == null">
+      and t1.scenes_id= #{order.scenesId,jdbcType=INTEGER}
+    </if>
+    <if test="list != null">
+      and t1.scenes_id in
+      <foreach collection="list" item="item" open="(" close=")" separator=",">
+        #{item,jdbcType=INTEGER}
+      </foreach>
+    </if>
     <if test="order.deviceId != null">
       and device_id = #{order.deviceId,jdbcType=INTEGER}
     </if>

+ 45 - 41
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -472,49 +472,53 @@
         </where>
         group by a.scene_name, a.id, sort
         union all
-        select count(1) amount, d.id,c.scene_id, d.device_name name,1 sort
-        from sms_alarm_details c
-        INNER JOIN sms_device d on c.DEVICE_ID=d.ID
-        INNER JOIN sms_scene a on  c.PARENT_SCENE_ID=a.ID
-        INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
-        <where>
-            a.PARENT_SCENE_ID=0 and a.STATUS=1
-            <if test="scene.tenantId != null  and scene.tenantId != ''">
-                and a.tenant_id = #{scene.tenantId}
-            </if>
-            <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and scene.programItems != null and scene.programItems.size() > 0">
-                <if test="scene.permissonType == 5 or scene.permissonType == 2">
-                    and ( a.DEPT_ORG_ID in
-                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    or
-                    a.COMPANY_ORG_ID in
-                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    )
-                </if>
-                <if test="scene.permissonType == 4 or scene.permissonType == 3">
-                    and a.DEPT_ORG_ID in
-                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
+
+        select sum(amount) amount, id, GROUP_CONCAT(scene_id SEPARATOR ',') scene_id, name, sort
+        from(
+            select count(1) amount, d.id,c.PARENT_SCENE_ID scene_id, d.device_name name,1 sort
+            from sms_alarm_details c
+            INNER JOIN sms_device d on c.DEVICE_ID=d.ID
+            INNER JOIN sms_scene a on  c.PARENT_SCENE_ID=a.ID
+            INNER JOIN sms_scene_type b on a.SCENE_TYPE_ID=b.ID
+            <where>
+                a.PARENT_SCENE_ID=0 and a.STATUS=1
+                <if test="scene.tenantId != null  and scene.tenantId != ''">
+                    and a.tenant_id = #{scene.tenantId}
                 </if>
-                <if test="scene.permissonType == 1">
-                    and a.COMPANY_ORG_ID in
-                    <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
-                        #{item.orgId}
-                    </foreach>
-                    and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and scene.programItems != null and scene.programItems.size() > 0">
+                    <if test="scene.permissonType == 5 or scene.permissonType == 2">
+                        and ( a.DEPT_ORG_ID in
+                        <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                            #{item.orgId}
+                        </foreach>
+                        or
+                        a.COMPANY_ORG_ID in
+                        <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                            #{item.orgId}
+                        </foreach>
+                        )
+                    </if>
+                    <if test="scene.permissonType == 4 or scene.permissonType == 3">
+                        and a.DEPT_ORG_ID in
+                        <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                            #{item.orgId}
+                        </foreach>
+                    </if>
+                    <if test="scene.permissonType == 1">
+                        and a.COMPANY_ORG_ID in
+                        <foreach collection="scene.programItems" item="item" open="(" close=")" separator=",">
+                            #{item.orgId}
+                        </foreach>
+                        and (a.DEPT_ORG_ID is null or a.DEPT_ORG_ID =0)
+                    </if>
                 </if>
-            </if>
-            and c.alarm_start_time &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
-            and c.alarm_start_time &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
-            and SCENE_TYPE_NAME='管网'
-        </where>
-        group by d.device_name, d.id, c.scene_id, sort) t
-        order by amount desc
+                and c.alarm_start_time &gt;= date_format(#{startDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                and c.alarm_start_time &lt; date_format(#{endDate,jdbcType=VARCHAR},'%Y-%m-%d')
+                and SCENE_TYPE_NAME='管网'
+            </where>
+            group by d.device_name, d.id, c.scene_id, sort)
+            ) t
+            order by amount desc
     </select>
 
     <select id="selectMonthAlarmTimes" resultType="map">