lyhzzz 2 年之前
父节点
当前提交
e1d6d886bd

+ 7 - 3
src/main/java/com/fdkankan/sale/controller/DataCountController.java

@@ -16,14 +16,18 @@ public class DataCountController {
     DataCountService dataCountService;
 
     /**
-     * 工单趋势统计
+     *
+     * @param cameraType    0看看,1看见,2深时
+     * @param type    0:日 ,1:周,2:月
+     * @param startTime 开始时间
+     * @param endTime 结束时间
      */
     @GetMapping("/repairAddTrend")
     public ResultData repairAddTrend(@RequestParam(required = false) Integer cameraType,
-                                     @RequestParam(required = false) Integer dateType,
+                                     @RequestParam(required = false) Integer type,
                                      @RequestParam(required = false) String startTime,
                                      @RequestParam(required = false) String endTime){
 
-        return ResultData.ok();
+        return ResultData.ok( dataCountService.repairAddTrend(cameraType,type,startTime,endTime));
     }
 }

+ 31 - 0
src/main/java/com/fdkankan/sale/mapper/DataCountMapper.java

@@ -0,0 +1,31 @@
+package com.fdkankan.sale.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.sale.entity.Repair;
+import com.fdkankan.sale.vo.request.RepairInfoListParam;
+import com.fdkankan.sale.vo.request.RepairParam;
+import com.fdkankan.sale.vo.response.DataGroupByCount;
+import com.fdkankan.sale.vo.response.RepairerVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-12-12
+ */
+@Mapper
+public interface DataCountMapper {
+
+    List<DataGroupByCount> repairDataGroupBy(@Param("tb") String tb, @Param("dayFormat") String dayFormat,@Param("cameraType") Integer cameraType,
+                                             @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<DataGroupByCount> repairDataGroupByWeek(@Param("tb") String tb, @Param("cameraType") Integer cameraType,
+                                                 @Param("startTime") String startTime, @Param("endTime") String endTime);
+}

+ 42 - 0
src/main/java/com/fdkankan/sale/service/impl/DataCountService.java

@@ -1,7 +1,49 @@
 package com.fdkankan.sale.service.impl;
 
+import com.fdkankan.sale.mapper.DataCountMapper;
+import com.fdkankan.sale.service.IRepairService;
+import com.fdkankan.sale.util.DateUtil;
+import com.fdkankan.sale.vo.response.DataGroupByCount;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
 @Service
 public class DataCountService {
+
+    static String dayFormat = "%Y-%m-%d";
+    static String mouthFormat = "%Y-%m";
+    static String yearFormat = "%Y";
+
+    @Autowired
+    DataCountMapper dataCountMapper;
+
+    public Object repairAddTrend(Integer cameraType, Integer type, String startTime, String endTime) {
+        List<DataGroupByCount> dataList = new ArrayList<>();
+        int rule = DateUtil.DAY;
+        String tb ="t_repair";
+        switch (type){
+            case 0 :
+                dataList = dataCountMapper.repairDataGroupBy(tb, dayFormat, cameraType,startTime, endTime);
+                break;
+            case 1 :
+                rule = DateUtil.WEEK;
+                dataList = dataCountMapper.repairDataGroupByWeek(tb,cameraType,startTime,endTime);
+                break;
+            case 2 :
+                rule = DateUtil.MONTH;
+                dataList =  dataCountMapper.repairDataGroupBy(tb,mouthFormat,cameraType,startTime,endTime);
+                break;
+        }
+
+        //查询从开始时间到结束时间为止所有天数,月份,不存在结果补零
+        HashMap<String,Long> map = new HashMap<>();
+        dataList.forEach(entity -> map.put(entity.getGroupKey(),entity.getCount()));
+        //List<String> dates = Dateutil.findDatesStr(Dateutils.getDate(startTime), Dateutils.getDate(endTime),rule );
+        return null;
+    }
+
 }

+ 2 - 2
src/main/java/com/fdkankan/sale/service/impl/RepairPersonnelService.java

@@ -107,7 +107,7 @@ public class RepairPersonnelService {
         registerParts.forEach(entity -> partIdMap.putIfAbsent(entity.getPartId(),entity.getId()));
 
         for (RepairRegisterPartVo partVo : param.getPartList()) {
-            Part part = partService.getById(partVo.getId());
+            Part part = partService.getById(partVo.getPartId());
             if(part == null){
                 continue;
             }
@@ -162,7 +162,7 @@ public class RepairPersonnelService {
         repairRegisterService.saveOrUpdate(repairRegister);
 
         for (RepairRegisterPartVo partVo : param.getPartList()) {
-            Part part = partService.getById(partVo.getId());
+            Part part = partService.getById(partVo.getPartId());
             if(part == null){
                 continue;
             }

+ 22 - 0
src/main/java/com/fdkankan/sale/util/DateUtil.java

@@ -2,10 +2,17 @@ package com.fdkankan.sale.util;
 
 
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 public class DateUtil {
 
+    public static int  DAY =  Calendar.DAY_OF_MONTH;
+    public static int  WEEK =  Calendar.WEEK_OF_MONTH;
+    public static int  MONTH =  Calendar.MONTH;
+
     public static String repairIdFmt = "yyyyMMddHHmmssSSS";
     public static String dFmt = "yyyy-MM-dd HH:mm:ss";
 
@@ -20,6 +27,21 @@ public class DateUtil {
         return simpleDateFormat.format(date);
     }
 
+
+//    public static List<String> findDatesStr(Date dBegin, Date dEnd, int rule) {
+//        List<String> datesStr = new ArrayList<>();
+//        List<Date> dates = findDates(dBegin, dEnd, rule);
+//        for (Date date : dates) {
+//            String day ;
+//            if(rule == MONTH){
+//                day =getMonthDate(date);
+//            }else {
+//                day = getDayDate(date);
+//            }
+//            datesStr.add(day);
+//        }
+//        return datesStr;
+//    }
     public static void main(String[] args) {
         System.out.println(getDate(repairIdFmt));
     }

+ 8 - 0
src/main/java/com/fdkankan/sale/vo/response/DataGroup.java

@@ -0,0 +1,8 @@
+package com.fdkankan.sale.vo.response;
+
+import lombok.Data;
+
+@Data
+public class DataGroup {
+    private String groupKey;
+}

+ 9 - 0
src/main/java/com/fdkankan/sale/vo/response/DataGroupByCount.java

@@ -0,0 +1,9 @@
+package com.fdkankan.sale.vo.response;
+
+import lombok.Data;
+
+@Data
+public class DataGroupByCount extends DataGroup{
+    private Long count;
+    private String groupKey2;
+}

+ 20 - 0
src/main/resources/mapper/sale/DataCountMapper.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.sale.mapper.DataCountMapper">
+
+    <select id="repairDataGroupBy" resultType="com.fdkankan.sale.vo.response.DataGroupByCount">
+        SELECT DATE_FORMAT(create_time,#{dateFormat}) AS groupKey, count(id) AS count FROM ${tb}
+        WHERE rec_status = 'A' and camera_type = #{cameraType}
+          and create_time between #{startTime} and #{endTime}
+        GROUP BY groupKey
+    </select>
+
+    <select id="repairDataGroupByWeek" resultType="com.fdkankan.sale.vo.response.DataGroupByCount">
+        SELECT groupKey ,count(1) as count FROM (
+        select date_format(date_add(create_time,interval-(weekday(create_time ))day),'%Y-%m-%d')  as groupKey
+        from ${tb}
+        WHERE rec_status = 'A' and camera_type = #{cameraType}
+          and create_time between #{startTime} and #{endTime}
+        ) as tb GROUP BY groupKey
+    </select>
+</mapper>