lyhzzz 2 лет назад
Родитель
Сommit
207761a1c2

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

@@ -16,18 +16,46 @@ 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 type,
+    public ResultData repairAddTrend(@RequestParam(required = false,defaultValue = "0") Integer cameraType,
+                                     @RequestParam(required = false,defaultValue = "0") Integer type,
                                      @RequestParam(required = false) String startTime,
                                      @RequestParam(required = false) String endTime){
 
         return ResultData.ok( dataCountService.repairAddTrend(cameraType,type,startTime,endTime));
     }
+
+    /**
+     *故障类型统计
+     * @param cameraType    0看看,1看见,2深时
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     */
+    @GetMapping("/faultCount")
+    public ResultData faultCount(@RequestParam(required = false,defaultValue = "0") Integer cameraType,
+                                     @RequestParam(required = false) String startTime,
+                                     @RequestParam(required = false) String endTime){
+
+        return ResultData.ok( dataCountService.faultCount(cameraType,startTime,endTime));
+    }
+
+    /**
+     *保修类型统计
+     * @param cameraType    0看看,1看见,2深时
+     * @param startTime 开始时间
+     * @param endTime 结束时间
+     */
+    @GetMapping("/warrantyTypeCount")
+    public ResultData warrantyTypeCount(@RequestParam(required = false,defaultValue = "0") Integer cameraType,
+                                 @RequestParam(required = false) String startTime,
+                                 @RequestParam(required = false) String endTime){
+
+        return ResultData.ok( dataCountService.warrantyTypeCount(cameraType,startTime,endTime));
+    }
 }

+ 7 - 1
src/main/java/com/fdkankan/sale/mapper/DataCountMapper.java

@@ -23,9 +23,15 @@ import java.util.List;
 @Mapper
 public interface DataCountMapper {
 
-    List<DataGroupByCount> repairDataGroupBy(@Param("tb") String tb, @Param("dayFormat") String dayFormat,@Param("cameraType") Integer cameraType,
+    List<DataGroupByCount> repairDataGroupBy(@Param("tb") String tb, @Param("dateFormat") String dateFormat,@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);
+
+    List<DataGroupByCount> faultCount( @Param("cameraType") Integer cameraType,
+                                       @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    List<DataGroupByCount>  warrantyTypeCount(@Param("cameraType") Integer cameraType,
+                                              @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 43 - 5
src/main/java/com/fdkankan/sale/service/impl/DataCountService.java

@@ -3,6 +3,7 @@ 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.util.Dateutils;
 import com.fdkankan.sale.vo.response.DataGroupByCount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -22,19 +23,23 @@ public class DataCountService {
     DataCountMapper dataCountMapper;
 
     public Object repairAddTrend(Integer cameraType, Integer type, String startTime, String endTime) {
+        startTime = Dateutils.formatStartTime(startTime);
+        endTime = Dateutils.formatEndTime(endTime);
+        
         List<DataGroupByCount> dataList = new ArrayList<>();
-        int rule = DateUtil.DAY;
+        List<DataGroupByCount> result = new ArrayList<>();
+        int rule = Dateutils.DAY;
         String tb ="t_repair";
         switch (type){
             case 0 :
                 dataList = dataCountMapper.repairDataGroupBy(tb, dayFormat, cameraType,startTime, endTime);
                 break;
             case 1 :
-                rule = DateUtil.WEEK;
+                rule = Dateutils.WEEK;
                 dataList = dataCountMapper.repairDataGroupByWeek(tb,cameraType,startTime,endTime);
                 break;
             case 2 :
-                rule = DateUtil.MONTH;
+                rule = Dateutils.MONTH;
                 dataList =  dataCountMapper.repairDataGroupBy(tb,mouthFormat,cameraType,startTime,endTime);
                 break;
         }
@@ -42,8 +47,41 @@ public class DataCountService {
         //查询从开始时间到结束时间为止所有天数,月份,不存在结果补零
         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;
+        List<String> dates = Dateutils.findDatesStr(Dateutils.getDate(startTime), Dateutils.getDate(endTime),rule );
+        setListData(result,map,dates);
+        return result;
+
+    }
+
+
+    private void setListData(List<DataGroupByCount> kkList, HashMap<String, Long> kkMap, List<String> dates) {
+        for (String key : dates) {
+            DataGroupByCount newCount = new DataGroupByCount();
+            newCount.setGroupKey(key);
+            Long count = kkMap.get(key) == null ? 0L : kkMap.get(key);
+            newCount.setCount(count);
+            kkList.add(newCount);
+        }
     }
 
+    public Object faultCount(Integer cameraType, String startTime, String endTime) {
+        startTime = Dateutils.formatStartTime(startTime);
+        endTime = Dateutils.formatEndTime(endTime);
+
+        return dataCountMapper.faultCount( cameraType,startTime, endTime);
+    }
+
+    public Object warrantyTypeCount(Integer cameraType, String startTime, String endTime) {
+        startTime = Dateutils.formatStartTime(startTime);
+        endTime = Dateutils.formatEndTime(endTime);
+        List<DataGroupByCount> list = dataCountMapper.warrantyTypeCount(cameraType, startTime, endTime);
+        for (DataGroupByCount dataGroupByCount : list) {
+            switch (dataGroupByCount.getGroupKey()){
+                case "0" : dataGroupByCount.setGroupKey2("保修期内"); break;
+                case "1" : dataGroupByCount.setGroupKey2("保修期外"); break;
+                case "2" : dataGroupByCount.setGroupKey2("非保修项目"); break;
+            }
+        }
+        return list;
+    }
 }

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

@@ -2,17 +2,10 @@ 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";
 
@@ -27,21 +20,6 @@ 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));
     }

+ 160 - 0
src/main/java/com/fdkankan/sale/util/Dateutils.java

@@ -0,0 +1,160 @@
+package com.fdkankan.sale.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+public class Dateutils {
+
+    public static int  DAY =  Calendar.DAY_OF_MONTH;
+    public static int  WEEK =  Calendar.WEEK_OF_MONTH;
+    public static int  MONTH =  Calendar.MONTH;
+
+    /**
+     * 获取指定时间区间的所有数据(包含日期和月份)
+     * @param dBegin
+     * @param dEnd
+     * @param rule 日历规则 如:Calendar.DAY_OF_MONTH
+     * @return
+     */
+    public static List<Date> findDates(Date dBegin, Date dEnd, int rule) {
+        List<Date> lDate = new ArrayList<>();
+        if (dEnd.before(dBegin)){
+            return lDate;
+        }
+        Calendar calBegin = Calendar.getInstance();
+        // 使用给定的 Date 设置此 Calendar 的时间
+        calBegin.setTime(dBegin);
+        Calendar calEnd = Calendar.getInstance();
+        // 使用给定的 Date 设置此 Calendar 的时间
+        calEnd.setTime(dEnd);
+        // 测试此日期是否在指定日期之后
+        while (dEnd.after(calBegin.getTime())) {
+            // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
+            Date time = calBegin.getTime();
+            if(rule == Calendar.WEEK_OF_MONTH){
+                time = getMonday(time);
+            }
+            lDate.add(time);
+            calBegin.add(rule, 1);
+        }
+        return lDate;
+    }
+    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 Date getDate(String date) {
+        try {
+            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return new Date();
+    }
+    public static Date getMonday(Date date) {
+        Calendar calBegin = Calendar.getInstance();
+        calBegin.setTime(date);
+        calBegin.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);    //周一
+        return calBegin.getTime();
+    }
+
+    public static String getDate(Date date) {
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
+    }
+    public static String getDateN(Date date) {
+        return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
+    }
+
+    public static String getMonthDate(Date date) {
+        return new SimpleDateFormat("yyyy-MM").format(date);
+    }
+    public static Date getMonthDate(String date) {
+        try {
+            return new SimpleDateFormat("yyyy-MM").parse(date);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return new Date();
+    }
+
+    public static String getDayDate(Date date) {
+        return new SimpleDateFormat("yyyy-MM-dd").format(date);
+    }
+    public static String getDayZeroDate(Date date) {
+        return new SimpleDateFormat("yyyy-MM-dd").format(date) +" 00:00:00";
+    }
+
+
+    public static String getHalfYearStr() {
+        return new SimpleDateFormat("yyyy-MM-dd").format(getHalfYear())+" 00:00:00";
+    }
+    public static Date getHalfYear() {
+        Calendar c = Calendar.getInstance();
+        c.setTime(new Date());
+        c.add(Calendar.MONTH, -6);
+        return c.getTime();
+    }
+
+    public static  String getLastMonTh(Date date){
+        Calendar ca = Calendar.getInstance();
+        ca.setTime(date);
+        ca.set(Calendar.DAY_OF_MONTH, ca.getActualMaximum(Calendar.DAY_OF_MONTH));
+        return new SimpleDateFormat("yyyy-MM-dd").format(ca.getTime()) +" 23:59:59";
+    }
+
+    public static String formatStartTime(String startTime) {
+        if(StringUtils.isBlank(startTime)){
+            startTime = Dateutils.getHalfYearStr();
+        }
+        if(startTime.length() <12){  //月,开始时间到1号 0点
+            startTime +=  " 00:00:00";
+        }
+        return startTime;
+    }
+    public static String formatEndTime(String endTime) {
+        if(StringUtils.isBlank(endTime)){
+            endTime = Dateutils.getDate(new Date());
+        }
+        if(endTime.length() <12 ){  //月,开始时间到1号 0点
+            endTime +=  " 23:59:59";
+        }
+        return endTime;
+    }
+
+
+    public static String getStartTime(String startTime) {
+        if(StringUtils.isBlank(startTime)){
+            return null;
+        }
+        if(startTime.length() > 12){
+            return startTime;
+        }
+        return startTime +" 00:00:00";
+    }
+
+    public static String getEndTime(String endTime) {
+        if(StringUtils.isBlank(endTime)){
+            return null;
+        }
+        if(endTime.length() > 12){
+            return endTime;
+        }
+        return endTime +" 23:59:59";
+    }
+
+}

+ 17 - 1
src/main/resources/mapper/sale/DataCountMapper.xml

@@ -3,7 +3,7 @@
 <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}
+        SELECT DATE_FORMAT(create_time,#{dateFormat}) AS groupKey, count(1) AS count FROM ${tb}
         WHERE rec_status = 'A' and camera_type = #{cameraType}
           and create_time between #{startTime} and #{endTime}
         GROUP BY groupKey
@@ -17,4 +17,20 @@
           and create_time between #{startTime} and #{endTime}
         ) as tb GROUP BY groupKey
     </select>
+    <select id="faultCount" resultType="com.fdkankan.sale.vo.response.DataGroupByCount">
+        SELECT f.fault_id as groupKey, f.fault_msg as groupKey2 ,count(1) as count FROM  t_repair_fault rf
+            left join t_repair r on rf.repair_id = r.repair_id
+            left join t_fault f on rf.fault_id = f.fault_id
+        WHERE rf.rec_status = 'A' and r.camera_type = #{cameraType}
+          and rf.create_time between #{startTime} and #{endTime}
+            GROUP BY rf.fault_id
+    </select>
+
+    <select id="warrantyTypeCount" resultType="com.fdkankan.sale.vo.response.DataGroupByCount">
+        SELECT tor.warranty_type as groupKey,count(1) as count FROM  t_order_receiving tor
+             left join t_repair r on tor.repair_id = r.repair_id
+        WHERE tor.rec_status = 'A' and r.camera_type = #{cameraType}
+          and tor.create_time between #{startTime} and #{endTime}
+        GROUP BY tor.warranty_type
+    </select>
 </mapper>

+ 2 - 1
src/main/resources/mapper/sale/RepairMapper.xml

@@ -4,8 +4,9 @@
 
 
     <select id="saleOrderList" resultType="com.fdkankan.sale.vo.response.RepairerVo">
-        select  r.*  from t_repair r
+        select  r.* ,rr.check_result from t_repair r
              left join  t_order_receiving o on r.repair_id = o.repair_id
+            left join  t_repair_register rr on r.repair_id = rr.repair_id
             left join  t_customer c on r.repair_id = c.repair_id
         where r.rec_status = 'A' and r.status in
         <foreach item="status" collection="param.statusList" open="(" separator="," close=")">