wangbo 4 년 전
부모
커밋
b781a6435b

+ 18 - 0
operation_manager/src/main/java/com/huaxu/client/SmsWaterClient.java

@@ -0,0 +1,18 @@
+package com.huaxu.client;
+
+
+import com.huaxu.config.FeignConfig;
+import com.huaxu.model.AjaxMessage;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+import java.util.Map;
+
+@FeignClient(value = "sms-water",configuration={FeignConfig.class})
+public interface SmsWaterClient {
+
+    @GetMapping("/scene/selectAlarmDeviceIdBySenceId")
+    AjaxMessage<List<Map<String,Object>>> selectAlarmDeviceIdBySenceId(@RequestParam("id") int id);
+}

+ 50 - 3
operation_manager/src/main/java/com/huaxu/order/controller/WorkOrderStatisticsController.java

@@ -1,5 +1,6 @@
 package com.huaxu.order.controller;
 
+import com.huaxu.client.SmsWaterClient;
 import com.huaxu.client.UserCenterClient;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.LoginUser;
@@ -34,6 +35,9 @@ public class WorkOrderStatisticsController {
     @Autowired
     UserCenterClient userCenterClient;
 
+    @Autowired
+    SmsWaterClient smsWaterClient;
+
     @RequestMapping(value = "completionStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "工单完成情况统计")
     public AjaxMessage<Map<String, Object>> completionStatistics(
@@ -150,7 +154,6 @@ public class WorkOrderStatisticsController {
         //根据用户编号,获取用户的权限
         LoginUser loginUser = UserUtil.getCurrentUser();
         WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
-
         workOrderManageDto.setProgramItems(loginUser.getProgramItemList());
         workOrderManageDto.setUserType(loginUser.getType());
         //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
@@ -233,7 +236,53 @@ public class WorkOrderStatisticsController {
         return new AjaxMessage<>(ResultStatus.OK, statistics);
     }
 
+    @RequestMapping(value = "dispatchTimesStatistics", method = RequestMethod.GET)
+    @ApiOperation(value = "派单次数统计")
+    public AjaxMessage<List<Map<String,Object>>> dispatchTimesStatistics(
+            @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 type,
+            @ApiParam(value = "统计时间:月格式(yyyy-MM),年格式(yyyy),自定义统计时间开始日期", required = true) @RequestParam(required = true) String startDate,
+            @ApiParam(value = "统计时间:年月统计不用传入此参数,自定义统计截至日期", required = false) @RequestParam(required = false) String endDate) throws ParseException {
+
+        List<Integer> idList = new ArrayList<>();
+        List<Map<String,Object>> statistics = new ArrayList<Map<String, Object>>();
 
+        WorkOrderManageDto workOrderManageDto = new WorkOrderManageDto();
+        switch (type) {
+            case 0:
+                startDate = String.format("%s-01", startDate);
+                endDate = subMonth(startDate, 1);
+                break;
+            case 1:
+                startDate = String.format("%s-01-01", startDate);
+                endDate = subYear(startDate, 1);
+                break;
+            case 2:
+                startDate = String.format("%s-01", startDate);
+                endDate = String.format("%s-01", endDate);
+                break;
+        }
+        workOrderManageDto.setStartDate(startDate);
+        workOrderManageDto.setEndDate(endDate);
+        if(sort == 1){
+            idList.add(id);
+        }
+        else {
+            AjaxMessage<List<Map<String, Object>>> ajaxMessage = smsWaterClient.selectAlarmDeviceIdBySenceId(id);
+             for(Map<String,Object> map : ajaxMessage.getData()){
+                 int deviceId = Integer.parseInt(map.get("device_id").toString());
+                 idList.add(deviceId);
+             }
+        }
+        if(type ==0 || type ==2){
+            statistics =  workOrderManageService.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+        }
+        else if(type == 1){
+            statistics =  workOrderManageService.dispatchTimesYearStatistics(workOrderManageDto,idList);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, statistics);
+    }
 
     @RequestMapping(value = "distributionStatistics", method = RequestMethod.GET)
     @ApiOperation(value = "上报类型、工单类型、工单状态统计")
@@ -312,6 +361,4 @@ public class WorkOrderStatisticsController {
         String reStr = sdf.format(dt1);
         return reStr;
     }
-
-
 }

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

@@ -94,6 +94,16 @@ public interface WorkOrderManageMapper {
     List<StatisticsDto> orderDurationStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
 
+    /**
+     * 判单次数月统计
+     */
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
+    /**
+     * 判单次数年统计
+     */
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
     /**
      * 待处理权限
      */

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

@@ -130,6 +130,16 @@ public interface WorkOrderManageService {
      */
     List<StatisticsDto> orderDurationStatistics(@Param("order") WorkOrderManageDto workOrderManageDto);
 
+    /**
+     * 判单次数月统计
+     */
+    List<Map<String,Object>> dispatchTimesMonthStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
+    /**
+     * 判单次数年统计
+     */
+    List<Map<String,Object>> dispatchTimesYearStatistics(@Param("order") WorkOrderManageDto workOrderManageDto,@Param("idList") List<Integer> idList);
+
     /**
     * @Author lihui
     * @Description 查询个人工单信息

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

@@ -250,6 +250,48 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
         return result;
     }
 
+    @Override
+    public List<Map<String, Object>> dispatchTimesMonthStatistics(WorkOrderManageDto workOrderManageDto, List<Integer> idList) {
+        String strMonth = workOrderManageDto.getStartDate().substring(5,7);
+        int days = getDaysByYearMonth(Integer.parseInt(strMonth));
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesMonthStatistics(workOrderManageDto,idList);
+        for(int i=0; i<days; i++) {
+            String strDate = workOrderManageDto.getStartDate().substring(0, 7) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int day = Integer.parseInt(map.get("日期").toString().substring(8,10));
+            result.get(day-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
+    @Override
+    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto, List<Integer> idList) {
+        List<Map<String,Object>> list = dispatchTimesYearStatistics(workOrderManageDto,idList);
+        List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
+        for(int i=0; i<12; i++) {
+            String strDate = workOrderManageDto.getStartDate().substring(0, 4) + String.format("-%02d", i + 1);
+            Map<String, Object> data = new HashMap<>();
+            data.put("数量", 0);
+            data.put("日期", strDate);
+            data.put("序号",i+1);
+            result.add(data);
+        }
+        for(int i=0;i<list.size();i++){
+            Map<String,Object> map =list.get(i);
+            int month = Integer.parseInt(map.get("日期").toString().substring(5,7));
+            result.get(month-1).put("数量",map.get("数量"));
+        }
+        return result;
+    }
+
     @Override
     public Page<WorkOrderManageDto> selectByTime(IPage<WorkOrderManageDto> page, Integer userId, String startTime, String endTime) {
         LoginUser currentUser = UserUtil.getCurrentUser();

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

@@ -1199,6 +1199,28 @@
     order by send_time desc
   </select>
 
-
-
+  <!--派单次数月统计-->
+  <select id="dispatchTimesMonthStatistics" resultType="map">
+      select count(1) 数量, DATE_FORMAT(send_time,'%Y-%m-%d') 日期
+      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')
+      device_id in
+      <foreach collection="idList" item="item" open="(" close=")" separator=",">
+        #{item}
+      </foreach>
+      group by DATE_FORMAT(send_time,'%Y-%m-%d')
+  </select>
+  <!--派单次数年统计-->
+  <select id="dispatchTimesYearStatistics" resultType="map">
+    select count(1) 数量, DATE_FORMAT(send_time,'%Y-%m') 日期
+    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 device_id in
+    <foreach collection="idList" item="item" open="(" close=")" separator=",">
+      #{item}
+    </foreach>
+    group by DATE_FORMAT(send_time,'%Y-%m')
+  </select>
 </mapper>