wangbo преди 3 години
родител
ревизия
202a6b6295

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

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

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

@@ -274,10 +274,11 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
     @Override
-    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto) {
+    public List<Map<String, Object>> dispatchTimesYearStatistics(WorkOrderManageDto workOrderManageDto) throws ParseException {
+        int months = differentMonths(workOrderManageDto.getStartDate(),workOrderManageDto.getEndDate());
         List<Map<String,Object>> list = workOrderManageMapper.dispatchTimesYearStatistics(workOrderManageDto);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-        for(int i=0; i<12; i++) {
+        for(int i=0; i<months; i++) {
             String strDate = workOrderManageDto.getStartDate().substring(0, 4) + String.format("-%02d", i + 1);
             Map<String, Object> data = new HashMap<>();
             data.put("数量", 0);
@@ -313,6 +314,37 @@ public class WorkOrderManageServiceImpl implements WorkOrderManageService {
     }
 
 
+    /**
+     * 计算2个日期之间相差的  以年、月、日为单位,各自计算结果是多少
+     * 比如:2011-02-02 到  2017-03-02
+     *                                以年为单位相差为:6年
+     *                                以月为单位相差为:73个月
+     *                                以日为单位相差为:2220天
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public int differentMonths(String startDate,String endDate) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date fromDate = sdf.parse(startDate);
+        Date toDate = sdf.parse(endDate);
+        Calendar  from  =  Calendar.getInstance();
+        from.setTime(fromDate);
+        Calendar  to  =  Calendar.getInstance();
+        to.setTime(toDate);
+        //只要年月
+        int fromYear = from.get(Calendar.YEAR);
+        int fromMonth = from.get(Calendar.MONTH);
+
+        int toYear = to.get(Calendar.YEAR);
+        int toMonth = to.get(Calendar.MONTH);
+        // int year = toYear  -  fromYear;
+        int month = toYear *  12  + toMonth  -  (fromYear  *  12  +  fromMonth);
+        // int day = (int) ((to.getTimeInMillis()  -  from.getTimeInMillis())  /  (24  *  3600  *  1000));
+        return month;
+    }
+
+
     /**
      *日期加一天
      */

+ 3 - 1
sms_water/src/main/java/com/huaxu/controller/SceneController.java

@@ -251,7 +251,7 @@ public class SceneController {
                 int year = Integer.parseInt(startDate);
                 if(year == localDate.getYear()){
                     days = differentDaysByMillisecond(String.format("%s-%s-%s",startDate,1,1),
-                            String.format("%s-%s-%s",localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth()));
+                            String.format("%s-%s-%s",localDate.getYear(),localDate.getMonthValue(),localDate.getDayOfMonth()+1));
                 }
                 else {
                     days = LocalDate.of(year, 1, 1).lengthOfYear();
@@ -422,6 +422,8 @@ public class SceneController {
     }
 
 
+
+
     public int differentDaysByMillisecond(String date1,String date2) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Date dt1 = sdf.parse(date1);

+ 36 - 2
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -481,10 +481,11 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return result;
     }
 
-    public List<Map<String,Object>> selectYearAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort){
+    public List<Map<String,Object>> selectYearAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort) throws ParseException {
+        int months = differentMonths(startDate,endDate);
         List<Map<String,Object>> list = sceneMapper.selectYearAlarmTimes(sceneEntity,startDate,endDate,sort);
         List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
-        for(int i=0; i<12; i++) {
+        for(int i=0; i<months; i++) {
             String strDate = startDate.substring(0, 4) + String.format("-%02d", i + 1);
             Map<String, Object> data = new HashMap<>();
             data.put("数量", 0);
@@ -521,6 +522,39 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         return days;
     }
 
+
+
+    /**
+     * 计算2个日期之间相差的  以年、月、日为单位,各自计算结果是多少
+     * 比如:2011-02-02 到  2017-03-02
+     *                                以年为单位相差为:6年
+     *                                以月为单位相差为:73个月
+     *                                以日为单位相差为:2220天
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    public int differentMonths(String startDate,String endDate) throws ParseException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        Date fromDate = sdf.parse(startDate);
+        Date toDate = sdf.parse(endDate);
+        Calendar  from  =  Calendar.getInstance();
+        from.setTime(fromDate);
+        Calendar  to  =  Calendar.getInstance();
+        to.setTime(toDate);
+        //只要年月
+        int fromYear = from.get(Calendar.YEAR);
+        int fromMonth = from.get(Calendar.MONTH);
+
+        int toYear = to.get(Calendar.YEAR);
+        int toMonth = to.get(Calendar.MONTH);
+        // int year = toYear  -  fromYear;
+        int month = toYear *  12  + toMonth  -  (fromYear  *  12  +  fromMonth);
+        // int day = (int) ((to.getTimeInMillis()  -  from.getTimeInMillis())  /  (24  *  3600  *  1000));
+        return month;
+    }
+
+
     /**
      *日期加一天
      */